Pila de comunicación de Autosar: fundamentos 2

QA1.¿Cuál es el uso del filtro de señal Rx?

Respuesta : ¿Cuál es el uso del filtro de señal Rx? En el desarrollo de la comunicación, debería haberse encontrado con este problema: el juicio del umbral de la señal. Ejemplo: La señal de velocidad del vehículo (Vehicel_Signal) está representada por un tipo de datos uint16. El rango de valores válidos de Vehicel_Signal es: 0~300Km/h. Si Vehicel_Signal > 300Km/h, la señal se descartará y el último valor válido será conservó. Entonces, usando Rx Signal Filter, puede lidiar con problemas similares.

Una I-PDU contendrá 1~N señales (N es un número entero positivo mayor que 1), y estas señales pueden no estar incluidas en ningún grupo de señales, o pueden estar incluidas en varios grupos de señales.

Para comprender mejor Signal Filter, aquí hay una discusión sobre el flujo de recepción y procesamiento de señales:

Paso 1. El módulo COM recibe una I-PDU, que contiene 5 señales: Signal00, Signal01, Signal02, Signal03, Signal05. Entre ellos, Signal01, Signal03 y Signal05 pertenecen a SignalGroup01;

Paso 2. En la capa COM, divida la I-PDU recibida en señales.Si la señal tiene una condición de filtro, juzgue la condición de filtro;

Paso 3. Si Filter Condition = FALSE, la señal se descarta y el búfer de señal Rx correspondiente no se actualiza . Si Filter Condition = TRUE, actualice el Rx Signal Buffer correspondiente a la señal;

La especificación de Autosar explica la condición del filtro de la siguiente manera:

La especificación de Autosar explica que Signal Filter Condition = False, si la señal no está en SignalGroup, el valor del búfer de recepción correspondiente a la señal no necesita actualizarse; si la señal está en SignalGroup , el valor del búfer de recepción correspondiente a la No es necesario actualizar el grupo de señales , es decir: guardar el último valor, de la siguiente manera:

Paso 4. Si la señal no pertenece a ningún SignalGroup, la capa superior puede llamar directamente a la interfaz Com_ReceiveSignal() para obtener los datos de la señal del Rx Signal Buffer. Si la señal pertenece a SignalGroup, los datos de la señal deben copiarse del búfer de señal Rx al búfer Rx de SignalGroup (búfer de sombra) a través de la interfaz Com_ReceiveSignalGroup(), y luego la capa superior lee el valor de la señal a través de Com_ReceiveSignal( ) interfaz.

El proceso de recepción de la señal Rx es el siguiente:

¿Cuál es la relación entre QA2, Tx Signal Filter y Tx Mode?

Respuesta : Desde QA1, puede saber que Rx Signal Filter puede verificar el umbral de la señal. Entonces, ¿el filtro de señal Tx también puede verificar el umbral de la señal? La especificación de Autosar da una explicación, como sigue:

Resumen: Tx Signal Filter no puede verificar el umbral de transmisión de la señal, sino solo la base para juzgar el modo de transmisión de la I-PDU. ¿Cuáles son los modos de envío de Tx I-PDU? ComTxModeTrue o ComTxModeFalse. Analice la relación entre ComTxMode y Tx Signal Filter a través de un ejemplo como sigue:

Step1、如果信号不包含在任何TxSignalGroup中,上层通过调用Com_SendSignal()接口,直接更新Tx Signal Buffer。如果信号包含在某个TxSignalGroup中,上层通过调用Com_SendSignal()接口,更新SignalGroup Tx Buffer(Shadow Buffer)中信号数据,之后通过Com_SendSignalGroup()接口更新Tx Signal Buffer;

Step2、通过Filter Condition检查Tx Signal过滤条件;

Step3、TMS(Transmission Mode Selector)判断Tx I-PDU中每个Signal的发送模式接口,如果其中一个Signal的检查结果是TRUE,则Tx I-PDU选择ComTxModeTrue发送行为;如果所有的Signal的检查结果均为FALSE,则Tx I-PDU选择ComTxModeFalse发送行为。

Tx Signal的发送行为如下所示:

QA3、ComTxModeTrue、ComTxModeFalse使用场景?

答:为什么一个Tx I-PDU会有ComTxModeTrue、ComTxModeFalse发送模式呢?一个Tx I-PDU的发送类型有:DIRECT、MIXED、PERIODIC。

DIRECT:事件型,比如:连续发送3次,发送最小间隔20ms。

PERIODIC:周期型,比如:每100ms发送一次。

MIXED:包含DIRECT、PERIODIC两种发送行为。

ComTxModeTrue、ComTxModeFalse可以存在这样的使用场景:Tx I-PDU Mode = TRUE时,使用PERIODIC发送行为;Tx I-PDU Mode = FALSE时,使用DIRECT发送行为。

QA4、Tx Signal的发送行为注意事项

:上层通过RTE调用Com_SendSignal()接口,更新需要发送Signal数值,注意:此时信号数值只是更新到了发送缓冲区。信号值的发送,依赖信号所在的Tx I-PDU周期。同时,COM层的发送主函数Com_MainFunctionTx()周期判断每一个Tx I-PDU周期到时与否,如果Tx I-PDU周期到时,调用PduR的发送接口发送Tx I-PDU.

对于周期型报文,假设:Com_MainFunctionTx()周期 = 10ms,周期型报文Tx I-PDU对应的发送周期为30ms,发送行为如下所示:

需要注意:上层信号的更新频率不应超过Tx I-PDU的发送周期,否则信号值被覆盖,如下所示:

大家可能在想:使用Queue机制不可以吗?信号数据队列发送,遗憾的是:目前,Autosar规范中的信号发送行为,不考虑Queue。

对于事件型报文,假设:Com_MainFunctionTx()周期 = 10ms,事件型报文Tx I-PDU对应的最小发送间隔为20ms,发送行为如下所示:

同样,上层信号的更新频率过快,会导致发送信号的数值被覆盖,如下所示:

Supongo que te gusta

Origin blog.csdn.net/NMR0574/article/details/129660493
Recomendado
Clasificación