首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

汽车CAN总线数据记录仪开发

汽车CAN总线数据记录仪开发

1、引言
20世纪80年代以来,随着汽车电子技术的不断发展,汽车上的电子控制单元越来越多,例如电子燃油喷射装置、防抱死制动装置(ABS)、安全气囊装置、电控门窗装置和主动悬架等等。在这种情况下,如果仍采用传统点到点的并行布线方式,将导致车上电线数目急剧增加,布线越来越困难,电线质量占整车质量越来越多,复杂电路同时也降低了汽车的可靠性,增加了维修的难度。为适应汽车电子设备迅速增加的应用需要,控制器局域网络CAN应运而生。目前,在汽车设计领域中,CAN几乎成了一种必须采用的技术手段,尤其是在欧洲,如奔驰(BENZ)、宝马(BMW )等都采用CAN总线实现汽车内部控制系统与各检测和执行机构间的数据通信[1]。汽车CAN总线数据记录仪能实时采集汽车CAN总线数据信息,它的研制对于熟悉和掌握汽车CAN总线的通信协议和信息内容,对于汽车故障维修以及进行汽车网络技术方面的应用研究具有重要意义。
2、CAN总线介绍
CAN是控制器局域网络(Controller Area Network)的简称,它是由德国Bosch公司及几个半导体生产商开发出来的,CAN总线是一种串行多主站控制器局域网总线。它具有很高的网络安全性、通讯可靠性和实时性,而且简单实用,网络成本低。特别适用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。CAN总线可有效支持分布式控制或实时控制。该总线的通信介质可以是双绞线、同轴电缆或光纤[2-3]。其主要特点如下:
•CAN总线为多主站总线,各节点可在任意时刻向网络上的其他节点发送信息,且不分主从;
•CAN总线采用独特的非破坏性总线仲裁技术,高优先级节点优先传送数据,故实时性好;
•CAN总线具有点对点、一点对多点及全局广播传送数据的功能;
•CAN总线采用短帧结构,每帧有效字节数最多为8个,数据传输时间短,并有CRC及其它校验措施,数据出错率极低;
•CAN总线上某一节点出现严重错误时,可自动脱离总线,而总线上的其他操作不受影响;
•CAN总线系统扩充时,可直接将新节点挂在总线上,因而走线少,系统扩充容易,改型灵活;
•CAN总线的最大传输速率可达1Mb/s,直接通信距离最远可达到10km(速率在5kbps以下);
•CAN总线上的节点数取决于总线驱动电路。在标准帧(11位报文标识符)时可达到110个,而在扩展帧(29位报文标识符)时,个数不受限。
3、CAN总线数据记录仪硬件设计
CAN总线数据记录仪工作时应挂接到汽车CAN总线上成为一个CAN节点,以便采集CAN数据信息。其系统硬件结构采用图1所示电路结构。各核心模块介绍如下。


图1 CAN总线数据记录仪结构框图


(1)主控模块(MCU)
本系统主控模块采用ATMEL公司的单片机AT89C52。它是一种低功耗、高性能、内含8KB闪速存储器的8位CMOS微控制器,与工业标准MCS-51指令系统和引脚完全兼容。AT89系列的优越性在于其片内闪速存储器可进行1000次的编程与擦除,且数据不易丢失,数据可保存10年。
(2)数据存储电路
CAN总线数据传输速率较高,而单片机运算速度慢且任务繁重。为确保数据采集过程中数据不丢失,单片机外部扩展数据存储器。当CAN模块接收到汽车CAN总线上一帧数据引起单片机中断时,中断服务程序将接收到的数据存储到外部数据存储器后马上中断返回,对于数据的处理及显示等繁琐的工作在主程序中完成。这样,确保了CAN总线数据接收的完整性和实时性。
(3)人机接口模块
CAN总线数据记录仪采用OCMJ5×10B中文液晶显示模块显示信息和接收到的数据。该模块内含点阵国标一级简体汉字和ASCⅡ码,可实现文本显示。其用户硬件接口采用REQ/BUSY握手协议,简单可靠。BUSY高电平有效,表示OCMJ忙,不能接受命令;BUSY=0时,表示OCMJ空闲[4]。同时REQ=1时通知OCMJ处理当前数据线上的数据。本系统利用单片机P1.6和P1.7作为与液晶显示模块的REQ和BUSY联络口。
本系统主要有设置、增、减按键。利用单片机P1.0-P1.2实现按键输入。
(4)通信模块
CAN总线数据记录仪接收到的汽车CAN总线数据可在液晶显示器上实时显示,也可以利用串行通信接口传输到上位机进行显示或数据处理和数据分析。本系统利用电平转换芯片MAX232实现单片机与PC机的串行数据通信。
(5)CAN模块
本系统采用的CAN控制器是SJA1000。SJA1000是PHILIPS公司生产的既支持CAN 2.0B,又支持CAN 2.0A的CAN控制器。与SJA1000配套使用的CAN收发器是PCA82C250,它是PHILIPS推出的CAN控制器和物理总线接口芯片,可提供对总线的差分发送和接收。它与ISO 11898标准完全兼容,并有高速、斜率控制和待机3种不同的工作方式,可根据实际情况选择。CAN模块总线控制器、总线驱动器连接基本方法如图2所示。为增强CAN总线节点的抗干扰能力,SJA1000通过高速光耦6N137后与82C250相连,这样就很好的实现了本系统与汽车CAN总线的电气隔离[5]。电源的隔离采用小功率电源隔离模块。这些部分虽然增加了接口电路的复杂性,但是却提高了系统的稳定性和安全性。
82C250与CAN总线的接口部分也采用了一定的安全和抗干扰措施。82C250的CANH和CANL引脚各自通过一个5Ω的电阻与CAN总线相连,电阻可起到一定的限流作用,保护82C250免受过流的冲击。CANH和CANL与地之间并连的30pF电容,可以滤除总线上的高频干扰和提高防电磁辐射的能力;而防雷击管可消除输入端与地之间的瞬变干扰。82C250的RS脚上接有一个斜率电阻,电阻大小可根据总线速度适当调整,一般在16~140kΩ之间。


图2 CAN总线控制器、总线驱动器电路连接图


4、CAN总线数据记录仪软件设计
CAN总线数据记录仪软件设计要求简单、实用、高效、便于扩充。本系统程序主要由主模块、CAN总线控制器初始化模块、中断处理模块等组成。主模块主要完成单片机初始化、键值处理、数据显示等任务。其中,键值处理主要是根据键值修改CAN数据接收波特率;数据显示是将存储在外部数据存储器的CAN总线数据逐帧显示。CAN总线控制器初始化模块用于SJA 1000总线控制器的初始化工作[6]。如设置命令寄存器(CR)为开放接收、出错、超载中断,置位复位请求位;设置验收码寄存器(ACR)和验收屏蔽寄存器(AMR);设置输出控制寄存器选择输出方式及建立输出驱动器的配置等。对于CAN总线数据报文接收是通过对ACR、AMR的写操作来设置验收滤波器。如果一条报文通过了验收滤波器的测试且接收缓冲器有空间,则完整的报文可被正确接收。通过滤波器的测试意味着报文识别码高8位(ID.10~ID.3)和验收代码位(AC.7~AC.0)必须相等,而这些位是被验收屏蔽位(AM.7~AM.0)的相应位屏蔽的。即如果满足以下列两等式之一,则报文被接收。
(ID.10~ID. 3)=(AC.7~AC. 0) (1)
(AM.7~AM .0)=11111111B (2)
CAN总线数据记录仪目的是接收CAN总线数据全部报文,因而AMR寄存器初始化设置时应满足等式(2)。
中断模块通过对IR寄存器各状态的判断,识别不同的中断源,作相应的处理。对于接收中断,应将接收缓冲区接收到的数据存储到外部数据存储器中,并立即跳出中断,进行主程序的处理或等待下一帧数据的接收中断,从而避免报文的丢失。
CAN总线数据记录仪能否顺利进行CAN数据的接收,初始化模块程序的设计是关键。由于采用了模块化程序设计方法,本系统程序运行效率高、使用灵活,有利于智能测控节点的升级。
5、CAN总线数据记录仪应用举例
大众车系CAN-BUS常见有舒适CAN总线、动力CAN总线等,以舒适系统CAN总线为例,说明CAN总线数据记录仪的使用。舒适系统CAN数据传递有五个功能[7]:中央门锁、电动窗、照明开关、后视镜加热及自诊断功能。数据采集之前,首先确定数据传输波特率,将CAN-L电缆与数字存储示波器相连,可在示波器上观察到CAN-L上的电压信号如图3所示。


图3 CAN-L电压信号


由图可知,位时间为16.0μs,可计算位速率如下:

利用按键设置CAN总线数据记录仪波特率。将记录仪测试端子分别接到舒适系统CAN总线的CAN-H和CAN-L线上,打开点火开关,接收到的数据如表1所示。

表1 打开点火开关时接收到的数据



由表1可以看出基于CAN总线的汽车舒适系统具有以下特性:
1、五个节点的ID首位都为1,因而舒适系统通信数据都为非实时数据;
2、五个节点ID从小到大顺序为,中央控制单元、左前门控单元、右前门控单元、左后门控单元、右后门控单元,网络的优先顺序也是这样;
3、中央控制单元和左前门控单元控制对象较多,其数据长度码为5,右前门控单元数据长度码为3,其他的为2;
利用CAN总线数据记录仪可进一步采集其他CAN总线数据信息并进行分析。
6、结论
便携式汽车CAN总线数据记录仪具有许多突出的优点:适合在汽车运动环境使用;采用通用元器件和软件模块化设计;能实时采集汽车CAN总线数据,试验表明系统工作稳定性较高。通过仪器的串行通信接口可将采集到的数据上传到PC机[8],利用PC机的分析软件完成数据的处理及分析,功能将更加强大。
返回列表