CanOpen--PDO映射
CanOpen--PDO映射
1 介绍
1.1 概述
CANOpen协议主要内容分为三大块,如下图CANopen 的设备模型。
PDO
过程数据对象用于在节点之间传送过程数据,如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 传输框架
SDO 传输方式遵循客户端—服务器模式,即一问一答方式。由 CAN 总线网络中的 SDO 客户端发起,SDO 服务器作出应答。因此, SDO 之间的数据交换至少需要两个 CAN 报文才能实现, 而且两个 CAN 报文的 CAN 标识符不一样。
SDO 传输报文
SDO 的传输分为不高于 4 个字节和高于 4 个字节的对象数据传输。 不高于 4 个字节采用加速 SDO 传输方式,高于 4 个字节采用分段传输或块传输方式。SDO 传输报文由 COB-ID 和数据段组成。由下表 可以看出,T_SDO 和R_SDO 报文的 COB-ID 不一致。数据段采用小端模式,即低位在前,高位在后排列。 所有的 SDO 报文数据段都必须是 8 个字节。SDO 传输报文格式如下表:
对于不高于 4 个字节的读写, 采用加速 SDO 传输。 按照读写方式及内容数据长度的不一致,传输报文各不相同。加速 SDO 写报文如下表:
符号- 表示数据不予考虑,写数据时建议写 0。
1.2 问题 PDO 配置流程异常
-
示例
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
2 canopen
3 PDO 设置流程
3.1 西门子
3.4 自由 PDO映射设置
使用 STARTER 软件只能通过专家列表配置 PDO 映射参数,双击控制单元树状视图的"Expert list"可以打开专家列表。使用 BOP-2 面板调试请参考以下步骤中对应的参数号将 PDO 映射方式修改为自由映射,P8744= 2:
修改 RPDO1 通信参数和映射参数:
- 修改 RPDO1 的 COB-ID 并允许修改映射: P8700[0]=80000202H;
- 修改 RPDO1 传输类型: P8700[1]=FEH(采用默认值: 立即接收)
- 修改映射: 设置映射参数 P8710[0]=6040 00_10H;
- 修改映射: 设置映射参数 P8710[1]=5800 00_10H;
- 修改映射: 设置映射参数 P8710[2]= 0H;
- 修改映射: 设置映射参数 P8710[3]= 0H;
- 将 PRDO1 设置为禁止修改映射: P8700[0]=202 H;
3.2 cnblog 一博主给的流程
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
3.3 雪花飞龙
CANopen通信----PDO与SDO【复制】
CanOpen通信----PDO与SDO【原创】
PDO 的映射配置遵循流程如下
3.4 zaichen321
PDO的映射配置流程如下
- 无效PDO; // PDO的COB-ID 最高位写1;
- 清除原有映射内容; // 对映射对象的子索引0x0写入0;
- 写入PDO映射内容; // 按照映射定义分别写入映射参数子索引;
- 写入该PDO映射对象总个数; // 将映射个数写到映射对象子索引0x00
- 有效该PDO; // PDO的COB-ID 最高位写1;// 修改为:最高位写0;
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
3.4 cariohu
映射PDO
//使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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!