AutoSAR Dem配置项基础知识梳理

dem负责dtc的处理,包括冻结帧、扩展数据、运行循环、debounce策略等。
从最上层来看,dem分别是demconfigset、demgeneral两大部分。其中demconfigset是围绕event的配置,demgeneral负责dtc和event的通用部分,包括冻结帧、扩展帧、使能条件、运行循环等。
demgeneral
demgeneral分小部分,通用配置、冻结帧配置、扩展数据配置。
通用配置:
demavailabilitysupport:定义是否支持通过 dem_seteventavailable接口设置event的有效性 ,用于在运行时切换事件的可用性。
dembswerrorbuffersize:配置bsw event的数量,在event配置里,需要配置event是bsw_kind还是swc_kind;
demcleardtcbehavior:定义dcm回复肯定响应的时机。
volatile:dem清除ram中的dtc数据之后,dcm回复肯定响应;
nonvolatile_trigger:dem清除ram中数据并且启动nvm清除数据,dcm回复肯定响应;
nonvolatile_finish:dem清除ram中数据,同时启动并完成nvm清除数据,dcm回复肯定响应。
demcleardtclimitation:dtc清除配置;
all_supported_dtcs:支持所有的dtc值;
only_clear_all_dtcs: 仅支持清除所有dtc;
only_clear_single_and_all_dtcs:支持单个和所有dtc清除;
demdataelementdefaultendianness:定义数据元素的字节序;
demdebouncecounterbasedsupport、 demdebouncetimebasedsupport :定义是否支持计数或计时debounce。这个配置限制了event中debounce处理。
demdtcstatusavailabilitymask:设置0x19服务支持的状态位;
demenvironmentdatacapture:设置冻结帧和扩展数据的获取是同步还是异步,也就是在当前周期,还是下个周期;
•demeventcombinationsupport:是否支持多个event映射到一个dtc;
•demeventdisplacementstrategy:配置dtc的替代策略,这autosar提供了几种,也可以自定义。
•demeventmemoryentrystoragetrigger:定义冻结帧和扩展数据的触发存储的条件,一般是选test_fail,意味着test_fail从0—>1触发。
•demgeneralinterfacesupport:环境数据和eventstatus改变是否,提供callback接口,一般选择false;
•demimmediatenvstoragelimit:定义nvm立即写的限制数量,demgeneral/demimmediatenvstoragesupport和demconfigset/demdtcclass/demimmediatenvstorage需要开启;
•demmaxnumberevententryeventbuffer:定义环境数据缓存的大小;
•demmaxnumberprestoredff:定义预存储快照的最大数量;一般存储的冻结帧里有快速变化的数据,需要配置;
•demresetconfirmedbitonoverflow:定义当事件存储被取代时,confirmed位是否复位,一般设置为true;
•demstatusbithandlingtestfailedsincelastclear:定义老化和内存替代后是否设置“testfailedsincelastclear”状态位。
•demstatusbitstoragetestfailed:定义testfail位是否存储;
•demsuppressionsupport:定义是否支持dtc或者event抑制;
•demtypeofdtcsupported:定义dtc的格式;
•demtypeoffreezeframerecordnumeration:定义如何分配快照号
•demnvramblockids:设置event memory数量,从nvm引用;
•demoperationcycle:运行循环设置,这里虽然可以配置不同的运行循环,但是循环的控制还是需要在代码里去实现;
•demstoragecondition:设置环境数据是否可以存储;用于event引用;
•demdtcofgroup:可以将dtc分成不同的组,后面会详细讲。
冻结帧配置:
1.demdataelementclass:用于配置所需的冻结帧数据以及扩展数据,这些数据可以来自模块定义好的,也可以通过sr接口获取,
2.demdidclass:定义冻结帧的数据的did;
3.demfreezeframeclass:选择需要参考的demdidclass;
4.demfreezeframerecrecordclass:定义冻结帧的触发条件,以及是否更新;
5.demfreezeframerecnumclass:对需要record的数据进行打包成一个冻结帧结构;
对于快照数据:可以选择一个did映射一个数据,这样的好处是数据和did明确的,解析也方便,当时劣势是占的空间大,每个did需要占2个byte;另外一种方案是用一个did定义一大块内存,上层软件去做数据打包,这样就节省空间,劣势就是需要自己打包,以及上位机按照下位机的格式进行数据解析。
扩展数据:
1.demextendeddatarecorderclass:选择demdataelementclass中的数据,并设置更新策略以及数据id;
2.demextendeddataclass:打包扩展数据,用于event引用。
demconfigset
demconfigset这个菜单主要是围绕event来展开配置的。首先来梳理一下event和dtc的一些基础信息。
event是指系统诊断事件,dem用eventid来区分不同的诊断事件,通常使用来说event和dtc是一一对应的,但是如果是使用event combination,则可以多个event对一个dtc。
event的基础信息包括event priority、event occurrence、event kind。
1.event priority是指事件的优先级,其中1表示优先级最高,数据越大优先级越低;
2.event occurrence主要是根据demgeneral中配置的democcurrencecounterprocessing来处理,一种是testfailbit 0—>1,一种是在confirmbit为1的情况下,testfail bit0—>1,两者统计的大小会相差1.
3.event kind主要是将event分为bsw和swc两种,在demgeneral中也配置了bswerror的buffer大小。其两者的区别是,bsw kind是通过配置来关联到dem模块,比如在busoff故障,可以直接在cansm中直接关联dem。
4.bsw和swc的区别在与,在dem_preinit后,就可以处理bsw kind故障,而swc kind需要在dem_init后才能处理。
eventdependencies
event之间的依赖目的是过滤部分级联故障以及节省存储。其主要通过demcomponent来实现的,比如传感本身发生故障,这时控制器读取的数据也应该无效。
一个demcomponent是若干event的集合,在demcomponent内部,故障事件有优先级,当一个demcomponent内部最高优先级的故障事件状态为failed导致其他故障事件状态也为failed,或者父节点demcomponent的状态为failed导致子节点demcomponent内的故障事件状态failed,这种故障叫做连续错误(consecutive fault),其他被认为是偶发错误(causal fault)。
另外如果demcomponent内部故障事件优先级被忽略,那么仅有当父节demcomponent的状态为failed导致子节点demcomponent内的故障事件状态变成failed被称作是连续错误(consecutive fault)。连续故障则不会记录环境数据。
1.dtc  format是指dtc的格式,分别为15031和14229两种,15031的格式为u150293,14229为d50293。
2.dtc severity是指用于表示故障的严重程度,主要从售后的角度来看,分为,立即检查、下次检查、立即维修。
3.dtcsignificance 是用于区分是ecu或系统的fault还是外部fault。
4.suppressdtc output是指demgeneral中demsuppressionsupport 配置参数,如果参数配置为true,则可以通过dem_setdtcsuppression 接口抑制某些dtc,抑制后对外是不可见的。
5.dtcgroup只需要一个参数就可以确定,就是dtc的界限(下界),上图中两个dtc组它们的各自参数就是该组dtc的下界,一个dtc组中的包含的dtc是该组配置的dtc界限与本组紧接的下一组的界限之间的dtc,但是不包括这两个界限。这就可以用于0x14或0x85服务进行单独操作。当前内部预制了两个组如下。
demconfigset-debounce策略
基于计数器的debounce策略
在这种策略下,dem模块会提供一个计数器(fault detection counter)用来记录判断的结果,当diagnostic monitor上报至dem的状态为prefailed,计数器会按步长增加,当上报状态为prepassed,计数器按步长减少。
1、5表示jumpdown功能,
3、4表示jumpup功能,
2表示当前计数器小于demdebouncecounterjumpdownvalue ,所以jumpdown功能没有激活,
6表示demdebouncecounterjumpdownvalue ,
7表示demdebouncecounterjumpupvalue,
8表示demdebouncecounterfailedthreshold ,
9表示demdebouncecounterpassedthreshold ,
10、12表示故障确认,由于计数器的值达到了fail的限值,
11故障恢复,由于计数器的值达到pass的限值,
13表示dem接收的状态为failed,所以故障直接置位;
14表示dem接到的状态为passed,所以故障恢复;
15表示demdebouncecounterincrementstepsize,
16表示demdebouncecounterdecrementstepsize,
基于次数的debounce涉及的配置项含义如下:
1、fdc(fault detection counter):错误计数器,其范围为-128~127;
2、demdebouncecounterfailedthreshold:故障从prefailed状态跳转至failed的限值;
3、demdebouncecounterpassedthreshold:故障从prepassed状态跳转至passed状态的限值。
4、demdebouncecounterincrementstepsize:当diagnostic monitor上报prefailed,错误计数器的增加量;
5、demdebouncecounterdecrementstepsize:当diagnostic monitor上报prepassed,错误计数器减少量;
6、demdebouncecounterjumpdown:是否使能jumpdown功能,jumpdown功能是指当上一次diagnostic monitor上报的状态是prefailed,而这次上报的是prepassed,且当前计数器的值大于demdebouncecounterjumpdownvalue,错误计数器的值会重置为demdebouncecounterjumpdownvalue。如果jumpdown功能禁止,计数器按照步长减少。
7、demdebouncecounterjumpdownvalue:当jumpdown功能使能,该变量定义了计数器的重置值。
8、demdebouncecounterjumpup:是否使能jumpup功能,jumpup功能是指当上一次diagnostic monitor上报的状态是prepassed,而这次上报的是prefailed,且当前计数器的值小于demdebouncecounterjumpupvalue,错误计数器的值会重置为demdebouncecounterjumpupvalue。如果jumpup功能禁止,计数器按照步长增加。
9:demdebouncecounterjumpupvalue:当jumpup功能使能,该变量定义了计数器的重置值。
基于时间的debounce策略
计数器的初始值为0,其范围为-128~127,当dem接收到diagnostic monitor发送的状态值开始计数,计数器的增长方向有接收到的状态决定,当计数器的值在一定时间达到阈值,完成此次判断,如果在未达到阈值之前,dem收到的状态发生变化,计数器会重新开始计数,并且计数方向也发生转变。
t failed:表示故障failed需要的时间,该值等于debouncetimebasedtasktime乘以demdebouncetimefailedthreshold;
t passed:表示故障passed需要的时间,该值等于debouncetimebasedtasktime乘以demdebouncetimepassedthreshold;
1、表示diagnostic monitor传至dem的状态为prefailed;并经过t failed时间故障状态编程failed;
2、表示diagnostic monitor传至dem的状态为prepassed;此时计数器重新开始计数;
3、由于2时刻开始计数未达到阈值时,dem接收的状态发生变化,此时计数器开始重新计数,并计数方向发生变化,经过t failed时间后,故障状态编程failed。
4、dem接收到的状态为failed,所以故障直接置位了;
5、dem接收到的状态为passed,所以故障直接恢复了;
6、表示故障已发生;
7、表示故障未发生;
对于基于时间debounce的策略主要配置以下几个参数:
1、debouncetimebasedtasktime:该变量定义基本的检测周期
2、demdebouncetimefailedthreshold:定义故障状态从prefailed跳转至failed需要多少个debouncetimebasedtasktime周期;
3、demdebouncetimefailedthreshold:定义故障状态从prepassed跳转至passed需要多少个debouncetimebasedtasktime周期;


配网故障定位|鼎信智慧|技术创新和安全保障
新iPhone如何命名,iPhone9彻底没了?
区块链的产业发展有哪六大趋势?已经在13个行业赋能了实体经济
行业 | 威华股份与巴莫科技签8.43万吨锂盐采购协议
天花板嵌入式led灯电路图
AutoSAR Dem配置项基础知识梳理
直流电动机的工作原理简述 直流电机工作原理图 直流电机有几种类型
LT8612/LT8613高效降压稳压器在汽车和工业领域的应用
STM32的USART1与USART2模块串行数据通讯功能
ADC转换器的主要技术参数及分类
AD5764双极性DAC的功能框图及方案详解
采用Tek TDS 7404示波器测试DVI接收器
关于GD32F150R8的智能汽包水位计研究的分析和介绍
EE直播间|GPU助力数据中心高性能计算和AI大模型的开发
增强现实技术如何提高生产工厂效率?
揭秘华为手机的石墨烯散热技术
SocionextSoC车载图形显示解决方案
数字宽带收发信机如何表征
纤巧、高效率单片式稳压器为先进的SoC和微处理器供电
采用SPI接口的模拟开关可提高通道密度