概述
学习地址:https://en.nanotec.com/products/manual/PD4E_CANopen_ZH/bus%252Fcan%252Fcan_stack.html?cHash=d3b43174da641a1d53fca9c28d935948#concept_dkx_115_gj
心跳和节点保护
通过“心跳”和“节点保护”服务(通常也称为“寿命保护”),可检测 CAN 总线上已关闭或挂起的设备。为此,NMT 主站将循环请求包含从站当前 NMT 状态的消息(节点保护)。另一种方式是每个从站自发循环地发送消息(心跳)。不允许组合使用节点保护和心跳。此外,还建议为心跳设置高于节点保护的优先级,因为节点保护会导致 CAN 总线的负载较高。
节点保护
该服务所依据的原理是 NMT 主站可向相应的从站发送包含 CAN-ID 700h + 节点 ID 的 RTR 消息。随后从站必须发送消息进行响应;此消息结构如下。其中位 7 在每次传送时都会进行交替,从而能够确定消息是否丢失。在位 6 到 0 中输入从站当前的 NMT 状态。
对于节点保护,存在三个时间间隔(另请参见下图):
- 保护时间:两条 RTR 消息之间的之间。每个 CAN 节点可能具有不同的保护时间,保护时间存储在从站的对象 100Ch:00 中(单位:毫秒)
- 生存时间因数:保护时间的倍数;存储在 CAN 从站的对象 100Dh:00 中,CAN 总线上每个从站可能具有不同的生存时间因数。
- 可能的生存时间:保护时间乘以生存时间因数所得出的时间。
在节点保护期间会检查以下条件:
NMT 主站必须在“可能的生存时间”内发送 RTR 请求。
从站必须在“可能的生存时间”内发送对 RTR 请求的响应。
从站的响应必须包含其 NMT 状态。此外,还必须正确设置“切换位”。
心跳
如果激活心跳,从站将自发循环地将其 NMT 状态发送至 CAN 总线。可通过将对象 1017h:00h 中的创建者心跳时间时间设为非零值,从而激活该服务。创建者心跳时间以毫秒为单位测量。从站发送的消息格式如下:
从站必须在心跳使用者时间内发送心跳消息。该时间只有主站知道,且不会存储在控制器中。
从站还可以从其他创建者(主站或其他从站)监测心跳。为此,必须在对象 1016h 中输入使用者心跳时间和创建者的节点 ID。
如果两个功能均已禁用,或者再次在正确的时间内发送心跳,则将重置在此监测过程中发生的错误。
最后
以上就是温暖画板为你收集整理的CANopen心跳和节点保护的全部内容,希望文章能够帮你解决CANopen心跳和节点保护所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复