. 网络管理 NMTNetwork management) CANopen 主站
前文所述,一个 CANopen 网络中为了保证可靠、可控,必须要 NMT 网络管理,就像
一个军队一样,要令行禁止,才能达到稳定、高效的目标。如图 6.1 所示。指挥员(NMT
主机)通过发号施令,士兵(NMT 从机)进行自由俯卧训练,这样整个训练都是有序的。

 

所以每个 CANopen 从节点的 CANopen 协议栈中,必须具备 NMT 管理的相应代码,
这是节点具备 CANopen 协议的最基本的要素
NMT 节点状态
NMT 管理涉及到一个 CANopen 节点从上电开始的 6 钟状态,包括:
初始化Initializing):节点上电后对功能部件包括 CAN 控制器进行初始化;
应用层复位(Application Reset):节点中的应用程序复位(开始),比如开关量输
出、模拟量输出的初始值;
通讯复位Communication reset):节点中的CANopen通讯复位(开始),从这个时
刻起,此节点就可以进行CANopen通讯了。
预操作状态Pre-operational):节点的CANopen通讯处于操作就绪状态,此时此节
点不能进行PDO通信,而可以进行SDO进行参数配置和NMT网络管理的操作;
操作状态operational):节点收到NMT主机发来的启动命令后,CANopen通讯被
激活,PDO通信启动后,按照对象字典里面规定的规则进行传输,同样SDO也可以
对节点进行数据传输和参数修改;
停止状态Stopped):节点收到NMT主机发来的停止命令后,节点的PDO通信被
停止,但SDONMT网络管理依然可以对节点进行操作;
除了初始化状态,NMT主机通过NMT命令可以让网络中任意一个的CANopen节点
进行其他5种状态的切换。如图 所示。
当然CANopen节点也可以程序自动完成这些状态的切换。

 

NMT 节点上线报文
任何一个 CANopen 从站上线后,为了提示主站它已经加入网络(便于热插拔),或者
避免与其他从站 Node-ID 冲突。这个从站必须发出节点上线报文(boot-up,如图  所示,
节点上线报文的 ID 700h+Node-ID数据为 1 个字节 0。生产者为 CANopen 从站。

 

 

NMT 节点状态与心跳报文
为了监控 CANopen 节点是否在线与目前的节点状态。CANopen 应用中通常都要求在线
上电的从站定时发送状态报文(心跳报文),以便于主站确认从站是否故障、是否脱离网络。
如图 所示,为心跳报文发送的格式,CANID 与节点上线报文相同700h+Node-ID
数据为 1 个字节,代表节点目前的状态,04h为停止状态,05h为操作状态,7Fh为预操作状
态。

 

CANopen 从站按其对象字典中 1017h 中填写的心跳生产时间(ms)进行心跳报文的发
送,而 CANopen 主站(NMT 主站)则会按其 1016h 中填写的心跳消费时间进行检查,假设
超过诺干次心跳消费时间没有收到从站的心跳报文,则认为从站已经离线或者损坏。
NMT 节点守护
在早期 CANopen 应用中,还有一种可以通过轮询模式监视从站状态的节点守护模式
它与心跳报文模式二者不能并存。通过节点守护,MNT 主机可以检查每个节点的当前状态。
NMT-Master 节点发送标准远程帧(无数据)如下:
数据部分包括一个触发位(bit7),触发位必须在每次节点保护应答中交替置“0”或者
1。触发位在第一次节点保护请求时置为“0”。位 0 到位 6bits06)表示节点状态,
可为表 6.1 中的数值。

由于远程帧在 CAN 发展中逐渐被淘汰,而节点守护由于需要更多的主站开销与增加网
络负载,CiA 协会已经不建议使用,被心跳报文所取代
NMT 节点状态切换命令
NMT 网络管理中,最核心的就是 NMT 节点状态切换命令,这是 NMT 主站所进行网
络管理的“命令”报文。使用者必须牢记这些命令
CANID 均为 000h,具备最高的 CAN 优先级。数据为 2 个字节:
1 个字节代表命令类型:
01h为启动命令(让节点进入操作状态);
02h为停止命令(让节点进入停止状态);
80h为进入预操作状态(让节点进入预操作状态);
81h为复位节点应用层(让节点的应用恢复初始状态,比如列车门都恢复打开状态);
82h为复位节点通讯(让节点的 CAN CANopen 通讯重新初始化,一般用于总线收到
干扰,导致节点总线错误被动,或者总线关闭时)。
第二个字节代表被控制的节点 Node-ID
如果要对整个网络所有节点同时进行控制,则这个数值为 0 即可。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐