Hi,is there any canopen library where is implemented sdo write with unspecified datalength (command byte 0x22)? I tried caa cia405 canopen library but it doesnt support this, but my slave device accept only 0x22. Thank you for any help.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
SDO example:
SegmentedAndBlockWriteExample: Writing if an object of any length via SDO (segmented transfer or block transfer) by means of CiA405.SDO_WRITE_DATA
This help page also contains a link to a demo project.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thank you for an answer. Unfortunatelly, it doesn't work. The slave needs command byte as follows 0x22. It means expedited transfer where s-bit is not set, therefore data length is not specified.
If I use segmented mode by CiA405.SDO_WRITE_DATA it produce command byte as follows 0x21 which is unfortunately supported by the slave and it returns with error 0x05040001 - SDO Abort Code -Client/server command specifier not valid or unknown.
I can use CAN API low level to overcome this problem where it is possible to set 0x22 as a command byte, but than I can use user interface to set the communication probably, because I thing that machine expert uses library CiA405.SDO_WRITE for setting the slave.
Or am I wrong?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,is there any canopen library where is implemented sdo write with unspecified datalength (command byte 0x22)? I tried caa cia405 canopen library but it doesnt support this, but my slave device accept only 0x22. Thank you for any help.
See:
https://content.helpme-codesys.com/en/CODESYS%20Examples/_ex_canopen_canopen.html
SDO example:
SegmentedAndBlockWriteExample: Writing if an object of any length via SDO (segmented transfer or block transfer) by means of CiA405.SDO_WRITE_DATA
This help page also contains a link to a demo project.
Thank you for an answer. Unfortunatelly, it doesn't work. The slave needs command byte as follows 0x22. It means expedited transfer where s-bit is not set, therefore data length is not specified.
If I use segmented mode by CiA405.SDO_WRITE_DATA it produce command byte as follows 0x21 which is unfortunately supported by the slave and it returns with error 0x05040001 - SDO Abort Code -Client/server command specifier not valid or unknown.
I can use CAN API low level to overcome this problem where it is possible to set 0x22 as a command byte, but than I can use user interface to set the communication probably, because I thing that machine expert uses library CiA405.SDO_WRITE for setting the slave.
Or am I wrong?
Anyway, any idea how to get command byte 0x22 for sdo write if I use codesys cia405 canopen library?