一种CAN总线高层通信协议的设计与实现
对于每个模块,上电1s后若未收到任何通信信息,则按计算延时发送自身的地址码和温度电流采样值。延时时间的计算为[6]:
tdelay=t×add
其中:tdelay-为延时发送时间;
t-为单位延时时间常数,该值根据通信速率定义;可以取1个位周期,在波特率为100khz时为10μs;
add-为模块地址编码。
主模块是id10=0的模块,因此具有最高的优先级。上电后主模块首先向总线广播发送自身的地址码和温度电流采样值,然后即按顺序向从机发送指令,等待从机的回答。主机1秒钟后若未收到任何通信信息则认为该模块出错,发出报警。同样从机1s后若未收到主机任何通信信息则认为主机出错,按照源地址优先级由其 余模块中地址最低的模块充当主模块,并将其id10由1改为0,以获得最高通信优先权。
各模块检测到自身故障时,将切断输出,退出通信,并向上位机报警,同时发出声光报警。
5 结束语
本文中所介绍的can高层通信协议,结构简单、使用灵活、可靠性极高,实现也比较容易。很适合在节点数不多、通信可靠性要求高、控制结构较简单的小型控制系统中应用,具有一定的实用价值。
参考文献
[1] can基本知识[eb]. http://www.zlgmcu.com.
[2] 控制器局域网(can)未来的工业微处理器串行通讯[eb]. http://www.zlgmcu.com.
[3] 周立功等. 增强型80c51单片机速成与实战[m]. 北京:北京航空航天大学出版社,2003.
[4] 饶运涛等.现场总线can原理与应用技术[m]. 北京:北京航空航天大学出版社,2003.
[5] 蒋建文等. can总线通信协议的分析和实现[j]. 计算机工程,2002,2.
[6] 郑尊标.数字化智能电源模块研究[d]. 浙江:浙江大学,2001.
[7] canbus现场总线基础方案芯片篇[eb]
评论