こちらはBerghof MC-PIの新しいシリーズで、安全PLC SC-1000を使用し様々なデバイスと検証し記事を展開します。第2話ではCodesys Safetyのモードやアーキテクチャを簡単に説明し、ライブラリSafety FSoEMasterを利用しFSOEマスター(SC-1000)の状態を取得します。
さ、FAを楽しもう。
Reference Link
http://soup01.com/ja/category/berghof/
ヒントボックス
リアルのアプリケーション上でSC-1000を使用するには、Berghof社に正しいSafety Package Versionを確認した上で使用してください。
CODESYS Safety Extension?
CODESYS Safety Extensionは、セーフティコントローラをプログラミングするためのソフトウェアです。 CODESYS Safety Extensionは、IEC 61508 / 62061のSIL3およびISO 13849のカテゴリ4 Pl-eに準拠したアプリケーションソフトウェアとして、安全アプリケーションの開発に適しています。
安全ソフトウェアの PLCopen コンセプト
機械メーカーがすべての規格に準拠するには、多くの場合、コストがかかり、複雑です。
また、機械やプラントの設計では、アプリケーションの安全関連部分と機能的部分が別々に開発され、最後に組み合わされることが多いです。
現在では、産業用フィールドバスのソフトウェアベースの制御システムと安全プロトコル層により、アプリケーションの安全関連部分と機能部分を最初から統合して開発することができます。関連するすべての安全規格に従い、安全アプリケーションの一般的な基本要件は以下の通りです:
- 安全関数と非安全関数の区別
- 適切なプログラミング言語またはプログラミング言語のサブセットの使用
- 検証済みのソフトウェアモジュールの使用
- 適切なプログラミングガイドラインの使用
- 安全関連ソフトウエアのライフサイクルにおける、認知されたエラー削減手段の使用
このような高い要求を満たすための出費を抑えるため、PLCopen委員会TCはすべてのポイントに対するソリューションをまとめました。 この標準化されたソリューションは、CODESYS Safetyによってあらゆる面でサポートされています。
ソフトウェア・アーキテクチャ・モデル
アプリケーションの安全関連部分と機能部分は、ソフトウェア・アーキテクチャ・モデルでは、それぞれ安全アプリケーション、機能アプリケーションとして表現されます。
アプリケーション
CODESYS Safetyでは、機能アプリケーションは標準コントローラ上で実行され、安全アプリケーションは安全コントローラ上で実行されます。PLCopen の目的は、それぞれのサブアプリケーション用に異なる開発環境を用意する代わりに、機能アプリケーション用の開発環境を安全アプリケーション用に統合して拡張することです。
安全アプリケーション
安全アプリケーションは安全入力を処理し、安全出力を制御します。
機能的なアプリケーション
機能アプリケーションは、安全な入力とグローバル変数にアクセスして読み出すことのみができます。
非安全信号使用範囲
非安全信号は、安全アプリケーションでプログラムフローをチェックするためにのみ使用でき、安全出力(右矢印と AND 演算子で表示)に直接接続することはできません。
非安全信号の制御
機能アプリケーションは非安全入力を処理し、非安全出力を制御できます。
CODESYS Safetyには…
このように、CODESYS Safetyは、標準的なCODESYS開発環境(機能アプリケーション用)を安全アプリケーション開発用に拡張したものです。 機能アプリケーションと安全アプリケーションで構成され、対応する入出力と両者間のデータ交換が行われる完全な機械アプリケーションは、共通のプロジェクトの共通の開発環境で開発されます。
Library ‘Safety FSoEMaster’?
FSoEデバイスの場合は、ライブラリSafetyFSoEMasterのドライバファンクションブロックFSoEMasterを使用します。FSoEデバイスの設定機能は、使用するコントローラがFSoEデバイスをサポートしている場合にのみ使用できます。
Applicable safety standards
FSoE (Fail Safe over EtherCAT) はEtherCAT用に開発されたIEC 61508に準拠したSIL3の安全プロトコルです。安全装置は、FSoE 通信をサポートする安全な分散型フィールド装置です。
モジュール型EtherCATデバイス
それは 同時に複数のパラレルFSoE接続を持つEtherCATデバイスが可能です。 この場合、CODESYSプロジェクトのデバイスツリーには1つのEtherCATデバイスオブジェクトがあり、安全アプリケーションの複数の論理デバイスに接続されます。 各論理デバイスはEtherCATデバイスのFSoEコネクションの1つを設定し管理します。
Function Block
FSoEMaster FBには、以下の機能があります。
- FSoEMasterファンクションブロックが使用されるアプリケーション
- デフォルト値の変更
- エラーを手動で確認する
- 安全装置への接続診断
これを行うには、FSoEMasterファンクションブロックの対応するインスタンスを、VAR_EXTERNAL‹device name›によってプログラム内で紐付けする必要があります。
現状と診断
FSoE 通信の状態およびセーフティコントローラが検出した問題は、ドライバ ファンクションブロックの出力 DiagCode で診断できます。
診断は2つのカテゴリーに分けられます:
- 16#8XXXは、送信を伴う通信の状態
- 16#CXXXエラー状態
State | Values for XX | Description |
Reset | 0x64 | 接続がリセットされる(出力が安全状態になる)。 |
Session | 0x65 | セッションIDが送信される(出力はセーフ状態) |
Connection | 0x66 | コネクションIDが送信される(出力はセーフ状態) |
Parameters | 0x67 | パラメータが送信される(出力は安全な状態にある) |
Data | 0x68 | プロセスデータや代用値が送信される。S_ActivateOut = TRUE: プロセスデータの送信S_ActivateOut = FALSE: 代理値の送信 |
エラー状態
FSoEMasterに同時に2つのエラーがある場合、優先順位の高いエラーのみが表示される。 エラーの優先順位はエラーカテゴリーに従って割り当てられます:
- 第1エラーカテゴリー DiagCode = 16#C0xx、初期化エラー
- 第2エラーカテゴリー DiagCode = 16#C1xx、受信機エラーマスター
- 第3エラーカテゴリー DiagCode = 16#C2xx、安全装置から報告されたエラー
VAR_INPUT
変数名 | データ型 | 説明、パラメータ値 |
S_ActivateOut | SAFEBOOL | 出力を制御するための入力TRUE: FSoEMaster はアプリケーションの出力データを安全装置に送信する。 |
S_ActivateIn | SAFEBOOL | 入力を制御するための入力TRUE: 安全装置の有効なプロセスデータがアプリケーションに転送され、アプリケーションのマッピングにコピーされる。FALSE: このサイクルでは、入力の代替値がアプリケーションに転送される。 |
StartReset | BOOL | 起動時にエラーを自動的に確認するための入力 |
AutoReset | BOOL | 中断後の自動承認用入力 |
Reset | BOOL | 手動で確認する |
VAR_OUTPUT
変数名 | データ型 | 説明、パラメータ値 |
S_OutReady | SAFEBOOL | 出力データが有効で、安全装置に送信されたことを示します。TRUE: アプリケーシ ョンの出力データ は有効で、安全デバイ スに送信される。FALSE:代用値が安全装置に送信される。 |
S_InReady | SAFEBOOL | 入力変数に(代用値の代わりに)デバイスからの有効なプロセスデータが含まれているかどうかを示します。TRUE: 有効なプロセスデータ が安全デバ イ ス に受信され、 アプリケーションのイメージに コピー された。FALSE:アプリケーションの入力データが代用値に設定された。 |
Error | BOOL | TRUE=エラー発生 |
DiagCode | WORD | FSoE – 現状と診断 |
OpAckReq | BOOL | TRUE=手動確認を要求する |
tRespTimeMS | TIME | データ交換の現在のサイクルタイム |
tMinRespTimeMS | TIME | データ交換のサイクルタイムの最小値 |
tMaxRespTimeMS | TIME | データ交換のサイクルタイムの最大値 |
時間測定
FSoEMaste FBは、テレグラム処理時間のモニタリング用に 3 つの出力を提供します。 これらの出力は FSoE 通信の診断に使用されます。そのIECタイマーの有効期限は、テレグラム(マスタ->安全装置->マスタ)のサイクル時間として測定される。
測定値を改ざんしないために、有効な回答のみが考慮される。 時間は、安全装置が受信した 2 つのテレグラムの間で測定されます。 このFBは、テレグラムの現在のサイクル時間(tRespTimeMS)、最小サイクル時間(tMinRespTimeMS)、および最大サイクル時間(tMaxRespTimeMS)の両方を供給します。
Codesys Safety オンライン・ファッション
CODESYS Standardと同様に、CODESYS Safetyもオンラインモードをサポートしています。オンラインモードの機能は、安全アプリケーションの開発と検証におけるデバッグと診断に役立ちます。
オンライン・コマンドは、選択されたデバイス・オブジェクト、デバイス・エディター、および選択またはアクティブなアプリケーション・オブジェクトに対して実行できます。
Safe and Unsafe Mode
CODESYS Safetyでプログラムされたセーフティコントローラで可能な2つの動作モードは、SafeとUnsafeです。
Safe Mode?
Safe Modeは、ブートアプリケーションがロードされ、コントローラがデバッグモードで動作しないセーフティコントローラのモードです。 セーフティコントローラは、ブートアプリケーションが実行され、開発者が書き込みによってアクセスしない限り、セーフモードになります。
制御に関しては、書き込みアクセスが行われるとすぐにデバッグモードに切り替わる。 また、コントローラにログインして変数値がCODESYS Safetyに表示されても、コントローラは安全状態のままになります。
t注意するのは、変数値の強制のような書き込みサービスのみが、コントローラをデバッグモードに切り替えます。
また、セーフティコントローラにブートアプリケーションがある場合、 コントローラが起動し、コントローラが安全動作モードになると、 このブートアプリケーションが起動します。 コントローラをセーフ状態からアンセーフ状態に強制的に切り替える場合、 開発者はアンセーフ状態への切換えを確認する必要があります。
Unsafe Mode (Debug Mode)?
安全でないモードは、チェックされていない新しいアプリケーションの実行や、実行中のアプリケーションへの書き込みアクセス(デバッグ)に使用される。
注意するのは、チェックされていないアプリケーションや、実行中のアプリケーションへのアクセスは、危険を引き起こす可能性があります:
- 機械や機械部品の予期せぬ作動による危険
- 安全機能の未実装や誤作動による危険性
- 固定されていない機械部品のテストに起因する危険
- コントローラが接続された機械部品と通信する際に、接続された機械部品にも発生する可能性のある危険(相互通信)
- 人が危険領域に入ることによる危険
Unsafe Modeでは、機械の安全性を組織的な措置で確保しなければならない:
- 危険地帯に人がいないことを保証しなければならない。
- 機械の周辺は、権限のない人が立ち入らないように安全が確保されていなければならない。
- 機械がシャットダウンされたときのみ、その区域の責任者が立ち入りを許可する。
- 危険区域にアクセスできる可能性のある場所には、警告標識を設置しなければならない。
- 必要であれば、緊急時の停止または緊急時のシャットダウン(電気的危険の場合)のためのテクニカルガードを追加すること。
- 非機能的なガードは、有効なガードと混同しないようにマークを付けなければならない。
- 保護されていない機械部品は、すべての危険な作業が要員の視界内にある場合に限り、テストすることができる。
- ネットワークは物理的に分離されているか、ネットワーク内のすべてのコンポーネントも組織的に保護されていなければならない。
Debug Mode
Debug ModeをソフトするにはDebug>Startをクリックしてください。
Application State and Online Mode
ダウンロード「Login to Controller and Switch to Debug Mode」を使用してアプリケーションをコントローラにロードすると、セーフティコントローラは常に unsafe state状態になります。
このアプリケーション状態では、コントローラでデバッグとスタート / ストップを実行できます。また、セーフティコントローラがセーフ状態かアンセーフ状態か、およびアプリケーショ ンが停止状態か実行状態かは、ウィンドウ下端の CODESYS IDEに表示されます。
安全アプリケーションの状態は下記のような色で切り分けます。
- “RUN” , グリーンバック
- “STOP” 、 赤い背景: アプリケーションは一時停止中です。
- “ENDED” 、 赤い背景: 実行時エラーによりアプリケーションが終了しました。
さらに、ログイン状態では、アクティブな安全アプリケーションの隣のプロジェ クトツリーにも安全アプリケーションの状態が表示されます。
- “TELEACCESS” 、グレー背景 テレアクセスによるセーフティコントローラへのアクセス
- “SAFE” 、 ブートアプリケーションが実行されているときは黄色の背景。
- “UNSAFE (BA)” 、 赤い背景: デバッグモードでアプリケーションを起動中。
- “UNSAFE (DL)” 、赤い背景: デバッグモードでアプリケーションをダウンロードした
- “UNLOADED” 、 gray background:現在のアプリケーションがコントローラからアンロードされました(アプリケーションのステータスがなくなりました)。
- “EXCEPTION” 赤背景:ログインが継続する場合、特別な状況下でシステムエラーが発生したことを示す(通常、接続は直ちに中断される)。
Implementation
ライブラリーの追加
今回の記事ではライブラリSafety FSoEMasterを使用するので。SafetyApp>Library Managerで安全ライブラリを追加しましょう。
Add library>SafetyFSOを検索>Safety FSoEMasterを選び>Okでライブラリを追加します。
Safety POU
次はSafety FSoEMaster FBをPOUに追加します。
こちらはCodesys Safetyプログラムの作成画面です。
Empty Boxを挿入
ネットワーク1を選び>右クリック>Insert Empty Boxで新しい機能Boxを追加します。
Done!これで新しいBoxが追加されました。
FSoEMasterファンクション・ブロックの挿入
先程追加したBoxにある…部分をクリックし、FSoEMasterを入力します。
Done!FSoEMaster FBが追加されました。
インスタンスの変更
次はFSoEMaster FB本体の上にある項目をクリックし、Instanceを変更します。
Instance>FSOESを選び、OKで進みます。
Done!それでFSoEMasterをSafety POUに呼び出しました。
パラメータの割り当て
今度はFSoEMasterのパラメータを設定します。下図のように入出力も有効にします。
安全 PLC ログイン
安全プログラムを安全PLCにLoginするため、Drop-listからSafety Appを選択します。
Loginボタンをクリックします。
SC-1000にLoginするには、そのモジュールのシリアル番号が必須です。
SC-1000の本体にシリアル番号が印字されています。
先ほど赤枠に示している番号を入力しましょう。
次は安全アプリケーションを一時的にDownloadするか、ブートアプリケーションとして生成するかを選択できます。
今回の記事ではブートアプリケーションとして使用したいので、下図の赤枠をクリックしましょう。
Safety PLCのパスワード入力が求められます。Default上ではPasswordなしなので、空欄のままでOKをクリックしましょう。
Yesで進みます。
Done!
安全 PLC スタート
最後はSafety PLCのRuntimeもRun モードにしましょう。
結果
Done!S_OutReadyとS_InReadyにもTUREになり、FSOEのReptimeにも取得できました。