CANopen通信----PDO与SDO

转载地址:https://blog.csdn.net/weixin_43956732/article/details/106606670

服务数据对象SDO

服务数据对象 (SDO) 通过对象索引和子索引与对象字典建立联系, 通过SDO 可以读取对象字典中的对象内容, 或者在允许的情况下修改对象数据。

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 传输报文格式如下表:
在这里插入图片描述
其中, 命令代码指明了该段 SDO 的传输类型和传输数据长度, 索引和子索引是对象在列表的位置, 数据是该对象的数值。

SDO 加速写传输报文

对于不高于 4 个字节的读写, 采用加速 SDO 传输。 按照读写方式及内容数据长度的不一致,传输报文各不相同。加速 SDO 写报文如下表:
在这里插入图片描述
符号- 表示数据不予考虑,写数据时建议写 0。

SDO 加速读传输报文

SDO 读操作不高于 4 个字节的对象报文时,采用加速方式。 加速 SDO 读报文如下表。
在这里插入图片描述

SDO分段读传输报文

当数据大于4个字节时,采用分段读来执行操作,起始发送帧报文结构与加速传输报文保持一致。
起始报文结构如下
在这里插入图片描述
传输过程由命令大妈触发位(bit 6)交互发送0和1,必须保持此规律从站才给予响应。
过程报文如下
在这里插入图片描述
分段传输结束帧包含有末尾帧标志和数据长度,报文如下
在这里插入图片描述

过程数据对象PDO

过程数据对象 (PDO) 用来传输实时的数据,是 CANopen 中最主要的数据传输方式。由于 PDO 的传输不需要应答,且 PDO 的长度可以小于 8 个字节,因此传输速度快。
PDO 的映射配置遵循流程如下
在这里插入图片描述

PDO 传输框架

PDO 的传输遵循的是生产者消费者模型, 即 CAN 总线网络中生产者产生的 TPDO 可根据 COB-ID 由网络上一个或者多个消费者 RPDO 接收,传输模型如下图所示
在这里插入图片描述

PDO 对象

按照接收与发送的不同,PDO 可分为 RPDO 和 TPDO。 PDO 由通信参数和映射参数共同决定最终传输的方式及内容。 本伺服驱动器使用了 4 个 RPDO 和 4 个 TPDO 来实现 PDO 的传输,相关对象列表如下
在这里插入图片描述

PDO 通信参数

PDO 的 CAN 标识符

PDO 的 CAN 标识符即 PDO 的 COB-ID, 包含控制位和标识数据, 确定该PDO 的总线优先级。COB-ID 位于通信参数 (RPDO:1400h ~ 1403h,TPDO:1800h ~ 1803h)的子索引 01 上,最高位决定该 PDO 是否有效。
在这里插入图片描述

PDO 的传输类型

PDO 的传输类型位于通信参数 (RPDO:1400h ~ 1403h,TPDO:1800h ~ 1803h)的子索引 02 上,决定该 PDO 遵循何种传输方式

在这里插入图片描述
通信参数(RPDO:1400h1403h,TPDO:1800h1803h) 子索引 02 不同的数值代表不同的传输类型,定义了触发 TPDO 传输或处理收到的 RPDO 的方法,具体对应关系如表所示
在这里插入图片描述● 当 TPDO 的传输类型为 0 时,如果映射数据发生改变,且接收到一个同步帧,则发送该 TPDO;
● 当 TPDO 的传输类型为 1~240 时,接收到相应个数的同步帧时,发送该 TPDO。
● 当 TPDO 的传输类型是 254 或 255 时,映射数据发生改变或者事件计时器到达则发送该 TPDO。
● 当 RPDO 的传输类型为 0~240 时,只要接收到一个同步帧则将该 RPDO 最新的数据更新到应用;当 RPDO 的传输类型为 254 或者 255 时,将接收到的数据直接更新到应用。

禁止时间

针对 TPDO 设置了禁止时间,存放在通信参数 (1800h~1803h) 的子索引03 上,防止 CAN 网络被优先级较高的 PDO 持续占有。该参数的单位是 100us,设置数值后,同一个 TPDO 传输间隔减不得小于该参数对应的时间。
举例:
TPDO2 的禁止时间为 300, 则 TPDO 的传输间隔不会小于 30ms。

事件计时器

针对异步传输(传输类型为 254 或 255)的 TPDO,定义事件计时器,位于通信参数(1800h ~ 1803h)的子索引 05 上。事件计时器也可以看做是一种触发事件,它也会触发相应的 TPDO 传输。如果在计时器运行周期内出现了数据改变等其它事件,TPDO 也会触发,且事件计数器会被立即复位。

PDO 映射参数

PDO 映射参数包含指向 PDO 需要发送或者接收到的 PDO 对应的过程数据的指针,包括索引、子索引及映射对象长度。每个 PDO 数据长度最多可达 8 个字节,可同时映射一个或者多个对象。其中子索引 0 记录该 PDO 具体映射的对象个数,子索引 1~8 则是映射内容。映射参数内容定义如下
在这里插入图片描述
索引和子索引共同决定对象在对象字典中的位置,对象长度指明该对象的具体位长,用十六进制表示,即
在这里插入图片描述

  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值