今回の記事ではPilzの最新PNOZ 通信モジュールEtherCAT FSoEを使ってFSoE Masterを立ち上げ、Weidmullder・BechoffのFSoE SlaveとFSoE・非安全EtherCAT通信を確立させます。
さ、はじめよう!
Thanks!
この記事で使用するRevPI ConnectはPILZ JAPANが貸してくださった機材です。
PILZ
PILZは安全およびオートメーション技術のソリューションでトータルソリューションサプライヤとしてのFA現場を支え、人の安全だけではなく、機械、および環境の安全を保証し、機械や設備をいかに安全に稼働させます。ピルツは全世界に42の現地法人や支社を設置し、包装、自動車産業、ロボットアプリケーション、さらに風力発電、鉄道技術など様々な分野で活躍しています。
Office:
ピルツジャパン株式会社
〒222-0033
横浜市港北区新横浜3-17-5
いちご新横浜ビル 4階
HP
Reference Link
Reference Video
Pilz.PNOZ m EF EtherCAT FSoE 簡単紹介 Pilz.PNOZ m EF EtherCAT FSoEでFSOE Masterを立ち上げよう(TwinCAT3と組み合わせ)
FSoE?
EtherCAT NetworkはEtherCATマスタと1つまたは複数のスレーブで構成され、EtherCAT Telegramには標準データを含み、安全データ (FSoE データ) も転送できます。
そして今回記事で使用するPNOZ m EF EtherCAT FSoEはFSoEマスタおよびFSoEスレーブとして使用できます。それはPNOZ m EF EtherCAT FSoEがFSoE経由で安全関連以外のデータと非安全関連データをEtherCAT経由で送受信することができるからです。
FSoEログは国際規格IEC 61784-3で標準化されており、FSoEモジュール間で安全なプロセスデータを転送する安全な通信システムです。
EtherCATネットワーク経由でFSoE通信を行うには、EtherCATマスターでEtherCATネットワークが機能していることが前提条件となり、標準EtherCATテレグラム内でFSoEデータは安全なデータコンテナ (FSoE Frame) で伝送されます。
FSoE マスターはRequest telegramで通信を開始します。FSoE マスターは FSoE スレーブから FSoE データを受信し、安全関連の評価を行います。それらの安全データはPNOZmultiモジュールプログラムで使用できます。
注意するのはPNOZ m EF EtherCAT FSoEのFSoEサイクルタイムは最大10msです。
FSoE ConnectionはWatchdogを使って監視され、通信中断を検出します。
PNOZ m EF EtherCAT FSoE?
EtherCATネットワークにはEtherCATマスタが必要であり、EtherCATマスタはEtherCATスレーブと通信します。Fail-Safe DataをFSoE経由で交換する場合、FSoEマスタ(モジュールPNOZ m EF EtherCAT FSoEなど)と少なくとも1台のFSoEスレーブが必要です。
ここで注意するのは、EtherCAT ネットワークではFSoEマスターはEtherCATスレーブの1つでもあります。今回の記事で使用するPNOZ m EF EtherCAT FSoEは、FSoEマスタまたはFSoEスレーブとして構成できます。
EtherCATスレーブ からの全データはEtherCATマスタ経由で転送されます。FSoEスレーブへの接続は、PNOZmulti Configuratorで作成し、FSoEスレーブの対応するデータがFSoEマスターで利用できるように、対応するデータをEtherCATマスターにコピーまたはマッピングする必要があります。
また、PNOZmultiはマスターまたはスレーブとして、あるいはマスターとスレーブを同時に動作させることができます。
注意するのは接続が切れると、システムは自動的に再起動する。再起動インターロックはありません。そしてEtherCATへの接続は2つのRJ45ソケットを介して確立されます。LEDはEtherCAT FSoE上の拡張モジュールの状態を示します。
Layout
ベースユニットと拡張モジュールPNOZ m EF EtherCAT FSoEはジャンパを介して接続されます。電源電圧が投入されるか、PNOZmulti制御システムがリセットされますので、拡張モジュールPNOZ m EF EtherCAT FSoEは自動的に構成され、起動します。
Unit features
この製品には次のような特徴があります。
- PNOZmulti Configuratorで設定可能
- FSoEマスターとして動作:最大 60コネクション
- FSoEスレーブとして動作:最大 4接続
- 最大 1接続あたり16バイトの入力データと16バイトの出力データ
- 512 Bit Failsafe入力プロセスデータと512ビットのFailsafe出力プロセスデータをFSoEマスターごとに転送可能
- PNOZmulti Configuratorでは、PNOZmultiの128の仮想入出力をEtherCATとの通信用に定義でき可能
- Network protocols: EtherCAT, FSoE
- EtherCATやFSoEとの通信やエラーのStatu LED
- 最大 1 PNOZ m EF EtherCAT FSoEをベースユニットに接続可能
Network planning
ネットワークが設定され、インストールされる前に、FSoE Networkを構築しましょう。
- ネットワークで使用するEtherCAT Masterを選定する
- ネットワークで使用するFSoE Masterを選定する
- ネットワークで使用するFSoE Slavesを選定する
- FSoEネットワークの構造を構築する
- EtherCATサイクルタイム (ネットワーク内で最も遅いモジュールに対応)
- FSoE安全パラメータの定義
- FSoE address
- 各 FSoE 機器にある一意の FSoE アドレスを割り当て
- Connection ID
- 各FSoE 機器にはある一意のConnection IDを割り当て
- Watchdog timeout [ms]
- 接続のデータ転送はWatchingdog Timerを使って監視される。各FSOE機器は、通信パートナーがWatchingdog Timeout内に新しい FSoE フレームを送信することを監視します。Watchingdog Timeout地各Connectionにも適切な値を割り当てる必要があります。
- FSoE address
EtherCAT and FSoE application example
では実際にFSoEアプリケーションの計画と設定方法について説明します。
この例では、4つのFSoE機器を持つ工場が計画されています。
EtherCAT Master?
Beckhoff TwinCAT 3 Runtimeを使用します。
FSoE Master?
PNOZmulti 2 FSoE Masterを使用します。
FSoE Slave?
この例で使用するFSoE Slaveは3つあります。下図の赤枠に示しています。
- PNOZmulti 2 – FSoE Slave
- 入力モジュール Beckhoff EL1904 – FSoE Slave
- 出力モジュール Beckhoff EL2904 – FSoE Slave
Network Parameters?
次はFSoEネットワークのパラメータを設定しましょう。
FSoE Address
各SlaveのFSoEアドレスを被らないように設定します。
Connection ID
Connection IDも同じく被らないように設定してください。
Watch Dog Timer
Watch DogのTimeout時間はアプリケーションに合わせて設定しましょう。
Result
下図のようにFSoE Masterは異なるエリアにあるFSoE Slaveをアクセスすることが可能です。
Reaction times
最大EtherCAT FSoE反応時間は通信を含む関係する部品の遅延時間で左右されます。
以下の時間は計算的に考える必要があります。
- EtherCAT サイクルタイム
- PNOZ m EF EtherCAT FSoEの遅延時間
- FSoE Slaveの遅延時間
- FSoE Master watchdog 時間
注意するのは、FSoEの反応時間はEtherCATサイクルタイムの変化に影響されます。
Implemetation
Pilz Side
FSoE Configuration
PNOZmulti ConfiguratorからEtherCAT/FSoEのTabを開きます。
Import ESI File
右にあるEtherCAT/FSoE Slave Libraryから”Import ESI Files”をクリックしESI Fileを追加します。
BeckhoffとweidmüllerのESI FileをImportしましょう。
Done!
Configure ESI Connection
LibraryからFSOE ネットワークにあるSlaveをSlotに追加します。
Done!Slot1にweidmüllerのUR20-4DI-4DO-PN-FSOE-V2 Slaveが追加されました。
FSoE Address
FSoE AddressはweidmüllerのUR20-4DI-4DO-PN-FSOE-V2にあるDIP スイッチに合わせて設定しましょう。
Watchdog Time
Watchdog Timeはアプリケーションに合わせて設定してください。
Connection ID
Connection IDはネットワーク内に一意するIDを設定しましょう。
Safety Parameters
FSoE Slaveによって設定できるパラメータが変わります。
今回は1対2の非常停止入力を使用し、AUX0とAUX1でTest Inputを使用します。
Result
こちらは今回のFSoE Configurationになります。
- Slot1‐weidmüller UR20-4DI-4DO-PN-FSOE-V2
- FSOE Address=2
- Connection ID=2
- Slot2-EL1904
- FSOE Address=10
- Connection ID=10
- Slot3-EL1904
- FSOE Address=11
- Connection ID=11
- Slo4-EL2904
- FSOE Address=15
- Connection ID=15
User Program
次は安全プログラムを構築するため、User Program Tabを開きます。
こちらはPNOZ 2のプログラム構築画面で、EtherCAT FSOEのプログラムシートを開きましょう。
Insert ESTOP Block
右にあるFunction ElementsからESTOP Blockを追加します。
E-STOP Blockの設定画面が表示されます。
Switch Type
Swtich TypeにDrop-Listがあり、アプリケーションと配線に合わせて設定します。
今回の記事では1:2で設定します。
Connections
ConnectionsはE-STOPのBlockで使用する入力信号を設定します。先程Switch TypeはType3に設定しましたので、Input1/Input2が表示され2つの入力信号にも設定可能です。
実際のアプリケーションに合わせて設定しましょう。今回の記事では、UR20-4DI-4DO-PN-FSOE-V2の入力1と入力2を使用します。
Input1 Equipment ID
Equipment IDには該当する入力と接続するモジュールを設定できます。
今回はUR20-4DI-4DO-PN-FSOE-V2に設定します。
Input1 I/O
I/Oは該当するモジュールの入力Pointを設定できます。
今回はDI1_Iに設定します。
Result
Done!E−STOP Function Elementが追加されました。
Insert Semiconductor Output
次は半導体出力をシートに追加しましょう。
半導体出力 Function Elementの設定画面が表示されます。
Number of outputs
Number of outputsを”Single output”に設定し、出力の点数を1に変更します。
Done!
Connections
次は該当するBlockの出力設定を行います。
Output1 :Equipment ID
Equipment IDには該当する出力と接続するモジュールを設定できます。
今回はUR20-4DI-4DO-PN-FSOE-V2に設定します。
Output2 :I/O
I/Oは該当するモジュールの入力Pointを設定できます。
今回はDO1_Oに設定します。
Result
Done!
最後はESTOP Function Elementの出力をSemiconudctor Outputの入力と繋がりましょう。
Done!これでESTOPの状態によって出力のOn/OFFを制御することができます。
Delay ON Program
今度は入力にTimerを入れ、2sを遅延させてから出力するような簡単なプログラムを作ります。
Activate Input
Function Sheetに使われていないの入力点をダブルクリックします。
Function Sheetに使用するPointの設定画面が表示されます。
Centrailsed I/O Configration
こちらはFunction Sheetの変数使用するか、他のモジュールのデータを使うかを設定できます。
今回はBeckhoffのFSoE Address=10のEL1904を使用します。
Done!
I/O
I/Oは該当するモジュールの入力Pointを設定できます。
今回はEL1904のChannel1に設定します。
Add AND Gate Block
次はLogic ElementsにAND Gateを追加します。
こちらはAND Gateの設定画面になります。
Done!ANG Gateが追加されました。
Connect Inputs->AND Block
先程追加した2つの入力をAND GATEの入力と繋がりましょう。
Done!
Add Time Element
Timer ElementをFunction Sheetに追加します。
Time Elementsの設定画面が表示されます。
Delay Time
Delay Timeに遅延ON・遅延OFFを設定できます。
今回の記事ではSwitch-on delay(遅延ON)に設定します。
Period
Periodは該当するTime Elementsの遅延時間や単位を設定できます。
今回の記事では2000ms(2秒)を設定します。
隣のDrop-Listで遅延する単位を変更できます。
Done!Time Elementが追加されました。
Connect AND Blocks to Timer Input
今度はANG Gateの出力とTime Elementの入力と繋がります。
これでOkです。
Connect to Safety Output
最後はEL2904のChannel1出力と繋がりましょう。
Equipment IDをEL2904を設定します。
I/OをChannel1_Oに設定すればOkです。
Add EtherCAT Inputs
非安全のEtherCAT通信を追加します。EtherCAT Fieldbus経由の入力データをESTOPのリセットとして処理します。
では、まずE-STOP Function Elementをダブルクリックします。
Start Tabを開き、Start TypeをManual Startに設定します。
これでOkです。
Equipment IDにはE-STOP Function Elementのリセット信号と接続するモジュールを設定できます。今回はa2(EtherCAT FSOE モジュール名)に設定します。
I/Oは該当するモジュールの入力Pointを設定できます。
今回はI2に設定し、非安全EtherCAT通信の0Byte目・2Bit目を使用します。
Done!
Add EtherCAT Outputs
最後は非安全EtherCATの出力データを設定します。
Function Sheetに使用してない出力点を右クリック>Activateクリックします。
またI/Oの設定画面が表示されます。
Equipment IDには出力信号と接続するモジュールを設定できます。今回はa2(EtherCAT FSOE モジュール名)に設定します。
I/Oは該当するモジュールの出力Pointを設定できます。
今回はo3に設定し、非安全EtherCAT通信の0Byte目・3Bit目を使用します。
最後はTime Elementの出力をEtherCATの出力点と繋がりましょう。
Done!
Download
プロジェクトをDownloadするには、PNOZmulit>Project Managerをクリックしましょう。
Download画面が表示されます。
赤枠のボタンをクリックしプロジェクトをDownloadしましょう。
CPUのOrder NumberとSerial Numberを入力してください。
Order NumberとSerial NumberはCPUの画面から確認できます。
Ethernet Connectionを変更したいので、”Select Device Ethernet Connection”をクリックし、OKで進みます。
”Save project on USB Memory and activate”を選択し、Okで進みましょう。
注意事項を確認し、Confirmで進みましょう。
Downloadが始まるので、しばらく待ってください。
ツールからPNOZmulit CPUを再起動しますか?の確認画面が表示され、Yesで進みます。
TwinCAT3 Side
Install ESI File
weidmuellerとPilzHPからDownloadしたESI Fileを下記のDirectoryに格納してください。
C:\TwinCAT\3.1\Config\Io\EtherCAT
Add EtherCAT Master
EthernetCAT Masterを追加するため、I/O>Devices>右クリック>Add New Itemします。
EtherCAT>EtherCAT Masterを選び、Okで進みます。
EtherCAT Masterとして使用するEthernet Interfaceを選び、OKで進みます。
Done!
Auto Scan
Auto Scan機能を使用し、ネットワーク内にあるEtherCAT Slaveを検索します。
PNOZ m EF EtherCAT FSoEモジュールが検索され、EtherCATネットワークに追加されました。
PNOZ m EF EtherCAT FSoEの中に先ほど設定した4つのSlotにも自動的に追加されました。
ManualでSlotを追加したい場合、SlotsのTabを開きアプリケーションに合わせて設定しましょう。
Program
PLC プログラムを追加します。
DUT_FSoE
FSoE 1Byte 入力のメッセージ用の構造体を定義します。
TYPE DUT_FSoE : STRUCT MasterCMD :USINT; SafetyOut0 :BYTE; MasterCRC0 :UINT; MasterConnID:UINT; END_STRUCT END_TYPE |
GVL_Pilz
こちらはPilzモジュールにMappingする変数になります。
{attribute ‘qualified_only’} VAR_GLOBAL Slot1_i AT %I*:DUT_FSoE; Slot1_q AT %Q*:DUT_FSoE; Slot2_i AT %I*:DUT_FSoE; Slot2_q AT %Q*:DUT_FSoE; Slot3_i AT %I*:DUT_FSoE; Slot3_q AT %Q*:DUT_FSoE; Slot4_i AT %I*:DUT_FSoE; Slot4_q AT %Q*:DUT_FSoE; VirtualOutputs AT %I*:ARRAY[0..15]OF USINT; VirtualInputs AT %Q*:ARRAY[0..15]OF USINT; END_VAR |
GVL_SafetyIO
こちらは各FSoE SlaveにMappingする変数になります。
{attribute ‘qualified_only’} VAR_GLOBAL Slot1_i AT %I*:DUT_FSoE; Slot1_q AT %Q*:DUT_FSoE; Slot2_i AT %I*:DUT_FSoE; Slot2_q AT %Q*:DUT_FSoE; Slot3_i AT %I*:DUT_FSoE; Slot3_q AT %Q*:DUT_FSoE; Slot4_i AT %I*:DUT_FSoE; Slot4_q AT %Q*:DUT_FSoE; END_VAR |
MAIN
FSoEスレーブからのPDOは、FSoEマスターからのPDOにLoopbackする必要があり、各 FSoE Connectionsには TxPDO と RxPDO があります。また、PDOは双方向に接続することで、FSoEマスターからFSoEスレーブにデータを送信します。
なので、下記のプログラムではPilzのRxPDOを各Safety IOの TxPDOにLoop Backすることになり、Safety IOのRxPDOも同じ操作になります。
ESTOPStatus:BOOL; bReset:BOOL; TON:TON; GVL_SafetyIO.Slot1_q:=GVL_Pilz.Slot1_i; GVL_Pilz.Slot1_q:=GVL_SafetyIO.Slot1_i; GVL_SafetyIO.Slot2_q:=GVL_Pilz.Slot2_i; GVL_Pilz.Slot2_q:=GVL_SafetyIO.Slot2_i; GVL_SafetyIO.Slot3_q:=GVL_Pilz.Slot3_i; GVL_Pilz.Slot3_q:=GVL_SafetyIO.Slot3_i; GVL_SafetyIO.Slot4_q:=GVL_Pilz.Slot4_i; GVL_Pilz.Slot4_q:=GVL_SafetyIO.Slot4_i; ESTOPStatus:=GVL_Pilz.VirtualOutputs[0].3; TON(IN:=bReset,PT:=T#1S); GVL_Pilz.VirtualInputs[0].2:=bReset; IF TON.Q THEN bReset:=FALSE; END_IF |
Build
Build>Build Solutionでプロジェクトをコンパイルします。
Link Inputs/Outputs
最後は各Moduleと変数をMappingしましょう。
基本は構造体とデータサイズが同じのであれば、そのままMappingできます。
Pilzモジュール側のModule1、RxPDOにも同じようにMappingします。
残りのモジュールもプログラム変数と紐つけましょう。
- Module 2(EL1904,FSOE Address=10)
- Module 3(EL1904,FSOE Address=11)
- Module 4(EL2904,FSOE Address=15)
UR20-4DI-4DO-PN-FSOE-2側のFSOE MessgeにもMappingしましょう。
Activate Configuration
最後はActivate ConfigurationをクリックしHardware ConfigurationなどをDownloadします。
OKで進みます。
Run Modeにシフトします。
Result
Done!PilzのFSoE MasterはすべてのFSoE Slaveと接続できます。
安全プログラムも正常に稼働しています。
こちらの動画から実際の稼働状態を確認できます。