今回の記事ではBeckhoff TwinCAT 4026とEL6910を使用し、EtherCATとFSoEネットワークを立ち上げ、PilzのPSEN rd1.xと安全通信を行います。また記事の中でRadarの検知エリアなどについても説明します。
さ、FAを楽しもう。
Reference Link
Detection Area of PSEN rd1.x SD I
PSEN rd1.x SD Iの各センサーの視野は、最大4つの検出フィールドで構成でき、 4つの検出フィールドにはそれぞれ専用の検出信号があります。
Angular coverage
Angular coverageには以下の値があります。
- 視野の最初の5メートル(16.4フィート)で10°から100°の範囲で
- 視野の5~9m(16.4~29.5フィート)において、10°~40°の範囲。
検出フィールドの角度範囲は、以下の検出フィールドの角度範囲よりも広いかまたは同じである必要があります。
Detection distance
最初の検出フィールドの検出距離はセンサーからです。 あるフィールドの検出距離は、前のフィールドの検出距離が終了したところから始まります。
1つ以上のフィールドの検出距離を0にすることができます(例えば、下図の例では検出フィールド3を0にセットしました)。 0以外の検出距離を持つ最初の検出フィールド(例えば、検出フィールド1)は、最小検出距離が200mmになります。
Safety working modes
PSEN rd1 Configuratorにより、各センサが各検出フィールドで採用する安全動作モードを選択できます:
- restart prevention function(デフォルト):
- センサーは通常動作時(アラームなし状態)にアクセス検出機能を実行します。
- センサーがアラーム状態(Alarm status)の場合、再起動防止機能(restart prevention function )を実行します。
- Always-on access detection:
- センサーは常にアクセス検出機能(アラーム状態なし+アラーム状態)を実行します。
Detection fields dependency and detection signal generation
センサが検出フィールド内の動きを検出すると、その検出信号のステータスが変化し、設定されている場合は、関連する安全出力が非アクティブになります。 以下の検出フィールドに関連する出力の動作は、検出フィールドの従属性(dependency )セッ トによって異なります:
IF Dependent mode is set…
Dependent modeが設定され、検出フィールドが互いに依存している場合、センサーが検出フィールド内で動きを検出すると、その次の検出フィールドに関連するすべての出力も非アクティブになります。 こちらは検出の例になります。
- 設定されている検出フィールド:1、2、3
- ターゲットが検出された検出フィールド:2
- アラーム状態の検出フィールド: 2, 3
IF Independent mode is set…
Independent modeが設定されているため、センサーが検出フィールド内で動きを検出した場合、検出フィールドは互いに独立しており、その検出フィールドに関連する出力のみが非アクティブになります。 こちらは検出の例になります。
- 設定されている検出フィールド:1、2、3
- ターゲットが検出された検出フィールド:2
- アラーム状態の検出フィールド: 2
注意するのは、検出フィールドが独立している場合は、リスクアセスメントの際に監視エリアの安全性を評価する必要があります。 ターゲットによって生じる不感領域は、センサーが以下の検出フィールドのターゲットを検出することを妨げる可能性があります。
Example
この例では、ターゲット[A]と[B]に対して、検出フィールド1と2はそれぞれ検出信号を生成します。
この例では、検出フィールド1はターゲット[A]の検出信号を生成するが、ターゲット[B]は検出できなくなります。
use case
Independent modeの使用例としては、検出フィールド内で物体の一時的な動きが予定されている場合など、検出フィールドを独立したものとして設定すると便利です。 下図のように、ロボットアームが、動作サイクルの特定の段階においてのみ、検出フィールド1内を右から左へ移動するような場合です。
その設定により、検出フィールド1での検出信号を無視することができ、不必要なダウンタイムを避けることができます。
注意するのは、検出フィールド1の検出信号を無視すると決定する前に、リスクアセスメントで監視エリアの安全性を評価してください。
また、移動するロボットアームによって発生する死角領域は、センサーが他の検出フィールドでターゲットを検出するのを時間間隔をおいて妨げることになります。 この時間は、検出フィールド2の検出距離を定義する際に考慮する必要があります。
SafeCounter
SafeCounterは、アップ/ダウン・カウンタを実現するために使用されます。 入力Reset、CountUp、CountDownのデータ型はBOOLであり、 出力Error、CounterOut、CounterZeroもデータ型はBOOLです。
そして出力 ActValue は現在の内部カウンタ値を示し、データ型は INT16、UINT16、INT32 または UINT32 です。
カウンタのパラメータ設定には、パラメータ Preset Value と Counter Limit を使用します。 入力Resetに論理1信号が入力されると、内部カウンタ値がPreset Valueでパラメータ化された値に設定されます。 入力CountUpの立ち上がりエッジは、内部カウンタ値を1インクリメントします。
CounterLimitで指定されたカウンタ値に達すると、出力CounterOutが設定される。 カウンタ値が0に達すると、出力CounterZeroが設定される。
TwinSAFEグループが開始され(Run=1)、リセット入力がTRUEである場合、出力ActValueはPresetValueに設定されます。 グループが停止すると、ActValue は 0 に設定されます。
FB Counter inputs
Variable | Permittedtype | Data Type | Description |
Reset | TwinSAFE-InFB-OutStandard-InTwinSAFE SC | BOOL | カウンタをプリセット値にリセットするためのリセット入力 |
CountUp | TwinSAFE-InFB-OutStandard-InTwinSAFE SC | BOOL | 内部カウンタをインクリメントするためのCountUp入力です。 |
CountDown | TwinSAFE-InFB-OutStandard-InTwinSAFE SC | BOOL | 内部カウンタ値を1デクリメントするためのCountDown入力 |
FB Counter outputs
Variable | Permittedtype | Data Type | Description |
Error | TwinSAFE-OutFB-InStandard-Out | BOOL | エラー出力 |
CounterOut | TwinSAFE-OutFB-InStandard-Out | BOOL | カウンターの上限に達すると出力がセットされる |
CounterZero | TwinSAFE-OutFB-InStandard-Out | BOOL | 内部カウンタ値が0の時に出力がセットされる |
ActValue | TwinSAFE-OutFB-InStandard-Out | INT16UINT16INT32UINT32 | 現在の内部カウンタ値 |
Implementation
Pilz PSEN rd1.x Side
PSEN rd1.xシステムを設定します。
Download Tools
PilzのHPからPSEN rd1.x Configurator ToolsをDownloadしてください。そのツールには以下の機能があります。
- システムを構成する
- 設定レポートの作成
- システム機能のチェック
- システムログのダウンロード
コンフィギュレーターを使用するには、PSEN rd1.xをデータUSBケーブル、またはイーサネットポートがある場合はイーサネットケーブルでコンピューターに接続する必要があります。
Factory Reset
下記のボタンを長押し、PSEN rd1.xを出荷設定に戻します。
Start
Pilz HPからDownloadしたツールではインストールバージョンもしくはPortableバージョンがあり、運用によって使ってください。
Connect via USB/Ethernet
下図に示したUSB PortもしくはEthernetをPCと接続してください。
Start Tool
Ethernet connectionを選択し、PSEN rd1.xのIPをアドレスを入力し、CONTINUEで進みます。(Default IPアドレスは192.168.0.20)
Setup Password
出荷設定に戻ったPSEN rd1.xにPasswordを設定してください。
Hardware Configuration
Hardwareに使用するHardwareを設定し、PROCEEDで進みます。
Country
PSEN rd1.xを実際使用する国を選び、PROCEEDで進みます。
Stationary
PSEN rd1.xのアプリケーションを設定し、END CONFIGURATIONで設定を適用しましょう。
少々お待ち下さい…
Result
Done!
Node ID Assignment
Settings>Node ID AssignmentでRader センサーのCAN IDを設定やリセットしてください。
Factory Reset
また、Administrator>FACTORY RESETでデバイスを出荷設定に戻すことが可能です。
Network parameters
Network ParametersでデバイスのIPアドレスを変更できます。
MODBUS Parameters
MODBUS ParametersでデバイスのModbus TCP Serverを有効化できます。
Fieldbus Parameters
Fieldbus ParametersでPSEN rd1のFSoEアドレスを設定します。
Configuration
今度はConfiguration Tabを開き、PilzのPSEN rd1.xの検知設定を行います。
Radarをクリックし、DF #で設定したいDetection Areaを選択できます。
Detection Fields
こちらは該当するD.F#の検知距離を設定します。
Angular coverage
こちらは各Detection Areaの検知角度を設定します。
Restart timeout
こちらは正常に復旧するまでに必要な遅延時間です。
DF1/DF2/DF3/DF4
他のDetection Areaも設定しましょう。
TwinCAT Side
次はTwinCAT側を設定します。
Download ESI File
下記のLinkからSchmersalのSFB-EC-8M12‐IOPのESI FileをDownloadしてください。
Install ESI File
先ほどDownloadしたESI Fileを下記のDirectoryに格納してください。
(自分が使用してるのはTwinCAT3 4026です)
C:\Program Files (x86)\Beckhoff\TwinCAT\3.1\Config\Io\EtherCAT
Add EtherCAT Master
Devices>右クリック>Add New Itemをクリックします。
EtherCAT>EtherCAT Masterを選びます。
EtherCAT Masterとして使用するEthernet Interfaceを設定します。
Scan network
先ほど追加したEtherCAT Masterを右クリック>ScanしEtherCAT Slaveを検知します。
Done!
Pilz社のPSEN rd1.xも検知できました。
Add PLC
次はPLCプロジェクトを追加するため、PLC>Add New Itemします。
Standard PLC Projectを選び>Addで進みます。
Done!PLCプロジェクトを追加されました。
Add GVL
今度はEL6910と交換する変数を定義するために、Global Variables Listを追加します。
こちらは今回記事で定義した変数になります。
{attribute ‘qualified_only’} VAR_GLOBAL Run AT %Q*:BOOL; Ack AT %Q*:BOOL; CounterError ,CounterOut ,CounterZero AT %I*:BOOL; CounterValue AT %I*:INT; END_VAR |
Build Solution
次はBuild>Build Solutionでプロジェクトをコンパイルしましょう。
Active Configuration
TwinCAT プロジェクトをPLCにDonwloadします。
OKで進みます。
TwinCAT3をRun Modeに切り替えましょう。
Login
LoginでプログラムをDownloadします。
Yesで進みます。
最後はPlayボタンをクリックしPLCプログラムをスタートします。
Add Safety Project
今度はSafety プロジェクトを追加するためにSAFETY>Add New Itemします。
TwinCAT3のSafety プロジェクトTemplateを選び、Addで進みます。
Hardware Safety PLCを選び>Okで進みます。
Done!TwinSAFEプロジェクトを追加されました。
Configure Target System
Target Systemをクリックし、記事で使用するEL6910をTargetシステムとして設定しましょう。
Target Systemの項目から使用するFSoE Masterを設定します。
Drop-ListからEL6910を設定します。
Physical Deviceの隣にあるボタンをクリックし実際EtherCAT ネットワーク内に使用するEL6910を指定します。
Done!
Configure Alias Devices
今度はAlias DevicesのFolderを右クリック>Add >New Itemします。
今回記事で使用するPilz社のPSEN rd1.x 2 Bytesを追加します。
Done!
FSoE Address
Pilz社のPSEN rd1.xのFSoE アドレスを設定に合わせて設定します。
Physical Device
またPhysical Deviceの隣にあるボタンをクリックし、実際使用するPSEN rd1.x Safety Radarを設定します。
Done!
Watchdog
FSoE ネットワークの監視Watchdogをアプリケーションに合わせて設定しましょう。
Error Ack
次はErroAcknowledgementの変数をPLCプロジェクトの変数と繋がります。
Linkedin の隣にあるボタンをクリックします。
先ほどPLCプロジェクトに定義した変数を選択しましょう。
Add new Digital Output/Input
他の変数を追加したい場合は、先と同じ操作でAlias Devices>Add >New Itemします。
Standardを選び、PLCプロジェクトの変数のデータタイプに合わせて設定しましょう。
Result
Done!それらの変数をPLCプロジェクトに定義されたものとつながることも忘れずに。
GVL
安全変数を定義し、Pilz社のPSEN rd1.x FSoEデータと紐つけます。
Safety Program
最後は安全プログラムを作成します。
Network1
Network1ではすべての安全変数をSafetDecoupleFBを使用し内部の安全変数に転送します。
Network3
Network3ではPilz社のPSEN rd1.xのすべての検知エリアもOKの状態のみに、sDetectionFieldOKを出力します。
Network2
sDetectionFieldOKをONするたびにSafetCounterのCount値を+します。
Network4
SafeCounterの状態をPLCプロジェクトの変数に転送します。
Check Safety Program
安全プログラム作成が終わったので、赤枠のボタンで安全プロジェクトをコンパイルします。
Download Safety Program
コンパイル完了した安全プログラムをEL6910にDownloadします。
Login情報を入力し、Nextで進みます。
Complete Project Dataを選択し、Nextで進みましょう。
Download結果を確認し、Nextで進みます。
プロジェクトの状態を確認し、Nextで進めます。
もう一度Passwordを入力し、EL6910を再起動しましょう。
Result
こちらは今回のテスト環境です。
最初にDependenty Modeを無効化します。
次は物体1だけを置きます。
MonitorツールはDF3にものがあると検知しました。
次はDF2にもものを置きます。
MonitorツールはDF2にものがあると検知しました。
今度はDependency Modeを有効にします。
2つの物体をDFエリアに置きます。
DF2,DF3,DF4にもアラーム出力されます。
TwinSAFE側をみると、SafeCounterもちゃんと動いています。