FC_SemaphoreMeGive

 

FC_SemaphoreMeGive - Allgemeine Informationen

Übersicht

Typ

Funktion

Verfügbar ab:

V1.0.7.0

Versionen:

Aktuelle Version

Aufgabe

Freigabe einer Semaphore.

Beschreibung

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.

Schnittstelle

Ausgang

Datentyp

Beschreibung

q_etDiag

GD.ET_Diag

Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose.

Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung.

q_etDiagExt

ET_DiagExt

POU-spezifischer, diagnosebezogener Ausgang.

q_etDiag = ET_Diag.Ok -> Statusmeldung

q_etDiag <> ET_Diag.Ok -> Diagnosemeldung

Ein-/Ausgang

Datentyp

Beschreibung

iq_stSemMe

ST_SemaphoreMe

Struktur der freizugebenden Semaphore

Rückgabewert

Datentyp

Beschreibung

BOOL

TRUE: Die Semaphore wurde erfolgreich freigegeben.

FALSE: Die Semaphore wurde nicht freigegeben.

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

OK

Ok

0

OK

InputParameterInvalid

SemaphoreMeNotInitialized

266

SemaphoreMe ist nicht initialisiert.

UnexpectedProgramBehavior

SemaphoreMeGiveFailed

271

Freigabe der SemaphoreMe fehlgeschlagen.

Ok

Enumerationsname:

Ok

Enumerationswert:

0

Beschreibung:

OK

Die Semaphore wurde erfolgreich freigegeben.

SemaphoreMeGiveFailed

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.

SemaphoreMeNotInitialized

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.