基于Android平台的车用诊断仪设计

2017-05-19 12:26许强
计算机时代 2017年5期
关键词:Android平台

许强

摘 要: 车用诊断仪通常由汽车厂商自主定义,致使诊断仪软硬件自成体系,通用性不强。为提高诊断平台的开放性、硬件的低依赖性及便携性,设计通用型的车用诊断仪很有必要。文章提出一种车用诊断设计方案,借助蓝牙模块转发消息,实现车载ECU与Android移动设备间的通信,Android平台数据库用XML构建,诊断软件依据ISO15765及UDS实现应用层及网络层功能。在汽车模拟台的测试表明,该车用诊断仪实现了故障读取及删除等功能,为汽车分析诊断提供了便携及可拓展的解决方案。

关键词: Android平台; 汽车诊断; ISO15765

中图分类号:TP399 文献标志码:A 文章编号:1006-8228(2017)05-06-04

Design of vehicle diagnostic tool based on Android platform

Xu Qiang

(School of Electronics Engineering and Computer Science, Peking University, Beijing 100871, China)

Abstract: The vehicle diagnostic tool is usually defined by the automobile manufacturer, which makes the software and hardware of diagnostic tool a special system of its own, and no versatility. In order to improve the openness of the diagnostic tool and the independence and portability of its hardware, it is necessary to design a general purpose vehicle diagnostic tool. This paper presents a design scheme of vehicle diagnosis, which transmits messages with Bluetooth module to realize the communication of onboard ECU and Android mobile devices. The database on Android platform is built by XML; the diagnostic software realizes the application layer and network layer functions in accordance with the ISO15765 and UDS. The test results on vehicle test bench show that this vehicle diagnostic tool can read and delete DTC (Diagnostic Trouble Code), and makes vehicle diagnostic easy and portable, it is a scalable solution.

Key words: Android platform; vehicle diagnosis; ISO15765

0 引言

車载诊断仪是一种汽车诊断设备,可识别车载ECU(电子控制单元)存储的故障,通过车用诊断仪可以将存储于车内ECU的故障代码及相关信息读取出来,以方便车辆管理和维修使用。车载诊断系统包括诊断仪和多个车载ECU。诊断仪ECU执行诊断过程,其实是依据车上设备发生的信号决定车辆是否处于异常状态。一旦任何的异常状态被检测到,诊断仪将在其EEPROM存储当前诊断结果,EEPROM中存储允许标志在打开状态则指示某个车载ECU处于异常状态[1]。

车载诊断系统最初是为了控制日趋严峻的汽车污染问题而设计构建,目前基于CAN总线的ISO15765汽车网络诊断协议已经在多数汽车厂商普遍采用。但当前国内主流汽车诊断工具基于单片机或FPGA上开发而成,导致汽车诊断设备拓展性及便携性不足,仅适用于专业汽车技术人员使用。如果能将车载诊断系统构建于一个用户体验良好的移动操作系统,那么汽车诊断的门槛将降低,不管是车主还是汽车从业人员都将因此受益。本文通过对汽车诊断协议ISO15765的分析与研究,结合UDS统一诊断服务以及自主设计的蓝牙转CAN适配器,并最终在Android平台上开发出汽车故障诊断仪。由于诊断仪采用Android平台,用户可以灵活的定义诊断服务应用层的数据库,方便地应用到所有支持标准诊断协议ISO15765的车辆上。用户可以使用安装本软件的Android设备快速查询车辆故障,进行相应的保养维修。

1 车载诊断协议的研究

ISO15765诊断协议是针对基于CAN总线的汽车故障诊断系统的一般诊断要求制定的。CAN总线是一种带CSMA/CD载波监听多点接入/碰撞检测功能的总线,多个CAN节点分别可以发送不同优先级的消息,检测到碰撞时,消息优先级低的节点自动选择放弃发送,在总线下次空闲时即可重启发送。ISO16765可以满足E-OBD的系统要求[2],与ISO14230应用层的服务和参数完全兼容[3]。以开放系统互联(Open System Interconnection,OSI)7层参考模型为基础,ISO15765将通讯系统分为4层,分别为物理层、数据链路层、网络层和应用层。ISO15765通信模型如图1所示,诊断仪根据应用层中定义的诊断服务发送请求报文。消息向下传到网络层后,将根据协议定义中的帧分解、帧组合、位填充和时序控制等步骤执行消息流传输控制。传输数据的长短将决定采用单帧传输或多帧传输,数据链路层修改打包上一层数据,组成能在CAN总线上传输的数据帧。

2 基于Android平台的车用诊断系统框架设计

车用诊断系统的功能包括:与车辆通讯,读取控制单元ECU中存储的故障码[4],或者刷写控制单元软件,更改控制单元配置信息,初始化及标定硬件等。而比较简易的是读取控制单元ECU中存储的故障码,而本文将关注这一基本功能的软件实现。目前汽车产品电子设备方面成本日益上升,是因为用户对汽车舒适性、安全性方面的需求剧增,因此车用控制单元ECU数量同样增长,豪华型轿车如奔驰控制单元ECU的数量依据车型一般为40-60个。车用诊断系统检测到部件故障时,将确认故障零件的来源。以一般高档轿车为例涉及的控制单元有:电子钥匙控制单元(EZS)、车身控制器(BCM)、中央传动控制单元(CPC)、电子助力转向系统(EPS)、车载娱乐主机(HU)等,在确定问题部件后,可以通过查询数据库的方式,查找故障代码具体描述,触发机制,维修建议等。而本文目的在于开发基于Android移动设备的汽车故障诊断软件,使汽车用户或从业者便捷的检测车辆故障。

2.1 诊断仪系统整体方案

车用诊断仪由CAN转蓝牙通信接口板以及Android设备应用软件两部分。系统框架图如图2所示。

诊断仪系统包括Android移动设备、CAN转蓝牙接口板、汽车内部网络三部分,故障发生时汽车内部控制单元ECU将自行存储故障码,当从Android移动端诊断请求命令发出后,开始一轮数据的交互。首先通过UI操作Android移动设备依据数据库提取对应诊断服务的指令,通过蓝牙发送指令,指令经过接口板进行消息转发形成CAN数据格式,与汽车内部网络上被测ECU进行通信,被测ECU提供故障码读取服务,将故障码上传经接口板转发,最终由应用层协议及数据库查询解析结果,显示于UI界面对应的故障形式。

2.2 系统设计

2.2.1 CAN转蓝牙通信接口板设计

CAN转蓝牙接口板可提供诊断的便携性,在设计中接口板MCU使用STM32F407ZET,采用TJA1050作为CAN收发器,蓝牙串口模块采用HC-06,串口波特率为115200bps,CAN接口的波特率为500kbps,系统主频为168MHz。CAN转蓝牙通信接口板硬件结构如图3所示。

CAN转蓝牙通信接口板工作流程为,首先初始化配置蓝牙模块和CAN模块,对于消息的接收由蓝牙接收中断和CAN接收中断处理器来做。接收到CAN或蓝牙的消息后,剥离消息的头部、尾部及控制字段只保留消息数据段,并存入对应的缓存区,缓存区大小为128KB。Main主循环中持续检查缓存是否溢出,并在发送缓存空闲时装载发送数据。定时中断处理器负责查看数据转发中存在的错帧、丢帧或缓存溢出等情况向Android移动端报错,处理数据重传及缓存的重置。CAN转蓝牙接口板软件流程图如图4所示。

2.2.2 Android移动设备应用软件设计

为了设计一种通用化的车用诊断仪,采用XML构建数据库。用XML文件配置数据库优势为在一个地方对数据库进行配置,不用牵扯到具体的代码,可维护性更高[5]。XML数据库方便开发各种动态应用,表示的信息独立于平台,数据库中需要存储车厂提供的车载ECU诊断数据集,诊断数据集通常涵盖故障代码、故障描述、触发条件、维修指导等。

XML文件放在只读的assets文件夹内,Android中读取系统文件或者资源的时候,都可以通过getResources方法获取到Resources对象,然后通过其获取到相应的资源。由于XML所在文件夹是只读的保证了数据库的安全。

基于CAN总线UDS协议,诊断仪将具备的功能有读取故障码、清除故障码、显示故障码描述,在梅赛德斯奔驰工程标准中UDS服务和诊断协议规定,读取故障服务ID为0x19车用诊断仪可以通过此诊断服务,及各个控制模块ECU的诊断ID(如发动机控制模块ID为0x7E0)获取控制模块的DTC(Diagnostic Trouble Code)。相同的清除DTC服务ID为0x14[6]。诊断服务的实现过程为:诊断仪向车上被诊断ECU发送请求报文,ECU返回响应报文。诊断仪从返回报文中解析DTC后与XML数据库中故障信息进行查询匹配,并将匹配内容显示于UI界面。

本文中用于实验调试的Android移动设备为一款华为mate9手机,Android手机已成为人们日常通讯使用的工具,基本全部配有蓝牙功能。车用诊断仪软件将具备如下功能:①蓝牙连接配对;②解析数据包提取故障码,通过故障码查询数据库的故障提示;③诊断仪应用UI界面设计。蓝牙通信功能采用Android API 17 Platform中Bluetooth函数实现,Android设备为主设备,CAN转蓝牙接口板为从设备。从设备广播UUID及相应服务,主设备接收,到从设备的广播进行蓝牙配对连接,蓝牙报文的传输通过主设备对从设备。解析数据包提取故障码是因为接口板只对CAN消息数据部分转发而不解析,这部分将依据UDS协议完成解析。通过故障码查询数据库的故障提示,是将故障码与厂商数据库中相应的故障提示匹配用于显示。算法流程如图5所示。

3 系统分析与测试

本文采用CAN转蓝牙接口板及Android平台的移动端实现汽车便携化诊断功能。其中CAN转蓝牙接口板自行设计制版,蓝牙模块传输延迟3ms左右,信号有效传输距离10米,满足便携式诊断需求。Android移动端将消息处理器划分为发现设备、开始查找设备、结束查找设备、连接失败、主动连接成功、收到连接成功、收到消息、发送消息等8个状态用于蓝牙功能的状态切换及实现。Connectthread用于主动连接远程蓝牙设备,Connectedthread用于已建立连接后启动的线程,需要传入两个参数,socket用来获取输入流,读取远程蓝牙发送的消息,handler用于在收到数据时发送消息。ClearDTCthread用于传出清除错误指令,ReadallDTCthread用于传出读取DTC指令,传入接收到的消息,并匹配解析故障码显示于UI界面。测试平台如图6所示。

系统测试平台包括安装诊断仪APP的Android移动终端、CAN转蓝牙接口板以及梅赛德斯奔驰C级车电器系统模拟台。测试步骤如下:选用华为mate9作为测试设备,将CAN转蓝牙接口板与模拟台诊断接口板连接,为模拟台系统上电。使用Android设备配对接口板。成功配对后读取全部载入模块故障码,清除故障码等操作。读取故障码界面如图7所示。

4 结束语

本文通过对汽车诊断协议ISO15765和UDS统一诊断服务的研究,充分利用XML平台无关性的特点,构建了汽车故障XML数据库,使其能方便的拓展到其他操作系统。自主设计了CAN转蓝牙接口板实现了数据消息的转发。通过更改源码实现了Android平台车用诊断仪。此软件可适用于Android 7.0。通过搭建诊断测试平台,对V205模拟台ECU进行故障码读取及故障删除。测试结果表明,车用诊断仪可以诊断并删除当前错误,系统运行正常。本文设计的诊断仪可实现一种便携式的车用诊断工具。

参考文献(References):

[1] Electronic control system and method for vehicle diagnosis [P]. US. 701/32.3. 8412405 04/02/2013.

[2] 羅锋.汽车网络与总线标准[J].汽车工程,2003.4(1).

[3] 李东江等.汽车车载网络系统(CAN-BUS) 原理与检修[M].机械工业出版社,2005.

[4] 蔡浩.汽车故障诊断系统的设计和开发[D].上海交通大学硕士学位论文,2009.

[5] 冯建华等.纯XML数据库研究综述[J].计算机应用研究,2006.23(6):1-7

[6] Ralf Pfaff.MBN-10747 Road vehicle Unified DiagnosticService(UDS)-Diagnostics Protocol(based on ISO 14229-1)[S].Plant 059,2008.6.

猜你喜欢
Android平台
基于Android平台的儿童跟踪系统
基于Android平台的老人跌倒检测算法及APP设计
基于Android平台软件开发技术研究
基于Android平台的人脸识别系统设计与实现
基于Android平台的健康医疗APP设计与开发
Android手机主题设计 
基于Android的Python语言英汉维电子词典设计与实现
Android平台下的空气质量和天气情况查询应用设计与实现
基于Android的移动GIS系统的应用与实现
基于移动互联网的糖尿病医疗辅助系统设计与实现