Schnittstelle für C-Baustein oder C++-Baustein erstellen

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

    • 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/Instanzen in ST"
    Beachten Sie, dass die Deklaration von →Ein-/Ausgangsvariable→externen Variablen als auch von →temporären Variablen und →Zuweisungen in dieser Datei nicht möglich ist – aufgrund von {extern_c} oder {extern_cxx}.

    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:

    DateiPositionAnmerkung
    LCfu___name.c oder LCfu___name.cpp

    Bezogen 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  in der Symbolleiste des Projektexplorers, wählen Sie Ansicht anpassen... 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".


Weiter mit: Code im C-Baustein oder C++-Baustein erstellen
Weiteres Beispiel für ST-Schnittstelle: siehe "Beispiel für einen C-Baustein"