深入解析J1939-73:车辆诊断通信的标准与应用

news/2024/12/12 14:27:37/文章来源:https://www.cnblogs.com/polelink/p/18599346

 一、SAE J1939协议概述

 

 

SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J1939协议解读。

 

J1939协议由多个部分组成,根据OSI七层模型,不同的部分负责不同的任务,以保证通信的高效性、实时性和可靠性。

 

OSI层级

协议编号

描述

物理层

J1939-11

基于屏蔽双绞线,250Kbits/s

J1939-15

基于非屏蔽线双绞线,250Kbits/s

J1939-14

实现500Kbits/s通信速率

数据链路层

J1939-21

定义PDU格式、参数组概念、传输协议等

网络层

J1939-31

网络层功能、网段互联设备的概念及分类

应用层

J1939-71

SPN(可疑参数)、PGN(参数组)等

J1939-73

诊断,DTC格式,DM 报文

J1939-13

离线诊断设备连接器的定义

J1939-81

网络管理参数组,通信逻辑,错误处理等

表 1

例如1939-71 文件中定义了一些PGN(参数组),用于描述报文中待发送的参数,以及关于报文优先级和传输速率的信息。今天主要聊聊J1939诊断功能。提起车载诊断,想必大家最熟悉的就是UDS(ISO 14229-1)了,通过UDS中定义的服务可以获取车辆的参数、故障信息等。那J1939协议中又是如何定义的诊断呢?大家可以带着疑问走进J1939-73一探究竟。

 

 

二、J1939-73车辆诊断

 

 

2.1 J1939-73的基本概念

 

J1939-73中定义了诊断故障代码(DTC)、诊断消息(DM)等信息,当车辆存在故障时,需要根据发送的故障相关信息,获取故障原因并对车辆进行诊断维修。

 

2.2诊断故障代码(DTC)

 

DTC(Diagnostic Trouble Codes)是J1939-73中的核心概念,代表诊断故障代码,由SPN(Suspect Parameter Number)、FMI (Failure Mode Identifier) 、OC(Occurrence Count)及CM(SPN Conversion Method)四部分组成:

  • SPN:表示故障发生的具体参数/系统/部件,是一个19位数字;
  • FMI:表示故障的具体类型/模式,是一个5位数字;
  • OC:DTC从活动的状态转变为先前活动的状态的次数(先前活动的DTC:故障发生过但当前没有发生,活动的和先前活动的状态是互斥的,故障不能既是活动的又是先前活动的状态);
  • CM:表示SPN的转换方式;

可疑参数组(SPN)

19Bits

失效模式标识符(FMI)

5Bits

故障发生次数(OC)

7Bits

SPN转换方式(CM)

1Bit

表 2

例如:油压预滤器参数,可疑参数数值(SPN=1208)

故障模式标志(FMI)为 3

发生次数(OC)为 10

所有的DTC以Intel格式传送(最小有效字节优先)

SPN 1208 =4B8 =000 00000100 10111000(19 位)

FMI 3 =3 =00011(5 位)

OC 10 =A =0001010(7 位)

可疑参数编号的转化方式(CM) =0(1 位)

整体的DTC数据如下图:

 

 

图 1-SAEJ1939-71-2006(来源)

 

如下图数据流中DTC为0x10B0209,根据上面介绍的J1939-73协议中定义的DTC格式,可以得知SPN为0x209,FMI为0x0B,CM为0,OC为0x01。有了这些信息则可以根据对应故障码表格,定位故障。

 

图 2-J1939报文

2.3诊断消息(DM)

 

在J1939-73中还定义了很多诊断信息(DM),由不同的诊断信息(DM)实现了实时故障监控、历史故障读取、氧传感器检测等功能。下图为J1939-73中定义的部分DM内容,可以根据自己的需求选择对应功能的DM。

 

 

图 3-SAEJ1939-71-2006(来源)

 

常用到的诊断消息有DM1、DM2和DM3等:

  • DM1:获取当前活动故障代码(包括与排放系统相关的DTC);
  • DM2:获取历史故障和相关的故障代码;
  • DM3:清除先前活动的DTC故障数据或复位;

 

今天主要解读一下DM1:

每当DTC变为活动故障时,就发送DM1消息,此后以1次/s的更新速率传输。如果一个不同的DTC在1秒的更新周期内改变了状态,则传输一个新的DM1消息来反映这个新的DTC及指示灯(故障指示灯、红色停止灯、琥珀色警告灯和保护灯)的状态。为防止频率非常高的间歇性故障导致消息率过高,建议每个DTC每秒传输的状态变化不超过1次。DM1相关参数如下:

Extended Data Page: 0

Data page: 0

PDU Format: 254

PDU Specific: 202

Default Priority: 6

Parameter Group Number: 65226 (0x00FECA)

 

图 4-DM1报文结构

 

当传输数据超过8个字节时,需要使用由SAE J1939-21中定义的多包报文传输协议进行分包传输。如下图中,当存在5个激活的DTC时,需要传输共22个Bytes(DTC共占20个Bytes,加上2个Bytes的故障灯状态)的数据,拆分为4包数据进行传输。通过TP_CM连接报文可知即将传输报文的PGN为0xFECA、所有传输数据长度为22个Bytes、数据被拆分为4个包。TP_DT传输报文中第一个字节表示序列号,Bytes2-7为传输的数据内容。如果最后一包数据≤7个Bytes,则可以设置填充位进行填充。

 

图 5-多包报文传输

 

三、J1939诊断应用

 

CANoe作为一个总线开发与测试工具,可以提供J1939、FMS通用数据库文件,也集成了J1939的NM、TP以及基于UDS/J1939-73的诊断功能。

 

实现通过DTC监控功能捕获和分析故障代码,帮助工程师了解系统问题并进行故障排查。那该如何在CANoe中应用呢?

 

  • 首先需要根据项目需求,选择J1939总线,搭建好工程;
  • 接下来可以导入创建好的对应J1939总线的DBC文件;

图 6-J1939 DBC创建

  • 导入DBC文件之后,可以通过IG模块发送仿真J1939报文,也可以使用CAPL脚本发送J1939报文。

 

使用IG模块仿真报文

 

图 7-CANoe中IG模块设置

使用CAPL函数发送DM01报文

 

 

图 8-CAPL示例及发出报文

四、总结

 

在当前汽车电子快速发展的背景下,J1939-73协议不仅能够满足传统商用车辆的诊断需求,还可以支持新能源汽车等领域的诊断应用。结合CANoe等专业工具的强大功能,开发人员可以更加高效地进行协议一致性测试、诊断通信验证等工作。如果需要相关的测试工具及标准协议培训,以及售后支持(techhelpdesk@polelink.com),欢迎联系我们。

 

北汇信息是一家技术驱动的创新型服务企业,始终专注于汽车电子领域的新技术和新产品,为整车厂和零部件企业提供完整的研发、相关培训、咨询服务、测试解决方案等。

 

注:文中部分图片来源于Vector及SAE 1939-73-2006协议。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/850845.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是日志MDC?一句话简单解释MDC

官方文档:Chapter 8: Mapped Diagnostic Context 为什么要写这篇文章呢?因为目前互联网上全是从官方文档里机器翻译然后转载的。但实际上我只是想知道什么是MDC,一句话解释一下MDC就可以了。 以下内容是我本人对MDC的简单总结MDC的字面意思:Mapped Diagnostic Context 映射…

5分钟搞定:借助AI Agent完成一个AI客服答疑机器人

AI Agent这个新东西是一种基于大模型开发的应用,它通过结合语言理解和生成能力与特定外部能力来扩展功能。利用AI Agent,你能做很多事情,比如处理私密数据、提供最新资讯或执行专业任务等。在私有领域知识问答方面,AI Agent可以创建于公司内部查询应用;作为个性化聊天机器…

如何优雅的用obs推流腾讯云

如何优雅的用obs推流腾讯云 源码地址:https://gitee.com/godsdodo/tencent-live.git 简介: #腾讯云直播 #腾讯云im #腾讯云白板 # 私域直播 #高并发直播分发; 基于腾讯云K8S搭建的私域直播培训平台,直播功能: 主播推流,智能直播,OBS推流 ## 助理平台: 场控控制,直播间管理,直播…

20222412 2021-2022-2 《网络与系统攻防技术》实验八实验报告

20222412 2021-2022-2 《网络与系统攻防技术》实验八实验报告 1.实验内容 (1)Web前端HTML 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。 (2)Web前端javascipt 理解JavaScript的基本功能,理解DOM。 在(1)的基础上,编写JavaScr…

PS1045L-ASEMI小家电专用贴片二极管PS1045L

PS1045L-ASEMI小家电专用贴片二极管PS1045L编辑:ll PS1045L-ASEMI小家电专用贴片二极管PS1045L 型号:PS1045L 品牌:ASEMI 封装:TO-277 正向电流:10A 反向电压:45V 正向压降:0.44V~0.47V 引线数量:2 芯片个数:1 芯片尺寸:MIL 漏电流:10ua 恢复时间:35ns 浪涌电流:2…

【支付系统】资金视角看支付系统架构设计

#跨境业务 #资金平台 #账户 1 前言2 支付和资金的关系3 资金平台的职责4 跨境业务的复杂性5 支付和资金的关系6 资金平台做了哪些事7 总结在线支付是一个有近 20 年发展历程的行业,其背后系统的技术设计也随着时间、政策、技术的迭代,不断发生着变化。作为一个与钱直接打交道…

VSCode开发Go入门

一、Go环境搭建 安装Go 使用国内的Go语言中文网 https://studygolang.com/dl 进行下载找到合适的平台点击链接下载即可,这里以 Windows 为例 下载完成后点击安装保持默认即可 安装后 Go 将自动 设置环境变量,打开 终端 或 CMD 窗口验证 Go命令是否可用go version若安装成功,…

第五章 信息系统工程 (2024年详细解析版)

目录5.1 软件工程5.1.1 架构设计5.1.1.1 什么是架构设计5.1.1.2 软件架构研究的主要内容5.1.1.2.1 软件架构风格5.1.1.2.1.1 管道/过滤器5.1.1.2.1.2 面向对象模式5.1.1.2.1.3 层次结构5.1.1.2.1.4 事件驱动模式5.1.1.2.2 软件架构评估软件架构评估的方式5.1.2 …

在SAP Fiori界面上的ME53N事务

在SAP Fiori界面上的ME53N事务在SAP Fiori界面上的采购申请显示界面(事务代码ME53N),基本跟在SAP GUI上显示界面相同。Material Data选项卡,Quantities/Dates 选项卡,Valuation 选项卡,Source of Supply选项卡,Status 选项卡,注:本文基于SAP S/4HANA 1909系统。写于2024…

[Serverless] Azure Functions 使用介绍

关于产品 Azure Serverless (无服务器)https://azure.microsoft.com/zh-cn/solutions/serverless/ Azure Functions (函数应用)https://azure.microsoft.com/zh-cn/products/functions/ 操作步骤 1. 创建 New Function App 项目 关于 Azure Functions 托管选项https://learn.m…

基于Docker容器搭建maven私服 nexus

1、docker执行 将容器内部/var/nexus-data目录挂载到主机/data/nexus-data目录。docker run -d -p 8081:8081 --name nexus -v /data/nexus-data:/var/nexus-data --restart=always -e "INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.u…

【每日一题】20241211

【每日一题】设 \(0<a<1\),随机变量 \(X\) 的分布列如下表所示,则当 \(a\) 在 \((0,1)\) 内增大时,A. \(D(X)\) 增大 B. \(D(X)\) 减小 C. \(D(X)\) 先增大后减小 D. \(D(X)\) 先减小后增大坡屋顶是我国传统建筑造型之一,其造型甚美,蕴含着丰富的数学元素.如图,某…