CANOpen轻松入门之过程数据对象(PDO)和服务数据对象(SDO)

CANOpen 轻松入门之过程数据对象(PDO)和服务数

据对象(SDO)

摘要:CANopen 是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协议,对其协议的学习很多人都觉得有难度,看来看去都 觉得是云里来雾里去的,本文将让 CANOpne 协议不再那么神秘,带你跨过 CANOpen 学习道路的第一道门槛。

应用 CANopen 时,需要传递的配置信息和应用信息都放在过程数据对 象 PDO(Process data object)和服务数据对象 SDO (Service data object)里面。这些 对象就和市场上卖水果的箩筐,大小是一样的,只是装的东西(应用数据)不一 样,如 PDO 和 SDO 的通讯区别在于,PDO 属于过程数据,即单向传输,无需 接收节点回应 CAN 报文来确认,从通讯术语上来说是属于“生产消费”模型。 如而 SDO 属于服务数据,有指定被接收节点的地址(Node-ID),并且需要指定 的接收节点回应 CAN 报文来确认已经接收,如果超时没有确认,则发送节点 将会重新发送原报文。这种通讯方式属于常见的“服务器客户端”的通信模型, 即我们通常所说的轮询式。如对于 PDO 和 SDO 的报文 ID 分配,为了减少网 络的组态工作量,CANopen 预定义了强制性的缺省标识符(CAN-ID)分配表, 该分配表是基于 11 位 CAN-ID 的标准帧格式。将其划分为 4 位的功能码 (Function-ID)和 7 位的节点号(Node-ID)。如在 CANopen 里也通常把

CAN-ID

称为 COB-ID(通信对象编号)。所以我们可以分清楚两个易于混淆的名称: COB-ID:Communication Object Identifier,即 CANopen 中对某种通讯对 象的报文帧 ID,即 CAN 报文的 11 位 ID。代表了一种通讯含义。

Node-ID:节点 ID 号,即 CANopen 网络中的节点地址,CANopen 规定 了逻辑上最大 128 个节点,所以 Node-ID 最大为 128(7 位)。

COB-ID 和 Node-ID 无必然联系,但在过程数据对象(PDO)和服务数据对 象(SDO)中,COB-ID 中包含了 Node-ID。

由于需要区分每个 CANopen 节点的输入和输出,所以 PDO 分为 TPDO(发送 PDO)和(接收 RPDO),发送和接收是以 CANopen 从站节点为参考 (如果 CAN 主站就相反)。TPDO 和 RPDO 分别有 4 个数据对象(如 TPDO 有 TPDO1、TPDO2、TPDO3、TPDO4;RPDO 有

RPDO1、RPDO2、RPDO3、RPDO4),每种数据对象就是 1 条 CAN 报文封装, 如表 1 所示,这些都是数据收发的容器,就像而 SDO 就相对比较简单固定, 发起通讯的“问”SDO 的 CAN 帧 ID 就是 600h +node-ID,这里的 Node-ID 是被 问的节点地址,而被问的节点应“答”SDO 的 CAN 帧 ID 就是 580h +node-ID。 一般在 CANopen 网络中,只有 NMT 主机能发起 SDO 通讯,进行节点参数配 置或者关键性参数的传递。当然从节点也可以对其他从节点发起 SDO 通讯。 如表 1 所示。为 CANopen 预定义报文的 PDO 报文和 SDO 报文中的 ID 分类。使用者务必牢记!

表 1 PDO 与 SDO 的 CAN-ID 定义

XGate-COP10 嵌入式 CANOPEN 从站模块是 ZLG 致远电子开发的一款 拥有自主知识产权的 CANopen 从站通信模块。内部已经集成了 CANopen 从站 协议栈代码,使用简单的串口通信协议即可实现与 XGate-COP10 的通信,并提 供串口通信协议标准 C 文件,使现有的设备以最快的速度拥有 CANopen 通信 能力。

tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4