汽车故障自诊断系统与故障诊断仪V.A.G1551研究
2009-05-05
作者:徐 峰1 黄 河1 陈贤章2 杜
摘 要: 着重研究了汽车故障诊断仪V.A.G1551的工作原理,初步给出了开发与其兼容的汽车诊断仪的方法,并简要介绍了汽车诊断技术的发展历程与发展趋势。
关键词: 汽车故障诊断仪 OBD-II V.A.G1551
随着微机在汽车上的应用日趋广泛,不仅提高了汽车的性能和舒适性,也使整个汽车控制系统变得越来越复杂。因此,用户的汽车一旦因故障抛锚时,维修人员能否迅速找到发生故障的部位并加以排除就成为摆在汽车制造商面前的重要课题。当今时代,汽车工业群雄鼎立,售后服务的方便和快捷必然成为竞争的焦点。这就要求在丰富汽车各种功能的同时,完善和提高故障的检测能力,使汽车更安全、更易于维护。
1 汽车故障自诊断技术
在市场需求的推动下,汽车故障诊断技术和故障诊断设备得到了极大的发展,汽车诊断也作为一门专门技术发展起来。汽车故障自诊断装置一般包括车载故障自诊断装置和汽车故障诊断仪。
1.1 车载故障自诊断装置
1976年美国通用汽车公司推出了世界上第一个电子点火控制系统MISAR,其中已具备了自诊断功能,用于诊断控制发动机点火时间的微机,发动机冷却水温度和蓄电池电压等输入信号,当发生异常情况时报警指示灯亮。随着汽车电子技术的发展,故障自诊断系统已能对各传感器、执行机构和ECU本身进行监测,并能判断和区分故障类型,以故障代码的形式存储起来,供维修人员用专门的故障代码读取设备读出。故障自诊断技术不仅应用于发动机电子控制系统中,而且在自动变速箱、防抱死制动装置、安全气囊等系统的微机控制单元中广泛使用。世界各大汽车公司都推广了这一技术,并开发出与各自车型配套的故障代码读出设置。这就给用户在汽车运行中及时发现故障和汽车修理时故障的查询带来了极大的方便。
1.2 汽车故障诊断仪
汽车故障诊断仪是和车载故障自诊断系统配套使用的,从本质上看,它相当于自诊断系统的终端设备,起到人机交互的作用。随着微机技术的发展,故障诊断仪能完成的功能愈来愈丰富,现归纳如下:
·显示故障代码,同时显示发生故障的部位、检查的方法、检测的标准数据等,并打印上述信息;
·清除故障代码;
·汽车运行实时状态数据的显示,维修人员可对照标准数据,通过分析数据偏离标准数据的方向和大小找出故障的原因;
·向ECU发出执行器强制动作的命令,以查看执行器是否工作正常;
·存储汽车运行的状态数据和故障信息,向个人计算机或故障诊断专家系统输出。
2 故障诊断通讯接口OBD-II标准简介
早先的故障诊断仪都是由各个整车制造厂或仪器制造商各自开发的,诊断接口和通讯方式各不相同,不能互相通用。以诊断插座为例,福特车系有7针、25针,奔驰车系有圆形9针、38针、长方形16针等等。这种各自为政的局面不仅给维修工作带来了麻烦,而且也增加了维修成本和人员培训费用,反过来也影响了产品在全球范围的销售。
自1987年起,美国加州大气资源局(CARB)规定车载故障自诊断系统必须能够对汽车排气系部件进行监测。1994年CARB颁布了更为严格的废气排放控制法规,规定与排气相关的部件必须与被称为万能扫描工具的故障诊断仪进行通信。同时,美国环境厅(EPA)也采取相应措施在全美推广使用。在CARB的要求下,美国汽车工程学会(SAE)进一步推进了与故障诊断仪相关的标准化工作,形成了诊断仪接口的OBD-II标准。
OBD-II是ON-BOARD DIAGNOSITICS的缩写,即第二代随车电脑诊断系统,它代表了目前大部分诊断仪的技术水平,可以说是一个实际的标准,因而得到了汽车制造商的支持。其主要特点有:
·诊断插座统一为16针插座,并统一安装于驾驶室仪表板下方。诊断插座如图1所示,引脚定义如表1所示;
·串行数据通信协议采用ISO9141和SAE两个标准;
·具有统一的5位故障代码。例如P1352,第一个英文字母代表被测控制器,如P代表发动机电脑控制器(Power),B代表车身电脑控制器(Boby),C代表底盘电脑控制器(Chassis),第二个字代表制造厂,第三个字代表SAE定义的故障范围码,最后两个字代表原厂故障码;
·具有用诊断仪直接读取并清除故障码的功能;
·具有行车记录功能,能记录车辆行驶过程中的有关数据资料;
·具有记忆并重新显示故障信息的功能。
3 V.A.G1551功能简介
V.A.G1551是大众集团内部售后服务通用的汽车电子系统维修、诊断仪器,可以读取电子控制汽油喷射发动机、自动变速箱等十多个汽车电子系统的诊断和测试信息。比如在检修发动机电子时,维修人员可以使用其来读取故障代码,同时也可以读取发动机实时状态参数如转速、水温、负荷、电压、喷油时间等,另外还能向ECU的各执行机构发出强制执行命令。操作时,将诊断仪与汽车排档前的诊断插座连接即可。诊断插座符合OBD-II标准,其中引脚4为车身搭铁,引脚7为B.D.DIAKM(即K线),引脚16为蓄电池正极,其余引脚均为空。
使用时首先要输入检测对象的地址代码,如发动机电子为01,然后要选择功能,如查询故障代码的功能号为02。具体使用方法见相关资料。
诊断插座的引脚7应与汽车上各电子控制系统的K线相连接,诊断仪一次只能与一个电子控制系统通信。开始时,诊断仪以广播的方式通过K线发送识别信息(即地址码),但只有与地址码相对应的电子控制系统才作出响应,于是诊断仪和该电子控制系统开始通信,其余各系统仍处于待机状态。
4 V.A.G1551与发动机电子通信规律初探
由于条件限制,本文只研究了V.A.G1551与Engine Electronics的通信规律,并且ECU只限于MOTRONIC M1.54P。
4.1 利用计算机串口截码
考虑到V.A.G1551与ECU的通信码均为串口信号,只是与RS-232标准串口信号的电压不同,标准串口信号的“1”用-12V表示,“0”用+12V表示,而K线的“0”用0~1.3V表示,“1”用12V表示,所以只要设计一块转换卡,把K线的串口信号转换为标准串口信号,即可实现利用计算机串口来截取V.A.G1551与ECU的通信码,从而研究它们的通信规律。转换卡除了能完成电平转换功能外,工作频率要大于10kHz,且输入电阻要大,不至于影响V.A.G1551与ECU的通信。图2给出计算机串口截码原理图。
采用转换卡截码的效率很高,每次截码得到的文件也较小,大约1Kbytes多,并可以直接在编辑软件下阅读,使用非常方便。下面的任务就是对V.A.G1551的各个功能逐个进行截码研究,弄清在发动机的各个工况下它们是如何进行通信的。
4.2 截码数据分析
下面给出V.A.G1551在功能号04数据块000进行通信时截码得到的数据,并进行简单分析。
在V.A.G1551发出地址码后,ECU回答控制器版本号,如表2所示。
接下来,双方发出握手信号以不中断联系,并且ECU等待V.A.G1551发出指令:
03FC 0BF4 09F6 03
03FC 0CF3 09F6 03
03FC 0DF2 09F6 03
V.A.G1551发出功能04-000指令,ECU回答相应信息,并且双方不断问答,直到用户输入“→”:
03FC 0EF1 11EE 03
0DF2 0FF0 F40B 659A A25D C837 1DE2 807F 5BA4 02FD 00FF 07F8 1FE0 03
03FC 10EF 11EE 03
0DF2 11EE F40B 659A A25D C837 1DE2 807F 5BA4 02FD 00FF 07F8 1EE1 03
03FC 12ED 11EE 03
0DF2 13EC F40B 659A A25D C837 1DE2 807F 5BA4 02FD 00FF 07F8 1EE1 03
接下来双方又进行握手等待,直到用户发出结束指令,通信结束:
03FC 14EB 09F6 03
03FC 15EA 09F6 03
03FC 16E9 09F6 03
03FC 17E8 09F6 03
03FC 18E7 06F9 03
在这些数据中,还可以发现一个特殊的码子,即每一行的第二个数据,经分析,这是一个记数码,通信双方每发出一次信息均加一。并且可以看到,在功能号04数据块000时V.A.G1551发出的命令为11,结束指令为06。双方采用的校验方式为反码,即接收方发出接收码的反码,发送方收到反码后就认为对方接收正确(如V.A.G1551发06,ECU答F9)。
经过多次实验,可以获知V.A.G1551在检测发动机电子的各个功能(包括读故障码和消除故障码)时的通信码,这些通信码为研制与V.A.G1551兼容的汽车故障诊断仪打下坚实的基础。
V.A.G1551除了可以读取故障代码外,还可以读取发动机实时状态参数如转速、水温、负荷、电压、喷油时间等,经过数据分析,V.A.G1551并不是把这些参数直接显示出来,而是把这些参数的码子经过某种转换再显示出来。
5 开发与V.A.G1551兼容的计算机汽车诊断系统
V.A.G1551是德国制造的仪器,价格昂贵,并且有部分V.A.G1551是德文显示,用起来多有不便,因此有必要开发与其兼容的汽车诊断仪。通用的计算机系统有标准的串口,且编程余地大、易调试、所以可先开发计算机诊断系统。
5.1 硬件部分
同样,计算机系统的串口与V.A.G1551的串口不兼容,因此需要设计一块适配卡,与上述转换卡不同的是,适配卡的数据流是双向的,但因为通信是半双工的,所以适配卡上应加上一个模拟开关,以隔离双方数据。图3给出适配卡原理图。
当计算机发出数据时,模拟开关接通,数据通过K线发给ECU,同时数据又发回给计算机,当计算机接收到数据后可判定数据已发完,此时应立刻关闭模拟开关,等待ECU回答。在这个过程中模拟开关的关闭时间是个关键,若模拟开关关早了(即计算机串码还未发完)则ECU接收的数据会出错,若模拟开关关晚了(即ECU已发出数据)则会影响计算机接收数据。
5.2 软件部分
软件采用模块化设计,即把主程序编成一个模块,V.A.G1551每一个功能都编成一个模块,每个模块分别汇编后再连接成可执行文件。采用模块程序设计有以下一些优点:
(1)每个模块任务明确,便于理解;
(2)单个模块易于编写和调试;
(3)便于程序的维护和修改;
(4)要增加诊断仪的功能,只要增加相应的模块即可。
编制程序的时候可采用逐渐增加功能的方法,即先编主模块和第一个功能模块,调试成功后连上第二个功能模块再调试,直到全部完成。
通过一段时间的调试,笔者已初步开发完成与V.A.G1551兼容的计算机诊断系统,当然目前只限于诊断M1.54P的发动机电子。图4给出软件的主框图。
本文介绍的方法是通过研究V.A.G1551与ECU的外部通信规律来开发与V.A.G1551兼容的汽车故障诊断仪,应该说在主要功能上能与V.A.G1551保持一致,但在细节问题上还有差异。并且本文尚未涉及到另一个很重要的方面,就是V.A.G1551与ECU是如何解决误码问题的,也就是说当V.A.G1551收到ECU的确认码是错误的时候会做何动作。这些问题还等待我们去作进一步研究。
参考文献
1 邹长庚.现代汽车电子控制系统构造原理与故障诊断(上).北京:北京理工大学出版社,1996
2 杨妙梁.汽车实用电子技术与90年代市场需求.北京:中国物资出版社,1997
3 BOSCH.Automotive Electric/Electronic Systems