Beckhoff#TwinCAT x IFM AL1320 Ethernet/IP IO-LINK Master_Part1

この記事はBeckhoff C6920とIFM のAL1320 Ethernet/IP IO-Link MasterでEthernet/IP ネットワークを構築、そして同じIFM社のIO LINK Interface付きOGD592 Photoelectric 距離センサー同時に、0からプロジェクトを作成します。注目するのはもちろんIFM社のAL1320 Ethernet/IP IO-Link Masterですが、TwinCAT3がProcess I/Oを自由Mapping・アプリケーションにより自由でセットアップできるところは他のメーカーにはないメリットです。

よろしくお願いします。

Thanks!

この記事が出来上がるのはベッコフ日本法人ベッコフオートメーション株式会社さまとifm efector co. ltd.さまから機材を貸してくださったおかけです。誠にありがとうございます。

ベッコフ日本法人ベッコフオートメーション株式会社

IPC6920-005はベッコフ日本法人ベッコフオートメーション株式会社さまが貸してくださったものです。Beckhoff Automationは1980 年会社設立、PCベースの制御技術をベースにしたオープンオートメーションシステム導入の先頭に立つドイツ企業です。

ベッコフ日本法人ベッコフオートメーション株式会社は、2011年に横浜に本社、2017年に名古屋オフィスを設立しました。

こちらはベッコフ日本法人ベッコフオートメーション株式会社様のホームページです。

どうぞよろしくお願いします。

https://www.beckhoff.com/ja-jp/

ifm efector co. ltd.

ifmは1969年にドイツで誕生依頼”ifm-Close to you”を企業理念とする、センサのスペシャリストです。 今日では世界95ヶ国以上の拠点で従業員7000名を超える大企業になり、IoTのカギとなるIO-Linkの先駆者としても世界的に広く認知されるメーカーとなります。

こちらはIFMさまのホームページです。

どうぞよろしくお願いします。

https://www.ifm.com/de/en

Reference Link

Communicate With  RJ71EIP91

Mitsubishi#RJ71EIP91 x TwinCAT with UCMM message communication
Beckhoff#TwinCAT3 TF6280 Ethernet/IP Adapter立ち上げよう

Communicate With  Omron NX-CSG320

Project#Omrn NX-CSG320 x Beckhoff TwinCAT3 Ethernet/IP Standard Communication

Communicate With  Schneider TM221

Project#Beckhoff TwinCAT3 x Schneider TM221 CPU x Ethernet/IP Communication

Communicate With  Keyence KV8000

Project#Setup EIP Connection wtih TwinCAT Adapter x Keyence KV8000 Scanner

Communicate With  PLCNEXT

PLCNEXT#Communicate with TwinCAT/Codesys By Ethernet/IP

AL1320

自動化ネットワークとITネットワークを分離

最高4個までのIO-Linkデバイスに接続

機械データ、プロセスパラメータ、診断データをコントローラに高い信頼性で伝送

EtherNet/IPインターフェースと独立したMQTT JSONインターフェース

厳しい産業環境で使用できる堅牢な外装

Ethernet/IP Port

こちらはEthernet/IP Portです。

Wiring

サイズはM12です。

Iot Port

こちらはIot Portです。

Wiring

サイズはM12です。

IO-LINK/DI/DO Port

こちらはIO-LINK/DI/DO Portです。

Wiring

サイズはM12です。

Power Supply

こちらは24V DCのPower Supply Portです。

Wiring

サイズはM12です。

OGD592

今回のOGD592 Photoelectric sensorは計測距離25 … 300 mm、 PnP タイプでOGD593 NPNはNPNタイプです。

Wiring

OGD592の配線です。

Communication

こちらはOGD592の通信仕様です。

Implementation-1

ではまずBeckhoff IPC C6920とIFM AL1320をEthernet/IP を繋がりましょう。

IFM Side

Download Configuration Tools

IFMのHomep pageからConfiguration ToolsをDownloadします。

もしAccountがない方は先に登録してください(無料なので)。

Poilcyに同意し、ToolsをDownloadします。

Configuration ToolsがDownloadされました。

Installation

ZIPを解凍しSetup.msiをクリックしツールをインストールします。

Nextします。

ライセンス同意し、Nextします。

Installします。

しばらく待つと、完成です!

Config IP

IFM AL1320のIP Addressを設定します。先程インストールしたEthernet Device Configuration Toolsを起動します。

Ethernet Device Configuration Toolsが起動しました。

Options>DCP Configurationをクリックします。

AL1320と接続してるEthernet Interfaceを選び>OKします。

Search DevicesをクリックしデバイスをScan始めます。

見つかりました。いまのIPは192.168.0.151ですね。

右クリックし>Set IP Addressします。

今回の構成に合わせて192.168.250.151にします。

もう一度ScanしてIP変更されたか確認しましょう。

よい、問題がなさそうですね。

Download EDS

次はIFM HPからEDS FileをDownloadします。

DownloadされたFileを解凍すればokです。これらのEDS FileはTwinCAT側で使用しますので。

TwinCAT Side

次はTwinCAT側を構築します。

Select Target

IPCの接続を設定します。SYSTEM>Choose Targetします。

Search(Ethernet)します。

IPCのIPアドレスを入れ、Enter Host Name/IP ButtonでIPCを検索します。

検索結果からIPCを選び>Add Routeします。

Secure ADSのOptionを入れ、UserとPasswordを入力>OKします。

Connectedの列にこのICONが表示されればOKです。

CloseでAdd Route Dialong画面を閉じます。

先程接続設定したIPCを選び>Okします。

Add Ethernet/IP Scanner

次はTwinCAT3でEthernet/IP Scannerを追加します。I/O>Devices>Add New Itemします。

Ethernet/IP >Ethernet/IP Scannerを選び>Okします。

Ethernet/IP Netoworkに接続してるEthernet/IP を設定してください。

念のため、もう一度確認しましょう。

Configure IP

SettingsのTab開き>F800.21とF800.22のFieldにIPとNetwork Maskを入れてください。

Configure The task

Sync TaskのTabを開き>Special Sync TaskのOptionを選び>Create new I/O Taskします。

Ethernet/IP のTask名入力し>Okします。

これで構築OK。

Import EDS File

先程追加したScannerを右クリック>Import EDS FileでIFM AL1320 を追加します。

AL1320.eds>Openします。

これでImport完成です。

Add AL1320

次はIFM AL1320をEthernet/IP Networkに追加します。Scanner>右クリック>Add New Itemします。

ifm electronic >IO-LINK Master DL EIP xxxを選び>Okします。

これでOKです。

Change IP

AL1320のIP Addressを変更します。

Box1右クリック>Change Ip Addressします。

今回のTutorialの設定するIP Addressに合わせましょう。

IP設定できれば、Box1のICONが変わるはずです。

Config the IO-LINK

Box1をダブルクリックし、AL1320のPort設定を行います。

Config InstanceのTabで各Portの細かい設定ができます。

いまはParamID 30,130,230をIO-LINK Port・Digital Input Port・Digital Output Portとして設定しています。

Activate Config

Activate ConfigurationでHardware ConfigurationをIPCにDownloadします。

OKで進みます。

もしライセンスが足りないならYesでTrialライセンスを入力します。

OKでTwinCAT RuntimeをRun Modeにします。

Result

Input Dataを見るとデータが入るようになりました。

Implementation-2

次はBeckhoff TwinCAT側はプログラムを組み、IFMのIO-LINK SUPPORT距離センサーも同時に接続してみます。AL1320はInput Assembly102、Output Assembly151、Port0=IO-LINK、Port1=デジタル入力、Port2=デジタル出力の設定になります。

IFM Side

IO-LINK Gateとして使用する前にまずAL1320 In/OutのAssembly やIO -LINK デバイスOGD592のData Mappingを把握する必要があります。

AL1320 

Input Assembly 102

こちらは今回記事で使用するInput Assembly102です。

Byte0..1

Byte0..1は各PortのPin4・Pin2状態です。

Byte2..3

Byte2..3は各Portが短絡やOverloadになったか、電源供給供給に問題ないかを取得できます。

Byte 4..5 / 6..7 /8..9/10..11

次は各Portの細かい情報です。IOLINK Modeとして稼働してるか、エラーの情報など。

Byte From 12…

Byte12からは各PortのIO-LINKデータになります。.

n=2,4,8,16,32でパラメータ [Process_Data_Length] により変わります。

Output Assembly 151

こちらは今回記事で使用するInput Assembly151です。

Byte0

Byte0は各Portをデジタル出力として使用するときの制御Bitです。

True=該当するPortをTrueに出力します。

Bye From 2 …

Byte2からは各PortのIO-LINK データ出力になります。

n=2,4,8,16,32でパラメータ [Process_Data_Length] により変わります。

OGD592

Input Mapping

TwinCAT Side

Add PLC

PLC>Add New ItemでPLCを追加します。

Standard PLC Projectを選び>Addします。

PLCが追加されました。

Add Connections

AL1320のConnectionを追加します。Append IO Connection>Exclusive Owner IOをします。

EDS File Baseで変数を作りますか?Yesで進みます。

Connectionが追加されました。

Check Config

Connection 1をダブルクリックします。

InputのConnection Portは102、140BytesでOutputはPort151、130 Bytesになっています。

それらの数字は先程IFM AL1320のManualから見つかったAssembly 番号などとは一致しています。

Program

次はプログラムです。

DUT

DUT_ifm_AL1320_Port_Mapping_DI_Data

Input AssemblyのByte0-1のデータです。

TYPE DUT_ifm_AL1320_Port_Mapping_DI_Data :
STRUCT
//Signal level on pin 4 of the IO-Link port,1=High
X01_Pin4 :BIT;
X02_Pin4 :BIT;
X03_Pin4 :BIT;
X04_Pin4 :BIT;
Reserved_1
,Reserved_2
,Reserved_3
,Reserved_4 :BIT;

//Signal level on pin 2 of the IO-Link port,1=High
X01_Pin2 :BIT;
X02_Pin2 :BIT;
X03_Pin2 :BIT;
X04_Pin2 :BIT;
Reserved_5
,Reserved_6
,Reserved_7
,Reserved_8 :BIT;
END_STRUCT
END_TYPE
DUT_ifm_AL1320_Port_Mapping_PQI

Input AssemblyのByte 4..5 / 6..7 /8..9/10..11のデータです。

TYPE DUT_ifm_AL1320_Port_Mapping_PQI :
STRUCT

IOL_Mode :BIT; //1=IO-Link
NotConnectied :BIT; //1=Not Connected
InvaildData :BIT; //1=InvaildData
WrongID :BIT;
WrongCycleTime :BIT;
WrongInputLength     :BIT;
WrongOutputLength :BIT;
DiagnosisInCome :BIT; //1=New Event

Reserved_1
,Reserved_2
,Reserved_3
,Reserved_4
,Reserved_5
,Reserved_6
,Reserved_7
,Reserved_8 :BIT;

END_STRUCT
END_TYPE
DUT_ifm_AL1320_Port_Mapping_Status_Info 

Input AssemblyのByte2-3のデータです。

TYPE DUT_ifm_AL1320_Port_Mapping_Status_Info :
STRUCT

X01_Short_OL :BIT;
X02_Short_OL :BIT;
X03_Short_OL :BIT;
X04_Short_OL :BIT;
Reserved_1
,Reserved_2
,Reserved_3
,Reserved_4 :BIT;

AUX_PWR :BIT; //1=UA Available,
PWR_Sensor :BIT; //1=US Available,
Reserved_5
,Reserved_6
,Reserved_7
,Reserved_8
,Reserved_9
,Reserved_10 :BIT;

END_STRUCT
END_TYPE
DUT_ifm_AL1320_Port_Mapping_Output
TYPE DUT_ifm_AL1320_Port_Mapping_Output :
STRUCT
TYPE DUT_ifm_AL1320_Port_Mapping_Output :STRUCT X01 :BIT; X02 :BIT; X03 :BIT; X04 :BIT; Reversed_1 :BIT; Reversed_2 :BIT; Reversed_3 :BIT; Reversed_4 :BIT;
Reversed_5 :BIT; Reversed_6 :BIT; Reversed_7 :BIT; Reversed_8 :BIT; Reversed_9 :BIT; Reversed_10 :BIT; Reversed_11 :BIT; Reversed_12 :BIT; END_STRUCTEND_TYPE

END_STRUCT
END_TYPE
DUT_ifm_AL1320 

そして先程定義したDUTをまとめて再定義します。

TYPE DUT_ifm_AL1320 :
STRUCT
DIData AT %I*:DUT_ifm_AL1320_Port_Mapping_DI_Data;
StatusInformation AT %I*:DUT_ifm_AL1320_Port_Mapping_Status_Info;
PQIs AT %I*:ARRAY[1..4] OFDUT_ifm_AL1320_Port_Mapping_PQI; DQData AT %Q*:DUT_ifm_AL1320_Port_Mapping_Output;END_STRUCT
END_TYPE
DUT_ifm_ODG592_Input 

次はOGD592光電距離センサのINPUT データです。

TYPE DUT_ifm_ODG592_Input :
STRUCT
ObjectDistance :INT;
Reserved_1 :INT;
Reflectivity :INT;
DevicesStatus :DUT_ifm_ODG592_DeviceStatus;
END_STRUCT
END_TYPE
DUT_ifm_ODG592_DeviceStatus 

Device Statusだけは詳しくBitに分けて定義します。

TYPE DUT_ifm_ODG592_DeviceStatus :
STRUCT
OUT1 :BIT;
OUT2 :BIT;
Reserved_1
,Reserved_6 :BIT;

sts1
,sts2
,sts3
,sts4 :BIT;
Reserved_7
,Reserved_8
,Reserved_9
,Reserved_10 :BIT;


END_STRUCT
END_TYPE
DUT_ifm_ODG592 

最後はまとめて一つのDUTにします。

TYPE DUT_ifm_ODG592 :
STRUCT
in AT %I* :DUT_ifm_ODG592_Input;
END_STRUCT
END_TYPE

GVL

GVLでASL1320とOG592の変数を宣言します。

{attribute ‘qualified_only’}
VAR_GLOBAL
fim_AL1320_Box1 :DUT_ifm_AL1320;
OG592_1 :DUT_ifm_ODG592;
END_VAR

Re-Mapping

次はRe-Mappingです。IFM HPからDownloadされたAL1320 EDS FileからDefaultに作成された変数をByteだけで、TwinCAT3は全部自由にアプリケーションに合わせて変数にすることができます。

Input

まずInput Dataをすべて選び>Removeで削除します。

Okで進みます。

Byte0-1 Digital Input Status

Inputsを右クリック>Add New Itemします。

先Byte0-1はDigital Input Data Statusで、Wordを選び>OKします。

これでOk。

Byte2-3 Status Information

同じくByte2-3のStatus Information変数を作成します。

変数名を入れ>Wordを選択>OKします。

それでOk。

Byte 4..5 / 6..7 /8..9/10..11 PQI

次はPQIです。

Port4が4つありますので、Byteを選び>Create Array Typeします。

2次元配列を定義します。1..4:は4つのPort、0..1は各Portは2 Bytesのデータ。

よし、これでOK。

Byte From 12 IO LINK Data

最後はByte 12からのIO LINK Dataです。

同じくArrayを定義し、32Byteのデータを指定します。

残りのPort2-4も同じように作成しましょう。

最後はSettings のところでInput Data Lengthが140 Bytesになってるか確認してください。

Link-Input

今度はInputs変数をUser programと紐つけます。

DI

まずはDigital Input Statusです。

StatusInformation

次はStatus Informationです。

PQI

PQI[x,0,x,1を選び、各PortのStatus変数と紐つけましょう。]

IOLINK-Object Distance

最後はIO-LINK Object データです。

Word0はDistanceです。

IOLINK-Recflectivy

Word4はRecflectivyです。

IOLINK-Device Status

Word7はDevice Statusです。

Link-Output

次はOutputです。Byte0しか使わないので。

MAIN

プログラムはIFM AL1320とOGD592の状態Checkとデジタル出力を1sことON/OFFする簡単なものです。

PROGRAM MAIN
VAR
Distance:INT;
TON :TON;
iStep:INT;
END_VAR


Distance:=-9999;

IF NOT GVL.ifm_AL1320_Box1.PQIs[1].InvaildData
AND NOT GVL.ifm_AL1320_Box1.PQIs[1].NotConnectied
AND NOT GVL.ifm_AL1320_Box1.DIData.X01_Pin2
THEN
Distance:=GVL.OG592_1.in.ObjectDistance;
END_IF;

CASE iStep OF

0:
TON(in:=TRUE,PT:=T#1S);
GVL.ifm_AL1320_Box1.DQData.X03:=TRUE;
IF TON.Q THEN
iStep:=1;
TON(IN:=FALSE);
END_IF;
1:
TON(in:=TRUE,PT:=T#1S);
GVL.ifm_AL1320_Box1.DQData.X03:=FALSE;
IF TON.Q THEN
iStep:=0;
TON(IN:=FALSE);
END_IF;

END_CASE

Result

こちらが結果です。距離データも受信され、1sことに出力をOFF/ONします。

Communication OK

https://youtube.com/shorts/b7K1-3DSvXY

OGD592 Operation

https://youtube.com/shorts/el_x-TrEEbw

Source Code

こちらのLinkでProjectをダウンロードできます。

https://github.com/soup01Threes/TwinCAT3/blob/main/TwinCAT_IFM_EIPAL1320_Part1.tnzip

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

シェアする

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

フォローする