Details: Vendor-Baustein erstellen

So erstellen Sie einen →Vendor-Baustein:

  1. Erstellen Sie ein neues ST-Objekt im Projekt: Öffnen Sie z. B. das Kontextmenü, wählen Sie Neu und ST-Objekt. Geben Sie im Dialog einen beliebigen Objektnamen ein. In dieser Anweisung wird der Name TestVendor für das ST-Objekt verwendet.

  2. Kopieren Sie den folgenden Code und fügen Sie ihn in den geöffneten Editor für das ST-Objekt ein. (Warnung) Speichern Sie den eingefügten Code noch nicht.

    {CustomImplementation}
    NAMESPACE com.oem1.lib1
      FUNCTION TestVendor01
        { ImplementationProperties (functionHasCFile; ) }
        VAR_INPUT
          in1 : INT;
          in2 : BOOL;
        END_VAR
        VAR_OUTPUT
          out1 : BOOL;
        END_VAR
      END_FUNCTION
    END_NAMESPACE

    Erläuterung der Angaben, die für einen Vendor-Baustein erforderlich sind:

    Ersatz- oder Zusatz-Anweisung

    Zweck

    {CustomImplementation}

    Diese Anweisung macht den Baustein zum Vendor-Baustein, der für eine Bibliothek verwendet werden soll.
    (Info) Aufgrund dieser Anweisung bezeichnet Neuron die Vendor-Bausteine in C-Code auch als CustomImpl-Bausteine in der Umgangssprache.

    FUNCTION TestVendor01
    { ImplementationProperties (functionHasCFile; ) }

    functionHasCFile ist ein optionales Schlüsselwort- Dieses Schlüsselwort ist nur erforderlich, wenn Ihr Vendor-Baustein Ihren eigenen C-Code verwendet. Die Anweisung geht davon aus, dass dies der Fall ist.
    Die Schlüsselwörter wären nicht erforderlich, wenn ein Vendor-Baustein nur durch Makros in der H-Datei realisiert wird.

    (Info) Die Anweisung { ImplementationProperties ( ) } kann auch andere Schlüsselwörter enthalten. Siehe "Eigenschaften für das Implementieren von Vendor-Bausteinen" für diese Möglichkeiten.

  3. Passen Sie den Code wie gewünscht an.
    Beachten Sie:

    • Neuron empfiehlt die Verwendung eines Namespace, wie im obigen Code angegeben. Passen Sie einfach den Namen com.oem1.lib1 an Ihre Bedürfnisse an. Geben Sie den Namespace immer an, bevor Sie das ST-Objekt speichern, da der Namespace Teil der C-Struktur und des Funktionsnamens ist.

    • Wenn Sie einen Vendor-Funktionsbaustein anstelle einer Vendor-Funktion erstellen wollen, ändern Sie das Schlüsselwort FUNCTION in FUNCTION_BLOCK und das Schlüsselwort END_FUNCTION in END_FUNCTION_BLOCK.

    • Passen Sie den Rest des Codes so an, dass er Ihren Bedürfnissen entspricht: Ändern Sie zum Beispiel die Namen der Funktion oder des Funktionsbausteins, der Eingänge und der Ausgänge. Oder ändern Sie den Datentyp der Eingänge und der Ausgänge.  Oder fügen Sie neue Eingänge und Ausgänge hinzu, wie sie aus dem ST-Editor bekannt sind.

      Neuron empfiehlt Ihnen, alle Arten von Variablen in der Schnittstelle zu deklarieren – vor allem, wenn der Wert der Variablen für den Baustein von einer Ausführung der Anwendung zur nächsten erhalten bleiben soll. So vermeiden Sie Probleme, die andernfalls beim Aktualisieren einer geänderten Anwendung mit Hilfe des Ressourcen-Managers (auch als Reload der Anwendung bekannt) auftreten könnten.

      Falls Sie Variablen nur in einer C-Datei deklarieren und nachträgliche Änderungen der Baustein-Logik erforderlich werden, empfiehlt Ihnen Neuron, einen neuen Baustein mit der geänderten Logik zu erstellen – anstatt den Baustein tatsächlich zu ändern. In Folge ist es weiterhin möglich, den Ressourcen-Manager zum Aktualisieren der geänderten Anwendung zu verwenden.
      Eine Änderung von Bausteinen mit Variablen, die nur in der C-Datei enthalten sind, wird von Neuron Power Engineer nicht verhindert. Falls Sie solche Änderungen durchführen und den Ressourcen-Manager zum Aktualisieren der geänderten Anwendung verwenden, können unerwartete Fehler auftreten. So kann die Anwendung falsch ausgeführt oder terminiert werden, möglicherweise wird sogar die SPS terminiert. In solchen Fällen wird am besten die Anwendung neu erstellt und danach auf die SPS geladen.

  4. Speichern Sie das ST-Objekt, wenn der Code vollständig ist.

    Ergebnis (falls die Implementierungs-Stubs noch nicht erzeugten wurden): Neuron Power Engineer erzeugt 2 Dateien mit den erforderlichen Implementierungs-Stubs.

    Datei

    Name der Datei für den obigen Code

    Details

    die C-Datei

    lcfu___COM.OEM1.LIB1.TESTVENDOR01.c

    Diese Datei wird nur automatisch generiert, wenn functionHasCFile angegeben wurde.

    die H-Datei

    lcfu___COM.OEM1.LIB1.TESTVENDOR01.h

    Wenn Sie sich für die grundlegende Struktur einer H-Datei interessieren, lesen Sie den Artikel "Die Struktur der benötigten H-Datei".

    (Info) Diese Dateien befinden sich in dem neu erstellten Ordner src-code auf der gleichen Ebene wie das ST-Objekt. Achten Sie auf die Großbuchstaben der Bausteinnamen in den Dateinamen. Dies ist wichtig, wenn Sie die erstellte Bibliothek mit dem Vendor-Baustein auf einem Linux-Rechner verwenden. Wenn Sie die Bibliothek nur auf einem Windows-Rechner verwenden, spielt es keine Rolle, dass die POE-Namen Kleinbuchstaben (in den Dateinamen) enthalten.
    Wenn der Ordner src-code nicht sichtbar ist und Sie dies bevorzugen, muss der Wert für die Konfigurationsvariable lc3.src_code.filter.enable geändert werden. Kontaktieren Sie Ihren Neuron Power Engineer-Administrator für diese Konfigurationsänderung.
    (Info) Die automatisch generierten Implementierungs-Stubs für den Vendor-Baustein werden mit einem vorangestellten Kommentar (DO NOT MODIFY THIS SECTION) versehen. Beachten Sie:

    1. Löschen Sie diesen vorangestellten Kommentar (DO NOT MODIFY THIS SECTION) nicht aus den H-/C-Dateien.
      Grund: Wenn Sie die Schnittstelle des Vendor-Bausteins ändern und das ST-Objekt später erneut speichern, werden die Implementierungs-Stubs automatisch aktualisiert, sofern der vorangestellte Kommentar in der H-/C-Datei vorhanden ist.
    2. Fügen Sie in den automatisch generierten Implementierungs-Stubs mit dem vorangestellten Kommentar (DO NOT MODIFY THIS SECTION) keinen eigenen Code hinzu.
      Falls Sie dies dennoch tun, wird Ihr Code überschrieben, da er sich in einem automatisch generierten Implementierungs-Stub befindet. Vor dem Speichern eines ST-Objekts mit einem Vendor-Baustein wird keine Meldung angezeigt.

    3. Die außerhalb der automatisch generierten Implementierungs-Stubs gelegenen Teile werden von Neuron Power Engineer nicht geändert, sodass Ihr Code in der H-/C-Datei nicht überschrieben wird, wenn Sie das ST-Objekt später speichern.

    4. Beachten Sie, dass die auto-generierten Implementierungs-Stubs für manche Arten von Vendor-Bausteinen nicht mit dem vorangestellten Kommentar (DO NOT MODIFY THIS SECTION) versehen werden. In diesem Fall erfolgt die Aktualisierung der Implementierungs-Stubs nicht wie oben beschrieben. Wenn Sie ein bereits gespeichertes ST-Objekt bearbeiten, das einen derartigen Vendor-Baustein enthält, und dieses ST-Objekt später erneut speichern, ist das ST-Objekt wahrscheinlich nicht mehr mit den generierten Dateien synchron.

      Dies betrifft die folgenden Vendor-Bausteine:

      • Vendor-Bausteine, die bei einem Simulink-Import erstellt wurden

      • Vendor-Bausteine, die während der Migration von logi.CAD/32 erstellt wurden

      • Vendor-Bausteine, die bei der Verwendung von Neuron Power Engineer vor der Version 3.25.0 erstellt wurden

      Beispiel für einen derartigen Vendor-Baustein: Sie haben in Neuron Power Engineer Version 3.23.0 eine CustomImplementation-Funktion mit einem Datentyp als Ergebniswert dieser Funktion deklariert und das ST-Objekt gespeichert. Das Speichern führte zur Erstellung der C-/H-Dateien mit den Implementations-Stubs, aber ohne dem vorangestellten Kommentar (DO NOT MODIFY THIS SECTION). Zu einem späteren Zeitpunkt haben Sie den Datentyp in der Funktion verwendet und diese Änderung gespeichert. Da der vorangestellte Kommentar (DO NOT MODIFY THIS SECTION) nicht vorhanden war, wurden die C-/H-Dateien mit dem Implementations-Stub nicht akualisiert. Abhilfe in Neuron Power Engineer Version 3.25.0 oder später: Benennen Sie die automatisch generierten Dateien um und vergeben Sie dabei eindeutige Namen. Speichern Sie das ST-Objekt, das den Vendor-Baustein enthält, um die H-/C-Datei mit den Implementations-Stubs erneut zu erstellen. Diese Stubs sind nun mit dem vorangestellten Kommentar (DO NOT MODIFY THIS SECTION) versehen. Als letzten Schritt übertragen Sie Ihren Code in die neu generierten C-/H-Dateien und löschen Sie die umbenannten C-/H-Dateien.

  5. Schließen Sie den Editor für das ST-Objekt.

  6. Empfohlen: Bereinigen Sie das Projekt.

  7. Beginnen Sie, den benötigten Code zu erstellen: Geben Sie den C-Code in der C-Datei ein und/oder geben Sie die Makros in der H-Datei ein.
    Beachten Sie:

    1. Wenn Sie Variablen mit einem →allgemeinen Datentyp in der Schnittstelle des Vendor-Bausteins deklarieren, müssen Sie auch die automatisch generierten Implementierungs-Stubs anpassen und/oder die Anweisung { ImplementationProperties ( ) } und einige deren Definitionen innerhalb der Schnittstelle verwenden.

    2. Wenn Sie Funktionen einer Bibliothek im C-Code des Vendor-Bausteins aufrufen, müssen Sie das Pragma { FunctionReferences } in der Schnittstelle verwenden.

    3. 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. Details zum Grund dafür finden Sie unter "Grundregeln für das Arbeiten", Abschnitt "Beim Erstellen von Bausteinen mit C-Code".

    Die folgenden Artikel unterstützen Sie bei der Erstellung der H-Datei und der Verwendung der Anweisungen/Pragmas in der Schnittstelle:

Siehe "Eigene Bibliotheken mit dem Vendor-Baustein erstellen", wenn Sie den Vendor-Baustein in einer Bibliothek bereitstellen wollen.