ネットワーク通信

WOBでは情報技術の主要素の1つであるネットワークについても学習ができるように簡易ネットワーク機能を搭載しています。DeM機械語プログラムで操ることはもちろん、WOBモニタからでも操作ができます。

簡易ネットワーク機能を用いてできることは、

  • 自分とは異なるネットワークIDを持つ相手にメッセージ(データ列)を送ること
  • ネットワークにつながっている全員に同一のメッセージを一斉に送ること

です。

ネットワーク機能はライブラリ化されており、また、疑似的にハードウェアに見えるようにI/Oポートとして定義してあります。

I/Oマップからネットワーク機能に関する部分を抽出しておきます。

メモリ I/O命令 アクセス 対応するI/Oポート、
アドレス アドレス タイプ メモリ、メソッド カテゴリ 説明
3116-3119 29 R MyAddrSaved(EEMEM) ネット
ワーク
自局のID(0-99, 0はNW不使用)
3120-3123 30 R/W TxContext.to 送信相手局のID(1-99, 99は一斉)
3124-3127 31 R/W TxContext.count 送信データ数(1-28)
3128-3131 32 R/W TxContext.buf 送信バッファアドレス(1000-9999, 書き込みで送信)
3132-3135 33 R RxContext.from 受信相手局のID(1-99, 99は一斉)
3136-3139 34 R RxContext.count 受信データ数(0-28, >0で受信データあり, 読み出しでLED消灯)
3140-3143 35 R/W RxContext.buf 受信バッファアドレス(1000-9999, 書き込みで受信)

WOBモニタによるもっとも簡単な操作方法を以下に示します。

準備

  1. 参加者でネットワークIDの割り当てを決めます。1~98の番号で、重複しないようにしてください。
  2. 付属のネットワークケーブルをWOBのネットワークコネクタに接続します。2個ありますがどちらでも構いません。

  3. ネットワークケーブルのもう片方を隣の人のWOBに接続します。どんどんつなげても輪にする必要はありません。
  4. Addr Set を押しながらリセットボタンを押し、「NETID 0」と表示されたら割り当てられたネットワークIDをキーパッドから入力し、最後に Write Incr を押します。
注意:ネットワークコネクタに活きている電話線をつながないでください。事故や故障の原因になります。

受信側

  1. I/Oマップの「受信バッファアドレス」にメッセージ(28バイト以内の数字のデータ列になりますが)を格納するメモリの先頭番地(ここでは1100)を書き込みます。これで受信準備完了です。

送信側

  1. メモリのある番地(ここでは1200番地とします)に相手に送りたいメッセージを書き込みます。
  2. 「相手局のID」に送信相手のネットワークIDを書き込みます。
  3. 「送信データ数」にメッセージのデータ数(バイト数)を書き込みます。
  4. 「送信バッファアドレス」にメッセージの先頭アドレス(この場合1200)を書き込みます。これで送信完了です。

受信側

  1. 送信・受信がきちんと行われると、受信側のWOBのネットワークコネクタ近くの赤いLEDが点灯します。
  2. I/Oマップの「受信データ数」を読みに行くと何バイト受信したのかが分かると同時に点灯していた赤いLEDが消えます。
  3. 受信データの格納番地(1100番地)にメッセージが格納されています。

以上で送受信のもっとも簡単な例が完結です。アドレスやメッセージを変えていろいろ試してみましょう。送信相手のIDに99を入れると一斉送信(全員に送信)になります。

そのうち文字でメッセージを伝えたい欲求が出てきます。DeM機械語プログラムを作ればできますので、ぜひトライしてみてください。

非常に簡素な仕組みのネットワークなので多人数で一斉にやりとりするとうまくいかないこともあるかもしれません。そこはご容赦!