最近很多客户的需求变更为某一个DTC不需要支持 19 04,当用19 04 +DTC Code+SS Num去读取时需要回复NRC31,但很多人有一个疑问为什么明明我将CFG配置中的相关配置(参见下图1)删掉后用19 04 +DTC Code +FF依然会有正响应呢?
Reply:
以Vector Autosar的实现为例:
1.首先要清楚19 04在Vector Autosar的软件架构中是如何实现的,到这很多人可能会说”这个很简
单,不就是按照Autosar的逻辑框图那样吗,点开CFG看一下就知道了“,我想说大错特
错!!!!!,想真正的去解决实际的问题还是需要看懂Vector的代码包具体是怎么实现的。
话不多说,上硬货!!!!!
2.
图1
下边的截图是实际当请求冻结帧SS Nmuber是FF还是具体的别的值比如0X1,0X2等等等的
关键位置,当请求FF时逻辑进入If条件下的逻辑,其它进入Else,在Else中如果该DTC
没有在上图1框住的位置进行配置则该函数Reture的值为48(DEM_NO_SUCH_ELEMENT)
如果请求FF的话,则在If条件下的函数会执行,如果在DEM中DTC有任何一个DTC配置了支持
19 04的话则 用19 04 +DTCCode(该DTC Code无论支持 19 04与否)都会有正响应;
原因见图3,是因为只要有一个DTC支持冻结帧则编译选项DEM_CFG_SUPPORT_SRECS
就会等于 STD_ON,也就是会回复正响应;
图3