linuxcnc-ethercat / linuxcnc-ethercat

LinuxCNC EtherCAT HAL driver
GNU General Public License v2.0
26 stars 12 forks source link

Support Rovix ESD-A6 6-axis EtherCAT stepper drive #328

Open scottlaird opened 4 months ago

scottlaird commented 4 months ago

Support the Rovix ESD-A6 stepper drive. This is a 6-channel, open-loop, 24V stepper drive, on loan from @DesertShedStudio.

There is no documentation for this online, and there aren't a ton of them around, but it's a simple multi-axis controller, so it's probably a good test case.

First impressions aren't great; ethercat slaves shows it as:

22  0:22  PREOP  +  0x00000227:0x00000005

Running ethercat pdos -p 22 shows nothing.

Running lcec_configgen also shows nothing, not even a generic entry. I see debugging in my near future. As a workaround, ethercat upload -p 22 0x6502 0 gives 0xa1, which is (binary) 1010_0001, which means that it claims to support pp, hm, and csp modes. Interesting, this is the first device I've seen (out of a very small sample) that doesn't support any velocity modes.

Fortunately, ethercat sdos looks like it works:

SDO 0x1000, "Device Type"
  0x1000:00, r-r-r-, uint32, 32 bit, "Device Type"
SDO 0x1001, "Error Register"
  0x1001:00, r-r-r-, uint8, 8 bit, "Error Register"
SDO 0x1008, "Device Name"
  0x1008:00, r-r-r-, string, 128 bit, "Device Name"
SDO 0x1009, "Hardware Version"
  0x1009:00, r-r-r-, string, 64 bit, "Hardware Version"
SDO 0x100a, "Software Version"
  0x100a:00, r-r-r-, string, 64 bit, "Software Version"
SDO 0x1010, "Store Parameters"
  0x1010:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x1010:01, rwrwrw, uint32, 32 bit, "Store Parameters"
SDO 0x1011, "Restore Default Parameters"
  0x1011:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x1011:01, rwrwrw, uint32, 32 bit, "Restore Default Parameters"
SDO 0x1018, "Identity Object"
  0x1018:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x1018:01, r-r-r-, uint32, 32 bit, "Vendor ID"
  0x1018:02, r-r-r-, uint32, 32 bit, "Product Code"
  0x1018:03, r-r-r-, uint32, 32 bit, "Revision Number"
  0x1018:04, r-r-r-, uint32, 32 bit, "Serial Number"
SDO 0x1600, "RxPDO mapping 1"
  0x1600:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1600:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1600:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1600:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1600:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1600:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1600:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1600:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1600:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1600:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1600:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1600:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1600:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1600:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1600:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1600:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1600:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1610, "RxPDO mapping 2"
  0x1610:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1610:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1610:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1610:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1610:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1610:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1610:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1610:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1610:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1610:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1610:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1610:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1610:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1610:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1610:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1610:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1610:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1620, "RxPDO mapping 3"
  0x1620:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1620:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1620:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1620:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1620:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1620:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1620:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1620:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1620:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1620:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1620:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1620:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1620:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1620:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1620:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1620:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1620:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1630, "RxPDO mapping 4"
  0x1630:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1630:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1630:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1630:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1630:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1630:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1630:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1630:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1630:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1630:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1630:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1630:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1630:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1630:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1630:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1630:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1630:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1640, "RxPDO Mapping 5"
  0x1640:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1640:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1640:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1640:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1640:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1640:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1640:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1640:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1640:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1640:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1640:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1640:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1640:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1640:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1640:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1640:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1640:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1650, "RxPDO Mapping 6"
  0x1650:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1650:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1650:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1650:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1650:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1650:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1650:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1650:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1650:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1650:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1650:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1650:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1650:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1650:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1650:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1650:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1650:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1660, "RxPDO Mapping 7"
  0x1660:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1660:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1660:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1660:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1660:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1660:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1660:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1660:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1660:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1660:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1660:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1660:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1660:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1660:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1660:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1660:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1660:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1670, "RxPDO Mapping 8"
  0x1670:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1670:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1670:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1670:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1670:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1670:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1670:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1670:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1670:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1670:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1670:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1670:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1670:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1670:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1670:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1670:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1670:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1a00, "TxPDO Mapping 1"
  0x1a00:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1a00:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1a00:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1a00:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1a00:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1a00:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1a00:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1a00:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1a00:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1a00:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1a00:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1a00:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1a00:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1a00:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1a00:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1a00:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1a00:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1a10, "TxPDO Mapping 2"
  0x1a10:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1a10:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1a10:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1a10:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1a10:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1a10:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1a10:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1a10:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1a10:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1a10:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1a10:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1a10:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1a10:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1a10:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1a10:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1a10:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1a10:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1a20, "TxPDO Mapping 3"
  0x1a20:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1a20:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1a20:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1a20:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1a20:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1a20:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1a20:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1a20:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1a20:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1a20:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1a20:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1a20:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1a20:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1a20:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1a20:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1a20:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1a20:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1a30, "TxPDO Mapping 4"
  0x1a30:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1a30:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1a30:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1a30:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1a30:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1a30:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1a30:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1a30:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1a30:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1a30:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1a30:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1a30:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1a30:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1a30:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1a30:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1a30:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1a30:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1a40, "TxPDO Mapping 5"
  0x1a40:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1a40:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1a40:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1a40:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1a40:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1a40:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1a40:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1a40:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1a40:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1a40:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1a40:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1a40:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1a40:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1a40:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1a40:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1a40:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1a40:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1a50, "TxPDO Mapping 6"
  0x1a50:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1a50:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1a50:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1a50:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1a50:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1a50:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1a50:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1a50:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1a50:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1a50:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1a50:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1a50:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1a50:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1a50:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1a50:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1a50:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1a50:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1a60, "TxPDO Mapping 7"
  0x1a60:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1a60:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1a60:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1a60:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1a60:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1a60:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1a60:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1a60:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1a60:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1a60:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1a60:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1a60:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1a60:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1a60:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1a60:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1a60:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1a60:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1a70, "TxPDO Mapping 8"
  0x1a70:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1a70:01, rwr-r-, uint32, 32 bit, "Mapping entry 1"
  0x1a70:02, rwr-r-, uint32, 32 bit, "Mapping entry 2"
  0x1a70:03, rwr-r-, uint32, 32 bit, "Mapping entry 3"
  0x1a70:04, rwr-r-, uint32, 32 bit, "Mapping entry 4"
  0x1a70:05, rwr-r-, uint32, 32 bit, "Mapping entry 5"
  0x1a70:06, rwr-r-, uint32, 32 bit, "Mapping entry 6"
  0x1a70:07, rwr-r-, uint32, 32 bit, "Mapping entry 7"
  0x1a70:08, rwr-r-, uint32, 32 bit, "Mapping entry 8"
  0x1a70:09, rwr-r-, uint32, 32 bit, "Mapping entry 9"
  0x1a70:0a, rwr-r-, uint32, 32 bit, "Mapping entry 10"
  0x1a70:0b, rwr-r-, uint32, 32 bit, "Mapping entry 11"
  0x1a70:0c, rwr-r-, uint32, 32 bit, "Mapping entry 12"
  0x1a70:0d, rwr-r-, uint32, 32 bit, "Mapping entry 13"
  0x1a70:0e, rwr-r-, uint32, 32 bit, "Mapping entry 14"
  0x1a70:0f, rwr-r-, uint32, 32 bit, "Mapping entry 15"
  0x1a70:10, rwr-r-, uint32, 32 bit, "Mapping entry 16"
SDO 0x1c00, "Sync Manager Communication Type"
  0x1c00:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x1c00:01, r-r-r-, uint8, 8 bit, "Communications Type SM0"
  0x1c00:02, r-r-r-, uint8, 8 bit, "Communications Type SM1"
  0x1c00:03, r-r-r-, uint8, 8 bit, "Communications Type SM2"
  0x1c00:04, r-r-r-, uint8, 8 bit, "Communications Type SM3"
SDO 0x1c12, "Sync Manager 2 PDO Assignment"
  0x1c12:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1c12:01, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 0"
  0x1c12:02, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 1"
  0x1c12:03, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 2"
  0x1c12:04, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 3"
  0x1c12:05, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 4"
  0x1c12:06, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 5"
SDO 0x1c13, "Sync Manager 3 PDO Assignment"
  0x1c13:00, rwr-r-, uint8, 8 bit, "Number of entries"
  0x1c13:01, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 0"
  0x1c13:02, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 1"
  0x1c13:03, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 2"
  0x1c13:04, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 3"
  0x1c13:05, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 4"
  0x1c13:06, rwr-r-, uint16, 16 bit, "Index of object assigned to PDO 5"
SDO 0x2002, "Microstep Resolution"
  0x2002:00, rwrwrw, uint16, 16 bit, "Microstep Resolution"
SDO 0x2003, "Revolution Pulses"
  0x2003:00, rwrwrw, uint16, 16 bit, "Revolution Pulses"
SDO 0x2005, "Run Current"
  0x2005:00, rwrwrw, uint8, 8 bit, "Run Current"
SDO 0x2006, "Stop Current"
  0x2006:00, rwrwrw, uint8, 8 bit, "Stop Current"
SDO 0x2007, "Stallguard Threshold"
  0x2007:00, rwrwrw, uint8, 8 bit, "Stallguard Threshold"
SDO 0x2008, "Chopper Configuration"
  0x2008:00, rwrwrw, uint32, 32 bit, "Chopper Configuration"
SDO 0x2009, "CoolStep Configuration"
  0x2009:00, rwrwrw, uint32, 32 bit, "CoolStep Configuration"
SDO 0x200a, "Stallguard Value"
  0x200a:00, r-r-r-, uint16, 16 bit, "Stallguard Value"
SDO 0x200b, "Current Setting Delay"
  0x200b:00, rwrwrw, uint16, 16 bit, "Current Setting Delay"
SDO 0x200c, "Driver Status"
  0x200c:00, r-r-r-, uint32, 32 bit, "Driver Status"
SDO 0x2010, "I/O Pin Configuration"
  0x2010:00, rwrwrw, uint32, 32 bit, "I/O Pin Configuration"
SDO 0x2011, "Limit Switches"
  0x2011:00, rwrwrw, uint16, 16 bit, "Limit Switches"
SDO 0x2012, "Brake Delay"
  0x2012:00, rwrwrw, uint16, 16 bit, "Brake Delay"
SDO 0x2802, "Microstep Resolution"
  0x2802:00, rwrwrw, uint16, 16 bit, "Microstep Resolution"
SDO 0x2803, "Revolution Pulses"
  0x2803:00, rwrwrw, uint16, 16 bit, "Revolution Pulses"
SDO 0x2805, "Run Current"
  0x2805:00, rwrwrw, uint8, 8 bit, "Run Current"
SDO 0x2806, "Stop Current"
  0x2806:00, rwrwrw, uint8, 8 bit, "Stop Current"
SDO 0x2807, "Stallguard Threshold"
  0x2807:00, rwrwrw, uint8, 8 bit, "Stallguard Threshold"
SDO 0x2808, "Chopper Configuration"
  0x2808:00, rwrwrw, uint32, 32 bit, "Chopper Configuration"
SDO 0x2809, "CoolStep Configuration"
  0x2809:00, rwrwrw, uint32, 32 bit, "CoolStep Configuration"
SDO 0x280a, "Stallguard Value"
  0x280a:00, r-r-r-, uint16, 16 bit, "Stallguard Value"
SDO 0x280b, "Current Setting Delay"
  0x280b:00, rwrwrw, uint16, 16 bit, "Current Setting Delay"
SDO 0x280c, "Driver Status"
  0x280c:00, r-r-r-, uint32, 32 bit, "Driver Status"
SDO 0x2810, "I/O Pin Configuration"
  0x2810:00, rwrwrw, uint32, 32 bit, "I/O Pin Configuration"
SDO 0x2811, "Limit Switches"
  0x2811:00, rwrwrw, uint16, 16 bit, "Limit Switches"
SDO 0x2812, "Brake Delay"
  0x2812:00, rwrwrw, uint16, 16 bit, "Brake Delay"
SDO 0x3002, "Microstep Resolution"
  0x3002:00, rwrwrw, uint16, 16 bit, "Microstep Resolution"
SDO 0x3003, "Revolution Pulses"
  0x3003:00, rwrwrw, uint16, 16 bit, "Revolution Pulses"
SDO 0x3005, "Run Current"
  0x3005:00, rwrwrw, uint8, 8 bit, "Run Current"
SDO 0x3006, "Stop Current"
  0x3006:00, rwrwrw, uint8, 8 bit, "Stop Current"
SDO 0x3007, "Stallguard Threshold"
  0x3007:00, rwrwrw, uint8, 8 bit, "Stallguard Threshold"
SDO 0x3008, "Chopper Configuration"
  0x3008:00, rwrwrw, uint32, 32 bit, "Chopper Configuration"
SDO 0x3009, "CoolStep Configuration"
  0x3009:00, rwrwrw, uint32, 32 bit, "CoolStep Configuration"
SDO 0x300a, "Stallguard Value"
  0x300a:00, r-r-r-, uint16, 16 bit, "Stallguard Value"
SDO 0x300b, "Current Setting Delay"
  0x300b:00, rwrwrw, uint16, 16 bit, "Current Setting Delay"
SDO 0x300c, "Driver Status"
  0x300c:00, r-r-r-, uint32, 32 bit, "Driver Status"
SDO 0x3010, "I/O Pin Configuration"
  0x3010:00, rwrwrw, uint32, 32 bit, "I/O Pin Configuration"
SDO 0x3011, "Limit Switches"
  0x3011:00, rwrwrw, uint16, 16 bit, "Limit Switches"
SDO 0x3012, "Brake Delay"
  0x3012:00, rwrwrw, uint16, 16 bit, "Brake Delay"
SDO 0x3802, "Microstep Resolution"
  0x3802:00, rwrwrw, uint16, 16 bit, "Microstep Resolution"
SDO 0x3803, "Revolution Pulses"
  0x3803:00, rwrwrw, uint16, 16 bit, "Revolution Pulses"
SDO 0x3805, "Run Current"
  0x3805:00, rwrwrw, uint8, 8 bit, "Run Current"
SDO 0x3806, "Stop Current"
  0x3806:00, rwrwrw, uint8, 8 bit, "Stop Current"
SDO 0x3807, "Stallguard Threshold"
  0x3807:00, rwrwrw, uint8, 8 bit, "Stallguard Threshold"
SDO 0x3808, "Chopper Configuration"
  0x3808:00, rwrwrw, uint32, 32 bit, "Chopper Configuration"
SDO 0x3809, "CoolStep Configuration"
  0x3809:00, rwrwrw, uint32, 32 bit, "CoolStep Configuration"
SDO 0x380a, "Stallguard Value"
  0x380a:00, r-r-r-, uint16, 16 bit, "Stallguard Value"
SDO 0x380b, "Current Setting Delay"
  0x380b:00, rwrwrw, uint16, 16 bit, "Current Setting Delay"
SDO 0x380c, "Driver Status"
  0x380c:00, r-r-r-, uint32, 32 bit, "Driver Status"
SDO 0x3810, "I/O Pin Configuration"
  0x3810:00, rwrwrw, uint32, 32 bit, "I/O Pin Configuration"
SDO 0x3811, "Limit Switches"
  0x3811:00, rwrwrw, uint16, 16 bit, "Limit Switches"
SDO 0x3812, "Brake Delay"
  0x3812:00, rwrwrw, uint16, 16 bit, "Brake Delay"
SDO 0x4002, "Microstep Resolution"
  0x4002:00, rwrwrw, uint16, 16 bit, "Microstep Resolution"
SDO 0x4003, "Revolution Pulses"
  0x4003:00, rwrwrw, uint16, 16 bit, "Revolution Pulses"
SDO 0x4005, "Run Current"
  0x4005:00, rwrwrw, uint8, 8 bit, "Run Current"
SDO 0x4006, "Stop Current"
  0x4006:00, rwrwrw, uint8, 8 bit, "Stop Current"
SDO 0x4007, "Stallguard Threshold"
  0x4007:00, rwrwrw, uint8, 8 bit, "Stallguard Threshold"
SDO 0x4008, "Chopper Configuration"
  0x4008:00, rwrwrw, uint32, 32 bit, "Chopper Configuration"
SDO 0x4009, "CoolStep Configuration"
  0x4009:00, rwrwrw, uint32, 32 bit, "CoolStep Configuration"
SDO 0x400a, "Stallguard Value"
  0x400a:00, r-r-r-, uint16, 16 bit, "Stallguard Value"
SDO 0x400b, "Current Setting Delay"
  0x400b:00, rwrwrw, uint16, 16 bit, "Current Setting Delay"
SDO 0x400c, "Driver Status"
  0x400c:00, r-r-r-, uint32, 32 bit, "Driver Status"
SDO 0x4010, "I/O Pin Configuration"
  0x4010:00, rwrwrw, uint32, 32 bit, "I/O Pin Configuration"
SDO 0x4011, "Limit Switches"
  0x4011:00, rwrwrw, uint16, 16 bit, "Limit Switches"
SDO 0x4012, "Brake Delay"
  0x4012:00, rwrwrw, uint16, 16 bit, "Brake Delay"
SDO 0x4802, "Microstep Resolution"
  0x4802:00, rwrwrw, uint16, 16 bit, "Microstep Resolution"
SDO 0x4803, "Revolution Pulses"
  0x4803:00, rwrwrw, uint16, 16 bit, "Revolution Pulses"
SDO 0x4805, "Run Current"
  0x4805:00, rwrwrw, uint8, 8 bit, "Run Current"
SDO 0x4806, "Stop Current"
  0x4806:00, rwrwrw, uint8, 8 bit, "Stop Current"
SDO 0x4807, "Stallguard Threshold"
  0x4807:00, rwrwrw, uint8, 8 bit, "Stallguard Threshold"
SDO 0x4808, "Chopper Configuration"
  0x4808:00, rwrwrw, uint32, 32 bit, "Chopper Configuration"
SDO 0x4809, "CoolStep Configuration"
  0x4809:00, rwrwrw, uint32, 32 bit, "CoolStep Configuration"
SDO 0x480a, "Stallguard Value"
  0x480a:00, r-r-r-, uint16, 16 bit, "Stallguard Value"
SDO 0x480b, "Current Setting Delay"
  0x480b:00, rwrwrw, uint16, 16 bit, "Current Setting Delay"
SDO 0x480c, "Driver Status"
  0x480c:00, r-r-r-, uint32, 32 bit, "Driver Status"
SDO 0x4810, "I/O Pin Configuration"
  0x4810:00, rwrwrw, uint32, 32 bit, "I/O Pin Configuration"
SDO 0x4811, "Limit Switches"
  0x4811:00, rwrwrw, uint16, 16 bit, "Limit Switches"
SDO 0x4812, "Brake Delay"
  0x4812:00, rwrwrw, uint16, 16 bit, "Brake Delay"
SDO 0x603f, "Error Code"
  0x603f:00, r-r-r-, uint16, 16 bit, "Error Code"
SDO 0x6040, "Control Word"
  0x6040:00, rwrwrw, uint16, 16 bit, "Control Word"
SDO 0x6041, "Status Word"
  0x6041:00, r-r-r-, uint16, 16 bit, "Status Word"
SDO 0x605a, "Quick Stop Option Code"
  0x605a:00, rwrwrw, int16, 16 bit, "Quick Stop Option Code"
SDO 0x605b, "Shutdown Option Code"
  0x605b:00, rwrwrw, int16, 16 bit, "Shutdown Option Code"
SDO 0x605c, "Disable Operation Option Code"
  0x605c:00, rwrwrw, int16, 16 bit, "Disable Operation Option Code"
SDO 0x605d, "Halt Option Code"
  0x605d:00, rwrwrw, int16, 16 bit, "Halt Option Code"
SDO 0x605e, "Fault Reaction Option Code"
  0x605e:00, rwrwrw, int16, 16 bit, "Fault Reaction Option Code"
SDO 0x6060, "Mode of Operation"
  0x6060:00, rwrwrw, int8, 8 bit, "Mode of Operation"
SDO 0x6061, "Mode of Operation Display"
  0x6061:00, r-r-r-, int8, 8 bit, "Mode of Operation Display"
SDO 0x6062, "Position Demand Value"
  0x6062:00, r-r-r-, int32, 32 bit, "Position Demand Value"
SDO 0x6064, "Position Actual Value"
  0x6064:00, r-r-r-, int32, 32 bit, "Position Actual Value"
SDO 0x6065, "Following Error Window"
  0x6065:00, rwrwrw, uint32, 32 bit, "Following Error Window"
SDO 0x6067, "Position Window"
  0x6067:00, rwrwrw, uint32, 32 bit, "Position Window"
SDO 0x606b, "Velocity Demand Value"
  0x606b:00, r-r-r-, int32, 32 bit, "Velocity Demand Value"
SDO 0x606c, "Velocity Actual Value"
  0x606c:00, r-r-r-, int32, 32 bit, "Velocity Actual Value"
SDO 0x607a, "Target Position"
  0x607a:00, rwrwrw, int32, 32 bit, "Target Position"
SDO 0x607c, "Home Offset"
  0x607c:00, rwrwrw, int32, 32 bit, "Home Offset"
SDO 0x607d, "Software Position Limit"
  0x607d:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x607d:01, rwrwrw, int32, 32 bit, "Min Position Range Limit"
  0x607d:02, rwrwrw, int32, 32 bit, "Max Position Range Limit"
SDO 0x607e, "Polarity"
  0x607e:00, rwrwrw, uint8, 8 bit, "Polarity"
SDO 0x607f, "Max Profile Velocity"
  0x607f:00, rwrwrw, uint32, 32 bit, "Max Profile Velocity"
SDO 0x6081, "Profile Velocity"
  0x6081:00, rwrwrw, uint32, 32 bit, "Profile Velocity"
SDO 0x6083, "Profile Acceleration"
  0x6083:00, rwrwrw, uint32, 32 bit, "Profile Acceleration"
SDO 0x6084, "Profile Deceleration"
  0x6084:00, rwrwrw, uint32, 32 bit, "Profile Deceleration"
SDO 0x6085, "Quick Stop Deceleration"
  0x6085:00, rwrwrw, uint32, 32 bit, "Quick Stop Deceleration"
SDO 0x6098, "Homing Method"
  0x6098:00, rwrwrw, int8, 8 bit, "Homing Method"
SDO 0x6099, "Homing Speeds"
  0x6099:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x6099:01, rwrwrw, uint32, 32 bit, "Speed during search for switch"
  0x6099:02, rwrwrw, uint32, 32 bit, "Speed during search for zero"
SDO 0x609a, "Homing Acceleration"
  0x609a:00, rwrwrw, uint32, 32 bit, "Homing Acceleration"
SDO 0x60b8, "Touch Probe Function"
  0x60b8:00, rwrwrw, uint16, 16 bit, "Touch Probe Function"
SDO 0x60b9, "Touch Probe Status"
  0x60b9:00, r-r-r-, uint16, 16 bit, "Touch Probe Status"
SDO 0x60ba, "Touch Probe 1 Positive Value"
  0x60ba:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Positive Value"
SDO 0x60bb, "Touch Probe 1 Negative Value"
  0x60bb:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Negative Value"
SDO 0x60bc, "Touch Probe 2 Positive Value"
  0x60bc:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Positive Value"
SDO 0x60bd, "Touch Probe 2 Negative Value"
  0x60bd:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Negative Value"
SDO 0x60d0, "Touch Probe Source"
  0x60d0:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x60d0:01, rwrwrw, uint16, 16 bit, "Touch Probe 1 Source"
  0x60d0:02, rwrwrw, uint16, 16 bit, "Touch Probe 2 Source"
SDO 0x60d5, "Touch Probe 1 Positive Edge Counter"
  0x60d5:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Positive Edge Counter"
SDO 0x60d6, "Touch Probe 1 Negative Edge Counter"
  0x60d6:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Negative Edge Counter"
SDO 0x60d7, "Touch Probe 2 Positive Edge Counter"
  0x60d7:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Positive Edge Counter"
SDO 0x60d8, "Touch Probe 2 Negative Edge Counter"
  0x60d8:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Negative Edge Counter"
SDO 0x60e3, "Supported Homing Methods"
  0x60e3:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x60e3:01, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x60e3:02, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x60e3:03, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x60e3:04, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x60e3:05, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x60e3:06, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x60e3:07, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x60e3:08, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x60e3:09, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x60e3:0a, r-r-r-, int16, 16 bit, "Supported Homing Method"
SDO 0x60f4, "Following Error Actual Value"
  0x60f4:00, r-r-r-, int32, 32 bit, "Following Error Actual Value"
SDO 0x60fd, "Digital Inputs"
  0x60fd:00, r-r-r-, uint32, 32 bit, "Digital Inputs"
SDO 0x60fe, "Digital Outputs"
  0x60fe:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x60fe:01, rwrwrw, uint32, 32 bit, "Physical Outputs"
  0x60fe:02, rwrwrw, uint32, 32 bit, "Bit Mask"
SDO 0x6502, "Supported Drive Modes"
  0x6502:00, r-r-r-, uint32, 32 bit, "Supported Drive Modes"
SDO 0x683f, "Error Code"
  0x683f:00, r-r-r-, uint16, 16 bit, "Error Code"
SDO 0x6840, "Control Word"
  0x6840:00, rwrwrw, uint16, 16 bit, "Control Word"
SDO 0x6841, "Status Word"
  0x6841:00, r-r-r-, uint16, 16 bit, "Status Word"
SDO 0x685a, "Quick Stop Option Code"
  0x685a:00, rwrwrw, int16, 16 bit, "Quick Stop Option Code"
SDO 0x685b, "Shutdown Option Code"
  0x685b:00, rwrwrw, int16, 16 bit, "Shutdown Option Code"
SDO 0x685c, "Disable Operation Option Code"
  0x685c:00, rwrwrw, int16, 16 bit, "Disable Operation Option Code"
SDO 0x685d, "Halt Option Code"
  0x685d:00, rwrwrw, int16, 16 bit, "Halt Option Code"
SDO 0x685e, "Fault Reaction Option Code"
  0x685e:00, rwrwrw, int16, 16 bit, "Fault Reaction Option Code"
SDO 0x6860, "Mode of Operation"
  0x6860:00, rwrwrw, int8, 8 bit, "Mode of Operation"
SDO 0x6861, "Mode of Operation Display"
  0x6861:00, r-r-r-, int8, 8 bit, "Mode of Operation Display"
SDO 0x6862, "Position Demand Value"
  0x6862:00, r-r-r-, int32, 32 bit, "Position Demand Value"
SDO 0x6864, "Position Actual Value"
  0x6864:00, r-r-r-, int32, 32 bit, "Position Actual Value"
SDO 0x6865, "Following Error Window"
  0x6865:00, rwrwrw, uint32, 32 bit, "Following Error Window"
SDO 0x6867, "Position Window"
  0x6867:00, rwrwrw, uint32, 32 bit, "Position Window"
SDO 0x686b, "Velocity Demand Value"
  0x686b:00, r-r-r-, int32, 32 bit, "Velocity Demand Value"
SDO 0x686c, "Velocity Actual Value"
  0x686c:00, r-r-r-, int32, 32 bit, "Velocity Actual Value"
SDO 0x687a, "Target Position"
  0x687a:00, rwrwrw, int32, 32 bit, "Target Position"
SDO 0x687c, "Home Offset"
  0x687c:00, rwrwrw, int32, 32 bit, "Home Offset"
SDO 0x687d, "Software Position Limit"
  0x687d:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x687d:01, rwrwrw, int32, 32 bit, "Min Position Range Limit"
  0x687d:02, rwrwrw, int32, 32 bit, "Max Position Range Limit"
SDO 0x687e, "Polarity"
  0x687e:00, rwrwrw, uint8, 8 bit, "Polarity"
SDO 0x687f, "Max Profile Velocity"
  0x687f:00, rwrwrw, uint32, 32 bit, "Max Profile Velocity"
SDO 0x6881, "Profile Velocity"
  0x6881:00, rwrwrw, uint32, 32 bit, "Profile Velocity"
SDO 0x6883, "Profile Acceleration"
  0x6883:00, rwrwrw, uint32, 32 bit, "Profile Acceleration"
SDO 0x6884, "Profile Deceleration"
  0x6884:00, rwrwrw, uint32, 32 bit, "Profile Deceleration"
SDO 0x6885, "Quick Stop Deceleration"
  0x6885:00, rwrwrw, uint32, 32 bit, "Quick Stop Deceleration"
SDO 0x6898, "Homing Method"
  0x6898:00, rwrwrw, int8, 8 bit, "Homing Method"
SDO 0x6899, "Homing Speeds"
  0x6899:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x6899:01, rwrwrw, uint32, 32 bit, "Speed during search for switch"
  0x6899:02, rwrwrw, uint32, 32 bit, "Speed during search for zero"
SDO 0x689a, "Homing Acceleration"
  0x689a:00, rwrwrw, uint32, 32 bit, "Homing Acceleration"
SDO 0x68b8, "Touch Probe Function"
  0x68b8:00, rwrwrw, uint16, 16 bit, "Touch Probe Function"
SDO 0x68b9, "Touch Probe Status"
  0x68b9:00, r-r-r-, uint16, 16 bit, "Touch Probe Status"
SDO 0x68ba, "Touch Probe 1 Positive Value"
  0x68ba:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Positive Value"
SDO 0x68bb, "Touch Probe 1 Negative Value"
  0x68bb:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Negative Value"
SDO 0x68bc, "Touch Probe 2 Positive Value"
  0x68bc:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Positive Value"
SDO 0x68bd, "Touch Probe 2 Negative Value"
  0x68bd:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Negative Value"
SDO 0x68d0, "Touch Probe Source"
  0x68d0:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x68d0:01, rwrwrw, uint16, 16 bit, "Touch Probe 1 Source"
  0x68d0:02, rwrwrw, uint16, 16 bit, "Touch Probe 2 Source"
SDO 0x68d5, "Touch Probe 1 Positive Edge Counter"
  0x68d5:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Positive Edge Counter"
SDO 0x68d6, "Touch Probe 1 Negative Edge Counter"
  0x68d6:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Negative Edge Counter"
SDO 0x68d7, "Touch Probe 2 Positive Edge Counter"
  0x68d7:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Positive Edge Counter"
SDO 0x68d8, "Touch Probe 2 Negative Edge Counter"
  0x68d8:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Negative Edge Counter"
SDO 0x68e3, "Supported Homing Methods"
  0x68e3:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x68e3:01, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x68e3:02, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x68e3:03, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x68e3:04, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x68e3:05, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x68e3:06, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x68e3:07, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x68e3:08, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x68e3:09, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x68e3:0a, r-r-r-, int16, 16 bit, "Supported Homing Method"
SDO 0x68f4, "Following Error Actual Value"
  0x68f4:00, r-r-r-, int32, 32 bit, "Following Error Actual Value"
SDO 0x68fd, "Digital Inputs"
  0x68fd:00, r-r-r-, uint32, 32 bit, "Digital Inputs"
SDO 0x68fe, "Digital Outputs"
  0x68fe:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x68fe:01, rwrwrw, uint32, 32 bit, "Physical Outputs"
  0x68fe:02, rwrwrw, uint32, 32 bit, "Bit Mask"
SDO 0x6d02, "Supported Drive Modes"
  0x6d02:00, r-r-r-, uint32, 32 bit, "Supported Drive Modes"
SDO 0x703f, "Error Code"
  0x703f:00, r-r-r-, uint16, 16 bit, "Error Code"
SDO 0x7040, "Control Word"
  0x7040:00, rwrwrw, uint16, 16 bit, "Control Word"
SDO 0x7041, "Status Word"
  0x7041:00, r-r-r-, uint16, 16 bit, "Status Word"
SDO 0x705a, "Quick Stop Option Code"
  0x705a:00, rwrwrw, int16, 16 bit, "Quick Stop Option Code"
SDO 0x705b, "Shutdown Option Code"
  0x705b:00, rwrwrw, int16, 16 bit, "Shutdown Option Code"
SDO 0x705c, "Disable Operation Option Code"
  0x705c:00, rwrwrw, int16, 16 bit, "Disable Operation Option Code"
SDO 0x705d, "Halt Option Code"
  0x705d:00, rwrwrw, int16, 16 bit, "Halt Option Code"
SDO 0x705e, "Fault Reaction Option Code"
  0x705e:00, rwrwrw, int16, 16 bit, "Fault Reaction Option Code"
SDO 0x7060, "Mode of Operation"
  0x7060:00, rwrwrw, int8, 8 bit, "Mode of Operation"
SDO 0x7061, "Mode of Operation Display"
  0x7061:00, r-r-r-, int8, 8 bit, "Mode of Operation Display"
SDO 0x7062, "Position Demand Value"
  0x7062:00, r-r-r-, int32, 32 bit, "Position Demand Value"
SDO 0x7064, "Position Actual Value"
  0x7064:00, r-r-r-, int32, 32 bit, "Position Actual Value"
SDO 0x7065, "Following Error Window"
  0x7065:00, rwrwrw, uint32, 32 bit, "Following Error Window"
SDO 0x7067, "Position Window"
  0x7067:00, rwrwrw, uint32, 32 bit, "Position Window"
SDO 0x706b, "Velocity Demand Value"
  0x706b:00, r-r-r-, int32, 32 bit, "Velocity Demand Value"
SDO 0x706c, "Velocity Actual Value"
  0x706c:00, r-r-r-, int32, 32 bit, "Velocity Actual Value"
SDO 0x707a, "Target Position"
  0x707a:00, rwrwrw, int32, 32 bit, "Target Position"
SDO 0x707c, "Home Offset"
  0x707c:00, rwrwrw, int32, 32 bit, "Home Offset"
SDO 0x707d, "Software Position Limit"
  0x707d:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x707d:01, rwrwrw, int32, 32 bit, "Min Position Range Limit"
  0x707d:02, rwrwrw, int32, 32 bit, "Max Position Range Limit"
SDO 0x707e, "Polarity"
  0x707e:00, rwrwrw, uint8, 8 bit, "Polarity"
SDO 0x707f, "Max Profile Velocity"
  0x707f:00, rwrwrw, uint32, 32 bit, "Max Profile Velocity"
SDO 0x7081, "Profile Velocity"
  0x7081:00, rwrwrw, uint32, 32 bit, "Profile Velocity"
SDO 0x7083, "Profile Acceleration"
  0x7083:00, rwrwrw, uint32, 32 bit, "Profile Acceleration"
SDO 0x7084, "Profile Deceleration"
  0x7084:00, rwrwrw, uint32, 32 bit, "Profile Deceleration"
SDO 0x7085, "Quick Stop Deceleration"
  0x7085:00, rwrwrw, uint32, 32 bit, "Quick Stop Deceleration"
SDO 0x7098, "Homing Method"
  0x7098:00, rwrwrw, int8, 8 bit, "Homing Method"
SDO 0x7099, "Homing Speeds"
  0x7099:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x7099:01, rwrwrw, uint32, 32 bit, "Speed during search for switch"
  0x7099:02, rwrwrw, uint32, 32 bit, "Speed during search for zero"
SDO 0x709a, "Homing Acceleration"
  0x709a:00, rwrwrw, uint32, 32 bit, "Homing Acceleration"
SDO 0x70b8, "Touch Probe Function"
  0x70b8:00, rwrwrw, uint16, 16 bit, "Touch Probe Function"
SDO 0x70b9, "Touch Probe Status"
  0x70b9:00, r-r-r-, uint16, 16 bit, "Touch Probe Status"
SDO 0x70ba, "Touch Probe 1 Positive Value"
  0x70ba:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Positive Value"
SDO 0x70bb, "Touch Probe 1 Negative Value"
  0x70bb:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Negative Value"
SDO 0x70bc, "Touch Probe 2 Positive Value"
  0x70bc:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Positive Value"
SDO 0x70bd, "Touch Probe 2 Negative Value"
  0x70bd:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Negative Value"
SDO 0x70d0, "Touch Probe Source"
  0x70d0:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x70d0:01, rwrwrw, uint16, 16 bit, "Touch Probe 1 Source"
  0x70d0:02, rwrwrw, uint16, 16 bit, "Touch Probe 2 Source"
SDO 0x70d5, "Touch Probe 1 Positive Edge Counter"
  0x70d5:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Positive Edge Counter"
SDO 0x70d6, "Touch Probe 1 Negative Edge Counter"
  0x70d6:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Negative Edge Counter"
SDO 0x70d7, "Touch Probe 2 Positive Edge Counter"
  0x70d7:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Positive Edge Counter"
SDO 0x70d8, "Touch Probe 2 Negative Edge Counter"
  0x70d8:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Negative Edge Counter"
SDO 0x70e3, "Supported Homing Methods"
  0x70e3:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x70e3:01, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x70e3:02, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x70e3:03, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x70e3:04, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x70e3:05, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x70e3:06, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x70e3:07, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x70e3:08, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x70e3:09, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x70e3:0a, r-r-r-, int16, 16 bit, "Supported Homing Method"
SDO 0x70f4, "Following Error Actual Value"
  0x70f4:00, r-r-r-, int32, 32 bit, "Following Error Actual Value"
SDO 0x70fd, "Digital Inputs"
  0x70fd:00, r-r-r-, uint32, 32 bit, "Digital Inputs"
SDO 0x70fe, "Digital Outputs"
  0x70fe:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x70fe:01, rwrwrw, uint32, 32 bit, "Physical Outputs"
  0x70fe:02, rwrwrw, uint32, 32 bit, "Bit Mask"
SDO 0x7502, "Supported Drive Modes"
  0x7502:00, r-r-r-, uint32, 32 bit, "Supported Drive Modes"
SDO 0x783f, "Error Code"
  0x783f:00, r-r-r-, uint16, 16 bit, "Error Code"
SDO 0x7840, "Control Word"
  0x7840:00, rwrwrw, uint16, 16 bit, "Control Word"
SDO 0x7841, "Status Word"
  0x7841:00, r-r-r-, uint16, 16 bit, "Status Word"
SDO 0x785a, "Quick Stop Option Code"
  0x785a:00, rwrwrw, int16, 16 bit, "Quick Stop Option Code"
SDO 0x785b, "Shutdown Option Code"
  0x785b:00, rwrwrw, int16, 16 bit, "Shutdown Option Code"
SDO 0x785c, "Disable Operation Option Code"
  0x785c:00, rwrwrw, int16, 16 bit, "Disable Operation Option Code"
SDO 0x785d, "Halt Option Code"
  0x785d:00, rwrwrw, int16, 16 bit, "Halt Option Code"
SDO 0x785e, "Fault Reaction Option Code"
  0x785e:00, rwrwrw, int16, 16 bit, "Fault Reaction Option Code"
SDO 0x7860, "Mode of Operation"
  0x7860:00, rwrwrw, int8, 8 bit, "Mode of Operation"
SDO 0x7861, "Mode of Operation Display"
  0x7861:00, r-r-r-, int8, 8 bit, "Mode of Operation Display"
SDO 0x7862, "Position Demand Value"
  0x7862:00, r-r-r-, int32, 32 bit, "Position Demand Value"
SDO 0x7864, "Position Actual Value"
  0x7864:00, r-r-r-, int32, 32 bit, "Position Actual Value"
SDO 0x7865, "Following Error Window"
  0x7865:00, rwrwrw, uint32, 32 bit, "Following Error Window"
SDO 0x7867, "Position Window"
  0x7867:00, rwrwrw, uint32, 32 bit, "Position Window"
SDO 0x786b, "Velocity Demand Value"
  0x786b:00, r-r-r-, int32, 32 bit, "Velocity Demand Value"
SDO 0x786c, "Velocity Actual Value"
  0x786c:00, r-r-r-, int32, 32 bit, "Velocity Actual Value"
SDO 0x787a, "Target Position"
  0x787a:00, rwrwrw, int32, 32 bit, "Target Position"
SDO 0x787c, "Home Offset"
  0x787c:00, rwrwrw, int32, 32 bit, "Home Offset"
SDO 0x787d, "Software Position Limit"
  0x787d:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x787d:01, rwrwrw, int32, 32 bit, "Min Position Range Limit"
  0x787d:02, rwrwrw, int32, 32 bit, "Max Position Range Limit"
SDO 0x787e, "Polarity"
  0x787e:00, rwrwrw, uint8, 8 bit, "Polarity"
SDO 0x787f, "Max Profile Velocity"
  0x787f:00, rwrwrw, uint32, 32 bit, "Max Profile Velocity"
SDO 0x7881, "Profile Velocity"
  0x7881:00, rwrwrw, uint32, 32 bit, "Profile Velocity"
SDO 0x7883, "Profile Acceleration"
  0x7883:00, rwrwrw, uint32, 32 bit, "Profile Acceleration"
SDO 0x7884, "Profile Deceleration"
  0x7884:00, rwrwrw, uint32, 32 bit, "Profile Deceleration"
SDO 0x7885, "Quick Stop Deceleration"
  0x7885:00, rwrwrw, uint32, 32 bit, "Quick Stop Deceleration"
SDO 0x7898, "Homing Method"
  0x7898:00, rwrwrw, int8, 8 bit, "Homing Method"
SDO 0x7899, "Homing Speeds"
  0x7899:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x7899:01, rwrwrw, uint32, 32 bit, "Speed during search for switch"
  0x7899:02, rwrwrw, uint32, 32 bit, "Speed during search for zero"
SDO 0x789a, "Homing Acceleration"
  0x789a:00, rwrwrw, uint32, 32 bit, "Homing Acceleration"
SDO 0x78b8, "Touch Probe Function"
  0x78b8:00, rwrwrw, uint16, 16 bit, "Touch Probe Function"
SDO 0x78b9, "Touch Probe Status"
  0x78b9:00, r-r-r-, uint16, 16 bit, "Touch Probe Status"
SDO 0x78ba, "Touch Probe 1 Positive Value"
  0x78ba:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Positive Value"
SDO 0x78bb, "Touch Probe 1 Negative Value"
  0x78bb:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Negative Value"
SDO 0x78bc, "Touch Probe 2 Positive Value"
  0x78bc:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Positive Value"
SDO 0x78bd, "Touch Probe 2 Negative Value"
  0x78bd:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Negative Value"
SDO 0x78d0, "Touch Probe Source"
  0x78d0:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x78d0:01, rwrwrw, uint16, 16 bit, "Touch Probe 1 Source"
  0x78d0:02, rwrwrw, uint16, 16 bit, "Touch Probe 2 Source"
SDO 0x78d5, "Touch Probe 1 Positive Edge Counter"
  0x78d5:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Positive Edge Counter"
SDO 0x78d6, "Touch Probe 1 Negative Edge Counter"
  0x78d6:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Negative Edge Counter"
SDO 0x78d7, "Touch Probe 2 Positive Edge Counter"
  0x78d7:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Positive Edge Counter"
SDO 0x78d8, "Touch Probe 2 Negative Edge Counter"
  0x78d8:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Negative Edge Counter"
SDO 0x78e3, "Supported Homing Methods"
  0x78e3:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x78e3:01, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x78e3:02, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x78e3:03, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x78e3:04, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x78e3:05, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x78e3:06, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x78e3:07, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x78e3:08, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x78e3:09, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x78e3:0a, r-r-r-, int16, 16 bit, "Supported Homing Method"
SDO 0x78f4, "Following Error Actual Value"
  0x78f4:00, r-r-r-, int32, 32 bit, "Following Error Actual Value"
SDO 0x78fd, "Digital Inputs"
  0x78fd:00, r-r-r-, uint32, 32 bit, "Digital Inputs"
SDO 0x78fe, "Digital Outputs"
  0x78fe:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x78fe:01, rwrwrw, uint32, 32 bit, "Physical Outputs"
  0x78fe:02, rwrwrw, uint32, 32 bit, "Bit Mask"
SDO 0x7d02, "Supported Drive Modes"
  0x7d02:00, r-r-r-, uint32, 32 bit, "Supported Drive Modes"
SDO 0x803f, "Error Code"
  0x803f:00, r-r-r-, uint16, 16 bit, "Error Code"
SDO 0x8040, "Control Word"
  0x8040:00, rwrwrw, uint16, 16 bit, "Control Word"
SDO 0x8041, "Status Word"
  0x8041:00, r-r-r-, uint16, 16 bit, "Status Word"
SDO 0x805a, "Quick Stop Option Code"
  0x805a:00, rwrwrw, int16, 16 bit, "Quick Stop Option Code"
SDO 0x805b, "Shutdown Option Code"
  0x805b:00, rwrwrw, int16, 16 bit, "Shutdown Option Code"
SDO 0x805c, "Disable Operation Option Code"
  0x805c:00, rwrwrw, int16, 16 bit, "Disable Operation Option Code"
SDO 0x805d, "Halt Option Code"
  0x805d:00, rwrwrw, int16, 16 bit, "Halt Option Code"
SDO 0x805e, "Fault Reaction Option Code"
  0x805e:00, rwrwrw, int16, 16 bit, "Fault Reaction Option Code"
SDO 0x8060, "Mode of Operation"
  0x8060:00, rwrwrw, int8, 8 bit, "Mode of Operation"
SDO 0x8061, "Mode of Operation Display"
  0x8061:00, r-r-r-, int8, 8 bit, "Mode of Operation Display"
SDO 0x8062, "Position Demand Value"
  0x8062:00, r-r-r-, int32, 32 bit, "Position Demand Value"
SDO 0x8064, "Position Actual Value"
  0x8064:00, r-r-r-, int32, 32 bit, "Position Actual Value"
SDO 0x8065, "Following Error Window"
  0x8065:00, rwrwrw, uint32, 32 bit, "Following Error Window"
SDO 0x8067, "Position Window"
  0x8067:00, rwrwrw, uint32, 32 bit, "Position Window"
SDO 0x806b, "Velocity Demand Value"
  0x806b:00, r-r-r-, int32, 32 bit, "Velocity Demand Value"
SDO 0x806c, "Velocity Actual Value"
  0x806c:00, r-r-r-, int32, 32 bit, "Velocity Actual Value"
SDO 0x807a, "Target Position"
  0x807a:00, rwrwrw, int32, 32 bit, "Target Position"
SDO 0x807c, "Home Offset"
  0x807c:00, rwrwrw, int32, 32 bit, "Home Offset"
SDO 0x807d, "Software Position Limit"
  0x807d:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x807d:01, rwrwrw, int32, 32 bit, "Min Position Range Limit"
  0x807d:02, rwrwrw, int32, 32 bit, "Max Position Range Limit"
SDO 0x807e, "Polarity"
  0x807e:00, rwrwrw, uint8, 8 bit, "Polarity"
SDO 0x807f, "Max Profile Velocity"
  0x807f:00, rwrwrw, uint32, 32 bit, "Max Profile Velocity"
SDO 0x8081, "Profile Velocity"
  0x8081:00, rwrwrw, uint32, 32 bit, "Profile Velocity"
SDO 0x8083, "Profile Acceleration"
  0x8083:00, rwrwrw, uint32, 32 bit, "Profile Acceleration"
SDO 0x8084, "Profile Deceleration"
  0x8084:00, rwrwrw, uint32, 32 bit, "Profile Deceleration"
SDO 0x8085, "Quick Stop Deceleration"
  0x8085:00, rwrwrw, uint32, 32 bit, "Quick Stop Deceleration"
SDO 0x8098, "Homing Method"
  0x8098:00, rwrwrw, int8, 8 bit, "Homing Method"
SDO 0x8099, "Homing Speeds"
  0x8099:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x8099:01, rwrwrw, uint32, 32 bit, "Speed during search for switch"
  0x8099:02, rwrwrw, uint32, 32 bit, "Speed during search for zero"
SDO 0x809a, "Homing Acceleration"
  0x809a:00, rwrwrw, uint32, 32 bit, "Homing Acceleration"
SDO 0x80b8, "Touch Probe Function"
  0x80b8:00, rwrwrw, uint16, 16 bit, "Touch Probe Function"
SDO 0x80b9, "Touch Probe Status"
  0x80b9:00, r-r-r-, uint16, 16 bit, "Touch Probe Status"
SDO 0x80ba, "Touch Probe 1 Positive Value"
  0x80ba:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Positive Value"
SDO 0x80bb, "Touch Probe 1 Negative Value"
  0x80bb:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Negative Value"
SDO 0x80bc, "Touch Probe 2 Positive Value"
  0x80bc:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Positive Value"
SDO 0x80bd, "Touch Probe 2 Negative Value"
  0x80bd:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Negative Value"
SDO 0x80d0, "Touch Probe Source"
  0x80d0:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x80d0:01, rwrwrw, uint16, 16 bit, "Touch Probe 1 Source"
  0x80d0:02, rwrwrw, uint16, 16 bit, "Touch Probe 2 Source"
SDO 0x80d5, "Touch Probe 1 Positive Edge Counter"
  0x80d5:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Positive Edge Counter"
SDO 0x80d6, "Touch Probe 1 Negative Edge Counter"
  0x80d6:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Negative Edge Counter"
SDO 0x80d7, "Touch Probe 2 Positive Edge Counter"
  0x80d7:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Positive Edge Counter"
SDO 0x80d8, "Touch Probe 2 Negative Edge Counter"
  0x80d8:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Negative Edge Counter"
SDO 0x80e3, "Supported Homing Methods"
  0x80e3:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x80e3:01, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x80e3:02, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x80e3:03, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x80e3:04, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x80e3:05, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x80e3:06, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x80e3:07, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x80e3:08, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x80e3:09, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x80e3:0a, r-r-r-, int16, 16 bit, "Supported Homing Method"
SDO 0x80f4, "Following Error Actual Value"
  0x80f4:00, r-r-r-, int32, 32 bit, "Following Error Actual Value"
SDO 0x80fd, "Digital Inputs"
  0x80fd:00, r-r-r-, uint32, 32 bit, "Digital Inputs"
SDO 0x80fe, "Digital Outputs"
  0x80fe:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x80fe:01, rwrwrw, uint32, 32 bit, "Physical Outputs"
  0x80fe:02, rwrwrw, uint32, 32 bit, "Bit Mask"
SDO 0x8502, "Supported Drive Modes"
  0x8502:00, r-r-r-, uint32, 32 bit, "Supported Drive Modes"
SDO 0x883f, "Error Code"
  0x883f:00, r-r-r-, uint16, 16 bit, "Error Code"
SDO 0x8840, "Control Word"
  0x8840:00, rwrwrw, uint16, 16 bit, "Control Word"
SDO 0x8841, "Status Word"
  0x8841:00, r-r-r-, uint16, 16 bit, "Status Word"
SDO 0x885a, "Quick Stop Option Code"
  0x885a:00, rwrwrw, int16, 16 bit, "Quick Stop Option Code"
SDO 0x885b, "Shutdown Option Code"
  0x885b:00, rwrwrw, int16, 16 bit, "Shutdown Option Code"
SDO 0x885c, "Disable Operation Option Code"
  0x885c:00, rwrwrw, int16, 16 bit, "Disable Operation Option Code"
SDO 0x885d, "Halt Option Code"
  0x885d:00, rwrwrw, int16, 16 bit, "Halt Option Code"
SDO 0x885e, "Fault Reaction Option Code"
  0x885e:00, rwrwrw, int16, 16 bit, "Fault Reaction Option Code"
SDO 0x8860, "Mode of Operation"
  0x8860:00, rwrwrw, int8, 8 bit, "Mode of Operation"
SDO 0x8861, "Mode of Operation Display"
  0x8861:00, r-r-r-, int8, 8 bit, "Mode of Operation Display"
SDO 0x8862, "Position Demand Value"
  0x8862:00, r-r-r-, int32, 32 bit, "Position Demand Value"
SDO 0x8864, "Position Actual Value"
  0x8864:00, r-r-r-, int32, 32 bit, "Position Actual Value"
SDO 0x8865, "Following Error Window"
  0x8865:00, rwrwrw, uint32, 32 bit, "Following Error Window"
SDO 0x8867, "Position Window"
  0x8867:00, rwrwrw, uint32, 32 bit, "Position Window"
SDO 0x886b, "Velocity Demand Value"
  0x886b:00, r-r-r-, int32, 32 bit, "Velocity Demand Value"
SDO 0x886c, "Velocity Actual Value"
  0x886c:00, r-r-r-, int32, 32 bit, "Velocity Actual Value"
SDO 0x887a, "Target Position"
  0x887a:00, rwrwrw, int32, 32 bit, "Target Position"
SDO 0x887c, "Home Offset"
  0x887c:00, rwrwrw, int32, 32 bit, "Home Offset"
SDO 0x887d, "Software Position Limit"
  0x887d:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x887d:01, rwrwrw, int32, 32 bit, "Min Position Range Limit"
  0x887d:02, rwrwrw, int32, 32 bit, "Max Position Range Limit"
SDO 0x887e, "Polarity"
  0x887e:00, rwrwrw, uint8, 8 bit, "Polarity"
SDO 0x887f, "Max Profile Velocity"
  0x887f:00, rwrwrw, uint32, 32 bit, "Max Profile Velocity"
SDO 0x8881, "Profile Velocity"
  0x8881:00, rwrwrw, uint32, 32 bit, "Profile Velocity"
SDO 0x8883, "Profile Acceleration"
  0x8883:00, rwrwrw, uint32, 32 bit, "Profile Acceleration"
SDO 0x8884, "Profile Deceleration"
  0x8884:00, rwrwrw, uint32, 32 bit, "Profile Deceleration"
SDO 0x8885, "Quick Stop Deceleration"
  0x8885:00, rwrwrw, uint32, 32 bit, "Quick Stop Deceleration"
SDO 0x8898, "Homing Method"
  0x8898:00, rwrwrw, int8, 8 bit, "Homing Method"
SDO 0x8899, "Homing Speeds"
  0x8899:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x8899:01, rwrwrw, uint32, 32 bit, "Speed during search for switch"
  0x8899:02, rwrwrw, uint32, 32 bit, "Speed during search for zero"
SDO 0x889a, "Homing Acceleration"
  0x889a:00, rwrwrw, uint32, 32 bit, "Homing Acceleration"
SDO 0x88b8, "Touch Probe Function"
  0x88b8:00, rwrwrw, uint16, 16 bit, "Touch Probe Function"
SDO 0x88b9, "Touch Probe Status"
  0x88b9:00, r-r-r-, uint16, 16 bit, "Touch Probe Status"
SDO 0x88ba, "Touch Probe 1 Positive Value"
  0x88ba:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Positive Value"
SDO 0x88bb, "Touch Probe 1 Negative Value"
  0x88bb:00, r-r-r-, int32, 32 bit, "Touch Probe 1 Negative Value"
SDO 0x88bc, "Touch Probe 2 Positive Value"
  0x88bc:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Positive Value"
SDO 0x88bd, "Touch Probe 2 Negative Value"
  0x88bd:00, r-r-r-, int32, 32 bit, "Touch Probe 2 Negative Value"
SDO 0x88d0, "Touch Probe Source"
  0x88d0:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x88d0:01, rwrwrw, uint16, 16 bit, "Touch Probe 1 Source"
  0x88d0:02, rwrwrw, uint16, 16 bit, "Touch Probe 2 Source"
SDO 0x88d5, "Touch Probe 1 Positive Edge Counter"
  0x88d5:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Positive Edge Counter"
SDO 0x88d6, "Touch Probe 1 Negative Edge Counter"
  0x88d6:00, r-r-r-, uint16, 16 bit, "Touch Probe 1 Negative Edge Counter"
SDO 0x88d7, "Touch Probe 2 Positive Edge Counter"
  0x88d7:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Positive Edge Counter"
SDO 0x88d8, "Touch Probe 2 Negative Edge Counter"
  0x88d8:00, r-r-r-, uint16, 16 bit, "Touch Probe 2 Negative Edge Counter"
SDO 0x88e3, "Supported Homing Methods"
  0x88e3:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x88e3:01, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x88e3:02, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x88e3:03, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x88e3:04, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x88e3:05, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x88e3:06, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x88e3:07, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x88e3:08, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x88e3:09, r-r-r-, int16, 16 bit, "Supported Homing Method"
  0x88e3:0a, r-r-r-, int16, 16 bit, "Supported Homing Method"
SDO 0x88f4, "Following Error Actual Value"
  0x88f4:00, r-r-r-, int32, 32 bit, "Following Error Actual Value"
SDO 0x88fd, "Digital Inputs"
  0x88fd:00, r-r-r-, uint32, 32 bit, "Digital Inputs"
SDO 0x88fe, "Digital Outputs"
  0x88fe:00, r-r-r-, uint8, 8 bit, "Number of entries"
  0x88fe:01, rwrwrw, uint32, 32 bit, "Physical Outputs"
  0x88fe:02, rwrwrw, uint32, 32 bit, "Bit Mask"
SDO 0x8d02, "Supported Drive Modes"
  0x8d02:00, r-r-r-, uint32, 32 bit, "Supported Drive Modes"

This is from a Korean company, but the SDO descriptions are all in English, which is nice. It also looks like they're using 3D printer-ish stepper drives, which isn't surprising. Honestly, this is more of a 3D printer drive than something that you'd use on a CNC, but that's fine. Kind of interesting, actually.

scottlaird commented 4 months ago

Okay, fixed the bug in lcec_configgen (it only recognized new slaves after it saw the device name in ethercat -v slaves, and the Rovix doesn't have a name.). I also added multi-channel support to lcec_configgen, so here's what I see:

    <slave idx="22" type="basic_cia402" vid="0x00000227" pid="0x00000005" name="D23">
      <modParam name="ciaChannels" value="6"/>
      <modParam name="ch1enablePP" value="true"/>
      <modParam name="ch1enableHM" value="true"/>
      <modParam name="ch1enableCSP" value="true"/>
      <modParam name="ch1enableActualFollowingError" value="true"/>
      <modParam name="ch1enableFollowingErrorWindow" value="true"/>
      <modParam name="ch1enableHomeAccel" value="true"/>
      <modParam name="ch1enableProfileAccel" value="true"/>
      <modParam name="ch1enableProfileDecel" value="true"/>
      <modParam name="ch1enableProfileMaxVelocity" value="true"/>
      <modParam name="ch1enableProfileVelocity" value="true"/>
      <modParam name="ch1enableVelocityDemand" value="true"/>
      <modParam name="ch1enableVelocitySensorSelector" value="true"/>
      <modParam name="ch2enablePP" value="true"/>
      <modParam name="ch2enableHM" value="true"/>
      <modParam name="ch2enableCSP" value="true"/>
      <modParam name="ch2enableActualFollowingError" value="true"/>
      <modParam name="ch2enableFollowingErrorWindow" value="true"/>
      <modParam name="ch2enableHomeAccel" value="true"/>
      <modParam name="ch2enableProfileAccel" value="true"/>
      <modParam name="ch2enableProfileDecel" value="true"/>
      <modParam name="ch2enableProfileMaxVelocity" value="true"/>
      <modParam name="ch2enableProfileVelocity" value="true"/>
      <modParam name="ch2enableVelocityDemand" value="true"/>
      <modParam name="ch2enableVelocitySensorSelector" value="true"/>
      <modParam name="ch3enablePP" value="true"/>
      <modParam name="ch3enableHM" value="true"/>
      <modParam name="ch3enableCSP" value="true"/>
      <modParam name="ch3enableActualFollowingError" value="true"/>
      <modParam name="ch3enableFollowingErrorWindow" value="true"/>
      <modParam name="ch3enableHomeAccel" value="true"/>
      <modParam name="ch3enableProfileAccel" value="true"/>
      <modParam name="ch3enableProfileDecel" value="true"/>
      <modParam name="ch3enableProfileMaxVelocity" value="true"/>
      <modParam name="ch3enableProfileVelocity" value="true"/>
      <modParam name="ch3enableVelocityDemand" value="true"/>
      <modParam name="ch3enableVelocitySensorSelector" value="true"/>
      <modParam name="ch4enablePP" value="true"/>
      <modParam name="ch4enableHM" value="true"/>
      <modParam name="ch4enableCSP" value="true"/>
      <modParam name="ch4enableActualFollowingError" value="true"/>
      <modParam name="ch4enableFollowingErrorWindow" value="true"/>
      <modParam name="ch4enableHomeAccel" value="true"/>
      <modParam name="ch4enableProfileAccel" value="true"/>
      <modParam name="ch4enableProfileDecel" value="true"/>
      <modParam name="ch4enableProfileMaxVelocity" value="true"/>
      <modParam name="ch4enableProfileVelocity" value="true"/>
      <modParam name="ch4enableVelocityDemand" value="true"/>
      <modParam name="ch4enableVelocitySensorSelector" value="true"/>
      <modParam name="ch5enablePP" value="true"/>
      <modParam name="ch5enableHM" value="true"/>
      <modParam name="ch5enableCSP" value="true"/>
      <modParam name="ch5enableActualFollowingError" value="true"/>
      <modParam name="ch5enableFollowingErrorWindow" value="true"/>
      <modParam name="ch5enableHomeAccel" value="true"/>
      <modParam name="ch5enableProfileAccel" value="true"/>
      <modParam name="ch5enableProfileDecel" value="true"/>
      <modParam name="ch5enableProfileMaxVelocity" value="true"/>
      <modParam name="ch5enableProfileVelocity" value="true"/>
      <modParam name="ch5enableVelocityDemand" value="true"/>
      <modParam name="ch5enableVelocitySensorSelector" value="true"/>
      <modParam name="ch6enablePP" value="true"/>
      <modParam name="ch6enableHM" value="true"/>
      <modParam name="ch6enableCSP" value="true"/>
      <modParam name="ch6enableActualFollowingError" value="true"/>
      <modParam name="ch6enableFollowingErrorWindow" value="true"/>
      <modParam name="ch6enableHomeAccel" value="true"/>
      <modParam name="ch6enableProfileAccel" value="true"/>
      <modParam name="ch6enableProfileDecel" value="true"/>
      <modParam name="ch6enableProfileMaxVelocity" value="true"/>
      <modParam name="ch6enableProfileVelocity" value="true"/>
      <modParam name="ch6enableVelocityDemand" value="true"/>
      <modParam name="ch6enableVelocitySensorSelector" value="true"/>
    </slave>
scottlaird commented 3 months ago

Note, there are updates on #180. Specifically, the Rovix is giving somewhat odd EtherCAT errors right now:

[191031.899201] EtherCAT WARNING 0-26: PDOs configured for SM2, but slave does not provide the sync manager information!
[191031.899207] EtherCAT WARNING 0-26: PDOs configured for SM3, but slave does not provide the sync manager information!
[191031.899208] EtherCAT ERROR 0-26: Failed to determine PDO sync manager for FMMU!

I'll look into it once I've made progress on other devices. I suspect that the Rovix's EtherCAT code is a bit flaky.

scottlaird commented 3 months ago

Ah, I think I figured it out -- this device don't have configurable PDOs. Which is weird for a CiA 402 device, but it's probably easy enough to handle.

scottlaird commented 2 months ago

No, that's not the problem either. From the Etherlab FAQ (wayback machine), it looks like the SII is set up wrong for the device. It looks like it can be rebuilt via TwinCAT from the ESI XML.

We don't have the ESI XML either.

It's probably possible to create a correct SII config by hand, but I don't have the tools for that today.

scottlaird commented 2 months ago

FWIW, here's a hexdump of the SII (fetched via ethercat sii_read):

0000000 0e89 cc80 1388 0000 0000 8000 0000 008a
0000010 0227 0000 0005 0000 0001 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 1000 0080 1400 0080 000c 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
*
0000070 0000 0000 0000 0000 0000 0000 000f 0001
0000080

siitool decodes that as:

Error, SII probably malformed. No 0xffff at the end found
First print preamble and config
Preamble:
PDI Control: ................ 0x0e89
PDI Config: ................. 0xcc80
Sync Impulse Length: ........ 50000 ns (raw: 0x1388)
PDI Config 2: ............... 0x0000
Configured Station Alias: ... 0x0000
Checksum of Preamble: ....... 0x008a (ok)
Identity:
  Vendor ID: ................ 0x00000227
  Product ID: ............... 0x00000005
  Revision ID: .............. 0x00000001
  Serial Number: ............ 0x00000000

Default mailbox settings:
  Bootstrap Mailbox:
  Received Mailbox Offset: .. 0x0000
  Received Mailbox Size: .... 0
  Send Mailbox Offset: ...... 0x0000
  Send Mailbox Size: ........ 0
  Mailbox Settings:
  Received Mailbox Offset: .. 0x1000
  Received Mailbox Size: .... 128
  Send Mailbox Offset: ...... 0x1400
  Send Mailbox Size: ........ 128

Supported Mailboxes:
  CoE ....................... True
  EoE ....................... False
  FoE ....................... True
  SoE ....................... False
  VoE ....................... False

EEPROM size: ................ 2048 bytes
Version: .................... 1
scottlaird commented 2 months ago

Appending a pair of FF bytes to the end seems to have fixed the siitool warnings. I was able to write that back to the device successfully via sii_write, but it's still giving the same errors, and comparing to other devices the SII data is tiny. There should be a block for FMMU and maybe a block for SyncManager, and they just don't exist here. I may try to cobble them together at some point, but its tricky when there's no manufacturer data available.