- Home
- Produkte
- Software
- Test- und Experiment-Software
- AutomationDesk
- Real-Time Testing
- 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.

