Mechanical Simulation Corporation: CarSim

Herstellerinformationen

Hersteller

Webseite

Produktname

Version

Mechanical Simulation Corporation

https://www.carsim.com

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.

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.

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.

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.