メディア
連載
» 2015年12月28日 09時30分 公開

江端さんのDIY奮闘記 EtherCATでホームセキュリティシステムを作る(6):ご主人様とメイドは、通信の設計図を数秒で書く (3/4)

[江端智一,EE Times Japan]

ステッピングモーターを動かす準備

 さて、今回の前半では、

  • ステッピングモーターの駆動回路と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.

RSSフィード

公式SNS

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.