[CANopen]理清PDO映射

CANopen中发送/接收的数据称之为过程数据(PDO)。这里以发送为例,理清其中的映射关系。

配置

发送使用TPDOx,可以使用TPDOx如下:

项目通讯参数-字典Index映射参数-字典Index
TPDO10x18000x1A00
TPDO20x18010x1A01
TPDO30x18020x1A02
TPDO40x18030x1A03

使用首先就得配置TPDOx,其中通讯参数决定“怎么发送数据”,其定义及其作用如下:

typedef struct{
               UNSIGNED8      maxSubIndex;/*子索引数量=6*/                                
               UNSIGNED32     COB_IDUsedByTPDO;/*其实是Function Code(COB-ID = Funcode+NodeID)*/  
               UNSIGNED8      transmissionType;/*发送类型:SYNC触发(同步)、周期发送(异步)、远程请求、特定*/  
               UNSIGNED16     inhibitTime;/*X*100us 间隔时间;0-禁止功能*/  
               UNSIGNED8      compatibilityEntry;/*not used*/  
               UNSIGNED16     eventTimer;/*X*1ms 周期发送间隔;0-禁止功能*/  
               UNSIGNED8      SYNCStartValue;/*SYNC报文起始值*/  
               }OD_TPDOCommunicationParameter_t;

映射参数决定了“发送什么数据”,其定义及其作用如下:

typedef struct{
               UNSIGNED8      numberOfMappedObjects;/*实际使用几个映射*/  
               UNSIGNED32     mappedObject1;
               UNSIGNED32     mappedObject2;
               UNSIGNED32     mappedObject3;
               UNSIGNED32     mappedObject4;
               UNSIGNED32     mappedObject5;
               UNSIGNED32     mappedObject6;
               UNSIGNED32     mappedObject7;
               UNSIGNED32     mappedObject8;
               } OD_TPDOMappingParameter_t;

举例

TPDO1,对通讯参数Index=0x1800,映射参数Index=0x1A00进行配置:
在这里插入图片描述
“怎么发送数据”:发送的COD-ID =0x180+NodeID;采用周期发送(异步)的方式,周期为32ms。
在这里插入图片描述
“发送什么数据”:字典Index为0x6000,subIndex为0,数据长度为0x20(32)bits/4字节的位置上的数据。再加上字典Index为0x6100,subIndex为0,数据长度为0x20(32)bits/4字节的位置上的数据。刚好8字节填满了整个数据帧。

  • 11
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值