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.
    images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg 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

  1. Entpacken Sie das Installationspaket com.logicals.simulink.export-x.y.z.zip in einen beliebigen Ordner.

  2. Fügen Sie den Pfad mit den entpackten Scripts dem Suchpfad von MATLAB hinzu.

    1. 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.
      images/download/attachments/493305983/Matlab1-version-1-modificationdate-1654011940049-api-v2.png

    2. 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')

    3. 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.
      images/download/attachments/493305983/Matlab2-version-1-modificationdate-1654011940089-api-v2.png

  3. Ö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.

  4. Führen Sie eines der folgenden Scripts im MATLAB Command Window aus:

    Script 1: Bundle basierend auf einem Modell erzeugen
    generateLogiCAD3BundleFromModel(modelName, outputFolder)

    images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg 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 erzeugen
    generateLogiCAD3BundleFromSubsystem(modelName, subsystemQualifiedName, outputFolder)

    images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg 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):

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:

  1. Im Menü Datei oder im Kontextmenü der Sicht mit Projekten/Ressourcen wählen Sie Importieren...

  2. 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.

  3. Auf der nächsten Seite des Assistenten führen Sie diese Schritte aus:

    1. 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.

    2. Wählen Sie das Projekt, in das das logi.CAD 3-MATLAB-Export-Bundle importiert werden soll, in der Liste unter Ziel-Projekt aus.
      images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg Diese Liste enthält alle Projekte, die in der Sicht geöffnet sind.

    3. 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

      ST-Objekt

      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.
      images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg Strings werden mit einer Standard-Stringlänge von 256 importiert.
      images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/error.svg 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:

      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.

      Bibliothekskonfiguration

      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:

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 (= images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/check.svg ) und erfolgreich importiert:

Nicht-unterstützte Elemente

Die folgende Simulink-Elemente werden nicht unterstützt (= images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/error.svg ):

  • 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 (= images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/warning.svg ):

  • 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 (= images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/warning.svg ):

  • →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.