さて、今回の前半では、
を、具体的に説明します*)。
*)実際に、モーターが動くようになるのは次回になりますが、「この年末年始の休暇中に動かしたいんだ!」というエンジニアの方がいらっしゃったら、その熱い思いに応えますので、江端に連絡ください。
ステッピングモーターを回すための準備は、以下の通りです。
【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.