FC_SemaphoreMeGive - Allgemeine Informationen
Typ |
Funktion |
Verfügbar ab: |
V1.0.7.0 |
Versionen: |
Aktuelle Version |
Freigabe einer Semaphore.
Die Funktion führt den Vorgang Give() für die angegebene Semaphore aus. Give() darf nur von der Task ausgeführt werden, die die Semaphore besitzt bzw. Take() ausgeführt hat.
Wenn andere Tasks an der Semaphore blockiert sind, wird die Task mit der höchsten Priorität aufgeweckt. Falls keine Tasks an der Semaphore warten, wechselt die Semaphore in den Zustand „Voll“.
Folglich findet in Fällen, in denen eine Task mit höherer Priorität (Task2) als die Task, die Give() aufruft (Task1), an der Semaphore wartet, ein Taskwechsel statt. Die Ausführung der Task1 wird pausiert und die Ausführung der Task2 fortgesetzt.
Für Einschränkungen bei der Verwendung siehe die Hinweise zur Verwendung der Funktion „SemaphoreMutualExclusion" Function.
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_etDiag |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung. |
|
q_etDiagExt |
POU-spezifischer, diagnosebezogener Ausgang. q_etDiag = ET_Diag.Ok -> Statusmeldung q_etDiag <> ET_Diag.Ok -> Diagnosemeldung |
Ein-/Ausgang |
Datentyp |
Beschreibung |
---|---|---|
iq_stSemMe |
Struktur der freizugebenden Semaphore |
Datentyp |
Beschreibung |
---|---|
BOOL |
TRUE: Die Semaphore wurde erfolgreich freigegeben. FALSE: Die Semaphore wurde nicht freigegeben. |
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
0 |
OK |
|
InputParameterInvalid |
266 |
SemaphoreMe ist nicht initialisiert. |
|
UnexpectedProgramBehavior |
271 |
Freigabe der SemaphoreMe fehlgeschlagen. |
Enumerationsname: |
Ok |
Enumerationswert: |
0 |
Beschreibung: |
OK |
Die Semaphore wurde erfolgreich freigegeben.
Enumerationsname: |
SemaphoreMeGiveFailed |
Enumerationswert: |
271 |
Beschreibung: |
Freigabe der SemaphoreMe fehlgeschlagen. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Es ist ein Fehler in der internen Abarbeitung aufgetreten. |
Bitte informieren Sie das Supportteam über diesen Fehler. |
Enumerationsname: |
SemaphoreMeNotInitialized |
Enumerationswert: |
266 |
Beschreibung: |
SemaphoreMe ist nicht initialisiert. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Die Semaphore ist nicht initialisiert. |
Übergeben Sie am Eingang FC_SemaphoreMeCreate dieselbe Semaphore, die beim Aufruf von iq_stSemMe verwendet wurde. |