Mechanical Simulation Corporation: CarSim

Bisheriger/interner Bezeichner: CARSIM-2

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.