今回の記事ではBeckhoff製の安全コントローラEK1960をTwinCATで立ち上げる手順について解説します。本記事では安全プロジェクトの初期構築を中心に紹介し、次回ではFSOE通信や外部安全IOの接続方法なども順次ご紹介予定。ぜひ今後の展開にもご期待ください!
さ、FAを楽しもう。
前書き
いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。
技術は独り占めせず、届けるもの
私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。
また、もしあなたの現場で…
- 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
- 「EtherCAT通信でうまくいかない部分を検証してほしい」
- 「新しいリモートI/Oを試したいけど社内に検証環境がない」
など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。
支援のかたち
現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。
メンバーシップ(ラジオの応援)
Fullさんとのラジオをより充実させるための支援プランです。
https://note.com/fulhause/membership/join
Amazonギフトリスト
コンテンツ制作に必要な機材・書籍をリストにしています。
https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share
Patreon(ブログ・動画活動への応援)
月額での小さなご支援が、記事の執筆・検証環境の充実につながります。
https://www.patreon.com/user?u=84249391
Palpay
小さな支援が大きな力になります。
https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP
知ってたら助かること、届けたいだけです
あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。
soup01threes*gmail.com
技術はひとりじゃもったいない。
EK1960
EK1960 TwinSAFEコンパクトコントローラは、TwinSAFE統合安全ソリューションの応用範囲を最大化するデバイスです。 セーフティコントローラのコアは、専用セーフティコントローラEL6910の機能に対応しています。
20の安全デジタル入力と24の安全デジタル出力(最大2A)を備えたEK1960のコンパクトな設計により、特にコンパクトな機械の安全要件をカバーします。
EK1960は「スタンドアロン」で動作させることも、EtherCATコネクタを介して他のコントローラとネットワーク接続することもできます。
EtherCATネットワークで動作させる場合は、他のEtherCATカプラと同様に全てのEL/ESターミナルで拡張できます。 スタンドアロンデバイスの場合、ターミナルによる拡張はできません。
TwinSAFE Compactコントローラは、他のTwinSAFEコンポーネントと同様に、TwinCATセーフティエディタでプログラムします。 TwinSAFEプロジェクトを作成し、EtherCAT経由でEK1960にロードします。
EK1960は、128のTwinSAFE接続の確立をサポートしています。 さまざまな安全タスクに柔軟に対応するため、TwinSAFEコンパクトコントローラは、IP20およびIP67のTwinSAFE I/OコンポーネントやTwinSAFEドライブオプションカードと組み合わせることができます。
さらに、Safety over EtherCATプロトコルに加えて、EK1960はTwinSAFE SC技術もサポートしています。 これにより、TwinSAFE SCターミナルからEK1960 TwinSAFEコンパクトコントローラへの安全なデータ転送が可能になります。
EK1960はアナログ信号 (16/32ビット、符号付きおよび符号なし) の処理もサポートしています。 これらの信号は標準、TwinSAFE SCまたはSafety over EtherCAT信号としてロジックに転送できます。 アナログ信号はロジック内で妥当性をチェックできます。アナログ信号の処理には、ADD、SUB、MUL、DIVといった公認のファンクション・ブロックのほか、カウンタ、リミット、コンペアといった複雑なファンクション・ブロックも用意されています。
特徴
EK1960は以下の特徴があります。
- アナログ値処理
- 増分ダウンロード
- コンポーネントに直接診断履歴を表示
- 最大128の安全接続
- 最大128のTwinSAFEグループ
- 最大40ユーザー
- TwinSAFE SCサポート
- スタンドアロン動作(EtherCAT接続なし)
- 20安全入力
- 24セーフ出力
- 4リレー出力(オプション
- 標準出力は、安全出力信号との統合AND接続で起動可能
TwinSAFE address
コントローラのTwinSAFEアドレスは、EK1960 TwinSAFEコントローラのハウジングにある3つのロータリースイッチで設定する必要があります。TwinSAFEアドレスは1〜4095の間で使用できます。
TwinSAFE?
Extension of the Beckhoff I/O system with safety functions
ベッコフのTwinSAFE製品は、ベッコフI/Oシステムにセーフティコンポーネントを追加し、既存のフィールドバスケーブルにセーフティ回路を統合することができます。
安全信号は、必要に応じて標準信号と混在させることができます。 安全関連のTwinSAFEテレグラムの転送は、標準コントローラによって処理されます。 迅速な診断とコンポーネントの簡単な交換により、メンテナンスが大幅に簡素化されます。
TwinSAFEコンポーネントには、以下の基本機能が含まれています:
- デジタル入力 (EL19xx、EP1908など)
- デジタル出力 (EL29xxなど)
- ドライブコンポーネント (AX5805など)
- ロジックユニット (EL6900、EL6910など)。
多くのアプリケーションに対応するため、安全センサとアクチュエータ技術一式をこれらのコンポーネントに配線することができます。また、必要な入力と出力の論理リンクはEL69xxによって処理される。 EL6910では、ブール演算に加えてアナログ演算も可能になりました。
Safety concept
TwinSAFEを一言、簡単にいいますと、安全性とI/O技術を1つのシステムに統合することです。それは、
- 使い慣れたベッコフI/OシステムをTwinSAFEコンポーネントで拡張
- 安全コンポーネントと非安全コンポーネントを必要に応じて組み合わせ可能
- EL69xx TwinSAFEロジックターミナルのI/Oの論理リンク
- EN 61508:2010に準拠したSIL 3およびEN ISO 13849-1:2015に準拠したCat 4、PL eまでのアプリケーションに対応
- バスシステムを介した機械の安全関連ネットワーク化
- エラー発生時には、すべてのTwinSAFEコンポーネントが常にワットレス、つまり安全状態に切り替わります。
- 上位レベルの標準TwinCATシステムに対する安全要件は不要
Safety over EtherCAT protocol (FSoE)
TwinSAFEを支えるのはFSoEです。
- あらゆるメディアを介した安全関連データの転送(「本物のブラックチャネル)
- EtherCAT、Lightbus、PROFIBUS、PROFINET、Ethernetなどのフィールドバスシステムを介したTwinSAFE通信
- IEC 61508:2010 SIL 3準拠
- FSoEはIEC標準(IEC 61784-3-12)およびETG標準(ETG.5100)です。 フェイルセーフ原理(フェイルストップ)
TwinSAFEのような安全システムの基本ルールは、部品やシステム構成要素、あるいはシステム全体の故障が、決して危険な状態につながってはならないということだ。 安全な状態とは、常にスイッチオフの無通電状態である。
安全状態?
すべてのTwinSAFEコンポーネントの安全状態は、常にスイッチオフのワットレス状態です。
Implementation
I/Oデバイスの準備
I/Oデバイスの追加操作
I/Oツリー内の「Devices」を右クリックし、「Add New Item…」を選択して新しいデバイスを追加する準備をしている。この操作により、EtherCATやProfinetなど任意の通信プロトコルデバイスをTwinCATプロジェクトに追加できる。
デバイスの種類選択
「Insert Device」ダイアログが開き、使用するデバイスの通信プロトコルを選択できるようになっている。今回は「EtherCAT Master」が選ばれている。右側では対象のデバイス種別(PC/CX/BXなど)を選ぶこともできる。
ネットワークアダプタの選択
TwinCATが使用するネットワークアダプタを指定する画面が表示されており、複数のNIC(ネットワークインターフェースカード)が一覧になっている。「TwinCAT3 RT(Real-Time)」Driverをインストールしたアダプターを選ぶことで、リアルタイム制御が可能な構成が確立される。
EtherCATデバイスのスキャン操作
「Device 1(EtherCAT)」を右クリックし、「Scan」を選択することで、接続されているすべてのEtherCATスレーブデバイスを自動検出する処理が実行される。これにより、物理的に接続されている各ターミナルの構成が自動的にTwinCATに取り込まれる。
スキャン後のI/O構成確認
スキャン結果として、Device 1(EtherCAT)の下に「Term 1(EK1101)」や「Term 4(EK1960-2600)」といった実際に接続されたターミナルが自動で追加されている。これによりTwinCAT上で実機構成と一致した状態でプログラムを構成できる。
PLCプロジェクト
PLCプロジェクトの追加操作
ソリューションエクスプローラで「PLC」を右クリックし、「Add New Item…」を選択して、PLC制御ロジックを記述するためのプロジェクトを追加する。
「Standard PLC Project」または「Empty PLC Project」のテンプレートから選択し、TwinCATのPLCプロジェクトを作成する画面が表示されている。スタンダードを選ぶと初期構成が自動追加される。
GVL(Global Variable List)の追加
PLCプロジェクト内の「GVLs」を右クリックし、「Add > Global Variable List」を選んで、グローバル変数リストを追加しようとしている。これにより、PLC全体で使用できる変数群を定義可能になる。
新しいGVL(グローバル変数リスト)を作成するダイアログが表示されており、デフォルトの名前「GVL」が入力されている。このまま「Open」をクリックすると新規作成され、プロジェクト内で使用可能となる。
GVLにてグローバル変数 xRun と xError が定義されている。それぞれの変数は、%Q*(出力)として物理I/Oアドレスにマッピングされております。
{attribute ‘qualified_only’} VAR_GLOBAL xRun AT %Q*:BOOL; xError AT %Q*:BOOL; END_VAR |
プロジェクトのビルド
「Build」メニューから「Build Solution」が選択されている。これにより、すべてのプロジェクトがコンパイルされ、構文エラーのチェックや生成されたコードのリンク処理が実行される。
PLCの構成アクティベーション
下図のActivate Configurationを押すことで、TwinCATシステム全体の構成を有効にします。
アクティブ化対象のプロジェクト名とターゲット(通常は <Local>)が表示されます。
必要に応じて「Autostart PLC Boot Project(s)」にもチェックを入れて自動起動設定が可能です。
TwinCATがシステムのライセンス切れた場合、確認用の文字(5文字)を入力することでライセンスの最有効化が承認されます。
「RunモードでTwinCATシステムを再起動するか?」と聞かれるので、「OK」で反映が開始されます。
構成の有効化後、PLCプログラムにログインするためのボタンを押して、プロジェクトの状態をオンラインに切り替えます。
Yesで進みます。
最後はStartボタンでRuntimeを実行します。
Safetyプロジェクトの構築
SAFETY>Add New Itemで新規Safetyプロジェクトを追加します。
「Add New Item」ダイアログでは、TwinCAT Safety Projectのテンプレートが複数表示されており、エラーメッセージ応答用(Preconfigured ErrAck)や、入力プリセット済みの構成を選択できるようになっている。今回はエラーメッセージ応答用(Preconfigured ErrAck)テンプレートを基にプロジェクトを生成します。
TwinCAT Safety Wizardの設定画面が表示され、ターゲットシステム(Hardware Safety PLC)や使用するプログラミング言語(Graphical Editor)、作成者名、プロジェクト名などを入力している。この画面での設定完了後、プロジェクトが作成される。
「Untitled1」というTwinCAT Safetyプロジェクトが作成され、さらにその中に「Untitled1 Project」およびインスタンスが表示されている。また、I/Oセクションにはスキャン済みの「Device 1(EtherCAT)」も表示されており、安全制御と通常I/Oの構成が並行して行われていることが確認できます。
Configure Target System
Target Systemをクリックします。
「Target System」の設定画面が開かれ、右側の「Physical Device」欄にて、EtherCAT端末の種類を選択できるようになっている。選択肢にはBeckhoff製のSafety ターミナルが並んでおり、今回はEK1960を選択します。
論理構成と実機のEtherCATデバイスを接続するために、赤枠のボタンをクリックすると、「Choose physical terminal for mapping」というウィンドウが表示される。ここでは認識されたEtherCATデバイスとして「Device 1 (EtherCAT)」が見つかっており、その配下にある「EK1960」が選択されている。これを選ぶことで、論理設定と実際のハードウェアがリンクされる。
実機とのマッピングが完了すると、設定画面にはシリアル番号やハードウェアアドレス、バージョン番号などの情報が自動的に反映される。「Term 2 (EK1960-2000)」が接続された状態になっており、構成されたI/Oモジュールも視覚的に表示されている。この状態で、実機とTwinCATの設定が一致していることが確認できます。
Alias Devicesに新しい項目を追加
TwinSafeGroup1の下にある「Alias Devices」を右クリックして、メニューから「Add」→「New Item…」を選択する操作が表示されています。
表示されたテンプレート一覧から、「EK1960-260x TwinSAFE-Compact-Controller (4 x Relay)」などの既成エイリアスを選択してください。
Done!
「Linking Mode」のプルダウンから、「Automatic」「Manual」「Local」の3種類が選べるようになっており、用途に応じてリンク方法を切り替え可能です。今回はEK1960のローカルIOを使用するので、「Local」を設定してください。
Localに設定すると、入出力の物理デバイス情報がすべて「not available」になります。それでOKです。
「Internal Safety Parameters」タブでは、FSOUTやFSINといったモジュールごとの安全パラメータが確認できる。設定可能なチャネルごとにインデックスが割り振られており、それぞれの構成を編集できるようになっている。今回は第1話なので、特に設定致しません。
新しいAlias Deviceの追加
「Alias Devices」を右クリックして「Add > New Item…」を選択することで、追加で別のAlias Device(たとえばデジタル入力や出力)します。
テンプレート選択画面が表示され、「1 Digital Input (Standard)」が選択されている。これは標準的な単一のデジタル入力を模擬するためのエイリアスデバイスで、TwinSAFE内で自由に接続に使用できます。
Done!
グループポート設定タブ内では、「Run/Stop」や「Err Ack(エラー確認)」などの信号線に対して、割り当てる信号名(たとえば GroupPort_ErrAck)を指定できます。ErrorAcknowledgement.sds にある変数接続ボタンを押すことでPLCプロジェクト内の変数とマッピングできる。
「Attach Variable」ウィンドウにて、PLCプロジェクト Untitled2 内の GVL.xError 変数が表示されており、TwinSAFEデバイスと接続可能な状態になっていることがわかります。
GVLを追加
SAFETYプロジェクトの「GVLs」セクションを右クリックし、「Add > Global Variable List…」を選択して、TwinSAFEプロジェクト内でグローバル変数を定義する準備をしている。
「GVL1.sgvl」という名前で新しいGVLファイルが作成されたことが確認できる。これにより、安全ロジック内で使用される変数を一元管理できるようになる。
新しく作成された GVL1.sgvl の中身が表示されているが、まだ変数は定義されていない状態。ここに BOOL 型や INT 型などの安全関連変数を定義し、TwinSAFEエディタ内のロジックから利用できるようにする。
GVL1.sgvlの編集画面で、画面左上の「+」アイコンを押すことで、新しいグローバル変数(例:RUN)をTwinSAFE用に追加する操作を行っているところ。
画面には3つの変数が定義されています:
- xRUN(システムの起動/停止制御)
- sxModule1Fault(モジュール故障検出)
- xDO1(デジタル出力1)
xRUN 変数に対して適切な入力チャネルを選択します。
先ほど定義したRUNを設定します。
TwinSAFE Group
次はTwinSAFEGroupを開きます。
グループポート設定タブ内では、「Run/Stop」や「Err Ack(エラー確認)」などの信号線に対して、割り当てる信号名(たとえば GroupPort_ErrAck)を指定できるようになっています
Safetyプログラム
次は安全プログラムを作成します。
Safetyプロジェクトの検証操作
TwinSAFE→Verify Safety Projectをクリックし、TwinSAFEの安全プロジェクト内で、構文的・論理的な誤り(例:リンク未接続、未定義変数など)が存在しないかを確認します。これはプロジェクトに変更を加えた後、安全機能の整合性を保つために必須のステップです。
画面上部の「Download Safety Project」ボタンが選択されており、安全ロジックをデバイスに書き込みます。
ダウンロード時にデバイスのシリアル番号とパスワードが必要です。画面右側のEK1960設定欄で、該当シリアル番号(例:1320582)を確認し、左側のログインフォームに入力します。
「Select Project Data」画面にて、「Complete Project Data(全データ)」を選択し、次へ進むことで完全なロジックとマッピングデータが転送対象となります。
「Download Result」画面で、以下すべてのデータが正常にダウンロードされたことを示す緑チェックが表示されています:
- Safe Logic Data
- Mapping Data
- Parameter Data
- Info Data
プロジェクト内の以下の3種類のデータがオンライン/オフラインで一致しているかのCRCチェックが行われています。
- Safe Logic Data
- Mapping Data
- Parameter Data
すべての項目でチェックマークがついていれば、プロジェクトデータは正常です。
下部のチェックボックスにチェックを入れて「Next」をクリックします。
次はダウンロードした安全ロジックを有効化(Activate)するためのログイン画面です。
- Serial Number は自動入力(例:1320582)
- Password はTwinSAFEプロジェクト用の設定パスワードを入力
最後は「Finish」で有効化へ進みます。
結果
Show Online Data(オンラインデータの表示)ボタンを押すことで、FBやエイリアスデバイスの状態をリアルタイムで監視できます。それは安全プロジェクトが正しく動作しているかのデバッグ確認に使用します。
それで画面上部の青帯には「Group is in state STOP」とあり、まだRUN状態になっていないことがわかります。各DecOut(出力)の状態は停止中(例:赤表示)で、安全ブロック(FB)が待機している状態です。
まずTwinCAT PLCの変数 xRun の値が TRUE:これはTwinSAFEグループを実行状態(RUN)にするための入力信号です。
- TwinSAFE側がPLCからのRUN指令(xRun)が正常に受信されており、xError にも異常は発生していません。
- 画面上部の緑色の帯には「Group is in state RUN.」とあり、TwinSAFEグループ自体がRUN状態であることが明記されています。