Schnittstelle für C-Baustein oder C++-Baustein erstellen (Deprecated)

So erstellen Sie die Schnittstelle für Ihre →Bausteine in →C oder →C++:

  1. Im Projektexplorer: Erstellen Sie im Projekt eine neue ST-Schnittstelle.
    Ergebnis: Der ST-Editor wird für diese Datei geöffnet.

  2. Erstellen Sie den folgenden ST-Code am Anfang dieser Datei:

    Für C-Bausteine

    Sytnax
    {extern_c}
     
    ( * optional_begin *) USING Namespace_1;
    USING Namespace_2; (* optional_end *)
     
    // Optional: Angabe der unterstützten Plattformen
    {Supported_Platforms := platform-1, platform-2, ... platform-n}
    Beispiel
    {extern_c}
    {Supported_Platforms := WindowsX86, Ce5Nmr20}

    Für C++-Bausteine

    Sytnax
    {extern_cxx}
     
    ( * optional_begin *) USING Namespace_1;
    USING Namespace_2; (* optional_end *)
     
    // Optional: Angabe der unterstützten Plattformen
    {Supported_Platforms := platform-1, platform-2, ... platform-n}
    Beispiel
    {extern_cxx}
    {Supported_Platforms := WindowsX86}

    Bedeutung der Syntax:

    • Durch {extern_c} oder {extern_cxx} erkennt logi.CAD 3, dass Sie die Anwendung für die folgenden Bausteine in C oder C++ erstellen wollen. Dies gilt für alle Bausteine, die Sie anschließend in der Datei deklarieren. Erstellen Sie unterschiedliche Dateien, falls Sie Bausteine sowohl für C als auch für C++ deklarieren wollen.

    • Die USING-Namespace-Anweisung nach {extern_c} oder {extern_cxx} ist optional. Siehe "Namespaces in ST: Verwendung" für Details für diese Anweisung.

    • Durch {Supported_Platforms := ...} erkennt logi.CAD 3, dass die anschließend deklarierten Bausteine und Datentypen nur für die definierten Plattformen gelten sollen. Falls Sie {Supported_Platforms := ...} nicht eintragen, gelten die deklarierten Elemente für alle Plattformen, die in logi.CAD 3 möglich sind. Die Liste dieser Plattformen finden Sie unter "SPS im SPS-Objekt konfigurieren". Beachten Sie, dass die Plattform BuiltInPlc für {Supported_Platforms := ...} nicht möglich ist. Verwenden Sie am besten die Inhaltshilfe, um die gewünschten Plattformen einzutragen.

  3. Darunter deklarieren Sie die benötigten Bausteine (d.h., →Funktionsbausteine und/oder →Funktionen). Zusätzlich ist es auch möglich, →Datentypen in der Datei zu deklarieren.
    Die Deklaration dieser Elemente erfolgt wie gewohnt im ST-Editor. Informationen über die erforderliche Syntax finden Sie unter: "Deklaration eines Funktionsbausteins in ST", "Deklaration einer Funktion in ST", "Deklaration eines Datentyps in ST"
    Beachten Sie, dass die Deklaration eines →Programms in dieser Datei nicht möglich ist – aufgrund von {extern_c} oder {extern_cxx}.

  4. Zusätzlich pro Funktionsbaustein und/oder Funktion: Deklarieren Sie die Schnittstelle für diesen Baustein, z.B. →Eingangsvariablen und →Ausgangsvariablen.
    Diese Deklaration erfolgt wie gewohnt im ST-Editor. Informationen über die erforderliche Syntax finden Sie unter: "Deklaration von Variablen in ST"
    Beachten Sie, dass die Deklaration von →Ein-/Ausgangsvariable, →externen Variablen, →temporären Variablen als auch von →Methoden und →Zuweisungen in dieser Datei nicht möglich sind – aufgrund von {extern_c} oder {extern_cxx}.
    logi.cals 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 logi.cals, 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 logi.CAD 3 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.

    Beispiel für Deklaration eines C-Funktionsbausteins und einer C-Funktion (beide mit Schnittstelle)
    {extern_c}
    {Supported_Platforms := WindowsX86, Ce5Nmr20}
     
    FUNCTION_BLOCK MyCFB // Der Funktionsbaustein 'MyCFB' besitzt 2 Eingänge und 1 Ausgang.
    VAR_INPUT
    In1, In2 : INT;
    END_VAR
    VAR_OUTPUT
    Out : INT;
    END_VAR
    END_FUNCTION_BLOCK
     
    FUNCTION MyCFun : INT // Die Funktion 'MyCFun' besitzt 2 Eingänge und 2 Ausgänge.
    VAR_INPUT
    In1, In2 : INT;
    END_VAR
    VAR_OUTPUT
    Out : INT;
    END_VAR
    END_FUNCTION
  5. Speichern Sie die ST-Schnittstelle mit {extern_c} oder {extern_cxx}.
    Dabei werden durch logi.CAD 3 die Dateien mit C-Code und Header-Dateien für den C-Baustein oder C++-Baustein erstellt, und zwar pro deklariertem Funktionsbaustein bzw. deklarierter Funktion:

    Datei

    Position

    Anmerkung

    LCfu___name.c oder LCfu___name.cppBezogen auf das Beispiel: LCfu___MyCFB.c und LCfu___MyCFun.c

    im Ordner, in der die ST-Schnittstelle erstellt wurde
    Beispiel: im Ordner src des Projekts

    Das ist die Datei, in der Sie anschließend Ihren C-Code oder C++-Code erstellen werden. name ist der Name des Funktionsbausteins bzw. der Funktion, wie er in der ST-Schnittstelle eingetragen ist.
    Ist diese Datei bereits vorhanden, wird sie beim Speichern der ST-Schnittstelle mit {extern_c} oder {extern_cxx} von logi.CAD 3 nicht überschrieben. Diese Datei wird auch nicht gelöscht, falls Sie das Projekt bereinigen.

    LCfu___name.h
    Bezogen auf das Beispiel: LCfu___MyCFB.h und LCfu___MyCFun.h

    im Ordner src-gen des Projekts

    Das ist die Header-Datei für den C-Code. Bearbeiten Sie diese Datei nicht, da sie von logi.CAD 3 beim Speichern der ST-Schnittstelle mit {extern_c} oder {extern_cxx} überschrieben wird. name ist der Name des Funktionsbausteins bzw. der Funktion, wie er in der ST-Schnittstelle eingetragen ist.
    Die Header-Dateien werden standardmäßig nicht im Projektexplorer angezeigt. Falls Sie diese Dateien im Projektexplorer anzeigen wollen: Klicken Sie auf images/download/attachments/451280970/IconViewMenu-version-1-modificationdate-1598000630466-api-v2.png in der Symbolleiste des Projektexplorers, wählen Sie Filter und Anpassungen... und entfernen Sie die Markierung bei src-gen Ordner (unter Filter).

    Falls Sie die bereits erstellte Schnittstelle von C-Bausteinen nach dem ersten Speichern der ST-Schnittstelle mit {extern_c} oder {extern_cxx} ändern (z.B. den Namen des Bausteins ändern oder neue Ein-/Ausgänge erstellen), müssen Sie einige Schritte durchführen. Details: siehe "Anpassungen bei nachtraeglicher Aenderung der Schnittstelle fuer C-Baustein oder C++-Baustein".