基于Android手机蓝牙技术的汽车故障诊断系统

2015-01-01 02:27龚元明
机械工程与自动化 2015年5期
关键词:蓝牙故障诊断控制器

林 霞,龚元明

(上海工程技术大学 汽车工程学院,上海 201620)

0 引言

故障诊断功能已经成为新车出厂前测试和修理厂故障检测不可或缺的重要手段[1]。现如今手机几乎人手一部,智能手机也向着移动终端的方向发展。据统计2014年在全球智能手机操作系统中,Android系统以其显著的开放性、丰富的硬件选择等绝对优势占据市场的最大份额。为实现汽车故障在线监测和诊断,本文将手机蓝牙(Blue tooth)、CAN(Controller Area Network)总线、Android智能手机三者结合在一起,实现了基于蓝牙技术的无线汽车故障诊断系统。

1 无线汽车故障诊断系统的组成

无线汽车故障诊断系统主要由下位机和上位机两部分组成,如图1所示。上位机是客户端,基于手机Android系统;下位机即CAN转蓝牙控制器模块(以下简称Bluetooth-CAN模块),通过OBD接口(CAN总线)和汽车ECU(电子控制单元)通信,读取来自ECU的报文信息[2],并转换成蓝牙串行数据格式,发送给上位机。手机客户端有两个线程,一个线程是子线程,负责接收和存储数据,并在接收完一组数据,判断数据格式正确后,给上位机回码,请求发送下一组数据;另一个是主线程,提取子线程存储的数据,与数据库对比,对数据进行处理。

2 无线汽车故障诊断系统的协议转换

无线汽车故障诊断系统的基本流程是由Android手机自带的蓝牙API接口,通过APP(Application第三方应用程序)客户端,实现手机蓝牙设备与Bluetooth-CAN模块的无线连接。设备连接正常后,遵循一定的数据格式即协议,采用串行数据通信实现数据的输入、输出。无线汽车故障诊断系统结构框架如图2所示。其中,主要涉及的是ECU、Bluetooth-CAN模块、手机端蓝牙三者之间数据的传输和协议转换(J1939协议和蓝牙协议)。

图1 无线汽车故障诊断系统的组成

图2 无线汽车故障诊断系统结构框架

2.1 J1939协议

J1939协议是由美国汽车工程协会发布的,以CAN总线为基础,支持闭环控制的在多个ECU之间高速通信的网络协议。本系统通信基于J1939协议,采用CAN规范中的CAN2.0B扩展帧格式,波特率为250kBd/s。基于CAN通信的J1939协议的ECU能提供发动机性能监测参数和整车网络通讯,实现整车网络中多个ECU的数据共享;同时J1939协议还支持故障诊断,可以读取或者清除诊断故障码。

本系统ECU主要采用的通信方式为单帧通信和多帧通信。在监测和整车网络通信时主要采用单帧通信的方式,但由于故障码个数的多变性,在故障诊断时,单帧通信和多帧通信结合使用。

ECU发送的故障诊断数据帧主要包含:故障类型、故障码(DTC)和参数组编号(PGN)等。故障类型主要分为当前故障和先前故障。诊断当前故障和先前故障所包含的故障码有3种可能:无故障、单个故障和多个故障。无故障和单个故障可使用单个CAN数据帧发送全部信息,而汽车大多情况下存在多个故障,那么就需要多个数据帧才可以把信息发送完毕,这时就需要用J1939协议的拆装和重组消息的传输协议功能。

2.2 蓝牙协议的实现

任何蓝牙设备必须遵循蓝牙规范才能实现各厂商的产品互连互通,蓝牙协议包括核心协议层、替代电缆协议层、电话控制协议层和选用协议层[3]。除了以上协议层外,蓝牙协议栈中还包括2个接口:一个是HCI(主机控制接口),用来为基带控制器、链路控制器以及访问硬件状态和控制寄存器等提供命令接口;另一个是与基带处理部分直接相连的音频接口,用以传递音频数据。本系统用到的是HCI、逻辑链路控制和适配协议(L2CAP)、串行仿真RFCOMM、链路管理协议(LMP)、电话替代协议和选用协议。其中的链路管理协议(LMP)负责蓝牙组件连接的建立,逻辑链路控制和适配协议(L2CAP)负责高层传输,应用层协议屏蔽基带协议的适配协议即为适配层。

2.3 自定义协议

实现蓝牙协议与J1939协议的连接,两者之间必须有统一的协议规范来实现,称为自定义协议。手机端自定义协议格式如图3所示,发送固定为12字节。Bluetooth-CAN端自定义协议格式如图4所示,发送固定为16字节。其中,ID数据帧标识符、PGN参数组编号和DT故障码这些标号根据各个企业自己设定的不同而定。

图3 手机端自定义协议格式

图4 Bluetooth-CAN端自定义协议格式

3 无线汽车故障诊断系统的实现

3.1 Bluetooth-CAN控制器模块设计

Bluetooth-CAN控制器模块通过OBD接口与发动机控制ECU通信,读取来自发动机控制ECU的信息,并转换成蓝牙数据发送给具有蓝牙功能的Android手机。

3.1.1 Bluetooth-CAN控制器模块的硬件设计

Bluetooth-CAN控制器模块的硬件主要包括:微控制器模块、CAN通信接口模块和蓝牙模块。

(1)微控制器模块:Bluetooth-CAN模块采用的控制器芯片是XC2238N-40F,是Infineon公司的16位XC2200系列微控制器,它提供了192kB~832kB的闪存、可选的EEPROM仿真、最大可达82kB的SRAM、最大CPU时钟频率为100MHz。为了达到AUTOSAR标准程序模型中关于独立于硬件进行软件开发的要求,控制器中集成了内存保护单元(MPU)。此外,Infineon还提供了单独的FlexRay通信控制器,可方便地添加到系统中。微控制器外围电路图如图5所示。

图5 微控制器外围电路图

(2)CAN通信接口模块:CAN通信接口模块是将汽车OBDII接口中CAN总线上的数据读取到微控制器中,同时将微控制器的数据发送到汽车的CAN总线上,本系统采用的芯片型号为TLE6250。

(3)蓝牙模块:本系统采用的蓝牙模块芯片型号为EMX-02A,是Modiatek公司专为智能无线数据传输而打造的FBT06系列,模块采用Bluetooth2.1,具有成本低、体积小、收发灵敏度高等优点。

3.1.2 Bluetooth-CAN控制器模块的软件设计

CAN转蓝牙控制器模块的软件部分是框架性的单片机编程,编译环境为Tasking。CAN转蓝牙控制器模块程序如图6所示。

3.2 手机端APP设计

Android手机端标配之一的蓝牙适配器连接的是Bluetooth-CAN中的蓝牙模块。当Android的content中的设备连接正常后,通过BluetoothSocket采用串行数据通信实现与CAN转蓝牙控制器模块的交互[4]。手机端界面设定如图7~图10所示。

主界面主要实现蓝牙的搜索、连接和断开,这个功能的Android程序已经有很多资料可供参考,在此不再赘述。蓝牙连接后跳入到连接界面,供客户去选择相应的需求,即故障码和数据流,后续也会有MAP表的标定模式。

图6 CAN转蓝牙控制器模块程序

图7 主界面

图8 连接界面

图9 故障码界面

图10 数据流界面

APP客户端的框架构建如图11所示。其分两个线程在运行,子线程是手机端蓝牙模块与Bluetooth-CAN中的蓝牙模块之间的数据交互,当前Activity中发出请求命令,Bluetooth-CAN模块将相应指令需求的数据从ECU中提取出来,进行数据转换处理,结果通过蓝牙的BluetoothSocket发送到手机端蓝牙,手机端接收数据并判断数据是否完整,对数据进行存储并发送回码(请求命令),请求下一组数据;主线程完成对界面的初始化,并提取手机端存储的数据与数据库进行对比,完成对数据的最终处理,并将结果直观地显示在相应的故障码或数据流界面。

图11 APP客户端的框架构建

4 结束语

基于Android手机蓝牙技术的汽车故障诊断系统的研究与设计能紧跟信息时代发展的最新潮流,是在已有传统手持式汽车故障诊断设备和Android系统研究的基础上研发的新型设备。系统具有价格便宜、体积小、使用方便的特点,目前已经投入市场,反响不错,极具大规模推广的市场前景。

[1] 陈新,胡小龙.基于GPRS的汽车故障诊断仪的远程诊断的设计[J].工业控制计算机,2006,19(4):70-72.

[2] 罗峰,孙泽昌.汽车CAN总线系统原理、设计与应用[M].北京:电子工业出版社,2010.

[3] 金纯,林金朝.蓝牙协议及其源代码分析[M].北京:国防工业出版社,2006.

[4] 李宁.Android/Ophone开发完全讲义[M].北京:中国水利水电出版社,2010.

猜你喜欢
蓝牙故障诊断控制器
蓝牙音箱的直线之美
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
紧急:蓝牙指尖陀螺自燃!安全隐患频出
因果图定性分析法及其在故障诊断中的应用
模糊PID控制器设计及MATLAB仿真
基于LCD和排列熵的滚动轴承故障诊断
MOXA RTU控制器ioPAC 5542系列
倍福 CX8091嵌入式控制器
基于WPD-HHT的滚动轴承故障诊断