Skip to main content

CANopen诊断

本章介绍了CANopen协议提供的诊断选项。

CANopen州

CANopen网络由 NMT主站(网络管理)和 NMT 从站组成。在这种情况下,NMT主站控制所有设备并可以更改它们的通信状态。CANopen 设备处于以下四种可能状态之一:

_can_img_state.png

初始化:节点开机后,会经历此状态。此时,设备应用程序和设备通信(比特率和节点地址)都会被初始化。之后,节点会自动切换到“预运行”状态。

预操作阶段:可以通过SDO与节点通信。但是,节点无法执行PDO通信。

Operational: CANopen节点运行状态良好,能够独立发送和接收过程数据。

已停止:该节点已完全与网络断开连接,无法进行任何 SDO 或PDO通信。该节点只能通过相应的网络命令(例如:start node)切换到其他网络状态。

错误寄存器

根据 CiA 301 标准,每个CANopen设备都有一个错误寄存器(对象 16#1001)。该寄存器可通过 SDO 读取,并在发生错误时提供有关该错误的更多信息。

错误寄存器中只需要第 0 位(通用错误)即可。其他位是可选的,并非所有从从站都会设置。一旦设备检测到任何错误,该对象的至少第 0 位就会被设置。

15. 错误寄存器

少量

描述

0

通用错误

1

当前的

2

电压

3

温度

4

通信错误(溢出错误状态)

5

设备配置文件特定

6

已预留(始终为 0)

7

制造商特定



紧急和预定义错误字段 (EMCY)

CANopen定义了可选的紧急 (EMCY) 协议,用于指示错误。紧急消息是根据预定义的连接集发送的 CAN 消息,其 CAN-ID 为 16#80 + NODE-ID。

电报的结构如下:

_can_img_emcy.png

紧急消息的长度始终为 8 个字节。相应的紧急错误代码 (EEC) 在前两个字节中传输。接下来是错误寄存器 0x1011 的当前值(ER:错误寄存器)和 5 个制造商特定的字节(MEF:制造商特定的错误字段)。

错误代码的具体解释必须参考制造商手册。并非所有从站都支持紧急协议,需要通过CANopen管理器进行相应配置。

可以通过 SDO 从对象 16#1003 读取已发生的紧急情况(错误历史记录)。其中,子索引 0 包含已存储的错误数量,后续子对象包含已传输紧急情况的数据内容。

更多信息请参见:预定义错误字段和错误寄存器

监测机制:心跳和节点保护

如果 CAN 节点不持续发送消息(循环PDO),则需要对其进行监控。为此,提供了“心跳”和“节点保护”机制,可以交替使用这两种机制。

  • 节点守护:在此协议中,NMT主站向现有的CANopen从站发送消息(CAN 远程帧)。从站必须在指定时间内响应这些消息。如果没有收到响应,NMT主站会记录此情况。由于通常应避免使用 CAN 远程帧,因此最好采用心跳机制进行监控。

  • 心跳协议:心跳协议随CANopen 4.0 版本发布,是首选的监控方法。在该协议下,每个节点以周期性间隔独立发送一条消息。网络中的任何其他订阅者都可以监控此消息。