最近接触canopen,对立面的其他都很好理解,唯独对PDO私货理解不了,后来终于开窍了,在此分享给大家。
1、canopen协议是一种应用协议,基于can总线实现;
2、canopen报文有好几种,用应答式的(SDO),还有非应答式的(PDO)以及其他一些;
3、SDO就是收到回复的过程,没什么特别;
4、重点:PDO,分为TPDO和RPDO。PDO有映射地址,所以可以分为设置地址和映射地址。设置地址用于控制PDO,比如开启关闭工作模式什么的,映射的PDO属于具体的传回数据的数据帧。PDO的设置使用SDO命令,但是index对应PDO或者PDO映射地址,sub_index对应具体的操作形式,数据部分四字节,由需要返回的对象地址(16位)+对象地址子索引(8位)+数据长度组成(8位,20表示数据是32位,10十六位,08八位)。PDO的使用遵循禁止、设定、启动原则。
示例:0x0601 数据帧 标准帧 0x08 x| 23 01 1A 01 20 00 69 60 0x0581 数据帧 标准帧 0x08 x| 60 01 1A 01 20 00 69 60
0x0601 cob-id 23 data域数据长度 1A01 index 01 subindex 6900 map的OD,即需要传输的数据地址 00 sub-index 20 数据长度,32位 |