CAN总线在汽车控制系统中的应用
现在很多汽车采用CAN(Controller Area Network)总线将它们联系起来,但是现代汽车计算机控制单元多,各控制单元对系统响应时间的要求不一样。有些系统对实时性要求很高,系统指令发出以后如果得不到执行器的及时响应,就可能造成严重后果甚至车毁人亡,如制动防抱死控制单元、安全气囊等;而有些系统如照明控制、空调控制等对系统的响应时间要求就相对较低。
由于计算机控制单元越来越多,采用单网络CAN总线负荷很重,笔者通过分别构造高、低速CAN网络,对实时性要求高的计算机控制单元采用高速CAN网络传输;其它采用低速CAN网络传输,并采用微控制器兼作网关。使得传输线束大大简化,可靠性大大提高。
二,CAN总线的技术特性
CAN(Controller Area Network)总线是一种串行多主站控制器局域网总线。它具有很高的网络安全性、通讯可靠性和实时性,简单实用,网络成本低。特别适用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。通讯媒体可以是双绞线、同轴电缆或光导纤维,数据传输速率可达1 Mbits/s(此时通信距离最长为40m)。CAN总线还广泛应用于汽车、船舶、机器人、楼宇自动化等场合。
自CAN总线问世以来,为满足CAN总线协议的多种应用需要,相继出现了几种高层协议。目前大多数基于CAN总线的网络都采用CAN总线的高层协议。CANopen, DeviceNet和SDS是通常采用的高层协议,适用于任何类型的工业控制局域网应用场合,而CAL则应用于基于标准应用层通讯协议的优化控制场合,SAEJ1939则应用于卡车和重型汽车计算机控制系统。
三,基于P87C591的汽车计算机控制
(一) P87C591
P8xC591是一个单片8位高性能微控制器,具有片内CAN控制器,从80C51微控制器家族派生而来。它采用了强大的80C51指令集并成功的包括了Philips半导体SJA1000 CAN控制器的PeliCAN功能。全静态内核提供了扩展的节电方式。振荡器可停止和恢复而不会丢失数据。改进的1:1内部时钟预分频器在12MHz外部时钟速率时实现500ns指令周期。微控制器以先进的CMOS工艺制造,并设计用于汽车和通用的工业应用。除了80C51的标准特性之外,器件还为这些应用提供许多专用的硬件功能。P8xC591组合了P87C554(微控制器)和SJA 1000(独立的CAN控制器)的功能,并具有下面的增强特性:增强的CAN接收中断;扩展的验收滤波器;验收滤波器可“change on the fly”。
(二)系统实现
目前,汽车计算机控制已经涉及到动力性、经济性、安全性、可靠性、净化性和舒适性等诸多方面,具体包括发动机控制,变速器控制、巡行控制,制动控制,照明控制,空调控制,雨刷控制,仪表管理系统等,而且各种控制系统的电控单元(ECU)相互联系紧密,需要随时进行实时数据通信,CAN总线作为一种极具应用潜力的控制器局域网总线,近年来在汽车计算机控制系统中得到越来越广泛的应用,并已成为欧洲汽车制造业主体行业标准,代表着汽车电子控制网络的主流发展趋势。
汽车计算机控制系统中的所有这些子控制系统通过CAN,0.线构成一个实时控制系统网络,各控制单元的指令发出去之后,必须保证在一定时间内得到响应,要不然就有可能发生重大事故,这就要求汽车上的CAN通信网络有较高的波特率设置和可靠性。而且,汽车在实际运行过程中,众多节点之间需要进行大量的实时数据交换。若整辆汽车的所有节点都挂在一个CAN网络上,这么多节点通过一条CAN总线进行通信,信息管理配置稍有不当,就很容易出现总线负荷过大,将导致系统实时响应速度下降,这在实时系统中是不允许的。因此我们在对汽车上各节点的实时性进行了分析之后,根据各节点对实时性的要求,设计了高、低速两个速率不同的CAN通信网络。将实时性要求严格、可靠性要求高的节点组成高速CAN通信网络,将其它实时性要求相对较低的节点组成低速CAN通信网络,并架设网关将这两个速率不同的CAN通信网络连接起来,实现全部节点之间的数据共享。整辆汽车的通信网络拓扑结构如图1所示。
图1中的发动机控制、变速器控制、安全控制、防抱死制动控制(ABS)等控制单元节点是现代汽车动作的核心部件,对时间响应要求严格,因而在本设计中采用传输速率为500Kbps的高速CAN通信网络。空调控制、雨刷控制、照明控制和仪表管理控制等相对来说对实时性的要求较低,采用传输速率小于125 Kbps的CAN通信网络,主控制器跨接高、低速两条总线,与各节点进行数据交换,兼起网关的作用,实现网络互连。
电控单元的微控制器(P8xC591 )通过数据总线经过光电隔离器(6N137)与CAN总线控制器(SJA 1000)直接相连,由于CAN总线控制器带有一个接收缓冲器和一个发送缓冲器,因此,CAN总线控制器的发送端口Tx0,接收端口Rx0、Rx1分别与CAN,总线发送接收器的TxD和RxD, Vref端口直接相连,CAN_L和CAN -H是CAN总线的两条差分接收发送线。它们的端点间各接一个120Ω的总线匹配电阻,当有节点占用CAN总线时,该节点的发送端(电平为3.5 V)接CAN_H,接收端(电平为1.5V)接CAN_L;当无节点占用CAN总线时,CAN_L和CAN_H上的电平均为2.5V.