基于J1939协议的车辆故障诊断与ECU报文解析

所需积分/C币:48 2019-03-16 11:40:29 861KB PDF
收藏 收藏
举报

高清PDF版。“摘要:在对汽车的故障诊断过程中,基于SAEJ1939协议的 CAN 通信的 ECU 提供的发动机性能检测参数和整车网络通信数据,实现整车网络中多个 ECU 数据的共享;J1939协议同时也支持故障的诊断,通过数据转换模块将接收的数据转换成串行数据(包含 CAN 的ID地址),诊断工具(手持终端)可以读取当前故障码 DM1或清除当前故障码 DM11。本文提出了一种车辆故障诊断的研究策略,同时提出了一种基于JAVA 语言的报文的解析方法,能够有效实时地实现对汽车发动机的故障检测。”
超星·期刊 70PcLD专题论述 lis 为清除当前故障码。 码数据;当有多个故障时,采用BAM多包方式发送,首先 当诊断工具向ECU请求先前故障码或清除故障码发送一条BAM公告信息,接着使用数据传输PGN多包 时,诊断工具发送请求PGN和被请求的PGN给ECU电发送故障码。 控单元,ECU给诊断工具回复相应的数据。诊断工具与 单个故障采用单包发送的方式,使用单个CAN数据帧发 ECU之间的数据交互如图2所示。 送相应啟障码。数据格式如表5所列.DM表示当前故障, 期性的消息,不需要请求PGN如DM1 ID=0xl8FECA0;DM表示先前故障,格式与DM1相同。 诊断工具[伉先级+请求PGN+日的地土+源地址H被请求的PGN|电控单元 表5单包数据格式 优先级+破请求PGN+目的地址+源地址H+PN效据 位定义 位数 仇先级 图2故障码的请求与发送 3.3手持终端接收故障码 3118 诊断时,当前故障和先前故障所包含的故障码有三种 8 CA 情况:无故障、一个故障和多个故障。无故障和一个故障 SA 8 时,使用单个CAN数据帧就可以发送全部数据,而当传 数据城/8字节1,2,3~6,7,8 XX FF DTC FFFF 输多个故障时,需要使用多个数据帧才能发送完毕,这时 多个故障采用多包发送方式,首先系统FCU发送 就需要使用J1939协议的传输协议功能。J1939协议通信 BAM公告信息,接着发送多个数据帧。数据拆装时每个 的核心是负责数据传输的传输协议,传输协议功能主要包 含三个部分:消息的拆装、数据重组和连接管理。消息的 数据帧的第一个字节为数据帧编号,其余7个字节存放故 暲码数据,其中数据字节为故障码的有效字节数。BAM 拆装是指无法用单个CAN数据装载全部的数据,需要拆 信息格式、多包信息格式如表6、表7所列。 分为多个数据帧。当多个故障在使用传输协议传输时,第 个字节为数据帧编号,其后为故障灯状态,接着是所要 表6BAM信息格式 发送的放障码DTC·多个DTC按顺序填充到薮据帧中 位定义位数 值 ID号,位意义 如果最后一个数据帧中的数据字节不到7位,那么就用 优先级 R 0xFF来进行填充。数据重组就是将接收到的数据帧按照 0 序列编号把多包消息的数据帧重新组合成原始数据,按照 OxICECFFOC EO 编号排列,第一个数据帧屮的第2、3宇节为故障灯状态 S FF 从第4个字节开始每4个字节为一个故障码,不足4个字 SA 节则从下一个数据帧的第2个字节开始读取 数域/1,2~3,/201sB MSB 掉制宇节消息罕节数数据包个数 当没有故障发生的时侯或者单个故障发生时,此时8字节 7,8 XXF保留打包消息PGN DM1和DM2就可以直接使CAN数据帧发送相应的故障 /// 表7多包数据格式 位定义 位定义 位定义 优先级 优先级 3 优先级 R 1 R R DP PF 8 EB PF EB PE 8 EB 8 SA 8 SA 8 00 SN=I LAMP 数据域 1,2,3,4~7 F TO 数据域 SN=2 DTC SN=N DTC 1,2~4,5~8字节2~4 数据域 1.2~M 8宰节 字节 /8字节 - MFF DTC2了节 DTO 4故障码的解析方法 4.2解析方法的程序设计 手持终端收到数据包时,要对数据包进行解析,显示 4.1故障解析流程图 出发动机中对应的故障,从而实现故障的诊断,方便故障 故障解析流程图如图3所示。 堆修者对其进行维修。故障码诠释如表8所列。 敬诮登录网站在线投篇 2017年第12期《平宁机与锅入式李统起用》9 超星·期刊 鼎专题论述 TOP/CAL DISCUSS 亓始) import java. io, InputStream reader: mport java,io.次 截取表示ID的 public class Date Store i 字(6~14) //列举几种目标故障码 Static String J1939DTCL]- 截 BAM? DTC 1"0x00000000","0xC10C00BE", 除最后钓 多余的故障码 0x010200BE",0x010C02D3";0x010202D3"} 得到数据包 故障码对应的故障部件 K度为 static string故障部件]={"无事件,"曲轴传感器,"曲辋传 调鹎数据包的 8的倍数? 感器,"凸轮传感器”,"凸轮传感器"}; 顺序(1-N) /故障码对应的故障源 个数据包N「重组故路码 static String故障源□={"无事件,"无曲轴信号故障',"曲轴 信号异常”,"无凸轮信号故”,"凸轮信号异常故窿”}; public static voir main(St ringl args) 重组故障码 //TODO Autogenerated mcthod stub (3个故障) throws IOExce piont //生成 Bufferedreader()医数对象(手动从控制端输入标准数据 故障码 不输出 帧进行模拟) 相 Buffered Readerbr- New BufferedReader(new InputStreamRead- er(System. in)): 输出 结束 //新建一个字符串数组对象 String strL]-new String[1] 图3故障解析流程图 /str[0中存放于动输入的字符串故障码 表8故障码诠释 str[o]=br. readline(); 部件 /DTC1表示截取拼凑的故障码 String dtcl-lt 曲轴传感器 尢曲轴信号故障 0x(10C00BE //XX表示数据包的个数 第一缸喷油 喷油阀对地 0x0104028B String XX: 电磁阀 对短路 LSB表示字符串的长度 在对报文的分析中,采用JAVA请言开发的 Eclipse nt LSB-strL3]lengthe switch(LSB) 软件,提出一种解析报文的算法,能有效地解析接收的各 //单帧数据处理 种报文,显示对应的故障源 Case 由于终端接收到的数据报文为十六进制数,将接收到 for(int i=0:1<J1939 DTC.length: i++) 的报文转换为字符串进行处理。方法如下 if( J1939DTC[i] region Matches (2, str[O],18,8)) ①使用 length()函数取得字符串长度。 Systen1.ou1. printIn""+故障部件[i]+"]+""+ ⑧根据字符串长度判断为单帧数据还是多帧数据 故章源[订); brcak; ③当为单帧数据时,使用 region Matches(),截取字符串多帧数据处理 的有用故障码,与目标故障码进行比较,输出对应的故障源。 default ④当为多帧数据时,使用 substring()函数从BAM信 从BAM屮读取数据包的个数,截取表示数据包个数的字节 息中截取数据包个数有用字符,并使用 Integer parseInt() XX-strlo. substring(20, 22) /将字符串转换成十进制 函数将其转换成十进制数,即数据包的个数。 int XXD=Integer parseInt(XX, 16); ⑤根据数据包的个数分为两帧数据和两帧以上数 switch(XXD) 据·需要将放障码截取、拼凑·再与目标故障码进行比较,2帧处理数据 从而得到对应的枚障源 case JAVA代码解析方法如下 /将故障码拼凑起来,与目标故障码进行比较 date DTCI-strlCl. substring(52, 62)+stro. substring(80, S4) import java. io Bufferedreader for(intj=0; j<J1939 DTC.length; j++) import java. io. IOExceptian: //k表示DTC1的字节数 M∥ crocontro∥ers& Embedded Systems2017年第12期 www.mesnet.comcn 超星·期刊 OPICAL DISCUSS专题论述 lis nt k=0 第6缸喷油电磁阀]唢油阀第6缸两端开路 while(< 24) [第6缸喷油电磁阀]唢油阀第6缸对地短路 if(DTCl. regionMatches(k,J1939DTC.2.8)) 第6缸油电磁阀]唢油阀第6缸阻抗超限 printIn("P"+故障部件「-”↑+""十故 PCV阀1电了驱动] 阀1两端短路 障源Lj);} PCⅤ阀1电子驱动]PCV阀1开路 k=k+8;} 阀1电子驱动]PCV阀1对地短路 default PCⅤ阀1电子驱动]PCV阀1对电源短路 DTCI=strO].substring(52, 62)-strLO] substring(80, 94) PCⅤ阀2电子驱动]PCⅤ阀2两端短路 2 PCⅤ阀2电子驱动]PCV阀2开路 while(m<XXD) PCⅤ阀2电子驱动]PCV阀2对地短路 两帧以上数据的故障码拼凑公式 ④ DTCl-DTCI+stro substring(96+32*(m-2)-16,96 以上只对部分故璋码进行了模拟,此种方法适用于收 32大(m-2)+16+14) 到的所有(1~N)数据帧。 1++ //判断PC是否为8的倍数 结语 if(DTCllength(%8==0)1 for(int j-0: j<J1939DTC.length; j++) 汽车故障诊断技术是汽车电子掉制技术的重要组成 int k=o 部分。随着电子行业的逐渐发展,系统故障诊断方法变得 while(k<10+14*k(XXD-1)) 史加智能,很多现代化的工具在汽车障诊断上得到∫应 if(D!C1. region Matches(k,J1939DTC[],2,8) System.用,在实现故障诊断的设计过程中,方法各异。而本文是 t. println("”十故障部件「i十"艹"+故障源「i) 基于』1939协议,综合利用ECU与CAN转蓝牙通信模 k=k+8;}}} 块,手持终端〈智能手机)接收蓝牙模块的报文信息,实现 else if (DTCllength(8!=0) 故障的有效诊断,相对干传统的诊断仪来说,更趋向于智 for(int j-0: j<J1939DTC length: j++) 能化的发展方向 while(k<8*(DTCllength()/ 8)) 注:此论文受“大功率多点电喷气体发动机喷嘴阀及 if (DTCl. regionMatches(k. J1939DTC[].2,8)) 控制技术”项目资助。 System.out. println("['+故障部件[j 参考文献 "+""一故障源[j); [1]康拉德赖夫汽车电子学[M].3版李裕华,译.西安:西安交 通大学出版社,2011. =k+8;}}} 「2]罗富坤,汽车故障诊断技术「M.北京:化学工业出版社, 4.3程序调试 2009 手动输入 [3]W齐默尔曼,R施密特加尔.汽车总线系统[M].邓萍,译.北 ①(单帧数据)FEFF0818FECA00 FFFFO10C0BE 京:机械工业出版社,2011. FFFFFF [4]樊永强汽车故障诊断与排除[M长沙:中南大学出版社,201 输出:[曲轴传感器]无曲轴信号故障 [5 Sandoval Leon, Jairo A Study of Transit Bus Duty Cycle and (两帧数据) FFFFFF1 CECFF00 FFFFFF02 FFFFF its Influence on Fuel economy and emissions of diesel-Elec- FFFFFFFFFFFl8FECAOOCCOBEOIFFFFFFFFl8FECAOO I ric HybridsLJJ. Mechan ical Engineering. 2011: 123-128 FF0200BEO10C02D3FF 6]霍尔泽. Eclipse集成开发工具[M].O‘ Reilly taiwan公司, 输出:[曲轴传感器]无曲轴信号故障 译.南京:东南大学出版社,2007 曲轴传感器]曲轴信号异常 [7]史赋星,史佳JAVA基础及应用教程[M]北京:清华人学出 凸轮传感器]无占轮信号故 版社 ③(六帧数据)I0114100601FF18IC出 [8]吴海东,梅海龙汽车车载网络技术与检修[M].北京:北京理 工大学出版社,2010 COFFEFFFFFFFFT8FECBOOFFCIE3FOOSOIE4FCFFFFFE FFl8FECBOOFFO501E5FOO5OIE6FFFFFFFFlSFECBOOF 江志斌(硕士上研究生),主耍研究方向为汽车故障诊断;吴长水(副敬 FFO05010D029CO1FFFFFFFFISFECBOOFF040290010502 授),主要研究领域为内燃机放控制 gOFF (責仟编辑:葬士然牧稿日期:2017-06-23) 输出 敬诮登录网站在线投篇 2017年第12期《率机占锅入越杀统超用》11

...展开详情
试读 5P 基于J1939协议的车辆故障诊断与ECU报文解析
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    一个资源只可评论一次,评论内容不能少于5个字
    qq_41827386 还可以!J1939帧格式,源码再详细点就更好了
    2019-11-05
    回复
    qq76614842_老黄 资料不错!
    2019-09-10
    回复
    img
    • 领英

      绑定领英第三方账户获取
    • 签到达人

      累计签到获取,不积跬步,无以至千里,继续坚持!
    • 技术圈认证

      用户完成年度认证,即可获得
    • 分享宗师

      成功上传21个资源即可获取

    关注 私信 TA的资源

    上传资源赚积分,得勋章
    最新推荐
    基于J1939协议的车辆故障诊断与ECU报文解析 48积分/C币 立即下载
    1/5
    基于J1939协议的车辆故障诊断与ECU报文解析第1页
    基于J1939协议的车辆故障诊断与ECU报文解析第2页

    试读已结束,剩余3页未读...

    48积分/C币 立即下载 >