こちらの記事ではPhoenix Contact のAXCF3152と同社のProfinet IO-Link Master AXL E PN IOL8 DI4 M12 6Pの接続ガイドです。
さ、はじめよう!
Axioline E-PROFINET-IO-Link-Master?
Axioline E-PROFINET-IO-Link-Master は PROFINET ネットワーク内で使用するように設計され、最大8つのIO-Linkセンサ/アクチュエータの操作が可能、しかもデジタル信号の取得にも使用できます。
このAxioline E-PROFINET-IO-Link-Masterを使用するこよにより、
- M12コネクタ(Dコード)を使用したPROFINETネットワークへの接続
- 100Mbpsの伝送速度100Mbps
- デジタル入力を追加した4台のIO-Linkデバイスの接続
- 4台のIO-Linkアクチュエータと追加電源の接続
- M12コネクタ(Aコード、5極)を使用したIO-Linkポートの接続
- IO-Link specification V1.1.2
- 診断およびステータスインジケータ
- センサー電源の短絡および過負荷保護
- 保護等級IP65/IP67
Axioline E-PROFINET-IO-Link-Masterの IO-Link ポートのさまざまな動作モードで操作できます。
- デジタル標準信号
- IO-Link/アナログコンバータと組み合わせたアナログ信
- IO-Linkデバイス通信(例えば流量センサ、バルブインサート、ライトバリアまたは距離計メーターなど)
Layout
Axioline E Devicesには、Data・Power・Signalmの 3 つのエリアがあります。
- Data:ネットワーク/バス・システム用インジケータ
- Power:電源用インジケータ
- Signal:入出力および IO-Link ポート用インジケータ
Internal Circuit
こちらは実際Axioline E-PROFINET-IO-Link-Masterの内部回路です。
X21/X22/X11/X12
AXL E PN IOL8 DI4 M12 6P の電源Port US/UAはT Codeで、Ethernet PortX21/X22はD Codeです。
Examples for voltage supply
こちらは複数のIP67モジュールで電源を共有したときの配線例です。注意するのはUSとUAの合計電流は12Aを超えてはいけません。
X01-X08
こちらはX01-X08のIO-Link Portの配線ずです。A Codeを使用しています。
A Port/B Port
IO-Link PortAとPort Bはデジタル入力・出力として使用はできますが、もし大電流の場合はPortBを使用することで、Pin2/Pin5に外部の電源供給が可能になります(2Aに超えないように)。
Wiring Example
こちらはIO-Link Portの配線例になります。
Rotary Switch
AXL E PN IOL8 DI4 M12 6PにはRotaryスイッチがついており、モジュールのFactory Resetが可能になります。Code=0FでFactory Resetいなります。
Mapping
Axioline E PROFINET IO-Link マスターはモジュール式で、最初のスロット 1.1には、常にStauts/Controlの4Byte のが 4 バイトの INと OUT のプロセスデータがあります。
Slot1.2 から 1.9 には、それぞれの IO-Link ポートの動作モードとプロセスデータ長が入ります。
INPUT
こちらは入力のMappingです。
OUTPUT
こちらは出力のMappingです。
Implementation
PLCNEXT Side
Download GSDML
下記のLinkから今回の記事で使用するAXL E PN IOL8 DI4 M12 6PのGSDML FileをDownloadしましょう。
Import GSDML
次はPLCNEXT EngineeringにGSDML FileをImportするため、File>Import>Import GSDML File(s)をクリックします。
先程DownloadしたGSDML Fileを選びましょう。
Okで進みます。
Configure Profinet
次はProfinetネットワークを構築するため、Profinet Tabを開きます。
Select Type hereをクリックし新しいProfinet IO Deviceを追加します。
今回記事では使用するAXL E PN IOL8 DI4 M12 6P を選びましょう。
Done!AXL E PN IOL8 DI4 M12 6Pが追加されました。
Name of stationとIP addressのFieldからデバイス名・IPアドレスを設定できます。
Configure IOlink master
今度はIO-Link Master本体の設定を行います。
デバイスを展開すると各PortやAPIの設定ができます。
Network Configuration
まずIPなどのNetwork 設定を変更していきます。
IP Address
Ethernet FieldからデバイスのIPアドレスを設定できます。
Station Name
もちろん、Name of stationでデバイス名の設定も忘れずに。
Port Configuration
次は各Portの設定を行います。
各Portをデジタル入力するか、出力するか、もしくはIO-Link Portするかの設定するためには1:IO-Link Masterをクリックしましょう。
#2はPortX0の設定、#3はPort1の設定のように個別のPortのFunctionを構成できます。
PortX0
PortX0はOMRONのE3AS-HL500LMNと接続していますので、#2のTypeをIO-Link 4/1 Byte I/O Rev>= 00/1 00を選択してください。
PortX1
Port1X1は使用しませんので、#3のType Inactiveを選択してください。
PortX2
Port X2はデジタル入力と接続しましたので、#4のTypeをDigital Inputにします。
PortX3
Port X3はデジタル出力と接続しましたので、#5のTypeをDigital Outputにします。
Mapping
IOLINK Portの設定完了したら今度はPLC 変数とMappingしていきます。
Status/Control Module
こちらはAXL E PN IOL8 DI4 M12 6P の状態や出力の制御を行うためにあるStatus/Control Moduleです。
Process Data itemにあるDWORDのINとOUTをPLC変数と繋がりましょう。その画面で新規変数を定義した場合、右クリック>Add New VariablesすればOkです。
IO-Link 4/1 Byte I/O
次はIO-Link Portの変数をMappingしていきます。
IO-LinkのProcess DataとMappingしましょう。
DUT
構造体を定義します。このStepはMustではないのですが、構造体を使用することによりプログラムの可読性があがります。
DUT_Bytes4Array
こちらは4Bytes 配列の構造体です。
DUT_Bytes4Array : ARRAY[0..3] OF byte; |
DUT_E3ASHL500MN_BitStatus
こちらはOmron E3AS-HL500LMNの状態をまとめる構造体です。
DUT_E3ASHL500MN_BitStatus : STRUCT ControlOutput1 : BOOL; ControlOutput2 : bool; InstabilityAlarm :bool; InsufficinetError :bool; Warning :bool; Error :BOOL; END_STRUCT |
DUT_E3ASHL500MN
こちらはOmron E3AS-HL500LMNの状態・なおかつ距離測定値などをまとめた構造体です。
DUT_E3ASHL500MN : STRUCT DetectValueOutput : INT; LightIntensityLevel : usint; Status :DUT_E3ASHL500MN_BitStatus; END_STRUCT |
DUT_8BoolArray
こちらは8 Bool 配列の構造体です。
DUT_8BoolArray : ARRAY[0..7] OF BOOL; |
DUT_IOLINKMaster_Status
こちらはIO Link Masterの状態をまとめる構造体です。
DUT_IOLINKMaster_Status : STRUCT PortStatus : DUT_8BoolArray; PDVALID : DUT_8BoolArray; DIStatePin4:DUT_8BoolArray; DIStatePin2:DUT_8BoolArray; END_STRUCT |
Function Block
1s ON/OFFのClock を出力できるFunction Blockを作成します。
VAR
TriggerをTrueするとPulseTimeの時間設定に沿ってPulseON をON/OFF出力します。
Code
こちらは2つのIEC Timerを利用しON/OFFの繰り返しを出力します。
if Trigger THEN TON1(in:=not TON2.Q,PT:=PulseTime); TOn2(in:=TON1.Q,PT:=PulseTime); ELSE TON1(in:=false); TON2(in:=False); end_if; PulseON:=TON1.Q; |
Program
最後はPLC プログラムを作成します。
Variables
こちらは今回のプログラムで使用する変数です。
MAIN
E3ASHL500MN_1.DetectValueOutput:=TO_int(AXLEPN_1_Port1_IOLINK_Indata[1])+to_int(shl(TO_WORD( AXLEPN_1_Port1_IOLINK_Indata[0]),8)); E3ASHL500MN_1.LightIntensityLevel:=to_USINT(AXLEPN_1_Port1_IOLINK_Indata[2]); E3ASHL500MN_1.Status.ControlOutput1:=AXLEPN_1_Port1_IOLINK_Indata[3].%X0; E3ASHL500MN_1.Status.ControlOutput2:=AXLEPN_1_Port1_IOLINK_Indata[3].%X1; E3ASHL500MN_1.Status.InstabilityAlarm:=AXLEPN_1_Port1_IOLINK_Indata[3].%X2; E3ASHL500MN_1.Status.InsufficinetError:=AXLEPN_1_Port1_IOLINK_Indata[3].%X4; E3ASHL500MN_1.Status.Warning:=AXLEPN_1_Port1_IOLINK_Indata[3].%X6; E3ASHL500MN_1.Status.Error:=AXLEPN_1_Port1_IOLINK_Indata[3].%X7; // AXLEPN_1_Port1_IOLINK_Status.PortStatus[0]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X24; AXLEPN_1_Port1_IOLINK_Status.PortStatus[1]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X25; AXLEPN_1_Port1_IOLINK_Status.PortStatus[2]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X26; AXLEPN_1_Port1_IOLINK_Status.PortStatus[3]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X27; AXLEPN_1_Port1_IOLINK_Status.PortStatus[4]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X28; AXLEPN_1_Port1_IOLINK_Status.PortStatus[5]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X29; AXLEPN_1_Port1_IOLINK_Status.PortStatus[6]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X30; AXLEPN_1_Port1_IOLINK_Status.PortStatus[7]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X31; // AXLEPN_1_Port1_IOLINK_Status.PDVALID[0]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X16; AXLEPN_1_Port1_IOLINK_Status.PDVALID[1]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X17; AXLEPN_1_Port1_IOLINK_Status.PDVALID[2]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X18; AXLEPN_1_Port1_IOLINK_Status.PDVALID[3]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X19; AXLEPN_1_Port1_IOLINK_Status.PDVALID[4]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X20; AXLEPN_1_Port1_IOLINK_Status.PDVALID[5]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X21; AXLEPN_1_Port1_IOLINK_Status.PDVALID[6]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X22; AXLEPN_1_Port1_IOLINK_Status.PDVALID[7]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X23; // AXLEPN_1_Port1_IOLINK_Status.DIStatePin4[0]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X8; AXLEPN_1_Port1_IOLINK_Status.DIStatePin4[1]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X9; AXLEPN_1_Port1_IOLINK_Status.DIStatePin4[2]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X10; AXLEPN_1_Port1_IOLINK_Status.DIStatePin4[3]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X11; AXLEPN_1_Port1_IOLINK_Status.DIStatePin4[4]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X12; AXLEPN_1_Port1_IOLINK_Status.DIStatePin4[5]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X13; AXLEPN_1_Port1_IOLINK_Status.DIStatePin4[6]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X14; AXLEPN_1_Port1_IOLINK_Status.DIStatePin4[7]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X15; // AXLEPN_1_Port1_IOLINK_Status.DIStatePin2[0]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X0; AXLEPN_1_Port1_IOLINK_Status.DIStatePin2[1]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X1; AXLEPN_1_Port1_IOLINK_Status.DIStatePin2[2]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X2; AXLEPN_1_Port1_IOLINK_Status.DIStatePin2[3]:=axl_e_pn_iol_m12_6p_1_1_1_IN.%X3; // OneSeondsPulse(Trigger:=True,PulseTime:=T#1s); AXLEPN_1_Port1_IOLINK_Control.DIStatePin4[3]:= (OneSeondsPulse.PulseON and AXLEPN_1_Port1_IOLINK_Status.DIStatePin2[2]) or AXLEPN_1_Port1_IOLINK_Status.DIStatePin4[2] ; axl_e_pn_iol_m12_6p_1_1_1_OUT.%X11:=AXLEPN_1_Port1_IOLINK_Control.DIStatePin4[3]; |
Screen
こちらは動作確認用のHMI Screenで、PLCNEXTはWeb HMI内蔵されています。
Download
PLC右クリック>Write and Start Project(with Sources)でプロジェクトをDownloadしましょう。
Screen From PLCNEXT Engineering
Network ViewをScanするとAXL E PN IOL8 DI4 M12 6Pを検索できます。
Assign Name and IP Address
PRONETAを起動し、AXL E PN IOL8 DI4 M12 6P のデバイス名とIPを設定しましょう。
AXL E PN IOL8 DI4 M12 6P を右クリックし>Set Network ParametersでIPとデバイス名を設定します。
こちらの記事ではPRONETAの使用方法の説明があります。
IPとデバイス名はPLCNEXT Enginneringに合わせて設定しましょう。
Result
最後は接続やデータを確認していきましょう。
From WebServer
AXL E PN IOL8 DI4 M12 6P のIPアドレスをWeb Browserに入力しAXL E PN IOL8 DI4 M12 6P のWeb Serverにアクセスします。
Information>Diagnostic Indicators(NET)からモジュール上部のLEDの意味を確認できます。
Information>Diagnostic Indicators(IO)からモジュール下部の意味を確認できます。
Diagnostic>Diagnostic Indicatorsから現在各Portもしくはモジュールの状態を確認できます。
From PLCNEXT Engineering
PLCプログラムからもデータの確認できます。
From Screen
こちらの動画はAXL E PN IOL8 DI4 M12 6P のIOLINK デバイスの操作になります。
PhoenixContact.AXL E IOL8 DI4 M12 6P IOLINK Operation
こちらの動画はAXL E PN IOL8 DI4 M12 6P のデジタル入出力の操作になります。