Deklaration des Inhalts für die Bibliothek

Syntax
LIBRARY fully.qualified.name
  ...
  FOLDER "name1"                                (* a folder to be included in the library *)
    (* 'IEC' specifies a POU or data type to be included in the above-specified folder. Some of its values are invalid for library type 'LOGIWEB' and 'LOGISAFE', others for 'LOGICAD'. *)
    IEC := fully.qualified.name1|POU-name1; (* optional_begin *), DEPLOY:=SOURCE|INTERFACE|OBJECT, VISIBILITY:=PUBLIC|PRIVATE, SiLCoverageReviewed:="<FINGERPRINT>", "Comment on reviewed coverage" (* optional_end *);
    IEC := fully.qualified.name2|POU-name2;   
    ...
    (* 'FILE' specifies an additional file to be included in the above-specified folder. *) 
    FILE := "path\name1";     (* Note: Paths can be entered by using: \ or / *)
    FILE := "path\name2" (* optional_begin *), SOURCEPATH := "path" (* optional_end *);
    ...
    FOLDER "name2"                                     (* a sub-folder to be included in the library *)
          IEC := fully.qualified.name3|POU-name3;  (* 'IEC' and 'FILE' statements can be used as specified above. *)
          FILE := "path/name3" (* optional_begin *), SOURCEPATH := "path" (* optional_end *);
          ...
    END_FOLDER 
    ...  (* additional folders and/or sub-folders with 'IEC' and 'FILE' statements as needed *)
  END_FOLDER

  (* optional statements for 'LOGICAD', invalid for library type 'LOGIWEB' and 'LOGISAFE'. *)
   BINARY_LIBRARIES FOR platform-name
    FILE:= "path\name4";
    FILE:= "path\name5" (* optional_begin *), SOURCEPATH := "path" (* optional_end *);
    ...
  END_BINARY_LIBRARIES
  BINARY_OBJECTS FOR BuiltInPlc
    FILE := "path\name6";
    FILE := "path\name7" (* optional_begin *), SOURCEPATH := "path" (* optional_end *);
    ...
  END_BINARY_OBJECTS
  INCLUDES (* optional_begin *) FOR platform-name (* optional_end *)
    FILE:= "path\name8";
    FILE:= "path\name9" (* optional_begin *), SOURCEPATH := "path" (* optional_end *);
    ...
  END_INCLUDES
  SOURCES (* optional_begin *) FOR platform-name (* optional_end *)
    FILE:= "path\name10";
    FILE:= "path\name11" (* optional_begin *), SOURCEPATH := "path" (* optional_end *);
    ...
  END_SOURCES
 
END_LIBRARY
Bedeutung

Deklaration des Inhalts für eine →Bibliothek
Die Deklarationen sind in einer Bibliothekskonfiguration innerhalb von LIBRARY und END_LIBRARY möglich. Siehe "Deklaration der Erstellungsinformationen und Referenzen für die Bibliothek" für die Möglichkeiten vor FOLDER.

(warning) Abhängig vom Bibliothekstyp (siehe unter "Eigene Bibliothek erstellen und bereitstellen" für Details zum Bibliothekstyp) sind bestimmte der folgenden Abschnitte/Elemente nicht zulässig. Siehe "Besonderheiten für logi.SAFE-/logi.WEB-Bibliotheken", welche Anweisungen für eine logi.SAFE - und logi.WEB -Bibliothek vorausgesetzt werden und welche nicht enthalten sein dürfen.

Der Inhalt der komprimierten Bibliothek ergibt sich aus diesen Abschnitten/Elementen:

Abschnitt/ElementErläuterung
FOLDER "name"
...
END_FOLDER

ein Ordner in der komprimierten Bibliothek, wobei name ein gültiger Name für den Pfad im Betriebssystem sein muss
Beispiel für Windows: Sonderzeichen, wie z.B. * oder >, müssen vermieden werden.

Spezifizieren Sie einen Abschnitt FOLDER ... END_FOLDER für jeden benötigten Ordner in der Bibliothek. Die Ordner werden im Unterordner FOLDER der komprimierten Bibliothek erstellt.
Falls Unterordner benötigt werden, spezifizieren einen Abschnitt FOLDER ... END_FOLDER innerhalb eines anderen Abschnitts FOLDER ... END_FOLDER (siehe FOLDER "Testing" ... END_FOLDER im folgenden Beispiel 1).

Hinweis: Es ist möglich, die Angabe "name" für den ersten Abschnitt FOLDER ... END_FOLDER wegzulassen. Auswirkung: Die Dateien für alle Anweisungen, die in diesem ersten Abschnitt FOLDER ... END_FOLDER spezifiziert sind, werden dann direkt in den Unterordner FOLDER der komprimierten Bibliothek kopiert (siehe das folgende Beispiel 2).

IEC := fully.qualified.name|POU-name
(* optional_begin *), DEPLOY:=SOURCE|INTERFACE|OBJECT,
VISIBILITY:=PUBLIC|PRIVATE, SiLCoverageReviewed:="<FINGERPRINT>", "Comment on reviewed coverage"
(* optional_end *);

das Bibliothekselement in der komprimierten Bibliothek; Das Bibliothekselement ist entweder eine →POE oder ein →Datentyp.
Bei einer logi.SAFE - oder logi.WEB -Bibliothek muss das Bibliothekselement bestimmte Vorgaben erfüllen; siehe unter "Besonderheiten für logi.SAFE-/logi.WEB-Bibliotheken".

Der anzugebende Name der POE bzw. des Datentyps ist abhängig davon, ob Sie einen →Namespace beim Erstellen der POE bzw. des Datentyps verwendet haben:

  • Falls ja (laut der Empfehlung von logi.cals ), geben Sie den voll qualifizierten Name ein. Dies erfolgt, wie dies unter "Namespaces in ST: Verwendung" beschrieben ist.
    Beispiel: com.Musterfirma.Controller.Motor1 – wobei der Motor1-Baustein im verschachtelten Namespace com.Musterfirma.Controller deklariert ist
  • Falls nein, geben Sie nur den POE-Namen ein.
    Beispiel: Counter für den Funktionsbaustein Control

Spezifizieren Sie eine Anweisung IEC := ... für jede benötigte POE oder jeden benötigten Datentyp in der Bibliothek. Diese Anweisung ist innerhalb eines Abschnitts FOLDER ... END_FOLDER möglich.
Einschränkung: Ein 
→Programm mit →globalen Variablen darf nicht spezifiziert werden.

Das optionale Schlüsselwort DEPLOY definiert das Format für die POE, wie die Anweisungen der POE in die komprimierte Bibliothek kopiert werden. Alle 3 Werte sind für eine logi.CAD 3 -Bibliothek möglich.

  • SOURCE – Damit werden alle Anweisungen der POE in die Bibliothek kopiert. SOURCE ist der Standardwert und wird ohne angegebenes Schlüsselwort DEPLOY angewendet.
    Es ist nur dieser Wert ist für ein →Programmeine logi.SAFE - oder logi.WEB -Bibliothek möglich.
  • INTERFACE – Damit werden nur die Schnittstellen-relevanten Anweisungen der POE in die Bibliothek kopiert und die Zuweisungen in der POE – also der eigentliche Code oder die eigentliche Logik – sind nicht mehr direkt in den Bibliotheksbausteinen einsehbar. Der benötigte Binärcode für die POE wird erst bei der Verwendung der Bibliotheks-POE erstellt.
    Beachten Sie diese Auswirkung: Falls eine FBS-POE mit diesem Wert angegeben wird, erzeugt logi.CAD 3 für die komprimierte Bibliothek eine Datei mit Dateierweiterung .iecst (statt einer Datei mit der ursprünglichen Dateierweiterung .iecfbd). In der bereitgestellten Bibliothek zeigt der Projektexplorer in Folge ein ST-Objekt statt des ursprünglichen FBS-Objekts an. Sie dürfen aber davon ausgehen, dass diese Änderung keine Auswirkungen auf die Verwendung der Bibliotheks-POE hat.
  • OBJECT – wie bei INTERFACE, mit diesem Unterschied: Der benötigte Binärcode für die POE wird bereits beim Erzeugen der komprimierten Bibliothek erstellt. Aufgrund dieses Wert schützen Sie den Inhalt der POE gegenüber Dritten (= Know-How-Schutz), da die Bibliothek nur mehr die Schnittstelle der POE als Klartext enthält, aber nicht mehr den eigentlichen Code bzw. den eigentlichen Logik der POE.
    Beachten Sie diese Auswirkungen:

Das optionale Schlüsselwort VISIBILITY definiert die Sichtbarkeit der POE bzw. des Datentyps in der Bibliothek. Diese Werte sind möglich:

  • PUBLIC – Damit wird die POE bzw. der Datentyp zu einem öffentlichen Bibliothekselement, das ohne Einschränkung in der Bibliothek sichtbar ist. PUBLIC ist der Standardwert und wird ohne angegebenes Schlüsselwort VISIBILITY angewendet.
  • PRIVATE – Damit wird die POE bzw. der Datentyp zu einem privaten Bibliothekselement, das in der Bibliothek enthalten ist, aber standardmäßig nicht in logi.CAD 3 sichtbar ist (eigentlich in der grafischen Oberfläche von logi.CAD 3 ).
    Solche private Bibliothekselemente sind üblicherweise Hilfsfunktionen, die in öffentlichen Bibliothekselementen verwendet werden. Die Hilfsfunktionen müssen in der Bibliothek enthalten sein, damit die anderen Bibliothekselemente korrekt funktionieren. Die Hilfsfunktionen sollen aber nicht direkt in der Anwendung verwendet werden können.

Das optionale Schlüsselwort SiLCoverageReviewed definiert, dass das Bibliothekselement keine vollständige Testabdeckung für die logi.SAFE - oder  logi.WEB -Bibliotheken erreichen muss. Die folgende Angaben werden dabei benötigt:

  • "<FINGERPRINT>" – Geben Sie den →Fingerprint des Bibliothekselement an. Sie finden den Fingerprint im Bibliothekerzeugungs-Bericht, der während der Erzeugung der komprimierten Bibliothek erstellt wird. Suchen Sie in dieser HTML-Datei am besten nach dem Namen des Bibliothekselements und kopieren Sie darin den Fingerprint dieses Bibliothekselements in die Zwischenablage. Danach fügen Sie den Fingerprint nach SiLCoverageReviewed ein.
  • "Comment on reviewed coverage" – Geben Sie einen aussagekräftigen Kommentar an, warum eine Abweichung von der vollständigen Testabdeckung gerechtfertigt ist.

Hinweise zur Anweisung IEC:

  • Die spezifizierte POE oder der spezifizierte Datentyp muss im Projekt vorhanden sein, damit die komprimierte Bibliothek erzeugt werden kann.
  • Falls die spezifizierte POE oder der spezifizierte Datentyp andere POE/Datentypen verwendet, werden diese nicht automatisch in die komprimierte Bibliothek kopiert. Das heißt, Sie müssen alle verwendeten POE/Datentypen ebenfalls durch die Anweisungen IEC := ... spezifizieren.
  • Die komprimierte Bibliothek enthält jene Datei, in der die spezifizierte POE bzw. der spezifizierte Datentyp deklariert ist. Beispiel: Falls der Baustein Motor1 in der Datei MyPOU1.iecst deklariert ist, enthält die komprimierte Bibliothek die Datei MyPOU1.iecst.
  • Falls Sie mehrere POE oder Datentypen in einem ST-Objekt deklariert haben, verwendet logi.CAD 3 nur den Inhalt, der für die betroffene POE oder den betroffenen Datentyp benötigt wird.
FILE := "path/name" (* optional_begin *), SOURCEPATH := "path" (* optional_end *);

eine zusätzliche Datei in der komprimierten Bibliothek, wobei path und name ein gültiger Name für den Pfad bzw. Dateinamen im Betriebssystem sein muss
Beispiel für Windows: Sonderzeichen, wie z.B. * oder >, müssen vermieden werden.

Spezifizieren Sie eine Anweisung FILE := ... für jede benötigte Datei in der Bibliothek. Diese Anweisung ist innerhalb dieser Abschnitte möglich: FOLDER ... END_FOLDER, BINARY_LIBRARIES ... END_BINARY_LIBRARIESBINARY_OBJECTS ... END_BINARY_OBJECTS, INCLUDES ... END_INCLUDES und SOURCES ... END_SOURCES

Hinweise:

  • Die spezifizierte Datei muss im Projekt vorhanden sein, damit die komprimierte Bibliothek erzeugt werden kann.
  • Geben Sie den projektrelativen Pfad an.
  • Die Datei wird mit dem spezifizierten Pfad in der komprimierte Bibliothek abgelegt.

Das optionale Schlüsselwort SOURCEPATH definiert einen zusätzlichen Pfad, in dem die Datei im aktuellen Projekt gesucht wird. Dieser Pfad wird jedoch für die Ablage der Datei in der komprimierte Bibliothek nicht berücksichtigt. Siehe Beispiele mit SOURCEPATH für Details.

BINARY_LIBRARIES FOR platform-name
  FILE := ...
END_BINARY_LIBRARIES
BINARY_OBJECTS FOR platform-name
  FILE := ...
END_BINARY_OBJECTS

Binaries für die komprimierte logi.CAD 3 -Bibliothek, im speziellen C-Bibliotheken (.lib) und Object-Dateien (*.o oder *.obj), die beim Linking-Vorgang der Anwendung ebenfalls gelinkt werden müssen
Statt des Attributs platform-name müssen Sie eine der Plattformen spezifizieren, die in logi.CAD 3 verfügbar sind.

Spezifizieren Sie die Abschnitte BINARIES_LIBRARIES ... END_BINARY_LIBRARIES und BINARY_OBJECTS ... END_BINARY_OBJECTS für jede Plattform, für die die Binaries benötigt werden. Die Dateien spezifizieren Sie durch die entsprechenden Anweisungen: FILE := ... (siehe oben für deren Syntax)

Die Dateien werden in den Unterordner BINARY_LIBRARIES\platform-name oder BINARY_OBJECTS\platform-name der komprimierten Bibliothek kopiert.

Hinweis: Die spezifizierten Dateien werden von logi.CAD 3 beim Erstellen der komprimierten Bibliothek nicht geprüft (z.B. falls falsche Binaries oder Textdateien angegeben sind). Das bedeutet, Fehler zu diesen Dateien werden erst beim Erstellen einer Anwendung gemeldet, die z.B. Bausteine aus der Bibliothek verwenden.

INCLUDES (* optional_begin *) FOR platform-name (* optional_end *)
  FILE := ...
END_INCLUDES

Includes für die komprimierte logi.CAD 3 -Bibliothek, im speziellen Header-Dateien (*.h), die beim Compile-Vorgang der Anwendung gefunden werden müssen (also im Include-Pfad aufgenommen werden müssen)

Statt des Attributs platform-name (in der optionalen Angabe FOR platform-name) müssen Sie eine der Plattformen spezifizieren, die in logi.CAD 3 verfügbar sind. 

Sie können mehrere Abschnitte INCLUDES ... END_INCLUDES spezifizieren. Die Header-Dateien spezifizieren Sie durch die entsprechenden Anweisungen: FILE := ... (siehe oben für deren Syntax)

Die Dateien werden in den Unterordner INCLUDES oder INCLUDES\platform-name der komprimierten Bibliothek kopiert.

Hinweis: Die spezifizierten Dateien werden von logi.CAD 3 beim Erstellen der komprimierten Bibliothek nicht geprüft, sondern nur für den Suchpfad für Include-Dateien hinzugefügt. Das bedeutet, Fehler zu diesen Dateien werden erst beim Erstellen einer Anwendung gemeldet, die z.B. Bausteine aus der Bibliothek verwenden.

Erläuterung anhand von Beispielen, wie sich das optionale Schlüsselwort SOURCEPATH bei der Anweisung FILE := ... im Abschnitt INCLUDES FOR platform-name ... END_INCLUDES auswirkt:

  • Beispiel 1, FILE := "sys/GlobalIncludes1.h", SOURCEPATH := "src/h";: Die Datei GlobalIncludes1.h wird im Unterordner src/h/sys des Projekts gesucht und in den Ordner INCLUDES\platform-name\sys der komprimierten Bibliothek kopiert.
    Konsequenz: Falls Sie diese H-Datei in einem C-Baustein innerhalb des Projekts verwenden wollen, in dem die komprimierte Bibliothekt installiert ist, muss das Include-Statement mit sys/GlobalIncludes1.h erfolgen. 
  • Beispiel 2, FILE := "GlobalIncludes2.h", SOURCEPATH := "src/h";: Die Datei GlobalIncludes2.h wird im Unterordner src/h des Projekts gesucht und in den Ordner INCLUDES\platform-name der komprimierten Bibliothek kopiert.
    Konsequenz: Falls Sie diese H-Datei in einem C-Baustein innerhalb des Projekts verwenden wollen, in dem die komprimierte Bibliothekt installiert ist, muss das Include-Statement mit GlobalIncludes2.h erfolgen.

Hinweise zu beiden Beispielen: Falls Sie die H-Datei in einem C-Baustein innerhalb des Projekts verwenden wollen, in dem die komprimierte Bibliothek erzeugt wird, müssen Sie diese Datei in den Einstellungen für C-Bausteine definieren. Für beide Beispielen wäre dieser Include-Pfad erforderlich: ${PROJECT_LOC}\src\h
Falls Sie SOURCEPATH := ... jedoch nicht verwenden, wäre dieser Include-Pfad erforderlich: ${PROJECT_LOC}

SOURCES (* optional_begin *) FOR platform-name (* optional_end *)
  FILE := ...
END_SOURCES

Quelldateien für die komprimierte logi.CAD 3 -Bibliothek, im speziellen C-Dateien (*.c) oder C++-Dateien (*.cpp), die beim Compile-Vorgang der Anwendung kompiliert und gelinkt werden müssen

Statt des Attributs platform-name (in der optionalen Angabe FOR platform-name) müssen Sie eine der Plattformen spezifizieren, die in logi.CAD 3 verfügbar sind. 

Sie können mehrere Abschnitte SOURCES ... END_SOURCES spezifizieren. Die Quelldateien spezifizieren Sie durch die entsprechenden Anweisungen: FILE := ... (siehe oben für deren Syntax)

Die Dateien werden in den Unterordner SOURCES oder SOURCES\platform-name der komprimierten Bibliothek kopiert.

Hinweis: Die spezifizierten Dateien werden von logi.CAD 3 beim Erstellen der komprimierten Bibliothek nicht geprüft (z.B. falls fehlerhafte C- oder C++-Dateien angegeben sind), sondern erst kompiliert, falls der entsprechende Baustein in der Anwendung verwendet wird. Das bedeutet, Fehler zu diesen Dateien werden erst beim Erstellen einer Anwendung gemeldet, die z.B. Bausteine aus der Bibliothek verwenden.

Beispiel 1
LIBRARY com.MyCompany.MyLib1
  ...
  FOLDER "Motors"   (* Die komprimierte Bibliothek wird unterhalb von 'FOLDER' den Ordner 'Motors' und darin den Ordner 'Testing' enthalten, also: FOLDER\Motors\Testing *)
    IEC := com.Musterfirma.Controller.Motor1;  (* Im Ordner 'Motors" werden die POE 'Motor1' und 'Motor2' enthalten sein, und zwar... *)
    IEC := com.Musterfirma.Controller.Motor2;  (* ... in der Datei, in der diese POE mit dem Namespace 'com.Musterfirma.Controller' deklariert sind. Beispiel: MyPOU1.iecst, MyPOU2.iecst *)
    FILE := "olh\Motor1.EN.html"; 		       (* Die HTML-Dateien sind externe Bausteinhilfen für 'Motor1' und 'Motor2' - in Englisch. *)
    FILE := "olh\Motor2.EN.html";
    FOLDER "Testing"                           (* Im Ordner 'Testing" werden die POE 'Test1' und 'Test2' enthalten sein... *)
      IEC := com.Musterfirma.Controller.Test1; (* ... und zwar in der Datei, in der die POE mit dem Namespace 'com.Musterfirma.Controller' deklariert sind.Beispiel: MyPOU3.iecst, MyPOUs.iecst *)
      IEC := com.Musterfirma.Controller.Test2;
      FILE := "olh\Test1.EN.html";             (* Die HTML-Dateien sind externe Bausteinhilfen für 'Test1' und 'Test2' - in Englisch. *)
      FILE := "olh\Test2.EN.html";
    END_FOLDER
  END_FOLDER
  BINARY_LIBRARIES FOR BuiltInPlc    (* Die Bibliothek wird außerdem noch einige Binaries, Include- und Source-Dateien enthalten. *)
    FILE := "libs\mathlib.lib";
  END_BINARY_LIBRARIES
  BINARY_OBJECTS FOR BuiltInPlc
    FILE := "libs\mathlib.o";
  END_BINARY_OBJECTS
  INCLUDES
    FILE := "h\mathlib.h";
  END_INCLUDES
  SOURCES
    FILE := "code.c";
  END_SOURCES
END_LIBRARY
Beispiel 2
LIBRARY com.MyCompany.MyLib2
  ...
  FOLDER   (* Die komprimierte Bibliothek wird direkt unterhalb von 'FOLDER' die POE enthalten. *)
    IEC := com.Musterfirma.Controller.Motor1;
    IEC := com.Musterfirma.Controller.Motor2;
  END_FOLDER
  ...
END_LIBRARY

Beispiel 3 zeigt die Bibliothekskonfiguration für eine  logi.SAFE -Bibliothek:

Beispiel 3
LIBRARY com.MyCompany.MyLibSAFE
  VERSION :=1.1.0;
  LIBRARYTYPE:=LOGISAFE;
  PTK_FOR_LIBRARY_BUILD:=SafeLibraryWindowsX86;
  FOLDER "SAFE"
    IEC := com.Musterfirma.Safe.Motor1;
    IEC := com.Musterfirma.Safe.Motor2, SiLCoverageReviewed := "E870DD09", "defensive programming -> 70% coverage is OK";
  END_FOLDER
END_LIBRARY