Phoenix Contact#Plcnext AXCF3152とProfinet AXL E PN IOL8 DI4 M12 6Pを繋げてみよう

こちらの記事では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しましょう。

https://www.phoenixcontact.com/en-pc/products/distributed-i-o-device-axl-e-pn-iol8-di4-m12-6p-2701513

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の使用方法の説明があります。

Pilz#PDP67を使ってみよう_Part1

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 のデジタル入出力の操作になります。

PhoenixContact.AXL E IOL8 DI4 M12 6P DIO Operation

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする