0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

北汇信息POLELINK 2024-12-11 10:01 次阅读

作者 |小懒


小编 | 不吃猪头肉

df45011e-b763-11ef-8084-92fbcf53809c.png

SAE J1939协议概述

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

df57cbe6-b763-11ef-8084-92fbcf53809c.png

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

df7078ee-b763-11ef-8084-92fbcf53809c.png

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的转换方式;

df8c8a02-b763-11ef-8084-92fbcf53809c.png

表 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数据如下图:

dfa29b4e-b763-11ef-8084-92fbcf53809c.png

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

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

dfba70de-b763-11ef-8084-92fbcf53809c.png

图 2-J1939报文

2.3诊断消息(DM)

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

dfd56cf4-b763-11ef-8084-92fbcf53809c.png

图 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)

dff24edc-b763-11ef-8084-92fbcf53809c.png

图 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,则可以设置填充位进行填充。

e01d1fa4-b763-11ef-8084-92fbcf53809c.png

图 5-多包报文传输

e02a7398-b763-11ef-8084-92fbcf53809c.png

J1939诊断应用

CANoe作为一个总线开发与测试工具,可以提供J1939、FMS通用数据库文件,也集成了J1939的NM、TP以及基于UDS/J1939-73的诊断功能。实现通过DTC监控功能捕获和分析故障代码,帮助工程师了解系统问题并进行故障排查。那该如何在CANoe中应用呢?

首先需要根据项目需求,选择J1939总线,搭建好工程;

接下来可以导入创建好的对应J1939总线的DBC文件;

e04613a0-b763-11ef-8084-92fbcf53809c.png

图 6-J1939 DBC创建

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

使用IG模块仿真报文

e0605530-b763-11ef-8084-92fbcf53809c.png

图 7-CANoe中IG模块设置

使用CAPL函数发送DM01报文

e0713a94-b763-11ef-8084-92fbcf53809c.png

图 8-CAPL示例及发出报文

e09f816a-b763-11ef-8084-92fbcf53809c.png

总结

在当前汽车电子快速发展的背景下,J1939-73协议不仅能够满足传统商用车辆的诊断需求,还可以支持新能源汽车等领域的诊断应用。结合CANoe等专业工具的强大功能,开发人员可以更加高效地进行协议一致性测试、诊断通信验证等工作。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 诊断
    +关注

    关注

    1

    文章

    58

    浏览量

    12302
  • J1939
    +关注

    关注

    1

    文章

    11

    浏览量

    10705
  • 汽车
    +关注

    关注

    13

    文章

    3598

    浏览量

    37564
收藏 人收藏

    相关推荐

    基于J1939协议的组合仪表的设计与实现

    为基础的能够使汽车中各个电控单元间实现自由通信的网络控制系统,并制定了J1939 协议。2CAN 总线及J1939 协议概述CAN,全称为“Controller Area Network”,即控制器
    发表于 05-17 11:45

    J1939基础入门知识分享

    进行定义, 这给主机厂之外的应用人员带来了一定的困难。 而商用车行业的SAE J1939 已成为了全球标准, 除了一些用于保密的厂家私有报文之外, 所有车辆运行参数的报文解析都是公开的
    发表于 04-11 07:00

    基于SAE J1939协议的发动机总线数据模拟器开发设计

    在车载网络的开发过程中,需要发动机节点向总线网络发送报文,为了降低成本,提高开发效率,模拟发动机。基于SAE J1939协议巾车辆应用层子标准及应用层诊断
    发表于 07-12 06:33

    SAE J1939协议分析指南

    SAE J1939协议是由汽车工程协会(SAE)定义的,SAE J1939协议在商用车辆、舰船、轨道机车、农业机械和大型发动机中是应用最广泛的应用层协议,基于传输可靠性能优越的CAN-bus总线,可
    发表于 03-13 13:50 189次下载

    基于SAE J1939协议的车辆网络通信

    目前,车辆的ECU产品大都带有SAE J1939 CAN接口。针对具有SAE J1939 CAN接口的ECU产品(如发动机、变速器及其缓速器和ABS等ECU),自定义若干ECU,集成实现基于SAE
    发表于 09-24 00:49 5758次阅读
    基于SAE <b class='flag-5'>J1939</b>协议的<b class='flag-5'>车辆</b>网络<b class='flag-5'>通信</b>

    腾控TG900P控制卡特柴油机实现J1939协议

    SAE J1939协议是由汽车工程协会(SAE)定义的,主要用于商用车辆,但也用于舰船、轨道机车、农业机械和大型发动机。另外,SAE J1939用作国际标准NMEA 2000(海事)
    发表于 10-10 17:34 8次下载
    腾控TG900P控制卡特柴油机实现<b class='flag-5'>J1939</b>协议

    CM2880A控制器支持的J1939工业标准消息资料免费下载

    CM2880A模块支持的消息本节详细介绍了CM2880A控制器支持的J1939工业标准消息,并列出了J1939上发送的消息的参数特征。
    发表于 11-26 08:00 31次下载
    CM2880A控制器支持的<b class='flag-5'>J1939</b>工业<b class='flag-5'>标准</b>消息资料免费下载

    柴油机动车J1939转RS232运行数据串口(UART)标准

    SAE J1939协议被用于以CAN为基础的车辆通信系统嵌入式网络中,SAE J1939主要适用于卡车客车和非道路车辆的柴油发动机管理。
    发表于 05-08 10:09 1619次阅读

    CAN高层协议J1939的基础和应用以及开发介绍

    协议J1939的有关内容,今天起我们将连续分6次推文来详细介绍CAN的高层协议J1939的基础和应用以及开发,应该算是比较全面系统的介绍,希望对大家有帮助。 SAE J1939通信是基
    的头像 发表于 04-02 10:45 4845次阅读
    CAN高层协议<b class='flag-5'>J1939</b>的基础和应用以及开发介绍

    J1939协议理解

    J1939协议基础知识讲解。
    发表于 05-06 15:34 13次下载

    SAE J1939协议标准文档中英文合集

    SAE J1939协议标准文档中英文合集
    发表于 01-10 09:58 79次下载

    浅析SAE-J1939与CAN2.0B之间的关系

    SAE-J1939(以下简称J1939)是美国汽车工程协会(SAE)的推荐标准,广泛用于是商用车(重卡、大客车等道路车辆和工程机械、农业机械、轨道机车、船舶等非道路
    的头像 发表于 12-23 14:18 1570次阅读

    新功能发布 | TSMaster如何实现J1939多帧报文收发

    前言众所周知,J1939协议是由美国汽车工程师协会(SAE)定义的一组标准J1939标准用于卡车、公共汽车和移动液压等重型车辆。如今大多数
    的头像 发表于 09-06 10:01 2231次阅读
    新功能发布 | TSMaster如何实现<b class='flag-5'>J1939</b>多帧报文收发

    【看点】浅析SAE-J1939与CAN2.0B之间的关系

    一什么是SAE-J1939?SAE-J1939(以下简称J1939)是美国汽车工程协会(SAE)的推荐标准,广泛用于是商用车(重卡、大客车等道路车辆
    的头像 发表于 01-06 09:52 1712次阅读
    【看点】浅析SAE-<b class='flag-5'>J1939</b>与CAN2.0B之间的关系

    CAN总线之J1939地址定义

    SAE J1939(以下简称J1939)是美国汽车工程协会(SAE)的推荐标准,广泛用于是商用车(重卡、大客车等道路车辆和工程机械、农业机械、轨道机车、船舶等非道路
    的头像 发表于 08-15 10:47 4169次阅读
    CAN总线之<b class='flag-5'>J1939</b>地址定义