G9001AでのMotionnetの制御
Motionnetの制御は、CPUから、センターデバイス(G9001A)を操作することで行います。
G9001Aは、高応答な通信制御をシンプルな操作で行えるよう設計されています。
特徴
1.CPUからコマンドの書き込みや、データの読み出し及び書き込みを行うことでG9001Aを制御可能
2.Motionnetシステムの起動手順は、基本的にはCPUからG9001Aへ、2つのコマンドを送るだけ
3.I/O通信では、操作対象が割り当てられているビットを読み書きすればOK
4.モーター制御などで比較的大きいサイズのデータを通信する場合は、FIFOを用いたデータ通信を使用
5.通信時間はすべて計算により算出可能
1. CPUからの制御について
G9001Aは、CPUインターフェースモードを設定用端子(IF0、IF1)から切り替えることができ、様々なCPUとの接続に対応しています。(Z80系、8086系、H8系、68000系の4モードを搭載)
CPU接続用の端子として、バス信号端子(アドレスバスA0~A8、データバスD0~D15)および、制御信号端子を備えています。
G9001Aのアドレスマップ構成は右図のようになっており、操作内容に応じたアドレスにアクセスし、コマンドの書き込みや、データの読み出しおよび書き込みを行うことでMotionnetを制御することができます。
基本的には、512バイトのアドレス空間でアクセスする構成です。
ただし、「メモリアクセスコマンド」により「入出力バッファ」を操作することで、8バイトのアドレス空間だけでアクセスすることも可能です。
2. Motionnetシステム起動手順
Motionnetシステムの起動時には、ライン上の各LSIに対して電源投入とリセット操作を行います。
次にCPUから、G9001Aへ「全デバイスへのシステム通信」コマンドを送ります。
この操作によりG9001Aが、ライン上のローカルデバイス情報を自動的に読み込みます。
その後にCPUから、G9001Aへ「サイクリック通信の開始」コマンドを送るとシステムが稼働状態となります。
※Motionnetでは、伝送を周期的に常時行う通信を「サイクリック通信」または「I/O通信」と呼んでいます。
「サイクリック通信」は伝送方式に着目した呼び方、「I/O通信」は通信内容に着目した呼び方です。
以降の説明では、使い方をイメージしやすくするために「I/O通信」の呼称を用います。
(「I/O通信」の通信内容には、I/O以外の情報(ローカルデバイスのステータスなど)が含まれる場合もあります)
3. Motionnet通信の方式 「I/O通信」
G9001Aを用いたローカルデバイスとの通信には、主に「I/O通信」と「データ通信」の2種類があります。 G9001AにはI/O通信用に256バイトのメモリ領域が用意されています。
この256バイトの領域は「ポートデータエリア」と名付けられています。
「ポートデータエリア」はローカルデバイス1局あたり4バイト=32ビット割り当てられています。
例えば、通信相手が32点I/Oローカルデバイス(G9002A)の場合は、各ビットが各I/O端子に対応します。
そして、「ポートデータエリア」のビット状態と、ローカルデバイスの端子状態は、自動で同期されます。
この同期に要する通信時間は、ローカルデバイス1局あたり15.1μsec以内です。
つまり、読み取りたいI/O端子が割り当てられているビットを読み取れば、その端子の状態が分かります。
ローカルデバイス側で出力属性に設定した端子は、該当するビットを書き換えれば端子状態に反映されます。
なお、ローカルデバイスによってはI/O情報ではなく、ステータス情報などの同期に用いられる場合もあります。
4. Motionnet通信の方式 「データ通信」
内訳は、送信用256バイト+受信用256バイトとなっています。
「データ通信」は1度の通信で、「I/O通信」よりも大きいサイズのデータをやり取りしたい場合に用います。
具体的には、モーターや周辺LSIの制御などを行うための、データやコマンドのやり取りに用います。
「データ通信」の手順 は、
まず、まず、ローカルデバイスに送るデータやコマンドを送信用FIFOに書き込みます。
そしてCPUから、G9001Aへ「データ通信(の実行)」コマンドを送ると、送信用FIFO内のデータが送信されます。
すると、上記操作のコマンド内で宛先に設定した、ローカルデバイスのFIFOがデータを受信します。
また、ローカルデバイスは応答を行いますが、その際に返信データがあった場合は、G9001Aの受信用FIFOに格納されます。
FIFOへのアクセスと「データ通信」
5. 通信時間の計算方法
Motionnetでの通信にかかる時間はすべて計算により算出できます。
「I/O通信」の同期に要する通信時間は、ローカルデバイス1局あたり15.1μsec以内です。
一方「データ通信」は、「I/O通信」に割り込む形で行われます。
1度の「データ通信」に要する通信時間は、下記の式で導かれます。
「データ通信」に要する通信時間
(ST+JT)+7.4 [μsec]
送信時間(ST)=(送信バイト数)×0.6+3.25
応答時間(JT)
返信データ有りの場合(JT)=(送信バイト数)×0.6+5.65
返信データ無しの場合(JT)=5.05
※各LSIの仕様など詳細は、該当するマニュアル・取扱説明書をご参照ください。
※本稿の通信時間の記述は、Motionnetラインの通信速度設定が20Mbpsであることを前提としています。