ご主人様とメイドは、通信の設計図を数秒で書く:江端さんのDIY奮闘記 EtherCATでホームセキュリティシステムを作る(6)(3/4 ページ)
さて、今回はいよいよステッピングモーターを回す方法をご紹介したいと思います。その上で、マスター(ご主人様)とスレーブ(メイド)が何をどうしているのかを解説しましょう。実は、ご主人様とメイドは、制御系エンジニアが何週間もかけて書くスレーブのメモリマップ設計仕様書を、わずか数秒程度でするすると書き上げてしまうのです。
ステッピングモーターを動かす準備
さて、今回の前半では、
- ステッピングモーターの駆動回路とDI/DOのEtherCATスレーブ(この連載では「メイド」)との接続方法(前記で説明済み)
- Windows7の上で動くEtherCATマスタSOEM(Simple Open EtherCAT Manager=この連載では「ご主人様」)を使って、メイドとご主人様が、ステッピングモーターを動かすために、どんな取り決めをしているか
を、具体的に説明します*)。
*)実際に、モーターが動くようになるのは次回になりますが、「この年末年始の休暇中に動かしたいんだ!」というエンジニアの方がいらっしゃったら、その熱い思いに応えますので、江端に連絡ください。
ステッピングモーターを回すための準備は、以下の通りです。
【Step.1】
DI/DO(DOだけでも可)のEhterCATスレーブを、どっかからかっぱらって来てください。私が稼働を確認しているのは、このページに掲載しているスレーブです(ステッピングモーター、TD62003AP、プローブなどは、来月までに手に入れば間に合います)。
【Step.2】
本連載の第4回「ご主人様とメイドはテレパシー通信をしている?」のこちらの部分を読んで、SOEMのデバッグ&トレース環境を作っておいてください。
では、slaveinfoのプロジェクトを「スタートアッププロジェクトに設定」して、実行をしてみてください。以下のように、呪文のような情報が出てくるはずです。
これが、EtherCATマスタ(ご主人様)とスレーブ(メイド)が1000回くらいの情報交換をして、私たち人間の手を一切借りることなく自分たちだけで作り上げた、EtherCAT(お屋敷)の設計図です。
ここで重要なのは、本連載の第4回と第5回で説明した「テレパシー通信(江端命名)」用のご主人様(SOEM)のメモリアドレスが決まっていることです。
「テレパシー通信(江端命名)」とは、ご主人様であるマスタ(のPC)のメモリに情報を読み書きするだけで、それが、全部のメイドであるスレーブをコントロールすることです。
ここでは、そのご主人様のメモリの先頭アドレスが「IOMap:01257D80」(1)と決まっていることが分かります。
また、スレーブ1の出力デジタルI/O用のアドレスが「Outputs 01257D80」(2)で、スレーブ1の入力デジタルI/O用のアドレスが「Inputs 01257D82」(3)となっているのも分かります。
要するに、ご主人様であるマスタ(PC)の、このアドレスの値を適当にイジるだけで、メイドであるスレーブを意のままに動かすことができるわけです。
『“01257D80”のような、ベタベタなアドレスのメモリをどうやって使うんだ?』と思われるかもしれませんが、心配はいりません。
SOEMのソースコード中には、“char IOmap[4096]”という配列が定義されていて、その先頭アドレスとマッピングされているからです。
つまり、今回のケースでは、マスタのソースコードの中のIOmap[0](“01257D80”)とIOmap[1](“01257D81”)が出力用変数、IOmap[2](“01257D82”)とIOmap[3](“01257D83”)が入力用変数として使えることになります。
ご主人様(マスタ)は、この“char IOmap[4096]”の変数を使えばいいでしょう。しかしメイド(スレーブ)の方は、自力でEthernetフレームから、自分宛の情報を取り出さなければなりません。
Copyright © ITmedia, Inc. All Rights Reserved.