sittner / linuxcnc-ethercat

LinuxCNC EtherCAT HAL driver

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

EL6900 Incompatible PDO Mapping

safarir opened this issue · comments

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.