Skip to main content

Externe Ereignistask

Über den Mechanismus „Externe Ereignistask“ kann eine Task über ein externes Ereignis (Event) angestoßen werden. Zur Prozesstrennung werden „Unix Domain Sockets“ verwendet. Entsprechend dem vom Benutzer gewählten Namen für das externe Ereignis liegt auf dem Zielsystem die dazugehörige Socket-Datei in:

/var/run/codesysextension/eventtasks/<EventName>.sock

Anlegen einer Task vom Typ „Externes Ereignis“

  1. Externes Ereignis anlegen

    Selektieren Sie im Gerätebaum Task Configuration und wählen Sie im Kontextmenü den Befehl Externe Ereignisse verwalten (1). Fügen Sie im Dialog Externe Ereignisse verwalten (2) das neue Event ein. Der Name darf keine Leerzeichen oder Sonderzeichen enthalten.

    _rtslext_img_add_event.png
    _rtslext_img_add_event2.png
  2. Konfigurieren Sie eine Task als neue External Event Task:

    Wählen Sie in der Taskkonfiguration eine Task aus. Wählen Sie in der Auswahlliste bei Typ den neu verfügbaren Tasktyp Extern (3). Ordnen Sie der Task das gewünschte Externe Ereignis (4) zu.

    _rtslext_img_taskconfiguration1.png
    _rtslex_img_taskconfiguration2.png

Das mitgelieferte Beispielprojekt ExternalEventTask.project enthält die oben beschriebene Konfiguration. Die Task ist dem externen Event MYEVENT1 zugeordnet, die Datei /var/run/codesysextension/eventtasks/MYEVENT1.sock ist auf dem System angelegt.

Mit dem Kommandozeilentool „socat“ können Sie sehr einfach diese Schnittstelle bedienen, beispielsweise mit folgendem Befehl:

$ socat - UNIX-CLIENT:/var/run/codesysextension/eventtasks/MYEVENT1.sock

Damit wird eine Socket-Verbindung im Terminalfenster aufgebaut und Sie können einzelne Nachrichten an den Socket schicken.

Mit jeder Nachricht wird die in der SPS konfigurierte Task getriggert. Der Inhalt der Nachricht ist für das Auslösen des externen Ereignisses nicht relevant. Als Nachrichtenlänge ist 1 Byte spezifiziert.

Verwendung der Schnittstelle nur als Mitglied der Linux-Benutzergruppe codesysuser

JA

Prozesstrennung

JA