CANopen总线协议之过程数据对象(PDO)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CANopen总线协议之过程数据对象(PDO)相关的知识,希望对你有一定的参考价值。

参考技术A 过程数据表示可以随时间变化的数据,例如节点控制器的输入(即传感器)和输出(即电动机驱动器)。过程数据也存储在对象字典中。但是,由于SDO通信一次仅允许访问一个对象字典索引,因此访问不断变化的数据可能会有很多开销。另外,CANopen协议要求节点必须能够发送自己的数据,而无需被CANopen主站轮询。因此,使用一种称为“ 过程数据对象”(PDO)的通信方法来传输过程数据的方法也有所不同。了解更多 CANopen总线协议

PDO有两种类型:传输PDO(TPDO)和接收PDO(RPDO)。TPDO是来自节点(已产生)的数据,而RPDO是到达节点(已消耗)的数据。另外,PDO有两种类型的参数:配置参数和映射参数。对象词典中保留给PDO配置和映射信息的部分是索引1400h-1BFFh。

配置参数指定COB-ID,传输类型,禁止时间(仅TPDO)和事件计时器,这将在本节中进行说明。有多种方法可以启动PDO传输。这些方法包括事件驱动,时间驱动,单独轮询和同步轮询。传输类型在PDO的配置参数中指定。在事件驱动的传输中,当其中的过程数据发生更改时,将启动PDO传输。在时间驱动的传输中,PDO传输以固定的时间间隔发生。在单个轮询中,PDO传输是使用一种不常用的称为远程请求的机制启动的。在同步轮询中,使用SYNC信号启动PDO传输。同步信号经常用作全局计时器。例如,如果CANopen主站发出SYNC消息,则可以配置多个节点以查看并响应该SYNC。这样,主站就可以同时获取多个过程对象的“快照”。

事件驱动的PDO传输示例

映射参数指定由单个PDO消息发送的对象字典值。例如,单个PDO消息可能包含来自对象索引2001h,2003h和2005h的数据。

TPDO对象字典示例

CANopen学习

1.CANopen协议总述

CANopen 是一个基于 CAN 串行总线的网络传输系统的应用层协议,遵循 ISO/OSI 标准模型。

网络中不同的设备通过对象字典或者对象来相互交换数据,其中,主节点可以通过过程数据对象 (PDO) 或者服务数据对象 (SDO) 来获取或者修改其它节点对象字典列表中的数据。

CANopen协议主要内容分为三大块,如下图CANopen 的设备模型。

技术图片

 

推荐书籍:周立功的《CANopen轻松入门》,建议详细拜读,可以带大家入门。

 

2.通讯接口

入门之后若要深入理解,我建议参看官网的《CANOpen CiA 301》标准这本文档

CiA(CAN in Automation) 301也是大家所说的DS301,为CANopen 基础协议。

我们还常看到类似CiA 401 402这些协议,其实它们是在CiA 301 之上,对各个行业不断推出设备子协议。

所谓的子协议,就是针对不同行业的应用对象,对 CANopen 内部的数据含义进行重新定义,或者添加新的控制逻辑。

按照CANOpen CiA 301协议文档,提取了通信接口的主要内容,如下图:

技术图片

 

 

2.1 网络管理(NMT),包括 Boot-up(上线) 消息, Heartbeat(心跳) 协议及 NMT 消息,基于主从通信模式,

NMT 用于管理和监控网络中的各个节点,主要实现三种功能:节点状态控制、错误控制和节点启动。

  CANOpen网络一般是一个主站,多个从站的局域网络;

  NMT节点具有6种状态:初始化、应用层复位、通讯复位、预操作状态、操作状态、停止状态。可以自己切换状态,也可主站切换状态;

  任何一个 CANopen 从站上线后发出节点上线报文(boot-up)。

 

2.2 过程数据对象 PDO

每个 CANopen 设备包含 8 个缺省的 PDO 通道, 4 个发送 PDO 通道和 4 个接收 PDO 通道。

  PDO用来传输实时数据,包括接收 PDO(RPDO) 和发送 PDO(TPDO),数据从一个创建者传到一个或多个接收者,属于“生产消费”模型,数据传送限制在 1 到 8 个字节。

  COB-ID( CAN Object Identifier,CANID是其一部分,NodeID是CANID的低7位) 定义只是预定义。

  PDO 的两种传输方式:同步传输和异步传输,由该 PDO 对应的通信参数决定。

  PDO 的通信参数可通过对象字典工具配置。

  PDO 消息的内容是预定义的,由该 PDO 对应的映射参数决定。PDO 的映射参数是一个相对难理解的参数,请结合《CANopen 轻松入门》图文理解。

 

2.3 服务数据对象 SDO

包括接收 SDO(R-SDO) 和发送 SDO(T-SDO)。

通过使用索引和子索引, SDO 使客户机能够访问设备对象字典中的项。

SDO 通过 CAL 中多元域的 CMS 对象来实现,允许传送任何长度的数据,当数据超过 4 个字节时分拆成几个报文。

协议是确认服务类型,为每个消息生成一个应答。 SDO 请求和应答报文总是包含 8 个字节。

  SDO为请求应答方式;

  发送方(客户端)、接收方(服务器) ;

  通常从节点为 SDO 服务器,主节点为客户端;

  两种协议:快速、普通 SDO 协议;

       CS命令符含义需熟记(查表);

 

2.4 特殊协议

2.4.1.常见的就是罗列出来的3种:

    同步协议,包含同步对象,同步对象是由 CANopen 主站周期性地广播到 CAN 总线的报文,用来实现基本的网络时钟信号,

 每个设备可以根据自己的配置,决定是否使用该事件来跟其它网络设备进行同步通信。

    时间戳协议。

    紧急报文协议,设备内部通信故障或者应用故障错误时发送的报文。

2.4.2.特殊协议CAN-ID定义(查表);

2.4.3.紧急报文错误代码分类及含义;

 

3.对象字典

CANopen设备最重要的一个部分就是对象字典。对象字典本质上是一种被预先安排的对象序列,可通过网络访问。字典里面的每一对象均可使用一个16-bit主索引和8-bit子索引寻址到。

对象字典下面主要包含:数据类型、通信对象、应用对象。

技术图片

 

 

技术图片

 

 

3.1 通信子协议区,如上图1000h 到 1FFFh这个区域。也就是通信接口(或通信对象)协议区。

技术图片

 

技术图片

 

技术图片

 

 

技术图片

 

 

关于创建对象字典,可以使用Canfestival工具,详见:http://www.elecfans.com/d/1153555.html

 

以上是关于CANopen总线协议之过程数据对象(PDO)的主要内容,如果未能解决你的问题,请参考以下文章

CANopen学习

canopen总线是啥?

CAN与CANOpen

一文搞懂canopen通讯网络结构是如何建立的

施耐德canopen通讯

通信教程 | CAN总线协议基础原理