网络管理 NMT(Network management) 与 CANopen 主站
·
. 网络管理 NMT(Network 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通信被
停止,但SDO和NMT网络管理依然可以对节点进行操作;
除了初始化状态,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 到位 6(bits0~6)表示节点状态,
可为表 6.1 中的数值。

由于远程帧在 CAN 发展中逐渐被淘汰,而节点守护由于需要更多的主站开销与增加网
络负载,CiA 协会已经不建议使用,被心跳报文所取代。
NMT 节点状态切换命令
NMT 网络管理中,最核心的就是 NMT 节点状态切换命令,这是 NMT 主站所进行网
络管理的“命令”报文。使用者必须牢记这些命令。
CANID 均为 000h,具备最高的 CAN 优先级。数据为 2 个字节:
第 1 个字节代表命令类型:
01h为启动命令(让节点进入操作状态);
02h为停止命令(让节点进入停止状态);
80h为进入预操作状态(让节点进入预操作状态);
81h为复位节点应用层(让节点的应用恢复初始状态,比如列车门都恢复打开状态);
82h为复位节点通讯(让节点的 CAN 和 CANopen 通讯重新初始化,一般用于总线收到
干扰,导致节点总线错误被动,或者总线关闭时)。
第二个字节代表被控制的节点 Node-ID,
如果要对整个网络所有节点同时进行控制,则这个数值为 0 即可。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)