ご主人様とメイドはテレパシー通信をしている?:江端さんのDIY奮闘記 EtherCATでホームセキュリティシステムを作る(4)(2/9 ページ)
さて、今回はEtherCATのメモリについてお話します。EtherCATのPDO通信、SDO通信は、ご主人様(マスタ)とメイド(スレーブ)は、このメモリを介した“テレパシー通信”によって、完璧なコミュニケーションを実現しています。それを説明した後に、いよいよ、本連載の山場の1つとして、SOEM(Simple Open EtherCAT Master)のデバッグ&トレース環境の作り方を紹介します。
息ぴったり! ご主人様とメイドたち
さて、今日は、このAPI、メモリ、通信の3つのうちの、メモリを中心にお話ししたいと思います。
まず、プロセスデータオブジェクト(Process Data Object:PDO)通信と、サービスデータオブジェクト(Service Data Object:SDO)通信のおさらいをします。
……と、ここまで書いて、ふと思ったのですが、「PDOとかSDOとか一体何なの?」と思っている人っているんじゃないかなー、と思ったりしています(実際、私にはよく分かりませんでした)。
そこで、乱暴な理解ですが、「オブジェクト=スレーブ装置の中のメモリ」と考えてしまいます。つまりPDO通信とは、PDO用のメモリを読み書きする通信であり、SDO通信とはSDO用のメモリを読み書きする通信である、と考えてしまえばいいのです。
PDO通信は、プロセスデータオブジェクト(PDO)用のメモリに、“1”や“0”を書き込むだけです。それらの制御データは、APIを介して、ロボットに転送される場合もありますし、されない場合もあります。ロボットに制御データが転送される前に、メモリのデータの内容が書き換えられてしまう場合もありますが、それでよいのです*)。
*)正確には3つのタイプの同期モードがあるのですが、今回はこれで押し通します。
一方、サービスデータオブジェクト(SDO)用のメモリには、スレーブの構成情報や健康状態が書き込まれていて、それを、ご主人様、前回説明したメールボックス通信で、回収するものと理解します。こちらも、読み書きのタイミングについては、PDO通信と同様に、同期は取りません。
メイドは、「どのAPIに向けて、どのようなタイミングで、どんな信号を出す」とか、「ご主人様に対してどのような通信メッセージを作って返信するか」などを、一切考える必要はなく、単にメモリに情報を書き込むだけで、ロボットやご主人様と連絡が取れてしまうのです。これはメイドにとって、とてもラクチンなはずです。
ご主人様は、さらにすごいです。
自分のメモリの中に、メイド全員のSDOとPDOの情報を持っていて(厳密にいうと、ちょっと違うのですが、今回はこれで押し通します)、ご主人様が、自分で持っているメイド用メモリの情報を書き替えるだけで、自動的にその情報がメイドのメモリの情報に反映されてしまうのです。
このすごさをどのように表現すればよいのでしょうか。
ご主人様が、メイドに「こうして欲しい」と考えるだけで、その気持ちがメイドに伝わり、メイドが「こうしました」と考えるだけで、ご主人様はそれを知ることができる。
これはもうテレパシー通信と言っちゃってもいいんじゃないかなー、と思うのですよ。
Copyright © ITmedia, Inc. All Rights Reserved.