12. CANopen节点保护

 

CANopen的节点监控有两种模式:节点保护和心跳保护。

  • 心跳保护是单边的,主站检测不到从站的心跳就认为从站有问题;
  • 节点保护是双边的,当节点保护功能被激活时,比如突然拔掉CANopen总线,这时主从站都会报错。

当EL6751作为主站时,默认心跳检测(heartbeat)是勾选的,这样默认使用的是心跳保护模式。当需要使用节点保护模式时,则要取消勾选,如下图所示:

其中:

  • 保护时间(Guard Time),是主站发送检测信号的时间,单位10ms,100表示1s;
  • 寿命因子(Life Time Factor),表示收不到这个检测信号多久后报警,3表示3个检测周期后报警。

保护时间是周期性的发送报文到从站,主站发送的是空报文,报文的COBID是0x701(1号节点,其他节点按下图公式计算即可)

当从站返回报文时,这个701地址就有了从站的状态,如下图所示:

如果超过保护时间*寿命因子时间后,主站还没有接收到从站的应答信号,则认为从站出错。

相对于主站来说,从站不需要知道主站这么多的状态。它只需要监控主站的保护时间内的701的心跳报文,如果收不到经过寿命因子时间(乘以寿命因子)后从站就自我保护。

 

上文介绍的是节点保护模式,如果启用心跳保护模式,需要勾选Use Heartbeat这个选项,勾选后优先使用心跳检测模式。

心跳保护的工作原理:从站在保护时间周期性的发送报文到主站,如果主站在超过保护时间*寿命因子的时间,还没有收到从站的下一个心跳报文,则认为从站出错。正常的从站报文含了如下信息:

可以发现,在心跳保护模式下,主站是不给从站发送心跳报文的,所以最好采用节点保护模式。

但是节点保护模式会增加网络的带宽占用,使用时需要综合评估。

 

2025.12.1 杨靖华 供稿