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 :

Utilisation de l'interface uniquement en tant que membre de Linux | Oui |
Séparation de processus | Oui |