Skip to main content

Mécanisme d'événement

Le système d'exécution utilise des "événements" pour communiquer des événements tels que le démarrage/l'arrêt/la réinitialisation de l'automate, l'occurrence d'une exception, etc. Avec le "mécanisme événementiel", il est possible de recevoir un message dès qu'un événement sélectionné a été déclenché.

Les événements suivants liés à l'application sont transmis :

  • EVT_StartDone

  • EVT_StopDone

  • EVT_ResetDone

  • EVT_ExitDone

  • EVT_AllBootprojectsLoaded

  • EVT_CmpApp_Exception

  • EVT_StateChanged

  • EVT_CmpDevice_InteractiveLogin

  • EVT_CmpMgr_LicenseState

Le livré uds_events.py l'échantillon fournit le CODESYS_EventHandler classe qui implémente l'inscription à un événement.

Cette classe a besoin de eventid aussi bien que componentid of de l'événement à enregistrer, qui sont stockés dans le liEvents liste:

liEvents = {
    "CmpApp_EVT_StartDone" : (0x00000002, 0x10000 + 2),
    "CmpApp_EVT_StopDone" : (0x00000002, 0x10000 + 4),
    "CmpApp_EVT_ResetDone" : (0x00000002, 0x10000 + 6),
    "CmpApp_EVT_ExitDone" : (0x00000002, 0x10000 +  15),
    "CmpApp_EVT_AllBootprojectsLoaded" : (0x00000002, 0x10000 +  25),
    "CmpApp_EVT_CmpApp_Exception" : (0x00000002, 0x00080000 + 28),
    "CmpApp_EVT_StateChanged" : (0x00000002,0x10000 + 43),
    "CmpDevice_EVT_CmpDevice_InteractiveLogin" : (0x0000000E, 0x00010000+ 1),
    "CmpMgr_EVT_LicenseState" : (0x00000001, 0x00010000 + 9)
}

De plus, une fonction de rappel doit être spécifiée qui sera appelée lorsque l'événement se produit :

def callbackfunction_start(componentid, eventid):
    print("Start event occured")

Dans Main, un événement est enregistré comme suit et la fonction de rappel nécessaire est spécifiée :

componentid, eventid = liEvents["CmpApp_EVT_StartDone"]
myEventHandler_Start = CODESYS_EventHandler(componentid, eventid, callbackfunction_start)
myEventHandler_Start.start()

Maintenant la fonction de rappel callbackfunction_start est appelée dès que le système d'exécution est passé à Start.

Le mécanisme sous-jacent est illustré dans la figure suivante :

_rtslex_img_eventmechanism.png

Utilisation de l'interface uniquement en tant que membre de Linux codesysuser groupe d'utilisateurs

Oui

Séparation de processus

Oui