こちらの記事はBeckhoff TwinCAT3とMurrelektronik IO-LINKを接続するためのガイドラインになります。EtherCATはBeckhoffのC6920で、IO-LINK デバイスはKeyenceのLR-TB2000・OMRONのE3AS-HL500MNとEUROSwitchのLevel Sernsorになります。
さ、始めよう!
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
About IO-Link
IO-Linkは、あらゆる種類の信号を素早く簡単に統合できる理想的なシステムで、アナログ、デジタル I/O または IO-Link、そして異なるメーカーのものにも接続するだけですぐに立ち上げられるのがIO-LINKです。
Murrelektroniは制御盤を使用せずに分散化された接続を構築することが目標で、IO-Linkを使用してControllerをデバイスレベルまでネットワーク化し、必要に応じてクラウドに直接接続してもできるように目指しています。
事前に設定済みのIO-Linkデバイスであれば、IODDをインポートしたり、設定ツールを使用したりすることなく素早く機器を立ち上げます。
そしてIO-Link は、センサとアクチュエータのインテリジェントデバイスをオートメーションシステムに接続するための標準化されたプロトコルです。
通信は IO-Link マスタと 1 つ以上の IO- Link デバイスの間で行われます。マスタモジュールには 1 つ以上のポートがあり、各ポートに 1 つのデバイスを接続できます。IO-Link はPoint to Point通信システムであり、フィールドバスではありません。
そして、IO-Link マスタモジュールはコントローラと IO- Link システム間のインタフェースです。
Compact IO-Link master With MURRelektronik
8つの多機能マスターポートを備えたコンパクトな IO-Link Masterは、IO-Link デバイスを接続する最も簡単・便利・素早いアプローチです。そしてIP67 準拠のモジュールは、複雑な配線と高価なターミナルボックスを置き換えることができます。
Flexible DIO-Link Ports
8つの多機能ポートにより、あらゆる種類の信号を接続でき、接続された機器には1ポートあたり最大4Aを供給できます。(または1Pin最大2Aを供給できます)
各Portはデジタル入力・デジタル出力またはIO−LINK Portとして設定できます。
(また、これらのモジュールをIO-Linkハブ・アナログコンバータと組み合わせることで、ハードウェアコストを最小限に抑えながら柔軟性を高めることができます。)
Protocol Support In OT Level
モジュールには2つのM12 D-Coded 100Mbpsポートがついており、型式によって、現場で最もシェア高いIndustrial Protocolのどれかに(PROFINET・Ethernet/IP・EtherCAT)対応できます。そしてすべてのIO-Link MasterモジュールにもOPC UA Serverが内蔵しており、3rd Partyからのアクセスも可能です。
Ready for IIOT
IO-Link Masterに統合されたSMI(Standardized Master Interface)により、OPC UA、JSON REST API、MQTTなどのIIoTプロトコル経由でデータにアクセスできます。
モジュールの設定は、Webserver・、ツール、OPC UAサーバー、JSON REST API、MQTT経由で行うことができます。またそれらのIIOT Protocolを利用することにより、、すぐにデータの可視化ができます。
IMPACT67 Pro EC DIO8 IOL8 M12L 5P
今回の記事で使用するIMPACT67 Pro EC DIO8 IOL8 M12L 5Pは保護等級IP67のプラスチックハウジングに収められたEtherCatデバイスで、EtherCATへの接続には2つのM12ポート(Dコード)になります。
EtherCATはAoE、 EoE、 FoEに対応しています。
Layout
こちらは実際IO-Link MasterのLayoutになります。
X0..X7
X0からX7は設定可能なIO-LIINK・INPUT・OUTPUT Portで、M12メス A-Coded Connector になります。
そして各入出力に個別のステータス表示が割り当てられています。下図では0のLEDは該当するPortのピン 4 に相当し、1の LED はピン 2 の状態を示しています。こちらはPin2のLEDの意味です。
こちらはPin4のLEDの意味です。
XD1/XD2
XD1・XD2はモジュールの電源IN/OUT Portで、M12 L-Codeを使用しています。
XF1/XF2
XF1/XF2はEtherCATのネットワークPortで、使用するのはM12メス D-Code Connectorになります。
LED
モジュールにいくつかのLEDがあり、現在の運転状態・電源供給などの情報を示しています。
RUN
RUN LEDは現在モジュールのEtherCAT State Machine状態を示しています。
ERR
ERR LEDは現在モジュールの故障状態を示しています。
L/A1 L/A2
こちらのLEDはEtherCATネットワークの状態を示しています。
US/UA
こちらのLEDはモジュールのSensor電源・Actuator電源を示しています。US=Sensor電源、UA=Actuator電源になります。
DIP Switch
MurrelektronikのIO-LINK MasterではDIPスイッチがあり、モジュールのIIOT機能を設定できます。
Process Data Mapping
IO-Link
Process data assignment for digital channels or IO-Link device to pin 4.
If a slot is set to Digital IN or Digital OUT, one byte of process data is al- ways assigned to this slot.
DI
Process data assignment for digital inputs to pin 4 and pin 2
Pin4 (C/Q) + Pin2 (I/Q) – Port-based data layout
Pin4 (C/Q) + Pin2 (I/Q) – Pin-based data layout
DO
Process data assignment for digital outputs to pin 4 and pin 2.
PD (I/Q Pin2 + C/Q Pin4)– Port-based data layout
PD (I/Q Pin2 + C/Q Pin4) – Pin-based data layout
Implementation
Install IO-Link Device Tool
次は下記のLinkからIO-Link Device ToolのSetup FileをDownloadしインストールしましょう。
セットアップ言語を選ぶ>Okで進みます。
ライセンス同意し、Next>で進みます。
InstallするPathを設定しNext>で進みます。
Next>で進みます。
Installで始めましょう。
しばらくまちます…
場合によってFirewall Linkを変更する必要があります。
Done!
Murrelektronik IO-LINK Device Toolがインストールされました。
OMRON e3as-hl500lmn
こちらは今回使用するIO-LINKデバイスe3as-hl500lmnになります。
Process Input Dataは4 Bytes・Process Output Dataは1 Byteになります。
こちらはOMRON E3A3-HL500lMNのProcess Dataになります。
Keyence LR-TB2000
こちらは今回使用するIO-LINKデバイスLR-TB2000になります。
デバイスには2BytesのProcess Inputがあります。
今回使用するのは2Bytesの距離測定になります。
Murrelektronik Side
DIP Switch
今回は914に設定し、Web server・JSON・OPC UA ・MQTTを有効にします。
TwinCAT3 Side
Download ESI File
下記のLinkからIMPACT67 Pro EC DIO8 IOL8 M12L 5PのESI FileをDownloadします。
Install ESI File
ESI Fileを下記のPathに貼り付けてください。
C:\TwinCAT\3.1\Config\Io\EtherCAT
TwinCAT>EtherCAT Devices>Reload Device DescriptionでESI Fileを再ロードします。
Add New Project
File>New>Projectで新規プロジェクトを作成します。
TwinCAT XAE Project(XML Format)を選択し、Okで進みます。
Done!新しいプロジェクトを作成しました。
Add EtherCAT Master
TwinCATプロジェクトにEtherCAT Masterを追加するため、I/O>Devices>Add New Itemします。
EtherCAT>EtherCAT Masterを選び、Okで進みます。
Done!EtherCAT Masterが追加されました。
Configure Network Adapter
EtherCAT ネットワークとして使用するNetwork Adapterを設定します。
EtherCAT Masterをクリック>Adapter Tabを開きます。
SearchでIPCのNetwork Interfaceを検索します。
IPC内でEtherCAT Masterとして使用できるNetwork Interfaceが表示され、適切のInterfaceを選びましょう。
Done!
Add Murr EtherCAT Master
次はIMPACT67 Pro EC DIO8 IOL8 M12L 5PをEtherCAT Network内に追加するため、EtherCAT>右クリック>Add New Itemします。
Murrelektronik GmbHからIMPACT67 Pro EC DIO8 IOL8 M12L 5Pを追加しましょう。
Done!
Configure IP
IMPACT67 Pro EC DIO8 IOL8 M12L 5PはOPC UA Server・MQTT・REST APIがSupportできるのでモジュールを設定していきましょう。
Moduleをクリック>EtherCAT>Advnaced Settingsします。
Advanced Settings画面が表示されます。
Mailbox>EoEからIP portの項目からIPアドレスを設定することができます。
EoE?
EOE(Ethernet over EtherCAT)は、EtherCATプロトコルの一部で、特定のアプリケーションやデバイス間でEthernet通信をサポートするために使用されます。EOEは、EtherCATネットワーク上で通常のEthernet通信を可能にし、例えばTCP/IP通信などの一般的なEthernetプロトコルを使用して、エンドユーザーアプリケーションとEtherCATデバイスとの間でデータをやり取りできるようにします。
EOEを使用することで、エンドユーザーアプリケーションがEtherCATネットワーク内のデバイスと通信でき、これによりさまざまなデバイスやアプリケーションがシームレスに統合できるようになります。EOEは、EtherCATの柔軟性と拡張性を高め、異なる通信要件を満たすために使用される一つのツールとして役立ちます。
Configure Ports
次はIMPACT67 Pro EC DIO8 IOL8 M12L 5Pの各Portを設定します。
先程追加したBox1をクリックします。
Slots画面でX0-X7、各Portの設定を行うことができます。
Port X0
PortX0はデジタル入力として設定していきます。
Slots画面ではDefault各PortもEmptyになっています。
IO-Link Port X0を選ぶ、そして右にあるModuleをDigital_INを選択した状態で<ボタンをクリックします。
Done!Port X0はいまデジタル入力として設定され、Boxの中にデジタル入力用のProcess Dataも同時に追加されました。
Por tX1
Port1はデジタル出力になります。
先と同じ操作でIO-Link Port X1を選び、そして右にあるModuleをDigital_OUTを選択した状態で<ボタンをクリックし、Port1をデジタル出力として設定しましょう。
Port X2
Port2はIO-LINK Portになります。
先と同じ操作でIO-Link Port X2を選び、そして右にあるModuleをIOL_8/8_I/O-Bytesを選択した状態で<ボタンをクリックし、Port2をIO-LINK Portとして設定しましょう。
Port X3
Port3はIO-LINK Portになります。
先と同じ操作でIO-Link Port X3を選び、そして右にあるModuleをIOL_2/2_I/O-Bytesを選択した状態で<ボタンをクリックし、Port3をIO-LINK Portとして設定しましょう。
Port X7
Port7はIO-LINK Portになります。
先と同じ操作でIO-Link Port X3を選び、そして右にあるModuleをIOL_4/4_I/O-Bytesを選択した状態で<ボタンをクリックし、Port4をIO-LINK Portとして設定しましょう。
Process Data
PortX0/X1/X2/X3/X7にもProcess Data自動的に追加されました。
Program
次はプログラムを作成します。
DUT
DUT_E3ASHL500
こちらの構造体はOmronのEASHL500MN IO-LINK Sensorに該当します。
TYPE DUT_E3ASHL500 : STRUCT _raw AT %I*:ARRAY[0..3]OF BYTE; END_STRUCT END_TYPE |
Function Block
FB_E3ASHL500
こちらのFunctionはOmronのEASHL500MN IO-LINK Sensorに該当します。
VAR
_data変数は先程定義された構造体で、中にEASHL500MN IO-LINK SensorとMappingするProcess Input Dataがあります。
FUNCTION_BLOCK FB_E3ASHL500 VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR _data:DUT_E3ASHL500; END_VAR |
Method_DetecedValue
こちらのMethodはEASHL500MNのIO-LINKデータ、最初の2Bytesは測定距離を取得できます。LSBとHSBをSWAPしTwinCAT IPCのFormatに合わせます。
METHOD Method_DetecedValue : UINT VAR_INPUT END_VAR VAR _temp:ARRAY[0..1]OF BYTE; _value:UINT; END_VAR _temp[0]:=_data._raw[1]; _temp[1]:=_data._raw[0]; MEMMOVE( destAddr:=ADR(_value) ,srcAddr:=ADR(_temp) ,n:=2 ); Method_DetecedValue:=_value; |
Method_LightingIntensityLevel
こちらのMethodはEASHL500MNのIO-LINKデータ、0、1目の光量を取得できます。
METHOD Method_LightingIntensityLevel : USINT VAR_INPUT END_VAR Method_LightingIntensityLevel:=BYTE_TO_USINT(_data._raw[2]); |
PROPERTY Prop_Error : bool GET
こちらのMethodはEASHL500MNのIO-LINKデータ、3Byte目のStatusデータからエラー状態を取得できます。
Prop_Error:=_data._raw[3].2 OR _data._raw[3].4 OR _data._raw[3].6 OR _data._raw[3].7; |
PROPERTY Prop_OutputStatus1 : bool GET
こちらのPropertyはEASHL500MNの出力1を返します。
Prop_OutputStatus1:=_data._raw[3].0; |
PROPERTY Prop_OutputStatus2 : bool GET
こちらのPropertyはEASHL500MNの出力2を返します。
Prop_OutputStatus2:=_data._raw[3].1 |
FB_LRT2000
こちらのFunctionはKeyenceのLRT2000 IO-LINK Sensorに該当します。
VAR
_data変数はEKeyenceのLRT2000 IO-LINK SensorとMappingするProcess Input Dataになります。
FUNCTION_BLOCK FB_LRT2000 VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR _data AT %i*:ARRAY[0..1]OF BYTE; END_VAR |
Method_Distance : UINT GET
こちらのMethodはLRT2000のIO-LINKデータ、2Bytesは測定距離を取得できます。LSBとHSBをSWAPしTwinCAT IPCのFormatに合わせます。
METHOD Method_Distance : UINT VAR_INPUT END_VAR VAR _temp:ARRAY[0..1]OF BYTE; _value:UINT; END_VAR _temp[0]:=_data[1]; _temp[1]:=_data[0]; MEMMOVE( destAddr:=ADR(_value) ,srcAddr:=ADR(_temp) ,n:=2 ); Method_Distance:=_value; |
MAIN
こちらのプログラムは各IO-LINKデバイスからデータを取ります。
PROGRAM MAIN VAR E3ASHL5001:FB_E3ASHL500; DetectionValue:UINT; LightingLevel:USINT; Error:BOOL; Output1,Output2:BOOL; LRT2000 :FB_LRT2000; Distance:UINT; DI_PortX0,DO_PortX1:BOOL; DI_Mapping AT %I*:UINT; DO_Mapping AT %Q*:UINT; END_VAR DetectionValue:=E3ASHL5001.Method_DetecedValue(); LightingLevel:=E3ASHL5001.Method_LightingIntensityLevel(); Error:=E3ASHL5001.Prop_Error; Output1:=E3ASHL5001.Prop_OutputStatus1; Output2:=E3ASHL5001.Prop_OutputStatus2; Distance:=LRT2000.Method_Distance(); DI_PortX0:=DI_Mapping.0; DO_Mapping.2:=DO_PortX1; |
Build
Build>Build Solutionでプロジェクトをコンパイルします。
Link the Variables
最後は各PortのProcess InputとProcess Output変数をプログラムと紐つけましょう。
Mappingしたい変数を全部選び>右クリック>Change Linkします。
デジタル入力のMappingはTxPDO Mapping of Digital Inputs>PD (I/Q Pin2 +C/Q Pin4)に紐つけましょう。
デジタル出力のMappingはTxPDO Mapping of Digital Outputs>PD (I/Q Pin2 +C/Q Pin4)に紐つけましょう。
User Programに同じデータBytesのProcess dataが表示されるので、変数を適切にMappingしましょう。
Activate
Activate ConfigurationでHardware ConfigurationをTwinCAT RuntimeにDownloadしましょう。
Login
User ProgramをTwinCAT RuntimeにDownload するためLoginをクリックしましょう。
Result
From IO-LINK Device Tool
最初はMurrelektronik IO-Link Device ToolからIMPACT67 Pro EC DIO8 IOL8 M12L 5Pの状態を確認しましょう。
しばらくまちます…
Search
Murrelektronik IO-Link Device Toolを立ち上げ、右にあるTopology>Search MastersでIMPACT67 Pro EC DIO8 IOL8 M12L 5Pを検索します。
もし検索できなければ、Search IP Address機能からIMPACT67 Pro EC DIO8 IOL8 M12L 5Pを検索しましょう。
IMPACT67 Pro EC DIO8 IOL8 M12L 5PのIPアドレスを入力し、Okで進みます。
Done!IMPACT67 Pro EC DIO8 IOL8 M12L 5Pが見つかりました。
検索されたIMPACT67 Pro EC DIO8 IOL8 M12L 5Pを右クリック>Assignでデバイスをプロジェクトに移動します。
Done!
Import IODD
IODD Finderから各社のIO-LINK デバイスをツールにImportするため、Options>Import IODDします。
Import IODD画面が表示されました。
次は…ボタンからImport IODDのFolder Pathを設定します。
IODD Folderの格納場所を設定します。
Include subdirectoriesのCheckboxを入れます。
ImportするIODD FileをCheck入れて、Importします。
Go Ooline
Go OfflineのボタンをクリックしIMPACT67 Pro EC DIO8 IOL8 M12L 5Pとツールを接続します。
Done!Go Offlineのボタンがいま緑になり、つまりToolとIMPACT67 Pro EC DIO8 IOL8 M12L 5Pが接続しています。YesをクリックしデバイスConfigurationをデバイスからUploadします。
Done!
Check Devices
Check Devicesボタンをクリックし各のPortのIO-LINKデバイス情報を取ります。
黄色がついてるのはIO-LINK デバイスと接続されているPortです。
Takeover devices info engineeringで情報をプロジェクトにLoadします。
Done!
LR-TB5000CのIODD FileがツールにImportされたので、Port4の情報を確認するためPort4をダブルクリックします。
Done!キーエンスのLR-TB5000Cの情報を一覧できました。
Process Data TabからIO-LINKデバイスのProcess Dataを確認できます。
From Web
次はBrowserからIMPACT67 Pro EC DIO8 IOL8 M12L 5PのIPアドレスを入力するとWeb Serverが表示され、各Portもしくはモジュール本体の情報を確認できます。
もちろんWeb serverからモジュールやPortの設定もできますが、これらの操作はまた次の記事で紹介します。
例えばPortX3を開いていみます。
該当するPortの情報を確認できます。
PROCESS DATAのTabで該当するデバイスの生データを確認できます。
From TwinCAT
もちろん、TwinCATプログラムからにもすべてのIO-LINKデバイス・デジタル入力・デジタル出力を確認できます。
Download
こちらのGithubから今回の記事のSampleプロジェクトをDownloadできます。