「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
ソフテックでは、20年以上前からARCNET(Attached Resource Computer NETwork)を利用したシステム開発を手掛けています。
現在はイーサネット(Ethernet)がネットワークの主流ですが、スイッチングハブが世間に広がる前は、イーサネットの特徴でもあるCSMA/CD方式(Carrier Sense Multiple Access/Collision Detection)によってコリジョン(データ衝突)が発生してしまい、ネットワークの遅延時間が計算できないネットワークでした。
この弱点を回避するために、ネットワークの応答時間が重要になるシステムでは、最大遅延時間が計算できるARCNETを採用することが多くありました。
ソフテックの開発実績をARCNETで検索すると、一番古い実績として1991年に「アークネット解析実験プログラム」がヒットします。
また、それ以外にもFAVIEWでの利用実績や、組み込み系システムの基板間通信用ネットワークとしての実績もあります。
今回は、このARCNETの特徴について説明します。
なお、説明内容はマイクロチップ社のCOM20020(ARCNETドライバLSI)を利用した前提とします。
ARCNETとは1977年にアメリカのDatapoint社によって提唱された改良型トークンパッシングプロトコルのネットワーク規格です。
基本的な仕様は「表1 ARCNET基本仕様」のとおりです。
機能 | 仕様 |
---|---|
転送速度 | 転送速度2.5 Mbps (1bit/400ns) Rev.Dでは 156.25kbps〜最大5Mbps をサポート |
最大ノード数 | 最大ノード数255ノード/1ネットワーク |
パケットサイズ | (ショートパケット設定時)パケットサイズ:1〜253バイト (ロングパケット設定時)パケットサイズ:257〜508バイト |
ネットワークの最大距離 | 6.4km (タイムアウト時間の設定で拡張可能) |
表1. ARCNET基本仕様
接続されたノードが順番にトークン(ネットワーク使用権)を回し、自分がトークンを受け取った時にデータを送信することが出来ます。
パソコンでARCNETを利用する場合は、ARCNET用ボードやUSBタイプの変換器など市販されている機器を使います。
組み込み機器でARCNETを利用する場合は、ARCNETドライバ(LSI)をCPUから制御して使います。
ARCNETの大きな特徴であるトークンパッシングについて説明します。
トークンパッシングプロトコルでは、トークン(ネットワークの使用権)を受け取った機器だけが送信をすることが出来ます。
このため、複数の機器が送信データを持っていても、実際に送信するのはトークンを持っている機器だけとなります。
トークンは、同じネットワークに接続されている機器間を順番に回る(機器のノードIDが小さい番号から大きい番号に受け渡される)ため、全ての機器が平等の機会でトークンを受け取ります。
トークンが順番に回ることが分かっているため、トークンが回る最大待ち時間も机上で計算することが出来ます。
(「ARCNET Technical Manual」に待ち時間の計算方法が記載されています)
これにより、システム全体の応答速度を保つための接続機器数を検討できるメリットがあります。
図1にトークンが流れるイメージ(トークンパス)を示します。
図1. トークンパス
機器のネットワーク脱落やネットワーク参加、通信ライン上のノイズ発生によるトークンの消失など、運用時にはトークンパスが変わることがあります。
このような場合は、ARCNETドライバ(LSI)が状況を検出してトークンパスの再構築(リコンフィグレーション)を行います。
トークンの管理は、ARCNETドライバ(LSI)が行うため、ソフトで管理する必要はありません。
しかし、リコンフィグレーションが頻発する場合は、結線やハードウェアの問題が内在している可能性もありユーザーに知らせる必要があります。
ソフトウェアはリコンフィグレーションの発生状況を管理しておく必要があります。
トークンを受け取ったARCNETドライバ(LSI)は、LSIの送信バッファにデータが無ければ、次の機器へトークンを渡します。
送信バッファに送信データがある場合は、送信準備を行いパケットの送信を行います。
ソフトウェアはLSIに送信データをセットして送信要求をONすると、LSIが送信先の状態を確認して、相手が受信できる状態であれば、データを送信します。
ソフトウェアは、LSIの動作結果を確認して、送信が完了したことを認識します。
図2にLSIの送信準備から送信までの流れを記載します。
図2. 送信の流れ
受信側は受信データ数とCRCのチェックをして正常な場合にACKを返信します。
この時点で相手のLSIに正常に届いたことを意味しています。
送信側も、この状態を確認出来るので、相手に正しく届いたことを確認出来ます。
ここで注意する点として、相手側の機器がLSIに格納された受信データをCPUが正しく処理をしたとは限らない点です。
例えば、相手側のCPUが受信直後にリセットされることもありますし、相手側が未対応のコマンドを受信として認識してデータを破棄している可能性もあります。
このため、CPU間のプロトコルでも、相手側のCPUが処理したことを確認出来る仕組みや、パケット番号をつけてパケットの抜けの確認が出来る仕組みなどを組み込んでおいた方が信頼性の高いシステムにすることが出来ます。
ソフトウェアで受信許可にしていると、LSIは相手から送信されたデータをソフトウェアで指定された領域に受信し、受信バイト数とCRCのチェックで正常な場合に受信完了をソフトウェアへ通知します。
受信のポイントは「指定された領域に受信」することです。
ARCNETドライバ(LSI)は2Kバイトの内蔵RAMを持っており、メモリをページ分割して利用することが出来ます。
例えば受信用に256バイト×7ページ、送信用に256バイト×1ページと設定して、各ページに対して受信許可をすることが可能です。
CPUの処理能力が低い場合、LSIの受信バッファから256バイトをCPUに取り込むための時間がかかります。
このような時は、他のページを受信許可にしておくことで、データ取り込み中も受信することが可能です。
送信動作で説明したように、送信側は相手の状態を確認して受信許可になっている場合にだけ送信します。
このため、受信許可にしなければ送信側が待ってくれますが、ページ分割をして利用することで送信待ちが少なくなり、効率が良い通信をすることができるようになります。
ARCNETの特徴について説明をしました。
本ソフテックだよりは、ARCNETを利用したシステムを検討することを意識して、最低限の内容を書いています。
これから新規システムに採用するためにARCNETを勉強する方や、メンテナンスのためにARCNETを勉強する方の参考になればと思います。
実際にシステム設計する場合には異常処理なども把握する必要がありますので、詳細については参考文献にあるようなマニュアルを読んでください。
また、ARCNETの場合は、LSIが処理してくれる部分が多くあります。
このため、パソコンで利用する場合でも、「ARCNETコントローラーCOM2002x」のマニュアルを一読することをお奨めします。
LSIの動きを把握すると、ARCNETの理解が深まると思います。
(T.O.)
関連ページへのリンク
関連するソフテックだより