Common Behaviour Model

Übersicht der Funktionsbausteine, Schnittstellen und Dekoratoren, die durch die CODESYS Common Behaviour Model Library zur Verfügung gestellt werden.

Die Bibliothek stellt für jedes Behaviour Model, das von der PLCopen spezifiziert ist, einen Basis-Funktionsbaustein zur Verfügung.

Wiederverwendung durch Komposition

Der Basis-Funktionsbaustein für alle zeitgesteuerten Funktionsbausteine ((TimingControlledBehaviourModelBase) kann unter Anwendung der Komposition erstellt werden. Hierfür werden die Funktionsbausteine BehaviourModel und TimingController eingebunden. Die Eingangsvariablen itfActionProvider und itfTimigController werden korrekt initialisiert. Zusätzlich wird ein Satz von Schnittstellen implementiert. Jeder Aufruf einer Methode und jeder Zugriff auf ein Property muss der lokalen BehaviourModel Instanz delegiert werden.

Verwendung der Komposition, um einen neuen Funktionsbaustein TimingControlledBehaviourModelBase zu erstellen.

Die Methoden der Schnittstelle IActionProvider bieten die Möglichkeit, sie innerhalb des Funktionsbausteins durch Erweitern des Basis-Funktionsbaustein anzupassen. Die Implementierung der Methoden, die Teil der Schnittstelle IBehaviourModel (zum Beispiel StartModel) sind, erlaubt es, die Eingangs- und Ausgangsvariablen der lokalen BehaviourModel Instanz und die Eingangs- und Ausgangsvariablen des erweiternden Funktionsbausteins zu verbinden. Für diese Task wurde die Methode GetModelState ausgewählt.

Die Implementierung des Bodys des Basis-Funktionsbaustein wird zur geschützten Methode _Execute ausgelagert. Somit kann das Verhalten eines Aufrufs außerhalb des SPS-Zyklus durch die Funktionsbausteine modifiziert werden, die diesen Basis-Funktionsbaustein später erweitern.

Verwendung von Komposition, um neue Funktionsbausteine zu erstellen

Verwendung von Komposition, um einen neuen Funktionsbaustein MC_MoveAbsolute mit ETrigA-Verhalten zu erstellen

Indem zwei Funktionsbausteine erstellt werden, ein interner Kern-Funktionsbaustein und ein öffentlicher finaler Funktionsbaustein, können die kompletten Implementierungsdetails gekapselt werden. Wenn diese Technik verwendet wird, wird das Layout des öffentlichen Funktionsbausteins vollständig vom Layout des internen Funktionsbausteins entkoppelt (Beachten Sie die unterschiedlichen Namenskonventionen für Variablennamen). Wegen des Schlüsselworts FINAL kann dieser Funktionsbaustein in einem anderen Kontext nicht erweitert werden. Deshalb können keine Probleme auftreten, nachdem einige Implementierungsdetails geändert wurden (zum Beispiel, wenn lokale Variablen hinzugefügt wurden). Wenn ein Funktionsbaustein mit dem Schlüsselwort INTERNAL markiert ist, kann ihn niemand außerhalb seines definierten Kontexts, seiner Originalbibliothek, verwenden.

Wiederverwendung durch Vererbung

Der Basis-Funktionsbaustein für ETrigTl-Verhalten wird durch Erweitern des Basis-Funktionsbausteins TimingControlledBehaviourModelBase, der oben beschrieben wurde, erstellt. Die allgemeinen Eingangs- und Ausgangsvariablen werden deklariert. Nahezu die komplette Implementierung kann vom Funktionsbaustein TimingControlledBehaviourModelBase geerbt werden. Nur wenig Code ist notwendig, um den neuen Funktionsbaustein entsprechen der ETrigTl Spezifikation anzupassen. Der neue Funktionsbaustein ist nun ein vollwertiges Mitglied der BehaviourModel Familie. Er kann ebenso über seine Ein- und Ausgänge wie auch über die implementierte Schnittstelle IBehaviourModel verwendet werden.

Verwendung von Vererbung, um einen neuen Funktionsbaustein ETrigTl zu erstellen.

Die anderen Funktionsbausteine wie LCon, LConTl, LConTo, LConTlTo, LConC, LConTlC oder ETrig, ETrigTo, ETrigTlTo, ETrigA, ETrigATl, ETrigATo, ETrigATo und ETrigATlTo werden auf die gleiche Weise erzeugt.

Verwendung von Vererbung, um neue Funktionsbausteine zu erstellen

Um einen Basis-Funktionsbaustein außerhalb der Common Behaviour Model Library wiederzuverwenden, muss ein neuer Funktionsbaustein erstellt werden, der den gewünschten Basis-Funktionsbaustein der Bibliothek erweitert. Zusätzliche Variablen können hinzugefügt werden und die spezifische Implementierung seines Verhaltens kann in die Methoden StartAction, CyclicAction, CleanupAction und ResetAction platziert werden. Die geerbte BehaviourModel Instanz garantiert, dass die richtige Methode zum richtigen Zeitpunkt aufgerufen wird.

Verwendung von Vererbung, um einen neuen Funktionsbaustein MC_MoveAbsolute, der CBML.ETrig erweitert, zu erstellen.