Bootstrap

DBC中的factor和offset及其运算公式

DBC中的factor和offset及其运算公式

“factor”和“offset”简介

转换参数介绍:

在DBC文件中,“factor”和“offset”用于描述信号的转换参数。

  1. “factor”是转换系数,用于确定从原始值到物理值的转换比例。例如,如果要将原始速度值(如km/h)转换为物理速度值(如在报文中表示的车速),转换系数可能是256。
  2. “offset”是转换偏移量,用于定义转换过程中的一个常数偏移。例如,如果要在上述速度转换中加入一个偏移量,偏移量可能是50。

转换公式:

根据这些定义,可以使用以下公式进行转换:

物理值 = 原始值 * factor + offset

原始值 = (物理值 - offset) / factor

例如,假设实际车速为50.01km/h,转换系数为256,偏移量为50,则有:

50.01km/h * 256 + 50 = 12802.56 = (H)3202

结果,3202就是填充在CAN报文中的车速数据。

因此,“factor”和“offset”在DBC文件中用于描述和定义信号从原始值到物理值或从物理值到原始值的线性转换规则。

实际项目举例:

接收信号LatAcc:

信号LatAcc的定义:

在这里插入图片描述

在这里插入图片描述

信号LatAcc的代码解析:
    comstatus = Com_ReceiveSignal(ComConf_ComSignal_LatAcc, &raw);
    if(E_OK == comstatus)
    {
        LatAcc = ((raw * 0.01) + (-1.27));
    }

发送信号JP_AccAxTar:

信号JP_AccAxTar的定义:

在这里插入图片描述

在这里插入图片描述

信号LatAcc的代码解析:
        uint16 data;
        #ifdef MINMAX_CHECK
        if(JP_AccAxTar < -20.48) { JP_AccAxTar = -20.48;} // Min Value : -20.48
        if(JP_AccAxTar > 20.47) { JP_AccAxTar = 20.47;} // Max Value : 20.47
        #endif
        data = ((uint16)(((JP_AccAxTar - (-20.48)) / 0.01)));
        Com_SendSignal(((VAR(Com_SignalIdType, AUTOMATIC))ComConf_ComSignal_JP_AccAxTar), &data);

《AUTOSAR谱系分解(ETAS工具链)》之总目录

;