Initialisierung und Zyklusmethoden

Da im Konzept der Plastic Base Application gehäuft mit Referenzwerten wie Schnittstellen gearbeitet wird, muss gewährleistet sein, dass genutzte Referenzwerte eine gültige Zuweisung besitzen. Um die Laufzeit nicht durch die ständige Validierung dieser Zuweisungen zusätzlich zu belasten, implementiert die Plastic Base Application ein Konzept zur Initialisierung eines Objektes.

Der Zugriff von ungültigen Referenzwerten betrifft im Wesentlichen den Aufruf von Zyklusmethoden eines Plastic Base Application Objekts. Aus diesem Grund muss ein Objekt erfolgreich initialisiert worden sein, bevor die Zyklusmethode ausgeführt werden darf.

Initialisierung und Zyklusmethoden 1:
Initialisierung und Zyklusmethoden 2:

Handling mit der FB_BaseRuntime Klasse empfohlen

Alle im Folgenden beschriebenen Initialisierungsschritte und Zyklusaufrufe können mithilfe der FB_BaseRuntime umgesetzt werden. Dadurch müssen Objekte lediglich der Runtime übergeben werden. Beim Fehlschlagen der Initialisierungsschritte werden entsprechende Informationen über den TcEventLogger ausgegeben.

SetHMI() Methode

Mittels der SetHMI() Methode kann eine HMI-Parallelklasse an die Hauptklasse übergeben werden. Die Methode muss immer vor der Init() Methode ausgeführt werden, sofern die Klasse nicht auch ohne HMI-Parallelklasse funktioniert.

Fehlercode

Kürzel

Beschreibung

0x701

SrvNotSupported

Die Klasse unterstützt keine HMI-Parallelklasse.

0x71B

InvalidInterface

Die übergebene Schnittstelle ist ungültig.

Init() Methode

Die Init() Methode dient neben dem Setzen und Konfigurieren von Referenzwertzuweisungen der Überprüfung des Initialisierungs-Zustands. Dementsprechend muss beim Initialisieren eines Objektes der HRESULT Rückgabewert der Methode überprüft werden. Ist die Ausführung der Init() Methode nicht erfolgreich, existiert ein Fehler im Aufbau der Programm-Codes, dieser muss auf Code-Ebene gelöst werden.

Initialisierung und Zyklusmethoden 3:

Nutzen des BaseStates

Redundant zum Rückgabewert der Init() Methode kann auch der BaseState der Basisklasse FB_Base auf einen Wert größer als E_BaseState.eInit überprüft werden.

Cyclic() Methode

Die Cyclic() Zyklusmethode fungiert als objektorientierte Version eines Klassen-Instanzaufrufs. Das heißt, die Methode wird in der Regel einmal pro Zyklus aufgerufen um Prozeduren und/oder Aktualisierungen zu bearbeiten. Bei den in der Cyclic()-Methode implementierten Routinen handelt es sich meist um Mechanismen mit mittlerer Priorität. Daher eignet sich diese Methode für die Implementierung einer vordefinierten Kommandoabfolge oder der Verarbeitung von Steuerungsbefehlen aus dem HMI (z. B. die Umsetzung von Handfunktionen).

ParamInit() Methode

Die ParamInit() Methode dient zur Initialisierung von Parametern. Heißt, in dieser Methode werden hartcodierte Standardwerte definiert, mit denen eine Inbetriebnahme ohne vorkonfigurierte Maschinendaten gestartet wird. Da in dieser Methode auch asynchrone Kommunikation benötigt werden darf, kann die Ausführung über mehrere Zyklen andauern bis der HRESULT Rückgabewert den Erfolg der Operation signalisiert. Um einen ausbleibenden Erfolg der Ausführung zu erkennen, empfiehlt es sich einen Timeout hinzuzufügen.

Initialisierung und Zyklusmethoden 4:

Laden von Maschinendaten

Ist das Laden von Maschinendaten aus einer Datei beim Starten der Maschine erwünscht, ist dies in der ParamInit() Methode nicht möglich. Implementieren Sie daher eine separate Prozedur, die im Anschluss an die erfolgreiche Ausführung der ParamInit() startet. Im Plastic Application Projekt wird dies durch die FB_BaseRuntime Klasse umgesetzt.

CoreCyclic() Methode

Die spezielle Abwandlung einer Cyclic() Methode als CoreCyclic() findet sich bei einzelnen Klassen wie beispielsweise FB_Axis wieder. Diese Methode bearbeitet besonders echtzeitkritische Aufgaben wie beispielsweise den Aufruf der Zyklusmethode einer TF8560 Achse. Da eine solche Achse auch Regelungsalgorithmen enthält, empfiehlt es sich die Zykluszeit möglichst klein zu wählen (Standard 2 ms).