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

  • SysGraphic_EVT_OpenKeyboard

  • SysGraphic_EVT_CloseKeyboard

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),
    "SysGraphic_EVT_OpenKeyboard" : (0x00000142, 0x00010000 + 1),
    "SysGraphic_EVT_CloseKeyboard" : (0x00000142, 0x00010000 + 2,
}

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.

À l'aide de l'exemple fourni qui enregistre le EVT_CmpDevice_InteractiveLogin événement, un clin d'œil peut être déclenché dans le CODESYS boîte de dialogue de développement et l'événement correspondant sont transmis à l'exemple de script. Si cet événement n'est pas enregistré, le message d'erreur habituel « PLC Wink failed » s'affiche

Quand le EVT_CmpDevice_InteractiveLogin L'événement est enregistré comme dans l'exemple, le signal du clin d'œil est transmis au script Python et les utilisateurs peuvent implémenter leurs propres fonctionnalités pour celui-ci. L'exemple affiche simplement le message « Un événement PLC Wink s'est produit ».

Le CmpApp_EVT_StateChanged l'événement peut être utilisé pour implémenter une LED d'état. Cet événement envoie un message contenant le nom et l'état de l'application (RUN), STOP, etc.). L'exemple fourni affiche le nom de l'application et l'état actuel de l'application. « Demande : État de la demande : STOP »

Important

Cet événement n'est envoyé qu'en cas de changement de statut. Par conséquent, lorsque l'exemple de script Python est démarré après l'application PLC, l'état initial est inconnu.

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