以下、この発明を実施するための形態を図面に基づいて具体的に説明する。
まず図1に、この発明のリモート制御システムの実施形態である通信システムの概略構成を示す。
この図に示すように、通信システム1は、PC10a〜10c,アンプ20a,20b,デジタルミキサ30,入出力装置40,エフェクタ50を、制御ネットワーク60により接続して構成している。また、PC10a〜10c以外の各装置は、音響信号処理装置であり、これらの装置はオーディオネットワーク70によっても接続している(アルファベット付きの符号で示した装置につき、個体を特定しない場合にはアルファベットなしの符号を用いる)。
また、制御ネットワーク60は、接続される各装置の間で、要求(コマンド)、要求に対する応答、通知等のパケットを送受信するため、ユニキャスト送信とマルチキャスト送信の双方が可能なネットワークである。オーディオネットワーク70は、接続される各装置の間で、オーディオ形式のデジタル波形データ(音響信号)をリアルタイムで送受信するためのネットワークである。ただし、本発明は、制御ネットワークに関するものであり、オーディオネットワークは必須ではない。例えば、オーディオ信号の伝送が必要な各2装置間をそれぞれケーブルで結び、オーディオネットワーク無しのシステムとしてもよい。
また、どちらのネットワークも、これらのデータが送受信可能であれば、ハードウェアや接続トポロジー等は任意のものでよい。有線か無線かも問わない。ただし、この発明は、比較的通信が途切れ易い、無線通信を行うシステムに適用すると特に効果が大きい。
制御ネットワーク60の通信プロトコルについては、OSI参照モデルのネットワーク層にイーサネットを使用する場合、トランスポート層にはTCP(Transmission Control Protocol)やUDP(User Datagram Protocol)を用いることが一般的である。その場合、TCPを用いたユニキャスト送信は、TCPが提供する到達保証により信頼性の高いデータ送信が可能であるが、UDPを用いたマルチキャスト送信では、それだけでは何の到達保証も提供されておらず、データが届いたかどうか判断できない。本発明は、このようなマルチキャスト送信に、ネットワークの帯域を大きく消費したり、被制御装置に大きな負担をかけることなく、ある一定レベルの到達保証を与えるものである。
なお、ユニキャスト送信ないしマルチキャスト送信に使用するトランスポート層のプロトコルは、必ずしもTCPとUDPでなくてもよい。ユニキャスト送信に関しては、TCPに限らず、到達保証が提供されている場合が多く、マルチキャスト送信に関しては、UDPに限らず到達保証が提供されていない場合が多い。
なお、オーディオネットワーク70については、Cobranet(商標)やEtherSound(商標)やDante(商標)などを適宜用いればよい。
また、通信システム1を構成する装置のうち、PC10が制御装置であり、アンプ20、デジタルミキサ30,入出力装置40,エフェクタ50が、PC10によりパラメータの値を制御される被制御装置である。
以下、これらのうち代表としてPC10、アンプ20及びデジタルミキサ30について、ハードウェア構成を説明する。
まず図2に、所定の基本ソフト(OS:オペレーション・システム)が走るPC10のハードウェア構成を示す。
図2に示すように、PC10は、CPU101,ROM102,RAM103,HDD(ハードディスクドライブ)104,表示器105,入力装置106,ネットワークI/F107を備え、これらをシステムバス108により接続している。
そして、CPU101が、基本ソフト上で所要のリモート制御用のアプリケーションプログラム(リモート制御プログラム)を実行することにより、PC10全体を制御し、ユーザの操作に従って被制御装置に対してパラメータの値の変更を要求する、被制御装置からの通知に基づいてPC10と被制御装置との間でパラメータの値の同期を取る等の、後述する制御装置としての機能を始め、種々の機能を実現する。
また、制御装置としての動作のために、CPU101がRAM103中に用意し使用するデータ(図10)は、リモート制御プログラムの停止時に、ユーザのセーブ操作に応じて、ないし、自動的に、設定ファイルとしてHDD104に保存される。そして、HDD104に記憶された設定ファイルは、リモート制御プログラムの次の起動時に、ユーザのロード操作に応じて、ないし、自動的にRAM103に読み込まれる。
表示器105は、ユーザに情報を提示するためのディスプレイ等の表示手段である。
入力装置106は、ユーザからの操作を受け付けるためのキーボードやポインティングデバイス等の入力手段である。
ネットワークI/F107は、PC10を制御ネットワーク60に接続するためのインタフェースである。
これらの構成については、ハードウェアとしては公知のものを適宜採用すればよい。
次に、図3に、アンプ20のハードウェア構成を示す。
図3に示すように、アンプ20は、CPU201,ROM202,RAM203,ネットワークI/F204,簡易UI(ユーザインタフェース)205,オーディオ入出力部206,DSP(デジタルシグナルプロセッサ)207,アンプ回路208を備え、これらをシステムバス209により接続している。また、ネットワークI/F204、オーディオ入出力部206及びDSP207は、デジタル波形データ伝送用のオーディオバス210によっても接続している。
そして、CPU201が、RAM203をワークメモリとしてROM202に記憶している所要のプログラムを実行することにより、アンプ20全体を制御し、制御装置からの要求に基づいてRAM203上に設けられたカレントメモリに記憶しているパラメータの値を変更する、その変更の結果を制御装置に通知する等の、後述する被制御装置としての機能や、DSP207及びアンプ回路208における信号処理を制御する機能等、種々の機能を実現する。
ネットワークI/F204は、アンプ20を制御ネットワーク60及びオーディオネットワーク70に接続するためのインタフェースである。オーディオネットワーク70を介してアンプ20が受信し、アンプ20において処理する音響信号は、ネットワークI/F204がオーディオバス210に供給する。逆に、アンプ20からオーディオネットワーク70に送出する音響信号は、ネットワークI/F204がオーディオバス210から読み出してオーディオネットワーク70へ送出する。
簡易UI205は、ユーザによる操作を受け付けるための、少数のボタン及び小型の表示器等からなる操作部である。アンプ20の操作は、ほぼ全て制御装置からのリモート制御により行うことができるようにしているため、アンプ20に設けるUIは簡単なものでよい。
オーディオ入出力部206は、外部のマイク、ミキサ、エフェクタ、入出力装置、レコーダ等の音響機器と接続し、これらの音響機器からデジタルないしアナログの音響信号の入力を受け付けるための入力端子と、これらの音響機器へデジタルないしアナログの音響信号を出力するための出力端子とを有する。外部からオーディオ入出力部206に入力する音響信号はオーディオバス210に供給し、オーディオ入出力部206から外部へ出力する音響信号はオーディオバス210から読み出して取得する。なお、外部からオーディオ入出力部206に入力するアナログ音響信号は、アナログ信号のままアンプ回路208に供給することも可能である。
DSP207は、信号処理回路を含み、オーディオバス210から入力する複数の音響信号に対し、カレントメモリに設定されている各種処理パラメータに従って、ミキサ、コンプレッサ、イコライザ、チャンネルディバイダ、アッテネータ、ディレイ等の何れか1ないし複数の各種信号処理を施した上で、デジタル信号のままないしアナログ信号に変換し、アンプ回路208に出力する信号処理部である。すなわち、アンプ回路208で電力増幅すべき信号に対し、前処理としての特性調整を行う機能を有する。
アンプ回路208は、オーディオ入出力部206あるいはDSP207から供給されるアナログ音響信号に対し、電力増幅を行って出力する回路である。そして、アンプ回路208からの出力信号は、スピーカに供給され、音声として出力される。
以上のアンプ20において、DSP207で実行する信号処理や、アンプ回路208における電力増幅、オーディオ入出力部206及びネットワークI/F204における入出力ポートとDSP207の信号処理chとの間の信号伝送経路(パッチ)等の、アンプ20が実行する音響信号処理の内容を規定するパラメータの値は、RAM203に設けたカレントメモリに記憶されており、ユーザは、PC10等の制御装置を操作することにより、そのパラメータの値をリモートで変更したり確認したりすることができる。
また、図4に、デジタルミキサ30のハードウェア構成を示す。
図4に示すように、デジタルミキサ30は、CPU301,ROM302,RAM303,ネットワークI/F304,パネル表示器305,パネル操作子306,電動フェーダ307,オーディオ入出力部308,DSP309を備え、これらをシステムバス310により接続している。また、ネットワークI/F304、オーディオ入出力部308及びDSP309は、デジタル波形データ伝送用のオーディオバス311によっても接続している。
そして、CPU301が、RAM303をワークメモリとしてROM302に記憶している所要のプログラムを実行することにより、デジタルミキサ30全体を制御し、後述する被制御装置としての機能や、DSP309における信号処理の制御や、パネル操作子306及び電動フェーダ307により受け付けたユーザの操作に従ったパラメータの値の制御に関する機能を始め、種々の機能を実現する。
ネットワークI/F304は、アンプ20の場合と同様に、デジタルミキサ30を制御ネットワーク60及びオーディオネットワーク70に接続するためのインタフェースである。
パネル表示器305は、CPU301による制御に従って種々の情報を表示する表示手段であり、例えば液晶パネル(LCD)や発光ダイオード(LED)によって構成することができる。
パネル操作子306は、デジタルミキサ30に対する操作を受け付けるためのものであり、種々のキー、ボタン、ロータリーエンコーダ、スライダ等によって構成することができる。LCDに積層したタッチパネル等を用い、パネル表示器305と一体化した構成とすることもできる。
電動フェーダ307は、モータ等の駆動手段を備えたスライダ操作子であり、CPU301の制御により、つまみを任意の位置に移動させることができる。
デジタルミキサ30においては、制御装置からのリモート制御の他、ユーザが直接デジタルミキサ30を操作してローカルでパラメータの値を編集することも想定し、これらのように、パラメータの値の操作や参照のための多数の操作子や大型の表示器を設けている。
オーディオ入出力部308は、外部のマイク、エフェクタ、入出力装置、アンプ、レコーダ等の音響機器と接続し、これらの音響機器からデジタルないしアナログの音響信号の入力を受け付けるための入力端子と、これらの音響機器へデジタルないしアナログの音響信号を出力するための出力端子とを有する。外部からオーディオ入出力部308に入力する音響信号はオーディオバス311に供給し、オーディオ入出力部308から外部へ出力する音響信号はオーディオバス311から読み出して取得する。
DSP309は、信号処理回路を含み、オーディオバス311から入力する複数の音響信号に対し、カレントメモリに設定されている各種処理パラメータに従って、複数の各入力チャンネルにおけるその音響信号の特性制御処理、複数の各混合バスにおける入力チャンネルからの音響信号の混合処理、複数の各出力チャンネルにおける混合バスからの音響信号の特性制御処理等を含む信号処理(ミキシング処理)を施した上でオーディオバス311へ出力する機能を有する。
以上のデジタルミキサ30において、DSP309で実行する信号処理や、オーディオ入出力部308及びネットワークI/F304における入出力ポートとDSP309の信号処理chとの間の信号伝送経路(パッチ)等の内容を規定するパラメータの値は、RAM303に設けたカレントメモリに記憶されている。ユーザは、パネル表示器305、パネル操作子306及び電動フェーダ307を用いる他、PC10等の制御装置を操作することによっても、そのパラメータの値をリモートで変更したり確認したりすることができる。
なお、アンプ20、デジタルミキサ30等の被制御装置のカレントメモリのパラメータは、図示しないバッテリーによるバックアップや、図示しないフラッシュメモリによるバックアップによって、電源を落としたときに失われず、電源を再投入したとき復活できるようにしておくとよい。また、被制御装置のオーディオネットワーク70への接続は必須ではなく、ネットワークI/F204、304は、それぞれ、制御ネットワーク60にのみ接続されるようにしてもよい。
この実施形態の特徴は、複数の制御装置により1又は複数の被制御装置のパラメータの値を制御する場合において、ある制御装置からの指示により被制御装置が行ったパラメータの値の変更を、他の制御装置に伝達する手法である。そこで、次にこの点について説明する。
まず図5に、通信システム1における、被制御装置のカレントメモリに記憶されているパラメータの値(カレントメモリの内容)を変更する際の動作の手順を示す。
なお、以下の説明については、通信システム1を構成する装置のうち、パラメータの値の変更を他の装置に指示する装置(図1の例ではPC10)を制御装置2と、制御装置2からの指示に応じてパラメータの値を変更し、その内容を制御装置に伝達する装置(図1の例ではアンプ20a,20b,デジタルミキサ30,入出力装置40,エフェクタ50)を被制御装置3と呼ぶことにする。
また、図5においては、制御装置2が受け付けた操作に基づきリモート制御で被制御装置3のカレントメモリ3aの内容を変更する場合の手順を実線で、被制御装置3自身が受け付けた操作に基づきローカルでカレントメモリ3aの内容を変更する場合の手順を破線で示した。
通信システム1において、図5に示すように、各制御装置2,2は、RAM103上に、自身が制御する(又はモニタする)被制御装置3のカレントメモリ3aと同じ内容を記憶する、仮想カレントメモリ2aを備えている。そして、初めに被制御装置3の制御を開始する際に、仮想カレントメモリ2aの内容とカレントメモリ3aの内容とを一致させ、以後、制御を継続する間はその状態を保つようにする。
このカレントメモリ3aと仮想カレントメモリ2aの記憶内容を相互に「一致させる」動作を「同期化」と言い、「一致した状態が保たれている」状態を「同期している」と言う。リモート制御プログラムに基づいて、CPU101は、各被制御装置3に対応する仮想カレントメモリ2aを用意し、その仮想カレントメモリ2aに記憶されているパラメータを表示器105に表示し、或いは、ユーザからの編集操作に応じてその仮想カレントメモリ2aに記憶されているパラメータの値を変更する。すなわち、パラメータに関して、PC10の内部に、被制御装置3に対応する仮想的なデバイスが存在していると看做すことができる。
そして、制御装置2が、ユーザから被制御装置3におけるパラメータの値の変更を指示する操作を受け付けると、まずその変更を仮想カレントメモリ2aに対して行う。その後、被制御装置3に対して変更命令を送信し、カレントメモリ3aの内容を変更するよう要求する。ここで、先に仮想カレントメモリ2aの内容を変更するのは、被制御装置3との通信に時間がかかる場合でも、仮想カレントメモリ2aの内容に基づき、ユーザから受け付けた操作の結果(変更後のパラメータの値)をレスポンスよく表示するためである。
また、変更命令を受信した被制御装置3は、その変更命令に従ってカレントメモリ3aの内容を変更すると共に、その変更の内容又は変更後のパラメータの値を、更新情報として、自身を制御している各制御装置2に送信する。
そして、この更新情報を受信した制御装置2がその更新情報に従って仮想カレントメモリ2aの内容を更新することにより、変更操作を受け付けていない制御装置2においても、被制御装置3とカレントメモリの内容が同期した状態を維持することができる。
なお、変更操作を受け付けた制御装置2に対しては、更新情報の送信は行わなくてもよいが、送信を行えば、変更命令に従ったカレントメモリ3aの内容の変更が確かに行われたことを確認できる。
一方、被制御装置3がユーザから被制御装置3自身におけるパラメータの値の変更を指示する操作を受け付けると、被制御装置3は、まずその変更をカレントメモリ3aの内容に対して行う。そしてその後、その変更の内容又は変更後のパラメータの値を、更新情報として、自身を制御している各制御装置2に送信する。
そして、この更新情報を受信した制御装置2がその更新情報に従って仮想カレントメモリ2aの内容を更新することにより、各制御装置2と被制御装置3とでカレントメモリの内容が同期した状態を維持することができる。
更新情報の送信とそれに伴う仮想カレントメモリ2aの内容変更は、実線の場合も破線の場合も、同じように行うことができる。
また、全部又は一部の制御装置2を、被制御装置3に対してパラメータの値の変更を要求せず、単に被制御装置3とカレントメモリの内容を同期させてその内容を監視する装置として機能させることもできる。
次に図6に、通信システム1において、図5に示した手順を実行する際に制御装置と被制御装置との間で用いる通信プロトコルを示す。
図6に示すように、通信システム1においては、制御装置2と被制御装置3との間でのリモート制御に関するデータの送受信には、ユニキャストと、マルチキャストとを用いる。
このうちユニキャストは、データを、1つの送信先に対応する1つのアドレス宛てに送信するものである。ここでは、送信元装置と送信先装置との間にコネクションを形成し、パケットに対するシーケンス番号の付与や確認応答の返送などにより、送信元装置が、データが送信先装置に到達したことを確認でき、データが到達できなかった場合には再送信を行う、到達保証の機能を有するコネクション型の通信プロトコルが用いられる。このようなプロトコルとしては、例えばTCPを用いることができる。
またマルチキャストは、データを、複数の送信先に対応する1つのアドレス宛てに送信するものである。ここでは、コネクションの形成を行わず、データの到達保証も提供しない代わりに、高速にデータを届けることができるコネクションレス型の通信プロトコルが用いられる。このようなプロトコルとしては、例えばUDPを用いることができる。一般に、マルチキャストにおいては、送信先装置に確実にデータが到達することは保証されない。しかし、マルチキャストは、ユニキャストに比べ、同じサイズのデータを送信先に到達させるために必要な通信量が小さく、ネットワークの通信帯域に対する負荷が小さいという特性がある。
そこで、この実施形態においては、確実に送信先に到達させる必要がある、制御装置2から被制御装置3への変更命令の送信は到達保証のあるユニキャスト送信により送信し、多少データのロストがあっても動作に大きな支障がない、被制御装置3から制御装置2への更新情報の送信はマルチキャスト送信で行い、そのマルチキャスト送信の際に生じるデータの欠落を補正する機能を別途設けることにより、通信の帯域及び負荷低減とデータ伝送の安定性の両立を図ったものである。
次に、このデータ欠落の補正機能の概略について説明する。
図7及び図8に、通信システム1における制御装置2と被制御装置3との間の通信シーケンスの例を示す。
図7に示すのは、被制御装置3のカレントメモリ3aの内容を変更する際の通信シーケンスであり、ステップS11〜S17が、制御装置2によりリモートで変更する場合、ステップS21〜S26が、被制御装置3がローカルで変更操作を受け付けた場合の例である。
詳細については図5の説明と重複するので省略するが、リモートの場合もローカルの場合も、被制御装置3は、カレントメモリ3aに記憶しているパラメータの値を変更すると、そのパラメータのIDを記憶しておく(S15,S23)。この点が、1つのポイントとなる。
また、図8に示すのは、1つの制御装置2と被制御装置3との間の関係に着目し、図7よりも長いスパンで見た、制御装置2と被制御装置3との間でのデータ送受信のシーケンスである。
図5及び図7に示した通り、被制御装置3は、カレントメモリ3aの内容を変更すると、その内容を、被制御装置3を制御又は監視している制御装置2に通知すべく、更新情報UPDATEを制御装置2にマルチキャストで送信する(S32,S33,S35〜S37)。
また、被制御装置3は、これとは別に、定期的に、同期データSYNCを、被制御装置3を制御又は監視している各制御装置2に送信する(S31,S34)。この送信も、マルチキャストで行う。そして、被制御装置3が同期データSYNCを送信してから次に同期データSYNCを送信するまでの期間を、1つの同期期間と定める。この同期期間は、データ欠落を補正する際のその補正処理の実行単位を定めるものであり、同期データSYNCは、この同期期間を制御装置2に伝達するためのデータである。
ここで、更新情報UPDATEも、同期データSYNCも、マルチキャストで送信するため、被制御装置3が送信したデータが制御装置2に到達しない場合がある(S35,S36)。しかし、例えば被制御装置3が、マルチキャストで送信するパケットに通し番号を付すようにすれば、制御装置2側で、その通し番号の連続性を確認することにより、受信エラーの有無を判断することができる。
そして、制御装置2が受信エラーを検出した場合(S38)、パケットを全て正常に受信できていた最後の同期期間の次の同期期間を特定し(S39)、特定された同期期間以降の1又は複数の同期期間において変更されたパラメータの情報を要求する送信要求REQ_SYNCを、被制御装置3に送信する(S40)。この送信要求は、確実に被制御装置3に到達させる必要があるため、ユニキャストで送信する。
また、被制御装置3は、送信要求REQ_SYNCを受信すると、その送信要求で要求された各同期期間において値が変更されたパラメータを、図7のステップS15及びS23で記憶したIDに基づき特定する(S41)。そして、その特定したパラメータの現在値を、次に送信する同期データSYNCに含めて制御装置2に送信する(S42,S43)。
この同期データSYNCを受信した制御装置2は、受信した同期データに含まれるパラメータの現在値に基づき仮想カレントメモリ2aの内容を訂正する(S44)。
以上のステップS39乃至S44の処理により、更新情報UPDATEが受信できなかった期間に値が変更されたパラメータについて、カレントメモリ3aにおける最新の値を仮想カレントメモリ2aに記憶させることができる。従って、更新情報UPDATEの欠落により損なわれたと考えられる仮想カレントメモリ2aとカレントメモリ3aの同期を、回復させることができる。
以下、この更新情報UPDATE及び同期データSYNCを用いたデータの伝送エラーの補正のために制御装置2及び被制御装置3のCPUが実行する処理につき、詳細に説明する。
まず、図9及び図10に、被制御装置3及び制御装置2が記憶する、この通信エラーの補正の処理に使用するデータを示す。
被制御装置3は、RAM203、303に、図9に示すような、機種ID、デバイスID、IP(Internet Protocol)アドレス、同期ID(SID)、マルチキャストID(MID)、動作パラメータ、マルチキャストグループ情報、その他各種レジスタの値を記憶する。
これらのうち機種IDは、被制御装置3の機種を示す識別情報であり、被制御装置3のメーカーが設定する値である。
デバイスIDは、被制御装置3の個体を識別するための識別情報であり、ユーザが設定可能な値である。従って、被制御装置3毎に必ずしもユニークな値となるとは限らず、複数の被制御装置3に同じデバイスIDが設定されている場合がある。
IPアドレスは、ユニキャストの送信先として被制御装置3を指定する際に用いるアドレスである。
同期IDは、現在の同期期間が何番目の同期期間であるかを示す番号であり、同期期間毎に変化させる。
マルチキャストIDは、被制御装置3が次にマルチキャストするパケットに付す連続番号であり、パケットをマルチキャストする度に変化させる。
動作パラメータは、被制御装置3が音響信号処理に使用するパラメータであり、これを記憶する領域がカレントメモリ3aに当たる。被制御装置3の各パラメータは、その被制御装置の内部でユニークなID(pIDと呼ぶ)により特定される。
マルチキャストグループ情報は、被制御装置3を制御する制御装置2に対してパケットをマルチキャストするために使用するマルチキャストアドレスを示す情報である。これに対応して、制御装置2側では、どのアドレスにマルチキャストされたパケットを受信するかを設定しておく。
そして、例えば、ある5台の制御装置2a〜2eがあって、うち3台の制御装置2a,2b,2cはアドレスA宛てにマルチキャストされたパケットを受信し、また、3台の制御装置2a,2c,2dはアドレスB宛てにマルチキャストされたパケットを受信するよう設定されていたとすると、ある被制御装置3aは、マルチキャストの送信先アドレスとしてアドレスAを指定することにより、制御装置2a,2b,2cのみに対してパケットを送信できる。また、別の被制御装置3bは、アドレスB宛てにマルチキャスト送信することにより、制御装置2a,2c,2dのみに対してパケットを選択的に送信できる。
すなわち、1つのグループに対応する1つのグループアドレスが宛先として記載された1つのIPパケットは、そのグループに属する複数の制御装置によって、選択的に、かつ、同時に受信されるのである。
このように、通信システム1においては、1つの被制御装置につき1つのマルチキャストアドレスに対する送信で、被制御装置を制御又は監視する全ての制御装置2に対してパケットを送信できるように、マルチキャストグループが定められている。1つの被管理装置が同じデータを複数のアドレス宛てに送信すると、ネットワークの通信帯域をよけいに消費するだけでなく、その被制御装置のCPUにより負担をかけることになるからである。
各種レジスタは、通信エラーの補正のための処理において随時内容を変更する変数が記憶されており、詳細についてはフローチャートの説明において後述する。
一方、制御装置2は、RAM103に、図10に示すような、仮想デバイス数、仮想デバイスデータ、各機種のパラメータ構成情報、IPアドレス、マルチキャストグループ情報、その他各種レジスタの値を記憶する。
制御装置2では、用意された複数機種のデバイスのライブラリ中から、ユーザが、制御又は監視の対象としようとする機種を、それぞれ、任意数、仮想デバイスとして選択して登録することができる。そして、制御装置2は、RAM103中に、登録された各仮想デバイスの仮想デバイスデータの記憶領域を用意するとともに、登録された仮想デバイスの数Numを記録する。
なお、ある制御装置2に、ある被制御装置3と同じ機種の仮想デバイスが登録され、対応する仮想デバイスデータが用意されていたとしても、その制御装置2が、その被制御装置3を制御可能(ないし監視可能)であるとは限らない。その被制御装置3が制御ネットワークに接続されていない場合には、当然ながら制御(ないし監視)できないし、接続されていたとしても、その被制御装置3との対応付けがされていなければ、その被制御装置3は制御(ないし監視)の対象とならない。
制御装置2への仮想デバイスの登録は、各制御装置毎に独立であり、ある制御装置に登録されている仮想デバイスが、他の制御装置には登録されていなくてもよい。また、各制御装置毎に、制御又は監視の対象とする被制御デバイス3を異ならせたい場合があるので、登録された仮想デバイスと被制御装置3との対応付けについては、各制御装置毎に独立にできるようにするとよい。
また、各仮想デバイスデータは、機種ID、デバイスID(省略形:dID)、IPアドレス、同期ID、マルチキャストID、動作パラメータ、オンラインフラグ、同期状態を含む。
このうち機種ID、デバイスID、IPアドレスについては、後述の図11の処理で仮想デバイスと対応づけるべき被制御装置3を特定するための情報である。制御装置2は、各仮想デバイスに対し、制御ネットワークに接続された被制御デバイス3のうち、機種IDとデバイスIDとIPアドレスとが一致する被制御デバイス3を自動的に対応付け、3つともが一致する被制御デバイス3が存在しない場合は、機種IDとデバイスIDが一致する被制御デバイス3の何れか1つを、ユーザの指示に従って対応付け、その被制御デバイスのIPアドレスを、その仮想デバイスデータ領域にIPアドレスとして記憶する。
同期ID及びマルチキャストIDは、被制御装置3から受信したデータに基づいて把握した、被制御装置3における最新の同期ID及びマルチキャストIDの値である。これらの値は仮想デバイス毎に管理するため、dIDで特定される仮想デバイスについてのデータという意味で、図10にはそれぞれSID(dID)及びMID(dID)と表記した。
この「dID」は、各制御装置2内の複数の仮想デバイスに同じdIDが付与されないよう(ユニークとなるよう)管理されており、従って、「dID」を、各制御装置における1つの仮想デバイスを特定するIDであると捉えることができる。なお、制御装置2の各仮想デバイスの同期ID及びマルチキャストIDは、後述の通り、その対応付けられた被制御装置3側で管理されている同期IDやマルチキャストIDと常に一致しているとは限らない。
動作パラメータは、被制御装置3側のカレントメモリ3aと内容を同期させる仮想カレントメモリ2aに当たる。なお、制御装置2が記憶する「各機種のパラメータ構成情報」が、各機種の被制御装置3におけるカレントメモリ3aのパラメータ構成を示し、この情報と機種IDとに基づき、制御装置2側でカレントメモリ3aと同じパラメータ構成を有する仮想カレントメモリ2aの記憶領域を確保している。従って、記憶されている各パラメータは、被制御装置3側と同様に、pIDで特定することができる。
オンラインフラグOF(dID)は、仮想デバイス(と対応付けた被制御装置3)が制御装置2からリモート制御可能な状態(オンライン)であるか否かを示すフラグである。
同期状態SS(dID)は、仮想カレントメモリの内容が、仮想デバイスと対応付けた被制御装置3のカレントメモリの内容と一致しているか(カレントメモリの同期が取れているか)否かを示すフラグである。ただし、一致と不一致以外にも、データ欠落の補正により一致状態に復帰可能な「一時的に不一致」の値も取ることができる。
以上の仮想デバイスデータは、ユーザの操作により又は自動的に、制御対象になり得る被制御装置が仮想デバイスとして制御装置2に登録された時点で制御装置2のCPUが作成し、保存する。
また、左側のカラムに示したIPアドレスは、制御装置2のIPアドレスである。
マルチキャストグループ情報は、制御装置2がどのアドレスにマルチキャストされたパケットを受信するかの設定、すなわち、受信すべきマルチキャストアドレスの設定であり、各制御装置には、複数のマルチキャストアドレスを設定することができる。
各種レジスタは、通信エラーの補正のための処理において随時値が変更される各種変数が記憶され、詳細についてはフローチャートの説明において後述する。
以下、これらのデータを用いた処理の内容を、フローチャートを用いて説明する。なお、以下の説明において、各処理は、制御装置2又は被制御装置3が実行するとして説明するが、実際には、制御装置2又は被制御装置3のCPUが所要のプログラムを実行することにより行うものである。
まず、図11に、制御装置2のCPU101が実行するリモート制御準備処理のフローチャートを示す。この処理は、制御装置2が通信システム1を構成するネットワークに新たに接続され、その制御装置2がそのネットワークに接続されている被制御装置3を検出したとき(一通り終わるまで待ってからでもよい)、制御ネットワーク60に接続されたPC10においてリモート制御プログラムが起動され、設定ファイルが読み込まれ制御装置2としての動作を開始したとき、制御ネットワーク60全体のリセットが指示されたとき、等に実行されるものである。
そして、これらの場合、制御装置2は自動的に図11に示す処理を開始する。
図11の処理において、制御装置2はまず、複数の仮想デバイスデータを含む制御ファイルを読み込み、そこに登録されている仮想デバイスのプロセスを起動するとともに、RAM103中に、対応する仮想デバイスデータの記憶領域を用意して設定ファイルの対応するデータを書き込む(S101)。このプロセスは仮想デバイスデータの管理及び対応付けられた被制御装置3との通信を担うプロセスであり、その起動により、制御装置2中に仮想デバイスが生成される。
次に、ステップS101で生成された各仮想デバイスに対し、制御ネットワーク上で検出された被制御装置3(現実のデバイス)のいずれか1を対応付ける(S102)。ここでは、機種ID、デバイスID、IPアドレス等を制御ネットワークに接続された全ての被制御装置3から収集し、各仮想デバイスに対し、これらの情報が一致する被制御装置を自動的に対応付ける。
そして、全仮想デバイスについて、OF(dID)及びSS(dID)に初期値として0を設定し、後述するオンラインランプ402及び同期ランプ403を消灯して、処理を終了する(S103)。なお、OF(dID)及びSS(dID)が取り得る値とその意味は、表1に示す通りである。
以上の処理により、制御装置2は、自身に登録されている仮想デバイスの中で、対応する現実のデバイス(被制御装置3)が通信可能な位置に存在しているものを特定し、リモート制御の準備をすることができる。
次に、図12に、制御装置2のCPU101が実行する同期化処理のフローチャートを示す。この同期化処理は、制御装置2による被制御装置3のリモート制御(又は被制御装置3の状態監視)を開始するための処理である。
制御装置2は、ユーザからdIDで特定される仮想デバイスのリモート制御を開始する指示を受け付けると、図12に示す処理を開始する。なお、リモート制御開始の指示は、仮想デバイス毎ではなく、仮想デバイスのグループについて一括して行うことも可能である。その場合、そのグループを構成する各仮想デバイスについて、図12の処理を実行する。
図12の処理においては、制御装置2は、そのdIDで特定される仮想デバイスが図11の処理でいずれかの被制御装置3と対応付けられていれば(S111のYES)、dIDで特定される仮想デバイスの仮想カレントメモリと、その仮想デバイスと対応付けた被制御装置3のカレントメモリとの間で、ユニキャスト送信を用いて、予め設定された方向に動作データ(パラメータ)をコピー(同期化)する(S112)。ここでは、1パラメータずつコピーするのではなく、全パラメータを1つのパケットに入れて、または分割して数個のパケットに入れて、複数パラメータ一括でのコピー(バルクダンプ)を行うことにより、多数のパラメータのコピーを効率的に短時間で終わらせることができる。
ここで、上述のように、各被制御装置3は、制御装置2に記憶されている仮想カレントメモリのパラメータではなく、被制御装置3自身が記憶しているカレントメモリのパラメータの値に従って信号処理を行う。そこで、この処理の状態を維持することを優先する場合(例えば、稼働中のシステムに後から制御装置2を接続し、そのシステムの動作を継続させたい場合など)には、被制御装置3側から制御装置2側へコピーすればよい。
一方、制御装置2の記憶している仮想デバイスのパラメータに従った信号処理を被制御装置3に行わせたい場合(例えば、新たにシステムを稼動させたい場合や、稼働中のシステムを止めて別の論理構成のシステムを立ち上げたい場合など)は、制御装置2側から被制御装置3側へコピーすればよい。
ユーザは、どちらの方向にコピーを行うかを、全仮想デバイスについて一括して、又は仮想デバイス毎に個別に設定することができる。
どちらの方向へコピーしても、このステップS112の処理により、仮想カレントメモリの内容がカレントメモリの内容と完全に一致することになる。そして、制御装置2は、このことを示すべくSS(dID)に1を設定し、その仮想デバイスの同期ランプ403(後述)を点灯する(S113)。
その後、制御装置2がdIDで特定される仮想デバイスと対応付けた被制御装置3の制御権を有しているか否か判断し(S114)、有していれば、OF(dID)に1を設定し、その仮想デバイスのオンラインランプ402(後述)を点灯して(S115)、その被制御装置3のリモート制御を行う状態に移行する。被制御装置3の制御権は、通信システム1の管理者が、制御装置2毎に、あるいは、制御装置2にログオンするユーザ毎に、制御装置2の表示器105及び入力装置106を用いて設定可能なものである。各被制御装置3に関して設定された制御権のデータは、その被制御装置3のRAM203,303中に保持される。
また、ステップS111でNOの場合や、ステップS114でNOの場合には、そのまま処理を終了する。
以上の処理により、制御装置2は、dIDで特定される仮想デバイスと対応する被制御装置3のリモート制御(ステップS114でYESの場合)ないしリモート監視(同NOの場合)を開始することができる。これ以降、被制御装置3のカレントメモリの何れかのパラメータの値が変更された際には、制御装置2に対してその変更が被制御装置3から通知され、変更通知(後述の更新情報)を受けた制御装置2は、その変更通知に従って、対応する仮想カレントメモリに記憶されている対応するパラメータの値を同じ値に変更する。ある被制御装置3と仮想デバイスとが同期している状態において、制御装置2の対応する仮想カレントメモリには、被制御装置3のカレントメモリに記憶されているパラメータと同じ値のパラメータが記憶されており、制御装置2は、表示器105に、仮想カレントメモリのパラメータの値を、被制御装置3のパラメータの値として表示することができる。
なお、カレントメモリが同期化している/していないは、制御装置と被制御装置のペア毎に独立である。また、図示はしていないが、図12の処理の際、制御装置2は、仮想デバイスと被制御装置3との同期化が完了したとき(S113)、その被制御装置3に対し同期化の完了を通知し、さらに、オンライン化したとき(S115)、その被制御装置3に対しオンライン化の完了を通知する。被制御装置3は、どの制御装置2のどの仮想デバイスと同期状態(SS(dID)≠0)になったか、および、その仮想デバイスとオンラインになったかを、制御装置2からの通知によって把握可能である。
また、図示はしていないが、マルチキャストを行えるようにするための設定も、ここで行われる。その詳細について説明する。各被制御装置3に対しては、予め、マルチキャスト送信に使用するための相互に異なる1つのアドレスが割り当てられ、そのマルチキャストアドレスが、図9のマルチキャストグループ情報中に記憶されている。また、制御装置2は、各被制御装置3に対して、その被制御装置が使用するマルチキャストアドレスを問い合わせることができる。
図12において、制御装置2は、ある仮想デバイスとある被制御装置3との同期化が完了したとき(S113)、既知のIGMPプロトコル(Internet Group Management Protocol)を使用して、制御ネットワーク60におけるルーティングを制御しているルータ乃至スイッチ(図示せず)に対し、その被制御装置3が使用しているマルチキャストアドレス宛てのパケットを当該制御装置2に配送するよう通知し、かつ、図10のマルチキャストグループ情報中にそのマルチキャストアドレスを加えて、当該制御装置2がその配送されたパケットを受信するように設定する。
この通知および設定によって、被制御装置3がそのマルチキャストアドレス宛てに送信する更新情報UPDATE及び同期データSYNC(詳細は後述する)のパケットが、その被制御装置3と同期状態にある仮想デバイスを有する全ての制御装置2に到達し、受信されるようになる。複数の被制御装置3は相互に異なるマルチキャストアドレスを使用するので、各被制御装置3がマルチキャスト送信したパケットは、その被制御装置と同期した状態にある仮想デバイスを有する1又は複数の制御装置2に選択的に且つ平行して配送され受信される。
また、図12の処理の結果、1台の制御装置2が複数の被制御装置3を制御又は監視する状態になることもあるし、1台の被制御装置3が複数の制御装置2に制御又は監視される状態になることもある。さらに、1台の制御装置2が複数の被制御装置3の一部を制御し、他の一部を監視する状態になることもあるし、1台の被制御装置3が複数の制御装置2の一部から制御され、他の一部から監視される状態になることもある。
いずれの場合も、ある被制御装置3が送信に用いるマルチキャストアドレス宛のパケットは、その被管理装置3と同期した状態にある仮想デバイスを有する1又は複数の制御装置のみに受信されるように、各制御装置のマルチキャストグループの設定を行うことが好ましい。
ここで、図13に、仮想カレントメモリの内容を表示する画面の例を示す。
この図に示すパラメータ表示画面400は、1つの仮想デバイスの仮想カレントメモリのパラメータの値を表示する画面であるが、その仮想デバイスと、対応付けられている被制御装置3とが同期している場合には、その被制御装置3のカレントメモリのパラメータと同じ値のパラメータを表示していることになる。また、この画面においては、ユーザからの、パラメータの値を変更する操作を受け付けることができる。
パラメータ値表示部410が、この表示と変更指示の受付を行うエリアである。1つの枠が1つのパラメータの値を示し、つまみやボタン等により、パラメータの値の表示を行っている。また、変更指示は、選択したパラメータを割り当てた操作パネル上の物理操作子や、選択したパラメータについて呼び出したGUI(グラフィカルユーザインタフェース)等により行うことができる。
また、ページ切り替えボタン420により、パラメータ値表示部410に表示させるパラメータの種類を変更することもできる。
なお、パラメータ値表示部410に表示されるパラメータの値は、カレントメモリの同期が取れている状態では、わずかなタイミングずれを除けば被制御装置3のカレントメモリの内容と完全に一致しているが、後述のように同期が取れていない状態では、カレントメモリの内容と一致しない場合もある。
また、パラメータ表示画面400は、当該仮想デバイス(ないし対応付けられた被制御装置3)にユーザが付与した名称を表示するデバイス名表示部401、当該仮想デバイスと対応付けられた被制御装置3とがオンラインであるか否かを示すオンラインランプ40(OF(dID)が1のとき点灯し、0のとき消灯)、及び、当該仮想デバイスと、対応付けられた被制御装置3とが同期しているか否かを示す同期ランプ403(SS(dID)が1のとき点灯し、0のとき消灯し、2のとき点滅)を有している。オンラインランプ402と同期ランプ403の表示はリアルタイムで更新され、ユーザは常に最新の状態を把握可能である。
次に、図14に、制御装置2がユーザからのパラメータ値の変更操作を受け付けた場合に、制御装置2のCPU101及び被制御装置3のCPU201ないし301が実行する処理のフローチャートを示す。
制御装置2は、パラメータ表示画面400等により、dIDで特定される仮想デバイス(と対応付けられた被制御装置3)について、pIDで特定されるパラメータを、変化量val分だけ変化させる操作が行われたことを検出した場合、図14の左側のフローチャートに示す処理を開始する。
そしてまず、OF(dID)=1かつSS(dID)=2であるか否か判断する(S121)。これがYESであれば、そのまま処理を終了する。ユーザの変更操作に係る被制御装置3をリモート制御中の場合は、カレントメモリの同期がとれていない状態では、ユーザは、被制御装置3の実際のパラメータの値とは違うパラメータ値を見て操作している可能性があるため、同期が回復するまでパラメータの値を変更しないように、指示を無視するものである。
なお、リモート制御中であれば、カレントメモリの同期を取っていない(SS(dID)=0)ということはないため、リモート制御中(OF(dID)=1)の場合であれば、実質、同期が取れている(SS(dID)=1)場合のみ以下の処理に進むことになる。また、ステップS121の分岐は必須ではなく、無条件にNOに分岐するように、すなわち、一時的に同期が損なわれていたとしても、それを無視してパラメータ値の変更をできるようにしてもよい。
またステップS121でNOであれば、OF(dID)=0かつSS(dID)≠0であるか否か判断する(S122)。これがYESである場合も、そのまま処理を終了する。被制御装置3と同期状態にあり(SS(dID)≠0:一時的に同期が損なわれている場合を含む)、かつ、その被制御装置3をリモート制御中でない場合(OF(dID)=0)は、この制御装置2がその被制御装置3をリモート監視中であるということであり、この制御装置3側からのパラメータ値の変更ができないのは当然のことである。他方、同期を取っていない状態(SS(dID)=0)であれば、単に制御装置2がローカルで仮想カレントメモリの内容を変更するだけであるので、このような変更は許可する(S122でNOになる)ようにしている。
そして、ステップS122でもNOの場合、すなわち(OF(dID),SS(dID))=(1,1)又は(0,0)の場合(ステップS121の分岐を行わないならば(1,0〜2)又は(0,0)の場合)は、制御装置2は、検出した操作に従い、dIDで特定される仮想デバイスの仮想カレントメモリにおける、pIDで特定されるパラメータの値を、変化量valに応じて変更し(S123)、その変更後の値に従って、パラメータ表示画面400等の表示を更新する(S124)。
その後、OF(dID)=1かつSS(dID)=1であれば(S125)、dIDで特定される仮想デバイスと対応する被制御装置3に、検出した操作に従ってpIDで特定されるパラメータの値を変化量valに応じて変更するよう要求する変更命令SET(pID,val)をユニキャスト送信し(S126)、処理を終了する。
ステップS125でNOであれば、オフライン中であり、被制御装置3に対する指示は不要であるので、そのまま処理を終了する。
一方、被制御装置3は、制御装置2がステップS126で送信した変更命令SET(pID,val)を受信すると、図14の右側のフローチャートに示す処理を開始する。
そして、カレントメモリにおけるpIDで特定されるパラメータの値を変化量valに応じて変更する(S301)と共に、同期IDの値がSID(図9に示した現在の同期期間を示す値)の同期期間についての変更パラメータリストMP(SID)及び、更新情報用パラメータリストUPに、値を変更したパラメータを特定するpIDを追加し(S302)、処理を終了する。なお、ステップS302において、pIDの値が既にMP(SID)やUPに登録されていれば、同じ値を再度登録する必要はない。
ここで、変更パラメータリストMP(SID)は、同期IDの値がSIDである同期期間内に被制御装置3において値が変更されたパラメータのIDを登録するリストである。
更新情報用パラメータリストUPは、前回更新情報UPDATE(図7,図8参照)を送信した後で値が変更されたパラメータのIDを登録するリストである。ある更新情報を送信してから次の更新情報を送信するまでの期間を更新期間とすると、UPは、最新の更新期間内に値が変更されたパラメータのリストということになる。
なお、更新期間は数ミリ秒〜十数ミリ秒程度、同期期間は更新期間の10倍〜1000倍程度、すなわち、数百ミリ秒から数秒程度の長さとするとよい。この更新期間の長さに応じて、被制御装置3側で行われたパラメータ値の変更が、それを監視している制御装置2側の表示に反映されるまでの遅れの時間(平均値)が決まり、また、この同期期間の長さによって、通信エラーが検出された場合の仮想カレントメモリ中のパラメータがエラー修正できるまでの遅れ時間(平均値)が決まる。なお、ここで示した更新期間と同期期間の長さはそれぞれ絶対的なものではなく、これから外れた値を採用してもリモート制御システムを動作させることはできる。ただ、如何なる場合であっても、同期期間の長さは、更新期間よりも充分に長くすることが望ましい。
以上の処理により、制御装置2は検出した指示に応じて仮想カレントメモリの内容を更新すると共に、オンライン中であれば、被制御装置3のカレントメモリの内容も同様に更新することができる。また、被制御装置3は、後でパラメータの値の変更内容を他の制御装置2に通知できるよう、変更したパラメータの種類を記憶しておくことができる。
次に、図15に、被制御装置3のCPU201ないし301が、被制御装置3が備えるユーザインターフェース205,305,306または307において、ユーザからのパラメータの変更操作が受け付けられた場合に実行する処理のフローチャートを示す。
上述したように、被制御装置3は、自身が備える操作子により、ローカルでパラメータの変更指示を受け付けることができる。そして、pIDで特定されるパラメータを、変化量val分だけ変化させる指示を検出した場合、図15のフローチャートに示す処理を開始する。
そして、図14のステップS301及びS302の場合と同様に、カレントメモリにおけるpIDで特定されるパラメータの値を変化量valに応じて変更する(S311)と共に、変更パラメータリストMP(SID)及び更新情報用パラメータリストUPにpIDを追加し(S312)、処理を終了する。
以上の処理により、被制御装置3は、ローカルで受け付けた指示に応じてパラメータの値を変更した場合も、リモートで受け付けた要求に応じた変更の場合と同様、後で変更内容を制御装置2に通知できるよう、変更したパラメータの種類を記憶しておくことができる。
次に、図16に、被制御装置3のCPU201ないし301が実行する更新情報送信処理のフローチャートを示す。この処理は、図7及び図8に示した更新情報UPDATEの送信に係る処理である。
なお、図7及び図8ではパラメータの値を変更する度に更新情報を送信するとして説明したが、実際には1つの更新期間内に値が変更されたパラメータについて、その更新期間の終わりにまとめて更新情報を送信する。ロータリーエンコーダが操作された場合等、短時間の間に連続的にパラメータの値を変更する場合があり、このような場合には、変更内容をまとめて通知することにより、通信トラフィックを低減できるためである。
このため、被制御装置3は、更新情報UPDATEを送信するタイミング(=ある更新期間から次の更新期間に変わるタイミング)になる度に、図16の左側のフローチャートに示す処理を開始する。
そして、その時点で更新情報用パラメータリストUPにパラメータのpIDが登録されていれば(S321のYES)、その登録されている各pIDについて、そのpIDで特定されるパラメータの現在値をカレントメモリから読み出し(S322)、その各pIDと、そのpIDに関して読み出されたパラメータの現在値(そのpIDに対応する現在値)とを含む更新情報UPDATEを、最新の更新期間におけるパラメータの値の変更内容を示すデータとして生成する(S323)。1つの更新期間内に同じ種類のパラメータの値が複数回変更された場合でも、最終的にどの値になったかがわかればよいので、途中の値を更新情報UPDATEに含める必要はない。
そして、被制御装置3は、生成した更新情報UPDATEを、自身に割り当てられているマルチキャストアドレス宛てに送信し(S324)、更新情報用パラメータリストUPをクリアして(S325)、処理を終了する。各被制御装置3がマルチキャスト送信する(マルチキャストアドレス宛ての)一連のパケットには、その内容に関わらず、その被制御装置3に関して連番となるマルチキャストIDが付与される。ここでは更新情報UPDATEに対しマルチキャストIDが付与された後、マルチキャスト送信される。ただし、このマルチキャストIDは、マルチキャスト送信であれば、更新情報UPDATE以外のパケット(例えば同期データSYNC)にも付すため、更新情報UPDATE自体に連番を付すわけではない。
また、ステップS321でNOであれば、制御装置2に通知すべき情報がないことがわかるので、そのまま処理を終了する。すなわち、更新情報UPDATEを送信するのは、その更新期間に被制御装置3のカレントメモリの何れかのパラメータの値が変更された場合のみであり、何れのパラメータも変更されていない場合には、更新情報UPDATEは送信されないのである。
一方、ステップS324での送信に係るマルチキャストアドレス宛てのパケットを受信するよう設定されている各制御装置2はそれぞれ、被制御装置3がステップS324でマルチキャスト送信した更新情報UPDATEを受信し、図17を用いて後述するように通信エラーがなく正常に受信できたことを確認すると、図16の右側のフローチャートに示す処理を開始する。ここで、送信元の被制御装置3と制御装置2の仮想デバイスとを対応付けるのに使用したデバイスIDをdIDとする。
そして、この処理において、制御装置2は、更新情報UPDATEに基づいて、dIDで特定される仮想デバイスの仮想カレントメモリのパラメータのうちの、UPDATEに含まれる各pIDで特定されるパラメータの値を、UPDATEに含まれるそのpIDに対応する現在値に変更し(S131)、その変更後の値に従って、パラメータ表示画面400等の表示を更新する(S132)。
以上の処理により、パラメータの値が変更された被制御装置3と同期している仮想デバイスを有する全ての制御装置2が、それぞれ、被制御装置3においてなされたパラメータの値の変更に合わせて、その仮想デバイスの仮想カレントメモリの対応するパラメータの値を変更することにより、被制御装置3と仮想デバイスとが同期している状態を維持することができる。これは、被制御装置3においてなされたパラメータの値の変更が、リモート制御によるものでも、ローカルの操作によるものでも、同じである。
なお、図14のステップS126で変更命令を送信した制御装置2にとっては、被制御装置3から受信する更新情報UPDATEは、基本的には、自身が送信した変更命令と同じ内容の変更を通知されるものとなるが、それにより、被制御装置3側で実際に変更されたパラメータの値を確認できることになるので、この処理は無駄ではない。
次に、図17に、制御装置2のCPU101が実行する、マルチキャストアドレス宛のパケットを受信した場合の処理のフローチャートを示す。
制御装置2は、何れかのマルチキャストアドレス宛のパケットを受信すると、図17に示す処理を開始する。そしてまず、受信したパケットにつき、データエラーの有無、宛先のマルチキャストグループ、送信元の被制御装置と対応する仮想デバイスを特定するdID、及びパケットに付されているマルチキャストIDを確認する(S141)。
そして、データエラー有無及び、宛先のマルチキャストアドレスが自分の属するグループのアドレスか否かにより、処理を分岐させる(S142)。当該制御装置2が受信すべき全てのマルチキャストアドレスが、図10に示したマルチキャストグループ情報に含まれている。
ここで受信すべきマルチキャストアドレスではない、すなわち、他のグループ宛てのパケットである場合は、エラー有無に関わらず、パケットを読み捨てるため、そのまま処理を終了する。
自身の属するグループ宛であっても、データエラーがあれば、発生したマルチキャスト通信エラーに係るdIDを引数としてエラー処理ルーチン(図18)を起動させ、dIDで特定される仮想デバイスに対応付けられた被制御装置からのパケットの当該エラーに対処する処理を行わせ(S146)、処理を終了する。
また、ステップS142で自身の属するグループ宛かつデータエラーなしであれば、送信元と対応する仮想デバイスがありかつその仮想デバイスについて同期状態SS(dID)が0でないか判断する(S143)。すなわち、送信元が、自身とカレントメモリを同期させている被制御装置3であるか否か確認する。ここでNOであれば、受信したパケットを仮想カレントメモリの内容に反映させる必要がないため、そのまま処理を終了する。
ステップS143でYESであれば、次に、マルチキャストIDが前回同じ送信元から受信したパケットと連続したものとなっているか否か判断する(S144)。被制御装置3は、図16のステップS324の説明で述べたように、各被制御装置3は、マルチキャスト送信する全てのパケットに、その被制御装置3に関して連番となるマルチキャストIDを付しているので、制御装置2がマルチキャスト送信されたパケットを受信したときに、その被制御装置3に関してマルチキャストIDに抜けがあるか否かを検出することにより、前回受信時以後にロストしたパケットがあるか否か、すなわち通信エラー発生の有無を判定できる。ロストしたパケットの内容まではわからないが、これがわかる必要はない。
そこで、ステップS144でNOであった場合も、発生したマルチキャスト通信エラーに係るdIDを引数としてエラー処理ルーチン(図18)を起動させ、dIDで特定される仮想デバイスに対応付けられた被制御装置からのパケットの当該エラーに対処する処理を行わせる(S146)。
また、ステップS144でYESであれば、被制御装置3から正常にパケットを受信したと判断できるため、受信したパケットのデータを引数として、そのデータ種別に応じた処理ルーチンを起動させ、dIDで特定される仮想デバイスに対応付けられた被制御装置から受信したパケットのデータの処理を行わせて(S145)、処理を終了する。
この場合、例えば、受信したパケットのデータが更新情報UPDATEである場合には、図16の右側のフローチャートに示す処理が起動され、同期情報SYNCである場合には、図21に示す処理が起動される。
以上の処理により、制御装置2は、被制御装置3からマルチキャストで送信されてくるパケットの受信のエラー有無を確認した上で、エラー有無に応じた処理を行うことができる。
なお、ステップS142のマルチキャストアドレスを判定する処理に関しては、CPU101の負荷を低減するために、CPU101の代わりにネットワークI/F107が行うようにするのが好ましい。その場合、ネットワークI/F107は、その制御装置2のマルチキャストグループ情報(図10)に記載されたマルチキャストアドレスのパケットを受信した場合にのみCPU101に対して通知し、他のマルチキャストアドレス宛てのパケットを受信してもCPU101に通知しないようにする。
次に、図18に、制御装置2のCPU101及び被制御装置3のCPU201ないし301が実行する、被制御装置3からマルチキャストで送信されてくるパケットの受信にエラーを検出した場合の処理のフローチャートを示す。また、この図以降で説明する処理に使用する各種変数を、表2及び表3にまとめた。SS(dID)については表1に記載したものである。
制御装置2は、図17のステップS146での起動により、図18の左上のフローチャートに示すエラー処理を開始する。
そして、まずSS(dID)=2かつSPt(dID)≦SID(dID)であるか否か判断する(S151)。これがYESの場合、SS(dID)=2であることから、現在は一時的にカレントメモリの同期が損なわれた状態であり、同期の回復を試みている最中であることがわかる。また、SPt(dID)≦SID(dID)であることから、今回のエラーに応じて要求しようとしている通信エラー補正用のデータを、対応する被制御装置3に既に要求済みであることがわかる。」
一方、ステップS151でNOの場合、今回のエラーに応じて要求しようとしている通信エラー補正用のデータを、対応する被制御装置3に未だ要求していないということである。
ここで、図19に、制御装置2がマルチキャストで送信されてくるパケットの受信のエラーを検出するタイミングの具体例を、被制御装置3側と制御装置2側の同期IDの変化と合わせて示す。
被制御装置3側の同期IDであるSIDの値は、図20を用いて後述するように所定の同期タイミング毎に変化し、そのタイミングで同期データSYNCを送信して制御装置2にその旨を伝達する。例えば、SIDが8から9に変わるタイミングで、次の同期IDが9である旨の情報を含む同期データSYNCを送信する等である。
そして、制御装置2は、その同期データSYNCを正常に受信すると、自身が記憶する、被制御装置3に関する同期IDであるSID(dID)を、同期データSYNCに含まれていた値に変更する。そしてこのことにより、制御装置2が同期データSYNCを正常に受信している限りは、被制御装置3のSIDと制御装置2のSID(dID)は、ほぼ同じタイミングで同じ値に変化することになる。
しかし、図19のSIDが9から10あるいは10から11に変わるタイミングの同期データSYNCのように、何らかの理由で同期データSYNCが制御装置2に届かない場合、被制御装置3においてはSIDの値が変化しても、制御装置2はそれを認識せず、SID(dID)の値は変化しない。ただこのため、制御装置2が再度パケットを受信できるようになるまで、SID(dID)の値を変化させずに保つことができる、とも言える。
従って、制御装置2がエラーの発生を認識するのが、被制御装置3においてSIDが変化しないうちである場合はもちろん、認識までに被制御装置3側ではSIDの値が変化してしまっていたとしても、制御装置2は、パケットを受信できなかった可能性があるのは、被制御装置3におけるSIDの値が、エラー検出時のSID(dID)、図19の例では9である同期期間以降の期間であることを認識できる。
これは、(a)に示すように同期データSYNCのパケットを受信した際にエラーを検出した場合も、(b)に示すように更新情報UPDATEを受信した際にエラーを検出した場合も、同じである。
以上の通りであるので、図18の説明に戻ると、ステップS151でNOの場合、制御装置2がパケットを受信できなかった可能性がある期間に被制御装置3側で変更されたパラメータの値を取得できれば、これを仮想カレントメモリに反映させて同期を回復できると考えられる。そこで、制御装置2は、SID(dID)の値をパラメータとして有しており、かつ、そのパラメータで特定される同期期間以降の同期期間に変更されたパラメータの値の送信を要求する送信要求REQ_SYNC(SID(dID))を生成し(S152)、dIDで特定される仮想デバイスに対応付けられた被制御装置3に送信する(S153)。この送信は、図19におけるREQ_SYNC(9)の送信に当たるものであり、確実に被制御装置3に届くように、ユニキャストで行う。
そして、SS(dID)に、dIDで特定される仮想デバイスにおいて、一次的に同期が損なわれていることを示す2を設定し、要同期期間SPt(dID)には、カレントメモリの同期を保証できない最初の同期期間のIDであるSID(dID)を設定する。また、送信要求REQ_SYNCの送信回数を示す再送カウンタRC(dID)に初期値として0を設定すると共に、送信要求REQ_SYNCの再送タイミング(所定時間毎)を計測するためのハードウェアである再送タイマ(dID)をスタートさせる(S154)。さらに、dIDで特定される仮想デバイスに一時的な同期の不具合が発生した旨を、ディスプレイの、例えばパラメータ表示画面400の同期ランプ403に表示させて(S155)、処理を終了する。
一方被制御装置3は、制御装置2から送信要求REQ_SYNCを受信すると、図18の右側のフローチャートに示す処理を開始する。なおこの処理は、どの制御装置2から要求を受信したかによらず、実行するものであるが、上述したように、被制御装置3は、どの制御装置2がその被制御装置と同期状態(SS(dID)≠0)にある仮想デバイスを有しているかを把握しているので、それら該当する制御装置2から要求された場合のみに実行するようにしてもよい。
登場する変数も、制御装置2毎に管理するものではない(従って「(dID)」といった記載はない)。また、被制御装置3は、送信要求REQ_SYNCのパラメータの値が制御装置2側でどのように定められたかを把握する必要はなく、単に値だけ取得できればよい。ここでは、その値がSID′であるとする。
そしてこの処理において、被制御装置3はまず、SID′<SPoか否か判断する(S331)。これがYESであれば、制御装置2から要求された同期期間については既に変更パラメータリストMPを廃棄してしまっており、要求に応えることができないと判断する。そこで、送信要求REQ_SYNCの送信元の制御装置2に対し、欠落したデータの補正が不可能であり、被制御装置3との間の接続が切断されたと認識すべきことを示す再同期不能通知をユニキャスト送信する(S332)。
そして、これを受信した制御装置2は、被制御装置3との間でカレントメモリの同期を回復できないことがわかるため、図18の左下のフローチャートに示す処理により、SS(dID)とOF(dID)に0を設定し(S156)、被制御装置3をオフライン状態とすると共に、その仮想デバイスの同期ランプ403およびオンラインランプ402を消灯することにより、その旨をディスプレイに表示させる(S157)。
また、被制御装置3は、ステップS331でNOの場合、制御装置2からの要求に応えることができると判断する。そして、RSF=1かつSID’≧SPxであるか否か判断する(S333)。
ここでYESであれば、過去に受信した送信要求(何れの制御装置2から受信したかは問わない)に基づき、今回の要求に係る同期期間を含む同期期間のパラメータの値が、既に送信される予定になっているため、ここでは特に設定を行わずに終了する。
一方、ステップS333でNOであれば、そのままでは今回の要求に係る全ての同期期間のパラメータの値は送信されないので、送信要求フラグRSFに、制御装置2に送信すべきパラメータの値があることを示す1を、SPxに、パラメータの値を制御装置2に送信する必要がある最先の同期期間の同期IDとして、制御装置2からの要求に基づきSID′を設定する(S334)。これらのデータは、図20の処理で参照する。
以上の処理により、制御装置2は、被制御装置3からマルチキャストで送信されてくる更新情報UPDATE及び同期データSYNCの受信にエラーを検出した時に、その検出の時点で記憶している同期IDが示す同期期間以降に変更されたパラメータの値の送信を被制御装置3に要求することができる。また、被制御装置3側では、その要求に応えることが可能であれば、要求されたパラメータの値を次回の送信時に同期データSYNCに含めて送信するよう、必要な設定を行うことができる。
次に、図20に、被制御装置3のCPU201ないし301が実行する同期データ送信処理のフローチャートを示す。
被制御装置3は、現在の同期期間を終了して次の同期期間に移行する所定の同期タイミングになると、図20に示す処理を開始する。同期期間の長さは、一定となるよう制御されている(多少の揺らぎはあり)が、これを状況によって変えられるようにしてもよい。
そして、この処理において、被制御装置3はまず、同期IDであるSIDの値を1増加させ、次の同期期間に入ったことを示す(S341)と共に、その同期期間についての空の変更パラメータリストMP(SID)を作成する(S342)。
その後、RSFが1であれば(S343のYES)、送信要求REQ_SYNCに応じて制御装置2に送信すべきパラメータの値を準備すべく、ステップS344乃至S349の処理を行う。
ここでは、生成した再同期用データの数をカウントするための変数dnに初期値0を設定した後(S344)、パラメータの値を制御装置2に送信する必要がある最先の同期期間である、SPxで特定される同期期間から順に、同期期間毎に、その同期期間に変更されたパラメータの値を示す再同期用データを作成していく。
すなわち、まず、更新パラメータリストMP(SPx)に登録されている各pIDについて、そのpIDで特定されるパラメータの現在値をカレントメモリから読み出し、SPxで特定される同期期間の再同期用データDATA(SPx)として、SPxの値、及び、更新パラメータリストMP(SPx)の各pIDと、そのpIDに関して読み出されたパラメータの現在値(そのpIDに対応する現在値)とを含むデータを生成する(S345)。
ここで、同期ID=SPxの同期期間の時点の値ではなく現在値を使うのは、再同期用データが、発生したデータ欠落を補正して仮想カレントメモリの内容をカレントメモリの内容と一致させ、カレントメモリの同期を回復させるためのものであり、パラメータの値の変更過程を忠実に再現するためのものではないからである。なお、更新パラメータリストMP(SPx)にpIDが1つも登録されていない場合は、pIDと現在値をそれぞれ1つも含まない再同期用データDATA(SPx)を生成する。
そして、ステップS345の後は、dnとSPxをそれぞれ1ずつ増加させ(S346)、SPxがSIDに達しておらず(S347のYES)、次の同期期間の再同期用データを追加しても同期データSYNCのサイズが規定値以下に収まる場合には(S348のYES)、ステップS345に戻り、次の同期期間(同期IDが1増加したSPxである同期期間)に関する再同期用データを生成する。
ステップS347でSPx=SIDであれば、直近の同期期間の分まで再同期用データを生成したことになり、それ以上は制御装置2に送信すべきパラメータの値がなくなったことがわかるので、RSFにそのことを示す0を設定して(S349)、ステップS350に進む。
また、ステップS348でNOの場合には、これ以上再同期用データを追加できないため、以降の再同期用データの作成及び送信は次の同期タイミングに行うものとして、RSFの値が1のままの状態でステップS350に進む。
またステップS343でNOの場合には、再同期用データの作成はせずにステップS350に進む。
いずれの場合も、ステップS350では、ステップS345で生成した各再同期用データDATAと、その再同期用データの数dn(0の場合もある)と、次の同期期間の同期ID(=SID)とを含む同期データSYNC(SID,dn,DATA(),―――)を生成する。例えば図19(a)の例では、同期IDの値が、送信要求で指定された9から同期データ送信時の直近の11までの同期期間についての再同期用データを含む同期データを生成する。図19(b)の例では、同期データ送信時の直近の同期IDが12であるので、同期IDが9から12までの同期期間についての再同期用データを含む同期データを生成する。
そして、生成した同期データを、自身に割り当てられているマルチキャストアドレス宛てに送信する(S351)。このとき、図16のステップS324の場合と同様、実際のデータ転送を司るプロセスにおいて、マルチキャスト送信する(マルチキャストアドレス宛の)パケットに、連番のマルチキャストIDを付す。
その後、SPoの値をSID−HNとし、同期IDがSPo−1以下の同期期間についての変更パラメータリストMPを廃棄して(S352)、すなわち、最新のHN個以外の同期期間についての変更パラメータリストMPを廃棄して、処理を終了する。
以上の処理により、被制御装置3は、同期期間が終わる毎に、その同期期間の同期IDを含む同期データSYNCを生成して各制御装置2にマルチキャスト送信し、いずれかの制御装置から送信要求REQ_SYNCを受けていた場合には、送信要求で指定された各同期期間について、その同期期間内に値を変更したパラメータの現在値をその同期データSYNCに含めて送信することができる。
また、同期データSYNCのサイズを規定値以内に収めるので、制御ネットワークにおける、他の装置がデータを送信するのに使用する帯域や、自身が他のデータを送信するのに使用する帯域を残しておくことができる。また、記憶する変更パラメータリストMPを、有限のHN個の同期期間に関するもののみとし、使用するメモリ容量を抑えることができる。
次に、図21に、制御装置2が被制御装置3から同期データSYNCを受信した場合に実行する処理のフローチャートを示す。
制御装置2は、dIDで特定される仮想デバイスと同期している被制御装置3がマルチキャストで送信してくる同期データSYNC(同期IDとしてSID′が、再同期用データ数としてn′が含まれているものとする)を受信したとき、図17のステップS145において、図21のフローチャートに示す処理を起動する。なお、通信エラーがあった場合には、図21の処理ではなく図18に示した処理が起動される。
そして、図21の処理においては、制御装置2はまず、SID′=SID(dID)+1であるか否か、すなわち今回受信した同期データと、前回受信した同期データとで同期IDが連番になっているか否かを判断する(S161)。
ここでNOであれば、間に同期データが欠落していると考えられるため、マルチキャストIDが連番でなかった場合と同様、パケットの受信にエラーがあったものとして図18に示した処理を実行する(S162)。
マルチキャスト送信されたパケットが受信できなかったことにより同期データが欠落したのであれば、マルチキャストIDにも飛びが発生するため図17のステップS144の判断で検出できるはずであるが、例えば被制御装置3側でパケットの送信自体が行われなかったような場合には、同期データが欠落していてもマルチキャストIDは連番になっていることも考えられる。従ってここでは、同期IDの連続性も確認するようにしている。なお、ここで図18の処理を実行した場合、その処理の終了後は図21の処理に戻り、ステップS163以降の処理に進む。
ステップS161でYESの場合は、受信した同期データSYNCに問題がないことがわかるので、そのままステップS163以降の処理に進む。
いずれの場合もステップS163では、SID(dID)の値をSID′の値に更新する(S163)。
次に、SS(dID)≠2又はn′=0であるか否か判断する(S164)。SS(dID)≠2であれば、現在は同期の回復を行う必要がない状態であり、受信した同期データSYNCに含まれる再同期用データを参照する必要がないことがわかる。また、n′=0であれば、受信した同期データSYNCにはそもそも参照すべき再同期用データがないことがわかる。そこで、いずれの場合もそのまま処理を終了する。
また、ステップS164でNOであれば、受信した同期データSYNCに含まれる先頭の(最も同期IDの値が小さい)再同期用データDATAに含まれる同期IDが、SPt(dID)以下であるか否か判断する(S165)。これがNOであれば、今回受信した同期データSYNCに含まれる再同期用データは、自身における同期の回復には用いることができない(もっと古い同期期間に関するデータが必要である)ことがわかる。従ってこの場合も、そのまま処理を終了する。
このようになるケースとしては、送信要求REQ_SYNCの被制御装置3への到達が、同期データSYNCの生成及び送信と前後したため、今回の同期データには、自身が送信した送信要求の内容が反映されていない場合が考えられる。しかし、このような場合であっても、次回以降の同期データとして、自身が送信した送信要求の内容を反映されたものを受信して、同期を回復できる可能性はある。
また、ステップS165でYESであれば、その制御装置2がdIDで特定される被制御装置に対して送信要求REQ_SYNCで要求した再同期用データを含む再同期用データが、その被制御装置から送られてくるということを意味するので、再送タイマ(dID)を停止する(S166)と共に、図22に示す再同期化処理を行う(S167)。
この再同期化処理においては、制御装置2は、nを1からn′まで1ずつ増加させながら(S171,S172,S180)、ステップS173乃至S179の処理により、受信した同期データSYNCに含まれるn番目の再同期用データDATA(SPn)を用いたデータ欠落の補正を順次行っていく。ただし、番号の若い再同期用データほど同期IDの値が小さい同期期間に関するデータであるとする。
この補正の処理では、まず再同期用データDATA(SPn)に含まれる同期IDの値が、SPt(dID)であるか否か判断する(S173)。ここでNOであれば、n番目の再同期用データは、同期が保証できなくなるより前の同期期間のデータであり、参照する必要がないことがわかるので、そのままステップS180に進む。
ステップS173でYESであれば、n番目の再同期用データの内容を仮想カレントメモリに反映させるべく、再同期用データDATA(SPn)に含まれる各pIDにつき、dIDで特定される仮想デバイスの仮想カレントメモリにおける、そのpIDで特定されるパラメータの値を、DATA(SPn)に含まれるそのpIDに対応する現在値に変更する(S174)。なお、再同期用データDATA(SPn)にpIDが1つも含まれていない場合には、パラメータ値の変更は行われない。変更が行われた場合は、その変更後の値に従ってディスプレイ上のパラメータ表示画面400の表示を更新する(S175)。
これで同期IDがSPt(dID)の同期期間において値が変更されたパラメータについては仮想カレントメモリに記憶する値を被制御装置3における最新の値に更新できたので、その同期期間において通信エラーが生じていたとしても、その通信エラーによる同期の損傷を修正できたものとして、SPt(dID)を1増加させる(S176)。
そして、この時点でSPt(dID)=SID(dID)であれば(S177のYES)、直前の同期期間までの全ての通信エラーを補正し、カレントメモリの同期を回復できたものとして、SS(dID)にその旨を示す1を設定する(S178)とともに、dID番目の仮想デバイスの同期エラーが解消した旨を、ディスプレイの、例えばパラメータ表示画面400の同期ランプ403を点滅から点灯に変更して表示し(S179)、ステップS180に進む。
また、ステップS177でNOの場合、次の再同期用データを用いてさらに同期の回復を試みるべく、そのままステップS180に進む。
そして、ステップS180でYESになると、図21の処理に戻って処理を終了する。なお、ステップS177でYESであれば、DATA(SPn)が直前の同期期間に係るものであることになり、これは必ず最後の(=n′番目の)再同期用データであるので、ステップS180の判断はYESになる。
以上の図21及び図22の処理により、制御装置2は、同期データSYNCを受信した場合に、その同期データに含まれる同期IDを最新の同期期間の同期IDとして記憶すると共に、その同期データに、同期の回復のために被制御装置3に送信を要求した、変更されたパラメータの値の情報が含まれていた場合に、その情報に基づいて仮想カレントメモリの内容を訂正し、通信エラーにより失われた同期を回復させることができる。
例えば図19の(a)は、ある被制御装置3の同期IDが9の同期期間(9)の途中から同期IDが11の同期期間(11)の途中まで、ある制御装置2との間で通信エラーが生じており、その通信エラーが、同期期間(11)の途中にマルチキャスト送信された更新情報UPDATEの時点で検出された例である。その時点で、該制御装置2は、該被制御装置3に対して、送信要求REQ_SYNC(9)をユニキャスト送信し、それに応じて、該被制御装置3は、次の同期期間(12)の始めに送信する同期データSYNCに、同期IDの値が9から11までの同期期間の再同期データDATA(9)、DATA(10)、DATA(11)を付加してマルチキャスト送信する。該制御装置2は、受信した再同期用データに基づいて、該被制御装置3に対応付けた仮想デバイスに生じた同期の損傷を修正する。
同様に、図19の(b)は、ある被制御装置3の同期期間(9)の途中から同期期間(11)まで、ある制御装置2との間で通信エラーが生じており、その通信エラーが、次の同期期間(12)の始めにマルチキャスト送信された同期データSYNCの時点で検出された例である。その時点で、該制御装置2は、該被制御装置3に対して、送信要求REQ_SYNC(9)をユニキャスト送信し、それに応じて、該被制御装置3は、更に次の同期期間(13)の始めに送信する同期データSYNCに、同期IDの値が9から12までの同期期間の再同期データDATA(9)〜DATA(12)を付加してマルチキャスト送信して、該被制御装置3に対応付けた仮想デバイスに生じた同期の損傷を修正する。この例では、同期期間(12)については、おそらく何の通信エラーが生じていないが、再同期データDATA(12)に基づく変更では、一部パラメータに同じ値の現在値を上書きするだけなので、特に不都合はない。
従って、被制御装置3から制御装置2への更新情報UPDATEの送信に到達保証のないマルチキャストを用いたとしても、通信エラー等によるデータの欠落が発生した場合には、同期期間の長さ程度の、少ない遅れ時間でこれを検出して修正し、カレントメモリの同期を維持し、パラメータの値の伝達の信頼性を適度に確保することができる。また、パラメータの値の変更内容の伝達に最低限必要なデータに加えてエラー監視のために追加的に送信する必要があるデータは、エラーのない定常状態では、各パケットに付すマルチキャストIDと、同期データSYNCのみであり、通信帯域に対する負荷は小さい。
なお、図22の処理において、ステップS173の判断を省略し、ここが常にYESになるようにしてもよい。同期が保証できている期間に変更されたパラメータの値を仮想カレントメモリに反映させたとしても、そのパラメータの値は被制御装置3における最新の値になるため、同期が取れている状態なら、もともと最新の値になっているものが維持されるだけであり、同期の維持に支障はないためである。ただし、ステップS174以下の処理を無駄に行うことになるので、若干動作が遅くなることが考えられる。
また、図20のステップS348でNOとなり、被制御装置3が同期データSYNCに最新の同期期間(SID−1)までの再同期用データを含めることができなかった場合(途中のSPx−1で特定される同期期間の再同期用データまでで打ち切った場合)、制御装置側の図22の再同期化処理では、途中のSPx−1で特定される同期期間までの修正が行われる(SPt(dID)=SID(dID)とならない)。このような場合、被制御装置3側のRSFは1のままであり、次の同期タイミングにおいて、被制御装置3は、次の同期データSYNCに、その続きのSPxで特定される同期期間以降の再同期用データを含めて送信する。
また、制御装置2側のSS(dID)は2のままであり、該次の同期データSYNCを受信すると、図22の再同期化処理では、その続きのSPxで特定される同期期間の修正が行われる。このようにして、要求された再同期用データが、連続する何回かの同期データSYNCに分散して伝達され、最終的にはSPt(dID)=SID(dID)となって、制御装置2において、仮想デバイスの同期が回復される(SS(dID)が1となる)。
次に、図23に、制御装置2が実行する送信要求の再送処理のフローチャートを示す。
制御装置2は、いずれかのdIDについて再送タイマ(dID)が所定時間毎の再送タイミングを検出すると、図23のフローチャートに示す処理を開始する。
そしてまず、再送カウンタRC(dID)を1増加させる(S191)。そして、RC(dID)が最大再送回数RCmaxを超えていなければ(S192のNO)、その時点のSPt(dID)に基づき、まだ取得できていない、同期IDの値がSPt(dID)の同期期間以降に被制御装置3側で変更されたパラメータの値の送信を要求する送信要求REQ_SYNC(SPt(dID))を生成し(S193)、これをdIDで特定される仮想デバイスと対応する被制御装置3にユニキャスト送信して(S194)、処理を終了する。
また、ステップS192でYESの場合には、もはや被制御装置3との接続は切断され、被制御装置3からは同期を回復するための再同期用データは取得できないと判断し、OF(dID)及びSS(dID)に0を設定して、dIDで特定される仮想デバイスをオフライン状態とする(S195)。そして、再送タイマ(dID)を停止する(S196)と共に、dIDで特定される仮想デバイスのパラメータ表示画面400のオンラインランプ402及び同期ランプ403を消灯することにより、該仮想デバイスと対応付けられた被制御装置3とが非同期になった旨を表示して(S197)、処理を終了する。
以上の処理により、図18のステップS153で被制御装置3に要求したデータを全て受信するまで、所定時間毎に送信要求を繰り返し送信し、さらに、所定回送信してもデータを全て受信できない場合は、被制御装置3との通信が切断されたと判断することができる。
カレントメモリの同期が長期間切断されると、その間に被制御装置3において多数のパラメータの値が変更されてしまい、同期の回復が困難になることが考えられる。そこで、このような場合には一旦接続が切断されたものとして、必要に応じて図12の処理により再度バルクダンプによる同期化を行うことが好ましい。
以上で実施形態の説明を終了するが、装置の構成、システムを構成する装置の種類や数、データの形式、具体的な処理内容等が上述の実施形態で説明したものに限られないことはもちろんである。
例えば、上述の実施形態では、制御装置2と被制御装置3との間の、リモート制御に関するデータの転送を例として述べたが、この発明は、リモート制御に関係ないものも含め、任意のデータを複数の装置へマルチキャスト送信する際の信頼性確保にも適用することができる。
従って、上述の実施形態において制御装置2と被制御装置3として示した装置が、一方が他方をリモート制御する、という関係にあることは必須ではない。例えば、被制御装置3と対応する第1ノードが、制御装置2と対応する複数の第2ノードに対し、随時変化する表示用のデータを、リアルタイム又はそれに近いタイミングで同時に伝送するようなシステムにおいても、上述の実施形態と同様な手法で、その伝送の信頼性を確保することができる。より具体的には、先生が電子ボードに書いた絵や文字を、複数の生徒の端末に表示するシステムや、刻々と変化するイベントのスケジュールを、関係者にリアルタイムに知らせるシステムなどが考えられる。
この場合において、第2ノードは、第1ノードから伝送されたデータを表示する装置であったり、そのデータを単に記憶する装置であったり、またそのデータの内容に応じて何らかの処理を実行する装置であったりすることが考えられる。例えば、1又は複数の測定機(第1ノード)により複数の測定ポイントで測定を行って得たデータを、複数の監視装置(第2ノード)により複数箇所で監視するシステムや、同様に1又は複数の保護ポイントの状態を複数箇所で管理するセキュリティシステム、1又は複数の制御機から複数の表示器に同じデータを表示させる表示システム、1又は複数の放送機から複数の受信機へデータの放送をする放送システム、複数の地点で行われている会議内容を相互伝達する会議システムなど、様々なシステムに適用可能である。
また、データ放送システムなど、第2ノードが、単に第1ノードにおいて新たに追加されたデータの情報を得られればいいような場合には、第2ノードに仮想カレントメモリを設ける必要はなく、従って図12のステップS112の処理も不要である。
また、制御装置2側に、被制御装置3のカレントメモリと同じパラメータ構成の仮想カレントメモリを用意するようになっていたが、それを減らして、制御装置2が、RAM103に表示器105に表示するパラメータだけを記憶する表示用バッファを用意するようにしてもよい。ただし、パラメータ表示画面400に表示されるパラメータが変わる都度、表示用バッファを構成しなおさなければならず、制御装置2のレスポンスは悪化する。
また、被制御装置3が同期データSYNCを送信する際に、その同期データSYNCに付加している同期IDは、制御装置2のその被制御装置3に同期している仮想デバイスの同期IDを、その被制御装置3の同期IDに一致させるための情報である。実施例のように、各同期タイミングにおいて、新たに始まる同期期間の同期IDを付与するのが最適であるが、同じ目的が達成できるのであれば、それ以外の同期ID、例えば、その時点で終了した前の同期期間の同期ID、前の前の同期期間の同期ID、又は、未来の同期IDを付与するようにしてもよく、その場合も、実質的に本発明の範疇に入っている。
また、ある同期期間SID′の再同期用データDATA(SID′)を生成する際、その同期期間SID′の更新パラメータリストMP(SID′)に含まれているpIDと同じpIDが、それより後の同期期間SID″の更新パラメータリストMP(SID″)に含まれていれば、そのpIDを、その再同期用データDATA(SID′)に含めないようにしても、後の同期用データDATA(SID″)で訂正されるため、本発明の動作には何の問題も生じない。
また、実施形態の説明において述べたものも含め、以上において述べた変形は、矛盾しない範囲で任意に組み合わせて適用可能である。また逆に、ネットワークシステムが実施形態の説明において述べた特徴を全て有している必要もない。