CanOpen--PDO映射

本文详细介绍了CanOpen协议中的PDO映射、SDO传输框架以及常见设备如西门子的PDO设置流程。涉及PDO配置问题、不同厂商的映射步骤和示例,包括加速SDO传输、自由PDO映射和CANopenPDO的基本配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 西门子

SIEMENS–G120 CANopen PDO 通信

3.4 自由 PDO映射设置

使用 STARTER 软件只能通过专家列表配置 PDO 映射参数,双击控制单元树状视图的"Expert list"可以打开专家列表。使用 BOP-2 面板调试请参考以下步骤中对应的参数号将 PDO 映射方式修改为自由映射,P8744= 2:
修改 RPDO1 通信参数和映射参数:

  1. 修改 RPDO1 的 COB-ID 并允许修改映射: P8700[0]=80000202H;
  2. 修改 RPDO1 传输类型: P8700[1]=FEH(采用默认值: 立即接收)
  3. 修改映射: 设置映射参数 P8710[0]=6040 00_10H;
  4. 修改映射: 设置映射参数 P8710[1]=5800 00_10H;
  5. 修改映射: 设置映射参数 P8710[2]= 0H;
  6. 修改映射: 设置映射参数 P8710[3]= 0H;
  7. 将 PRDO1 设置为禁止修改映射: P8700[0]=202 H;

3.2 cnblog 一博主给的流程

7、【good】CANopen笔记2–PDO过程数据对象

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

03_过程数据对象(PDO)

PDO的映射配置流程如下

  1. 无效PDO; // PDO的COB-ID 最高位写1;
  2. 清除原有映射内容; // 对映射对象的子索引0x0写入0;
  3. 写入PDO映射内容; // 按照映射定义分别写入映射参数子索引;
  4. 写入该PDO映射对象总个数; // 将映射个数写到映射对象子索引0x00
  5. 有效该PDO; // PDO的COB-ID 最高位写1;// 修改为:最高位写0;
1.配置TPDO1
10x603 0x08       0x23 0x00 0x18 0x01 0x83 0x01 0x00 0x80 // 去使能TPDO1 
20x603 0x08       0x2F 0x00 0x18 0x02 0x01 0x00 0x00 0x00 // 1个有效数据,设置TPDO1的传输类型,SYNC 

30x603 0x08       0x2F 0x00 0x1A 0x00 0x00 0x00 0x00 0x00 //  对映射对象的子索引0x0写入0;清除原有映射内容
40x603 0x08       0x23 0x00 0x1A 0x01 0x10 0x00 0x41 0x60 //  写入映射对象1,0x60410010
50x603 0x08       0x23 0x00 0x1A 0x02 0x08 0x00 0x61 0x60 //  写入映射对象2,0x60610008
60x603 0x08       0x23 0x00 0x1A 0x03 0x20 0x00 0x6C 0x60 //  写入映射对象3,0x606C0020
70x603 0x08       0x2F 0x00 0x1A 0x00 0x03 0x00 0x00 0x00 //  映射对象的子索引0x0写入3,说明有3个映射对象
80x603 0x08       0x23 0x00 0x18 0x01 0x83 0x01 0x00 0x00 //  使能TPDO1

3.5 cariohu

CAN与CANOPEN

映射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

3.6 PDO配置流程(worthsen)

PDO 基本配置

在这里插入图片描述

参考

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

CANopen通信中,PDO映射参数的配置是实现高效数据传输的关键步骤。为了深入理解和掌握这一过程,建议参考《CANopen PDO:实时数据传输与高效通道》这本书。这本书详细介绍了PDO映射参数的设置方法以及如何利用这些参数来优化数据传输效率。 参考资源链接:[CANopen PDO:实时数据传输与高效通道](https://wenku.csdn.net/doc/6412b4d9be7fbd1778d410bc?spm=1055.2569.3001.10343) PDO映射参数的核心作用是定义数据在CAN报文中的具体位置,以及数据如何在生产者和消费者之间进行映射。配置PDO映射参数时,首先需要确定要传输的数据类型和大小,例如,传感器的读数、执行器的状态或控制命令。然后,根据CANopen协议的规定,选择合适的PDO索引(对象字典中的索引)来指定数据对象。 设置PDO映射参数涉及以下几个步骤: 1. 确定PDO数据长度:根据应用需求确定传输数据的字节数,保证它不超过8字节的限制。 2. 选择数据源和目标:确定哪个设备是数据的生产者,哪个设备是消费者,并为它们分配适当的PDO索引。 3. 设置COB-ID:为每个PDO分配一个唯一的COB-ID,这个标识符将用于标识CAN报文中的PDO数据。COB-ID的选择需要考虑网络上的其他通信,避免冲突。 4. 配置通信参数:设置PDO的通信参数,如传输类型(同步或异步)、禁用时间和定时时间,以满足实时性要求。 5. 映射数据对象:将应用程序中的数据对象映射PDO的数据字段中,确保生产者和消费者对于数据内容的理解一致。 通过以上步骤配置PDO映射参数后,数据传输将更加高效,因为PDO机制减少了协议控制信息,使得数据可以快速且准确地在设备之间传输。为了全面掌握PDO映射参数的配置技巧,并解决实际问题,建议继续深入学习《CANopen PDO:实时数据传输与高效通道》。这本书提供了丰富的案例和细节,帮助你从理论到实践深入理解PDO配置,并在项目中应用这些知识。 参考资源链接:[CANopen PDO:实时数据传输与高效通道](https://wenku.csdn.net/doc/6412b4d9be7fbd1778d410bc?spm=1055.2569.3001.10343)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

worthsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值