基于SAE J1939协议的车辆,默认开启数据广播。当有故障码时,也会按照故障码的格式进行广播。
此处基于外设主动:读取故障码个数->读取故障码->故障码解析 这个步骤来讲,如果被动接收故障码广播,如下解析也适用。

根据故障码个数分如下几种情况:
一、单个故障码时

读取故障码个数:
请求:18EA00F9 CE FE 00
响应:18FECE00 01 00 09 02 05 05 05 05
根据SAE J1939-73协议,解析响应如下:

01:当前激活故障码个数为1;
00:历史故障码个数为0;
09:符合EOBD、OBD和OBD II;
后面几个字节表明系统支持及状态。

有1个当前激活的故障码,下面去读取这个故障码
请求:18EA00F9 CA FE 00
响应:18FECA00 10 FF B8 04 03 0A FF FF
根据SAE J1939-73协议,解析响应如下:

10:亮红色停车灯;
FF:警示灯不闪烁;
B8 04 03 0A:一条故障码信息。
FF FF:填充。

根据SAE J1939-73协议,一个故障码信息包括4个字节,组成如下:


故障码信息解析如下:

十六进制(B8 04 03 02)转为
二进制(1011 1000 0000 0100 0000 0011 0000 0010)
则:SPN =(000 0000 0100 1011 1000)B=(4B8)H=(1208)DFMI =(00011)B=(3)DCM = 0OC = (0001010)B=(10)D
根据SAE J1939-71协议,查找SPN=1208的项,


根据SAE J1939-73协议附录,找到FMI=3的说明,

此故障码信息为:发动机机油滤清器前机油压力过高,亮红灯,已发生10次。

二、没有故障码时

读取故障码个数:
请求:18EA00F9 CE FE 00
响应:18FECE00 00 00 09 02 05 05 05 05

没有故障码,可以不用再去读取了。当然读取也可以,下面去读取故障码
请求:18EA00F9 CA FE 00
响应:18FECA00 00 FF 00 00 00 00 FF FF

 注意:未使用的字节7和8的应设置为FF(根据SAE J1939-21)。注意:当没有故障码时,此应答字节3到6应设置为零。

三、多个故障码时

读取故障码个数:
请求:18EA00F9 CE FE 00
响应:18FECE00 04 00 09 02 05 05 05 05

有4个当前激活的故障码,下面去读取故障码
请求:18EA00F9 CA FE 00
响应:18EC0000 10 12 00 03 FF CA FE 00

 10:为RTS请求应答广播;12 00:长度为18个字节;03:后续数据分3帧传送;CA FE 00:对应的请求PGN。

请求:18EC00F9 11 03 01 FF FF CA FE 00

 表明:准备好接收从编号 1 开始的3个数据包

响应:18EB0000 01 10 FF B8 04 03 0A 20
18EB0000 02 3F 01 03 02 51 11 01
18EB0000 03 12 3E 04 02 FF FF FF

4个故障码为:B8 04 03 0A,20 3F 01 03,02 51 11 01,12 3E 04 02

SAE J1939协议读取车辆故障码相关推荐

  1. J1939故障码诊断说明

    1:1939整体协议说明 这里主要说明1939不同的协议,对应不同的网络分层 注意了,这里只进行文档解析说明,具体查看去搜素协议的关键字进行理解 2:DMx和FMI 说明 想知道每个代号的具体含义,可 ...

  2. 788_AUTOSAR_RS_SystemTemplate3_通信2_时序以及SAE J1939等

    全部学习汇总: GitHub - GreyZhang/hack_autosar: learning autosar documents, aha, very hard! 继续学习AUTOSAR的文档, ...

  3. AUTOSAR协议解析篇(一)-J1939协议解析

    SAE J1939协议是基于CAN2.0B协议之上的应用层协议,但是SAE J1939协议并不仅仅是个应用层协议,她对物理层,数据链路层,网络层,应用层,故障诊断, 网络层管理层等都做了详细的规定,只 ...

  4. OBD-II标准故障码定义

    一)BOD-II的特点: 1.统一车种诊断座形状为16PIN. 2.上有数值分析资料传输功能(DATA LINK CONNECTOR简称DLC). 3.统一各车种相同故障代码及意义. 4.具有行车记录 ...

  5. 基于1939协议的发动机控制程序:包括发动机转速油门控制,发动机常用转速、机油压力、水温、工作小时读取,spn故障码取,发动机启动转速保护

    基于1939协议的发动机控制程序:包括发动机转速油门控制,发动机常用转速.机油压力.水温.工作小时读取,spn故障码取,发动机启动转速保护 ID:78199616336273904奔跑的犀牛

  6. 车载通信——J1939故障码

    一.诊断 UDS是统一诊断系统 冻结帧:出现故障码时,ECU存储故障码出现时的数据,就是冻结帧. 二.J1939故障诊断 SAE J1939应用层定义了12种诊断报文(Diagnostic Messa ...

  7. php读取图片文件流,详解php文件包含原理(读取文件源码、图片马、各种协议、远程getshell等)...

    详解php文件包含原理(读取文件源码.图片马.各种协议.远程getshell等) 作者是namezz (看完图相当于做了一轮实验系列) 现有文件代码如下 1.png (21.16 KB, 下载次数: ...

  8. include详解 shell_详解php文件包含原理(读取文件源码、图片马、各种协议、远程getshell等) ......

    详解php文件包含原理(读取文件源码.图片马.各种协议.远程getshell等) 作者是namezz (看完图相当于做了一轮实验系列) 现有文件代码如下 include和include_once.re ...

  9. 汽车UDS诊断详解及Vector相关工具链使用说明——2.3.1 故障码(DTC)格式详解

    1. 概述 存储数据传输功能单元其实就是读取故障码信息和清除故障码两个服务.我们本文先来看一下我们一直在说的故障码的格式是怎样的. 我们通常把诊断分成两种,我们之前一直在讲的UDS诊断属于增强型诊断, ...

  10. 【车载开发系列】UDS诊断---DTC故障码基础回顾

    [车载开发系列]UDS诊断-DTC故障码基础回顾 UDS诊断---DTC故障码基础回顾 [车载开发系列]UDS诊断---DTC故障码基础回顾 一.什么是DTC故障码 二.DTC故障码的作用 三.什么是 ...

最新文章

  1. SVN 中更新与资源库同步的区别
  2. 黑客道诠释完整版1-7
  3. layui如何获取父节点的父节点_jquery获取父元素或父节点的方法
  4. 7种CSS圆角框解决方案
  5. SwiftUI之深入解析如何定制视图的动画和转场
  6. MATLAB图自编码器
  7. 一起学习C语言:C语言基本语法(三)
  8. 用css实现星级评分效果
  9. android-生命周期和GC
  10. 利用jsonp跨域访问
  11. 文档翻译免费工具(网页版)PDF翻译,word翻译
  12. 什么是url,herf和src的区别
  13. 了解Java对象(抽象和具体)
  14. 三角形面积的勾股定理
  15. 系统安全及应用实验案例
  16. ensp两个路由的配置(想对全世界说晚安 恰好你就是全世界)
  17. 西门子S7-200 SMART控制步进电机(二)
  18. WikiTaxi_Importer_1.3.1 维基 离线数据库
  19. SQL数据库中的一列数据按照英文字母先后顺序排列,怎么可以做到?
  20. react--随笔3

热门文章

  1. J-link J-flash 工程配置及下载
  2. Altium Designer
  3. Iar新建工程配置使用教程
  4. c# 实现模糊PID控制算法
  5. VUE day_07(7.25)学子商城项目简略版
  6. 在VS2012集成Fortran95(Ftn95)
  7. C# 电子白板软件开发
  8. 最大功率点跟踪测试软件,最大功率点追踪
  9. ansys经典界面分析工字钢_ANSYS教程,ANSYS经典界面与WORKBENCH的区别
  10. android是j2me的一个实现吗,j2me与android的区别