That's what the cia402 component does. You have already set cia402.0.csp-mode to 1 in the hal file.
You can go into halshow and find the pin lcec.0.X.target-position and lcec.0.X.actual-position.
The difference between them is the following error and one always accepts some error but when it becomes too large lcnc stops.
You have the cia402.0.pos-scale to play with. The manual should say how many "steps" per revolution it uses, or how to found out. Calculate how many steps per axis unit (mm?) you have (thread pitch).
However I looked at your ethercat-conf.xml. You got to remove those pdos from syncmanager 0 and 1, actually remove sm0 and sm1 completely and only use those in sm2 and sm3.
Like this
Code:
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="controlword" halType="U32"/>
<pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="target-position" halType="S32"/>
<pdoEntry idx="60ff" subIdx="00" bitLen="32" halPin="target-velocity" halType="S32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="S32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="statusword" halType="U32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="S32"/>
<pdoEntry idx="606c" subIdx="00" bitLen="32" halPin="actual-velocity" halType="S32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="S32"/>
</pdo>
</syncManager>
Keep dccconf line and all other lines. If I made a type above I hope you can correct it.