PDO与SDO的报文格式的理解

本文总结了SDO(服务数据对象)与PDO(过程数据对象)在CANOpen网络中的异同,强调PDO的无请求响应特性使其适合实时监控和控制,而SDO则用于更精确的数据采集,涉及报文结构和数据传输细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于SDO与PDO的一些总结与理解。
其实SDO与PDO本质基本相同,只是PDO不需要请求响应,针对canid可以直接传输数据,不需要索引与子索引,故可以传输8字节的数据,而SDO需要请求响应,需要索引与子索引作为触发条件,占用4个字节位置,故只能传输4字节的数据。
在这里插入图片描述

                             预定义标识符图表

PDO报文

  1. 基于事件触发,触发事件后数据立即传输,高速低延迟,不需要额外的请求和响应,适用于需要实时监控与控制的场景。
  2. 报文格式
COB_IDByte0Byte1Byte2
0x280+Node_ID输入数据量个数16位模拟量输入16位模拟量输入
  • COB_ID:通讯对象标识符,根据CANOpen网络中使用的预定义标识符分配表,可以看出COB_ID链接到通讯服务(NMT、SYNC、RPDO1、TPDO1,PSDO,TSDO等),即COB_ID详细说明了哪个节点使用了什么服务以及区别发送/接受数据。

  • COB_ID共有11位,前4位为功能代码(可查表获得),后7位包含节点ID(支持的节点数量可查表,每个PDO与SDO的节点ID范围是0000001-1111111)。

  • PDO消息可以包含8个完整字节的数据,并且可以在单个帧内包含多个对象参数值,而在PDO服务中,可以需要至少4个SDO帧才可以完成一个帧(2个请求2个响应)。

SDO报文

1.CANOpen节点通过CAN网络读取/编辑另一个节点的对象字典的值,采用请求响应机制进行数据读写。
2. 如果数据的变化较小,且对数据采集的精度要求较高,也可以采用SDO进行数据采集。
3.报文格式

COB_IDDLCByte0Byte1-3Byte4-7
0x600+Node_ID(发) 0x580+Node_ID(回)8命令字Byte1-2为主索引 Byte3为子索引具体数据
  • COB_ID可以查表获得

  • 命令字Byte0共8位,每一位的含义如下:

    1) 其中bit7-bit5称为CCS(客户端命令说明符),表明输出类型(1为写入,2为读取);
    2) bit4可默认为0;
    3) bit3与bit2:仅当bit1=1和bit0=1时有效,否则为0。有效表示数据中不包含数据的字节数,数据是8位(1字节),16位、32位,对应的bit3,bit2的取值为11,10,00
    d) bit1:1 快速传输;bit0:1 指定数据大小

  1. 数据为8、16、24、32位分别对应的Date Byte0的取值如下:
数据大小1字节2字节3字节4字节
写入时命令字2F2B2723
  1. 数据中先写低8位,最后写高8位
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值