本記事では、Beckhoff TwinCAT + EK1960(TwinSAFE)構成において、EtherCAT経由のFSoE通信を用いてOMRON R88D FSoEサーボのSTO信号を受信・制御する方法を解説します。TwinSAFEエディタでの安全FBの構成(FBEstop / FBDecoupleなど)、TwinCATのST構造体による状態保持、MAINプログラムでのSTO信号トリガ処理の実装、およびHMI画面連携の一例も掲載します。
さ、FAを楽しもう。

Reference Link
http://soup01.com/ja/?s=EK1960+
前書き
いつも私の技術ブログと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
Paypal
小さな支援が大きな力になります。
https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP
知ってたら助かること、届けたいだけです
あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。
soup01threes*gmail.com
技術はひとりじゃもったいない。
OMRON R88シリーズ FSOE接続
OMRON R88D-1SNシリーズサーボドライブの本体下部には、”FS”(FSoE Status)インジケータがあり、FSoE通信状態やエラーを一目で確認できます。
表示 | 状態 | 説明 |
緑点灯(Green ON) | FSoEスレーブ通信 確立済 | TwinSAFEなどのセーフティCPUとFSoE接続完了。STOが使用可能な状態。 |
緑点滅(Flashing Green) | FSoEスレーブ通信 構築中 | 通信確立処理中。接続先マスタやFSoEアドレスの確認を。 |
赤点滅(Flashing Red) | 重大エラー | 以下のいずれか:・セーフティパラメータエラー・通信タイムアウト・自己診断エラーなど→ STO via FSoEは無効化されています。 |
Safe Torque OFF(STO)機能とは?
STO(Safe Torque OFF)とは、モータの電流供給を遮断して、トルク出力を安全に停止するための機能です。この機能は、セーフティコントローラからの信号により実行され、サーボが”安全状態”に移行します。
STOがアクティブになると、サーボは “READY” 出力をOFFにして、安全状態へ。
1Sシリーズ(OMRON)でのSTO制御方式
1Sシリーズサーボ(EtherCAT内蔵モデル)は、以下2種類のSTO方式をサポートしています:
- STO via Safety Input Signals
ハード接点による制御(信頼性が高く、定数的) - STO via FSoE Communications
EtherCAT経由での安全通信制御(配線スリム化・柔軟)
それは使用する安全機器構成に応じて、どちらの方式を選ぶかを決めましょう。
STO方式 | PFH値([1/h]) | 安全水準 |
Safety入力方式 | 2.0 × 10⁻¹¹ | 非常に高信頼 |
FSoE通信方式 | 1.6 × 10⁻⁹ | 高信頼 |
PFH値(Probability of dangerous Failure per Hour)
PFH = 1時間あたりに発生する“危険な故障”の確率で、つまり、安全装置や安全機能が期待された通りに動かず、危険状態を作り出す確率を、「1時間あたり」で評価した数値になります。たとえば:
PFH = 1 × 10⁻⁹ [1/h] なら、10億時間(約11万年)で1回の危険故障が統計的に発生するということ。
安全設計と運用における注意事項
セットアップ時の注意
ダウンロード・復元操作前に、機器が動作しないことを確認してください。意図せぬ動作による事故防止のため、物理的な安全確保をしましょう。
また、設定完了後は、必ずユーザーテストを実施し、すべての安全装置が正しく動作するか確認してください。
機器交換時の注意
交換前のサーボドライブは工場出荷時状態である必要があります。もしサーボの状態が不明な場合は、パラメータ初期化を実施してください。また、交換品の型式、端子ブロックの配置、マウント位置が正しいことを再確認しましょう。
試運転時の注意
Sysmac Studioなどを使って試運転を行う場合で、EtherCATケーブルを接続していないと、
FSoE経由のSTO機能は一時的に無効化されます!
そのような試運転時でもSTO機能を使用したい場合は、安全入力信号(ハード接点)によるSTO制御を使用してください。
STOとは?
STO(Safe Torque Off)は、サーボモータへの電力供給を遮断し、トルクの発生を防ぐ安全機能です。TwinCATとBeckhoffのEK1960(TwinSAFE)を使うことで、FSOE(Safety over EtherCAT)経由でこのSTOを安全規格に基づいて遠隔トリガーできます。
ただし、STOは「非常停止」や「トルクカット」の手段であって、「モーターが完全に止まること」や「安全に保持されること」を保証するわけではありません。
注意点:
こちらはSTOを使用するときの注意点:
安全リスク評価が必須
STO導入前に、必ず機械・システム全体のリスクアセスメントを実施し、STOだけでは安全にならないケースもあるから注意してください。
モータが完全停止しない場合もある
縦軸や重力がかかる方向では、ワークが落下するリスクがあるため、外部ブレーキの追加が必要になることもあります。
フリーストップ距離に注意
「フリーストップ+ダイナミックブレーキ無効」の設定だと、長距離滑走してしまう可能性があります。
デバイス内部故障時に微小回転の可能性
万が一、電源トランジスタなどが破損した場合、最大180度電気角で回転が発生する可能性があり、STOはモータへの電源OFF、でもドライブ自体は通電中の状態になります。また、サーボドライブ本体には電源が供給されたままなので、メンテナンス時は別途主電源をOFFにしてください。
EDM出力は“安全出力”ではない
EDM(External Device Monitoring)は自己診断確認用の補助信号で、安全出力として使用しないでください。
配線時のチェックリスト
配線ミスが安全動作不良の原因になりますので、以下は必ずチェックしてください:
- 短絡や断線
- EDM出力の極性
- SF1/SF2/EDMが正しく動作するなのか
安全入力ありでSTO使用時は、3か月ごとに動作確認
安全機能は定期的に確認しましょう。FSoE通信でも、電源のON/OFFで自己診断エラーが出ないか見る必要があります。
プログラムでSTOを勝手に復帰させないように
非常停止解除やEDM異常時でも、STOが自動で無効化されないようにPLCプログラムを設計すること。
縦軸では特に注意
サーボOFF後にブレーキが間に合わず、ワークが落ちる事故の可能性ありますので、ブレーキONのタイミングと電源OFFの順序には注意してください。
STO機能をFSOEで使用するための接続例
この構成は、OMRON 1Sシリーズ サーボドライブのSTO機能を、FSOE(Safety over EtherCAT)経由で制御するための基本的なネットワーク図です。
機器名 | 役割 |
EtherCAT Master | TwinCAT3が稼働しているIPCなど。全体の制御を行う |
Safety CPU Unit | ここではBeckhoff EK1960など。FSOEセーフティロジックを処理 |
Safety I/O Unit | TwinSAFEのEL1904(入力)やEL2904(出力)などを含む |
OMRON 1Sシリーズ サーボドライブ | STO機能をEtherCAT経由でFSOE信号によりON/OFF可能なサーボ |
PDO設定とSafety CPUとのFSoE通信構築
ステップ①:Safety PDOの追加
EtherCATネットワーク構成で、1Sシリーズサーボドライブに対してSafety PDO(FSoE用)を追加します。
- RxPDO(受信PDO): 273th → 0x1710
- TxPDO(送信PDO): 273th → 0x1B10
これは、サーボがFSoEスレーブとして振る舞うために必要な通信チャンネルで、STO機能を遠隔制御するためのセーフティ信号が含まれる領域になります。
ステップ②:Safety CPU Unit設定で1Sサーボを有効化
TwinCATのSafety Configuration(TwinSAFE Editor)側で、1SサーボをFSoEスレーブデバイスとして有効化し、適切なFSoEアドレスを設定します。
ステップ③:Safetyロジックの作成
TwinSAFE Project上で、以下のような構成でロジックを組みます:例えば、EL1904 → 非常停止スイッチなどの入力受け、EL2904 → STO出力を通じてサーボへ信号送出します。もしくは今回記事で使用するEK1960の内蔵ロジックIOを使用します。
この時、STO信号として出力されるのは「SafeBool」型で、1SサーボのSTO入力にマッピングされます。
ステップ④:EtherCAT通信とSafety CPU間の接続確立
EtherCATマスター(IPC)とSafety CPU Unit(EK1960など)との間で通信を確立します。もし設定変更後に通信が確立されない場合は、FSoEスレーブアドレスを一度クリアして再設定しましょう。
FSoE通信で使われるPDO構成
OMRON 1Sシリーズサーボドライブに対し、FSOE(Safety over EtherCAT)を通じてSTO制御を行うためには、以下のPDO構成を正しく設定し、制御プログラムと連携させる必要があります。
RxPDO(0x1710): マスター → サーボ(制御用)
Name | Description |
STO Command | STO機能の実行指令。 0: STOアクティブ(トルク遮断) 1: STOリセット(再動作許可) |
Error Acknowledge Reset | セーフティ機能のエラーリセット信号。0→1の立ち上がりエッジでリセットが実行される。 |
TxPDO(0x1B10): サーボ → マスター(状態監視用)
Name | Description |
STO Status | STOの状態を示す。0: 通常(STO無効)1: STO中(トルク遮断) |
Error Acknowledge | セーフティ機能のエラー状態。0: 正常1: STO内部回路の異常を検出 |
Safety Connection Status | セーフティ接続の進行状況を示すフラグ。セーフティプログラム側のActivate入力や接続状態確認に使用 |
STO(Safe Torque Off)動作時の時系列タイミングチャート
この図は、STOをSafety CPUからアクティブ化したときの一連の信号変化と応答時間を示しています。
Servo ON/OFF
Servo ON状態からSTOによってOFFにします。
STO Command at Safety CPU Unit
安全PLC(EK1960など)からのSTOコマンド、Reset STO → Activate STOへ切替します。
STO command at Servo Drive
次は通信遅延含め、サーボドライブが受信したSTOコマンド状態になります。
Motor power Status
モータ電源供給を7ms以内にon→offにします。
STO status at Servo Drive
サーボが10ms以内にSTO状態に移行します。
Dynamic Brake
ダイナミックブレーキは15ms以内にDB Released → DB Appliedに移行します。
DS State
Power Drive System状態がOperation enabled → Switched on disabledに移行します。
BKIR(Brake Interlock Output)
ブレーキインターロック出力を時間T後にInactive → Active移行します。
そしてBKIRの遅延“T”についてブレーキ信号(BKIR)がActiveになるまでの遅延 T は以下いずれかの条件で決定します。
パラメータ | 説明 |
4610-02 hex | Timeout at Servo OFF(時間ベース) |
4610-03 hex | Threshold Speed at Servo OFF(速度ベース) |
Safe Stateからの復帰動作時の時系列タイミングチャート
この図は、Safe Stateから復帰するときの一連の信号変化と応答時間を示しています。
また、非常停止スイッチが解除されても、STOが自動でリセットされないように、セーフティコントローラ側で明示的にSTO解除条件を管理すること。
STO Command(at Servo)
STO解除指令(Reset STO)が発行されます。
Motor Power Status
電源が再供給され、モーターがoff → on に遷移します。
STO Status(at Servo)
Servo Driveは 10ms以内にSTO状態 → 通常状態(Normal)に移行します。
Dynamic Brake
次はDBが解除され、モーターが回転が可能になります。
PDS State
次はPDSが段階的にSwitched on disabled → Ready to switch on → Switched on → Operationに遷移します。
Servo ON/OFF
PDS StateがOperationに移行すsると、ServoはON状態に移行します。。
BKIR
ブレーキインターロックがON → OFF(解除)に戻ります。
Implementation
TwinCAT Side
最初にTwinCAT側から始めます。
Configure OMRON Slot
OMRON R88D-1SNシリーズサーボをTwinCATで使用する際、FSoE通信によるSTO制御を行うには、”Slot”設定画面でFSoEスロットの追加が必要です。
TwinCATでのOMRON FSoE-STOスロット設定するには、FSoE STO 0x00001000 Safety Drive を選択、Slotへ追加(中央の “<” ボタン)をクリックし、左側のスロットリストに「Slot 1」として登録されます。
TwinCATプロジェクト上でOMRON 1SサーボのFSoE STOモジュールが追加されました。
EK1960 Side
EK1960側を構築します。
Add Alias Devices
TwinSAFEロジック内から、OMRONサーボなどのFSoEスレーブデバイスを参照・制御するには、まずAlias Deviceとして登録する必要があります。TwinSAFEプロジェクト内の「Alias Devices」を右クリックし、「Add」→「New Item…」を選択することで行えます。
TwinSAFEプロジェクトでAlias Deviceを新規作成する際、「Safety > EtherCAT > OMRON Corporation」を選択すると、0x00001000 – Safety Drive (FSoE STO) というモジュールが一覧に表示されます。これを選択して Add ボタンを押すと、TwinSAFE内でOMRONのSTOスレーブを制御対象として扱えるAlias Deviceが作成されます。
この画面で 0x00001000 – Safety Drive (FSoE STO) の.sdsファイルが TwinSAFEプロジェクト内の「Alias Devices」にしっかり追加されたことがわかりました。
Safetyプロジェクトの TwinSafeGroup1 内に、PLCとの通信に使用するSTOフィードバック用のデバイスフォルダ「STODataFeedback2PLC」を追加します。これは主に、STO(Safe Torque Off)信号の状態監視や、PLC側への状態転送(インジケーション用途)に用いるエリアになります。
TwinSafeGroup1 プロジェクト内で、PLCに対して各軸(Axis1〜3)のSTO状態やエラー情報を返すための仮想エイリアスフォルダとして「STODataFeedback2PLC」を作成する。
このフォルダには、各軸ごとに以下の3つの信号を追加する:
- AxisxError.sds:SERVOに関するエラー状態(例:通信切断や異常)
- AxisxSafetyConnectionStatus.sds:安全通信の確立状況(FSoE接続ステータス)
- AxisxSTOActive.sds:STOがアクティブかどうかの状態
次はOMRONのFSoE接続ObjectにあるLinking設定画面を開きます。
FSoE Address
各FSoE接続にはDefaultのFSoEアドレスは0になります。
今回の例ではFSOEアドレスを41に設定します。
Physical Device
TwinCATではSafety Device(FSoE STO)に対して、物理デバイス(=実際のEtherCATスレーブ)をリンクします。
Choose physical channel」というウィンドウが表示されるので、EtherCAT構成内の該当するDriveを展開し、その中にある「Module 1(FSoE STO)」を選択して「OK」を押します。これで、ソフトウェア上のSTO設定と物理的なFSoE出力モジュールが正しく関連付けられます。
Done!
プロジェクトを保存したら、Input/OutputのLinked Toに自動更新されます。
Connection Parameters
Connection パラメータにあるConn-Idが自動的に設定されますので、気にする必要がありません。
Safety Parameters
オムロンのFSOE接続には、Safety Parameters Tabには特に設定するものがありません。
Process Image
Process ImageではFSOE経由でデータ交換する安全入出力を一覧できます。
GVL
こちらは今回記事で定義したTwinSAFE 変数です。
変数名 | 用途(簡単に) |
siESTOP | 非常停止ボタンの入力(EK1960のFSINから取得) |
RUN | システム全体のRUN信号(TwinSafeのRUN制御) |
soDrive1STO | Drive1へのSTO出力信号 |
soDrive1ErrAck | Drive1のエラー解除信号 |
soDrive2STOActive | Drive2のSTO有効信号(出力) |
soDrive3STOActive | Drive3のSTO有効信号(出力) |
soDrive2STO | Drive2へのSTO出力信号 |
soDrive3STO | Drive3へのSTO出力信号 |
soDrive2ErrAck | Drive2のエラー解除信号 |
soDrive3ErrAck | Drive3のエラー解除信号 |
siDrive1STOActive | Drive1のSTO有効状態(入力) |
siDrive1Error | Drive1のエラー状態(入力) |
siDrive2Error | Drive2のエラー状態(入力) |
siDrive3Error | Drive3のエラー状態(入力) |
siResetButton | 外部のリセットボタン入力(EK1960のFSINから取得) |
siAxis1SafetyConnectionStatus | Drive1のFSoE接続状態(Safety接続確認) |
siAxis2SafetyConnectionStatus | Drive2のFSoE接続状態 |
siAxis3SafetyConnectionStatus | Drive3のFSoE接続状態 |
Program
この画面は TwinSAFE の safeDecouple ブロック(FBDecouple1、 FBDecouple2)のネットワーク接続画面です。
こちらはオムロンSTO信号の制御部分になります。
全体の流れとしては:
- siESTOP と siESTOP2 を EDM 監視し、
- 問題がなければ FBEstop1 に入力。
- 条件成立で EStopOut を即座に、EStopDelOut を1秒後にON。
非常停止(E-Stop)が発生したときに、3軸のSTO信号(安全トルクオフ)を制御・分配するためのネットワークです。EStopOut を起点に、各ドライブのSTO制御を一括で遮断できる構成で、出力信号はそれぞれ GVL1 変数にマッピングされています。
PLC Side
構造体‐dutOMRONR88FSOE
この dutOMRONR88FSOE は、OMRON R88Dシリーズ FSoE対応サーボの状態をまとめた構造体(STRUCT)で、TwinCAT側(標準PLCサイド)で定義されてるカスタムデータ型になります。
フィールド名 | 型 | 用途(簡単な説明) |
xSTOActive | BIT | STO(安全トルクオフ)がアクティブかどうか |
xError | BIT | ドライブに安全エラーが発生しているか |
xSafetyConnectionStatus | BIT | FSoE通信(Safety over EtherCAT)が確立しているかどうか |
TYPE dutOMRONR88FSOE : STRUCT xSTOActive :BIT; xError :BIT; xSafetyConnectionStatus:BIT; END_STRUCT END_TYPE |
GVL
GVL(グローバル変数)に必要な変数を定義します。
変数名 | 型 / アドレス | 用途(役割) |
ErrorAck | %Q* 出力 | TwinSAFEからのエラー解除信号(外部への送信) |
Run | %Q* 出力 | TwinSAFEへRUN信号 |
MainReset | %Q* 出力 | HMIやリモートからの一括リセット指令 |
stDriveSTO | %I* 入力 | TwinSAFE側から取得する各軸の安全状態(構造体) |
stDriveSTOhmi | 内部変数(入出力なし) | HMI表示・制御用にstDriveSTOをコピーして整形したもの |
{attribute ‘qualified_only’} VAR_GLOBAL ErrorAck,Run AT %Q*:BOOL; MainReset AT %Q*:BOOL; stDriveSTO AT %I* :ARRAY[1..GlobalParameters.iAxisNumber]OF dutOMRONR88FSOE; stDriveSTOhmi :ARRAY[1..GlobalParameters.iAxisNumber]OF dutOMRONR88FSOE; END_VAR |
MAIN
次はMAINプログラムです。各軸 (Axis1〜Axis3) に名前を設定し、それぞれに fbAxis(軸制御FB)を適用し、TwinSAFEから取得したSTO情報をHMI表示用にコピーします。
PROGRAM MAIN VAR fbAxis :ARRAY[1..GlobalParameters.iAxisNumber]OF fbAxisBaseType; END_VAR GVL.AxisData[1].strAxisName:=’Axis1′; fbAxis[1]( ioAxis:=GVL.Axis[1] ,ioAxisData:=GVL.AxisData[1] ); GVL.AxisData[2].strAxisName:=’Axis2′; fbAxis[2]( ioAxis:=GVL.Axis[2] ,ioAxisData:=GVL.AxisData[2] ); GVL.AxisData[3].strAxisName:=’Axis3′; fbAxis[3]( ioAxis:=GVL.Axis[3] ,ioAxisData:=GVL.AxisData[3] ); GVL_Safety.stDriveSTOhmi:=GVL_Safety.stDriveSTO; |
Visualization
FSOE
STO状態をHMIでモニタリングする画面を作成します。各列が1軸(Axis1〜Axis3)に対応していて、それぞれ:
- STO Active:STO(Safe Torque Off)が有効か
- FSOE Status:FSOEリンク(通信)がOKか
- ERROR:安全通信や状態にエラーがあるか
SCREEN
次は FSOE(STO状態)画面 を タブの一つとして追加します。
WP615 Webパネル側
最後はPixsysのWP615 Webパネルの設定を行います。
WP Setting>URLをBeckhoff TF1800のURLに設定してください。
結果
こちらの動画で実際の動作確認できます。