Skip to main content

Die IEC-Anwendung hängt aufgrund von Semaphoren

Voraussetzunge

Sie haben ein Linux- oder Windows-basiertes Laufzeitsystem der Version >= SP20.

Fehlerbehebung

Wenn Sie beim Ausführen Ihrer IEC-Applikation oder bei Operationen mit Ihrem CODESYS-Laufzeitsystem Deadlocks oder ein Hängen von Semaphoren beobachten, kann dies durch Semphorensperren / Deadlocks verursacht worden sein.

Laufzeitsysteme ab SP20 (Linux und Windows) sind in der Lage, mit einer Diagnosefunktion für Semaphoren zu helfen. Mit dieser Diagnose kann die Semaphore oder die Interaktion zwischen verwandten Tasks, die auf der problematischen Semaphore arbeiten, gefunden werden.

Diese Funktion müssen Sie in der Konfigurationsdatei aktivieren:

[SysSem]
SemEnterDiagnosis=1

Wichtig

  • Dies kann schwerwiegende Auswirkungen auf die Leistung und das Zeitverhalten der Anwendung (und der Laufzeit) haben.

  • Nur für Diagnosezwecke verwenden

  • Nicht in Produktivsystemen verwenden

Beispiel 3. Die Ausgabe könnte folgendermaßen aussehen
_rtsl_img_iec_semaphore.png

In diesem Beispiel hält MainTask_1 eine Semaphore für einige Millisekunden, und MainTask versucht, auf diese Semaphore zuzugreifen.