Phoenxic Contact PLCNEXTとSafety ControllerSPLC1000使用の第2話です。今回はSPLC1000・AXCF3152とSmart ElementのSafety 入力・出力を構築し、Profisafeを通信します。
さ、始めよう!
Reference Link
Thanks!
今回の記事で使用するEPC1522エッジPCはフエニックス・コンタクトJapanが貸してくださったものです。誠にありがとうございます。
フエニックス・コンタクトは1923年ドイツで設立、全世界55拠点、20,300名の従業員が働くグローバル企業です。
“All Electric Society”のコンセプトで、すべての産業セクターで包括的に電動化、ネットワーク化、自動化の実現などのソリューションを提供していくことを掲げています。産業用生産設備、インフラ、エネルギー、電子機器の接続など様々な用途にフエニックス・コンタクトの製品が使用されています。
日本のフエニックス・コンタクト株式会社は1987年12月に、アジアで初の現地法人として横浜で設立され、現在は国内10営業拠点で事業を展開しています。
HPはこちらです。
https://www.phoenixcontact.com/ja-jp/
SPLC1000 with PROFisafe
こちらはPROFISafeシステムの概要図です。
As the F-Host in PROFIsafe
SPLC 1000 は PROFIsafe 用の強力な 2 チャンネル安全関連コントローラです。PROFIsafe プロトコルは、 PLCnext Control デバイスと PROFINET ネットワークを介して伝送されます。安全機能は PLCnext Engineer ソフトウェアでプログラムされ、SPLC 1000 は PROFIsafe システムの安全機能を監視、制御します。
As the F-Device in PROFIsafe
SPLC 1000 は RFC 4072S・Siemens FCPU のようなSafety Controller上でF-Device として操作できます。
In the event of an error / Safe state (Failure State)
SPLC1000の統合診断機能は、すべての重大なエラー・プログラムされた安全機能の喪失につながるかエラー・様々または不利な影響を与える可能性が発生したエラーを検出できます。そのとき、デバイスが安全状態(Failure State、故障状態)に切り替わり、F デバイスの安全出力はゼロ(FALSE)になります。
また、安全状態は FS (Failure State) LED が赤く点灯することで表示されます。
エラーが発生した場合、PLCnext EnginnerとCPUを接続すれば、エラーに関する情報もPLCnext Enginnerから確認できます。
Passivation and reintegration
SPLC 1000 と F-Device 間が通信エラーにより中断された場合、F-Device はパッシブ化”passivation”されます。そpassivation状態はFデバイスが通信中断された状態から起動しないような仕組みです。
Fデバイスのpassivation状態はPLCnext EnginnerからBool変数として扱っています。
また、PLCnext Enginnerが各 F-Device に対して自動的に生成し、これらの変数を使用してアプリケーションプログラムからパッシベーションまたは再統合することもできます。
Passivation 状態のF-Deviceに Operator acknowledge 要求がある場合、PROFIsafe 特有の acknowledgment を使用します。また、安全とは関係ない信号を使 うことができます
Smart Element
Installation
Smart Elementとそのスロットは、機械的に一方向にしか挿入できないように設計されています。こちらはInstallする手順です。
- Smart Elementをスロット(A)に垂直に挿入します。
- リリース機構をガイドの奥まで押し込みます(B)。
Remove
こちらはUninstallする手順です。
- Smart Elementを取り外す前に、挿入されているケーブルを取り外してください。
- Smart Elementをスロットから取り外すには、リリース機構を垂直に上に引きます(A)。
- Smart Elementをスロット(B)から引き出します。
AXL SE PSDO4/2 2A
AXL SE PSDO4/2 2 A Smart Elementは PROFIsafe システムで使用す るように設計され、Smart Elementは Axioline F バックプレーンを介して Axioline F システムに統合されます。
AXL SE PSDO4/2 2 Aは、1チャネルまたは2チャネルアクチュエータの接続用に設計されています。また、以下の安全機能を実装できます。
- 安全出力
- I/O信号の安全伝送
AXL SE PSDO4/2 2 Aは以下のセーフティインテグリティを達成するために使用できます。
- IEC 61508に準拠したSIL 3まで
- EN 62061に準拠したSILCL 3まで
- 最大Cat. EN ISO 13849-1に準拠した4/PL e
Structure
Terminal
LED
詳しくはManualを参考にしてください。
Process data words
こちらはAXL SE PSDO4/2 2AのProcess Dataです。
実際Smart Elementsをプロジェクトに追加したら、データが自動生成されます。
AXL SE PSDI8/3
AXL SE PSDI8/3 Smart Elementは PROFIsafe システムで使用す るように設計され、Smart Elementは Axioline F バックプレーンを介して Axioline F システムに統合されます。
AXL SE PSDI8/3 は、1チャネルまたは2チャネルセンサーの接続用に設計されています。また、以下の安全機能を実装できます。
- 安全入力
- I/O信号の安全伝送
AXL SE PSDO4/2 2 Aは以下のセーフティインテグリティを達成するために使用できます。
- IEC 61508に準拠したSIL 3まで
- EN 62061に準拠したSILCL 3まで
- 最大Cat. EN ISO 13849-1に準拠した4/PL e
Structure
Terminal
LED
詳しくはManualを参考にしてください。
Process data words
こちらはAXL SE PSDI8/3のProcess Dataです。
Internal bus
Axioline F ステーション内のInternal busは、左揃えで構成され、Internal bus値のSPLC 1000の内部ランタイムCycle timeは、SPLC 1000の1 Cycleに相当します(TZSPLC).。
SPLC 1000 のサイクルタイムは、PLCnext Engineer で 5 ms から15 msまで の間で設定できます。( Default TZSPLC = 5 ms)
Implemenation
SPLC1000には最大32台のF-Deviceを接続できます。Manualにより最大のデータサイズは以下になります。
Configuration
PLCNEXTでIO変数に使用できる最大アドレス領域の合計は以下になります。
- 標準入力データ(NSI、入力交換領域)の合計は、128 バイト(データ方向 “I”:SPLC 1000 標準コントローラ)が最大です。
- 標準出力データ(NSQ、出力交換領域)の合計は、128 バイト(データ方向 “Q”:SPLC 1000 標準コントローラ)が最大です。
Module1
AXL SE PSDO4/2 2A安全出力を設定します。
Safety Parametersの設定画面が表示します。
F_Source_Address
F_Source_Addressは、 F-Host (Profisafe Controller)を識別するために設定するパラメータです。そのF_Source_Address はSafety Controllerに割り当てられ、このSafety Controllerに割り当てられたすべての通信関係に使用されます。F_Source_Addressの値は0decから65534decの間で、ネットワーク全体で一致する必要があります。
PLCNEXT EngineeringではF_Source_Address Defaultが1024で、必要がなければDefault値にKeepしましょう。
F_Dest_Add
PROFIsafe では、F-Device は F-Address で識別されます。
F-Address は各安全機器に一意 に割り当てる必要があります。PROFIsafe の宛先アドレス
F_Dest_Add (F_Destination_Address)は安全 機器を一意に識別するために使われ ます。
このアドレスは、DIP スイッチを介して F-Device で定義され、PLCnext Engineer ソフトウェアに入力された直後にチェックされます。 PLCnext Engineerは入力されたアドレスが構成されたネットワーク内で一意であるか、また範囲が正しいかをチェックします。
有効な設定範囲:0dec から 65534decまで、他のデバイスと重複できません。
今回の記事ではこのModuleをF_Dest_Add=1にします。
Assignmentは1対1の出力か、1対2の出力かを設定など細かい設定できます。今回の記事はUsed.1-channel bothを設定します。
Module4
F_Dest_Addを3に設定します。
Input00 Channel 1/Channel2の入力パラメータを設定します。Assignmentは”Double-channel equivaient”に設定することによって、Input0は1:2の入力設定になります。
DIP Switch
F_ParametersからF_Dest_Addを設定しましたが、Smart EleemntのDIPスイッチもその設定値に合わせる必要があります(Siemens ET200SPのように直接エンジニアツールからAssign Safety Addressを設定できるデバイスもあります)。
F-Addressの設定範囲は1‐3FEまでになります。
こちらは実際にSafety Smart ElementsのDIPスイッチの場所です。
Safety PLC Variables
SPLC 1000 は、デバイス内部 F-Host の通信関係の監視と制御をサポートし、PLCnext Engineer ソフトウェアから必要なMonitoringや制御データを設定できます。
PLCnext Engineer Defaultで、安全関連コントローラのデータリスト内の各 F-Device に対して 7 つの安全関連以外の管理 / 診断変数を作成できます。アプリケーションで必要な場合は、PLCnext Engineer からCreate/Do not createで有効・無効できます。
PLCnext Engineer でこれらの変数を標準コントローラの安全関連以外の交換変数にリンクできます。なので、ユーザはソフトウェアで安全関連以外の交換変数を定義する必要があります。手順と今回記事で使用したSafety PLC Variablesをこれから説明しますので、心配しないでください。
下図のようにF_ADDR_XXXX_XXXXの変数が生成されました。
F_ADDR_XXXXX_
PLC Engineeringは各F-Devicesの変数MappingをF_ADDR_XXXX_VariablesNameのようなルールで生成します。例えばF-DevicesをF_Dest_Add=1の場合は、F-Devices1の変数名はF_ADDR_0001_XXXXになります。このルールはSiemensのSafety PLCと同じです。
F_ADDR_XXXXX_ACK
F_ADDR_XXXXX_ACK_REI :BOOL
F-Device XXXXXがオペレーターによる確認要求を必要とする場合(F_ADDR_XXXXX_ACK_REQ=True)、その変数をF_ADDR_XXXXX_ACK_REIをFalse>TrueにすればOkです。
F_ADDR_XXXXX_ACK_REQ :BOOL
F-Device XXXXX はエラーを解除した後、オペレーターに確認を要求する信号です。
True=オペレーター確認要求中。
F_ADDR_XXXXX_ACK_REQ=Trueの理由:
- 通信エラー(CRC、F_WD_TIME_OUT)
- Fデバイスのエラー
F_ADDR_XXXXX_PASS
F_ADDR_XXXXX_PASS_ON :BOOL
True=該当するF-Devicesがパッシベートの状態にします。
注意するのはこの変数を FALSE にリセットすると、安全な入出力データがただちに送信されます。F-Device のパッシベート状態をリセットしたとき、システム/機械が危険な状態にならないように気をつけてください。
F_ADDR_XXXXX_PASS_OUT * :BOOL
True=F-Device XXXXX がパッシベートされてます。
パッシベーションの理由は:
- F_ADDR_XXXXXX_PASS_ONによるプログラムパッシベーションシステム変数
- 通信エラー
- デバイスエラー
- パラメータ設定エラー
F_ADDR_XXXXX_DEVICE_FAULT : BOOL
Fデバイスのエラー状態を示します。この変数がTRUEに設定された場合、まずエラーの原因を取り除いて、確認応答を実行する必要があります。確認応答するには以下のデバイスをTrueにしてください。
- F_ADDR_XXXXX_ACK_REI
- ACK_REI_GLOBAL
エラー原因が取り除かれた場合、F_ADDR_XXXXX_DEVICE FAULT 変数が再び FALSE になります。
F_ADDR_XXXXX_CE_CRC :BOOL
FデバイスのCommunication error (F_CE_CRC)状態を示しています。
このパラメータは、以下の理由の少なくとも 1 つに該当する場合にTrueになる:
- F-HostとF-Device間のパラメータ設定の不一致
- F-Host と F-Device 間で通信エラーが発生しています
例えば、F-Device が動作中に不正な CRC チェックサムに起因する通信エラーを検出した場合を検出されたときは、まずエラーの原因を取り除いて、確認応答を実行する必要があります。
確認応答するには以下のデバイスをTrueにしてください。
- F_ADDR_XXXXX_ACK_REI
- ACK_REI_GLOBAL
エラー原因が取り除かれた場合、F_ADDR_XXXXX_CE_CRC 変数が再び FALSE になります。
F_ADDR_XXXXX_WD_TIME_OUT : BOOL
FデバイスのCommunication error (F_WD_TIME_OUT)状態を示しています。
Fデバイス のパラメータF_WD_Time が超えると通信エラーを検出した場合に設定する。動作中にこの変数が TRUE になった場合、まずエラーの原因を取り除いて、確認応答を実行する必要があります。
確認応答するには以下のデバイスをTrueにしてください。
- F_ADDR_XXXXX_ACK_REI
- ACK_REI_GLOBAL
エラー原因が取り除かれた場合、F_ADDR_XXXXX_WD_TIME_OUT 変数が再び FALSE になります。
SPLC
F_ADDR_XXXXのようなSafetyデバイス変数以外に、SPLCという構造体変数からSPLC1000の内部状態にアクセスできます。
Safety PLC>SafetyTask(1)>S_Mainを開きます。
Data ListにはSPLCという変数があります。
SPLCを選択し>右クリック>Add to WATCHESします。
一番上のSPLC変数を選択し>Okで確定します。
Done!いまSPLC1000と各LAN Port状態などを確認できます。
Mapping
次はSPLCとAXCF 3152間のMappingを行います。
Smart Element <‐‐‐>SPLC1000
最初は各Safety Smart ElementのProcess I/OをSPLC1000とMappingします。
Safety PLC>Data Listを開いて、安全入力と安全出力変数を定義します。注意するのはTypeはSAFEBOOLで、I/Q/MのFieldはIとQを設定してください。
(I=INPUT,Q=OUTPUT)
Iは安全入力のProcess Data、Oは安全出力のProcess Dataに設定しましょう。
Done!
AXCF3152 <‐‐‐>SPLC1000
SPLC1000とSmart Element間の変数をMapping終わったら、今度はAXCF3152とSPLC1000間のデータを紐つけます。
AXCF3152の実行プログラムを開いて>Variablesから2つのExternal変数を定義します。
IEC61131-3 Fieldをクリックすると、先程定義した変数が表示されます。
nSafetyCh1 nSafetyOutを右クリック>Add Variable(Safety PLC)で安全変数を追加します。
Done!いまAXCF3152と紐付けられた安全変数Mappingができました。
S_Mainを開いたらnSafetyCh1、nSafetyOutも使用できるようになりました。
Program
最後は簡単なSafety プログラムを作成します。
Network1
Smart Element安全入力は1対2に設定されるので、Ch1=TrueはIN0のCh1、Ch2両方とも信号があると示しています。そして両方ともONするとSmart Element安全出力モジュールのOUT0を出力します。
Network2
F Device0001がACK(ACK_REQ)が必要な場合、自動的に(ACK_REI)リセットします。
Network3
F Device0003がACK(ACK_REQ)が必要な場合、自動的に(ACK_REI)リセットします。
Network4,5
現在2つの安全I/OデータをAXCF3152の変数に転送します。
Result
nSafetyCh1がTrueになると、nSafetyOutもTrueになり出力します。
nSafetyCh1がFalseになると、nSafetyOutもFalseになり出力します。
実際プログラムの状態です。(安全入力がFalseの状態)
実際プログラムの状態です。(安全入力がTrueの状態)
こちらの動画から実際の動作を確認できます。