CAN 总线系列讲座第十讲——如何监测 CAN 网络节点的工作状态1 问题的引出在 CAN 总线研发项目的具体应用中,有的项目相对比较简单,不需要运用CAN 总线的应用层协议来开发,在网络节点的状态监控方面,需要实时诊断其是处于正常通讯状态还是故障状态
2 只有 2 个节点的简单 CAN 总线网络例如:一个 CAN 总线网络中只有主节点和 1 个子节点
主节点子节点图 1 2 个节点构成的简单 CAN 总线网络这时,主节点可以通过 2 种方式诊断子节点是处于正常通讯状态还是故障状态
方式一:主节点中设置一个定时器,例如 2s 时间间隔主节点向子节点发送一次询问(可以单独询问子节点的状态,也可以令子节点上传数据),设定 0
5s钟时间限制,如果 0
5s 钟内没有收到子节点的应答,就判定子节点故障,主节点可以通过蜂鸣器、显示屏、LED 等报警;同样的,子节点设定6s 钟时间限制,如果 6s 钟内没有收到主节点的询问,就判定主节点故障,同样子节点可以通过蜂鸣器、显示屏、LED 等报警
方式二:主节点在有人值守的情况下,例如煤矿风机运转状态的监控,主节点一般是有人值守的计算机(主节点通过 USB、串口、PCI 连接在计算机上),此时可以不用再通过嵌入式系统判定主节点是否工作正常了
可以让子节点定时(例如 0
5s 钟)向主节点发送一组数据帧,在主节点上设定 1s 钟时间限制,如果 1s 钟内没有收到子节点的应答,就判定子节点故障
5s 钟向主节点发送的一组数据帧就是我们常说的“心跳信息”——就像人的心脏跳动一样,证明子节点还“活着”
设置“心跳信息”有个技巧,让子节点发送的数据帧中的一个字节内容要有所变化,例如:数据流传输方向:子节点主节点目标地址(主节点地址)数据帧内容(数据长度 3)第一次0X28A0X000XAA0XBB第二次0X28A0X010XAA0XBB第三