Skip to main content

Mecanismo de eventos

El sistema de tiempo de ejecución utiliza "eventos" para comunicar eventos como el inicio/parada/reinicio del PLC, la aparición de una excepción, etc. Con el "mecanismo de eventos", es posible recibir un mensaje tan pronto como se haya activado un evento seleccionado.

Se reenvían los siguientes eventos relacionados con la aplicación:

  • EVT_StartDone

  • EVT_StopDone

  • EVT_ResetDone

  • EVT_ExitDone

  • EVT_AllBootprojectsLoaded

  • EVT_CmpApp_Exception

  • EVT_StateChanged

  • EVT_CmpDevice_InteractiveLogin

  • EVT_CmpMgr_LicenseState

el entregado uds_events.py muestra proporciona la CODESYS_EventHandler clase que implementa el registro a un evento.

Esta clase necesita la eventid así como el componentid of del evento a registrar, que se almacenan en el liEvents lista:

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)
}

Además, se debe especificar una función de devolución de llamada que se llamará cuando ocurra el evento:

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

Dentro Main, se registra un evento de la siguiente manera y se especifica la función de devolución de llamada necesaria:

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

Ahora la función de devolución de llamada callbackfunction_start se llama tan pronto como el sistema de tiempo de ejecución ha cambiado a Inicio.

El mecanismo subyacente se muestra en la siguiente figura:

_rtslex_img_eventmechanism.png

Uso de la interfaz solo como miembro de Linux codesysuser grupo de usuario

Separación de procesos