ok I tried setting the SDOs as specified in the manual, i.e.:
<!-- Example initCmds to map 0x1A00 to SM3 (0x1C13) -->
<!-- 1) Clear existing SM3 assignments -->
<InitCmd>
<Transition>PS</Transition>
<Comment>clear sm pdos (0x1C13)</Comment>
<Timeout>0</Timeout>
<Ccs>1</Ccs> <!-- CoE command -->
<Index>0x1C13</Index>
<SubIndex>0</SubIndex>
<Data>00</Data> <!-- zero => no assigned PDOs -->
</InitCmd>
<!-- 2) Add 1A00 as the first PDO to SM3 -->
<InitCmd>
<Transition>PS</Transition>
<Comment>add pdo 0x1A00 to sm3</Comment>
<Timeout>0</Timeout>
<Ccs>1</Ccs>
<Index>0x1C13</Index>
<SubIndex>1</SubIndex>
<Data>1a00</Data> <!-- This is the hex index of the PDO (0x1A00) -->
</InitCmd>
<!-- 3) Set the new count of assigned PDOs to 1 -->
<InitCmd>
<Transition>PS</Transition>
<Comment>download pdo 0x1C13:00 index => 1</Comment>
<Timeout>0</Timeout>
<Ccs>1</Ccs>
<Index>0x1C13</Index>
<SubIndex>0</SubIndex>
<Data>01</Data> <!-- 1 assigned PDO in SM3 -->
</InitCmd>
Now, when running linuxcnc I get:
Waiting for component 'lcec' to become ready..........................Failed to execute SDO download: Input/output error
LCEC: slave 0.IFC2411Sensor: Failed to execute SDO download (0x1c13:0x00, size 1, byte0=0, error -5, abort_code 06010002)
LCEC: failed to configure slave 0.IFC2411Sensor sdo 1c13:00
Failed to execute SDO download: Input/output error
LCEC: slave 0.IFC2411Sensor: Failed to execute SDO download (0x1c13:0x01, size 2, byte0=26, error -5, abort_code 00000000)
LCEC: failed to configure slave 0.IFC2411Sensor sdo 1c13:01
.Failed to execute SDO download: Input/output error
LCEC: slave 0.IFC2411Sensor: Failed to execute SDO download (0x1c13:0x00, size 1, byte0=1, error -5, abort_code 00000000)
LCEC: failed to configure slave 0.IFC2411Sensor sdo 1c13:00
LCEC: slave 0.IFC2411Sensor: Failed to execute SDO download (0x1c13:0x00, size 1, byte0=0, error -5, abort_code 06010002)
LCEC: failed to configure slave 0.IFC2411Sensor sdo 1c13:00
LCEC: slave 0.IFC2411Sensor: Failed to execute SDO download (0x1c13:0x01, size 2, byte0=26, error -5, abort_code 00000000)
LCEC: failed to configure slave 0.IFC2411Sensor sdo 1c13:01
LCEC: slave 0.IFC2411Sensor: Failed to execute SDO download (0x1c13:0x00, size 1, byte0=1, error -5, abort_code 00000000)
LCEC: failed to configure slave 0.IFC2411Sensor sdo 1c13:00
I suspect that the Sensor comes up with a default (locked) PDO assignment, since ethercat pdos -p 4 says:
ethercat pdos -p 4
SM0: PhysAddr 0x1000, DefaultSize 1024, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1400, DefaultSize 1024, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1800, DefaultSize 0, ControlRegister 0x64, Enable 1
SM3: PhysAddr 0x1818, DefaultSize 24, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 ""
PDO entry 0x6000:01, 32 bit, ""
TxPDO 0x1a30 ""
PDO entry 0x6010:01, 32 bit, ""
TxPDO 0x1a80 ""
PDO entry 0x6030:01, 32 bit, ""
TxPDO 0x1ae0 ""
PDO entry 0x7000:01, 32 bit, ""
TxPDO 0x1ae8 ""
PDO entry 0x7001:01, 32 bit, ""
TxPDO 0x1af0 ""
PDO entry 0x7002:01, 32 bit, ""
And also with $ ethercat upload -p 4 0x1C13 0x00 --type uint8 one can see which PDOs are assigned to the 0x1C13 object and all are already assigned to it.
I am trying to figure out if the problem lies on the Sensor side or I did something wrong with LinuxCNC configuration.