Mechanical Simulation Corporation: CarSim¶
Bisheriger/interner Bezeichner: CARSIM-2
Herstellerinformationen
Hersteller |
Webseite |
Produktname |
Version |
|---|---|---|---|
Mechanical Simulation Corporation |
CarSim |
CarSim 2019 - 2023 |
Kategorien
MDL 🛈 |
APL 🛈 |
BAN 🛈 |
BMA 🛈 |
SVC 🛈 |
DGN 🛈 |
FIU 🛈 |
EES 🛈 |
FCT 🛈 |
DBG 🛈 |
IMG 🛈 |
AUDIO 🛈 |
ENVSIM 🛈 |
ENVCOM 🛈 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
✓ |
Plattform
Betriebssystem |
Unterstützung |
|---|---|
Windows |
✓ |
Linux |
Ports¶
Besonderheiten¶
Grundlegende Informationen zum Umgang mit Umfeldsimulationen finden sich im Abschnitt Tab Umfeldsimulation.
Mit der CarSim-Toolanbindung werden die Tools aus der VehicleSim-Produktfamilie ferngesteuert. Dazu gehören:
CarSim
TruckSim
BikeSim
SuspensionSim
Die weitere Dokumentation bezieht sich konkret auf CarSim, kann aber auch analog auf die anderen VehicleSim-Produkte, wie z.B. TruckSim, angewendet werden.
Um CarSim mit ecu.test verwenden zu können, muss die Datei „CarSim.exe“ als ComServer registriert werden. Dies erfolgt über die Kommandozeile mit Administrator-Rechten mit dem Befehl „{Pfad zur CarSim.exe}“ /RegServer. Weitere Details können der CarSim-Dokumentation unter der Sektion VS COM Interface entnommen werden.
Um sich mit ecu.test auf eine laufenden Instanz von CarSim zu verbinden, darf CarSim nicht über die „CarSim.exe“ aufgestartet werden. Stattdessen muss CarSim über die Automatisierungsschnittstelle (COM API) aufgestartet werden. Der folgende Code zeigt dies exemplarisch:
import time
import win32com.client
com = win32com.client.Dispatch('CarSim.Application') # Starts CarSim
alive = True
while alive: # Infinite loop to keep CarSim open, destroying the COM connection would close CarSim
try:
com.GetProgFolder() # Check if CarSim is alive
except:
alive = False
time.sleep(1)
ecu.test verbindet sich dann automatisch mit der laufenden CarSim-Instanz, ohne das weitere Einstellungen vorgenommen werden müssen.
Für das Lesen und Schreiben von Parametern sind bevorzugt die Testschritte zu verwenden. Das Verändern von Parametern mit einem führenden * im Namen wird nicht durch die Testschritte unterstützt, da diese nur in der CarSim-GUI angegebbar sind. Stattdessen sind die Tooljobs ReadValue und WriteValue zu verwenden. Ein Parameter sollte immer entweder über die Testschritte oder die Tooljobs gelesen und geschrieben werden.
Unterstützte Ausführungsmodi¶
Über die CarSim-Anbindung können Szenarien auf unterschiedliche Weisen ausgeführt werden. Dies betrifft den verwendeten Solver / Simulator und den in ecu.test einzustellenden Zeitmodus. Als Solver werden der in CarSim eingebaute Solver sowie verschiedene externe Solver unterstützt.
Der in CarSim eingebaute Solver unterstützt die Blockausführung von Szenarien. Das bedeutet, ein Szenario wird ohne Unterbrechung von Anfang bis Ende abgespielt. Währenddessen können jedoch keine weiteren Operationen, wie Lesen von Signalen etc. auf der Simulation ausgeführt werden. Deshalb geschieht die Blockausführung nicht über die Testschritte Start Simulation bzw. Stopp Simulation, sondern durch Aufruf des Tooljobs RunMathModel, der den Testfall bis zum Szenarioende blockiert. Für diesen Ausführungsmodus muss in der Testkonfiguration als Zeitquelle Echtzeit oder Automatisch ermittelt (Standardeinstellung) ausgewählt sein.
Unterstützte externe Solver mit zugehörigem Tooljob:
Mathworks Simulink: RunSimulink
dSPACE SCALEXIO-Plattform: RunScalexio
NI-RT Systeme: RunNIRT
Bei Verwendung dieser Tooljobs wird das Szenario für die jeweilige Plattform konvertiert und an diese übertragen. Der Simulationsstart muss hierbei noch separat über die jeweilige Plattform gestartet werden (z.B. bei der SCALEXIO-Plattform mit ControlDesk). Auch für diese Ausführungsmodi muss in der Testkonfiguration als Zeitquelle Echtzeit oder Automatisch ermittelt (Standardeinstellung) ausgewählt sein.
Die Tooljobs verfügen zudem über den Parameter ExecuteBlocking. Dieser ist standardmäßig auf True gesetzt. Wird der Parameter mit dem Wert False befüllt, so blockiert der jeweilige Tooljob nicht den Testfall bis zum Szenarioende. Für die ordnungsgemäße Funktion der CarSim-Anbindung muss das Warten auf das Ende der Simulation in diesem Fall vom Anwender übernommen werden. Dafür gibt es folgende zwei Möglichkeiten:
Verwendung des Tooljobs IsSimulationRunning (empfohlen) Der Rückgabewert dieses Tooljobs gibt an, ob derzeit noch eine Simulation läuft. Erst wenn der Wert False zurückgegeben wird ist die Simulation beendet.
Verwendung des Testschrittes Wait mit einem ausreichend hohen Wert für die Wartezeit, sodass die Simulation definitiv innerhalb dieser Zeistpanne abgeschlossen ist.
Der in CarSim eingebaute Solver unterstützt alternativ zur Blockausführung den Simulationszeitmodus mit schrittweiser Simulation. Dazu muss der ENVSIM-Port in der Testkonfiguration als Zeitquelle ausgewählt und der Modus auf schrittweise oder Automatisch ermittelt gestellt werden. In diesem Modus ist die Simulation grundsätzlich pausiert und wird durch Wait-Testschritte (bzw. Lese-Testschritte mit Zeitoptionen) schrittweise vorangetrieben. Szenariostart und -stopp erfolgen über die Testschritte Start Simulation und Stopp Simulation. Während der Szenarioausführung können Signale gelesen werden.
Der Simulationszeitmodus mit kontinuierlicher Simulation (unterbrechungsfreie, zum Testfall parallel ablaufende Szenarioausführung) wird durch die CarSim-Anbindung nicht unterstützt.
Einschränkungen¶
Der schrittweise Simulationsmodus wird erst ab CarSim 2017.1 unterstützt.
Das Schreiben von Signalen wird nicht unterstützt.
Als Aufnahmeformat werden lediglich .erd-Dateien unterstützt. Das ERD-Format wird durch ecu.test automatisch in CarSim aktiviert.
Eigenschaften 🛈¶
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
VehicleSim-Produkt |
CarSim |
[CarSim, TruckSim, BikeSim, SuspensionSim] |
string |
Konkretes zu benutzendes VehicleSim-Produkt |
|
Timeout für Toolzugriffe ❲in Sek.❳ |
‚600‘ |
string |
Zeit nach der eine Anfrage an das Tool abgebrochen wird. |
Jobs 🛈¶
GotoLibrary¶
Wechselt in eine neue Bibliothek, damit bei Mehrdeutigkeit (mehrere verwendete Bibliotheken mit gleichem Namen) der korrekte Bluelink gelesen oder geschrieben werden kann.
Parametrierung
Parameter
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
Category |
string |
Name der Kategorie des DataSets (z.B. Handling Testing). |
|||
DataSet |
string |
Name des DataSet (z.B. DLC @ 120 km/h (Quick Start)). |
|||
Library |
‚CarSim Run Control‘ |
[‚CarSim Run Control‘, ‚Multiple Moving Objects‘] |
string |
Bibliothek, in die gewechselt werden soll. |
IsSimulationRunning¶
Gibt zurück, ob aktuell eine Simulation läuft.
Parametrierung
Rückgabewert
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
IsSimulationRunning |
[False, True] |
bool |
True, wenn aktuell eine Simulation läuft. Andernfalls False. |
ReadMixTableCellValue¶
Liest den Wert einer Tabellenzelle.
Parametrierung
Parameter
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
Library |
‚CarSim Run Control‘ |
[‚CarSim Run Control‘, ‚Multiple Moving Objects‘] |
string |
Bibliothek, in der der Wert gelesen werden soll. |
|
TableColumn |
int |
Tabellenspalte, für welche der Zellenwert gelesen werden soll (Bsp.: 2). Tipp: Mit gedrückter rechter Maustaste auf dem Element in der CarSim-Oberfläche wird die ID der entsprechenden Datenspalte angezeigt. |
|||
TableName |
string |
Name der Tabelle, in welcher der Wert gelesen werden soll (Bsp.: #MIXTABLE0). Tipp: Mit gedrückter rechter Maustaste auf dem Element in der CarSim-Oberfläche wird das Keyword angezeigt. |
|||
TableRow |
int |
Tabellenzeile, für welche der Zellenwert gelesen werden soll (Index beginnend bei 0) |
ReadValue¶
Liest den Wert aus einem YellowField-, MiscYellowField- oder einem BlueLink-Element aus.
Parametrierung
Parameter
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
ElementType |
‚MiscYellow‘ |
[‚MiscYellow‘, ‚Yellow‘, ‚BlueLink‘] |
string |
Typ des Elements, von dem der Wert gelesen werden soll. |
|
Keyword |
string |
Keyword des Elements, von dem der Wert gelesen werden soll (Bsp.: *TSTART). Tipp: Mit gedrückter rechter Maustaste auf dem Element in der CarSim-Oberfläche wird das Keyword angezeigt. |
|||
Library |
‚CarSim Run Control‘ |
[‚CarSim Run Control‘, ‚Multiple Moving Objects‘] |
string |
Bibliothek, in der ein Wert gelesen werden soll. |
RunMathModel¶
Startet die Simulation im Echtzeitmodus.
Wenn der Parameter „Blocking“ auf True gesetzt ist, wird die Simulation nach Ende des Jobs beendet. Dabei ist es nicht möglich, während des Simulationslaufs Signale zu lesen.
Parametrierung
Parameter
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
ExecuteBlocking |
☑ |
bool |
Gibt an, ob die Simulation blockierend oder nicht-blockierend ausgeführt wird. |
RunNIRealtime¶
Startet die Simulation im Echtzeitmodus in einer NI-RT-Umgebung.
Wenn der Parameter „Blocking“ auf True gesetzt ist, wird die Simulation nach Ende des Jobs beendet. Dabei ist es nicht möglich, während des Simulationslaufs Signale zu lesen.
Parametrierung
Parameter
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
ExecuteBlocking |
☑ |
bool |
Gibt an, ob die Simulation blockierend oder nicht-blockierend ausgeführt wird. |
||
StartLiveVideo |
☐ |
bool |
VS Visualizer zum Anzeigen eines Live Videos starten. |
RunScalexio¶
Startet die Simulation im Echtzeitmodus in einer Scalexio-Umgebung.
Wenn der Parameter „Blocking“ auf True gesetzt ist, wird die Simulation nach Ende des Jobs beendet. Dabei ist es nicht möglich, während des Simulationslaufs Signale zu lesen.
Parametrierung
Parameter
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
ExecuteBlocking |
☑ |
bool |
Gibt an, ob die Simulation blockierend oder nicht-blockierend ausgeführt wird. |
||
StartLiveVideo |
☐ |
bool |
VS Visualizer zum Anzeigen eines Live Videos starten. |
RunSimulink¶
Startet die Simulation im Echtzeitmodus in einer Simulink-Umgebung.
Wenn der Parameter „Blocking“ auf True gesetzt ist, wird die Simulation nach Ende des Jobs beendet. Dabei ist es nicht möglich, während des Simulationslaufs Signale zu lesen.
Parametrierung
Parameter
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
ExecuteBlocking |
☑ |
bool |
Gibt an, ob die Simulation blockierend oder nicht-blockierend ausgeführt wird. |
||
StartLiveVideo |
☐ |
bool |
VS Visualizer zum Anzeigen eines Live Videos starten. |
||
StartMode |
‚Send to Simulink‘ |
[‚Run Now‘, ‚Send to Simulink‘] |
string |
Bestimmt den Startmodus (Run Control). Z.B. direkt das Modell starten oder das Modell an Simulink senden. |
WriteBlueLinkValue¶
Schreibt den Wert für ein BlueLink-Element.
Parametrierung
Parameter
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
Category |
string |
Name der Kategorie des DataSets für die neue Verknüpfung (z.B. Handling Testing). |
|||
DataSet |
string |
Name des DataSets für die neue Verknüpfung (z.B. DLC @ 120 km/h (Quick Start)). Wenn dieses Feld leer bleibt wird die Verknüpfung gelöscht. |
|||
Keyword |
string |
Keyword des Elements, von dem der Wert geschrieben werden soll (Bsp.: #BlueLink2). Tipp: Mit gedrückter rechter Maustaste auf dem Element in der CarSim-Oberfläche wird das Keyword angezeigt. |
|||
Library |
‚CarSim Run Control‘ |
[‚CarSim Run Control‘, ‚Multiple Moving Objects‘] |
string |
Bibliothek, in der der Wert geschrieben werden soll. |
|
NewLibrary |
string |
Name der Bibliothek, die das DataSet für die neue Verknüpfung enthält (z.B. Procedures). Wenn dieses Feld leer bleibt wird die Verknüpfung gelöscht. |
WriteMixTableCellValue¶
Setzt den Wert einer Tabellenzelle.
Parametrierung
Parameter
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
Library |
‚CarSim Run Control‘ |
[‚CarSim Run Control‘, ‚Multiple Moving Objects‘] |
string |
Bibliothek, in der der Wert geschrieben werden soll. |
|
TableColumn |
int |
Tabellenspalte, für welche der Zellenwert gesetzt werden soll (Bsp.: 2). Tipp: Mit gedrückter rechter Maustaste auf dem Element in der CarSim-Oberfläche wird die ID der entsprechenden Datenspalte angezeigt. |
|||
TableName |
string |
Name der Tabelle, in welcher der Wert gesetzt werden soll (Bsp.: #MIXTABLE0). Tipp: Mit gedrückter rechter Maustaste auf dem Element in der CarSim-Oberfläche wird das Keyword angezeigt. |
|||
TableRow |
int |
Tabellenzeile, für welche der Zellenwert gesetzt werden soll (Index beginnend bei 0) |
|||
Value |
string |
Wert, der gesetzt werden soll |
WriteValue¶
Schreibt den Wert eines YellowField- oder MiscYellowField-Elements.
Parametrierung
Parameter
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
ElementType |
‚MiscYellow‘ |
[‚MiscYellow‘, ‚Yellow‘] |
string |
Typ des Elements, von dem der Wert geschrieben werden soll. |
|
Keyword |
string |
Keyword des Elements, von dem der Wert geschrieben werden soll (Bsp.: *TSTART). Tipp: Mit gedrückter rechter Maustaste auf dem Element in der CarSim-Oberfläche wird das Keyword angezeigt. |
|||
Library |
‚CarSim Run Control‘ |
[‚CarSim Run Control‘, ‚Multiple Moving Objects‘] |
string |
Bibliothek, in der der Wert geschrieben werden soll. |
|
Value |
string |
Wert, der geschrieben werden soll. |