李捷辉,袁利娜,王名传,余 青
(江苏大学汽车与交通工程学院,江苏 镇 江 212013)
2008年国家环境保护部发布了《车用压燃式、气体燃料点燃式发动机与汽车车载诊断系统(OBD)技术要求》。按规定,所有达到GB 17691中第Ⅳ阶段排放水平的柴油机或装用柴油机的汽车应配备OBD系统,并按照OBD-Ⅰ/OBD-Ⅱ阶段及确保NOx排放控制措施正确工作的要求来设计、安装、生产发动机和车辆[1]。
选择性催化还原(SCR)技术是目前我国重型柴油机达到国Ⅳ阶段排放标准的最佳选择。当SCR系统中出现零部件不正常工作或失效时,排放就会恶化甚至超标,OBD系统通过实时监测与排放相关的零部件,指示出导致排放超标的相关部件。
配合OBD系统使用的诊断类型大致有两种:诊断仪和诊断软件。诊断仪一般仅限于故障码与数据的检测提取,不具备分析和判断故障原因与故障部位的功能;诊断软件大都与标定软件集成一体,软件系统庞大,价格昂贵,不适用于车辆的日常保养和检修。当前针对柴油机独立的故障诊断系统并不多见,因此,本研究针对带有OBD功能的柴油机SCR系统,选用Visual C++6.0开发工具和Microsoft Access数据库,自主设计一套基于对话框MFC的机外实时采集的故障诊断软件。该软件不仅自成体系,独立于标定软件,还具有大型诊断仪的智能化优点,能够在线读取故障,输出故障码、故障部位、故障原因以及故障处理建议等详细故障信息。
为了达到OBD法规认证要求,在SCR系统基础上需要新配备几类传感器,包括NOx智能传感器、催化剂前后温度传感器、尿素液位传感器以及检测压缩后空气压力的压力传感器等。同时OBD系统应对以下内容进行检测[1]:SCR系统效率的下降;系统完全拆除或用假系统代替(人为故障);SCR系统中电器件故障(如传感器的开路与短路等);尿素水溶液的加热系统;尿素水溶液定量喷射系统(如缺少空气供应,喷嘴堵塞等);尿素水溶液缺失,尿素水溶液给料活动等。
根据以上需要检测的信息,在设计诊断软件时,将故障分为3类,包括传感器故障、执行器故障、CAN总线通信故障。
1.1.1 传感器自诊断故障
柴油机SCR系统中使用的NOx传感器[2]和格兰富计量泵都有故障自诊断功能,可将自身诊断信息整合打包后以广播的形式发送到CAN总线上。OBD系统直接采集CAN总线上两组件报文,通过报文中的故障标志位信息判断故障是否发生。
1.1.2 传感器电路连接故障
发动机工作时,传感器不断向外发出信号,每个传感器都预先标定了信号值范围,OBD系统通过对传感器输出信号值与故障标定值进行比较,判断传感器的工作是否正常,超出标定限值时记录并发出相应的报警信息。此类故障大多为传感器处于短路或是开路状态。
1.1.3 传感器信号合理性故障
合理性诊断是指在传感器电路连接正确的情况下,传感器的输出值虽然在标定值范围内,但根据当前发动机的运行工况和其他传感器信号值,不应该出现该输出值,此时的诊断即为传感器信号合理性诊断。例如,在发动机实际运行过程中,除了尿素溶液本身消耗外,由于震动等原因,导致尿素液位信号值产生细微的差别,连续两次的尿素液位值不可能相等。若出现连续两次尿素液位值相等,则判定尿素液位传感器出现故障。
在控制系统中,执行器通过接收ECU控制信号执行相应命令,但执行的结果并没有反馈信号。为此对执行器的检测分为两种情况:一是通过添加额外的硬件,通过反馈信号直接检测;另外一种通过监测其他关联传感器信号的间接检测,向执行器发送控制信号后,若关联传感器信号值的变化趋势不符合规定,则判定为执行器工作故障。由于额外的硬件反馈回路会增加系统的复杂程度,提高系统成本,所以本研究采用第二种方法实现对执行器的检测功能。
发动机正常工作时,ECU、尿素泵以及NOx传感器等的数据报文会不断地发送到CAN总线上,OBD系统会连续地接收这些报文。如果在设定时间内,OBD系统没有接收到相关数据报文,则判定相应部件发生通信故障[3]。CAN总线的通信故障包括以下3种:ECU通信中断故障、NOx传感器通信中断故障以及格兰富计量泵通信中断故障。
在OBD-PC系统整体结构中,USB CAN智能接口卡将完成OBD系统与诊断软件间的信号传输,OBD系统输出CAN总线数据经USB接口电路输送至PC机,同时PC机的请求信号经变换后发送至OBD系统。故障诊断软件的整体结构见图1。故障诊断软件选用Visual C++6.0开发工具和 Microsoft Access桌面数据库系统,通过建立对话框式的MFC诊断软件编程[4],实现故障信息的自动读取、解析以及显示等。
根据故障诊断的基本理论,对软件进行模块化设计(见图2)。故障诊断软件包括数据通信模块、数据采集模块、数据库模块、数据分析模块以及主控程序用户显示界面。其中数据分析模块和数据库模块是软件设计的核心。
故障诊断软件是建立在数据采集处理和实时数据通信的基础上。通过数据通信与采集模块获得CAN总线上的J1939故障报文和发动机运行数据流;由数据分析模块对报文进行解析,提取故障报文中的SPN和FMI;由SPN和FMI查询数据库中故障的详细信息,并在线显示。专业人员根据故障提示信息及时处理故障,以免发动机排放进一步恶化。此外,还可根据需要查阅由数据采集模块获得的发动机数据流,对严重故障进行综合分析与判定。
2.2.1 数据通信
PC机和CAN总线连接的硬件部分采用USBCAN智能接口卡。接口卡的一端经USB与PC机连接,另一端与ECU上CAN总线直接相连,实现故障诊断软件和发动机之间的数据通信。
只有诊断应用软件的通信设定与OBDⅡ-PC接口设备的设定保持一致,数据才能正常传输。所以数据通信必须首先设置故障诊断软件的通信波特率、数据位、奇偶校验位以及停止位等。本研究通过Visual C++6.0编写与调用USBCAN接口卡库函数实现故障诊断软件与发动机之间的通信[5],分别完成对各自串口的初始化。
2.2.2 数据采集
数据采集模块负责接收采集请求信号和应答信号,采集的信息主要是DM代码和出现故障时发动机运行状态的数据流。接收到的SCR系统故障诊断信息需要放入故障诊断软件中的数据存放模块,然后从该模块读取相关数据信息并送入主控程序界面。在此期间需要创建一个线程以支持后台运行,并为该线程添加响应函数以设置相关变量;一旦CAN总线上有故障信息数据便可触发该线程,将数据送入相关变量并存储在数据存放模块内,方便显示和查询。
2.2.3 数据分析
数据分析模块用来分析数据采集模块的数据信号。发动机ECU按照SAE J1939协议要求的格式将报文发送至CAN总线,数据分析模块解析信息报文,根据解析出的故障代码值(SPN和FMI)从数据库中检索出对应故障的详细信息并显示。
SAE J1939在标准通信中仅使用CAN2.0B中的扩展帧格式[6],表1示出了数据信息是如何映射到扩展帧格式中的,根据报文的映射对应关系对报文信息进行解析。
表1 CAN帧与J1939帧对应格式
发动机运行过程中出现故障时,OBD系统将实时获取的故障信息按照SAE J1939协议要求的DM1[7](当前DTC代码)格式发送到CAN总线,故障诊断软件接收到DMl代码后对其进行解析,通过分析报文获得当前具体故障信息。DTC代码由4个独立域构成,这些独立的参数不是一个单独的数,而是一组描述故障的信息(见表2)。
J1939协议采用单帧DM1和多帧DM1两种方式传送数据帧(故障信息服务数据),两种数据帧均符合SAE J 1 9 3 9协议的CAN报文格式。如果故障信息可以放置在1个CAN数据帧中时,就采用单帧模式传送;否则采用多帧模式传送。DM1的DTC表示法见表3。
表2 DTC代码组成
表3 DM1的DTC表示法
表4示出在2 500r/min,472kW工况下采集的第145帧数据,以1个控制帧数据为例说明解析过程。
已知:参数组编号PGN(0xEC00),表示数据传输—连接管理;源地址SA(0x0),表示是由发动机ECU发出的数据;数据域Data Field(0x20 1A00 04FF CA FE 00)。
解析数据域可知有4组后续帧,后续帧的PGN为0xEB00,源地址为0x0,并且数据域的第1字节为01,02,03,04。在此工况下实际采集的后续帧分别为第168,185,209,226帧。将这四组后续帧的数据整合解析,得出每个故障的SPN和FMI。
根据故障的SPN和FMI以及车辆制造厂家设定的故障信息,就可确定故障的详细内容。在诊断应用软件中若要实现从数据域内解析出对应的SPN和FMI,就需要在程序中写入相应的算法,自动实现转换。
表4 采集到的实际报文
2.2.4 数据库构建
数据库为数据分析模块解析故障码提供故障信息查询服务。数据库内容是自行分析的故障信息,包括每个故障码所对应的SPN,FMI、故障原因、故障部件以及维修建议等。车辆动力系统故障代码已标准化,排气后处理系统的故障是由制造商自行定义的,可根据车辆和发动机厂家提供的相关信息构建诊断软件的数据库。
在故障诊断软件中建立Access桌面数据库,通过Visual C++调用标准的函数,经公用接口对数据库的内容进行访问。其中MFC的数据库扩展部分对使用ODBC数据资源的细节进行了封装,避免与数据源相联。应用程序通过采用MFC中的数据库扩展类,操纵ODBC驱动程序管理器访问数据库。开发数据库的步骤如下:
1)创建ODBC数据源;
2)使用AppWizard创建一个数据库应用程序;
3)实现程序的显示、记录功能。
随着故障的积累与新故障的出现,可以直接对数据库中内容进行修改;当数据库不对外开放时,可通过VC编程间接地对数据库进行添加、修改和删除。图3示出了故障数据库的部分内容。
2.2.5 主控程序和显示界面
主控程序主要负责各模块的协调运作以及数据的合理流动;用户显示界面主要负责输入用户的操作命令和显示故障信息,可以根据需要从数据存放模块内调出发生故障时发动机运行状态的数据流,配合故障信息进行综合分析判断[8]。
通过检测实车发动机产生的相关排放故障可以对OBD系统故障诊断软件的功能进行验证和完善。本研究中的试验样机是在1台4缸电控高压共轨柴油机的基础上改装而成,安装了SCR系统所需的各种传感器。
分别以尿素溶液液位过低故障、催化器前后温度传感器合理性故障以及NOx传感器与ECU之间通信中断故障为例,观测故障诊断软件的运行。
首先连接故障诊断系统,将电控柴油机起动预热至水温80℃,工况调至2 500r/min,472kW。
1)尿素溶液液位过低故障检测
向尿素罐中加入不多于5%尿素罐标称容积的尿素水溶液来设置故障。软件界面显示尿素溶液液位过低的故障信息,SPN为1673,FMI为1,故障原因是尿素溶液液位过低,传感器信号值小于阈值(见图4)。当重新加入足够的尿素溶液至尿素罐,故障消失,故障灯熄灭,界面显示无故障。
2)催化器前后温度传感器合理性故障检测
通过拧松催化器的前温度传感器使其信号值低于后温度传感器的信号值。完成故障设置后界面显示催化器前后温度传感器合理性故障信息,SPN为3144,FMI为2,故障原因是在一定的时间内,催化器前后温度传感器的温差超过一个限值(见图5)。当再次拧紧催化器前温度传感器时故障仍不消失,之后使用厂家专业设备方恢复。
3)NOx传感器与ECU之间通信中断故障检测
通过拔掉线束上连接插件设置故障。界面显示NOx传感器与ECU之间通信中断故障信息,SPN为2771,FMI为9;故障原因是NOx传感器与ECU之间通信有故障,即通信丢失(见图6)。同时伴随着电控柴油机转速下降,出现限扭现象。现场连上连接插件恢复无效,故障仍不消失。重新起动后故障消失,降扭被撤销。
由试验结果可见,故障诊断软件能够从CAN总线上获取故障信息,后台分析提取故障报文SPN和FMI,并有效地显示故障原因和处理方法。故障诊断软件的运行结果和设置的故障完全一致。同时也反映出当前电控发动机OBD系统的3类故障处理策略,即在线恢复、重起恢复和厂家恢复。由此表明该故障诊断软件能够准确快捷地诊断故障和实时无误地给出信息,且软件操作简便、使用灵活。
采用CAN总线技术和模块化结构,设计了柴油机SCR系统机外故障诊断软件。诊断软件通过数据分析模块解析处理故障信息,通过数据库模块对Access数据库存储管理,经数据通信模块CAN总线传递故障报文信息,由主控程序实现对电控柴油机SCR系统故障的准确诊断和故障定位。实机试验结果表明:故障诊断软件运行可靠,检测结果和设置的故障信息一致。
[1] 国家环境保护总局.HJ 437.2008 车用压燃式、气体燃料点燃式发动机与汽车车载诊断(OBD)系统技术要求[S].北京:环境保护部,2008.
[2] NOxSpecification AAS Generic 2.5[M].[S.l.]:GRUNDFOS,2007.
[3] 陶汉国.柴油机 Urea-SCR系统控制策略研究[D].武汉:武汉理工大学,2009.
[4] 曹德胜.Visual C++ 实践指导教程[M].北京:北京航空航天出版社,2008.
[5] 韩 潇,许小荣,武瑞峰,等.刨煤机工作面液压支架电液控制系统[J].微计算机信息,2007(25):1-5.
[6] 全国汽车标准化技术委员会.商用车控制系统局域网(CAN总线)通讯协议:第4部分(征求意见稿)[S].
[7] 全国汽车标准化技术委员会.商用车控制系统局域网(CAN总线)通讯协议:第6部分(征求意见稿)[S].
[8] 王文山.柴油发动机管理系统[M].北京:机械工业出版社,2009.