【车载开发系列】StatusOfDTC的解析

news2024/11/15 15:31:37

【车载开发系列】StatusOfDTC的解析

StatusOfDTC的解析

  • 【车载开发系列】StatusOfDTC的解析
    • StatusOfDTC概念
    • StatusOfDTC列表
    • StatusOfDTC状态掩码
      • Bit 0: TestFailed
      • Bit 1: testFailedThisOperationCycle
      • Bit 2: pendingDTC
      • Bit 3: confirmedDTC
      • Bit 4: testNotCompletedSinceLastClear
      • Bit 5: testFailedSinceLastClear
      • Bit 6: testNotCompletedThisOperationCycle
      • Bit 7: warningIndicatorRequested

StatusOfDTC概念

每一个状态码都由一个字节长的状态字节,就是StatusOfDTC,它用来指示DTC所对应的故障是否发生,是否被确认等状态。这个状态位包含1个byte,这里面的8个bit都有各自的含义,但是这8个 bit不一定都要使用,各个主机厂可以根据自己的需求使用其中的几个,当然也可以全部使用。
有了StatusOfDTC之后就可以让RAM的计测变得更加的容易。在SID$19$02,SID$19$06以及SID$19$0A等的Positive Response当中,都会有StatusOfDTC的返回。

StatusOfDTC列表

在ISO14229当中,除了bit3: ConfirmedDTC是强制约束外,其他都没有强制约束。

BitNumberDescription詳細内容初始值DTCStatus位状态定义Cvt
Bit0TestFailed現在失败的情报0当故障确定时为1,当正常确定时就变为0U
Bit1TestFailedThisOperationCycle现在的DC当中是否有失败的情报0现在的DC中故障确定时为1,DC发生切换时为0U
Bit2PendingDTC现在的DC及前回的DC当中是否有失败的情报0当故障首次被检出时为1,否则为0U
Bit3ConfirmedDTC判断DTC是否是Confirmed状态0当对象故障表示到MIL的时为1,否则为0M
Bit4testNotCompletedSinceLastClear实施诊断清除后能否检测出DC失败或者DC确定1能够检出是设置为0,不然默认为1U
Bit5TestFailedSinceLastClear实施诊断清除后能否检测出DC故障失败0检测出DC故障失败时就设置为1,否则默认为0U
Bit6TestNotCompletedThisMonitoringCycle在当前DC内检出确定故障或者正常确定1在当前DC内检出确定故障或者正常确定时设置为0U
Bit7warningIndicatorRequested警告点灯要求0MIL电灯要求时为1,否则为0U

StatusOfDTC状态掩码

Bit 0: TestFailed

通常来说,ECU内部以循环的方式不断地针对预先定义好的错误路径进行测试,如果在最近的一次测试中,在某个错误路径中发现了故障,则相应DTC的这一个状态位就要被置1,表征出错。此时DTC的testFailed位被置1,但是它不一定被ECU存储到non-volatile memory中,只有当pendingDTC或confirmedDTC被置1时DTC才会被存储。而pendingDTC或confirmedDTC被置1的条件应该是检测到错误出现的次数或时间满足某个预定义的门限。当错误消失或者诊断仪执行了清除DTC指令时,testFailed会再次被置为0。
最近执行测试的结果,Failed则置"1";最近测试通过(pass)或发送清故障码服务则置"0";

if ( Failed确定 ){
   Bit→1
}
elseif (  ( Passed确定 ) || ( ClearDiag ) ){
   Bit→0"
}

在这里插入图片描述

Bit 1: testFailedThisOperationCycle

在当前操作循环内的测试结果,该操作循环内只要发生过Failed,则置"1"; 开始新的操作循环或发送清故障码服务后,置"0";
这个bit用于标识某个DTC在当前的operation cycle中是否出现过testFailed置1的情况,即是否出现过错误。operation cycle的起始点是ECU通过网络管理唤醒到ECU通过网络管理进入睡眠, 通过bit 0我们无法判断某个DTC是否出现过
当前testFailed = 0, 说明当前这个DTC没有出错,如果testFailedThisOperationCycle = 1的话,就说明这个DTC在当前这个operation cycle中出过错,但是当前错误又消失了。

if ( Failed确定) 
   Bit→1
elseif ( New DC Start || ClearDiag )
   Bit→0

在这里插入图片描述

Bit 2: pendingDTC

在当前操作循环或上一个完成的操作循环内,测试是否报告过"Failed"; 该状态位只在测试运行和操作循环完成且在该操作循环内从未"Failed"过或发送清故障码服务后才置0;如果在当前操作循环内未完成测试,则状态不变;
pendingDTC位其实是位于testFailed和confirmedDTC之间的一个状态,有的DTC被确认的判定条件比较严苛,需要在多个operation cycle中出现才可以被判定为confirmed的状态,此时就需要借助于pendingDTC位了。pendingDTC = 1的时候,DTC就要被存储下来了,如果接下来的两个operation cycle中这个DTC都还存在,那么confirmedDTC就要置1了。如果当前operation cycle中,故障发生,pendingDTC = 1,但是在下一个operation cycle中,故障没有了,pendingDTC 仍然为 1,再下一个operation cycle中,故障仍然不存在,那么pendingDTC 就可以置0了。

if ( Failed确定 )
   Bit→1
elseif ( ( Passed确定 in Last DC
           && Not Failed确定 in Last DC 
           && DC成立 )
    || ClearDiag )
   Bit→0

在这里插入图片描述

Bit 3: confirmedDTC

表示故障是否检测到了足够的时间以存储到long-term memory,若足够,则置"1"; 其为1的时候并不意味着此刻故障存在;发送清除故障码或达到老化阈值(40个暖机循环里未检测到故障)则置"0";
当confirmedDTC = 1时,则说明某个DTC已经被存储到ECU的non-volatile memory中,说明这个DTC曾经满足了被confirmed的条件。但是请注意,confirmedDTC = 1时,并不意味着当前这个DTC仍然出错,如果confirmedDTC = 1,但testFailed = 0,则说明这个DTC表示的故障目前已经消失了。将confirmedDTC 重新置0的方法只有删除DTC,UDS用0x14服务,OBD用0x04服务。

if ( Failed confirmation criteria )
   Bit→1
elseif ( 40WUC's Next DC成立 || ClearDiag )
   Bit→0

在这里插入图片描述

Bit 4: testNotCompletedSinceLastClear

表示一个DTC测试从上次清故障码开始,是否运行过或完成过测试;若没有,则置"1";否则置"0";清故障码置"1";
自从上次调用了清理DTC的服务(UDS用0x14服务,OBD用0x04服务)之后,是否成功地执行了对某个DTC的测试(不管测试结果是什么,只关心是否测了)。因为很多DTC的测试也是需要满足某些边界条件的,并不是ECU上电就一定会对DTC进行检测。

if ( Failed确定 OR Passed确定)
   Bit→0
elseif ( ClearDiag )
   Bit→1

在这里插入图片描述

Bit 5: testFailedSinceLastClear

表示一个DTC测试从上次清故障码开始,是否测试失败过;若没有,则置"0";否则置"1";清故障码置"0";
这个位与bit 1 :testFailedThisOperationCycle有些类似,后者标识某个DTC在当前的operation cycle中是否出现过testFailed置1的情况,而testFailedSinceLastClear标识的是在上次执行过清理DTC之后某个DTC是否出过错。

if ( Failed确定)
   Bit→1
elseif ( ClearDiag )
   Bit→0

在这里插入图片描述

Bit 6: testNotCompletedThisOperationCycle

表示一个DTC测试在当前操作循环内是否运行完成;若没完成,置"1";否则,置"0"; 开始新的操作循环或清故障码后则置"1";
这个位与bit 4 : testNotCompletedSinceLastClear类似,后者标识自从上次调用了清理DTC的服务之后,是否成功地执行了对某个DTC的测试。而testNotCompletedThisOperationCycle则标识在当前operation cycle中是否成功地执行了对某个DTC的测试。

if ( Failed确定 OR Passed确定)
   Bit→0
elseif ( New DC Start || ClearDiag )
   Bit→1

在这里插入图片描述

Bit 7: warningIndicatorRequested

报告与特定DTC相关的任何警告指示器的状态;没有警告,则置"0",有警告,则置"1";
如果有警告,则confirmedDTC也应设置为1;
清故障码或满足制造商定义的要求,则置"0";如果这个DTC不支持警告指示,则这个位永远置0。

if ( MIL点灯 )
   Bit→1
else
   Bit→0

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【操作系统】3、内存管理

文章目录三、内存管理3.1 内存基础3.1.1 内存管理概念3.1.2 程序装入与链接3.1.3 内存保护3.2 内存空间的分配与回收3.2.1 连续分配管理方式3.2.1.1 单一连续分配3.2.1.2 固定分区分配3.2.1.3 动态分区分配3.2.2 动态分区分配算法3.2.2.1 首次适应算法3.2.2.2 最佳适用算法3.2.…

【数据库原理与SQL Server应用】Part05——表和表数据操作

【数据库原理与SQL Server应用】Part05——表和表数据操作一、表概念1.1 表结构1.2 表类型1.3 数据类型二、创建表2.1 管理工具界面方式创建表2.2 命令行方式创建表三、修改表3.1 管理工具界面方式修改表3.2 命令行方式修改表四、删除表五、表数据操作5.1 管理工具界面方式操作…

怎么快速选择出色的香港服务器

相信一些大规模企业或站长都不满足于普通的香港VPS,虽然它也拥有很不错的性能与速度,但远远比不上香港服务器。但是,对于初次使用香港服务器的用户来说,选择起来肯定是要经过一番考虑的,那么,有没有什么简单…

电子词典项目

16. 电子词典项目需求 项目要求: 登录注册功能,不能重复登录,重复注册单词查询功能历史记录功能,存储单词,意思,以及查询时间基于TCP,支持多客户端连接采用数据库保存用户信息与历史记录将dic…

VS2022离线安装教程

官方教程下载和安装步骤 https://docs.microsoft.com/zh-cn/visualstudio/install/create-an-offline-installation-of-visual-studio?viewvs-2022 使用命令行创建本地布局 下载所需的 Visual Studio 版本的引导程序,并将其复制到要用作本地布局源位置的目录中。…

训练自己的GPT2模型(中文),踩坑与经验

GPT2与Bert、T5之类的模型很不一样!!! 如果你对Bert、T5、BART的训练已经很熟悉,想要训练中文GPT模型,务必了解以下区别!!! 官方文档里虽然已经有教程,但是都是英文&…

手撸低代码平台搭建(四)组件拖动自由布局的实现

前言 大家好,在前两篇文章中,我们走进了前端低代码的世界,并揭秘了低代码的核心——页面设计器的实现。在揭秘页面设计器时,我们重点分享了顺序排列布局的组件拖动方式,那篇文章的评论中,有小伙伴问到自由布局的实现,那么我们在这篇文章中来分享一下自由布局拖动的实现…

Echarts柱形头部圆弧处理

第008个点击查看专栏目录对于柱状图来说,我们想要的效果是圆柱的上面进行圆弧的处理,产生顺滑的感觉,怎么处理呢,只要设置好样式即可,参考源代码圆角半径,单位px,支持传入数组分别指定 4 个圆角…

VMware 多站点容灾之SRM部署实践

一、背景 在VMware 多云场景中,我们最初会通过vmware的副本机制手动克隆或主从模式完成一些节点的灾备,虽然在初期不会出现什么问题,但一旦出现灾备恢复的复杂度和数据丢失风险还是一大考验,基于此,我们可借助VMware v…

Qt 获取网络信息

在Qt Network模块中使用QHostAddress存放IP地址,QHostInfo类来获取主机名和IP。 进行TCP/UDP编程时,需要将连接的主机名解析为IP地址,这个操作用DNS协议执行。 在互联网中现在有两种IP类型:IVP4和IVP6。 IP地址是给每一个连接在互…

Linux操作系统之基础IO

目录 系统IO调用接口 open write read 理解文件描述符fd 理解Linux操作系统的设计哲学,多态的思想是如何应用在Linux文件系统的 输出,追加,输入重定向的本质 子进程共享父进程的文件 IO的两个缓冲区 Linux特有的EXT文件系统 磁盘系…

代码训练营第二十天|530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

530 .二叉搜索树的最小绝对差 看完题后的思路 因为是二叉搜索树,所以直接按照二叉搜索树中序遍历,得到递增序列。遍历过程中一个指针指向遍历过的前一个元素 prenull; void f(root)if rootnull return递归 f&#x…

git语义化定制版本规范

目录说明说明 语义化版本控制规范,语义化的版本控制规范要求版本号由三部分构成:x.y.z MAJOR(X):这个是主版本号,一般是涉及到不兼容的 API 更改时,这个会变化。MINOR(Y)&#xff…

剑指Offer pow() 函数实现(快速幂)!!!

剑指 Offer 16. 数值的整数次方 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示…

早已有所耳闻的堆排序,你知道如何用C语言实现吗? 【堆排序|C语言版】

目录 0.写在前面 1.什么是堆? 2. 堆排序 2.1 建堆 2.1.1 AdjustUp(向上调整算法) 2.1.2 AdjustDown(向下调整算法) 2.2 两种建堆算法的时间复杂度 2.2.1 AdjustUp建堆的时间复杂度 2.2.2 AdjustDown建堆的时间…

神经网络(模型)量化介绍 - PTQ 和 QAT

神经网络(模型)量化介绍 - PTQ 和 QAT1. 需求目的2. 量化简介3. 三种量化模式3.1 Dynamic Quantization - 动态量化3.2 Post-Training Static Quantization - 训练后静态量化3.3 Quantization Aware Training - 量化感知训练4. PTQ 和 QAT 简介5. 设备和…

Flutter 小技巧之 3.7 性能优化background isolate

Flutter 3.7 的 background isolate 绝对是一大惊喜,尽管它在 release note 里被一笔带过 ,但是某种程度上它可以说是 3.7 里最实用的存在:因为使用简单,提升又直观。 Background isolate YYDS 前言 我们知道 Dart 里可以通过新建…

CODESYS开发教程9-文件读写(CAA File库)

今天继续我们的小白教程,老鸟就不要在这浪费时间了😊。 前面一期我们介绍了CODESYS的定时器及触发相关的功能块。这一期主要介绍CODESYS的CAA.File库中的目录和文件读写功能块,主要包括文件路径、名称、大小的获取以及文件的创建、打开、读、…

软测(概念) · 软件测试的基本概念 · 什么是需求 · 测试用例的概念 · 软件错误(bug)的概念

一、什么是软件测试软件测试和开发的区别测试和调试的区别一个优秀的软件测试人员具备的素质二、什么是需求从测试人员角度看待需求三、测试用例的概念四、软件错误(bug)的概念一、什么是软件测试 最常见的解释是:软件测试就是找 BUG&#x…

个人博客美化

总体参考: Butterfly 文档:https://butterfly.js.organzhiyu :https://anzhiy.cn张洪 Heo :https://blog.zhheo.comLeonus :https://blog.leonus.cn 注:博客所有美化大部分(全部)都参…