hi guys , basic question using as 6.3 i have acopos 1090 using ac120 and ac123
i can read the external encoder positon fine, and with normal move velocity and comparitor i can control the main axis and use the second axis as my position variable.
is there an easier way with mapp motion to use the main ac120 for speed only and let the axis move until my setpoint position via ac123 postion for example my axis will feed a wire ,encoder 2 will determine the length, all i want to do is use move absolute and get a precise length which can only be read on encoder2
To get the scaling correct for the positioning is not explained.
Basically my servo is on a gearbox that gears down 15-1
The output goes onto a steel wheel thats 100mm diameter.this wheel pulls on a wire hence one rotation feeds rhe wire 314mm ie the circumference of the circle.To compensate for slippage the second encoder is on a wheel that also runs on this wire with no pull force or slippage.
This wheel diameter is 63mm ie 198aprox linear distance per rev.
How do i use this as my master position axis and scale it accurately.
Two encoder method does work to read the encoder but the scaling is completely off.
If i use 2 seperate axis..one to move and one to read then the scaling is fine but this wont be accurate as i dont want to use a move velocity until setpoint
Technical Solution: Configuring Mapp Motion for Dual Encoder Operation on ACOPOS 1090
Hello Austin,
Great question! You can indeed achieve this more elegantly using mapp motion’s built-in encoder handling capabilities. Here’s how to configure your ACOPOS 1090 to use AC120 for velocity control while using AC123 for absolute positioning commands.
Solution Overview
The key is to configure your axis to use AC120 as the motor encoder (for velocity/commutation) while setting AC123 as the position encoder (for positioning commands). This allows move absolute commands to reference the external encoder position directly without comparators.
Step-by-Step Configuration
1. Hardware Setup Verification
Ensure your encoders are connected:
AC120 → IF1 (X41) - Motor encoder
AC123 → IF2 (X42) - Position encoder (wire length measurement)
2. Axis Configuration in Mapp Cockpit
A. Motor Encoder Configuration (AC120)
Open Mapp Cockpit and navigate to your axis configuration
Under Controller → Velocity Controller - Set VCTRL_S_ACT_PARID = Parameter ID of AC120 encoder
This configures velocity feedback from the motor encoder
Typical value: 1 (for IF1/X41)
B. Position Encoder Configuration (AC123)
Under Controller → Position Controller - Set PCTRL_S_ACT_PARID = Parameter ID of AC123 encoder
This routes position feedback from your external encoder
Typical value: 2 (for IF2/X42)
Configure encoder scaling to match your wire length units:
Set Encoder.PositionFactor to convert encoder counts to mm (or your preferred unit)
Example: If AC123 provides 2048 counts/revolution and your wire advances 10mm/rev:
PositionFactor = 10.0 / 2048 = 0.00488 mm/count
3. Controller Parameter Configuration
In your axis parameter structure (typically in axisBasic configuration)
```
Axis.Controller.Mode = CTRL_POSITION
Axis.Controller.VelocityController.ActualValueSource = VCTRL_S_ACT_PARID (AC120)
Axis.Controller.PositionController.ActualValueSource = PCTRL_S_ACT_PARID (AC123)
``### 4. Mapp Motion ProgrammingNow your move commands will reference AC123 position:``iec-st
// Wire feeding example
MC_MoveAbsolute_1.Axis := ADR(gAxis_WireFeed);
MC_MoveAbsolute_1.Position := TargetWireLength; // In mm (referenced to AC123)
MC_MoveAbsolute_1.Velocity := FeedSpeed;
MC_MoveAbsolute_1.Execute := TRUE;
```
The axis will:
Use AC120 for velocity regulation and smooth motion
Use AC123 position as the positioning reference
Stop precisely when AC123 reaches your target position
Important Considerations for AS 6.3
Homing Strategy
Since AC123 is your position reference, you need to establish a reference:
Option A - Absolute Encoder (AC123 with EnDat/SSI absolute protocol) - Enable Axis.Homing.RestorePositionVariable = TRUE
Position is retained after power cycle
No homing move required
Option B - Incremental Encoder - Implement a homing routine using MC_Home function block
Home to a physical reference switch
This establishes the AC123 zero position
Velocity Limitations
Monitor that AC120 and AC123 don’t drift significantly during operation
If the wire slips, AC120 (motor) and AC123 (wire) positions will differ
Consider implementing a monitoring function:
```iec-st
PositionError := ABS(MotorPosition_AC120 - WirePosition_AC123);
IF PositionError > MaxAllowedSlip THEN
// Trigger error/warning
END_IF
```
Commissioning in Mapp Cockpit
Verify Encoder Signals - Monitor both encoder values in real-time
Confirm AC123 increments correctly with wire movement
Check for proper direction (invert if needed)
Tune Controllers Separately - First tune velocity controller using AC120
Then tune position controller using AC123 feedback
Use Mapp Cockpit’s auto-tune feature for initial parameters
Test Sequence - Small absolute moves (e.g., 10mm increments)
Verify repeatability
Check stopping accuracy against AC123 position
Potential Caveats
AS 6.3 Compatibility: This configuration is fully supported in AS 6.3. Ensure you’re using Automation Studio 6.3.0 or later with compatible mapp Motion library version (minimum 5.22.0).
Encoder Resolution Mismatch: If AC120 has significantly different resolution than AC123, you may need to adjust controller gains to prevent oscillation.
Mechanical Compliance: If there’s elasticity in your wire feeding system, consider adding a feed-forward component or adjusting position controller bandwidth.
Alternative Approach (If Above Doesn’t Fully Meet Needs)
If you need even more control, consider using mapp Motion’s virtual axis feature:
Create a virtual axis slaved to AC123 position
Command the virtual axis with move absolute
Use electronic gearing to drive the physical axis (AC120)
This provides additional flexibility for complex motion profiles.
—
Let me know if you need clarification on any of these steps or encounter specific issues during implementation. The parameter IDs (VCTRL_S_ACT_PARID and PCTRL_S_ACT_PARID) should be visible in your Mapp Cockpit encoder configuration once you’ve assigned the encoders to the appropriate interfaces.
The principle is explained here: Drive control variants (Drive control with motor encoder and load encoder (two-encoder control)
so according to this you have to scale the AC123 by
(420) SCALE_ENCOD2_UNITS
(421) SCALE_ENCOD2_REV
(422) SCALE_ENCOD2_COUNT_DIR
with the same system units as your motor encoder.
But maybe there is a better and easier way to configure something like this today. Unfortunately, I haven’t found anything else.
Maybe someone else has a better idea.