小言_互联网的博客

CAN笔记(22) 特殊协议

338人阅读  评论(0)


1. 同步协议

同步(SYNC), 该报文对象主要实现整个网络的同步传输
就像阅兵分列式上的方阵, 所有士兵迈着整齐的步伐行进

每个节点都以该同步报文作为 PDO 触发参数
因此该同步报文的 COB-ID 具有比较高的优先级以及最短的传输时间
一般选用 80h 作为同步报文的 CAN-ID

一般同步报文由 NMT 主机发出, CAN 报文的数据为 0 字节

但如果一个网络内有 2 个同步机制, 就需要设置不同的同步节拍
比如某些节点按 1 个同步帧发送 1 次 PDO, 其他的节点收到2个同步帧才发送1此PDO
所以这里PDO参数中的同步起始值就起了作用

在同步协议中, 有 2 个约束条件:

  • 同步窗口时间
    索引 1007h 约束了同步帧发送后, 从节点发送 PDO 的时效
    即在这个时间内发送的 PDO 才有效, 超过时间的 PDO 将被丢弃
  • 通讯循环周期
    索引 1006h 规定了同步帧的循环周期

2. 时间戳协议

时间标记对象(Time Stamp), NMT 主机发送自身的时钟
为网络各个节点提供公共的时间参考, 即网络对时

这在故障诊断中非常需要
比如列车中火灾报警, 检修人员需要准确获知报警的时刻
然后关联查看其它设备在这个时刻的工作状态

时间戳协议采用广播方式, 无需节点应答, CAN-ID 为 100h, 数据长度为 6
数据为当前时刻与 1984 年 1 月 1 日 0 时的时间差

节点将此时间存储在对象字典 1012h 的索引中
由于时间换算起来非常费劲, 所以会有专门的换算函数


3. 紧急报文协议

紧急事件对象(Emergency):当设备内部发生错误, 触发该对象, 发送设备内部错误代码, 提示 NMT主站
紧急报文属于诊断性报文, 一般不会影响 CANopen 通讯
其 CAN-ID存储在 1014h 的索引中, 一般会定义为 080h + node-ID, 数据包含 8 个字节

其中包括:
EEC: 紧急时间错误代码, ER: 错误寄存器, MEF: 厂商自定义的错误代码

当然这些都需要查表才能获知, 进行诊断:


与 PDO 的生产禁止时间类似, 紧急报文也有生产禁止时间
存储在对象字典的 1015h 中, 为了限制节点不断发送紧急报文, 导致总线负载过大


参考:

《CANopen 轻松入门》


相关推荐:

CAN笔记(21) 服务数据对象
CAN笔记(20) 过程数据对象
CAN笔记(19) 网络管理
CAN笔记(18) 对象字典
CAN笔记(17) 预定义报文ID


谢谢!


转载:https://blog.csdn.net/qq_32618327/article/details/100737352
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场