User Documentation

Programmerstellung
Systemhandbuch
2696780000/02/04.2020
39
Das DeviceService ruft vor jedem Zustandsübergang die Funktion test-
transition mit dem gewünschten Zustandsübergang auf. Damit wird ge-
prüft, ob es dem DeviceServiceItem möglich ist, seinen Zustand zu än-
dern. Die Funktion muss entweder true oder false zurückliefern. Ein ande-
rer Wert ist nicht erlaubt.
Danach wird vom DeviceService die Funktion dotransition mit dem durch-
zuführenden Zustandsübergang und einer Stepnummer aufgerufen. Jedes
DeviceServiceItem muss den Zustandsübergang durchführen. Tritt dabei
ein Fehler auf, muss das DeviceServiceItem die Lua Standardfunktion er-
ror aufrufen, um die Fehlermeldung damit beim DeviceService eintragen zu
können. Die Funktion dotransition darf keinen Rückgabewert besitzen.
Das DeviceService prüft auf Fehlermeldungen. Trat bei einem DeviceSer-
viceItem ein Fehler auf, wird das gesamte System niedergefahren. Je nach
Konfiguration fährt die Steuerung automatisch wieder in den Zustand Run
hoch.
Das DeviceService prüft zyklisch durch Aufruf der Funktion docheck, ob das
registrierte DeviceServiceItem korrekt arbeitet.
Der Statusreport ist eine Sammlung von Informationen von allen Program-
men, die auf der Steuerung zu einem bestimmten Zeitpunkt laufen. Wenn
ein Statusreport ausgelöst wird, werden alle DeviceServiceItem informiert,
damit sie ihre Informationen an den Statusreport anhängen können.
7.3.4 Statusreport
Der Statusreport ist eine Sammlung an Informationen der Software-Teilsys-
teme, die zu einem bestimmten Zeitpunkt auf einem Gerät laufen. Wird ein
Statusreport ausgelöst, werden alle DeviceServiceItem informiert, damit
diese Informationen zum Statusreport hinzufügen können.
7.3.5 Co-Routine Modell
DeviceServiceItem Callbacks werden als Lua Co-Routinen ausgeführt. Da-
durch ist es möglich, die Ausführung eines DeviceServiceItem durch Auf-
ruf von coroutine.yield() zu verzögern. Dies soll einer Verzögerungs-
schleife im Lua-Script oder Zwischenlösungen wie das Aufrufen von Sleep-
Funktionen mittels Bibliothek des Betriebssystems vorgezogen werden.
Andere Co-Routinen-Funktionen dürfen nicht verwendet werden.