Entwicklung von Bibliotheken

Themenpunkte:

  1. Bibliotheksnamen [++]
  2. Versionierung [++]
  3. Kapselung interner Typdefinitionen [+]
  4. Bezeichner in Bibliotheken [+]

Bibliotheksnamen

Beckhoff SPS-Bibliotheken beginnen mit dem Präfix Tc (z. B.: Tc3_EventLogger), besitzen die Dateinamenerweiterung *.compiled-library und sind im Bibliotheks-Repository eingebunden.

Wählen Sie Bibliotheksnamen kurz, aber dennoch unmissverständlich.

Der Namespace einer Beckhoff SPS-Bibliothek ist identisch mit dem Bibliotheksnamen.

Der Standard-Platzhalter einer Beckhoff SPS-Bibliothek ist identisch mit dem Bibliotheksnamen.

Versionierung

Jede SPS-Bibliothek besitzt eine vierstellige Versionsnummer (Major.Minor.Build.Revision).

Major

Die erste Stelle wird inkrementiert, wenn die neue Version inkompatibel zur vorherigen Version ist.
Dabei werden die Stellen für Minor und Build auf eins zurückgesetzt.

Minor

Die zweite Stelle wird inkrementiert, wenn die neue Version Funktionserweiterungen beinhaltet.
Dabei wird die Stelle für Build auf eins zurückgesetzt.

Build (Patch)

Die dritte Stelle wird inkrementiert, wenn die neue Version nur Fehlerbehebungen beinhaltet.

Revision

Die vierte Stelle ist immer Null, sofern es sich um eine Release-Version handelt.

Ist eine SPS-Bibliothek noch im Beta-Status, so handelt es sich um die Major Version null bzw. um eine Versionsnummer 0.x.y.z. Eine Release-Version hat mindestens die Versionsnummer 1.1.1.0.

Sollten andere Programmteile eine dreistellige Versionierung (Major.Minor.Patch) vorsehen, so können die ersten drei Stellen entsprechend verwendet werden (Build = Patch).

Kapselung interner Typdefinitionen

Um die Verwendung interner Typdefinitionen von außerhalb der Bibliothek zu verhindern und um dem Anwender die für ihn relevanten POUs und DUTs zu verdeutlichen, wird in SPS-Bibliotheken Kapselung verwendet. Hierzu wird der Access-Specifier INTERNAL empfohlen.

Bei einzelnen Methoden von Funktionsbausteinen kann ebenso der Access-Specifier PRIVATE Anwendung finden. Um lokale Variablen von Funktionsbausteinen zu verstecken, kann das Attribut 'conditionalshow_all_locals' verwendet werden.

Bezeichner in Bibliotheken

Um Compiler-Fehler zu doppelten Bezeichnern zu verhindern und eine Verwendung der Bibliothek ohne verpflichtenden Namespace zu ermöglichen, wird die Verwendung eines zusätzlichen Kürzels in den Bezeichnern empfohlen. Diese Abkürzung des Bibliotheksnamens wird zwischen das Präfix und den eigentlichen Namen des jeweiligen Typen gesetzt.

Ebenso sollten globale Variablenlisten einer Bibliothek mit dem Kürzel ergänzt werden, um mehrfache Existenz von Listen namens 'GVL' zu vermeiden.

Beispiele (aus der SPS-Bibliothek Tc3_Filter):

STRUCT ST_FTR_PT1
ENUM E_FTR_Type
FUNCTION_BLOCK FB_FTR_PT1
VAR_GLOBAL GVL_FTR

 

Siehe auch: