Codesys#Beckhoff のEL6910でFSoE,TwinSAFEを使ってみよう

こちらの記事ではCodesysとCODESYS SAFETY FOR ETHERCAT SAFETY MODULEを利用し、BeckchoffのEL6910のSafety ロジックをCodesysから構築します。

さ、はじめよう!

Reference Video

Codesys.EL6910 TwinSAFEを使ってみよう

Beckhoff.Let’s play with TwinSAFE_Part1.JP

Reference Link

Beckhoff#TwinSAFE EL6910 Safety Program Tutorial_Part1
Beckhoff#TwinSAFE EL6910 Safety Program Tutorial_Part2
OMRON#SL5700 x ECC203でEtherCAT/FSoEネットワークを構築してみよう

CODESYS extension for EtherCAT?

BeckhoffのTwinSAFE logic modules EL6900、EL6910、EK1960を使用したEtherCAT based safety solutions向けのCODESYS拡張機能を、CODESYS EtherCATマスタースタックを搭載したCODESYSコントローラの下で使用できます。それによって、独自のSIL3セーフティコントローラを開発したくないユーザーや制御メーカーに、機械やプラントの安全な自動化のための柔軟で経済的なソリューションを提供します。

安全I/Oと安全モジュールは標準I/Oとドライブと共にEtherCATフィールドバス上で動作します。CODESYSセーフティfor EtherCATセーフティモジュールはCODESYSを拡張し、機能安全アプリケーションの開発に必要なすべての機能を含みます:

  • TÜV認証製品により、EtherCATコントローラを備えたCODESYSプロジェクトをCODESYSで拡張することができます。
  • BeckhoffのEtherCATネットワーク上のTÜV認証済みセーフティロジックモジュール、デジタルFSoE I/Oモジュール、アナログTSC入力モジュールを使用したセーフティ機能開発のためのEtherCATマスタスタックです。
  • 安全専用のエディタとコンフィギュレータを備えた拡張機能は、CODESYS開発システムとCODESYS EtherCATコンフィギュレータにシームレスに統合されています。
  • システム統合や適応にかかるコストは削減でき、受け入れにかかる費用も少なく済み、シンプルな安全アプリケーションをコスト効率よくスケーラブルに実現できます。
  • 安全レベルはDIN EN ISO 13849に準拠したPL-eまで
  • IEC 62061/61508に準拠したSIL3まで(入出力装置およびプログラムされたロジックによる)
  • ISO 13849およびIEC 62061に準拠した限定可変プログラミング(LVL)
  • Beckhoffのロジックモジュール EL6900またはEL6910はEtherCAT Camp(TwinSAFE-Logic)として、またEK1960をEtherCATカプラ(TwinSAFE-Compact Controller)として使用できます。
  • デジタルSIL3 I/Oモジュール: FSoEモジュール (Failsafe over EtherCAT) は各社のESI FileからCodesys IDEにインストールし、使用します。
  • アナログSIL2入力モジュール
    • EL3124-0090、EL3174-0090 (differential)
    • EL3214-0090 (for resistance sensors), EL3314-0090 (for thermal element)
    • EL3356-0090 (for weight cell/resistance bridge)
    • Encoders/givers 
      • EL5001-0090 (SSI)
      • EL5021-0090(Sin/Cos)
      • EL5032-0090 (EnDat2.2)
      • EL5101-0090 (incremental differential RS422)
      • EL5151-0090(incremental)
  • 標準コントローラの操作機能とフィールドバスコンフィギュレーションは、セーフティロジックモジュールの安全機能に影響を与えることなく変更できます。
  • 標準信号をEtherCATコントローラと交換できます。
  • EtherCATネットワーク内で複数のセーフティロジックモジュールを使用可能。
  • Groups: FBD 言語の IEC 61131-3 POU で、安全アプリケーションを関連ロジックを持つ I/O モジュールのGroupsに分割することにより、1 つの安全ロジックモジュールで複数の安全エリアの監視が可能で、また、各グループは、標準アプリケーションによって個別に開始、停止、診断、エラー確認が行われます。
  • Optional devices: 機械内に安全エリアがない場合、EL6910とEK1960は、アプリケーションを変更することなく、オンラインコマンドで対応するグループを非アクティブにすることができます(恒久的、一時的、パッシベート)。

Configuration and programming directly in CODESYS

Devices

デバイス セーフティロジックモジュールとセーフティI/Oモジュール (FSoE と TSC) がEtherCATデバイスツリーに追加できます。

Exchange

安全性と標準の間で交換される変数は、特別なリスト・オブジェクトで定義できます。

Groups

各安全 POU と使用される I/O モジュールはグループを表し、グループ・ステータス・フラグは交換された変数にマッピング可能です; defining the allowed group deactivation  methods(EL6910/EK1960 only)

Safe versioning

アプリケーションエディタに表示される、安全アプリケーションと各 POU およびデバイスのバージョン識別と CRCで現在の安全プロジェクトVersionを確認できます。

Safety Configurator for I/O Modules

Codesys Safety IDEは各FSoE Terminalに以下のパラメータを設定できます。

  • FSoE parameters
  • Application-related module parameters
  • Symbolic mapping of I/O points

Safety FBD Editor for Group Logic

Codesysは制限付きIEC 61131-3 ファンクションブロック図 (FBD) 事前に定義された認証済み安全関連ファンクションブロック、物理的入出力、およびEtherCATコントローラと交換される変数の相互接続が可能になります。

Online

CODESYS IDEには以下のOnline機能に対応します。

  • 安全FBDエディタでのオンラインモニタリング機能を利用し、CODESYSプロジェクトナビゲーションでのグループの状態を確認。
  • セーフティロジックモジュールからの診断メッセージ
  • On-Board User管理の設定
  • Safety Groupの実行状況と停止
  • モジュール交換対応
  • 標準コントローラから安全アプリケーションをDownload

Predefined Safety Function Blocks

CODESYSのライブラリには、FBDエディタで使用するためにセーフティロジックモジュールにあらかじめ定義され、工場安全の認証済みセーフティファンクションブロックが記述されています。

FB_ESTOP

FB_EStopファンクションブロックを使用して、最大8つの非常停止入力(bEStopIn1~bEStopIn8)を持つ非常停止回路を実装できます。コンテキストメニューの “Negation “コマンドを使用して、8つの入力をそれぞれネゲートすることができます。

入力が安全状態を要求すると、最初の出力(EStopOut)は直ちに安全状態(“0”)に入り、2番目の出力(EStopDelOut)は設定可能な時間遅延後に安全状態に入る。

FB出力を複数の出力にリンクできるため、1つのFB_EStopで複数の即時スイッチオフ出力(bEStopOut)または遅延スイッチオフ出力(bEStopDelOut)を実装できます。出力の安全状態を終了するには、Restart入力で0->1->0の信号シーケンスを認識する必要があります。

VAR_INPUT

VariableTYPEDescriptions
bRestartSAFEBOOL開始時(関連するPOU(TwinSAFEグループ)が開始された時)または再起動時(入力が安全状態を要求した場合)、出力の安全状態を解除する前に、Restart入力で信号シーケンス0->1->0を認識する必要があります。
bEStopIn1SAFEBOOL1 番目の入力チャンネル:入力がノーマルクローズ接点として動作するか、またはノーマルオープン接点(メイク接点 – ロジック 1 で安全状態が要求される)として動作するかを指定できます。
bEStopIn2SAFEBOOL2番目の入力チャンネル信号
tDiscTime12SAFETIME入力グループ1(In1+In2)の不一致時間
bEStopIn3SAFEBOOL3番目の入力チャンネル信号
bEStopIn4SAFEBOOL4番目の入力チャンネル信号
tDiscTime34SAFETIME入力グループ2(In3+In4)の不一致時間
bEStopIn5SAFEBOOL5番目の入力チャンネル信号
bEStopIn6SAFEBOOL6番目の入力チャンネル信号
tDiscTime56SAFETIME入力グループ3(In5+In6)の不一致時間
bEStopIn7SAFEBOOL7番目の入力チャンネル信号
bEStopIn8SAFEBOOL8番目の入力チャンネル信号
tDiscTime78SAFETIME入力グループ4(In7+In8)の不一致時間
bEDM1BOOLbEDM1 は遅延なし出力チャンネル (bEStopOut) のフィードバックループです。この入力がアクティブとしてパラメータ化されている場合、bEDM1が信号 “1 “を供給する場合にのみ、再スタート時に出力の安全状態が終了します。
tEDM1ResetTimeSAFETIMEt#0msに等しくない場合は、出力bEStopOutをオンにした後にタイマーが開始される。この時間内に bEDM1 入力が FALSE にならなかった場合、ファンクション・ブロック・エラーが設定され、出力がオフになる。この入力はEL6900ではサポートされていません。
bEDM2BOOLbEM1と同じく
tEDM2ResetTimeSAFETIMEtEDM1ResetTimeと同じく

VAR_OUTPUT

VariableTYPEDescriptions
bEStopDelOutBOOLSAFE第1出力チャンネル。安全状態はロジック0に対応する。
bEStopDelOutBOOLSAFE第 2 出力チャンネル;安全状態は論理 0 に対応する。安全状態はパラメータ化された遅延時間 tEStopDelOutDelay に従って遅延して出力される。
bErrorBOOLSAFEFALSE: エラーが検出されなかった。

Download

下記のLinkからCODESYS Safety for EtherCAT Safety Module SLのAdd-onをDownloadしてください。

https://store.codesys.com/en/codesys-safety-for-ethercat-safety-module-for-el6900-sl.html

Install Packages

Add-onsがインストールするCODESYS を選択し、Continueで進みます。

ライセンスに同意し、Continueで進みます。

しばらくまちます…

Done!

Implementation

Codesys Side

New Project

File>New Projectで新規Codesysプロジェクトを作成します。

Standard Projectを選び>プロジェクト名を入力し、OKで進みます。

次はCodesys Runtimeを実行するデバイスを設定します。

今回使用するのはEXOR社のex707Mなので、Deviceからex700Mを選びます。

Okでプロジェクトを作成しましょう。

Done!新規プロジェクトが作成されました。

Scan For Network

次はCodesys Runtimeと接続するため、Deviceをダブルクリックします。

Scan NetworkをクリックしEXORのCodesys Runtimeを検索します。

Done!

Configure EtherCAT

EtherCAT Masterを追加するため、Deviceを右クリック>Add Devicesをクリックします。

Fieldbus>EtherCAT>Master>EtherCAT Masterを選び>Add DevicesでEtherCAT Masterを追加しましょう。

Done!EtherCAT Masterが追加されました。

Install ESI File

EtherCAT Slaveを構築するために、Codesys IDEにESI Fileをインストールします。

Tools>Device Repositoryをクリックします。

Installボタンをクリックし、Beckhoff HPからDownloadしたESI Fileをインストールしましょう。

Configure Network Adapter

次はEtherCAT Masterとして使用するEtherent Adapterを設定するため、”Select”ボタンをクリックします。

アプリケーションに合わせて設定しましょう。

Scan Network

Slaveを1つずつ追加してもよいですが、ESI Fileが揃った場合は直接ネットワーク上にあるEtherCAT slaveを検索するのも可能です。

EtherCAT Master>右クリック>Scan for Deviceをクリックします。

CodesysのScan Network画面が表示されるので、少し待ってください。

Done!EtherCAT ネットワークに存在するSlaveがすべて表示され、”Copy All Devices to Project”をクリックしSlave情報をCodesysプロジェクトに複製しましょう。

TwinSAFE with Safety plug-ins

EtherCATセーフティモジュールEL6900とEL6910はEtherCATバスカプラ (例: EK1100) の下のデバイスツリーに追加さ、またEtherCATセーフティモジュールEK1960をEtherCATマスタ配下のデバイスツリーに追加になります。

そして、EtherCAT安全モジュールを挿入すると、論理ノードSafety Logic、安全アプリケーションオブジェクトSafetyApp、ライブラリマネージャ、およびノード論理I/Oが自動的に追加されます。

EtherCATセーフティモジュールはコンテキストメニューのUpdate Device…コマンドを使用してデバイス記述を新しいバージョンに更新できます。これによりライブラリも新しいバージョンに更新されます。

Safety Configuration

今度は各FSOE Slaveの設定を行います。最低限下記の3つのパラメータを設定してください。

  • FSoE address: モジュールの固有EtherCATアドレス。FSoE接続はそれぞれのケースで安全なフィールドバスデバイス(またはその論理I/O)に対応します。
  • WatchdogTime: この時間内にモジュールが応答しなければ、エラーが出力される。
  • Connection ID: EtherCATネットワーク全体で一意の接続番号

EL1904 Slot1

最初は1つ目のEL1904を設定するため、Logical I/OS>FSOEをクリックします。

こちらはFSOE Slaveのパラメータ画面になります。

FSoE Address

EL1904のFSoEアドレスはモジュール本体にあるDIPスイッチから設定できます・

DIPスイッチの設定に合わせて入力してください。

Connection ID

次はFSOEネットワークの接続番号を設定します。

こちらの番号はかぶらないように設定してください。今回はFSOEアドレスと同じように合わせます。

Mapping

こちらのMapping画面で安全モジュールのProcess データを定義します。

下図のようにVariable Fieldで変数を入れればOkです。

Done!

EL1904 Slot2

次は2つ目のEL1904を設定するため、Logical I/OS>FSOE_1をクリックします。

FSoE Address/Connection ID

FSoEアドレスとConnection IDを正しく設定してください。

Mapping

そしてアプリケーションに合わせて必要な変数を定義しましょう。

EL2904 Slot3

最後は3つ目のEL2904を設定するため、Logical I/OS>FSOE_2をクリックします

FSoE Address/Connection ID

FSoEアドレスとConnection IDを正しく設定してください。

Mapping

そしてアプリケーションに合わせて必要な変数を定義しましょう。

Local I/O Configuration

安全Configurationの設定を完了したら、今度はLocal I/O Configurationを行います。まずはEtherCATセーフティモジュールの下にハードウェアモジュールを挿入することはできません。セーフティモジュールや標準モジュールはカプラ (EK1100 など) の下のデバイスツリーに挿入し、EtherCATセーフティモジュールへの接続やデータ交換はいわゆるlogical I/Osを介して行われます。これらのオブジェクトはlogical I/Osノードの下に挿入されます。

Types of logical I/Os

CODESYSは、2つの異なる種類のlogical I/Osを区別します。

logical I/Os of safe field devices

安全フィールドデバイスがデバイスツリーに挿入され、EtherCAT Safetyモジュールが1つしか存在しない場合、一致するlogical I/Oが自動的に挿入されます (I/Oモジュールと同じ名前)。

複数のEtherCAT Safetyモジュールを使用する場合は、対応する論理I/Oを手動で追加する必要があります。その後、この論理I/Oは対応するフィールドデバイスのI/Oマッピングダイアログで選択する必要があります。論理I/Oにはモジュールの全ての安全パラメータが含まれ、全ての安全関連情報を安全アプリケーションで確認することができます。

logical I/Os of global variables

これらのオブジェクトを介してEtherCAT Safetyモジュールと標準コントローラ間で追加データを交換することができます。このためにグローバル変数 (論理交換用GVL) を標準プロジェクトで定義し、EtherCAT Safety Module (論理交換デバイス) 上の対応するlogical I/Oと接続します.

(see Logical I/O for Exchange of Data with the Standard Controllers)

安全アプリケーションの論理 I/O は、物理デバイスまたは論理交換用 GVL ( 標準側の特別オブジェクト ) でデフォルトアプリケーション にリンクされています。これは、入出力信号が安全アプリケーションで処理される各物理デバイスに対して、安全アプリケーションに正確に 1 つの論理 I/O が存在する ことを意味します。同様に、標準コントローラの論理交換のために、各 GVL に対して正確に 1 つの論理 I/O が安全アプリケーションの下に存在します。

Advantages of the logical I/Os

論理I/Oのコンセプトは “CODESYS Safety for EtherCAT Safety Module “セーフティアプリケーションの開発と検証に以下の利点をもたらします:

  • フィールドデバイスの安全パラメーター(PROFIsafe の F パラメータ)のパラメータ化は、安全アプリケーション の論理 I/O でのみ行われます。安全ユーザ管理が設定され ている場合、このパラメータ化は Safety ユーザグループのメンバーによってのみ行われます。
  • 物理的なフィールドデバイスと論理交換用の GVL の割り付けを変更しても、 安全アプリケーションは変更されません。
  • 既に検証され、承認された安全アプリケーションを元のプロジェ クトから切り離して、この新しい安全アプリケーションを再度検証す ることなく、別のプロジェクトに完全に統合することができます。

Add Logical Device

Logical Deviceを追加するため、Logical I/Os>Add Object>Logical Deviceをクリックします。

Logical Devicesの追加画面が表示されます。

8 Bits From Module to PLC

最初にEtherCAT Safety Moduleから標準PLCに送信するSlotを追加するため、”Exchange 8 bits from EtherCAT safety Module to PLC”を選び、AddでSlotを追加します。

Done!

Mapping

I/O Mapping画面を開き、先程FSoEと同じ操作で変数定義しましょう。

Done!

8 Bits From PLC to Module

今度は標準PLCからEtherCAT Safety Moduleに送信するSlotを追加するため、”Exchange 8 bits from PLC to  EtherCAT safety Module”を選び、AddでSlotを追加します。

Done!

Mapping

I/O Mapping画面を開き、先程FSoEと同じ操作で変数定義しましょう。

Safety Program

ここまできて、いよいよ安全プログラムを追加します。

SafetyAppをクリック>Add Object>POU(EtherCAT Safety)をクリックします。

安全プログラムの名前を入れて、Addでプログラムを追加します。

Done!

こちらはCodesysの安全プログラムIDEです。

Properties

安全プログラムを作成する前、POUのPropertiesを設定していきます。

その設定はBeckhoff TwinCAT3でTwinSAFEを使用したときとまったく同じです。

Group IOsのTabを開きます。ここでいくつかのInputs/OutputsをMappingする必要があります。

Inputs
RUN/STOP

POUの処理を開始または停止できる変数(オプション)

ERR Ack

エラーをリセットする変数(必ず定義してください)

Outputs
FB Error

ファンクション・ブロックのエラーを表示する変数(オプション)。

COM Error

通信エラーが表示される変数。(オプション)

OUT Error

ローカル出力のエラーが表示される変数(KL6904のみ)(オプション)

Mapping

それらのGroup IOs変数をMappingするため、各変数の隣にある…ボタンをクリックしてください。

いつも通りのMapping画面が表示され、先程定義したLogical I/Osから選択してください。

Done!

下図のようないすべてのGroup IOsを定義しましょう。

Program

ここまで来て、ようやくプログラムを作る時間です。

Network1

Networkから安全Function Blockを追加するには、下図のように直接ToolboxにあるライブラリをNetworkにDropすればOkです。

Done!Netowork1にはSafetyのTON Timerが追加されました。

後はいつも通りに変数と紐付けていきましょう。

Network2

Network追加するにはIDEの余白のところに右クリック>Insert Networkで新しいネットワークを追加します。

Done!

今度は非常停止を制御するFunction Blockを追加するため、FB_ESTOPをDropしましょう。

Done!

すべての入力・出力パラメータを定義してください。

Non-Safety Program

最後は標準PLC側のプログラムを追加します。

Add Logical Exchange GVL

先程はLogical I/OsをEL6910で定義しましたが、それらのデータを標準PLCと交換するにはLogical Exchange GVLを使用する必要があります。

Add Object>Logical Exchange GVLでGVLを追加しましょう。

Logical Exchange GVLの名前を入力し、AddでGVLを追加します。

Done!

次はLogical Exchange MappingのDrop-listからESM_From_PLCを選択します。

Done!先程追加したLogical I/Os変数がCodesysすべて自動定義してくれました。

次はLogical Exchange MappingのDrop-listからESM_TOo_PLCを選択します。

Done!ほぼ手入力なく必要な変数がすべて自動定義されました。

Program

最後は簡単なプログラムを組みます。

PROGRAM PLC_PRG
VAR
Reset,EstopAck:BOOL;
Run:BOOL;
CommErr,FbErr,OutErr:BOOL;
Estop,EstopDelay,EstopError:BOOL;
myTimerInSafetyPrgOut:BOOL;
END_VAR


Logical_GVL.Ack:=Reset;
Logical_GVL.AckEstopBlock:=EstopAck;
Logical_GVL.Run:=Run;

CommErr:=Logical_GVL_1.CommErr;
FbErr:=Logical_GVL_1.FbErr;
OutErr:=Logical_GVL_1.OutErr;
Estop:=Logical_GVL_1.EStopOut;
EstopDelay:=Logical_GVL_1.EStopDelayOut;
EstopError:=Logical_GVL_1.EStopErrorOut;
myTimerInSafetyPrgOut:=Logical_GVL_1.myTimerOut;

Login

プロジェクトをEXOR パネルにDownloadするため、Loginボタンをクリックします。

Start

アプリケーションを実行するためPlayボタンをクリックします。

Done!EtherCATネットワークが無事に立ち上がり、すべてのNodeも認識できました。

Download TwinSAFE Project

最後はTwinSAFEのプロジェクトをEL6910にDownloadしましょう。

Safety ParametersのTabを開きます。

Download Projectをクリックします。

コマンドを実行する前に、ユーザー管理からユーザーを選択する必要がある。ユーザが選択されていない場合は “Administrator “が使用されます。この機能はオンラインモードでのみ使用できます。Project Downloadコマンドを実行した後、ユーザーはパスワードと端末のシリアル番号を入力しなければ、端末がデータレコードを受け付けない。

PasswordはDefaultでTwinSAFE、Serial Numberはモジュールから確認できます。

生成されたコードをチェックするために、アプリケーションのダウンロード後に自動的に再翻訳が行われます。そのために、翻訳されたコードは再度デコンパイルされ、ソースコード・レベルで比較される。この多様な方法によって、ダウンロードのたびにコンパイラの機能がチェックされます。それにより、ランダムエラーとシステマティックエラーの両方が判定されます。

比較結果(同じまたは異なる)がユーザーに表示されます。EL6900の場合は、比較されたPOUとネットワークの数が表示されます。EL6910とEK1960の場合は、比較したPOUとファンクション・ブロックの数が表示されます。.

再度PasswordとSerial Numberを入力します。

Done!!

Result

SafetyAppはRunになり、POUがStopに変わります。

最後はRun変数をTrueにすると、POUも実行するようになります。

次は非常停止Function Block FB_ESOTPをリセットするため、AckEstopBlockの立ち下げ信号が必要です。

Done!!

こちらの動画から操作の確認ができます。

Codesys.Playing With TwinSAFE

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

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

フォローする