概要
インダストリ4.0では、遠く離れた場所にあるエッジ・デバイスにインテリジェントな機能を持たせることになります。また、10BASE-T1Lに対応するイーサネットでは、PoDL(Power over Data Line)の機能や、高いデータ転送レート、イーサネット・ベースのプロトコルとの互換性が実現されました。このような動向によって、進むべき道が切り開かれつつあります。本稿では、オートメーションをはじめとする産業分野のシステムに10BASE-T1Lの規格で定められた新たな物理層(PHY)を組み込む方法を紹介します。それにより、複数のセンサーやアクチュエータといったエンドポイントに、コントローラやユーザ・インターフェースを接続することが可能になります。それらのすべての要素は、双方向の通信向けに標準的なイーサネットのインターフェースを使用することになります。
はじめに
10BASE-T1Lは、産業分野のアプリケーションにおいてネットワーク接続を実現するために定められたPHY規格です。標準的なツイスト・ペア・ケーブルを使用することにより、最長1kmにわたって最高10Mbpsのレートでのデータ転送と電力供給を実現することができます。また、遅延が小さくPoDL機能を利用できることから、センサーやアクチュエータなどのデバイスをリモートで制御したい用途に最適です。本稿では、リモートのホストによって、2つ以上のステッピング・モータを同期制御するシステムの実装方法を紹介します。それにより、10BASE-T1Lが提供するリアルタイム通信の能力を活用すれば、エッジ・デバイスの遠隔制御が可能になるということを明らかにします。
システムの概要
図1は、本稿で例にとるアプリケーションの概要をシステム・レベルで示したものです。ホスト側では、標準的なリンクと10BASE-T1Lに対応するリンクを接続するための変換処理が必要になります。これについては、イーサネットPHY(トランシーバー)である「ADIN1100」と「ADIN1200」によって管理します。一方、リモート側では、マイクロコントローラによってイーサネットMAC-PHY(MAC機能を統合したイーサネットPHY)である「ADIN1110」を制御することで、このリンクのインターフェースを確立しています。ここで必要になるのは、データとコマンドのやり取りに使用するSPI(Serial Peripheral Interface)対応のペリフェラルだけです。このシステムでは、ADI Trinamic™のステッピング・モータ・コントローラ/ドライバ「TMC5160」を使用することで、正確かつ同期が取れたモーション制御を実現します。この方法であれば、コントローラで演算を行うことなく、位置決めのためのSixPoint™ランプを生成することができます。これらのコンポーネントを採用すれば、使用するペリフェラル、演算能力、コードのサイズという面でマイクロコントローラに対する要件を緩和することが可能になります。そのため、多様なコントローラ製品が選択肢になり得ます。また、このシステムでは予め設定した消費電力の上限値までの範囲で、リモートのサブシステム全体にデータ・ラインから直接給電することができます。そのため、ローカル電源を必要とするモジュールはメディア・コンバータのボードだけになります。
システムを構成するハードウェア
このシステムは、以下に示す4種のボードによって構成されています。
- EVAL-ADIN1100:このボードは、10BASE-T/100BASE-Tに対応する PHY デ バイスである ADIN1200 を搭載しています。これを 10BASE-T1L 対応の PHY デバイスであるADIN1100 と組み合わせることにより、ある PHY 規格から別の PHY 規格向けにメッセージを変換することができます。このボードは、様々な動作モードに設定することが可能です。本稿の例では、Standard Mode 15(メディア・コンバータ)を使用します。EVAL-ADIN1100 はマイクロコントローラも搭載しています。それにより、メディア変換に必要な基本的な構成(コンフィギュレーション)を実現すると共に、診断に関する情報を読み取ることができます。但し、送受信されたメッセージに対する操作は行えません。このボードは、通信に対しては完全に透過的に振る舞います。
- EVAL-ADIN1110:このボードは、リモート・コントローラの中核部に相当します。10BASE-T1L 対応の MAC-PHY デバイスであるADIN1110は、10BASE-T1Lのリンクを経由してデータを受信します。それらのデータは、SPI を介して、ボード上に実装されている Cortex®-M4 ベースのマイクロコントローラに転送されます。その上で、同マイクロコントローラによる処理が行われます。このボードには、Arduino Uno と互換性を持つヘッダも付属しています。これを使って Arduino シールドを装着することにより、ボードに機能を追加することができます。
- TMC5160 シールド:これは、Arduino シールドのフォームファクタに基づいてカスタムで開発したボードです。1枚のシールドにより、TMC5160 に対応する最大 2 枚の「SilentStepStick」のボードをサポートすることができます。また、複数のシールドを積み重ねることで、制御の対象となるモータの数を増やすことも可能です。すべてのドライバは SPIの同じクロックとデータの信号を共有します。ただ、チップ・セレクトのラインは独立しています。この構成によって、2 つの通信モードを利用できるようになっています。まず、チップ・セレクトのラインを個別にアサートした場合、マイクロコントローラは 1 つ 1 つのコントローラと通信を行うことができます。このモードは、動作パラメータを構成する場合などに使用することが可能です。一方、複数のチップ・セレクトのラインを同時にアサートした場合、選択したすべてのドライバが同じコマンドを同時に受信することになります。このモードは、主に同期動作を実現するために使用されます。また、このボードでは、SilentStepStick に入力容量を追加することで、モータを起動する際のピーク電流を抑え、通常動作時の電流のプロファイルが滑らかになるようにしています。その結果、PoDLを使用することによって、NEMA17 規格に対応するモータを最大 2 個備えるシステム全体に給電することが可能になっています(デフォルトの設定では、24V における最大伝送電力は 12W)。加えて、このボードを使用すれば、ネジ端子によってステッピング・モータに簡単に接続することができます。コントローラからの相出力も利用しやすくなります。
- EVAL-ADIN11X0EBZ:このボードを2枚用意し、1枚をメディア・コンバータとして使用し、もう 1 枚を EVAL-ADIN1110EBZ として使用することで、PoDL の機能をシステムに追加することができます。このボードは、評価用ボードの MDI プロトタイピング・ヘッダに装着することができるプラグイン・モジュールです。データ・ラインによる給電用にも受電用にも構成することが可能です。
ソフトウェアの構成
本稿のシステムで使用するソフトウェアのコードは、 こちらからダウンロードすることができます(ファイル名はremote-motion-control-with-10base-t1l-ethernet-code.zip)。
本稿の例では、データ・リンク層より上位には標準的な通信プロトコルは実装しませんでした。その目的は、コードを軽量に保ち、通信上のオーバーヘッドを最小限に抑えることです。すべてのメッセージ交換は、予め定義された固定フォーマットのイーサネット・フレームが備えるペイロード・フィールドを使用して行います(図3)。ペイロード・フィールドのデータは46バイトのセグメントに編成されます。各セグメントは、2バイトの固定のヘッダと44バイトのデータ・フィールドで構成されます。ヘッダは、デバイス・タイプを表す8ビットのフィールドとデバイスIDを表す8ビットのフィールドから成ります。前者のフィールドによって、受信データの処理方法が決定されます。後者は、同じタイプのデバイスが複数存在する場合に、個々の物理デバイスを選択するために使用します。
ホスト・インターフェースのコードはPythonで記述しました。そのため、WindowsとLinuxのうちどちらをベースとするホストにも対応できます。イーサネットによる通信は、Scapyモジュールを使用して管理されます。具体的には、データ・リンク層をはじめとする各層で、パケットの作成、送信、受信、操作を行うことができます。このプロトコルで定義されている各デバイス・タイプには、それに対応するクラスが用意されます。そのクラスには、交換するデータを格納するためのプロパティと、それらのプロパティに変更する際、変数を直接編集する代わりに使用できる一連のメソッドが含まれています。例として、モーション・コントローラのスピード・モードにおいて動作の方向を変更したいケースを考えます。その場合、方向に対応するフラグに0または1という値を手作業で指定する代わりに、setDirectionCW()とsetDirectionCCW()という定義済みのメソッドを使用することができます。また、各クラスはpackSegment()というメソッドも備えています。同メソッドは、検討しているデバイスの種類に応じ、予め定義されたフォーマットに従ったバイト配列の形で、制御対象のデバイスに対応するセグメントをパックして返します。
ファームウェアは、ChibiOSの環境をベースとしてC言語で記述しました。同環境には、リアルタイムOS(RTOS:Realtime OS)、ハードウェア抽象化レイヤ(HAL:Hardware Abstraction Layer)、ペリフェラル・ドライバなどのツールが含まれています。そのため、類似のマイクロコントローラの間でコードを簡単に移植することが可能です。本稿のシステムは、以下に示す3つのカスタム・モジュールをベースとしています。
- ADIN1110.c:ADIN1110 との間で SPI を介したデータとコマンドの交換を可能にするためのドライバです。デバイスのレジスタに対してデータを読み書きするための低レベルの通信用の関数と、イーサネットのフレームを送受信するための高レベルの関数が含まれています。また、10BASE-T1L に対応するトランシーバーの間で通信を確立するための関数も備えています。新しいフレームが利用可能かどうかを通知するピンでは、割り込みによって読み取りを行うようにすることで遅延を最小限に抑えています。
- TMC5160.c:フル機能のモーション・コントローラ・モードで動作するように構成された TMC5160 を制御するためのすべての関数を備えています。定速制御モードに対応する機能と位置制御モードに対応する機能を実装しており、SixPointランプによる滑らかで正確な位置決めが行えます。複数のモーション・コントローラとの通信は、独立したチップ・セレクトのラインを備える単一の SPI バスを介して実施します。同期動作を簡単に実現するための複数の関数と typedef も提供します。
- Devices.c:T1L のリンクから受信したデータとコントローラに接続された物理デバイスの間のインターフェースを提供します。ホスト・インターフェースで定義されたものと同様の構造体と、有効なデータを含む新たなフレームを受信するたびにそれらを更新する関数が含まれています。このモジュールは、構造体が更新されるたびにどの操作を実行するかを決定するためにも使用します。例えば、特定のデバイス・アドレスを使って受信したコマンドに関連するのはどのモーション・コントローラなのかといったことを確認するために使用されます。
システムの特徴
本稿の目的は、オートメーションをはじめとする産業分野のシステムに、10BASE-T1Lの規格で定められた新たなPHYを組み込む方法を紹介することです。それにより、複数のセンサーやアクチュエータなどに、コントローラやユーザ・インターフェースを接続することが可能になります。具体的な例として、複数のステッピング・モータをリアルタイムかつリモートで制御するアプリケーションを取り上げています。ステッピング・モータは、低消費電力であることが求められるオートメーションのタスクで広く使用されています。それ以外にも、デスクトップ型の3Dプリンタ、デスクトップ型のフライス盤、直交座標プロッタといった軽量ロボットやCNC(Computer Numerical Control)マシンでも使われています。本稿で例にとる手法は、ステッピング・モータだけでなく、他の種類のアクチュエータやリモート制御機器にも拡張することが可能です。同様の目的で使用されている既存のインターフェースと比べて、以下に列挙するような点で優れています。:
- 1本のツイスト・ペア・ケーブルしか必要ないので、配線が簡素化されます。また、データ・ラインによって給電することも可能です。つまり、その接続によってセンサーなどの低消費電力のデバイスに直接電力を供給できるということです。そのため、必要な配線やコネクタの数を更に減らすことができます。結果として、システム全体の複雑さ、コスト、重量が低減されます。
- PoDL の規格を利用して電力を供給することができます。つまり、データ・ラインに重畳した DC 電圧を使用して、ネットワークに接続されたデバイスに給電することが可能です。そのための結合は、受動部品を使用するだけで実現できます。受信端でその電圧にフィルタを適用すれば、整流の必要はありません。デバイスや DC/DC コンバータに直接給電することが可能です。高効率のシステムを実現するには、この種の結合に使用する部品の値を適切に決定する必要があります。本稿の例の場合、評価用ボードに実装されている標準的な部品を使用することで、全体的な効率として約 93% という値が得られました(24V の電源でトータルの負荷電流が 200mA の場合)。但し、これには大きな改善の余地があります。実際、損失のほとんどは、電源パスに存在する受動部品の抵抗成分で電圧降下が生じることによって発生しています。
- 汎用性が高く、ラストマイルの接続とエンドポイントの接続の両方に使用できます。アナログ・デバイセズの 10BASE-T1L対応デバイスは、最長 1.7km の距離でテストされています。また、システムの複雑さに及ぼす影響が小さいデイジーチェーン接続を使用することが可能です。例えば、複雑さを押さえた 2 ポートのスイッチ「ADIN2111」を採用すれば、デイジーチェーンによって機能を統合したデバイスを設計できます。これは、エンドポイントのネットにも適したリンクになります。
- デスクトップ型の PC やノート型の PC など、イーサネット・コントローラを内蔵している既存の機器と簡単に接続することができます。データ・フレームはイーサネットのデータ・リンク規格に即しており、その上にすべてのイーサネット互換プロトコルを実装できます。標準的なイーサネット・リンクとのブリッジに必要になるのはメディア・コンバータだけです。例えば、本稿の例で使用している EVAL-ADIN1100 は、透過型のメディア・コンバータのリファレンス設計として使用できます。必要なのは 2 つのイーサネット PHY と、構成やデバッグに使用するオプションのマイクロコントローラだけです。
- 全二重で最高 10Mbps に達する高いデータ・レートが得られます。例えば、産業用イーサネットをベースとしたプロトコルを実装できるデイジーチェーンのトポロジと組み合わせたとします。そうすれば、転送による遅延がデタミニスティックであることが求められるリアルタイム・アプリケーションで使用することができます。
- トランシーバーとメディアの間の絶縁には、容量結合と磁気結合のうちどちらでも使用できます。どちらを選ぶかは、アプリケーションに求められる安全性と堅牢性の要件に応じて決定することになります。
システムの検証
筆者らは、システムの性能を評価するために様々な測定を行いました。それにあたり、トランシーバー(ADIN1110)とコントローラ(TMC5160)との通信に使用するペリフェラルは、すべて標準的なハードウェア構成によって達成可能な最高速度に設定しました。マイクロコントローラのシステム・クロックの周波数は80MHzです。このことを考慮し、SPIベースのペリフェラルのデータ・レートはTMC5160では2.5MHz、ADIN1110では20MHzに設定しました。なお、TMC5160については、マイクロコントローラのクロックの設定を調整し、外部クロック信号を供給することによって、SPIの周波数を8MHzまで高めることができます。一方、ADIN1110では、データシートにおいて25MHzという上限値が定められています。
まず、遅延についての評価結果を紹介します。このシステムにおいて、データを要求してから応答フレームを受信するまでの合計時間は約4ミリ秒になりました。これは、データの要求とそれに対応する応答のタイムスタンプの差を計算するプロトコル・アナライザ「Wireshark」で取得した500個のサンプルの平均値です。筆者らは、システムのどの部分がこの遅延の原因になっているのかを特定するために追加の評価を行いました。その結果、主な原因はRTOSが提供する遅延関数であることがわかりました。この関数では、遅延を最小1ミリ秒に抑えることが可能であり、TMC5160の書き込み動作と読み出し動作の間隔を設定するために使用しています。ただ、実際のアプリケーションでは遅延は数十ナノ秒のオーダーに抑えることが求められます。そこで、筆者らはタイマー・ベースの遅延関数を定義することで改善を図りました。この関数を使えば、より短い遅延間隔を実現できます。
遅延のもう1つの原因は、フレームの受信に使用するScapyの関数です。この関数では、呼び出し後に最小3ミリ秒のセットアップ時間が必要になります。実際のアプリケーションでは、Scapyのようなサード・パーティ製のツールを使用するのではなく、OSのネットワーク・アダプタ・ドライバと直接接続するインターフェースを開発するとよいでしょう。それにより、遅延時間を短縮できます。但し、そのようにすると、様々なOSとの互換性が失われると共に、コードが複雑になります
マイクロコントローラに実装されたコールバックの正確な実行時間は、GPIO(General Purpose I/O)をトグルし、オシロスコープによってハイの期間を測定することで取得しました(表1)。実行時間の測定値には、受信フレームの読み取り/パース、モーション・コントローラへのコマンドの送信に使用する関数に伴う時間が含まれています。
コマンド | 実行時間〔ミリ秒〕 | 累積遅延時間〔ミリ秒〕 | 最適実行時間〔ミリ秒〕 |
2つのモータの同期動作 (TMC5160のレジスタに 24回アクセス) |
24.058 | 24.000 | 0.058 |
モータのデータの要求 (TMC5160に3回 アクセス) |
3.109 | 3.000 | 0.109 |
ダミーのデータの要求 (TMC5160とのやり取りはなし) |
0.080 | 0 | 0.080 |
PoDLを使用すれば、離れた場所にあるデバイスに電力を供給することができます(図5)。その伝送パスにおける電力損失を評価するために、筆者らは一連の測定を行いました(表2)。各テストを実施する際には、TMC5160シールドを電子負荷で置き換えました。この電子負荷を使えば、0.1A~0.5Aの範囲にわたり100mAステップで電流値を設定することができます。それにより、どのコンポーネントが電力損失に大きな影響を及ぼしているのかを特定しました。その結果、電流定格を高められるよう設計を改善する方法を明らかにすることができました。
電流〔A〕 | 入力電力〔W〕 | 出力電力〔W〕 | 効率 |
0.109 | 2.61 | 2.47 | 0.95 |
0.200 | 4.70 | 4.45 | 0.93 |
0.308 | 7.37 | 6.70 | 0.91 |
0.399 | 9.54 | 8.51 | 0.89 |
0.502 | 12.00 | 10.45 | 0.87 |
図6に示した結果から、損失の大きな要因はブリッジ整流器とショットキー・ダイオード(D2)であることがわかります。どちらも逆極性に対する保護のために使用しているコンポーネントです。これらを、MOSFETと理想ダイオード・コントローラをベースとした回路に置き換えれば、保護機能を維持したまま効率を高めることができます。より多くの電流を扱う場合、入出力電源のフィルタリングに使用される結合インダクタのDC抵抗の影響が支配的になります。したがって、電流能力を高めるためには、電流定格がより高いインダクタを使用する必要があります。
まとめ
インダストリ4.0は、インテリジェントなオートメーション技術の限界を押し上げています。本稿では、ADI TrinamicのTMC5160と10BASE-T1L対応のトランシーバーであるADIN1100、ADIN1110を組み合わせて使用するシステムを紹介しました。このようなシステムを構築すれば、エッジに電源回路を用意することなく、コントローラから最長1.7km離れた場所にあるセンサーやアクチュエータをリモートで制御することが可能になります。本稿で例示したように、信頼性の高いリモート制御の手法を採用すれば、速度をはじめとする性能を犠牲にすることなく、遠隔からステッピング・モータをリアルタイムかつ容易に制御することができます。本稿で紹介したようなシステム・ソリューションを採用すれば、最高の性能、従来は実現できなかった応答時間を達成することが可能になります。それらによって、産業の変革への道が切り開かれます。