Beckhoff#EL6224を使ってみよう

今回の記事ではBeckhoffのEL6224のIOLINK Terminalを使用しEtherCAT経由でIOLINKデバイスのデータを取ります。記事内で使用したIO−LINKデバイスはKeyence社のLR TB2000とContrinex社のIDWE-M12MM-NMS-A0になります。

よろしくおねがいします。

EL6224?

IO-LinkターミナルEL6224は、最大4台のIO-Linkデバイスの接続を可能にするデバイスです。接続先はアクチュエーター、センサー、またはその両方を組み合わせることも可能です。EL6224ターミナルは、EtherCATマスターを介してパラメータ化され設定を行います。IO-Linkは、フィールドバスレベルとセンサーレベルの間のデータリングとして設計され、

パラメータ化された情報はIO-Link接続を介して双方向に交換できます。

IO-Link接続を介してパラメータ化情報を双方向に交換することができます。

サービスデータを持つIO-Linkデバイスのパラメータ化は、TwinCATからADS経由で行うか、統合されたIO-Linkコンフィギュレーションツールを使って行うことができる。

接続されたIO-Linkデバイスと必要に応じて通信し、デバイスをパラメータ化し、必要に応じて動作モードを変更します。

Layout

こちらはEL6224のLayoutになります。

IO-Link basics

IO-Linkは、インテリジェントなセンサやアクチュエータをオートメーションシステムに接続するための通信システムである。

IEC 61131-9 標準では、IO-Link を “Single-drop digital communication interface for small sensors and actuators” (SDCI) という名称で規定しています。

電気的な接続データと通信プロトコルの両方が標準化され、IO-Link仕様書にまとめられている。

IO-Link システムではIO-Link マスタと 1 つ以上の IO-Link デバイス、つまりセンサやアクチュエータで構成されます。IO-Link マスタは、上位コントローラへのインタフェースを提供し、接続された IO-Link デバイスとの通信を制御します。ベッコフEL6224/EJ6224 IO-Linkマスターターミナルには、4つのIO-Linkポートがあります。それぞれに1台のIO-Linkデバイスを接続することができます。下図のように、IO-Linkはフィールドバスではなく、Point to Point 接続です。

今回使用するBeckhoff EL6224は IO-Linkマスターの開発には、IO-Link仕様1.1が適用されます。

Be careful! 

IO-Link デバイスは、EL6224の 24 V 電源から供給する必要があり、別電源を使用すると IO-Link ポートが損傷することがあります。

Establishment of IO Link communication

こちらはIO-Link通信の確立Flowです。IO-Link Portが自動Scanするときこのシーケンスに沿って接続します。

Wakeup Pulse

IO-Link デバイスがEL6224のPortに接続されている場合、マスターは通信の確立をトライするため、定義された信号レベル(ウェイクアップパルス)はデバイスに、”これからUARTバイトを送信しますよ!”の信号を送ります。

Baud Rate 

IOLINK MasterはすべてのBaud rateを実行し、その中に最も速いBaud rateから通信を開始します。(COM3=230kbaud)。IOLINK SlaveがStep-1のWake up pulseにに応答したとき、接続が成功したことになります。

Communication Parameter Exchange

次はIOLINK MasterがSlaveの基本パラメータ:

  • ベンダーID
  • デバイスID
  • プロセスデータ長
  • テレグラムタイプ
  • サイクルタイム

を読み取り、現在の構成と比較します。

Errors in Configuration

機器に接続できなかった・または保存したパラメータが読み込んだパラメータと異なる場合、エラーを出力します。

if Configuration incorrect..?

保存したパラメータと読み取ったパラメータが異なる場合、IO-Link デバイスは PREOP 状態に変わります。

IO-Link device specification is V1.1

IO-Link デバイスの仕様が V1.1 の場合、パラメータサーバを実行します。IO-Linkデバイスが V1.0 の場合、デバイスは直接 OP に変更されます。

Finally

最後にサイクルタイムが書き込まれ、デバイスはOP二移行します。IO-LinkマスターはIO-LINKデバイスと周期でデータを交換する。

Between TwinCAT..

Beckhoff EL6224 IO-Linkマスタターミナルは、2つのサービスに分かれています。

  • 接続されたIO-Linkデバイスとの関係でIO-Linkマスタで接続
  • PLC TwinCATマスタとの関係でEtherCATスレーブの接続

基本的には、Cyclic とAcyclicデータが交換されます。

  • CyclicのProcess データはPDOs経由します 
  • AcyclicデータはAoE を経由しアクセスします
  • Eventは、システムマネージャーの履歴で表示されます。

Implementation

Wiring

こちらはEL6224のTerminalとIO Linkデバイスの配線図です。

Configuration

Add EtherCAT Master

I/O>Devices>Add New Itemで新しいデバイスを追加します。

EtherCAT>EtherCAT Masterを選び>Okします。

いま接続してるEtherCAT NetworkのLAN CARDを選び>Okします。

Add EL6224

TwinCATからEtherCATのSlaveを追加するにはManual方法やAuto-Scanの2種類のやり方があります。

Scan

次はEtherCAT Master>右クリック>ScanでEtherCAT Slaveを検索します。

もしプロジェクトのHardware configurationと実機のConfigurationが異なる場合、TwinCATがその差分を確認することができます。今回はCopu Allで実機のConfigurationをプロジェクトと同期します。

Done!

EL6224がEtherCAT ネットワークに追加されました。

Configurate EL6224

EL6224の設定を行います。

Port1

IO-LINKのTabを開きます。この画面で各Portの設定を行うことができます。

最初にIODD Finderを開いてみましょう。

自分のIPCはいまインターネットと繋がっていませんが、この画面から直接IODD Fileを検索しプロジェクトにインストールできます。

Ports1を選び右クリック>Create Deviceから新規IOLINKデバイスを手動で作成します。

Create Deviceの画面が表示されます。

Vendor NameやIDはわかりやすい名前に設定し、Process lengthはIn 16Bitに設定します。

Port1sにIO-LINKデバイスが作成されました。

先程作成したIO-LINKデバイスを右クリック>Settingsを開きます。

Check VendorIDとCheck DeviceIDのCheckBOXを外し、Communication modeをCommunicationに選択すればOkです。

EL6224モジュールにIO-Link Port1が自動的に追加され、中に2BytesのProcess dataが定義されました。

Port4

Port4にも同じ方法でContrinex社のIdwe-m12mm-nms-a0 IO-LINKデバイスを追加します。

In=32bit、Output=8Bitで、Min Cycle timeは8.0ms設定します。

Add PLC

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

Standard PLC Project>Addで新しいPLCプロジェクトを追加します。

Program

FB_EL6751_Basic

こちらのFunction BlockはEL6224 モジュールのDeviceStateInputs変数と紐つけます。

DeviceStateInputsは各Portsの状態を取得できます。

FUNCTION_BLOCK FB_EL6224_Basic IMPLEMENTS ITF_EL6224_Basic
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
DeviceStatesInputs AT %I*:ARRAY[1..4]OF USINT;
END_VAR

METH_Port_OK

こちらのMethodはiPortの番号をパラメータとして受け取り、現在状態は3であればTrueを戻します(IO Link Port正常)

METHOD METH_Port_OK : BOOL
VAR_INPUT
iPort : INT;
END_VAR


METH_Port_OK:=FALSE;

CASE iPort OF
1..4:
METH_Port_OK:=DeviceStatesInputs[iPort] = 3;
END_CASE

FB_LR_TB2000

Keyence社のLR-TB2000用のFunction Blockを作成します。

iPortOKというのはPortは正常通信してるかを外部からの入力パラメータです。

FUNCTION_BLOCK FB_LR_TB2000 IMPLEMENTS ITF_LR_TB2000
VAR_INPUT
iPortOK :BOOL;
END_VAR
VAR_OUTPUT
END_VAR
VAR
Inputs AT %I*:INT;
Data :INT;
END_VAR

METH_Update

Update Methodを呼び出さない限り、IO-LINKデータが更新しません。

METHOD METH_Update : BOOL

Data:=0;
IF Prop_Enable THEN
Data:=Inputs;
END_IF;

Prop_Distance:GET

IOLink Portが通信OKであれば、2Bytesの距離データを更新します。

PROPERTY Prop_Distance : INT

Prop_Distance:=0;
IF Prop_Enable THEN
Prop_Distance:=Data;
END_IF

FB_IDWE_M12MM_NMS_A0

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイス用のFunction Blockを作成します。

FUNCTION_BLOCK FB_IDWE_M12MM_NMS_A0 IMPLEMENTS ITF_IDWE_M12MM_NMS_A0
VAR_INPUT
iPortOK :BOOL;
END_VAR
VAR_OUTPUT
END_VAR
VAR
//Link to Process Data
inputAT  %I*:DINT;
output AT  %Q*:BYTE;
END_VAR

VAR
StatusWord :BYTE;
ScalingValue :BYTE;
MesurementValue :INT;
InputBuffer :ARRAY[0..3]OF BYTE;
END_VAR

METH_Disable

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイスを無効化するMethodです。

METHOD METH_Disable : BOOL
VAR_INPUT
iTrigger : BOOL;
END_VAR

output.0:=iTrigger;

METH_Update

IOLink Portが通信OKであれば、4Bytesの処理データを更新します。

METHOD METH_Update : BOOL

StatusWord:=0;
ScalingValue:=0;
MesurementValue:=0;

IF Prop_Enable THEN
MEMMOVE(
ADR(InputBuffer)
,ADR(input)
,n:=4
);

MEMMOVE(
ADR(StatusWord)
,ADR(InputBuffer)
,n:=1
);

MEMMOVE(
ADR(ScalingValue)
,ADR(InputBuffer[1])
,n:=1
);

MEMMOVE(
ADR(MesurementValue)
,ADR(InputBuffer[2])
,n:=2
);
END_IF

Prop_ALR:GET

Prop_ALR:=Prop_ALR1
OR Prop_ALR2
OR Prop_ALR3
;

Prop_ALR1:GET

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイスのALR1信号を取得します。

PROPERTY Prop_ALR1 : BOOL

VAR
_Statusword:BYTE;
END_VAR

_Statusword:=Prop_StatusWord;
Prop_ALR1:=_Statusword.5;

Prop_ALR2:GET

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイスのALR2信号を取得します。

PROPERTY Prop_ALR2 : BOOL

VAR
_Statusword:BYTE;
END_VAR

_Statusword:=Prop_StatusWord;
Prop_ALR2:=_Statusword.6;

Prop_ALR3:GET

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイスのALR3信号を取得します。

PROPERTY Prop_ALR3 : BOOL

VAR
_Statusword:BYTE;
END_VAR

_Statusword:=Prop_StatusWord;
Prop_ALR3:=_Statusword.7;

Prop_Enable:GET

PROPERTY Prop_Enable : BOOL

Prop_Enable:=iPortOK;

Prop_MeasurementValue:GET

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイスのMeasurementValueを取得します。

PROPERTY Prop_MeasurementValue : INT

Prop_MeasurementValue:=MesurementValue;

Prop_OSS1:GET

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイスのOSS1信号を取得します。

PROPERTY Prop_OSS1 : BOOL

VAR _Statusword:BYTE;END_VAR
_Statusword:=Prop_StatusWord;
Prop_OSS1:=_Statusword.0;

Prop_OSS2:GET

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイスのOSS2信号を取得します。

PROPERTY Prop_OSS2 : BOOL

VAR
_Statusword:BYTE;
END_VAR

_Statusword:=Prop_StatusWord;
Prop_OSS2:=_Statusword.1;

Prop_ScalingValue:GET

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイスのScaling Valueを取得します。

PROPERTY Prop_ScalingValue : BYTE

Prop_ScalingValue:=ScalingValue;

Prop_StatusWord:GET

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイスのByte0 Status データを取得します。

PROPERTY Prop_StatusWord : BYTE

Prop_StatusWord:=StatusWord;

Prop_Tss:GET

Contrinex社のIDWE_M12MM_NMS_A0 IOLINK デバイスのTSS信号を取得します。

PROPERTY Prop_Tss : BOOL

VAR
_Statusword:BYTE;
END_VAR

_Statusword:=Prop_StatusWord;
Prop_Tss:=_Statusword.2;

MAIN

各PortのIOLINK デバイスやEL6224のデータを取ります。

PROGRAM MAIN
VAR
Port4 :FB_IDWE_M12MM_NMS_A0;
Port1 :FB_LR_TB2000;
EL6751 :FB_EL6751_Basic;
MeasureValue:INT;
ScalingValue:BYTE;
ALR1,ALR2,ALR3,OSS1,OSS2,TSS:BOOL;
Distance:INT;
END_VAR



Port1.iPortOK:=EL6751.METH_Port_OK(1);
Port4.iPortOK:=EL6751.METH_Port_OK(4);

Port1.METH_Update();
Port4.METH_Update();

Distance:=Port1.Prop_Distance;

MeasureValue:=Port4.Prop_MeasurementValue;
ALR1:=Port4.Prop_ALR1;
ALR2:=Port4.Prop_ALR2;
ALR3:=Port4.Prop_ALR3;
OSS1:=Port4.Prop_OSS1;
OSS2:=Port4.Prop_OSS2;
TSS:=Port4.Prop_TSS;
ScalingValue:=Port4.Prop_ScalingValue;

Result

Done!EL6224 TerminalからPort1とPort4のIOLINKデータが取れましたね!

Download

下記のLinkからSample プロジェクトをDownloadしてください。

https://github.com/soup01Threes/TwinCAT3/blob/main/Project_EL6224_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

シェアする

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

フォローする