Simulink-Modell in ein Projekt importieren
logi.CAD 3 ermöglicht es Ihnen, ein vorhandenes →Simulink-Modell in ein →Projekt von logi.CAD 3 zu importieren. Der Import ist nicht in allen Varianten von logi.CAD 3 verfügbar.
Inhalt dieses Artikels:
Voraussetzung für die Verwendung des Imports
Sie haben die benötigte Lizenzierung installiert.
Sie haben das Installationspaket com.logicals.simulink.export-x.y.z.zip von logi.cals erhalten. x.y.z steht für die entsprechende Versionsnummer.
Dieses Installationspaket enthält Scripts, die Sie in MATLAB ausführen müssen.Sie verwenden Version 2021a von MATLAB und Embedder Coder als Code-Generator (siehe https://de.mathworks.com/products/embedded-coder.html).
Der Import unterstützt nur zeitdiskrete Simulink-Modelle (= time discrete Simulink models). 2 oder mehrere unterschiedliche "Sampling Times" in einem Simulink-Modell werden beim Import nicht unterstützt.
Beachten Sie zusätzlich: Falls das Simulink-Modell von der Zykluszeit abhängt, muss der Simulink-Anwender darüber entscheiden, wie dies im Simulink-Modell gelöst werden kann. Beispielsweise ist es möglich, einen speziellen Eingang im Simulink-Modell zu definieren, der dann in logi.CAD 3 importiert wird. In der logi.CAD 3-Anwendung müssen dann die Zeitwerte diesem Eingang übergeben werden.Das Simulink-Modell entspricht den Vorgaben für einen erfolgreichen Import.
Im Simulink-Model: Verwenden Sie POE-eindeutige Namen (wenn möglich, sogar projekt- und POE-eindeutig) für alle C-Identifier, die in einem globalen Namespace verfügbar sind. Siehe "Grundregeln für das Arbeiten, Erstellen von Bausteinen mit C-Code" für Details.
Sie verwenden die gleiche logi.CAD 3-Version für beide Teil-Schritte des Imports:
Simulink-Modell als logi.CAD 3-MATLAB-Export-Bundle exportieren
Entpacken Sie das Installationspaket com.logicals.simulink.export-x.y.z.zip in einen beliebigen Ordner.
Fügen Sie den Pfad mit den entpackten Scripts dem Suchpfad von MATLAB hinzu.
Möglichkeit 1: Navigieren Sie in MATLAB zum Pfad mit den entpackten Scripts. Öffnen Sie das Kontextmenü für den Ordner und wählen Sie den Befehl Add to Path und Selected Folders aus.
Möglichkeit 2: Geben Sie im MATLAB Command Window den folgenden Befehl ein (ersetzen Sie path_to_folder_with_scripts durch den Pfad mit den entpackten Scripts): addpath('path_to_folder_with_scripts')
Möglichkeit 3, damit der Pfad permanent eingefügt wird: Wählen Sie Set Path (in der Gruppe ENVIRONMENT) des Registers HOME in der Multifunktionsleiste von MATLAB. Klicken Sie auf Add Folder..., fügen Sie den Pfad mit den entpackten Scripts hinzu und drücken Sie Save.
Öffnen Sie das Simulink-Modell und – falls vorhanden – die jeweiligen Projekte in MATLAB.
Grund: Die Projekte können sogenannte "Data Dictionaries" mit benutzerdefinierten Typen enthalten.Führen Sie eines der folgenden Scripts im MATLAB Command Window aus:
Script 1: Bundle basierend auf einem Modell erzeugengenerateLogiCAD3BundleFromModel(modelName, outputFolder)
Ersetzen Sie dabei die Parameter modelName durch den Namen des geöffneten Modells und outputFolder durch den Pfad, in dem das logi.CAD 3-MATLAB-Export-Bundle abgelegt werden soll.
Beispiel: generateLogiCAD3BundleFromModel('fuelsys_dd_controller', "C:\data\exported_bundles")Script 2: Bundle basierend auf einem Modell und Subsystem erzeugengenerateLogiCAD3BundleFromSubsystem(modelName, subsystemQualifiedName, outputFolder)
Ersetzen Sie dabei die Parameter modelName und outputFolder analog zu Script 1. Zusätzlich ersetzen Sie subsystemQualifiedName durch den qualifizierten Namen des Subsystems.
Beispiel: generateLogiCAD3BundleFromSubsystem('Overrun', 'Overrun/OvrRun', "C:\data\exported_bundles")Ergebnis des Scripts: Ein logi.CAD 3-MATLAB-Export-Bundle wird auf Basis der angegebenen Daten erzeugt. Der Name dieses logi.CAD 3-MATLAB-Export-Bundle ist: Simulink_Modell_Name_logiCAD3Bundle.zip oder Subsystem_Name_logiCAD3Bundle.zip – Beispiel: OvrRun_logiCAD3Bundle.zip (OvrRun ist der Name des Subsystems.)
Mögliche Warnungen
Warnungen weisen Sie darauf hin, falls das Simulink-Modell die folgenden Simulink-Elemente enthält (siehe unter "Vorgaben für einen erfolgreichen Import" für Details zu diesen Elementen):
Elemente, falls deren Name einem reservierten Schlüsselwort in ST entspricht
Elemente, falls deren Namen kein gültiger →IEC-Bezeichner sind
Elemente, falls deren Namen mit unterschiedlichen Groß- und Kleinbuchstaben geschrieben sind
Wenn Sie das erzeugte logi.CAD 3-MATLAB-Export-Bundle mit solchen Elementen anschließend in ein logi.CAD 3-Projekt importieren. würden diese Elemente in logi.CAD 3 als fehlerhaft gekennzeichnet. Daher werden die Namen dieser Elemente automatisch beim anschließenden Import so korrigiert, dass die korrigierten Namen keinen Fehler in logi.CAD 3 verursachen.
logi.CAD 3-MATLAB-Export-Bundle in logi.CAD 3 importieren
So importieren Sie das erzeugte logi.CAD 3-MATLAB-Export-Bundle in das Projekt von logi.CAD 3:
Im Menü Datei oder im Kontextmenü der Sicht mit Projekten/Ressourcen wählen Sie Importieren...
Im Assistenten klappen Sie die Kategorie Simulink-Modell-Import auf, wählen Sie Import eines Simulink-Modells und drücken Sie Weiter >.
Um einen bestimmten Assistenten zu finden: Tippen Sie einen Text (z.B. Simulink) im Feld unter Einen Import-Assistenten wählen ein, um nur jene Assistenten anzuzeigen, die dem Text im Feld entsprechen.Auf der nächsten Seite des Assistenten führen Sie diese Schritte aus:
Tippen Sie den vollständigen Pfad und den Dateinamen des zuvor erzeugten logi.CAD 3-MATLAB-Export-Bundles im Textfeld (links von Simulink-Bundle) ein. Alternative: Drücken Sie die Schaltfläche Durchsuchen..., um Pfad und Dateinamen im Dateisystem zu wählen.
Wählen Sie das Projekt, in das das logi.CAD 3-MATLAB-Export-Bundle importiert werden soll, in der Liste unter Ziel-Projekt aus.
Diese Liste enthält alle Projekte, die in der Sicht geöffnet sind.Drücken Sie Fertigstellen, um den Import zu starten.
Ergebnis: Die folgenden Objekte werden auf Basis des logi.CAD 3-MATLAB-Export-Bundles im Projekt erstellt:Objekt-Typ
Bedeutung
Das ST-Objekt hat den Namen des Simulink-Modells. Es enthält zumindest einen →Vendor-Baustein vom Typ "→Funktionsbaustein" mit dem gleichen Namen. Abhängig davon, welches Simulink-Model exportiert wurde, können auch andere ST-Sprachelemente im ST-Objekt enthalten sein, z.B. ein →strukturierter Datentyp.
Strings werden mit einer Standard-Stringlänge von 256 importiert.
Bearbeiten Sie diese ST-Sprachelemente nicht! Falls Sie doch Änderungen machen, stimmen die ST-Sprachelemente nicht mehr mit dem importierten Simulink-Modell überein.
Sie können diesen erzeugten Funktionsbaustein wie jeden anderen Funktionsbaustein in Ihrer Anwendung verwenden. Erstellen Sie z.B. eine →Funktionsbaustein-Instanz und rufen Sie diese Funktionsbaustein-Instanz auf oder fügen Sie den Funktionsbaustein in eine Bibliothek ein.
Verweise auf weiterführende Dokumentation:
Siehe "Deklaration von Funktionsbaustein-Instanzen in ST" und "Aufruf der Funktionsbaustein-Instanz in ST" für die ST-Syntax zum Instanziieren/Aufrufen des Funktionsbausteins.
Siehe "Unterstützte ST-Syntax" für eine Liste aller möglichen ST-Elemente.
Siehe die englische Dokumentation "Administrator's Manual" für Informationen über die Pragmas eines Vendor-Bausteins, wie z.B. zu { CustomImplementation, CustomNamespace := Simulink }.
H- und C-Dateien
Der erstellte Vendor-Funktionsbaustein benötigt H- und C-Dateien, die die Implementierung des Vendor-Funktionsbausteins enthält. Diese Dateien werden automatisch beim Import im Projekt erstellt und standardmäßig im Unterordner src-code des vorgegebenen Projekt-Unterordners src angezeigt.
Zusätzlich werden d ie H- und C-Dateien aus MATLAB in das Projekt importiert. Standardmäßig werden diese Dateien im Projekt im Unterordner src-code parallel zum vorgegebenen Projekt-Unterordners src angezeigt.
Damit diese H- und C-Dateien nicht irrtümlich bearbeitet werden und weiterhin mit dem importierten Simulink-Modell übereinstimmen, bietet Ihnen logi.CAD 3 diese Möglichkeiten:
Mit Hilfe der K onfigurationsvariable lc3.src_code.filter.enable können Sie den Unterordner src-code mit den C-/H-Dateien ausblenden. Details zu den K onfigurationsvariablen finden Sie in der englischen Dokumentation "Administrator's Manual".
Standardmäßig sind d ie H-/C-Dateien für das importierte Simulink-Modell schreibgeschützt. Falls die C-/H-Dateien angezeigt werden und Sie eine dieser Dateien bearbeiten, weist Sie eine Meldung auf diesen Schreibschutz hin. Entfernen Sie in Folge nicht den Schreibschutz, damit die H-/C-Dateien mit dem importierten Simulink-Modell auch weiterhin übereinstimmen.
Die Bibliothekskonfiguration enthält bereits den Vendor-Funktionsbaustein als Bibliothekselement – und zwar bei der Anweisung IEC := ...
Mit Hilfe dieser Bibliothekskonfiguration können Sie eine Bibliothek erstellen, der den Vendor-Funktionsbaustein enthält.
Verweise auf weiterführende Dokumentation:
Siehe "Syntax für Bibliothekskonfiguration" für die Syntax der Bibliothekskonfiguration.
Siehe "Eigene Bibliothek erstellen und bereitstellen" für Anweisungen zum Erzeugen/Bereitstellen/Installieren einer Bibliothek.
Mögliche Warnungen
Warnungen weisen Sie darauf hin, falls der Import einen Konflikt mit einem bereits vorhandenen Element im logi.CAD 3-Projekt entdeckt (siehe unter "Vorgaben für einen erfolgreichen Import"). In Folge wird das importierte Element auf einen eindeutigen Namen umbenannt.
Mögliche Fehlerquellen beim Import
Die Meldungen Der Import des Metamodells ist fehlgeschlagen (im Assistenten und im Fehlerprotokoll) und Index 0 out of bounds for length 0 (nur im Fehlerprotokoll) weisen darauf hin, dass der Import nicht erfolgreich durchgeführt wurde.
In diesem Fall stellen Sie zuerst sicher, dass tatsächlich ein zuvor erzeugtes logi.CAD 3-MATLAB-Export-Bundle beim Import verwendet wurde. Falls Sie diese Fehlerquelle ausschließen können, ist es wahrscheinlich, dass der Export des Simulink-Modells als logi.CAD 3-MATLAB-Export-Bundle fehlerhaft durchgeführt wurde. In diesem Fall: Kontaktieren Sie den Hersteller der verwendeten Bibliothek oder des verwendeten Baustein. Übermitteln Sie dabei Ihre Kontaktinformationen, die in logi.CAD 3 erfolgten Schritte und alle Meldungen, die in der Sicht Fehlerprotokoll und/oder der Sicht Fehler angezeigt werden. Zusätzlich übermitteln Sie das erzeugte logi.CAD 3-MATLAB-Export-Bundle, das Simulink-Modell (inkl. der möglicherweise vorhandenen MATLAB-Projekte) und der verwendeten MATLAB-Version.
Vorgaben für das Simulink-Modell
Unterstützte Elemente
Die folgende Simulink-Elemente werden unterstützt (= ) und erfolgreich importiert:
primitive Datentypen laut https://de.mathworks.com/help/simulink/ug/data-types-supported-by-simulink.html – mit der Ausnahme der Fixed-Point-Datentypen
diese nicht-primitive Datentypen:
ein-dimensionale Arrays
multi-dimensionale Arrays (bis zu 4 Dimensionen)
Enumerations (= Aufzählungen)
Strukturen (= nicht-virtueller S imulink.Bus)
verschachtelte Strukturen
virtueller S imulink.Bus
Nicht-unterstützte Elemente
Die folgende Simulink-Elemente werden nicht unterstützt (= ):
jeder Fixed-Point-Datentyp, z.B. half
Code-Mapping-Customization, wie z.B. Storage Class, Custom-Funktionsname
Falls das Simulink-Modell diese nicht-unterstützten Simulink-Elemente enthält, kann das logi.CAD 3-MATLAB-Export-Bundle nicht erzeugt werden. Entsprechende Meldungen weisen beim Ausführen der Scripts auf den Fehler hin. Diese Meldungen werden nur in englischer Sprache ausgegeben.
Automatisch korrigierte Elemente
Die folgenden Simulink-Elemente würden entweder in logi.CAD 3 als fehlerhaft gemeldet werden oder beim Erstellen der Anwendung einen Fehler verursachen (= ):
Elemente, falls deren Name einem reservierten Schlüsselwort in ST entspricht – Solche Elemente werden in logi.CAD 3 als fehlerhaft gekennzeichnet.
Beispiel: Ein Element mit dem Namen EN wird in logi.CAD 3 als fehlerhaft markiert, da der Name EN für den Eingang EN reserviert ist.Elemente, falls deren Namen kein gültiger →IEC-Bezeichner sind – Solche Elemente werden in logi.CAD 3 als fehlerhaft gekennzeichnet.
Beispiel: Simulink erlaubt ein Element mit dem Namen LIM__SW5. In logi.CAD 3 ist dieser Name jedoch nicht zulässig, da ein Name ein gültiger IEC-Bezeichner sein muss.Elemente (z.B. Variablen), falls deren Namen mit unterschiedlichen Groß- und Kleinbuchstaben geschrieben sind – Solche Elemente können einen Fehler beim Erstellen der Anwendung in logi.CAD 3 verursachen.
Beispiel: Simulink erlaubt 2 unterschiedliche Variablen Var1 und VAR1. In logi.CAD 3 wird jedoch Var1 und VAR1 als das gleiche Element identifiziert. Diese unterschiedliche Interpretation von Var1 und VAR1 verursacht wahrscheinlich einen Fehler beim Erstellen der Anwendung, in der der Funktionsbaustein mit Var1 und VAR1 enthalten ist.
Beim Export des Simulink-Modells mit solchen Simulink-Elementen (als logi.CAD 3-MATLAB-Export-Bundle) werden daher entsprechende Warnungen ausgegeben. Beim nachfolgenden Import des logi.CAD 3-MATLAB-Export-Bundle in logi.CAD 3 werden die Namen dieser Elemente automatisch so korrigiert, dass die korrigierten Namen in logi.CAD 3 nicht als fehlerhaft gekennzeichnet werden bzw. keinen Fehler beim Erstellen der Anwendung verursachen.
Die folgenden Simulink-Elemente werden erst beim Import des logi.CAD 3-MATLAB-Export-Bundle in logi.CAD 3 gemeldet (= ):
→Datentypen, wenn ein Element mit dem gleichen Namen bereits im logi.CAD 3-Projekt vorhanden ist
→Funktionsbausteine, wenn ein Element mit dem gleichen Namen bereits im logi.CAD 3-Projekt vorhanden ist
Beim Import werden diese Elemente des Simulink-Modells automatisch auf einen eindeutigen Namen umbenannt, da andernfalls Elemente mit dem gleichen Namen einen Konflikt verursachen würden.