linuxcnc-ethercat
linuxcnc-ethercat copied to clipboard
EL6900 Incompatible PDO Mapping
I have an EL6900 hw version 0, software version 3 and the PDO mapping from the code does not match what the device have.
ethercat pdo output:
SM0: PhysAddr 0x1000, DefaultSize 256, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1100, DefaultSize 256, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1200, DefaultSize 2, ControlRegister 0x24, Enable 1
RxPDO 0x1600 "FSOE RxPDO-Map 001"
PDO entry 0x7000:01, 8 bit, "FSOE Command"
PDO entry 0x7001:01, 8 bit, "SubIndex 001"
PDO entry 0x7000:03, 16 bit, "FSOE CRC 001"
PDO entry 0x7000:02, 16 bit, "FSOE ConnID"
RxPDO 0x17f0 "DEVICE RxPDO-Map Standard In Vars"
PDO entry 0xf201:01, 1 bit, "SubIndex 001"
PDO entry 0xf201:02, 1 bit, "SubIndex 002"
PDO entry 0xf201:03, 1 bit, "SubIndex 003"
PDO entry 0xf201:04, 1 bit, "SubIndex 004"
PDO entry 0xf201:05, 1 bit, "SubIndex 005"
PDO entry 0xf201:06, 1 bit, "SubIndex 006"
PDO entry 0xf201:07, 1 bit, "SubIndex 007"
PDO entry 0xf201:08, 1 bit, "SubIndex 008"
RxPDO 0x17ff "DEVICE RxPDO-Map Control"
PDO entry 0xf200:01, 16 bit, "Control"
SM3: PhysAddr 0x1d00, DefaultSize 2, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 "FSOE TxPDO-Map 001"
PDO entry 0x6000:01, 8 bit, "FSOE Command"
PDO entry 0x6001:01, 8 bit, "SubIndex 001"
PDO entry 0x6000:03, 16 bit, "FSOE CRC 001"
PDO entry 0x6000:02, 16 bit, "FSOE ConnID"
TxPDO 0x1bf0 "DEVICE TxPDO-Map Standard Out Vars"
PDO entry 0xf101:01, 1 bit, "SubIndex 001"
PDO entry 0xf101:02, 1 bit, "SubIndex 002"
PDO entry 0xf101:03, 1 bit, "SubIndex 003"
PDO entry 0xf101:04, 1 bit, "SubIndex 004"
PDO entry 0xf101:05, 1 bit, "SubIndex 005"
PDO entry 0xf101:06, 1 bit, "SubIndex 006"
PDO entry 0xf101:07, 1 bit, "SubIndex 007"
PDO entry 0xf101:08, 1 bit, "SubIndex 008"
TxPDO 0x1bff "DEVICE TxPDO-Map Status"
PDO entry 0xf100:01, 3 bit, "Safety Project State"
PDO entry 0x0000:00, 4 bit, "Gap"
PDO entry 0xf100:08, 1 bit, "Login Active"
PDO entry 0xf100:09, 1 bit, "Input Size Mismatch"
PDO entry 0xf100:0a, 1 bit, "Output Size Mismatch"
PDO entry 0x0000:00, 4 bit, "Gap"
PDO entry 0x1800:07, 1 bit, ""
PDO entry 0x1800:09, 1 bit, ""
Code:
LCEC_PDO_INIT(pdo_entry_regs, slave->index, slave->vid, slave->pid, 0xf100, 0x0f, &hal_data->txpdo_state_os, &hal_data->txpdo_state_bp);
LCEC_PDO_INIT(pdo_entry_regs, slave->index, slave->vid, slave->pid, 0xf100, 0x10, &hal_data->txpdo_toggle_os, &hal_data->txpdo_toggle_bp);
For some reason, on my device, I have a PDO entry 0x1800:07 and 0x1800:09 rather than the 0xf100:0f and 0xf100:10. The cause me to get the following error when loading it:
Failed to register PDO entry: No such file or directory
LCEC: master 0 PDO entry registration failed
Fixing the offset in the line above fix the issue.