ros_canopen PDO mapping (Schneider Motor CiA 402)
Hey guys,
I'm at a dead-end so in need of some help from the community, please. This question follows on from a closed GitHub issue on ros_canopen. My problem is as follows:
- I'm unable to do a PDO re-map procedure using ros_canopen_master.
- If I don't do the PDO re-map procedure the Schneider Lexium 28 controller does enable voltage but halts due to an error message: "PDO packet too long".
Some background data:
- Both EDS and DCF formats have been tried. Setting
ParameterValue
via CANeds, text file ordcf_overlay
in driver.yaml makes no difference to the error. Looking at the source code in ros_canopen, the error seems to be that it tries to read an SDO which the package is not setup to do (bubbles up at object dictionary1800sub1
but this doesn't seem to point to anything useful) but I am not asking it to read an SDO, just write to them in the devices pre-operational state so it can re-map the PDO. - ros_canopen version 0.8.5
- TPDO & RPDO mappings as follows:
"1A00sub0": "2"
"1A00sub1": "0x60410010" ---------------- # statusword [2 bytes]
"1A00sub2": "0x60610008" ---------------- # modes of operation display [1 byte]
"1A01sub0": "1"
"1A01sub1": "0x60640020" ---------------- # actual position value [4 bytes]
"1600sub0: "2"
"1600sub1": "0x60400010" ---------------- # controlword [2 bytes]
"1600sub2": "0x60600008" ---------------- # modes of operation [1 byte]
"1601sub0": "1"
"1601sub1": "0x607a0020" ---------------- # target position [4 byte]