You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CANopen TPDO读写指令:PDO报文解码及温度读取载荷构造

PDO接收报文载荷解码流程
  • 先匹配COB-ID确定PDO通道:CANopen预定义连接集中,传感器主动发往主站的TPDO(过程发送PDO)默认COB-ID规则为:TPDO1=0x180+传感器节点ID、TPDO2=0x280+节点ID、TPDO3=0x380+节点ID、TPDO4=0x480+节点ID,把你抓到的报文ID和手册里的PDO定义做比对,先确定这批报文对应哪个TPDO通道。
  • 查对应TPDO的映射表:翻手册里该通道对应的映射参数(对象字典索引0x1A000x1A03分别对应TPDO1TPDO4),每个映射条目会明确标注该段载荷对应的对象字典索引、子索引、数据位长度。比如映射条目0x60000110代表该段载荷占16位(最后两位0x10是位长度,即2字节),对应0x6000索引下子索引0x01的温度原始值。
  • 按小端序解析实际值:CANopen统一采用小端字节序(低字节在前,高字节在后),按映射表的顺序逐段切分载荷拼接数值,再结合手册给出的分辨率、偏移量换算物理量。举个例子:如果某TPDO载荷前2字节为0x34 0x02,拼接后原始值为0x0234(十进制564),若手册标注温度分辨率为0.1℃/LSB、偏移量为0,则实际温度为564*0.1=56.4℃。
  • 如果单个PDO载荷映射了多个参数,严格按映射表给出的位偏移切分,不要错位。
构造读取温度的PDO发送载荷方法

PDO是无额外协议开销的实时过程数据帧,不需要像SDO那样附加请求/应答字段,按映射规则直接拼接载荷即可,操作步骤:

  • 确定对应RPDO通道:主站发往传感器的是RPDO(过程接收PDO),默认COB-ID规则为RPDO1=0x200+节点ID、RPDO2=0x300+节点ID、RPDO3=0x400+节点ID、RPDO4=0x500+节点ID,从手册里找到和温度采样触发相关的RPDO通道,确认其COB-ID。
  • 按映射表拼接载荷:对照该RPDO对应的映射参数(对象字典索引0x16000x1603对应RPDO1RPDO4),按顺序填入每个参数要求的数值即可。举个手册定义的典型场景:

    RPDO1映射配置:
    偏移0位,长度8位:控制字(0x6200:01),写入0x01为触发单次温度采样
    偏移8位,长度8位:通道选择(0x6200:02),写入0x00为选择板载温度通道
    对应构造的CAN报文帧ID为该RPDO的COB-ID,载荷直接拼接为01 00即可,发送后传感器会按通信参数配置,通过对应TPDO返回温度数据。

  • 前置检查:如果传感器的PDO不是出厂预配置状态,需要先通过SDO配置PDO映射关系、通信类型(轮询/事件触发/同步触发);如果是同步触发模式,需要先发送COB-ID为0x080的同步帧(空载荷),才会触发传感器回传温度TPDO。

内容的提问来源于stack exchange,提问作者6ece9a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:09:12