Vector - CAPL - Real Time on* (Fortsetzung 1)

Fortsetzung vom letzten Mal, lass uns weiter chatten. . .

2. Kontrollklasse

  1. ist busOff

busOff ist ein unumgängliches Thema im Bustest und stellt auch eine wichtige Funktion des CAN-Busses dar. Fühlt sich persönlich etwas ähnlich an wie der Watchdog in der Software, aber der Watchdog startet die Software neu und der Busoff des CAN-Busses gleich ist Wenn der CAN-Knoten anormal ist, zählt er auf besondere Weise und wird bis zu einem gewissen Grad blockiert, und dann wird die vorherige Zählung langsam dekrementiert, bis er wieder normal ist, einmal, um sicherzustellen, dass der gesamte CAN Die normale Produktionskommunikation des Netzwerks, daher muss im CAN-Test busOff erforderlich sein, und heute werden wir auch die verwandten Verwendungsmethoden vorstellen und uns einige Ideen zur Implementierung dieses Teils des Tests liefern;

Das Folgende ist eine Möglichkeit für einen Knoten, seine Rx- und Tx-Fehlerzählungen nach Eingabe des Busoffs auszudrucken und die Zeit und den Kanal zusammen auszudrucken und dann den Kanal zurückzusetzen:

on busOff
{
    int errRxCnt;
    int errTxCnt;
    int channel;
    double timestamp; // [seconds]
    
    timestamp = (double)timeNow() / (double)100000;
    channel = this.can;
    errRxCnt = this.errorCountRX;
    errTxCnt = this.errorCountTX;
    Write("Bus Off: time=%f channel=%d, errRxCnt=%d, errTxCnt=%d",
    timestamp, channel, errRxCnt, errTxCnt);
    
    resetCanEx(channel);
}

Hinweis: Dieses Ereignis wird aufgerufen, wenn sich einer der Zähler in this.errorCountRX und this.errorCountTX ändert;

  1. on errorActive/on errorPassive/on warningLimit

In ähnlicher Weise können wir auch den Status des CAN-Bus-Controllers durch Schlüsselwörter wie errorActive, errorPassive und warningLimit überwachen. Wenn sich sein Fehlerzähler (errorCountRX, errorCountTX) ändert, kann das Ereignis ausgelöst werden. Wir machen es gemäß den spezifischen Anforderungen Die Verarbeitung der Antwort wird verwendet, um die Integrität der Softwarefunktion des aktuellen Geräts zu überprüfen und die Qualität des Produkts sicherzustellen.

on errorActive 
{
   write("CAN Controller is in errorPassive state")
   write(" errorCountTX = %d", this.errorCountTX);
   write(" errorCountRX = %d", this.errorCountRX);
};
on errorPassive 
{
   write("CAN Controller is in errorPassive state")
   write(" errorCountTX = %d", this.errorCountTX);
   write(" errorCountRX = %d", this.errorCountRX);
};
on warningLimit 
{
   write("CAN Controller is in errorPassive state")
   write(" errorCountTX = %d", this.errorCountTX);
   write(" errorCountRX = %d", this.errorCountRX);
};

3. Systemereignisse testen

Testsystemereignisse können aufgerufen werden, bevor eine Messung beginnt, wenn eine Messung beginnt und wenn eine Messung endet. Beispielsweise kann hier bei preStart als Initialisierungsvariable verwendet werden, mit der Write-Funktion eine Startmeldung an das Write-Fenster ausgegeben werden, ein Timer gestartet oder statistische Informationen nach Ende der Messung ausgegeben werden usw.

1、auf Vorstart

on-preStart: Wird hauptsächlich verwendet, um Variablen zu initialisieren, Meldungen im "Write"-Fenster anzuzeigen und Daten aus Dateien zu lesen. Bei der Ausführung des on-preStart-Programms können nicht alle Funktionen unter dieses Ereignis gestellt werden. Beispielsweise ist es nicht erlaubt, mit der Ausgangsfunktion eine Nachricht auf den Bus zu senden.

on preStart
{
   write("Measurement started!");
   msg_Count = 0;
}

am Start

on start
{
   write("start Node A");
   setTimer(cycTimer,20);
   CallAllOnEnvVar(); // CANoe only
}

2、on preStop/stopMeasurement

Der Handler on-preStop wird aufgerufen, nachdem das Stoppen der Messung angefordert wurde. Die on-preStop-Funktion wird im Allgemeinen verwendet, wenn die Abschluss-Cao-Gruppe ausgeführt wird, und es ist erforderlich, dass diese Suchen abgeschlossen sind, bevor die eigentliche Messung stoppt.

on preStop
{
   message ShutdownReq m;

   output(m);
   DeferStop(1000);
}

Hinweis: Wenn einige Operationen (z. B. das Einstellen der Umgebung) nur in StopMeasurement gestartet werden, hat dies keine Auswirkungen. Wenn jedoch ein komplexerer Pre-Stop-Vorgang erforderlich ist, z. B. das Senden einer Abschaltnachricht an das angeschlossene Steuergerät und das Warten auf eine Bestätigungsnachricht, kann ein DeferStop-Aufruf in der Funktion on preStop helfen, den Messstopp weiter zu verzögern.

Guess you like

Origin blog.csdn.net/weixin_54581097/article/details/129700572