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

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是指通过CAN总线进行通信的一个协议。在CANOPEN中,PDO(Process Data Object)是一种用于实时传输数据的对象。PDO的传输类型可以通过子索引2的Transmission_type来定义,范围为0~255,常用的有两种: 1. 255表示当发生特定事件时发送PDO,比如收到远程请求帧或PDO内容发生改变等。 2. 1~240表示在收到相应数量的同步帧后发送PDO。 在CANOPEN中,PDO映射参数是很重要的一部分。通过设置PDO映射参数,可以将具体的数据对象映射PDO中。在PDO中,通过函数getODentry()可以获取对象字典的值,并将其存储到process_var数组中。然后,通过函数PDOmGR()、sendPDO()和canSend(),可以将process_var中的内容发送到CAN总线上。 总结来说,CANOPEN原理PDO是通过CAN总线进行实时数据传输的一种协议。可以通过设置PDO的传输类型和映射参数来实现数据的传输和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [CANopen原理--PDO](https://blog.csdn.net/ethercat_i7/article/details/81357376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [CANOPEN原理--PDO](https://blog.csdn.net/weixin_44161807/article/details/125204618)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

worthsen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值