我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

StatusOfDTC的解析

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→1elseif ( 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→1elseif ( ( 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→1elseif ( 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→0elseif ( ClearDiag )   Bit→1

在这里插入图片描述

Bit 5: testFailedSinceLastClear

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

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

在这里插入图片描述

Bit 6: testNotCompletedThisOperationCycle

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

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

在这里插入图片描述

Bit 7: warningIndicatorRequested

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

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

在这里插入图片描述

来源地址:https://blog.csdn.net/Last_Impression/article/details/128822060

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

android多屏触摸相关的详解方案-安卓framework开发手机车载车机系统开发课程

背景 直播免费视频课程地址:https://www.bilibili.com/video/BV1hN4y1R7t2/ 在做双屏相关需求开发过程中,经常会有对两个屏幕都要求可以正确触摸的场景。但是目前我们模拟器默认创建的双屏其实是没有办法进行
2023-08-30

RK3588平台开发系列讲解(AI 篇)RKNN-Toolkit2 模型的加载

文章目录 一、Caffe模型加载接口 二、TensorFlow模型加载接口 三、TensorFlowLite模型加载接口 四、ONNX模型加载 五、ONNX模型加载 六、PyTorch模型加载接口 沉淀、分
2023-08-30

Go语言开发点餐系统中的购物车功能详解

Go语言开发点餐系统中的购物车功能详解引言:随着电子商务的蓬勃发展,点餐系统已经成为了餐饮行业的重要组成部分。而购物车功能则是点餐系统中不可或缺的一部分。本文将详细介绍在使用Go语言开发点餐系统时,如何实现购物车功能,并给出具体的代码示例。
Go语言开发点餐系统中的购物车功能详解
2023-11-01

java log is判断引发的一系列事件解析

这篇文章主要为大家介绍了java log is判断引发的一系列事件解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

解析使用 Go 语言开发安卓系统的可能性

用 go 语言开发安卓应用程序是可行的,其优势包括高性能、并发性、跨平台性和简洁语法。用 go 语言开发的安卓应用能编译成原生代码,提供卓越性能。此外,go 语言原生支持并发性,便于编写高并发应用程序。跨平台特性允许用 go 编写的应用在安
解析使用 Go 语言开发安卓系统的可能性
2024-04-03

win7系统开机启动项不能加载的原因分析及解决

开机启动项是每台电脑都有的东西,就是多和少的问题的,很多人开机的时候喜欢加载很多的启动项,其实这也没什么不好的。现在的电脑为了受到更好的保护,往往在开机的时QeWZq候就加载了一些启动项,如:杀毒软件,安http://www.cppcns.
2023-05-29

网站开发中收录下降的系统分析以及解决办法是怎样的

本篇文章给大家分享的是有关网站开发中收录下降的系统分析以及解决办法是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。有些心急的朋友也许也遇到过这样的问题的时候有可能就开始对
2023-06-12

编程热搜

目录