微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种CAN总线高层通信协议的设计与实现

一种CAN总线高层通信协议的设计与实现

时间:09-12 来源:互联网 点击:

的地址根据要进行通信目的模块的地址确定。本通信协议的数据帧格式详见表2。

表2 数据帧格式

理论上源地址和目的地址的范围都是0~31,但由于can协议中规定标识符前7位不能全为显性位,所以源地址不能为31,这时实际节点只有31 个 (0~30)。因此每个系统所含的模块不超过31个。所以源地址和目的地址的范围缩减到0~30。同时上位监控机也要占用一个地址,因此系统中的电源模块 不超过30个,设计时根据节点的优先权高低从小到大分配节点地址。id10位定义为主模块识别码,该位主模块为隐性位,从模块为显性位,以保证主模块通信优先。模块的地址码决定发送数据的优先级。主模块向总线发送的数据有两种:一种是目的地址全部填0的广播数据;另一种是包含特定目的地址的非广播数据。

协议中一帧数据最多能传送8个字节,对于充电机控制系统来说已经足够用了,本系统只用到其中的前5个字节,其余3个节字可用于以后的扩展使用,因此未定义 多帧传输方式。

从模块以广播形式向总线发送数据,同时回收自己发送的数据,若检测到所发送与所收到的数据不符,则立即重新发送上一帧数据。从模块发送信息的顺序由主模块的发出的指令决定,以免在总线通信繁忙时优先级较低的模块始终得不到总线通信权。指令的发送顺序按照各从模块的地址顺序进行,即地址较低的从模块首先获得 指令,得以发送自己的地址码和电流、温度采样值。如发生冲突,则由can控制器自动根据模块的优先级调整发送顺序,在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]

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top