Pile de communication Autosar : Fondamentaux 2

QA1. À quoi sert le filtre de signal Rx ?

Réponse : À quoi sert le filtre de signal Rx ? Dans le développement de la communication, vous avez dû rencontrer un tel problème : l'évaluation du seuil de signal. Exemple : Le signal de vitesse du véhicule (Vehicel_Signal) est représenté par un type de données uint16. La plage de valeurs valides de Vehicel_Signal est : 0~300 Km/h. Si Vehicel_Signal > 300 Km/h, le signal sera ignoré et la dernière valeur valide sera gardé. Ainsi, en utilisant Rx Signal Filter, vous pouvez traiter des problèmes similaires.

Une I-PDU contiendra 1 à N signaux (N est un entier positif supérieur à 1), et ces signaux peuvent ne pas être inclus dans un groupe de signaux ou peuvent être inclus dans plusieurs groupes de signaux.

Afin de mieux comprendre le filtre de signal, voici une discussion sur le flux de réception et de traitement du signal :

Étape 1. Le module COM reçoit un I-PDU, qui contient 5 signaux : Signal00, Signal01, Signal02, Signal03, Signal05. Parmi eux, Signal01, Signal03 et Signal05 appartiennent à SignalGroup01 ;

Étape 2. Au niveau de la couche COM, divisez l'I-PDU reçu en signaux. Si le signal a une condition de filtre, jugez la condition de filtre ;

Étape 3. Si Filter Condition = FALSE, le signal est rejeté et le tampon de signal Rx correspondant n'est pas mis à jour . Si Filter Condition = TRUE, mettre à jour le Rx Signal Buffer correspondant au signal ;

La spécification Autosar explique la condition de filtre comme suit :

La spécification Autosar explique que Signal Filter Condition = False, si le Signal n'est pas dans le SignalGroup, la valeur du tampon de réception correspondant au signal n'a pas besoin d'être mise à jour ; si le Signal est dans le SignalGroup , la valeur du tampon de réception correspondant au le groupe de signaux n'a pas besoin d'être mis à jour, c'est-à-dire : enregistrez la dernière valeur, comme suit :

Étape 4. Si le signal n'appartient à aucun groupe de signaux, la couche supérieure peut appeler directement l'interface Com_ReceiveSignal() pour obtenir les données de signal du tampon de signal Rx. Si le signal appartient à un SignalGroup, les données du signal doivent être copiées du tampon Rx Signal Buffer vers le SignalGroup Rx Buffer (tampon fantôme) via l'interface Com_ReceiveSignalGroup(), puis la couche supérieure lit la valeur du signal via le Com_ReceiveSignal( ) interface.

Le processus de réception du signal Rx est le suivant :

Quelle est la relation entre QA2, le filtre de signal Tx et le mode Tx ?

Réponse : À partir de QA1, vous pouvez savoir que le filtre de signal Rx peut vérifier le seuil du signal. Le filtre de signal Tx peut-il également vérifier le seuil du signal ? La spécification Autosar donne une explication, comme suit :

Résumé : Le filtre de signal Tx ne peut pas vérifier le seuil de transmission du signal, mais uniquement la base pour juger du mode de transmission I-PDU. Quels sont les modes d'envoi de Tx I-PDU ? ComTxModeTrue ou ComTxModeFalse. Analysez la relation entre ComTxMode et le filtre de signal Tx à travers un exemple comme suit :

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,发送行为如下所示:

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

Guess you like

Origin blog.csdn.net/NMR0574/article/details/129660493