Dieser Funktionsblock realisiert eine zählende Semaphore. Er basiert auf die Funktion SysCpuTestAndSet des Laufzeitsystems. Ein Funktionsblock vom Typ SEMA wird für die Verwaltung von begrenzten Ressourcen verwendet. Der Zähler der Semaphore symbolisiert die Anzahl verfügbarer Ressourcen. Liegt keine besondere Parametrisierung vor, dann steht Semaphorenzähler auf 1. Auf die der Semaphore zugewiesenen Ressourcen wird über die Request Methode zugegriffen. Dies funktioniert so lange der Zähler verschieden von Null zum Zeitpunkt des Request Aufrufs ist. Der Zähler wird dann um eins verringert. Mit der Release Methode wird die zuvor aufgerufene Ressource wird freigegeben und der Zähler um eins erhöht. Mittels Aufruf der Preset Methode wird der Zähler der Semaphore entsprechend den Anforderungen initialisiert.
Hinweis
Wenn die Methode erfolgreich ausgeführt wurde, dann wird TRUE zurückgegeben, sonst wird FALSE zurückgegeben. Eine Ressource kann demzufolge nur dann verwendet werden, wenn der Aufruf von REQUEST den Wert TRUE zurückgibt.
Request (Methode, Anforderung)
|
xOk |
BOOL |
TRUE => Anforderung erfolgreich |
Release (Methode, Freigabe)
|
xOk |
BOOL |
TRUE => Freigabe erfolgreich |
Preset (Voreinstellung)
|
Voreinstellung |
CAA.COUNT |
Initialisierungswert von SEMA |