Meccanismo di eventi
Il sistema di runtime utilizza gli "eventi" per comunicare eventi come l'avvio/arresto/ripristino del PLC, il verificarsi di un'eccezione e così via. Con il "meccanismo degli eventi" è possibile ricevere un messaggio non appena viene attivato un evento selezionato.
Vengono inoltrati i seguenti eventi relativi all'applicazione:
EVT_StartDone
EVT_StopDone
EVT_ResetDone
EVT_ExitDone
EVT_AllBootprojectsLoaded
EVT_CmpApp_Exception
EVT_StateChanged
EVT_CmpDevice_InteractiveLogin
EVT_CmpMgr_LicenseState
Il consegnato uds_events.py
campione fornisce il CODESYS_EventHandler
classe che implementa la registrazione a un evento.
Questa classe ha bisogno del eventid
così come il componentid of
dell'evento da registrare, che vengono archiviati nel liEvents
elenco:
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) }
Inoltre, deve essere specificata una funzione di callback che verrà chiamata quando si verifica l'evento:
def callbackfunction_start(componentid, eventid): print("Start event occured")
Entro Main
, un evento viene registrato come segue e viene specificata la funzione di callback necessaria:
componentid, eventid = liEvents["CmpApp_EVT_StartDone"] myEventHandler_Start = CODESYS_EventHandler(componentid, eventid, callbackfunction_start) myEventHandler_Start.start()
Ora la funzione di richiamata callbackfunction_start
viene chiamato non appena il sistema di runtime passa a Start.
Il meccanismo sottostante è mostrato nella figura seguente:

Utilizzo dell'interfaccia solo come membro di Linux | sì |
Separazione del processo | sì |