-

MUTEX

TypFunktionsbaustein
BeschreibungDer objektorientierte Funktionsbaustein MUTEX wird verwendet, um den Zugriff auf gemeinsame Ressourcen (Shared Resources) über mehrere Tasks hinweg zu verwalten. Er wird verwendet, um den Zugang zu diesen gemeinsamen Ressourcen gegenseitig auszuschließen. Der FB verhindert Race Conditions, Datenbeschädigungen oder unerwartetes Verhalten, wenn mehrere Tasks gleichzeitig auf gemeinsame Ressourcen zugreifen.

So funktioniert ein Mutex

Der Funktionsbaustein bietet die folgenden Methoden, die für die Interaktion mit einem Mutex verwendet werden:

  • LOCK

    Sperrt den Mutex (wird Besitzer des Mutex). Wenn der Mutex bereits von einem anderen Task gesperrt ist, wartet der Task (wird blockiert), bis er wieder verfügbar ist (d.h. von einem anderen Task entsperrt wurde).

    Hinweis
    Im Falle einer Mutex-Sperre kann ein Task-Watchdog ausgelöst werden. Es wird daher empfohlen, eine TRYLOCK-Methode anstelle einer LOCK-Methode zu verwenden.

  • UNLOCK

    Entsperrt den Mutex, so dass der nächste wartende Task der Besitzer des Mutex werden kann (um ihn zu sperren).

    Muss immer nach einem erfolgreichen TRYLOCK oder LOCK aufgerufen werden (Rückgabewert TRUE).

    Hinweis
    Nur der Task, der den Mutex gesperrt hat, kann ihn wieder entsperren.

  • TRYLOCK

    Versucht, den Mutex zu sperren (um Besitzer des Mutex zu werden). Er prüft, ob der Mutex verfügbar ist:

    • Wenn ja, wird der Mutex gesperrt und TRUE zurückgegeben.
    • Wenn nein, wird sofort FALSE zurückgegeben, ohne zu warten.
  • IS_ENTERED

    Überprüft, ob der aktuelle Task die Sperre für den angegebenen Mutex hält.

    • TRUE = Task hat den Mutex gesperrt
    • FALSE = Task hat den Mutex nicht gesperrt.

Weitere Infos
Weitere Einzelheiten zu Mutexe finden Sie im Abschnitt "Gleichzeitiger Zugriff auf gemeinsame Daten mit Mutex und Semaphor schützen" im Thema "Globale Funktionsbausteine in PLCnext Engineer".

Weitere Infos
Wie man Methoden von Funktionsbausteinen verwendet, erfahren Sie im Thema "Methoden von FBs in PLCnext Engineer".