Skip to main content

イベントメカニズム

ランタイムシステムは、「イベント」を使用して、PLCの開始/停止/リセット、例外の発生などのイベントを通信します。 「イベントメカニズム」を使用すると、選択したイベントがトリガーされるとすぐにメッセージを受信することができます。

次のアプリケーション関連のイベントが転送されます。

  • EVT_StartDone

  • EVT_StopDone

  • EVT_ResetDone

  • EVT_ExitDone

  • EVT_AllBootprojectsLoaded

  • EVT_CmpApp_Exception

  • EVT_StateChanged

  • EVT_CmpDevice_InteractiveLogin

  • EVT_CmpMgr_LicenseState

配信 uds_events.py サンプルは CODESYS_EventHandler イベントへの登録を実装するクラス。

このクラスには eventid だけでなく、 componentid of 登録するイベントの liEvents リスト:

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

さらに、イベントが発生したときに呼び出されるコールバック関数を指定する必要があります。

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

以内に Main、イベントは次のように登録され、必要なコールバック関数が指定されます。

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

今コールバック関数 callbackfunction_start ランタイムシステムがStartに変更されるとすぐに呼び出されます。

基になるメカニズムを次の図に示します。

_rtslex_img_eventmechanism.png

Linuxのメンバーとしてのみインターフェースを使用する codesysuser ユーザー・グループ

はい

プロセス分離

はい