Two encoder control configuration (for all ACOPOS types)

A question that we receive from time to time is how to configure an ACOPOSmulti axis with two encoders. I will take the chance to describe here the different scenarios and maybe somebody can even extend it.

I will replace the help links once the online help is active.

How to configure a two-encoder control is well described in the help: Drive control with motor and load encoder (364e1ca5-f156-40d8-a08a-a099f492d288). This is usually done with a parameter table or more user friendly, in the mappMotion drive configuration for the ACOPOS P3.

The functionality is active as soon as VCTRL_S_ACT_PARID <> PCTRL_S_ACT_PARID and therefore, in an ACOPOS Classic we must configure:

  • VCTRL_S_ACT_PARID (CTRL Vector controller: Actual position parameter ID) → Usually the motor encoder (ENCOD1_S_ACT)
  • PCTRL_S_ACT_PARID (CTRL Position controller: Actual encoder position parameter ID) → Usually the load encoder (ENCOD2_S_ACT)
  • AXLIM_DS_STOP2 (CTRL Two encoder control: Position difference limit for stop of a movement)

That works directly in the ACOPOS Classic because all interfaces belong to the single axis, but depending on the drive, the configuration differs.

The position sources for every ACOPOS type can be found here: Position sources for drive control (021626f7-59fa-40b9-8136-49072239c1d6).

ACOPOS P3:

The ACOPOS P3 can be directly configured in the mappMotion drive configuration. Since mappMotion 5.22 it is possible using any interface of the P3. In previous versions, only the respective axis encoder and its plugging card slot were configurable. In that case, it is possible to configure it manually like the ACOPOSmulti (see below ACOPOSmulti).
image

ACOPOSmulti, ACOPOSmicro:

The mappMotion configuration does not support two encoder control for ACOPOSmulti yet… Moreover, there is only one encoder slot per axis.

In that case we need a cross-link, which works with Acp10 and mappMotion. Check Axis cross-link (21452cc9-cb6b-4503-9209-11669bfdd199).

Here we must select the source axis and link the related encoder. For example, if I want to get the position from the second encoder:
VCTRL_S_ACT_PARID → ENCOD1_S_ACT // Encoder1 for vector controller (default setting)
CROSSLINK_AXIS → 2 // Select Axis2 as data source
PCTRL_S_ACT_PARID → CROSSLINK_ENC1_S_ACT // Link position controller with encoder position of Axis2
AXLIM_DS_STOP2 // Don’t forget to configure a significant value in Position difference limit for stop of a movement

In the specific case of the Axis 1, it is also possible to set directly PCTRL_S_ACT_PARID → ENCOD2_S_ACT

ACOPOSmulti Single axis with mappMotion:

For single axis ACOPOSmulti the encoder type and other encoder parameters for SS2 are not transferred even when set in the HW configuration.
That means, it is necessary to transfer all encoder parameters with a parameter list (even if we have an Endat) to the channel 2 of the ACOPOSmulti. In order to do that, a real or virtual axis object must be assigned in the mappMotion HW configuration of channel 2, so it gets initialized.
There are two possibilities to do this:

Alternative 1, Parameter lists transfer to object on channel 2 (with mappMotion < V5.12):

  1. Read the ParID 178 (Status: General bits) and wait until the Bit5 (Encoder init active) is 0. When using the real axis waiting for axis state Disabled is fine as well.
  2. Transfer encoder type and all encoder parameters
  3. Read again the ParID 178 (Status: General bits) and wait until the Bit5 (Encoder init active) is 0.
  4. Transfer crosslink parameters to channel 1

Alternative 2, ACOPOS Parameter table in configuration of channel 2 (from mappMotion V5.12):

  1. Create an ACOPOS parameter table and a feature for it with the encoder type and all encoder parameters
  2. Add the ACOPOS parameter table feature as “Channel feature” to channel 2 (real or virtual axis object must be assigned to the channel, checks for ParID 178 Bit5 are done automatically)
  3. Wait until the axis is in axis state Disabled
  4. Transfer crosslink parameters to channel 1 by FB (either as parameter list or create a parameter table and transfer with MC_BR_ProcessParTab_AcpAx (available with V5.15))
4 Likes

Hello Antonio! What’s the easiest way to swap in and out of two encoder mode at runtime?
For example, our second encoder is a material measure wheel, but on startup there may not be material in contact with it yet and we still need to be able to move the axis.

I think if you configured 2 Encoder Control, everything is well prepared by the configuration.

If the Axis is Disabled you can use a ProcessParID Functionblock to change the link between the Position Controller and the used Encoder. The ParID PCTRL_S_ACT_PARID contains the ParID Number of the used Encoder Actual Position.

  • PCTRL_S_ACT_PARID (CTRL Position controller: Actual encoder position parameter ID) → Usually the load encoder ENCOD2_S_ACT

The ParID then can be changed to ENCOD1_S_ACT to switch back to Single Encoder Control. If you write again ENCOD2_S_ACT to it, its back to two encoder Control. (The ParIDs may variate if you use other Configurations with external encoders or similar, but the principle stays the same).

I did not try it but as far as i know the theorie this should be all you have to change.

Greetings
Michael