CANOpen协议主要内容分为三大块,如下图CANopen 的设备模型。
过程数据对象用于在节点之间传送过程数据,如I/O模块I/O状态读取和设定,模拟量采集和模拟量输出等等,协议考虑从机硬件限制最多支持4组PDO,每组包含一个RPDO和一个TPDO。The Gold drive supports 4 TPDO and 4 RPDO. Each PDO contains up to 8 bytes of data.
SDO 传输方式遵循客户端—服务器模式,即一问一答方式。由 CAN 总线网络中的 SDO 客户端发起,SDO 服务器作出应答。因此, SDO 之间的数据交换至少需要两个 CAN 报文才能实现, 而且两个 CAN 报文的 CAN 标识符不一样。
SDO 的传输分为不高于 4 个字节和高于 4 个字节的对象数据传输。 不高于 4 个字节采用加速 SDO 传输方式,高于 4 个字节采用分段传输或块传输方式。SDO 传输报文由 COB-ID 和数据段组成。由下表 可以看出,T_SDO 和R_SDO 报文的 COB-ID 不一致。数据段采用小端模式,即低位在前,高位在后排列。 所有的 SDO 报文数据段都必须是 8 个字节。SDO 传输报文格式如下表:
对于不高于 4 个字节的读写, 采用加速 SDO 传输。 按照读写方式及内容数据长度的不一致,传输报文各不相同。加速 SDO 写报文如下表:
符号- 表示数据不予考虑,写数据时建议写 0。
示例
PDO 先关闭,然后配置,再开启
控制程序代码
PDO 直接开启,然后配置
x 23 00 18 01 81 01 00 00
x 80 00 18 01 43 00 04 06
x 2F 00 18 02 FF 00 00 00
x 60 00 18 02 00 00 00 00
x 2B 00 18 03 05 00 00 00
x 60 00 18 03 00 00 00 00
使用 STARTER 软件只能通过专家列表配置 PDO 映射参数,双击控制单元树状视图的"Expert list"可以打开专家列表。使用 BOP-2 面板调试请参考以下步骤中对应的参数号将 PDO 映射方式修改为自由映射,P8744= 2:
修改 RPDO1 通信参数和映射参数:
PDO 映射事例:将Controlword对象0x6040和Interpolated data record对象0x60C1:1h映射到RPDO1,传输类型为同步类型
(1) Disable RPDO1(COB-ID 0x201),client sends:
0x601 0x22 0x00 0x14 0x01 0x01 0x02 0x00 0x80
Clear mapping RPDO1,client sends:
0x601 0x22 0x00 0x16 0x00 0x00 0x00 0x00 0x00
(2) Set CW, object 0x6040, 16 bit length in sub index 1 of RPDO1
0x601 0x22 0x00 0x16 0x01 0x10 0x00 0x40 0x60
Set Interpolated data record, object 0x60C1, Sub index 1, 32 bit length in sub index 2 of RPDO1
0x601 0x22 0x00 0x16 0x02 0x20 0x01 0xC1 0x60
(3) Set transmission type synchronous, every SYNC (RPDO默认传输类型值为255,即默认异步传输)
0x601 0x22 0x00 0x14 0x02 0x01 0x00 0x00 0x00
(4) Set 2 objects are mapped
0x601 0x22 0x00 0x16 0x00 0x02 0x00 0x00 0x00
Enalbe RPDO1
0x601 0x22 0x00 0x14 0x01 0x01 0x02 0x00 0x00
CANopen通信----PDO与SDO【复制】
CanOpen通信----PDO与SDO【原创】
1.配置TPDO1
1)0x603 0x08 0x23 0x00 0x18 0x01 0x83 0x01 0x00 0x80 // 去使能TPDO1
2)0x603 0x08 0x2F 0x00 0x18 0x02 0x01 0x00 0x00 0x00 // 1个有效数据,设置TPDO1的传输类型,SYNC
3)0x603 0x08 0x2F 0x00 0x1A 0x00 0x00 0x00 0x00 0x00 // 对映射对象的子索引0x0写入0;清除原有映射内容
4)0x603 0x08 0x23 0x00 0x1A 0x01 0x10 0x00 0x41 0x60 // 写入映射对象1,0x60410010
5)0x603 0x08 0x23 0x00 0x1A 0x02 0x08 0x00 0x61 0x60 // 写入映射对象2,0x60610008
6)0x603 0x08 0x23 0x00 0x1A 0x03 0x20 0x00 0x6C 0x60 // 写入映射对象3,0x606C0020
7)0x603 0x08 0x2F 0x00 0x1A 0x00 0x03 0x00 0x00 0x00 // 映射对象的子索引0x0写入3,说明有3个映射对象
8)0x603 0x08 0x23 0x00 0x18 0x01 0x83 0x01 0x00 0x00 // 使能TPDO1
//使1800 subindex1通讯对象TPDO 最高位为1,以便修改TPDO
0601 23 00 18 01 81 01 00 80
0581 60 00 18 01 00 00 00 00
//设置通讯模式 255-异步
0601 2F 00 18 02 FF
0581 60 00 18 02 00 00 00 00
//清空1A00中映射的对象数目
0601 2F 00 1A 00 00
0581 60 00 1A 00 00 00 00 00
//映射第一个对象6064 subindex0 20代表数据长度,00是6064的第0个subindex
0601 23 00 1A 01 20 00 64 60
0581 60 00 1A 01 00 00 00 00
//设置1A00中映射的对象数目
0601 2F 00 1A 00 01
0581 60 00 1A 00 00 00 00 00
//将1800 subindex1的最高位清零,是TPDO有效
0601 23 00 18 01 81 01 00 00
0581 60 00 18 01 00 00 00 00
1、CiA301CANopen应用层和通信协议
2、行动元–CANopen设置
3、SIEMENS–G120 CANopen PDO 通信
4、CAN 知识简析及应用分享
5、CANOpen系列教程07_CANOpen协议概述
6、德国工程师的 CANopen 备忘录
7、【good】CANopen笔记2–PDO过程数据对象
8、CANopen通信----PDO与SDO【复制】
9、CanOpen通信----PDO与SDO【原创】
10、03_过程数据对象(PDO)
11、CAN与CANOPEN