Skip to main content

CANopen 诊断

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

CANopen 状态

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

_can_img_state.png

初始化:开启后,节点经过这个状态。此时,设备应用程序和设备通信(比特率和节点地址)被初始化。之后,节点独立切换到“预操作”状态。

预操作:可以通过 SDO 与节点通信。但是,节点不能执行 PDO 通信。

运行:CANopen 节点完全运行。它可以独立发送和接收过程数据。

已停止:节点与网络完全分离。无法进行 SDO 或 PDO 通信。节点只能通过相应的网络命令(例如:启动节点)才能更改为另一种网络状态。

错误寄存器

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

错误寄存器中只需要位 0(一般错误)。其他位是可选的,并非由每个从站设置。一旦设备检测到任何错误,至少会设置该对象的第 0 位。

15. 错误寄存器

少量

描述

0

一般错误

1

当前的

2

电压

3

温度

4

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

5

特定于设备配置文件

6

保留(始终为 0)

7

特定于制造商



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

CANopen 定义了可选的紧急 (EMCY) 协议来指示错误。紧急情况是根据带有 CAN-ID 16#80 + NODE-ID 的预定义连接集传输的 CAN 消息。

电报具有以下结构:

_can_img_emcy.png

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

错误代码的相应解释必须从制造商手册中获取。并非所有从站都支持紧急协议,必须由 CANopen 管理器进行相应配置。

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

有关更多信息,请参阅: 预定义的错误字段和错误寄存器

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

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

  • 节点保护:使用此协议,消息(CAN 远程帧)由 NMT 主站发送到现有的 CANopen 从站。从站必须在特定时间内响应这些消息。如果没有响应,则由 NMT 主机注册。因为通常应避免 CAN 远程帧,所以最好通过心跳进行监控。

  • 心跳:心跳协议随 CANopen 4.0 版本发布,是首选的监控方式。在这里,每个节点独立地以循环间隔发送消息。该消息可以被网络中的任何其他用户监视。