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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值