CANopen 协议准则
CANopen 网络简介
CANopen 是基于串行总线 Controller Area Network (CAN) 的网络系统。CANopen 通讯配置文件 (CiA DS-301) 支持直接访问设备参数和对时间要求较高的过程数据通讯。
LTMR 控制器的 CANopen 设备配置文件是制造商特定的配置文件。其定义基本设备功能的标准,同时为附加的供应商特定设备功能提供了大量范围。
CANopen 通过以组织和(如果必要)确定的方式允许在节点之间进行直接的对等数据交换来使用 CAN 的完整功能。
CANopen 协议
CANopen 协议基于 CAN 2.B passive 规范(以 11 位编码的标识符)。
LTMR CANopen 控制器接口符合 CANopen 规格 (DS301 V4.02)。
这些控制器在 EDS(电子数据表)文件中进行了说明,此类文件内嵌于配置工具中。
CANopen 消息帧
下面对标准 CANopen 消息帧进行了介绍:
SOF |
COB-ID |
RTR |
CTRL |
数据段 |
CRC |
ACK |
EOF |
---|---|---|---|---|---|---|---|
1 位 |
11 位 |
1 位 |
5 位 |
0-8 字节 |
16 位 |
2 位 |
7 位 |
SOF |
帧开始 |
COB-ID |
CAN 消息标识字段,由功能码(4 位)和模块 ID(7 位)组成。 功能码用于确定对象的优先级。从而允许在网络管理器和工作站之间进行通讯。功能码由设备配置文件中的对象词典确定。广播由模块 ID 零加以指示。 |
RTR |
远程传输请求 |
CTRL |
控制字段(即,数据长度) |
CRC |
循环冗余校验 |
ACK |
确认 |
OEF |
帧结束符 |
CANopen 服务
通过 CAN 网络传输的 CANopen 通讯对象由服务加以描述:
-
网络管理
开始总线、参数设置、监控。
-
过程数据的高速传输
用于实时控制命令的 PDO(过程数据对象)。
-
服务数据的低速传输。
用于配置、设置和诊断的 SDO(服务数据对象)。
网络管理 (NMT)
CANopen 网络管理是面向节点的,遵循客户端/服务器结构。其要求网络中具有一个设备,用于实现 NMT 客户端功能。其他节点是 NMT 服务器。
(1) |
加电时,设备进入初始化状态。 |
(2) |
一旦完成初始化,即会进入预先操作状态(可以发送参数)。 注意:处于预先操作状态时,您可写入通过配置选择的一些参数。 |
(3) (6) |
启动远程节点 |
(4) (7) |
进入预操作状态,并应用故障预置。 |
(5) (8) |
停止远程节点 |
(9) (10) (11) |
复位节点 |
(12) (13) (14) |
复位通讯 |
过程数据对象 (PDO)
利用 Process Data Object (PDO) 电报进行实时数据传输。Process Data 是用于监控设备的对时间要求较高的数据。
CANopen 控制器通讯模块具有:
PDO |
描述 |
状态 |
---|---|---|
传输 PDO1 |
监视(由服务器传输的数据) |
已预先配置和激活 |
接收的 PDO1 |
控制(由客户端传输的数据) |
|
传输 PDO2 |
交换数据(通过配置定义) |
待配置和激活 |
接收的 PDO2 |
||
传输 PDO3 |
||
接收的 PDO3 |
||
传输 PDO4 |
通过编程访问(读取或写入)任何寄存器 |
已预先配置和激活 |
接收的 PDO4 |
可将 RPDO(接收的 PDO)和 TPDO(传输 PDO)对象配置为包含 8 个字节的数据(例如,被组织为四个 16 位寄存器或一个 64 位对象)。
RPDO 对象具有写访问权限。
依照具体的应用,将 PDO 通讯模式设置为异步、循环或非循环异步。
在异步模式下,PDO 传输与 CANopen 客户端循环发射的 SYNC 对象相关。其不包含任何数据。其出厂设置为 0x080。
传输模式为:
传输类型 |
PDO 传输 |
|||
---|---|---|---|---|
循环 |
非循环 |
同步 |
异步 |
|
0 PDO 随 SYNC 对象同步发送,因数据值发生变化而触发 |
√ |
√ |
||
1-240 每当接收 1 到 240 次 SYNC 对象,将由通讯模块发送 PDO |
√ |
√ |
||
255 通讯模式的出厂设置 |
√ |
√ |
有关 PDO 更多信息,请参阅 Using PDOs。
服务数据对象 (SDO)
服务数据对象 (SDO) 用于配置设备和定义通过 PDO 所传输信息的类型和格式。
SDO 允许您访问设备对象词典的任何对象。
CANopen 客户端通过 SDO 执行非循环消息传递。它们也用于异步非周期性请求。例如,可使用 SDO 来读取控制单元标识。
CANopen 通讯模块管理一个 SDO 服务器,该服务器接收两个 COB-ID:
-
一个用于请求(由客户端发送给 CANopen LTMR 的电报)
-
一个用于响应(由 CANopen LTMR 发送回给客户端的电报)
有关 SDO 的更多信息,请参阅 Using SDOs。