PhoenixContact#PSR セーフティモジュール_Part03_EtherCATでTwinCATと接続しよう

こちらは新しいシリーズで、Phoenix Contact社のPSR-M-B3-SDI8-SDO4-DO4-PIセーフティモジュールを利用し様々な記事を展開していきます。第3話はでは、

  • EQの外部出力設定
  • EIの外部入力設定
  • Connector In/OUTの使い方
  • EtherCATの設定方法
  • Beckhoff TwinCAT3と接続・プログラム例

をメインにします。

さ、FAを楽しもう。

Reference Link

http://soup01.com/ja/category/phoenixcontact%e3%83%95%e3%82%a8%e3%83%8b%e3%83%83%e3%82%af%e3%82%b9%e3%82%b3%e3%83%b3%e3%82%bf%e3%82%af%e3%83%88/psr-ja/

TCP/IPによる通信

PSR-M-B3 ベースモジュールでは、USB インターフェースの代わりに RJ45 インターフェースを使用して TCP/IP プロトコルで通信を行うこともできます。また、今回の記事では使用するFieldbus Bus領域のみ説明します。

以下のプロトコルが使用可能です:

  • EtherNet/IP
  • Modbus/TCP
  • PROFINET
  • EtherCAT

Master status (2 bytes)

ベースモジュールのステータス(マスタステータス)は、デフォルト PLC の入力でモニタできる:

Status of the inputs (16 bytes)

入力状態」エリアは 16 バイトのサイズで、最大 128 の入力状態を検出することができます。プロセス・イメージには、直接物理的な入力(実際の端子台)は表示されず、対応する入力ファンクション・ブロックの出力状態のみが表示されます。

Status of external inputs (4 bytes)

external inputsエリアは最大4バイトのサイズを持ち、標準的なPLCの最大32個の外部入力の状態を処理できる。

Status of external outputs (4 bytes)

external outputsエリアは最大4バイトのサイズで、最大32個の外部出力信号の状態を処理することができる。

External output signal (EQ)

ファームウェアバージョン 2.0 の PSR-M-B2 と PSR-M-GW では、最大 32 の外部出力信号を選択できます。フィールドバスレベルでは、PSR-M-B2 は 4 バイト、PSR-M-B1 は 2 バイトで状態を表します(最大 16 の外部出力信号)。注意するのは、外部出力信号は安全出力ではありません。

External input signal (EI)

外部信号の機能により、フィールドバスレベルからの非安全関連入力を統合することが可能です。PSR-M-B1では最大8点、PSR-M-B2では最大32点のフィールドバス入力を使用できます。

使用する各外部入力信号は “Property “ウィンドウでビットを割り当てる必要があります。フィールドバス・レベルでは、PSR-M-B2 または PSR-M-B3 は 4 バイト、PSR-M-B1 は 1 バイトで状態を表します。

注意するのは、外部入力信号(EI)は安全入力ではなく、安全関連以外の機能(イネーブル)にのみ適していることです。

CLOCKING

この演算子は、”In “入力が論理 “1 “の場合、設定された周期のクロック信号を出力し、デューティ・サイクルを生成するための最大7つの入力がある。

パラメータ

次はパラメータを説明します。

Time

10ミリ秒から1098.3秒の間の時間を入力できる。

Scale

  • 0.01秒~60.0秒(10ミリ秒単位)
  • 60.1秒~1098.3秒(100ミリ秒単位)

Duty cycle choice

出力信号の7つの異なるデューティ・サイクルに対して、最大7つの入力を選択できます。

アクティブな入力に応じて、クロック信号は “Out “で対応するデューティ・サイクルを持つ。In “入力は常にロジック “1 “に設定されなければならない。以下の表は、”CLOCKING” オペレータの操作方法を示している。

出力タイムチャート

Out “出力で希望のクロック信号を生成するには、”En “入力と “In x%”入力でクロック信号を選択(制御)します。

  • デューティ・サイクル90%のクロック信号生成は、「In 10%」入力と「In 80%」入力の両方を並列制御することによってのみ達成できる。
  • 複数のクロック信号入力が制御される場合、「Out」出力は50%のデューティ・サイクルを生成する(例外:「In 10%」と「In 80%」)。

Implementation

こちらは今回の記事の構成です。

PSR Side

最初にPhoenix ContactのPSR-M-B3コントローラーから構築します。

Network Parameters

PSRコントローラーのFieldbusパラメータを設定するにはVisual Configurationをクリックします。

こちらはPSRコントローラーのConfiguration画面になります。

Drop-Down ListからEtherCATを設定します。

次は下記にあるNetwork Parametersをクリックします。

Enanble Fieldbus analog DataとEnable Fieldbus Speed dataのCheckboxを入れ→OKします。

下記のCheckboxを入れます。

最後はOKをクリックし、設定を保存します。

Flow

こちらはPart2のFlowです。

ESTOPエラーにEQを追加

左にあるItems>Output>EQをFlowに追加します。

Done!

ESTOP部品のエラー出力を先程追加したEQと接続します。

Done!次はEQをクリックし、Property画面を開きます。

Bit0をCheck入れ、それでFieldbus出力データ0Bit目と接続することになります。

EQ部品が”EQ 0”に変わり、この部品は0Bit目だと分かります。

また、PropertyにはItem description欄で該当する部品の説明文を入力可能です。

Done!そのItem descriptionの説明文がそのままFlowの部品に反映されます。

ESTOP OUTにEQを追加

先ほどと同じ操作でEQ1(Fieldbus 1Bit目)を追加します。

新しいページを追加する

PSR Modular ソフトウエアにはプロジェクトに複数のページを追加することができます。この機能を使用し、安全機器ごとにページを分けることが可能です。

Done!新しいページが追加されました。

Clocking追加

Timers>ClockingをFlowに追加します。

Done!

次はTRUE部品(常時ON)をFlowに追加します。

Done!

下図のように、TRUE部品をCLOCKINGのENと接続し、OUTをEQ2(Fieldbus 2Bit目)と繋がります。

また、Clocking PropertyにはON/OFFのタイミングを設定できます。

接続ロジックの追加

次は異なるページの変数を交換するロジック例を追加します。まずOperator>Logic>Or部品を追加します。

Done!

Or部品のPropertyではInの数を変更できます。

ORのInput数は2-8まで設定できます。

こちらはInput数=8️のときのOrブロックになります。

EIを追加

次はItems>EI部品を追加します。

Done!

EIのPropertyの0にCheckboxを入れ(Fieldbus Bit0)ます。

Done!

EI0とEI1をORの入力と接続します。

Connector Out追加

次は他のページにも使用するために、Connector Out部品を追加します。

Done!

Connector Out部品のPropertyにある”Connection name”にConnector名を設定します。

Done!

その他のリセット・ロジックの追加

Part2で作成したPSR-M-B3コントローラーのリセット回路を修正します。まずOR部品を追加します。

次は本来のLINEを選び→右クリック→Deleteします。

それでRESTART INPUTのOUTとRESETのINの接続を削除しました。

数のようにOR部品のIN1をとOUTを接続します。

先ほどページから追加した変数を使用したいので、Conenctor Inを追加します。

Done!

Connector InのDrop-listから先程定義したConnector Outを設定できます。

Done!

最後はOR部品のIn2とそのConnector Inと接続します。

EQの追加

OR部品の出力をEQ3(Fieldbus Bit3)と接続し、現在のリセット状態を上位コントローラーにFeedbackします。

ダウンロード

最後はプロジェクトをPSR-M-B3コントローラーにDownloadしてください。

TwinCAT3 Side

次はTwinCAT側を構築します。

ESI Fileダウンロード 

下記のLinkからPSR コントローラーのESI FILEをDownloadしてください。

PSR-M-B3-SDI8-SDO4-DO4-PI – Safety module – 1300897 | Phoenix Contact

ライセンスを同意し、データをDownloadしてください。

ESIファイルのインストール

先程DownloadしたZIP FILEを解凍し、Ethercat FolderにあるFILEを複製します。

下記のDirectoryに貼り付けます。

C:\Program Files (x86)\Beckhoff\TwinCAT\3.1\Config\Io\EtherCAT

EtherCATコンフィギュレーション

次はEtherCATネットワーク構成を構築します。

EtherCATマスタの追加

I/Oツリー内の「Devices」を右クリックし、「Add New Item…」を選択して新しいデバイスを追加する準備をしている。この操作により、EtherCATやProfinetなど任意の通信プロトコルデバイスをTwinCATプロジェクトに追加できる。

「Insert Device」ダイアログが開き、使用するデバイスの通信プロトコルを選択できるようになっている。今回は「EtherCAT Master」が選ばれている。右側では対象のデバイス種別(PC/CX/BXなど)を選ぶこともできる。

TwinCATが使用するネットワークアダプタを指定する画面が表示されており、複数のNIC(ネットワークインターフェースカード)が一覧になっている。「TwinCAT3 RT(Real-Time)」Driverをインストールしたアダプターを選ぶことで、リアルタイム制御が可能な構成が確立される。

スキャンネットワーク

「Device 1(EtherCAT)」を右クリックし、「Scan」を選択することで、接続されているすべてのEtherCATスレーブデバイスを自動検出する処理が実行される。これにより、物理的に接続されている各ターミナルの構成が自動的にTwinCATに取り込まれる。

Done!Phoenix ContactのPSR-M-B3が見つかりました。

DUT

dutPSRMB3AnalogSpeedIN

PSR-M-B3コントローラーのEtherCAT BYTE・実数の領域に合わせてPROCESS INPUTデータを定義します。

TYPE dutPSRMB3AnalogSpeedIN :
STRUCT
arrBytes AT%I* :ARRAY[0..34]OF BYTE;
arrReal AT%I* :ARRAY[0..39]OF REAL;
END_STRUCT
END_TYPE

dutPSRMB3AnalogSpeedOUT 

PSR-M-B3コントローラーのEtherCAT BYTEの領域に合わせてPROCESS OUTPUTデータを定義します。

TYPE dutPSRMB3AnalogSpeedOUT :
STRUCT
arrBytes AT%Q* :ARRAY[0..3]OF BYTE;
END_STRUCT
END_TYPE

dutPSRMB3AnalogSpeed 

先ほど定義したdutPSRMB3AnalogSpeedINとdutPSRMB3AnalogSpeedOUTをまとめた構造体になります。

TYPE dutPSRMB3AnalogSpeed :
STRUCT
in :dutPSRMB3AnalogSpeedIN;
Out :dutPSRMB3AnalogSpeedOUT;
END_STRUCT
END_TYPE

GVL

最後はGVLに先ほど定義したdutPSRMB3AnalogSpeed構造体を使って変数を宣言します。

{attribute ‘qualified_only’}
VAR_GLOBAL
udtData :dutPSRMB3AnalogSpeed;
END_VAR

Link Input

PSR-M-B3のInputデータをMappingするために、すべてのByteデータを選び>右クリック>Change Multi Linkします。

Pop-upの上にはトータル選択したByte数が表示され、変数を設定します。

また、Real変数にも同じ操作してください。

Link Output

次はPSR-M-B3の出力データをMappingするために、RxPdoを右クリック>Change Multi Linkします。

適切な変数を選び>Okで進みます。

MAIN

最後はMAINプログラムでリセットの出力・そしてPSR-M-B3コントローラー経由で受信した非常停止などのデータを取得します。

PROGRAM MAIN
VAR
iCounter:INT;
xSystemStatusOK :BOOL;
xNoExternalError :BOOL;

xESTOPStatus :BOOL;

xEQStatus0_ESTOPError
,xEQStatus0_ESTOPOUT
,xEQStatus0_ESTOPClock
,xEQStatus0_ResetLoopBack :BOOL;

xResetCommand :BOOL;

fbTON1 :TON;
END_VAR


//
xSystemStatusOK:=GVL.udtData.in.arrBytes[0].0;
xNoExternalError:=GVL.udtData.in.arrBytes[0].1;

//
xESTOPStatus:=GVL.udtData.in.arrBytes[4].0;

//
xEQStatus0_ESTOPError:=GVL.udtData.in.arrBytes[27].0;
xEQStatus0_ESTOPOUT:=GVL.udtData.in.arrBytes[27].1;
xEQStatus0_ESTOPClock:=GVL.udtData.in.arrBytes[27].2;
xEQStatus0_ResetLoopBack:=GVL.udtData.in.arrBytes[27].3;

//
fbTON1(IN:=xResetCommand,PT:=T#1S);
IF fbTON1.Q THEN
xResetCommand:=FALSE;
END_IF
GVL.udtData.Out.arrBytes[0].0:=xResetCommand;

Active Configuration

Active Configurationをクリックし、一回プロジェクトをRuntimeにDownloadします。

OKで進みます。

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

ログイン

LoginでプログラムをDownloadします。

Yesで進みましょう。

スタート

最後はStartボタンでRuntimeのプログラムを実行します。

結果

PSRModular ソフトウエアからFieldbus Monitorボタンをクリックします。

現在PSR-M-B3コントローラーのFieldbusデータを確認できます。

また、TwinCAT3側からPSR-M-B3コントローラー本体の状態・非常停止などの状態の確認、またリセット操作することも可能です。

シェアする

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

フォローする