Beckhoff# MOXA EJS-08とTwinCAT3 Sync Unitsによるマルチベンダー接続

今回の記事では、TwinCAT3のSync Units機能を活用し、複数メーカーのEtherCATスレーブを効率的に管理・制御する方法を解説します。EtherCATの大きな魅力のひとつは、異なるメーカーのデバイスを自由に組み合わせて使用できることです。また、Moxa社のEtherCATジャンクション「EJS-08」を中心に説明していきます。

さ、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

Paypal

小さな支援が大きな力になります。

https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP

知ってたら助かること、届けたいだけです

あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。

soup01threes*gmail.com

https://x.com/3threes2

技術はひとりじゃもったいない。

Reference Link

Beckhoff# TwinCAT3でAMAX-5074 EtherCATカプラと接続してみよう

http://soup01.com/ja/category/beckhoff/

http://soup01.com/ja/category/protocol/ethercat/

Beckhoff#Tc2_EtherCATを使ってみよう

http://soup01.com/ja/category/advantech%e3%82%a2%e3%83%89%e3%83%90%e3%83%b3%e3%83%86%e3%83%83%e3%82%af/

Keyence#KV-XLE02でEtherCATをBeckhoff TwinCAT3と繋がってみよう
ctrlX#Pilz FSoE Masterと接続しFSoEネットワークを構築しよう

SyncUint

Sync Unitsは、EtherCATネットワーク上のI/Oデバイスを独立したグループとして管理するための仕組みです。

各Sync Unit内のプロセスデータは一貫性を保ちながら同期され、異なるスレーブデバイスのデータをひとつのユニットとしてまとめることができます。また、各Sync Unitに対してプロセスデータの診断がサイクリックで実行されるため、データが無効になった際には、制御アプリケーション側で適切な対応を取ることが可能です。

なぜSync Unitsが必要なのか?

Sync Unitsの最大のメリットは、障害の影響範囲を限定できることです。

あるSync Unit内でフィールドバスデバイスが故障した場合、故障の影響は同じSync Unit内のデバイスのみに留まり、他のSync Unitに属するデバイスには影響が及びません。

例えば、安全上の理由でシステムの一部の電源を切断する必要がある場合や、特定のフィールドバスセグメントを停止しても他のデバイスを稼働し続けたい場合には、Sync Unitsの作成が必須となります。

活用シーン

Sync Unitsは、アプリケーションを論理的に構造化する際にも役立ちます。

特に、機械の一部を停止させながらも、残りの部分は正常に稼働し続ける必要があるような設備・システムにおいて効果を発揮します。

Moxa’s EJS-08?

Moxa社のEJS-08シリーズは、8ポートのFast Ethernet EtherCATポートを搭載したEtherCATジャンクションです。スター、ライン、リング、ツリーといった様々なトポロジー変換に対応しており、複数のEtherCATデバイスをモジュール式かつ効率的に接続することができます。筐体には堅牢な金属ハウジングを採用し、高い電磁適合性(EMC)により環境からの干渉を遮断します。また、複数の接地方法に対応しているため、配線や設置作業も容易です。

冗長性機能

EJSシリーズは、EtherCATネットワークの信頼性と可用性を高めるための冗長性機能を豊富に備えています。

トポロジー変換機能により、生産ラインの中断を最小限に抑え、トラブルシューティングの効率を向上させます。また、デュアル電源入力設計を採用しており、冗長電源を接続することで、主電源に障害が発生した場合でも無停止での稼働を実現します。

さらに、EJSシリーズは冗長トポロジーにも対応しており、データパスに障害が発生した際には代替経路を提供し、データ通信の中断を防ぎます。

認証・互換性

EJSシリーズは、EtherCAT Technology Group(ETG)によるEtherCAT適合性試験の認証を取得しています。

これにより、既存のEtherCATネットワークへのシームレスな統合が可能となり、あらゆるEtherCATアプリケーションでの使用に最適です。

特長と利点

EJS-08シリーズには以下の特長があります。

  • 8ポートの100Base-T(X)全二重RJ45ポートを搭載し、複数のスレーブデバイスを接続可能
  • トポロジー変換に対応し、より柔軟なEtherCATネットワーク構成を実現
  • コンパクトサイズで設置が容易
  • 幅広い電源入力範囲と冗長電源オプションに対応
  • IP30準拠の金属筐体を採用
  • 産業用EMC規格であるEN 61000-6-2およびEN 61000-6-4に適合
  • DINレール接地に対応し、省スペース化と配線の簡素化を実現

従来のEtherCATトポロジー

デイジーチェーン接続とは

従来のEtherCATネットワークでは、マスターとスレーブデバイスをデイジーチェーン(数珠つなぎ)方式で接続するのが一般的です。各スレーブは前後のデバイスと1本のケーブルで順番に接続されます。

この構成にはいくつかの欠点があります。

  • 単一障害点を回避できない – 途中のデバイスやケーブルに障害が発生すると、それ以降のスレーブとの通信がすべて途絶えてしまいます
  • 柔軟性がない – ネットワーク構成の変更や拡張が難しく、レイアウトの自由度が低い

図のように、3台目と4台目のスレーブ間でケーブル断線や機器故障が発生すると、4台目以降のスレーブはすべてデータロスとなり、制御不能になります。

スタートポロジーへの変換 – 単一障害点の回避

単一障害点の影響を限定 – 1台のスレーブに障害が発生しても、他のスレーブへの通信は継続される

柔軟なネットワーク構成 – ジャンクションを中心としたスター型接続により、デバイスの追加・変更が容易

トラブルシューティングの効率化 – 障害箇所の特定が容易になり、復旧時間を短縮

項目

デイジーチェーン

スタートポロジー

障害時の影響

以降すべてのスレーブが通信断

障害デバイスのみ影響

柔軟性

低い

高い

拡張性

難しい

容易

EtherCATトポロジーの柔軟性向上

EtherCATジャンクションを導入することで、従来のライン(デイジーチェーン)接続だけでなく、様々なトポロジー構成が可能になります。設備のレイアウトや要件に応じて、最適な構成を選択できます。

トポロジー

特徴

適した用途

LINE

スレーブを直列に接続するシンプルな構成

小規模・直線的な配置

TREE

ジャンクションを階層的に配置し、枝分かれさせる構成

複雑な設備レイアウト

BUS

複数のジャンクションを横に連結し、各ジャンクションからスレーブを接続

拡張性が必要な大規模システム

STAR

1台のジャンクションを中心に、複数のスレーブを放射状に接続

集中管理・障害分離が重要な場合

選択のポイント

  • 設備のレイアウト – 機械や装置の物理的な配置に合わせて選択
  • 拡張性 – 将来のデバイス追加を考慮
  • 障害耐性 – 障害発生時の影響範囲を最小限にしたい場合はSTARやTREEが有効
  • 配線距離 – ケーブル長を最適化できる構成を選択

Implementation

今回の記事で使用するシステム構成では、Moxa社のEtherCATジャンクション「EJS-08」を中心に、以下のメーカーのデバイスを接続しています。

メーカー

デバイス

種類

Beckhoff

TwinCAT3

EtherCATマスター

Moxa

EJS-08

EtherCATジャンクション

Keyence

XLE-02

I/Oモジュール

Advantech

AMAX

I/Oモジュール

Omron

GX-JC03 / ECC-203

カプラ / I/Oモジュール

Weidmüller

UR20-FBC-EC-ECO / UR20-FBC-EC

リモートI/O

MOXA Side

ESIファイルをダウンロード

下記のLinkからMOXAのEJS-08のEDS FILEをDownloadしてください。

https://www.moxa.com/en/products/accessories/ethercat-automation-devices/ejs-08-series#resources

Beckhoff 側

EtherCAT マスターを追加

TwinCATプロジェクトの「I/O」ツリー上で右クリックし、コンテキストメニューから「Add New Item…」を選択することで、新しいI/Oデバイス(EtherCAT Masterなど)を手動で追加することができます。

「Add New Item…」を選択すると、「Insert Device」ウィンドウが開きます。ここでは追加するデバイスのタイプを選択できます。今回はBeckhoffのEtherCATマスターを使用するため、EtherCAT → EtherCAT Masterを選択します。

EtherCAT Masterを追加すると、自動的にPC上のEtherCATデバイスを検索し、「Device Found At」ダイアログが表示されます。

ここでは、見つかったEtherCAT通信カードや仮想デバイスを一覧から選択し、使用するスロットを指定します。

ドライバの設定

この画面はTwinCATのEtherCATマスター設定におけるAdapter(アダプター)タブで、EtherCAT通信に使用するネットワークアダプターを選択・設定します。

赤枠で囲まれた 「Search…」ボタン をクリックして、システム上の利用可能なEtherCAT対応ネットワークアダプターを検索・選択します。

「Search…」ボタンをクリック後に表示される、システム上で検出されたネットワークアダプターの一覧画面です。その中に適切なネットワークアダプターを選択します。

この設定により、TwinCATはこのネットワークアダプターを通じてEtherCATスレーブデバイスと通信できるようになります。

スキャン

EtherCATマスター(Device 1)を右クリックすると、表示されるメニューの中に「Scan」があります。この「Scan」をクリックすることで、TwinCATが実際に接続されたEtherCATスレーブ機器を自動検出し、構成に追加してくれます。この機能は、複数のI/O端子や通信モジュールがEtherCATラインに接続されているときに非常に便利で、機器のE-Bus順に正確に取り込むことが可能です。

Auto Scanが正常に完了し、EtherCATスレーブが認識されています。

Keyence

注意するのはKEYENCEのXLE-02では自動スキャンではPDOが追加されなく、手動で合わせる必要があります。

実際KV-STUDIO上で設定したデータサイズに合わせて設定する必要があり、今回は16ワードを設定しました。

順番変更

もしEtherCATスレーブの順番を手動で変更したい場合は、直接そのスレーブを変更したい位置にDropしていきましょう。

Insert BeforeとInsert As Childの選択画面が表示され、アプリケーションに合わせて設定しましょう。

SyncUnit設定

EJS08を使用するので、Sync Unitsを設定する必要があります。前にも書きましたが、Sync Unitsは、I/Oデバイスを独立したユニットとして定義する仕組みです。

Sync Unit内でフィールドバスデバイスに障害が発生した場合、そのSync Unit内のすべてのデバイスが故障としてマークされますが、他のSync Unitに属するデバイスは影響を受けません。これにより、あるパスで障害が発生しても、別のパス上のデバイスは正常に動作し続けることができます。EtherCATスレーブデバイスの故障が予想される場合には、Sync Unitsを作成しておくことが推奨されます。

EtherCATマスター→SyncUnits→右クリック→Add New Itemします。

Sync UnitsのGroup名を入力し→OKします。

Done!新しいGroupが追加されました。

下図のようなSync Unitsとデバイスの設定画面が表示されました。

各PORTにあるEtherCAT Slaveを設定しましょう。

例えばPort3はAMAXと接続してるならAMAXのSlaveを設定しましょう。

他のPortでも同じです。

最後はそれらのSync Unitををプログラムのタスクに割り付けましょう。

EtherCATマスター→EtherCAT→Sync Unit Assignmentをクリックします。

こちらはSync Unitのタスク割り付け画面です。

該当するデバイスを選択し→Taskを選択→そしてForced Sync Unit Taskでアプリケーションに合わせて適切なタスクを設定しましょう。

また、一括のTask割り付けにも可能です。

Done!

下図のように先程Sync Unitで追加したすべてのデバイスにタスクを割り付けました。

GVL

Program

このプログラムは、複数のEtherCATスレーブデバイスに対して、LEDを順番に点灯させるのシフト出力を実行します。

PROGRAM MAIN
VAR

amsID :T_AmsNetID;
bExecute:BOOL;
reqState:WORD;
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;

fbTON:TON;
fbTONs :ARRAY[0..1]OF TON;
controlbyte :BYTE;
controlWord :UINT;
fbR_TRIG :R_TRIG;
xTriggertoOP :BOOL;
xTriggertoPreOP :BOOL;
END_VAR


fbTON(
IN:=reqState <>0
,PT:=T#1S
);
bExecute:=fbTON.Q;


fbTONs[0](IN:=NOT fbTONs[1].Q,PT:=T#0.1S);
fbTONs[1](IN:=fbTONs[0].Q,PT:=T#0.1S);

MEMCPY(
destAddr:=ADR(gIOs.xarrSt003AMAX5057SOOutputsPort0)
,srcAddr:=ADR(controlbyte)
,n:=SIZEOF(BYTE)
);
MEMCPY(
destAddr:=ADR(gIOs.xarrSt014UR20_8DO_P)
,srcAddr:=ADR(controlbyte)
,n:=SIZEOF(BYTE)
);
MEMCPY(
destAddr:=ADR(gIOs.xarrSt022OD5256)
,srcAddr:=ADR(controlWord)
,n:=SIZEOF(UINT)
);

IF controlbyte = 0 THEN
controlbyte:=1;
END_IF;
IF controlWord = 0 THEN
controlWord:=1;
END_IF;

fbR_TRIG(CLK:=fbTONs[0].Q);
IF fbR_TRIG.Q THEN
controlbyte:= SHL(controlbyte,1);
controlWord:= SHL(controlWord,1);
END_IF

IF controlbyte.7 THEN
controlbyte:=1;
END_IF

IF controlWord.15 THEN
controlWord:=1;
END_IF

ダウンロード

最後はプロジェクトをTwinCAT3 RuntimeにDownloadしていきましょう。

結果

すべてのEtherCAT デバイスがOP状態になりました。

下記の動画から動作確認できます。

https://youtube.com/shorts/Z78HWOBq-JA

シェアする

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

フォローする