基于CAN总线通信协议安全及汽车温度检测系统的研究
2016-11-25许矛盾殷安龙邹鹏飞张持健
许矛盾,殷安龙,陈 琳,邹鹏飞,张持健
(安徽师范大学 物电学院,安徽 芜湖 241000)
基于CAN总线通信协议安全及汽车温度检测系统的研究
许矛盾,殷安龙,陈 琳,邹鹏飞,张持健
(安徽师范大学 物电学院,安徽 芜湖 241000)
为了实现对汽车内CAN节点的安全通信和汽车温度的实时检测,本文采用单片机和CAN总线设计出一套汽车温度检测系统。该系统基于CAN总线通信协议,实现对各个节点相互通信时的安全校验,并能实时检测车身各个部分温度。经实验表明,该系统在安全性和实时性具有显著的提高,同时具有很好的可移植性,方便二次开发。
CAN总线;通信协议 ;安全性;温度检测
随着在汽车应用中的电子设备逐渐增多,汽车总线技术越来越重要。在技术成熟的所有总线当中,CAN总线技术具有数据通信突出的实时性、安全性和精确性的特点,成为目前国际上应用最广泛的现场总线之一[1]。CAN总线在汽车中的应用,不仅保证了汽车系统的安全,增加汽车网络数据传输的安全,还提高了车内电子设备的稳定性。在本文中,研究将CAN总线网络系统嵌入到汽车系统之中,同时努力解决CAN总线节点间的通信安全问题;反过来,当汽车温度过高时,温度检测系统能够即使提醒车主进行相应的处理,进而有效地降低车辆设备的损坏。
但是随着车内电子设备不断增多,节点间因同时发送信息而产生的冲突的概率也会增大,这就会导致优先级较低的节点等待时间过长,因此CAN总线系统的安全性和实时性变得很差。如果节点间的传送数据延迟过长,从而影响多个CAN节点之间传送数据,导致了车辆系统的安全性变差,造成车辆驾驶的安全。
与此同时,很多文献都针对CAN总线网络协议带来的问题提出了改进措施。文献[2]基于CAN总线通信协议,提出了排队理论并给出了非强占M/G/1排队论模型;文献[3]针对总线资源受限的问题,本文提出,采用灵活的量化调度方法提高系统的实时性;文献[4]进一步提出了CAN协议车载网络级系统V字型系统工程开发方法,完善了整车网络级系统的系统集成策略;文献[5]验证了在自主开发的网络平台上验证了CAN-open协议的有效性。但是针对如何识别CAN总线各节点间的身份,给出的对策较少。文中提出一种识别各节点身份,增强CAN总线网络完全的一种方案。
1 CAN总线协议的特点以及带来的问题
CAN总线节点间通信采用的协议是 CSMA/CA协议(带有冲突避免的载波监听多路访问),CAN总线网络节点之间通信,与一般网络相比较得出:具有更好的安全性和可靠性。仲裁过程中,标识符小的数据可以不受影响的连续发送数据,标识符大的数据则退出等待,由于总线响应的请求是根据报文在整个系统中的重要性按顺序处理的,所以CAN总线实现了较高的效率[6]。CAN总线各个节点之间,没有主从关系的概念。每个节点作为独立的节点,均可与挂载在总线上的其它节点进行通信。各节点只需通过报文滤波即可实现点对点、一点对多点以及全局广播等方式传送接受数据[7]。CAN总线上的各节点间数据通信,使用无破坏性总线仲裁技术,当CAN节点出现故障,这个节点可以自动关闭,不会影响到总线中其他节点之间的通信。
1.1 CAN总线的实时性改进
由节点间发送信息冲突所引起的非周期性通信延迟问题,本文在温度检测系统采用了了时分多路优先级方法对CAN总线的实时性进行了优化,其数学期望如下:
公式中di表示非周期性信息帧,di表示竞争时下个窗口到来的延迟时间。Dm表示延迟时间的数学期望。由于采用了时分多路方法,节点间时间触发基本无排队延迟。结合优先级排队原理,运用竞争时窗内的优先级晋升方案来解决非周期性事件触发。优化前后的效果如图1(a)和图1(b):
图1 优化前后相应时间图
通过以上分析得出,时分多路优先级方法有效减少节点间通信的实时性问题。
1.2 CAN总线的安全性改进
CAN总线作为一种多节点、无主从的实时通信总线,在通信中则会存在潜在的外部威胁问题。很多文献中都指出了车载网络CAN节点间通信的安全性问题,但是提出增强车载网络CAN节点间安全性的解决办法的相对较少。
本文通过软件编程来实现:当CAN节点正在传送信息帧时,寄存器SJA1000使用flag来进行标识。为了保证CAN节点预防方法的响应的实时性,在寄存器SJA1000中,编程实现能够检查输入的所有数据。当检查到为授权的数据在CAN节点上传送数据时候,立即发送一个错误帧。具体数据帧授权实现流程如图2。
图2 数据帧授权实现流程
根据分析CAN总线的传输协议,在CRC界定符之后,SJA1000芯片来检测所有输入数据的循环冗余码校验(CRC)场。在满足CAN总线通信协议的情况下,预防方法能够在包含一个标准CAN控制器SJA1000的ECU中得以合理的实现。该方法优点:当CAN总线网络中出现了未授权信息帧的情况,通过编程使得ECU一直出路循环检测中,这样只要有未授权的数据帧出现,总线的各个节点就能检测到未授权的信息帧,然后随后立即发送一个错误帧,提醒其他总线节点出现未授权数据帧为错误帧,从而使ECU避免了接收到未授权的数据帧。
2 系统结构
从功能方面分析,系统可分为电源模块、CAN总线驱动器模块、串口通信模块、温度采集模块、报警模块和单片机主控模块。汽车生产厂商生产的汽车所提供的电源电压是12 V,而要使用CAN控制芯片SJA1000必须要求供电电压为直流电压5 V,所以采用了接口简单,使用方便的稳压芯片TLE4264,完成+12 V向+5 V的电压的转化。温度采集模块主要使用DS18B20温度传感器,DS18B20温度传感器是由美国DALLAS半导体公司生产。该温度采集模块在应用设计中需要注意的问题是:节点上挂载的温度传感器不能超过8个。系统MCU(中央处理单元)使用的是STC89C52RC单片机,它的优势在于空闲态电流为1mA,工作电流5.5mA,掉电状态仅为20nA。该单片机这样的功耗,适合于小型供电系统。为了解决本系统嵌入到车载电脑系统的问题,增加了RS232串口通信模块。报警模块由LED发光二极管、GPRS(sim300芯片)和LCD液晶显示屏组成。系统结构框图如图3所示。
图3 汽车温度检测系统框图
2.1 CAN节点电路硬件设计
CAN节点的硬件电路由SJA1000控制芯片和TJA1050总线驱动芯片组成,主要功能是检测出车内电子设备当前温度。节点电路处于不停的间隔检测当前车内各个部分的温度,当监测温度超出预先设定的值时,LED发光二极管会发出警示,并立即通过SIM300芯片给车主发送消息。如果该节点因意外故障发生损坏,或者检测到未授权的信息帧时,则会关闭发生故障的节点,会立即发送错误帧,保证了总线上其他CAN节点间的通信。
总线与CAN-BUS间的通信,使用了最新TJA1050收发芯片。TJA1050收发芯片用于连接CAN节点与物理总线,与很多人使用的PCA82C250收发芯片相比较,TJA1050的优势在于性价比高、电磁辐射EME极低、电磁抗干扰EMI性极高。CAN总线节点电路如图4所示。
图4 SJA1000节点电路
2.2 CAN节点软件总体流程
从功能角度分析,CAN节点的软件主要实现了:节点与节点之间相互通信、对每个节点进行温度的实时监测。系统的软件程序完成MCU模块上电初始化,初始化部分包括单片机模块初始化、CAN总线模块初始化、液晶模块初始化、时钟模块初始化。开放中断,温度传感器DS18B20采集数据并对数据是否超过预定值进行判断。在处理程序上,主程序处于无限循环状态,当采集到的温度超过预定值,则触发标志位,来执行相应的标志位所对应的操作。软件总体流程如图5。
图5 软件执行流程
3结 论
经实际结果表明,基于CAN总线的温度检测系统,其采集温度的精确性和网络通信的实时性、安全性都得到了很好的保证。而且该系统的成本低廉,CAN总线节点间通信网络搭建便捷,还可以根据车内设备数量的增多或减少,系统节点可以进行相应的增多和减少,有利于二次开发,具有实际的应用前景。
[1]张培仁,朱东杰,马云,等.自动控制技术和应用[M].合肥:中国科学技术大学出版社,2001.
[2]陈曦.CAN总线实时性和可靠性若干问题的研究[D].天津:天津大学,2010.
[3]匡付华.CANopen总线网络应用的实时性和可靠性若干问题的研究[D].广州:华南理工大学,2011.
[4]曹万科.CAN协议车载网络若干关键理论研究[D].沈阳:东北大学,2008.
[5]李芳,张俊志,王丽芳,廖承林.电动汽车动力总成系统控制器局域网 (CAN)总线通信协议[J].机械工程学报,2008,44(5):101-107.
[6]王津津,张培仁,崔军辉,等.基于 CAN总线通信系统实验的设计[J].自动化与仪表,2008(5):17-21.
[7]屈敏.汽车车身舒适系统的 CAN总线及其测控系统研究[D].南京:南京林业大学,2007.
Research on communication protocol security and automotive temperature detection system based on CAN bus
XU Mao-dun,YIN An-long,CHEN Lin,ZOU Peng-fei,ZHANG Chi-jian
(College of Physics and Electronic Information,Anhui Normal University,Wuhu 241000,China)
In order to achieve real-time detection of secure communications and automotive temperature inside the car CAN node,we use microcontrollers and CAN bus design a car temperature detection system.The system is based on CAN bus communication protocol to implement safety check at each node to communicate with each other,and real-time detection of various parts of the body temperature.The experiment shows that the system in real-time safety and a significant increase,but also has good portability,convenient secondary development.
CAN bus;communication protocol;security;temperature detection
TN911.72
A
1674-6236(2016)18-0182-03
2015-10-13 稿件编号:201510075
许矛盾(1989—),男,江苏宿迁人,硕士研究生。研究方向:嵌入式开发与智能控制。