Autosar杂谈之原始值和物理值

今天想到一个在诊断和通信开发过程中的小点,原始值和物理值。

熟悉DBC的朋友知道,我们在DBC的Signal属性中,有一项是对其signal的数值属性做配置,如图所示。

Autosar杂谈之原始值和物理值_第1张图片

我们主要关心的一般是length、factor、offset,那么根据该属性配置可得物理值和原始值的关系为:

Physics= Factor * Raw + Offset

Raw就为实际上就是ECU中传递的值,而Physics即为真实的物理值,即CANoe根据DBC解析完,具体的物理量。

而在诊断中,诊断描述文件,即CDD文件中,对于DID线性数据类型中,也存在一个类似的转换关系:

Physics= Factor/Divsor * Data +Offset

很多场景下,主机厂要求把某个信号值以诊断DID的形式汇报出来,而CDD中定义的参数和DBC中的不同,那么应该怎么办呢。

首先,我们需要明确,诊断从总线拿过来的值就是原始值Raw,那么在两边参数不同的情况下,那就必须再人为加一层转换。

例如DBC中定义Factor为0.5,offset为10,那么根据公式物理值为

Physics = 0.5* Raw + 10

而CDD中为:

Physics = 2 * Data + 5

已知两边的物理值相等,那么Data为

Data = 0.25 *Raw +2.5

因此,我们需要诊断DID函数中,将从总线上的值乘上0.25再加2.5,这样的话CANoe诊断台根据CDD所解析的物理量才能与总线根据DBC解析的保持一致。 

你可能感兴趣的:(诊断,dbc,通信,autosar,mcu)