今回の記事ではTwinCAT3 Event Lggerについて紹介します。TwinCAT3 Event Loggerを使用することによりSystemの状態をリアルタイムで記録でき情報追跡や診断するときに役に立ちます。
さ、はじめよう!
TwinCAT3 EventLogger?
TwinCAT 3 EventLoggerは、TwinCATと非TwinCAT部品間でMesssageするためのInterfaceであり、TwinCAT 3 EventLoggerは基本のインストールに含まれています。ちなみにTwinCAT 3 EventLoggerはライセンス料はかかりません。
System Requirment
Limitations
TwinCAT3 Event Loggerを使用するとき、以下のLimitがあります。
- 送信時の最大サイズは8kBです。
- リアルタイムでイベントを受信するためのインターフェースは、最大1024個のイベントを、それらが検索されるまで一時的に保存し、時間内に取得されない場合、イベントは失われます。
- TwinCAT 3 Event Loggerは、TwinCAT HMI(TF2xxx)に接続できますが、TwinCAT PLC HMI(TF18xxx)はそれらのイベンドを受信できません。
Concepts
TwinCAT 3 Event Loggerはイベントを送信する機能があり、そのEventはアラームでもよいし、Messageでもよいのです。イベントの送受信については、PLC および C++ の APIからも可能です。
下図ではEventsがEventClassessに管理されており、Messageの送信やアラームの確定、Raiseをします。
Events Type
Event自体は直接使用されず、その代わりにEvent派生タイプの “Message “や “Alarm “が使用される。そのEventの中にあるMessageもしくはAlarmにも以下の共通要素があります。
イベントは、メッセージとアラームに共通する以下の要素を提供します。
EventClass (GUID)
EventをGroupし管理するのはEventClassです。
Event-ID (UDINT)
各Eventを明確に識別するためにそのEvent-IDを使用します。
Text (String)
Eventの説明テキストになります。テキストを個別に適応させるために、実行時に引数を挿入することができます。
Source Info
Eventの発生源でその発生源は3つの要素で矯正されていますが、TwinCATのHelp Infoには推奨事項が記載されています。
Source-ID (INT)
TcCOMオブジェクトID。
Source Name (STRING)
TcCOMオブジェクト内のPath、そのPathはPLC のFunction Block パラメータとして使用される場合があります。
Source-GUID (GUID):
プロジェクトや(サブ)製品の識別に使用できる。
JSON Attribute (STRING)
EventのJSON 属性で今回の記事には使用しません。
Messages
Messageは基本的に状態を持たず、呼び出されたときに送信されるたびに登録された部品に配信します。
Identification
Messageは EventClass と Event-ID によって識別される。
Implementation1
最初にTwinCATでEventLoggerの使用例を説明していきます。
Add library
Reference>Add LibraryでEvent Loggerのライブラリを追加します。
Tc3_EventLoggerを検索しOkで進みます。
Event Class
次は現在TwinCATプロジェクトのEvent Classを編集するため、SYSTEM>Type Systemを開きます。
Event Classessを開きます。
Add New Event Class
Event Classessが空いてるところを右クリック>Newで新規Event Classessを定義しましょう。
Event Classesの編集画面が表示されました。
NewEventClassの項目を選択すると該当するEvent Classの編集画面が表示されます。
Name
Name FieldからEventの名前を設定します。
今回はEvent1という名前に変更します。
Display Text
Display Textは該当するEventの説明文字を定義できます。
severity
severity は該当するEventの重大度を設定できます。
Event1の重大度はWarningに設定していきます。
Event Group view
Eventsの項目をクリックするといまMyEventClassに定義されたEventを一覧できます。
Let’s Add One More!
Eventsの一覧画面から+ボタンで新規Eventの追加も可能です。
Done!
Event名はEvent2でDisplay Text=Event 2 is triggered、重大度はErrorです。
Check your Project Folder!
プロジェクトをコンパイルしSolution>右クリック>Open Folder in File ExplorerでプロジェクトFolderをCheckしましょう。
こちらはTwinCATプロジェクトのFolderです。あなたのプロジェクト名に命名されたFolderを開きましょう。
中にTSPROJ FileというFileがありNodepadで開いて確認します。
中に先程定義したEventにも記載されています。
Program
こちらのプログラムでFB_TcMessageのInstanceを定義しbInitEvent1をTrueならEvent1を初期化し、bInitEvent2をTrueならEvent2を初期化します。そしてbSendEvnet1がTrueいするとEvent Loggerに先程初期化したEventをLoggingするような簡単なプログラムです。
PROGRAM MAIN VAR bSendEvnet1:BOOL; bSendEvent2:BOOL; bInitEvent1:BOOL; bInitEvent2:BOOL; TcMessage:FB_TcMessage; END_VAR IF bInitEvent1 THEN bInitEvent1:=FALSE; TcMessage.CreateEx( stEventEntry:=TC_EVENTS.MyEventClass.Event1 ,ipSourceInfo:=0 ); END_IF IF bInitEvent2 THEN bInitEvent2:=FALSE; TcMessage.CreateEx( stEventEntry:=TC_EVENTS.MyEventClass.Event2 ,ipSourceInfo:=0 ); END_IF IF bSendEvnet1 THEN bSendEvnet1:=FALSE; TcMessage.Send( nTimeStamp:=0 ); END_IF |
Result
最初にEvent1を初期化します。
bSendEvent1をTrueにしMessageをLoggerに送信します。
Done!Error ListにEventメッセージが表示されました。
今度は別のEvent2をを初期化しTriggerしてみます。
Done!他のEventもTriggerされました。
Implementation2
次はTwinCATで使用したEventLoggerをWindowsのEvent Viewerにも表示できるように設定していきます。
Change the Window Registry Value
Registry Editorを起動します。
以下のPathにアクセスします。
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Beckhoff\TwinCAT3\EventLogger\WindowsEventLog |
TwinCATのEventLoggerをWindow Event Viewerにも表示するには、中にあるTypeSupported変数を修正する必要があります。
Value Dataを3に設定します。
これでOKです。
Restart your IPC
次はPCを再起動します。
Launch Event Viewer
今度はWindowsのEvent Viewerを起動します。
Event Viewer画面が表示しました。
Create Custom View
実際にTwinCATのEvent LoggerをWindowsと連携できるかを確認するため、新しいViewを追加します。Actions<Create Custom Viewします。
Custom Viewの作成画面が表示されます。
Event Level
Event Levelで該当するViewを表示するEventのレベルを設定します。
Event Sources
次は該当するViewのSoruceを設定します。
By SourceのところにDrop-Listがあり、その中に表示するEvent Sorucesを設定できます。
下にScrollするとTcEventLoggerV2という項目があります。TcEventLoggerV2をCheck入れましょう。
Save the View
最後はViewを保存すれば完成です。
Done!新しいWindow Viewが追加されました。
Result
TwinCAT Event LoggerからTriggerしたEventはWindow Viewerにも表示できるようになりました。