こちらの記事はOmron NX1 CPUとMurrelektronik EtherCAT IO-LINKを接続するためのガイドラインになります。IO-LINK デバイスはKeyenceのLR-TB2000・OMRONのE3AS-HL500MNだけですが、M3urreletronik IO-Link MasterがPin2・Pin4の個別設定など細かいパラメータも紹介します。
さ、始めよう!

Reference Link
Thanks!
この記事はMurrelektronikトルコからの機器提供のおかけで作られました。本当にありがとうございます。
Murrelektronikは、オートメーションソリューションの開発、製造、販売におけるグローバル企業で、 電源と制御、インターフェース、ケーブル/コネクタ、IOシステムの4つのコア分野に分けられます。Murrelektronikの高品質で革新的な製品を常に提供し、お客様のアプリケーションをより良い提案をしています。
Office
Murrelektronik San. ve Tic Ltd Şti
Perpa Ticaret Merkezi A Blok Kat 11 No.1403
34384 Okmeydani/Istanbul/TR
Telephone
+90 212 2222298
E-Posta: info@murrelektronik.com.tr
Implementation
Download ESI File
下記のLinkからIMPACT67 Pro EC DIO8 IOL8 M12L 5PのESI FileをDownloadします。
Omron Side
EtherCAT
EtherCATネットワークを構築するため、EtherCAT を開きます。
EtherCATのネットワーク構築画面が表示されます。
Install ESI
ESI FileをSysmac Studio にインストールするため、Master>右クリック>Display ESI Libraryをクリックします。
Sysmac Studioにインストールされたライブラリの一覧が表示され、Install(File)で新たなESI Fileを追加しましょう。
先程MurreletronikのHPからDownloadしたESI Fileを開きましょう。
Yesで進みます。
Done!
Sysmac Studio右側にあるToolboxにMurreletronikの製品が表示されるようになりました。
Add Murreletronik Devices
MurreletronikのIOLINK MasterをEtherCAT ネットワークに追加するには、右クリック>Insertしてください。
Done!MurreletronikのEtherCAT IO-LINK Masterが追加されました。
Module Configuration
次はMurreletronikのPort設定を変更するため>Murreletronikのデバイスを選び>Edit Module Configurationをクリックします。
Portの設定画面に変わり、Default上ですべてが無効になっています。
Port X3
Port X3はキーエンスのLR-TB2000と接続しています。

Port3 X3はキーエンスのLRT2000と接続していますので、右側にあるIOL_2/0_I/O BytesをIO-Link Port X3に引っばってください。
Done!いまIO-Link Port X3が2Bytes入力占有したIO-Link Portとして設定されました。
Device NameのFieldから変わりやすい名前に変更してください。そのDeviec NameはのちほどのIO Mappingにある自動変数生成と関係ありますので。
Port X5
Port X5はデジタル出力のPin2と接続しています。

Port X5はデジタル出力と接続されていますので、ToolboxからDigital OutをIO-Link Port X5に引っ張って追加しましょう。
Done!いまIO-Link Port X5はデジタル出力Portとして設定されました。
Port X6
Port X6はデジタル入力のPin2・Pin4両方とも接続しています。

Port X6はデジタル入力と接続されていますので、ToolboxからDigital InputをIO-Link Port X6に引っ張って追加しましょう。
Done!いまIO-Link Port X6はデジタル入力Portとして設定されました。
Port X7
Port X7はOmronのIO Link デバイス E3AD-HL500MNと接続しています。

Port X7はオムロンのE3AS-HL500LMNと接続されていますので、ToolboxからIOL_4/4_I/O-BytesをIO-Link Port X7に引っ張って追加しましょう。
Done!いまIO-Link Port X7は4Bytes入出力占有したIO-LINK Portとして設定されました。
Settings Parameters
次はMurreletronik本体の設定を行います。
Setting Parameters>Editing Setting Parametersをクリックしてください。
Murreletronik 本体のパラメータ一覧が表示されます。
Port X5 Setting
Port X5のPin2がデジタル出力と接続されていますが、Default上ではPin2は不使用になっています。なので、0x2150:04 Configuration Port X5/Digital Mode IQ Pinの項目にDigital Outputとして設定してあげてください。そうするとPin2がデジタル出力になります。
Port X6 Setting
Port6のPin2もデジタル入力と接続されていますが、Default上ではPin2は不使用なので、0x2160:05 Configuration Port X6/Digital Mode IQ Pinの項目にDigital Input NO Normal Openとして設定してあげてください。そうするとPin2がデジタル入力になります。
I/O Mapping
Hardware Configurationが作成完了したので、次はI/O Mappingを行います。
こちらはSysmac StudioのI/O Mapping画面になります。
EtherCAT Network Configuration>Node3(今回記事で使用するMurreletronik EtherCAT IO-LINK Master)を展開し、RxPDO や TxPDOのProcess Dataをすべて選び>右クリック>Create Device Variable with Prefixで変数を作成します。
Prefix機能を使用することで、変数を作成するときある程度ルールを一致させることができます。例えば今回ではPrefixをE002_に設定すると、Sysmac Studioから生成された変数名はすべてE002_から始めることになります。
Done!変数が生成されました。
先と同じの操作でIOLINK PortのProcess Dataにも変数を自動作成しましょう。
Program
これからプログラムを作成します。Omronの記事は基本的にはラダーで頑張ります。
Add Program
POUs>Programs>Add>Ladderで新規のラダープログラムを追加します。
Done!新しいプログラムが追加されました。
Sysmac Studioは自動的にSection0も追加してくれます。
Task Setting
新しいプログラムを追加したので、Task Settingsからこのプログラムの周期を実行できるように変更します。
Program Assignment Settingsの設定画面から+ボタンをクリックします。
新しい列が追加され、先程新規作成されたProgram1を選びましょう。
Done!
Data Type
次は構造体を定義します。
MurrStatus
こちらはMurreletronikのPort状態をまとめる構造体です。
E3AS-HL500MNStatus
こちらはOmronのIO-Link Sensor E3A3-HL500MNの情報をまとめた構造体です。
UNION
次は共同体を定義します。
un_SINbit/un_w16Bit
こちらはプログラムが少し楽にするため、Byte<‐‐>Bool配列の共同体とWORD<‐‐>Bool配列の共同体を定義しました。
Main
Rung0,1 1s Pulse TImer
Rung0,1はIEC Timerを使用し1秒のON/OFF繰り返しを生成します。
Rung2 Port3 Status
Rung2はMurrelektronik IO-LINK Masterで受信したPort状態データからPortがIOLINK通信状態が正常なのかを判断します。
Manualの説明によると、State of IO-Link Port nのnはModuleの位置を示し、Sysmac Studio変数を生成したときは0004=Port3になります。
なので、E002_TxPDO_Mapping_Of_Status_Dat_Subindex_004_F100_04はPort3の診断情報であり、TO_BYTE関数を使用しUSINTからBYTEに変換しBYTE#03とAND関数で現在のPort情報を取ります。

現在のIO-Link Port状態が0x03である場合、そのPortとIO-Link デバイスが問題なく通信してることを示していますので、ModeSIO_IOLINKEnableをTrueにします。
それ以外の場合はPortのIO Link通信状態がエラー発生しるかもしくはIOLINKとして設定されていないかであることはわかります。

Manualにより、Bit4から7までは該当するPortのエラーコードになります。なのでAND関数と16#F0と演算し0でなければPortがエラーが発生してることがわかります。

Rung3 Error Code‐1
Rung3はエラーコードによって適切な変数にTrue/Falseさせます。
エラーコードは下図のようになります。

Rung4 Error Code‐2
Rung4はエラーコードによって適切な変数にTrue/Falseさせます。
エラーコードは下図のようになります。

Rung5 Get LR-TB2000 Data
Rung5ではIO-LINK経由で取ったデータをBYTEに変換しBYTE配列に格納させ、AryByteTo関数を使用しLRT2000_Distanceに移動します。
Rung6 Port7 Status
Rung6はMurrelektronik IO-LINK Masterで受信したPort状態データからPortがIOLINK通信状態が正常なのかを判断します。Rung2と同じロジックなのでここでは詳しく説明しません。
Rung7 Error Code-1
Rung7はエラーコードによって適切な変数にTrue/Falseさせます。
Rung8 Error Code-2
Rung8はエラーコードによって適切な変数にTrue/Falseさせます。
Rung9 Get E3ASHL500MN Data
Rung9ではIO-LINK経由で取ったデータをBYTEに変換しBYTE配列に格納させ、AryByteTo関数を使用しE3ASHL500MN_Disanceに移動します。
Rung10 Get E3ASHL500MN Data
Rung10はE3ASHL500MNの2 Byte目の受光量になります。
Rung11 Get E3ASHL500MN Data
Rung11はE3ASHL500MNの3 Byte目のデバイス状態になります。
Rung12 Digital Input/Digital Output
Rung12はPort6のデジタル入力信号によってランプを常時ONするか、もしくは1秒ON/OFFの繰り返しにするかを分岐させます。
下図のように、Port X6のPin4は12 ビット目のデータでPin2は13 ビット目のデータになります。

そして出力Port X5 Pin4の出力は10ビット目でPort X5 Pin2は11ビット目になります。

Rung13 Move Data
Rung13はPort5のデータBufferをProcess Dataに移動します。
Online
プログラム作成が終わったら次はプロジェクトをCPUに転送します。
Onlineをクリックしてください。
Download
To ControllerをクリックしプロジェクトをCPUにDownloadします。
Executeで進みます。
Yesで進みます。
しばらくまちます…
YesでCPUをRun Modeに切り替えます。
Done!
Write Slave Node Address
MurreletronikにSlave Node Addressを書き込む必要があり、EtherCAT>Master>Write Slave Node Addressをクリックしてください。
Slave Node Address Writingの操作画面が表示されます。
Set ValueのFieldをクリックします。
MurreletronikのIO-LINK Masterに設定したいNode Addressを入力します。
これでOKです。
WriteでNode Addressを書き込みます。
Writeで進みます。
Done!
いまMurreletronikのIO-LINK MasterのPresent valueも3になりました。
Result
Rung2からげ現在Port3のIO-LINK通信状態は正常であることがわかります。
同じく、Rung6から現在Port7のIO-LINK通信状態は正常であることがわかります。
Rung5からキーエンスのLRT2000の測定距離値を確認できます。
Rung9からオムロンのE3A3-HL500MNの測定距離値を確認できます。
Rung11からオムロンのE3A3-HL500MNの状態を確認できます。
こちらの動画からMurreletronikのデジタル入出力の操作動画を確認できます。OMRON .Connect with Murr EtherCAT IOLINK Master DIO Mode
こちらの動画からMurreletronikのIO-LINKデバイスの操作動画を確認できます。
OMRON .Connect with Murr EtherCAT IOLINK Master and OMRON IOLINK Sensor