Autosar BSW 之诊断 (2) Dem

本文深入探讨了AUTOSAR诊断中的DTC(故障诊断码)和Event。DTC的高字节用于标识系统和故障定义者,低字节表示故障类型。Event作为DTC的实际操控者,与DTC有多种关联方式,如周期上报和触发上报。Event occurrence计数器反映了故障的频率,影响故障数据的存储和仲裁。
摘要由CSDN通过智能技术生成

1. DTC

1.1 确定说明

  • DTC High Byte(Bit7+Bit6): 表示所属系统

    • 0:P Powertrain:动力系统故障

    • 1:C Chassis:底盘故障

    • 2:B Body:车身故障

    • 3:U Network:网络故障

  • DTC High Byte(Bit5+Bit4): 表示故障定义者

    • 0:0 SO/SAE标准定义的故障码

    • 1:1 制造商自定义的故障码

    • 2:2 ISO/SAE预留

    • 3:3 ISO/SAE预留

  • DTC High Byte(Bit0-Bit3)+DTC Middle byte: 表示发生故障的目标系统

  • DTC Low Byte:表示故障的类型

    • bytes 1(high) 用于表示错误类型(如信号、电路、存储等等)

    • bytes 1(low)表示错误具体子类型(如开路、短路等)

1.2 掩码

  • Bit0(TestFailed):

      逻辑1表示一个故障被监测到

      逻辑0表示最近的故障测试通过或已存在的故障所有的故障条件已不满足

      清除:ClearDiagnosticInformation命令。

  • Bit1(TestFailedThisOperationCycle):

      表示当前Cycle发生了TestFailed;逻辑1表示当前操作周期或从上一次ClearDiagnosticlnformation命令清零后已经监测到一次故障

      清除:ClearDiagnosticInformation命令、新的操作周期。

  • Bit2(PendingDTC):

      表示当前或者上一个循环测试结果不为失败;逻辑1表示当前操作周期或从上一次ClearDiagnosticlnformation命令清零后已经监测到一次故障

      清除:ClearDiagnosticInformation命令、一个完整的操作周期内未出现故障

  • Bit3(ConfirmedDTC):

      逻辑1表示一个已经被确定的故障被监测到,被确定的条件有:在连续操作周期内都检测到故障(TestFailed),且检测到的计数(TripCounter)已经达到定义的次数值。

      清除:ClearDiagnosticInformation命令、当Aging Counter(Aging Counter:当一个操作周期完成且本周期内没有出现TestFailed,则Aging Counter加1)达到Aging threshold、故障的记录信息被新故障记录覆盖

  • Bit4(TestNotCompletedSinceLastClear):

      逻辑1表示从上次ClearDiagnosticInformation命令复位(置1)后,新的故障测试还未完成

      逻辑0表示从上次清零后,新的故障测试已经完成(Failed or Passed)

  • Bit5(TestFailedSinceLastClear):

      逻辑1表示从上次ClearDiagnosticInformation或其他条件清零后,已经监测到被确定的故障

      逻辑0表示从上次清零后,测试未完成或测试已经Passed(而不是Failed)。

  • Bit6(TestNotCompletedThisOperationCycle):

      逻辑1表示从上次ClearDiagnosticInformation命令复位(置1)后,本操作周期内当前测试未运行完成、操作周期切换也会复位(置1)此状态位

      逻辑0表示从上次清零后,本操作周期内已经出现TestFailed或者TestPassed

  • Bit7(WarningIndicatorRequested):

      逻辑1表示需要故障报警标识的故障已经处于ConfirmedDTC状态(bit3)和TestFailed状态(bit0)

      逻辑0表示无故障需要报警标识提示。

      清除:ClearDiagnosticInformation命令、无需报警标识故障存在

      报警标识被一个锁定的故障打开,就算有ClearDiagnosticInformation清零命令,也不能清零此状态位,仍然要保持开启状态,直到被锁定的故障TestPassed

1.3 术语

  • 操作周期(Operation Cyle): 定义要运行的检测的开始和结束条件,Operation Cycle开始时开始检测故障,结束时停止检测。

  • 监控周期(Monitoring cycle): 检测时会存在一系列条件,并不是操作周期开始就开始检测错误,可以是周期型(Period)、事件型(Event)。

  • 确认阈值(Confirmation Threshold) : 确认此故障一直存在的Operation Clycle数,将其认定在历史DTC,在老化(aging)或手动清除前confirmed DTC状态位会一直存储在EEPOM

  • 老化计数(Aging Counter): 连续报告没有故障的Operation Cycle数

  • 老化阈值(Aging Threshold): Aging Counter达到次数之后,DTC的Confirmed状态位将会被清除

  • 错误计数(FDC, Fault Detection Counter):为错误计数,当然这个步长可以设定,向上(Step up)或者向下(Step down)均可以设置(计数值位-128-127,不同DTC需要的滤波次数不一致,通过设置此项值设置滤波次数)。同时还可以设置jump down(即在检测通过时是否跳转到0或者其它数,并从这个数开始向下减)

  • 扩展数据(Extended):该数据在DTC的状态Pending置上后便会一同保存在非易失性存储单元(EEPROM),对两个常用数据进行说明(其余可以看标准或者依据OEM要求):错误计数和老化计数

  • 冻结帧(Freeze Frame): 记录发生故障时的工况(SnapShot:由一系列的DID组成),当DTC状态位Confirmed位由0置为1时将记录snapShot。

1.4 故障发生前后动作

  • 故障确认前:用户模块上报故障的Debounce防抖处理,确保对应故障不为误报故障

  • 故障确认时:故障事件确认时的故障数据存储至NVM,保证故障能长期保存

  • 故障确认后:故障的老化,替代,实现故障修复后,故障能被清除的功能

2. Event

2.1 和DTC关联

  • DTC只是展示给诊断仪使用者,Event才是DTC状态实际操控者,同时Event也是诊断NVM数据存储实际控制者。

  • DTC是系统层面对于故障的描述,而Event是软件层面对故障监控的最小单元。

  • 多个Event可以mapping 同一个DTC;而同一个Event不能mapping 多个DTC;

  • DTC代表某类Event集中表现,而Event则是某个DTC的具体实例;

  • Event的优先级决定了DTC的优先级;

  • Event之间的依赖关系决定了DTC的依赖关系;

2.2 上报方式

  • 周期上报:周期调用Dem_SetEventStatus

  • 触发上报:Event状态变化时调用Dem_SetEventStatus

  • 上报接口

    • BSW:Dem_ReportErrorStatus

    • ASW:SetEventStatus(RTE)

  • 优先级:诊断事件优先级数值越小,优先级越高,数值为1优先级最大。诊断事件优先级数值越小,优先级越高,数值为1优先级最大。

2.3 Event occurrence

  • 就是故障事件上报计数器,故障上报次数越多,Event occurrence值越大,标志着该故障越"老”。

  • "新"老'故障标签在后续新的故障事件如何存储的仲裁机制上也会发挥重要作用。

  • 特点:

    • 每一个event memory entry都有对应的Event occurrence。

    • 最大值为255.

    • 计数方式有如下两种配置选择

      • DEM_PROCESS_OCCCTR_TF:Bit0 (TestFail) 由0跳变至1, Event occurrence +1

      • DEM_PROCESS_OCCCTR_CDTC:Bit0 (TestFail)由0跳变至1和Bit3由0跳变至1, Eventoccurrence +1

2.4 Event Memory

将Event,冻结帧,扩展数据全部归纳起来做了统一管理

  • 分类

    • DemPrimaryMemory:存储EventId,故障状态,冻结帧,扩展数据

    • DemMirrorMemory:

    • Permanent Event Memory:用于存储OBD相关的DTC

Dem模块必须支持Primary Memory,Mirror和Permanent memory可根据用户需要具体选择,一般用不上。

Primary Memory是一个大小为DemMaxNumberEventEntryPrimary用于存储故障数据的非易失性存储空间。也就是Primary Memory由DemMaxNumberEventEntryPrimary个Event Memory Entry组成。本质上,DemMaxNumberEventEntryPrimary设置为多少,NVM就会提供多少个NVM Block用于存储Primary Memory,就只能存储多少个Event信息。

每个Event Memory Entry存储的内容有:EventId,Occurance Counter,冻结帧,扩展数据,老化周期等。

  • 触发

    • DEM_TRIGGER_ON_TEST_FAILED:DTC bit0 由0跳变成1

    • DEM_TRIGGER_ON_CONFIRMED:DTC bit1 由0跳变成1

    • DEM_TRIGGER_ON_PENDING:DTC bit2 由0跳变成1

    • DEM_TRIGGER_ON_FDC_THRESHOLD:DTC bit0 由0跳变成1 OR DTC bit1 由0跳变成1 OR DTC bit2 由0跳变成1

  • Replacement

    • Event Priority (数字越小存储优先级越高)

    • Event Active或者Event Passive状态(Active优先级高于Passive优先级)

    • EventOccurance Counter (最近发生的存储优先级高于之前发生的)被替换的Event对应DTC中Bit2, Bit3 , Bit5会被设置为0.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丶小破孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值