工业远程I/O模块 CANopen 通讯

1.对象字典OD

对象字典是每个CANopen设备必须具有的功能,它包含了设备所有可以被访问的参数,客户端使用索引(Index)和子索引(Sub-index)来读写对象字典里的参数。

对象字典主要用来设定设备组态及进行非即时的通讯。每个对象采用16位索引的方式来寻址,为了寻访数据结构中的单个元素,又定义了8位的子索引。同时对象字典也对数据类型做出了定义。

索引(hex) 对 象
0000 保留
0001-001F 基本数据类型
0020-003F 复杂数据类型
0040-005F 制造商规定的数据类型
0060-007F 设备子协议的基本数据类型
0080-009F 设备子协议的复杂数据类型
00A0-0FFF 保留
1000-1FFF 通信子协议区域
2000-5FFF 制造商特定子协议区域
6000-9FFF 标准设备子协议区域
A000-BFFF 标准接口子协议区域
C000-FFFF 保留

CANopen网络中每个节点都有一个对象字典。对象字典包含了描述这个设备和它的网络行为的所有参数。一个节点的对象字典是在电子数据文档(EDS:Electronic Data Sheet)中描述或者记录在纸上。节点本身只需要能够提供对象字典中必需的对象,以及其它可选择的、构成节点部分可配置功能的对象。

2.CANopen通讯

CANopen 的物理层 CANbus 每次传送的数据量不大,其中包括 11 位元的 ID、远端传输请求(RTR)位元及大小不超过8字节的数据。CANopen 将 CANbus 的 11 位元 ID 称为通讯对象 ID (COB-ID)。当传输数据发生冲突时,CANbus 的仲裁机制会使 COB-ID 最小的讯息继续传送,不用等待或重传。不同通讯对象对8字节数据的使用及各字节代表的意义不同。

不同通讯对象对8字节数据的使用及各字节代表的意义不同,以下是一个标准的 CANopen页框:

功能码 节点ID RTR 数据长度 数据
长度 4位元 7位元 1位元 4位元 0-8位字节

CANopen通讯模型主要定义3种通讯协议,分别为NMT协定,服务数据对象SDO协定,过程数据对象PDO协定。

NMT协定

网络管理讯息NM遵循了主站/从站的架构进行NMT通讯。在这架构之下只有一个主站,而此主站可以搭配多个从站。所有的CANopen节点都有自己专属的NMT状态,而主站可以藉由NMT的讯息去控制从站的状态。

NMT通讯数据主要用于对CANopen网络的管理,NMT在数据字节中只使用了两字节,如图:

功能码 节点ID RTR 数据长度 标识符 字节0 字节1
长度 4位元 7位元 1位元 4位元 0x000 命令字 从节点ID

服务数据对象SDO

服务数据对象SDO用来读写CANopen设备的对象字典。提供对象字典的节点称为SDO server,存取对象字典的节点称为SDO client。SDO 通讯一定由SDO client 开始,并提供初始化相关的参数。

在CANopen的术语中,上传是指由 SDO server 中读取数据,而下载是指设定 SDO server 的数据。

SDO通讯数据主要用于非时间关键数据,比如通讯参数。SDO在数据字节的使用:

功能码 节点ID RTR 数据长度 字节0 字节1 字节2 字节3-7
长度 4位元 7位元 1位元 4位元 SDO命令 索引 子索引 数据

过程数据对象PDO

PDO用于传输实时数据,从一个生产者到一个或多个消费者。可用来在许多节点之间交换即时的数据。

PDO分为两种:传送用的TPDO及接收用的RPDO。一个节点的TPDO是将资料由此节点传输到其他节点,而RPDO则是接收由其他节点传输的资料。本产品一个节点分别有4个TPDO及4个RPDO。

每个 PDO 在对象字典中由两个对象描述:通信参数和映射参数。PDO 通信参数指明使用哪个 COB-ID,传输类型,禁用时间和定时时间;PDO 映射参数用于设定 PDO报文中的数据的映射关系,确定要传输的数据在 CAN 报文数据域中的定位。该参数允许 PDO 的生产者和消费者知道正在传输什么信息,而不需要在 CAN 报文中增加额外的协议控制信息,使传输的效率达到最高。一个 PDO 最多可以映射 64 个对象。

PDO在数据字节的使用:

功能码 节点ID RTR 数据长度 数据
长度 4位元 7位元 1位元 4位元 过程数据对象(PDO)的8个字节全部用来传输实时数据。

猜你喜欢

转载自blog.csdn.net/qq_27395975/article/details/128494850