Real-Time Testing

Produktsuche nach Namen


  • Synchrone Ausführung von 100% reproduzierbaren Echtzeittests und Simulationsmodell
  • In Python 2.5 implementierte Echtzeittests, erweiterbar von Benutzer durch Bibliotheken
  • In jedem Simulationsschritt beobachtbare und änderbare Modellvariablen
  • Parallele Ausführung mehrerer unabhängiger Testskripte
  • Keine Modelländerungen für Echtzeittests notwendig
  • Erhältlich für DS1005 und DS1006 (für Singleprozessor- und Multiprozessorsysteme), SCALEXIO und MicroAutoBox

Leistungsmerkmale

Leistungsmerkmale und Anwendungsfälle

  • Dynamisches Nachladen von Tests während der Modell- und Testausführung
  • CAN-Unterstützung von Echtzeittests (basierend auf RTI CAN MultiMessage Blockset)
  • Einsatz von MAT-Dateidaten auf dem Host-PC für Echtzeitsimulation von Modellvariablen
  • Transparenter Variablenzugriff in Multiprozessorsystemen
  • Leichter Austausch von Python-Objekten zwischen Echtzeittests und PC-Python-Skript
  • Echtzeittestverwaltung durch Scripting und dedizierte grafische Benutzeroberflächen
  • Leichte Integration in Kunden-Testframeworks (AutomationDesk® oder andere)
  • Real-Time Test Library in AutomationDesk für komfortable Skript-Verwaltung

 

Beschreibung von Echtzeittests in Python

Beim automatisierten Testen werden die Tests üblicherweise auf einem Standard-PC ausgeführt, der mit einem Hardware-in-the-Loop (HIL)-System verbunden ist. Kommt es jedoch auf höchste zeitliche Genauigkeit an, ist diese Methode den Anforderungen nicht mehr gewachsen – zum Beispiel wenn es darum geht, eine Steuergeräte-Interaktion innerhalb von Millisekunden zu erfassen und darauf zu reagieren. In dem Fall sind die Python-Skripte für Echtzeittests in AutomationDesk die Lösung. Die Skripte werden auf der Prozessorkarte des HIL-Systems in Echtzeit ausgeführt, also synchron zum Modell, so dass auch die Testaktionen auf Echtzeitbasis durchgeführt werden können. Dadurch ergeben sich erweiterte Testoptionen mit dSPACE Simulator. Es ist möglich, reaktive Tests zu implementieren, die auf Änderungen von Modellvariablen innerhalb desselben Simulationsschrittes reagieren. Zudem sind Zeitmessungen im Rahmen der Tests deutlich präziser, da es zu keinen Kommunikationslatenzen kommt. Die maximale zeitliche Auflösung der Messungen ist hier nur durch die Simulationsschrittweite begrenzt.
Durch verstärkte Kundenanfragen nach einer Portierung für die MicroAutoBox wurde diese Ende 2008 realisiert. Somit kann Real-Time Testing jetzt auch für Rapid Control Prototyping und Szenarien im Fahrzeug eingesetzt werden. Zu den Anwendungsbeispielen gehört die Wiedergabe von Messdaten in Echtzeit und die Implementierung eines CAN-Gateways auf der MicroAutoBox.

 


Python-basierte Echtzeittests

 

Echtzeitfähiger Python-Interpreter

Ein echtzeitfähiger Python-Interpreter, der auf der Prozessorkarte zusammen mit dem Modell ausgeführt wird, ermöglicht die modellsynchrone Ausführung. Er ist in der Lage, mehrere Echtzeittests gleichzeitig und unabhängig voneinander auszuführen. Eine Interaktion der Tests mit dem Simulationsmodell ist in Echtzeit über den Speicher der Prozessorkarte möglich. Hiermit lassen sich die an den HIL-Simulator angeschlossenen Steuergeräte in jedem einzelnen Simulationsschritt beobachten und beeinflussen.
Der Python-Interpreter wird beim Übersetzungsvorgang über eine RTW-Build-Option zur Applikation hinzugefügt. Der Anwender formuliert Echtzeittests durch Standard-Python-Skripte mit den Echtzeitbibliotheken in AutomationDesk (zum Beispiel für den Zugriff auf Modellvariablen oder für die parallele Ausführung mehrerer Testzweige innerhalb eines Echtzeittests). Auch können eigene Python-Bibliotheken erstellt und in mehreren Tests wiederverwendet werden. Erstellte Tests können unabhängig davon, ob gerade ein Echtzeittest ausgeführt wird, vom PC auf die Prozessorkarte des Simulators oder die MicroAutoBox geladen und gestartet werden. Obwohl die Ausführung der Echtzeittests zusätzlich Speicherplatz und Rechenzeit auf der Prozessorkarte benötigt, lassen sich typische Testszenarien, die parallel zu komplexen Motor- und Fahrdynamikmodellen ablaufen, problemlos in Simulationsschrittweiten von 1 ms realisieren.

Beispielhafte Anwendungsfälle für Real-Time Testing

  • Testreaktionszeiten im Millisekundenbereich
  • Zeitpräzise Stimulation mehrerer Modellsignale
  • Zeitpräzise Vermessung von Modelländerungen
  • Zuverlässige Bestimmung der Minimal- und Maximalwerte von Modellvariablen
  • Dynamische Ausführung einer Python-Restbussimulation nicht im Simulationsmodell enthalten
  • Exakte Wiedergabe aufgezeichneter Buskommunikation (wie CAN- oder FlexRay-Log-Dateien)
  • Parallele Ausführung mehrerer unabhängiger Steuergerätetests

 


Real-Time Observers

Real-Time Observer implementieren

Ein üblicher Testfall ist die Erkennung eines Events, der von einem Echtzeitmodell generiert wurde. Ein Event ist durch eine Bedingung spezifiziert, die eine oder mehrere Echtzeitmodellvariablen referenziert. Sobald der Event erkannt wurde, wird im selben Abtastschritt eine Testaktion ausgelöst. In diesem Beispiel beobachtet das Echtzeitskript die Geschwindigkeit eines simulierten Fahrzeugs und reagiert mit einem Notfallhaltemanöver, sobald das Fahrzeug 80 km/h überschreitet. Dieser Testfall kann leicht mit einem Echtzeit-Python-Skript implementiert werden. Die Bedingung wird durchgehend mit Hilfe einer While-Schleife beobachtet. Der inkludierte Yield-Befehl bewirkt, dass die Testausführung pausiert und anschließend im nächsten Simulationsschritt fortgesetzt wird. Das Skript ist also zeitlich genau steuerbar. Wenn die Geschwindigkeit über 80 km/h hinausgeht, wird die While-Schleife verlassen und das Bremsmanöver durch Einstellen der entsprechenden Modellparameter im selben Simulationsschritt eingeleitet.


Echtzeitstimulus

Echtzeitstimulus implementieren

In vielen Testszenarien müssen die Messdaten für die Steuergerätestimulation mit korrektem Timing wiederholt wiedergegeben werden. Dafür können die Python-Echtzeitskripte das Stimulussignal auf vordefinierten Modellvariablen zeitlich genau generieren. Ein Beispiel ist ein Sinusgenerator, der mit Hilfe der Standard-Sinus-Funktionalität des mathematischen Pyhton-Moduls implementiert werden kann (siehe Skript-Beispiel).
Aufgezeichnete Messdaten können auch über einen intelligenten Lademechanismus wiedergegeben werden, in dem das Python-Echtzeitskript eine Messdatendatei (MAT-Datei) auf der PC-Festplatte referenziert. Das Skript verlinkt Datenvektoren in der Datei mit den Zielparametern im Modell. Wenn aus Sicht des Echtzeittests das Abspielen zum Beispiel exakt 50 ms nach Empfang einer bestimmten CAN-Botschaft notwendig ist, stößt ein einfacher Replay-Befehl im Python-Skript den echtzeitfähigen Datentransport vom PC zur Echtzeithardware an. Durch den automatischen Nachlademechanismus können große Datenmengen, wie mehrere Hundert MB große Log-Dateien von Testfahrten, abgespielt werden. Dabei laufen mehrere dieser Abspielvorgänge gleichzeitig und können unabhängig voneinander gesteuert werden. In einem Multiprozessorsystem ist zudem die zeitsynchrone Stimulation auf mehreren Teilknoten möglich.


CAN-Restbus

CAN-Restbussimulation implementieren

Für die Programmierung einer CAN-Restbussimulation steht eine komfortable Integration von Real-Time Testing mit dem RTI CAN MultiMessage Blockset zur Verfügung. Das Blockset enthält eine Option für die Vorbereitung des CAN-Zugriffs von Real-Time Testing, so dass die Echtzeitskripte CAN-Botschaften mit frei definierbaren CAN-IDs und Inhalten senden und empfangen können. Dadurch lassen sich spezifische Restbussimulationen leicht testen. Diese dynamischen Restbusanteile (wie steuergerätespezifische CAN-Testbotschaften) können je nach Bedarf auf die Echtzeithardware geladen und ausgeführt werden und müssen nicht mehr statisch im Simulationsmodell verankert sein.
Ein beispielhaftes Testszenario (siehe Bild unten) ist die Überwachung eines analogen Eingangssignals. Hierbei wird bei Überschreitung einer definierten Triggerschwelle (zum Beispiel 14,7 Volt) eine vordefinierte CAN-Botschaft zyklisch alle 50ms solange gesendet, bis die Schwelle wieder unterschritten wird. Ein weiteres Anwendungsbeispiel verwendet die CAN-Kommunikation, die während einer Testfahrt aufgezeichnet wurde, und gibt diese im Labor mit korrektem Timing wieder.