基于CAN总线的多ECU通信平台设计
扫描二维码
随时随地手机看文章
关键词:CAN总线 ECN J1939协议 通信平台
引言
随着集成电路和单片机在汽车上的广泛应用,现代汽车上的电子控制器的数量越来越多,常见的有发动机的电子燃油喷射装置、防抱死制动装置(ABS)、安全气囊装置、电动门窗装置、主动悬架等。电控系统的增加虽然提高了轿车的动力性、经济性和舒适性,但随之增加的复杂电路也降低了汽车的可靠性,增加了维修的难度。从布线角度分析,传统的电子气系统大多采用点对点的单一通信方式,相互之间少有联系,这样必然造成宠大的布线系统。因此,一种新的概念——汽车上电子控制器局域网络CAN,也就应运而生。为使不同厂家生产的零部件能在同一辆汽车上协调工作,必须制定标准。按照ISO有关标准,CAN的拓扑结构为总线式,因此称为CAN总线。CAN总线被设计作为汽车环境中的微控制器通信,在车载各电子控制装置ECN之间交换信息,在车载各电子控制装置ECN之间交换信息,形成汽车电子控制网络。
控制器局域网CAN(Controller Area Network)是一种多主方式的串行通信总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。CAN在汽车上的应用,具有很多行业标准或者是国际标准,比如国际标准化组织(ISO)的ISO11992、ISO11783以及汽车工程协会(Society of Automotive Engigeers)的SAE J1939。CAN总线已经作为汽车的一种标准设备列入汽车的整车设计中。
图1
1 CAN总线特点及其通信协议
1.1 CAN总线简介
CAN通信协议规定了4种不同的帧格式,即数据帧、远程帧、错误帧和超载帧。基于以下几条基本规则进行通信协调:总线访问、仲裁、编码/解码、出错标注和超裁标注。CAN遵从OSI模型。按照OSI基准模型只有三层:物理层、数据链路层和哀告层,但应用层尚需用户自己定义。CAN总线作为一种有效支持分布式控制或实时控制的串行通信网络,应用范围遍及从高速网络到低成本的多线路网络。如:CAN在汽车中的发动机控制部件、ABS、抗滑系统等应用中的位速率可高达1Mbps。同时,它可以廉价地用于交通运载工具电器系统中,例如电气窗口、灯光聚束、座椅调节等,以替代所需要的硬件连接。其传输介制裁为双绞线,通信速率最高可达1Mbps/40m,直接传输距离最远可达10km/5kbps,挂接设备数最多可达110个。CAN为多主工作方式,通信方式灵活,无需站地址等节点信息,采用非破坏性总线仲裁技术,满足实时要求。另外,CAN采用短帧结构传输信号,传输时间短,具有较强的抗干扰能力。
CAN总线与其它通信协议的不同之处主要有两方面:一是报文传送不包含目标地址,它是以全网广播为基础,各接收站根据报文中反映数据性质的标识符过滤报文,其特点是可在线上网下网、即插即用和多站接收;另外一个方面就是特别强化了数据安全性,满足控制系统及其它较高数据要求系统的需求。
1.2 J1939通信协议
J1939协议是在CAN总线通信协议2.0B(29标识符)之上具体实现了应用层,是SAE为重载卡车和客车制定的通信协议;以CAN 2.0B为基础,物理层标准与ISO11898规范兼容并采用符合该规范的CAN控制器及收发器。J1939协议将CAN标识符划分为如下几个部分:优先级(P)、数据页(PGN)、协议数据单元(PDU)格式、PDU特定域(PS)和源地址(SA)。J1939/71应用层文档定义了车辆控制的各种参数及命令的PGN。
由此可见,J1939与CAN通信协议的区别在于29位标识符(ID),数据场相同。J1939将CAN的29位标识符(或称辨识别)进行了详细的物理定义。通过PDU将CAN标准格式封装为J1939协议格式。PDU信息帧又由优先权P、保留位R、数据页DP、协议数据单元PF、扩展单元PS、源地址SA和数据场DATA七个部分组成,即CAN的29位标识符加上数据。
2 总体设计
2.1 汽车电控网络结构
汽车内ECU之间的数据传输特征主要差别在于数据传输频率,例如发动机高速运行时,进行的是高频数据传输,每隔几ms就传输1次;而在低速运行时,进行的是低频数据传输,每隔几十ms乃至几百ms才传输1次。然而为了满足实时性要求,就要求汽车内每个控制单元尽可能实现汽车公共数据共享,但又由于每个控制单元对实时性的要求是因为数据的更新速率和控制周期不同而不同的。这就要求其数据交换网是基于优先权竞争的模式,且本身具有较高的通信速率。CAN总线正是为满足这些要求而设计的。CAN已有国际标准,即高速场合的ISO11898和用于低速场合的ISO11519-3。
通常的汽车网络结构采用多条不同速率的总线分别连接不同类型的节点,并使用网关服务器来实现整车的信息共享和网络管理。若按照美国汽车工程师协会(SAE)车辆网络委员会标准SAE J2057,将汽车数据传输网划分为三类。这里可用图1简单说明。其中网关是汽车内部通信的核心,通过它可以实现在CAN总线上信息的共享以及实现汽车内部的网络管理和故障诊断功能;将各个数据总线上的信息反馈到仪表板总成上的显示屏上,驾驶者通过仪表板上的信息就可以知道各个电控装置是否正常工作了。
2.2 通信平台硬件设计
在设计中,主控芯片CPU选用51系列的单片机。CAN通信控制器执行完整的CAN协议,完成通信功能,包括信息缓冲和接收滤波,故CAN控制器选用Philips的SJA1000。选用PCA82C250作为CAN总线的收发器,PCA82C250是CAN协议控制器和物理总线之间的接口,在运行环境中具有抗瞬变、抗射频和抗电磁干扰性能,内部的限流电路具有电路短路时对传送输出级进行保护的功能。传输介质采用屏蔽电费,在测控节点与介质之间加入光耦电路,以提高总线接口的抗干扰能力。图2为通信平台硬件框图,图3为控制器与收发器连接接口。
为进一步提高系统的可靠性,需要考虑到系统的冗余设计。由于汽车环境恶劣且干扰因素较多,在CAN_H和CAN_L信号线与地线之间分别并联了两个电容,滤去噪声,使信号传输平稳。双屏蔽电费可设两套,在两套介质上同时进行信息传输。接收方只用一个介质,在冗余和非冗余段的连接临界点进行总线切换。
2.3 软件设计
简单地说,本通信平台所要实现的功能就是,使各个节点(ECU)通过CAN总线实现相互通信,发送接收命令、信息等,并实现数据的共享,从而提高各自的控制性能和运行效率。汽车上CAN数据总线的每个节点(ECU)都有自己的地址和名称相对应。ECU地址指出了数据传送的目的地,而其名称则标识了ECN的基本功能。节点连续监视着总线上发出的各种数据。当所收到的数据地址值与自身地址吻合时,该节点就获得令牌。在通信规约中,唯一获得令牌的该节点有权发送数据,以防止两个或两个以上的节点同时传输数据引起混乱。同时每一个节点都有机会得到令牌,完成数据传输。
本软件设计是基于Keil C语言编写的。程序主要由主模块、中断处理模块及数据通信模块等组成,如图4所示。
图4
主模块完成对硬件初始化、寄存器的配置、SJA1000初始化等;中断处理模块包括数据中断的发送、接收、错误处理及报警处理等;数据通信模块完成数据的请求、发送、接收等。
当一个节点A发送数据请求报文(远程帧),向另外一个节点B请求报文(应答帧)时,节点B接收到请求后,经过判别,而后发送数据(应答帧)。由于数据请求没有数据场,所以相对数据帧长度小很多。经分析验证之后与节点B收到的数据相同,请求数据程序得到验证。
结语
在现代汽车的设计中,CAN总线已经成为构建汽车网络的一种趋势;而汽车网络作为直接与汽车内部各个ECU连接并负责命令的传递、数据的发送及共享,其可靠性和稳定性与整车的性能紧密相关。本文的设计开发是在基于试验条件下搭建的仿真平台,节点之间的通信是通过对等的CAN通信节点进行的。试验表明其运行性能稳定可靠,但实用化仍需要进一步的研究和改进,且程序的通信处理能力、纠错和容错能力有待进一步的提高。