CANopen基础-PDO和SDO

概述

在CANopen协议中,作为通讯对象的过程数据对象PDO(Process Data Object),服务数据对象SDO(Service Data Object),用来传输应用信息和配置信息。
简单来说,PDO属于过程数据,即单向传输,无需接受节点回应CAN报文来确认,属于“生产消费”模型

SDO属于服务数据,有指定接受节点的地址(Node-ID),并且需要指定的接受节点回应CAN报文来确定已经接收,如果超时未确认,重新发送该报文,属于“服务器客户端”模型。

在这里插入图片描述
其中PDO和SDO的报文ID分为功能码和节点号(7位,最大为128)
在这里插入图片描述
CAN的帧ID在canopen中一般也称为COB-ID,COB-ID=Fuction-ID+Node-ID

PDO

CAN-ID 定义

作为一个节点,需要发送和接受。PDO 分为 TPDO(发送 PDO)和(接收 RPDO),发送和接收是以 CANopen 节点自身为参考。TPDO和RPDO分别有四个数据对象,每种数据对象就是一条CAN报文封装,数据长度被限制为 1~8 字节。

在 PDO 预定义中,人为规定了 TPDO 和 RPDO,规定了 Node-ID 在 PDO 中的位置,规定了 PDO 的编号
在这里插入图片描述
如果发送数据特别多,可以依次往后添加TPDO5,TPDO6等等,在对象字典可以手动配置添加。
在这里插入图片描述

传输形式:同步传输和异步传输

异步传输:由特定事件触发
触发方式有两种,第一种是由设备子协议中规定的特定事件来触发,例如,定时传输(定时器时间一道就触发传输),数据变化传输,第二种是通过发送与PDO的COB-ID相同的远程帧来触发。一般采用第一种。
同步传输:通过接受同步对象实现同步
通过一个同步报文让所有节点在同一时刻进行上传数据或者执行下达的应用指令。一般同步报文有NMT主机控制,也就是网络管理。
同步传输有可以分为周期传输(通过接受同步对象(SYNC)来实现,可以设置 1~240 个同步对象触发)和非周期传输(由远程帧预
触发或者由设备子协议中规定的对象特定事件预触发传送)。

通信参数

PDO 通信参数,定义了该设备所使用的 COB-ID、传输类型、定时周期等。 RPDO 通讯参数位于对象字典索引的 1400h to 15FFh, TPDO 通讯参数位于对象字典索引的 1800h to19FFh。 每条索引代表一个 PDO 的通信参数集,其中的子索引分别指向具体的各种参数。
在这里插入图片描述

对应PDO通讯参数可以在对象字典里配置,如图,每一个发送PDO都对应的有通信参数配置。
在这里插入图片描述

映射参数

它包含了一个对象字典中的对象列表,这些对象映射到相应的 PDO,其中包括数据的长度(单位,位),对于生产者和消费者都必须要知道这个映射参数,才能够正确的解释 PDO 内容。 就是将通信参数、应用数据和具体 CAN 报文中数据联系起来。
在这里插入图片描述

在程序中定义自己需传输的数据,通过TPDO配置映射参数,映射关系可以在对象字典里配置,包括每一个数据的字节大小,每一个字节在CAN数据帧的位置(数据帧的CAN-ID为唯一标识,对应在通讯参数里配置)
在这里插入图片描述

SDO

SDO主要用于对从节点的配置。(主从节点相对于发送和接受来说,通常 CANopen 从节点作为 SDO 服务器, CANopen 主节点
作为客户端,称为 CS 通讯)
服务确认是 SDO 的最大的特点,为每个消息都生成一个应答,确保数据传输的准确性。

通讯原则

发送方(客户端) 发送 CAN-ID 为 600h+Node-ID 的报文,
其中 Node-ID 为接收方(服务器) 的节点地址, 数据长度均为 8 字节;
接收方(服务器) 成功接收后, 回应 CAN-ID 为 580h+Node-ID 的报文。 这里的 Node-ID依然是接收方(服务器) 的节点地址, 数据长度均为 8 字节。
在这里插入图片描述

使用CAN收发仪器测试:
在这里插入图片描述

快速SDO

最常用最常见的 SDO 协议是快速 SDO, 所谓快速, 就是 1 次来回就搞定。 前提是读取和写入的值不能大于 32 位,即一次可以携带4字节数据
在这里插入图片描述
通过快速 SDO, 可以直接对 CANopen 节点的对象字典中的值进行读取和修改, 所以在做参数配置之外, 也经常作为关键性数据传输之用。

普通 SDO 协议

当需要传输的值超过 32 位时, 就不能使用快速 SDO 传输。 必须使用普通 SDO 进行分帧传输。 在应用中较少用到, 一般用于 CANopen 节点的程序固件升级, 或者做网关转换MVB 总线之类数据最大可达 256 位的应用。
普通SDO的CAN帧ID与快速SDO相同, 依然发送方(客户端)发送的报文CAN-ID
为 600h+Node-ID, 接收方(服务器) 成功接收后, 回应 CAN-ID 为 580h+Node-ID 的报文。
在这里插入图片描述在这里插入图片描述

注:参考资料:广州致远电子股份有限公司CANopen 轻松入门

### 回答1: CANopen协议中,PDO(Process Data Object)和SDO(Service Data Object)是用来传输数据的两种不同的实现方式。 PDO是一种周期性传输数据的方式,它通过预定义的通信对象(Communication Object)在CAN总线上进行传输。PDO可以分为两种类型:从设备(Slave)发送PDO和主设备(Master)接收PDO。从设备发送PDO时,它会将数据填充到PDO对象中,并将PDO对象发送到CAN总线上;而主设备接收PDO时,会从CAN总线上接收到PDO对象,并将其中的数据读取出来。PDO的传输是按照预定义的通信参数进行的,例如更新周期、传输类型等。 SDO是一种点对点的数据传输方式,它通过从CANopen节点(Slave)发出服务请求,然后由另一个节点(Master)进行响应的方式进行数据交换。SDO的数据传输可以分为两种类型:上传(Upload)和下载(Download)。上传指的是从被请求的节点读取数据并将其发送给请求节点,而下载则是将数据写入到被请求的节点中。SDO的传输是基于CAN帧的,其中包含了服务请求和响应的数据。 需要注意的是,PDOSDO的使用方式有所不同。PDO是基于一种预定义的、周期性的数据传输方式,适用于实时性要求较高的应用场景;而SDO是一种点对点的数据传输方式,适用于对实时性要求相对较低的数据交换场景。除了数据传输方式的不同,PDOSDO还在数据对象的管理、通信参数的处理等方面也有差异,因此在使用CANopen协议时需要根据具体的应用需求选择合适的实现方式。 ### 回答2: CANopen协议中的PDO(过程数据对象)和SDO(服务数据对象)是用于在CAN总线上传输数据的两种不同方式。 PDO是一种高效的数据传输方式,用于实时数据的传输。它使用固定的、周期性的通信方式,数据可以直接从发送方节点传输到接收方节点,不需要复杂的请求和确认过程。PDO通常用于实时控制应用,例如传感器数据的采集和执行器的控制。PDO的实现方式通常包括以下几个步骤: 1. 配置PDO通信参数:发送方节点和接收方节点需要事先定义好PDO的通信参数,例如数据长度、通信对象索引等。 2. 制定PDO映射关系:发送方节点需要将需要传输的数据映射到PDO通信对象中,并进行配置,使得数据能够被正确发送到接收方节点。 3. PDO通信过程:发送方节点按照事先设定的周期性发送PDO数据帧,接收方节点在接收到PDO数据帧后解析其中的数据,并进行相应的处理。 SDO是一种灵活的数据传输方式,用于在CAN总线上传输配置和诊断数据。它使用请求和响应的通信方式,由主站节点向被配置的从站节点发送请求,从站节点接收到请求后根据请求进行相应的操作,并将结果返回给主站节点。SDO通常用于配置设备参数、读取设备状态和进行故障诊断等任务。SDO的实现方式通常包括以下几个步骤: 1. 配置SDO通信参数:主站节点和从站节点需要事先定义好SDO的通信参数,例如源地址、目标地址等。 2. 发送SDO请求:主站节点向从站节点发送SDO请求帧,包括请求的命令码、对象字典索引和子索引等。 3. 响应SDO请求:从站节点接收到SDO请求后,根据请求进行相应的操作,例如读取或写入对象字典的数据,并将结果封装在SDO响应帧中返回给主站节点。 4. 处理SDO响应:主站节点接收到SDO响应后解析其中的数据,并进行相应的处理,例如读取返回的数据或判断操作是否成功。 总结起来,PDOSDO是CANopen协议中两种不同的数据传输方式,PDO用于实时数据的传输,SDO用于配置和诊断数据的传输。两者的实现方式不同,PDO是固定周期性发送数据,而SDO是通过请求和响应的方式进行数据交换。 ### 回答3: CANopen协议中的PDO(Process Data Object)和SDO(Service Data Object)是用于在CAN总线上进行数据通信的两种实现方式。 首先,PDO是一种基于事件驱动的数据传输方式。在CANopen网络中,每个设备都有一组PDO对象,用于传输实时数据。PDO由对象字典中特定的对象索引标识,通过CAN总线发送的数据。发送PDO的触发是由事件驱动的,例如定时触发、接收到特定的SYNC报文或设备状态改变。接收PDO的设备会根据对象索引标识将数据写入到对应的对象中。PDO的优点是实时性好,适用于需要高速数据传输的应用场景。 其次,SDO是一种基于请求-响应的数据传输方式。SDO用于在CANopen网络中配置、管理和读写对象字典中的数据。SDO分为两种类型:客户端和服务器。客户端发送SDO请求,请求的数据操作可以是读、写或只读。服务器接收请求并根据请求进行相应的数据操作,并通过响应报文将结果返回给客户端。SDO具有数据的可靠性和完整性,适用于数据配置和管理等较为复杂的场景。 综上所述,PDOSDO是CANopen协议中用于数据通信的两种实现方式。PDO通过事件驱动的方式进行实时数据传输,适合高速数据传输的应用。而SDO通过请求-响应的方式进行配置、管理和读写对象字典中的数据,适用于数据配置和管理等复杂场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值