今回の記事では、Beckhoff TwinCAT 3 をEtherCAT Masterとして使用し、EtherCATネットワーク上に OMRON R88サーボドライブ2台 と OMRON ECC202リモートI/O 2台 を接続した構成で検証を行います。
今回のテーマは、EtherCATにおける Station番号照合 です。
さ、FAを楽しもう!

EtherCATのデバイス番号照合を使わないと何が危ないのか
EtherCATでは、マスター側で構成したネットワークトポロジーと、実際に接続されているスレーブ構成が一致していれば、基本的には通信を開始できます。つまり、同じ型式の機器が同じ順番・同じ構成で並んでいるように見えれば、EtherCATマスターはネットワークを認識し、OP状態まで遷移できます。一見すると便利ですが、ここに大きな落とし穴があります。それは同じ型式のスレーブを入れ替えても、マスター側からは区別できない場合がある ということです。

今回の検証構成
今回の検証では、以下のようなEtherCATネットワークを使用しました。サーボドライバ R88 が2台、ECC202 が2台あります。ここで重要なのは、
→Servo1とServo2は同じ型式、
→ECC202の1台目と2台目も同じ型式
という点です。
そのため、Station番号による照合を行わない場合、EtherCATマスターは「この個体が本当に1台目なのか、2台目なのか」までは厳密に判断できません。
Implementation-Station番号照合なし
最初の検証では2つに分かれています。
- 検証1:Station番号照合なし、Topologyが正しければ接続できる
- 検証2:Station番号照合なしで同一型式の機器を入れ替える
検証1:Station番号照合なし、Topologyが正しければ接続できる
まず、Station番号照合を使用しない状態で、通常通りの接続を行います。この場合、EtherCATネットワークは問題なくOP状態になります。EtherCATマスターから見ると、設定された順番通りにスレーブが存在しており、型式や構成も一致しています。
R88 → R88 → ECC202 → ECC202
この並びがTwinCAT側の構成と一致していれば、通信は成立します。
検証2:Station番号照合なしで同一型式の機器を入れ替える
次に、危険ケースの検証です。Station番号照合を使用しない状態で、以下のように同じ型式の機器を入れ替えました。
- Servo1 ⇔ Servo2
- ECC202 1台目 ⇔ ECC202 2台目
この状態でも、EtherCATネットワークはOP状態になります。ここが非常に重要です。マスターから見ると、ネットワーク上には相変わらず
- R88 → R88 → ECC202 → ECC202
という構成が存在しています。つまり、Topologyとしては崩れていません。そのため、Station番号照合をしていない場合、マスターは「同じ型式の別個体に入れ替わっている」ことを検出できません。
下準備
今回の記事で使用するOMRON R88 Servo
結果
下記の動画では、検証1と検証2の動作の違いを確認できます。
Station番号照合を行っていない場合、たとえServoやリモートI/Oを入れ替えたとしても、TwinCAT 3側ではその入れ替わりを検出できません。
そのため、EtherCATネットワーク自体はOP状態になりますが、実際には想定とは異なる機器に対して制御信号が出力されてしまいます。
例えば、Servo2側には減速機が取り付けられているにもかかわらず、TwinCAT 3上ではServo1として扱われてしまう可能性があります。また、リモートI/Oについても、想定していたI/Oユニットとは異なる機器に対してソフトウェア上の出力が割り付けられてしまう可能性があります。
なぜこれが危険なのか
問題はここです。通信がつながること自体は、一見すると問題がないように見えます。
しかし、制御システムでは、マスター側のプログラムやI/O割付は「この位置にある機器はServo1である」「この位置にある機器はECC202の1台目である」という前提で作られています。
たとえば、TwinCAT側で以下のように扱っていたとします。
- Servo1:X軸
- Servo2:Y軸
- ECC202_1:設備前面側のI/O
- ECC202_2:設備背面側のI/O
この状態で実機だけが入れ替わると、マスターは通信できているにもかかわらず、実際には制御対象が変わってしまいます。つまり、X軸を動かすつもりが、Y軸が動きます。前面側のI/Oを見るつもりが、背面側のI/Oを見ている、という状態が起こり得ます。
これは非常に危険です。それはEtherCATネットワークとしては正常で、TwinCAT上でもOPになっていて、なおかつエラーも出ていません。しかし、現場の配線・機器配置としては間違っている。
Implementation-Station番号照合ありでECC202を入れ替える
次に、デバイス番号照合を有効にした状態で、ECC202の1台目と2台目を入れ替えてみます。この場合、EtherCATネットワークはOP状態になりませんでした。理由は、マスター側が期待しているStation番号と、実際に接続されているスレーブのStation番号が一致しないためです。
つまり、TwinCAT側では:
- 1台目のECC202には Station番号 40 がいるはず
- 2台目のECC202には Station番号 10 がいるはず
しかし、実際には入れ替わっているため、
- 1台目の位置に Station番号 10 の機器がいる
- 2台目の位置に Station番号 40 の機器がいる
という状態になります。
この不一致を検出し、EtherCATマスターはOP状態への遷移を止めます。これは、設備としては非常にありがたい動作です。なぜなら、間違った機器配置のまま設備が動き出すことを防げるからです。
デバイス番号
今回使用するOMRON ECC202では本体の前面にあるロータリースイッチからStation番号を設定できます。

設定方法
ここからTwinCAT3上でEtherCATスレーブのStation番号照合設定を紹介します。EtherCAT→設定するスレーブをクリックします。

Advanced Settingsをクリックします。

General→Identificationを開き、下図のように”Explicit Device Identification”を選択します。

次はIdentificationにSlaveのStation番号を入力します。

ダウンロード
最後はプロジェクトをTwinCAT Runtimeにダウンロードしましょう。
結果
最初にEtherCAT→Topologyから現在のEtherCATの接続状態を確認します。

下図のようにエラーが発生してるEtherCAT Slaveは赤く表示されています。

また、Error ListではStation 1003・Station1004は設定したStation番号と実物異なるエラーが表示されています。

こちらの動画では、Station番号照合を有効にした場合の動作を確認できます。Station番号照合を有効にしている場合、リモートI/Oが入れ替わると、TwinCAT 3 Runtimeはその違いを検出します。
その結果、EtherCATネットワークはOP状態へ遷移せず、誤った機器構成のまま設備が動作しないようになります。
このように、Station番号照合を使用することで、同じ型式の機器が入れ替わった場合でも異常として検出でき、想定外のI/O出力や誤動作を防ぐことができます。