(57)【特許請求の範囲】
【請求項１】
インタフェース手段を介してスレーブ装置に接続されるマスター装置を備え、前記マスター装置が前記スレーブ装置に制御プログラムをダウンロードするシステムにおいて、前記スレーブ装置がサポートする機能に関する能力情報を有する前記マスター装置であって、
前記マスター装置に格納された前記制御プログラムの所定の部分から能力情報を読出す手段と、
前記マスター装置によって前記スレーブ装置と通信動作中に使用される前記能力情報を前記マスター装置の格納部に格納する手段と、を含み、
前記能力情報は、第１の数の第１の変数を持つ第１のベクトルと第２の数の第２の変数を持つ第２のベクトルとを含み、第１と第２の変数のそれぞれは、対応するスレーブ装置によって対応する機能がサポートされるか否かを表し、
前記読出す手段は、
読み出された第１のベクトルが有する変数の個数が、定義された第１のベクトルの変数の数より少ないことに応答して、前記第１のベクトルにおいて欠落している第１の変数に、対応する機能が対応するスレーブ装置によってサポートされていないことを示す第１のデフォルト値を補充し、
読み出された第２のベクトルが有する変数の個数が、定義された第２のベクトルの変数の数より少ないことに応答して、前記第２のベクトルにおいて欠落している第２の変数に、対応する機能が対応するスレーブ装置によってサポートされていることを示す第２のデフォルト値を補充し、
前記第１のベクトルは、新スレーブ装置の追加に対応して第１の新たな変数が追加されるベクトルであって、該第１の新たな変数は、いずれの前記スレーブ装置でもサポートされていない機能を前記新スレーブ装置においてはサポートされていることを示す値がセットされる変数であり、かつ、
前記第２のベクトルは、新スレーブ装置の追加に対応して第２の新たな変数が追加されるベクトルであって、該第２の新たな変数は、全ての前記スレーブ装置でサポートされている機能が前記新スレーブ装置においてはサポートされていないことを示す値がセットされる変数であることを特徴とするマスター装置。
【請求項２】
請求項１記載のマスター装置であって、前記第１のベクトルの変数と前記第２のベクトルの変数は、それぞれゼロか少なくとも１かのいずれかになることを特徴とするマスター装置。
【請求項３】
スレーブ装置と、
第１と第２の終端を持つインタフェースであって、前記第１の終端が前記スレーブ装置に接続されているインタフェースと、
前記インタフェースの第２の終端に接続され、前記スレーブ装置にダウンロードすることを意図された制御プログラムの所定の部分から前記スレーブ装置がサポートする機能に関する情報である能力情報を読出す手段を、前記マスター装置上で実行される前記制御プログラムによって実現するマスター装置と、を含むシステムであって、
前記能力情報は、第１の数の第１の変数を持つ第１のベクトルと第２の数の第２の変数を持つ第２のベクトルとを含み、第１と第２の変数のそれぞれは、対応するスレーブ装置によって対応する機能がサポートされるか否かを表し、
前記読出す手段は、
読み出された第１のベクトルが有する変数の個数が、定義された第１のベクトルの変数の数より少ないことに応答して、前記第１のベクトルにおいて欠落している第１の変数に、対応する機能が対応するスレーブ装置によってサポートされていないことを示す第１のデフォルト値を補充し、
読み出された第２のベクトルが有する変数の個数が、定義された第２のベクトルの変数の数より少ないことに応答して、前記第２のベクトルにおいて欠落している第２の変数に、対応する機能が対応するスレーブ装置によってサポートされていることを示す第２のデフォルト値を補充し、
前記第１のベクトルは、新スレーブ装置の追加に対応して少なくとも１つの第１の新たな変数が追加されるベクトルであって、該第１の新たな変数は、いずれの前記スレーブ装置でもサポートされていない機能を前記新スレーブ装置においてはサポートされていることを示す値がセットされる変数であり、かつ、
前記第２のベクトルは、新スレーブ装置の追加に対応して少なくとも１つの第２の新たな変数が追加されるベクトルであって、該第２の新たな変数は、全ての前記スレーブ装置でサポートされている機能が前記新スレーブ装置においてはサポートされていないことを示す値がセットされる変数であることを特徴とするシステム。
【請求項４】
請求項３記載のシステムであって、前記第１のベクトルの変数と前記第２のベクトルの変数は、それぞれゼロか少なくとも１かのいずれかになることを特徴とするシステム。
【請求項５】
インタフェースを介してスレーブ装置に接続されるマスター装置を備え、前記マスター装置は前記スレーブ装置に制御プログラムをダウンロードするシステムにおいて、前記マスター装置に前記スレーブ装置がサポートする機能に関する情報である能力情報を供給するために前記マスター装置によって実行される方法であって、
前記能力情報は前記マスター装置に格納された制御プログラムの所定の部分に配置されており、マスター装置が該能力情報を読み出し、
前記能力情報は、第１の数の第１の変数を持つ第１のベクトルと第２の数の第２の変数を持つ第２のベクトルとを含み、第１と第２の変数のそれぞれは、対応するスレーブ装置によって対応する機能がサポートされるか否かを表し、
前記マスター装置が前記能力情報を読出す時に、
読み出された第１のベクトルが有する変数の個数が、定義された第１のベクトルの変数の数より少ないことに応答して、前記第１のベクトルにおいて欠落している第１の変数に、対応する機能が対応するスレーブ装置によってサポートされていないことを示す第１のデフォルト値を補充し、
読み出された第２のベクトルが有する変数の個数が、定義された第２のベクトルの変数の数より少ないことに応答して、前記第２のベクトルにおいて欠落している第２の変数に、対応する機能が対応するスレーブ装置によってサポートされていることを示す第２のデフォルト値を補充することによって、
各スレーブ装置の能力情報とし、
前記第１のベクトルは、新スレーブ装置の追加に対応して少なくとも１つの第１の新たな変数が追加されるベクトルであって、該第１の新たな変数は、いずれの前記スレーブ装置でもサポートされていない機能を前記新スレーブ装置においてはサポートされていることを示す値がセットされる変数であり、かつ、
前記第２のベクトルは、新スレーブ装置の追加に対応して少なくとも１つの第２の新たな変数が追加されるベクトルであって、該第２の新たな変数は、全ての前記スレーブ装置でサポートされている機能が前記新スレーブ装置においてはサポートされていないことを示す値がセットされる変数であることを特徴とする方法。
【請求項６】
複数のスレーブ装置に接続されたマスター装置を有し、各スレーブ装置がサポートする機能に関する情報である能力情報がマスター装置に記憶されているシステムにおいて、新スレーブ装置を加える時にマスター装置に記憶されている能力情報を更新するためにマスター装置によって実行される方法であって、
前記能力情報は、第１の数の第１の変数を持つ第１のベクトルと第２の数の第２の変数を持つ第２のベクトルとを含み、第１と第２の変数のそれぞれは、対応するスレーブ装置によって対応する機能がサポートされるか否かを表し、
前記方法は、
予め定義された第１ベクトルに等しい長さをもつ前記新スレーブ装置のための新第１ベクトルを前記マスター装置内に記憶するステップであって、前記新第１ベクトル内の変数は、前記予め定義された第１ベクトルにおいて定義されている機能を前記新スレーブ装置がサポートするか否かを示すステップと、
予め定義された第２ベクトルに等しい長さをもつ前記新スレーブ装置のための新第２ベクトルを前記マスター装置内に記憶するステップであって、前記新第２ベクトル内の変数は、前記予め定義された第２ベクトルにおいて定義されている機能を前記新スレーブ装置がサポートするか否かを示すステップと、
前記新第１ベクトルのための追加的記憶装置を前記マスター装置内に割り当て、前記新スレーブ装置によってサポートされているが既存のどのスレーブ装置によってもサポートされていない新第１機能に対応する第１追加変数をその追加的記憶位置に記憶するステップであって、前記第１追加変数は、前記新スレーブ装置が新第１機能をサポートすることを示すステップと、
前記新第２ベクトルのための追加的記憶位置を前記マスター装置内に割り当て、既存のすべてのスレーブ装置によってサポートされているが前記新スレーブ装置によってはサポートされていない新第２機能に対応する第２追加変数をその追加的記憶位置に記憶するステップであって、前記第２追加変数は、前記新スレーブ装置が新第２機能をサポートしていないことを示すステップと
を備えることを特徴とする方法。
【請求項７】
インタフェース手段を介してスレーブ装置に接続されるマスター装置を備えたシステムにおいて、前記スレーブ装置によってサポートされる機能の集合を決定する前記マスター装置であって、
第１の数の第１の変数を持つ第１のベクトルと第２の数の第２の変数を持つ第２のベクトルとを受信する入力手段であって、前記第１と第２の変数のそれぞれは、対応する機能が対応するスレーブ装置によってサポートされるか否かを表す入力手段と、
前記入力手段に結合され、受信した第１のベクトルが有する変数の個数が、定義された第１のベクトルの変数の数より少ないことに応答して、前記第１のベクトルにおいて欠落している第１の変数に、対応する機能が対応するスレーブ装置によってサポートされるか否かを表す第１のデフォルト値を補充する第１のデフォルト手段と、
前記入力手段に結合され、受信した第２のベクトルが有する変数の個数が、定義された第２のベクトルの変数の数より少ないことに応答して、前記第２のベクトルにおいて欠落している第２の変数に、対応する機能が対応するスレーブ装置によってサポートされるか否かを表す第２のデフォルト値を補充する第２のデフォルト手段と、を備え、
前記第１のベクトルは、新スレーブ装置の追加に対応して少なくとも１つの第１の新たな変数が追加されるベクトルであって、該第１の新たな変数は、いずれの前記スレーブ装置でもサポートされていない機能を前記新スレーブ装置においてはサポートされていることを示す値がセットされる変数であり、かつ、
前記第２のベクトルは、新スレーブ装置の追加に対応して少なくとも１つの第２の新たな変数が追加されるベクトルであって、該第２の新たな変数は、全ての前記スレーブ装置でサポートされている機能が前記新スレーブ装置においてはサポートされていないことを示す値がセットされる変数であることを特徴とするマスター装置。
【発明の詳細な説明】
背景
本発明は、システムにおける対等装置（peer entities）間のプロトコルネゴシエーションに関し、より詳細には、通信システムにおいてスレーブノードがサポートする機能に関する情報をマスターノードに供給する方法に関する。
対等装置が相互に通信するシステムについては公知である。特に、かかるシステムは、スレーブノード（slave nodes）と呼ぶいくつかの従属的な装置（subordinate devices）と通信する主ノードと呼ぶ装置を含んでいることが多い。個々のスレーブ装置は相互に異なっていてもよいので、各スレーブ装置と通信することができるためには、マスターノードは、各スレーブ装置がサポートする機能（本明細書中では「能力」と云うこともある）に関する知識を持っていなければならない。たとえば、小ゾーン自動車電話システムにおいては、小ゾーンシステム用送受信機によって与えられる異なるタイプのチャネルは異なる通信プロトコルを使用するため、それに対応して異なるデータレートで通信しなければならない。この構成になっているシステムの１つは、自動車電話用グローバルシステム（Global System for Mobile Communications：ＧＳＭ）として公知の欧州小ゾーン無線電話通信システム規格（European radiotelephone cellular communication system standard）における交換センタと無線基地局（base station）との間のリンクである。本システムにおいて無線基地局がサポートしているかもしれないし、サポートしていないかもしれない能力には、ハークレート通話チャネル、信号・制御複合チャネル、データ通信サービスおよび無線基地局の異なるバージョンの通信プロトコルが含まれている。
かかるシステムにおいては、新しいスレーブ装置が追加されたり、既存のスレーブ装置と交換されたりすることが頻繁に発生する。スレーブ装置が追加されたり交換されたりすると、マスター装置は、そのスレーブ装置と通信するために、新しいスレーブ装置がどんな機能をサポートしているかを教えてくれる情報を取得しなければならない。
たとえば広大地域にわたって散在しているいくつかの無線基地局（ＢＳ）の動作を管理する無線基地局コントローラ（base station controller：ＢＳＣ）を持つ自動車電話ネットワークにおいては、ＢＳＣは、機能のどの集合（set）がどの無線基地局によってサポートされているか知っていなければならない。しかし、いろいろな理由で、時間の経過にともなってサポートされる機能が変わることがある。第１に新しい無線基地局がネットワークに追加されると、ＢＳＣが知っていなければならない機能の集合が追加される。さらに無線基地局は、時間がたつと改良されるソフトウエアで制御されるのが普通である。新しいソフトウエアがリリースされると、無線基地局は以前にサポートされていなかった機能を実行できるようになる。ソフトウエアとハードウエアとは無線基地局によって異なっていてもよいのであるから、どのノードでどの機能がサポートされているかに関する情報を取得する方法が、ＢＳＣに提供されていなければならない。
この課題に対する以前の解決方法は、マスター装置およびスレーブ装置の間で所定のネゴシエーション手順を使用することであった。このネゴシエーション手順の間に、マスター装置およびスレーブ装置は所定のプロトコルを使用して、この２つを接続するインタフェースでサポートされている機能に関する情報を交換する。この解決方法の一例は、送信に先だち、使用するデータレートについてネゴシエーションを行うファクシミリ（ファックス）装置である。しかし、この解決方法は、マスター装置およびスレーブ装置を接続するインタフェースで、望ましくないオーバヘッドになる通信が必要であるという点で煩らわしい。さらにネゴシエーションプロトコルを定義しなければならないので、ことによると既存（pre-existing）のスレーブ装置が使用しているプロトコルの大部分に、対応する変更を加えなければ、各種の変更をしたり将来各種の能力に適応したりすることができない。したがって、もっと簡単でもっと融通性に富む解決方法が望まれる。
要約
したがって、本発明の目的は、マスター装置およびスレーブ装置が、この情報を伝えるネゴシエーション手順を実行する必要をなくして、スレーブ装置がサポートする機能に関する情報（Capability Information：以下、能力情報と云う）をマスターノードの装置に供給するメカニズムを提供することである。
本発明の別の目的は、追加したスレーブ装置が、どの既存のスレーブ装置もサポートしていない新しい機能をサポートする場合でも、既存のスレーブ装置に既に符号化されている能力情報を変更せずに、スレーブ装置に追加できるようにする能力情報の符号化方式（encoding scheme）を提供することである。
本発明のさらに別の目的は、追加したスレーブ装置が、既存のスレーブ装置すべてがサポートしている機能をサポートしない場合でも、既存のスレーブ装置に既に符号化されている能力情報を変更せずに、スレーブ装置を追加できるようにする能力情報の符号化方式を提供することである。
本発明の一側面によれば、前述の目的等は、インタフェースを介してスレーブ装置に接続されるマスター装置を持つシステムの中の装置により達成され、マスター装置の機能には制御プログラムをスレーブ装置にダウンロードすることが含まれている。この装置は、スレーブ装置に対応する能力情報をマスター装置に供給する。前記装置は、制御プログラムの所定の部分から能力情報を読出す手段とスレーブ装置と通信動作中にマスター装置に使用される能力情報を格納する手段とを含んでいる。制御プログラムの所定の部分に能力情報を配置することにより、制御プログラムの性能が向上される（upgraded）と、常に新しい能力情報がマスター装置に供給される。また能力情報はマスター装置に常時格納されているので、マスター装置およびスレーブ装置間の所定のネゴシエーション手順の必要がなくなる。
本発明の別の側面によれば、能力情報は符号化方式が備えているので、新しく定義された機能を収容するために、既存の能力情報を再度符号化することを必要とせずに新しいスレーブ装置をシステムに追加することができる。各スレーブ装置の能力情報は、第１のベクトルと第２のベクトルから構成されている。第１と第２の各ベクトルにはいくつかの変数があり、各変数は、対応する機能が対応するスレーブ装置でサポートされているか否かを示している。新しい装置がシステムに追加されると、第２のベクトルの１つあるいは両方を再定義して、以前はシステムで定義されていなかった新しい機能に対応する変数を追加する必要があるであろう。しかし既存の能力情報が、これらの新しい変数を含むように修正されてはならない。その結果として、特定のどのスレーブ装置の能力情報も、システムに定義されている１つまたはそれ以上の変数がなくなっていることがある。これを補償するため、読出し手段は、定義されているいくつかの第１のベクトル変数より少ない第１のベクトルの変数の数に応答して、第１のベクトルでなくなっている変数に、第１のデフォルト値を供給する第１のデフォルト手段を含んでいる。対応する機能が対応するスレーブ装置によってサポートされていないことを示すには、第１のデフォルト値が選択される。さらに読出し手段は、定義されているいくつかの第２のベクトル変数より少ない第２のベクトルの変数の数に応答して、第２のベクトルでなくなっている変数に、第２のデフォルト値を供給する第２のデフォルト手段を含んでいる。対応する機能が対応するスレーブ装置によってサポートされていないことを示すには、第２のデフォルト値が選択される。
本発明のこの側面によれば、２つのベクトルの１つまたは両方に変数が１つもないという２つのベクトルで、能力情報を構成することができる。両ベクトルに変数がないことは、システムの各スレーブ装置が、このシステムのどのスレーブ装置もサポートしているあらゆる機能をサポートしている状態に該当する。この場合、各スレーブ装置でサポートされている能力に関する情報は、すべて第１および第２のデフォルト手段によって与えられる。
本発明のさらに別の側面によれば、各スレーブ装置がマスター装置に格納されている対応する能力情報を備えている、複数の既存のスレーブ装置に接続されるマスター装置を持つシステムに新しいスレーブ装置を追加する方法が開示されている。第１に、所定の第１のベクトルに等しい長さの新しい第１のベクトルがマスター装置に格納される。新しい第１のベクトルの各変数は、所定の第１のベクトルに定義されている対応する機能をサポートするか、サポートしないかのどちらかの新しいスレーブ装置に対応してセットされる。つぎに、所定の第２のベクトルに等しい長さの新しい第２のベクトルがマスター装置に格納される。新しい第２のベクトルの各変数は、所定の第２のベクトルに定義されている対応する機能をサポートするか、サポートしないかのどちらかの新しいスレーブ装置に対応してセットされる。
つぎに、新しい第１のベクトルに付随する追加記憶位置がマスター装置に割当られる。新しいスレーブ装置はサポートしているが、どの既存のスレーブ装置もサポートしていない第１の新しい機能に対応して、第１の追加変数がこの追加記憶位置に格納される。第１の追加変数は、スレーブ装置が第１の新しい機能をサポートすることを示すためにセットされる。上に説明した第１のデフォルト手段と共に本手法が使用されると、これらのなくなっている値は、既存のスレーブ装置がその機能をサポートしていないことを示すデフォルト値になるであろうから、既存のどの能力情報も修正する必要はない。
つぎに、新しい第２のベクトルに付随する追加記憶位置がマスター装置に割当られる。どの既存のスレーブ装置もサポートしているが、新しいスレーブ装置はサポートしていない第２の新しい機能に対応して、第２の追加変数がこの追加記憶位置に格納される。第２の追加変数は、スレーブ装置が第２の新しい機能をサポートしないことを示すためにセットされる。上に説明した第２のデフォルト手段と共に本手法が使用されると、これらのなくなっている値は、既存のスレーブ装置が新しく追加された機能をサポートしていることを示すデフォルト値になるであろうから、この場合も既存のどの能力情報も修正する必要はない。
最後に、第１および第２の追加変数に対応するそれぞれの記憶位置を含むように、第１および第２の所定のベクトルが再定義される。
【図面の簡単な説明】
本発明の目的と利点は、添付の図面とともに以下に述べる説明を読むことによって理解されるであろう。
第１図は、それぞれのインタフェースを介してスレーブ装置に接続されるマスター装置を含むシステムのブロック図である。
第２ａ図、第２ｂ図は、以前は２つのスレーブ装置しかなかったシステムに新しいスレーブ装置が追加されたとき、どの範囲の機能が変更されるかを示す図である。
第３図は、能力情報の符号化方式の好適実施例を示す図である。
第４ａ図から第４ｃ図は、本発明に従って既存の能力情報にデフォルト値を供給する方法と、符号化方式に新しい機能を追加する手法とを示す図である。
詳細な説明
第１図を参照すると、それぞれのインタフェース１０５、１０５’、１０５’’を介してスレーブ装置１０３、１０３’、１０３’’に接続されるマスター装置１０１を含むシステムのブロック図が示されている。たとえば、マスター装置１０１はＢＳＣであり、スレーブ装置１０３、１０３’、１０３’’は自動車電話ネットワークに接続されているいくつかの無線基地局である。マスター装置１０１には、スレーブ装置１０３、１０３’、１０３’’のそれぞれに対する制御ソフトウエア１０７、１０７’、１０７’’が含まれており、システムが起動された場合、そのほか、小ゾーン自動車電話システムにおいて１つまたはそれ以上の無線基地局サイトで電源障害が発生したときのように、ダウンロードが必要な場合は、インタフェース１０５、１０５’、１０５’’を介して、この制御ソフトウエアがスレーブ装置にダウンロードされる。ここで説明する動作は、スレーブ装置１０３、１０３’、１０３’’のそれぞれに適用できるので、以下の説明は、マスター装置１０１がスレーブ装置１０３の能力を学習する方法に焦点をあわせることにする。しかし、スレーブ装置１０３について説明した手法が残りの他のスレーブ装置１０３’、１０３’’のどれにも適用できることは、当業者には明かであろう。
ソフトウエアメモリ１１１にロードされると、制御ソフトウエア１０７はスレーブ装置１０３の正常動作を制御する。上に説明したようなシステムにおいて、スレーブ装置が新しい装置に交換されると、新しい装置に対応して更新された制御ソフトウエア１０７がマスター装置１０１に供給される。スレーブ装置の初期プログラムロード中に、マスター装置がスレーブ装置に制御ソフトウエアをダウンロードするシステムは、当業者には公知のことであるから、ここでは説明しない。
本発明によれば、制御ソフトウエア１０７は、対応するスレーブ装置１０３がサポートしている機能に関する能力情報１０９を含む部分と分離しないように関連している。たとえば、能力情報１０９の起点を、制御ソフトウエア１０７の既知の位置に配置することができるので、マスター装置１０１は能力情報を見つけることができるとともに、制御ソフトウエア１０７の残りの部分から能力情報を区別することができる。本発明の好適実施例においては、スレーブ装置１０３の制御ソフトウエア１０７が、マスター装置１０１のデータベースに保持される複数のファイルに分割されているので、能力情報１０９を容易に識別することができる。本実施例においては、この１組のファイルをマスター装置１０１の中の１５つのパッケージとして扱えるだろうということが重要である。これらのファイルの１つまたはそれ以上のファイルには、能力情報１０９を表すデータだけが含まれる。能力情報は主としてマスター装置１０１に情報を送ることが意図されているので、能力情報１０９をスレーブ装置１０３にダウンロードすることは必須ではない。しかし、能力情報１０９がスレーブ装置１０３にダウンロードされると、以下詳細に説明するように、システムの誤りを判断することができる。
さらに本発明によれば、制御ソフトウエア１０７をスレーブ装置１０３にダウンロードする前に、マスター装置１０１は能力情報１０９を読出して、その情報をローカル記憶装置１１３に格納する。ローカル記憶装置１１３に格納された情報は、インタフェース１０５上でどの機能がスレーブ装置１０３でサポートされているかを決定するため、後でマスター装置１０１で使用される。またこの能力情報１０９は、ソフトウエアをスレーブにロードするため、どの手順を使用しなければならないかをマスター装置１０１に示すことができる。
このメカニズムは、所定のネゴシエーション手順を使用して、インタフェース１０５上でどの新しい機能がスレーブ装置１０３でサポートされているか（あるいはどの旧機能がもはやサポートされなくなっているか）ということを、マスター装置１０１に知らせることを必要とせずに、スレーブ装置１０３を変更する（または更新する）能力に、大きな自由度を与えていることが判るであろう。それは、スレーブ装置１０３がサポートする機能に影響を及ぼすほどスレーブ装置１０３が変更されると、その都度、その装置に対応する制御ソフトウエア１０７がマスター装置１０１に供給されるからである。新しい制御ソフトウエア１０７は常に更新された能力情報１０９を含んでいるので、マスター装置１０１は、新しいスレーブ装置１０３がどの機能をサポートしているかを、容易に判断することができる。
本発明の好適実施例においては、マスター装置１０１は以下に示すように動作する。
0003885892.tif 000002
0003885892.tif 000003
能力情報１０９をいくつかの異なるフォーマットで初期化することができることは、当業者には明白なことである。たとえば、ある人は、インタフェース１０５でサポートされる機能の完全な集合を最初から定義するかもしれない。しかし、予期しない機能がうまれることがあるから、この定義では限定的にすぎることになるであろう。
好適実施例においては、能力情報１０９は上位互換フォーマットに符号化されるので、まだ性能が向上されていないスレーブ装置の能力情報の符号化を妨害せずに、新しく定義された機能を符号化方式に追加することができる。この符号化方式は、特定の機能を既存の符号化方式で表さなければならない、いろいろ異なる環境が存在するということに依存している。機能は以下に示す３つの種類に区分することができる。
１）いくつかのスレーブ装置でサポートされるが、ネットワークの中のすべてのスレーブ装置ではサポートされない機能。
２）ネットワークの中のあらゆるスレーブ装置でサポートされる機能。
３）ネットワークの中の全スレーブ装置でサポートされない機能。
いくつかのスレーブ装置でサポートされるが、すべてのスレーブ装置ではサポートされない第１の種類の機能が、ネットワークで定義される必要があるだけである。この場合、マスター装置１０１が異なるスレーブ装置１０３、１０３’、１０３’’の能力を区別できることが必要だからである。しかし残りの２つの種類については、全スレーブ装置１０３、１０３’、１０３’’に等しく適用可能なデフォルト値を含むようにマスター装置１０１を設計することができるので、ネットワーク上の定義は不必要である。したがって、全スレーブ装置が所与の機能をサポートしていることが判っていれば、マスター装置１０１は、特定のスレーブ装置１０３がその機能をサポートしているか否かを調べる必要がないことになる。そのかわり、マスター装置は全スレーブ装置１０３、１０３’、１０３’’と通信するときは、とにかくその機能を使用することになる。同様に、どのスレーブ装置も特定の機能をサポートしていないことが判っていれば、スレーブ装置１０３でサポートされているこの特定の機能に依存する通信を決してしないようにマスター装置１０１を設計することができる。マスター装置１０１はソフトウエアによって好適に制御されるので、時間がたつことによりネットワークの能力が変化しても、容易に性能を向上することができる。
第２ａ図は、システムが、「Ａ」、「Ｂ」で示す２つのスレーブ装置だけを含んでいる場合に、能力情報１０９の符号化方式に含める必要のある機能の種類を示す図であるが、この第２ａ図を参照することにより、上記説明をさらによく理解できるであろう。ボックスの内部は、ネットワークに定義することができるであろう使用可能な全機能を表す。第１の円２０１はスレーブ装置「Ａ」がサポートする全機能を包含している。第２の円２０３はスレーブ装置「Ｂ」がサポートする全機能を包含している。スレーブ装置「Ａ」、「Ｂ」に共通な（そして、本例には２つのスレーブ装置しかないのであるから、ネットワークの全スレーブ装置に共通な）機能の集合を定義する共通領域（common area）２０５が存在することが判るであろう。またこの図は、スレーブ装置「Ａ」はサポートするがスレーブ装置「Ｂ」はサポートしない第１の排他的機能（exclusive functions）の集合２０７が存在することを示しており、またスレーブ装置「Ｂ」はサポートするがスレーブ装置「Ａ」はサポートしない第２の排他的機能の集合２０９が存在することを示している。第１の円２０１と第２の円２０３の外側全体に見られる（lies）空領域（empty area）２１１は、ネットワーク内のどのスレーブ装置でもサポートされていない機能を表している。
本例においては、マスター装置１０１は、通信を意図しているスレーブ装置がその機能をサポートしているか否かを知っている必要があるので、能力情報１０９の符号化方式に、第１の排他的機能２０７の集合および第２の排他的機能２０９の集合だけを定義する必要がある。対照的に、定義によれば、共通領域２０５に配置されているどの機能もネットワークの全ノードでサポートされているのであるから、マスター装置は、その機能がサポートされているか否かを調べずに、共通領域２０５に配置されている機能のすべてを自由に使用することができる。空領域２１１にある機能については、スレーブ装置「Ａ」、「Ｂ」のいずれもこれらの機能をサポートしていないので、マスター装置１０１の設計にこれらの機能の定義を含めてはならない。すなわち、マスター装置は、これらの機能をサポートするスレーブ装置を発見できないのであるから、この定義があると能率が低下してしまう。
新しいスレーブ装置「Ｃ」がネットワークに追加されるとすると、第２ｂ図に示すように、能力情報１０９の符号化方式を変更しなければならないであろう。第１の円２０１および第２の円２０３は依然としてスレーブ「Ａ」、「Ｂ」がサポートする機能を表している。第３の円２１３は新しいスレーブ装置「Ｃ」がサポートしている全機能を包含している。本例において、スレーブ「Ｃ」は、スレーブ「Ａ」、「Ｂ」がサポートする機能の一つ一つをすべてサポートしているのではないから、共通領域２０５’は小さくなっている。その結果、マスター装置１０１が、これらの機能をサポートしないスレーブ装置「Ｃ」と、これらの機能をサポートするスレーブ装置「Ａ」、「Ｂ」を区別することができるように、第１の新しい領域２１５に配置されていて、以前は共通領域２０５の中にあってネットワークに定義する必要がなかった機能を、符号化方式に定義することが必要になる。旧デフォルトはもはやこれらの役に立たない。
同様に本例においては、スレーブ装置「Ｃ」は第２の新しい領域２１７に配置されている機能をサポートするが、これらの機能は以前にはネットワークのどのスレーブ装置にもサポートされていなかった。したがって、マスター装置１０１が、これらの機能をサポートするスレーブ装置「Ｃ」と、これらの機能をサポートしないスレーブ装置「Ａ」、「Ｂ」を区別することができるように、これらの機能を符号化方式に追加しなければならない。第２の新しい領域２１７に配置されている機能は、以前は空領域２１１の一部だったのであるから、これらの機能がデフォルトで、マスター装置１０１でサポートされない状態になった旧符号化方式はもはや機能しない。第２ｂ図において、空領域２１１’は、スレーブ装置「Ａ」、「Ｂ」またはスレーブ装置「Ｃ」のいずれでもサポートされていない機能のすべてを表すことになる。
上記考察を要約すると、既存のネットワークは、全スレーブ装置の部分集合だけでサポートされる機能を表わす必要があるだけである。マスター装置１０１の通信相手であるスレーブ装置とともに、その特定の機能を使用するようにマスター装置１０１を設計することができるのであるから、スレーブ装置のすべてがサポートするどの機能も能力情報１０９に表す必要はない。同様に、ネットワークの中でマスター装置１０１の通信相手であるスレーブ装置とともに、その特定の機能を使用しないようにマスター装置１０１を設計することができるのであるから、どのスレーブ装置でもサポートされていない機能を能力情報１０９に表す必要はない。新しいスレーブ装置がネットワークに追加されると、符号化方式を修正して、以前は既存のスレーブ装置のすべてでサポートされていた機能あるいは既存のどのスレーブ装置でもサポートされていなかった機能のいずれかを追加しなければならない。
つぎに第３図を参照すると、能力情報１０９の符号化方式の好適実施例が示されている。以下に述べる考察では、本発明を理解する一助として「変数」や「論理値（boolean value）」のような術語を使用する。しかし、本当はこれらの術語は、ネットワークで発生したり、他の動作を生起させたりする電気信号のような物理的実体を示す術語であることを理解されたい。
本発明によれば、この符号化方式は、既にシステムの一部であるスレーブ装置１０３、１０３’、１０３’’の能力情報１０９を再符号化せずに、新しい機能（つまり、常にサポートされていたかあるいは全くサポートされていなかったため、以前はシステムに定義する必要がなかった機能）を追加することを可能にする。
能力情報１０９は２つのベクトルに符号化され、各ベクトルは、以前からネットワークに定義されている機能のリストに対応する変数のリストを含んでいる。変数は、関連する機能がスレーブ装置１０３でサポートされているか否かに対応して「真（true）」あるいは「偽（false）」に等しくセットすることができる論理変数であることが望ましい。
ネットワークに定義される各機能は、２つのリストの内の１つだけのリストの中の変数で表される。ネットワークが最初に定義されるとき、機能に対応する変数が第１のベクトル３０１の中に配置されるかあるいは第２のベクトル３０３の中に配置されるかは重要な問題ではない。しかし、新しいスレーブ装置１０３がネットワークに追加されるごとに変数の位置が重要になる。これの意味を例を示に説明する。
第４ａ図は、ネットワークが最初につくられたとき存在していた２つのスレーブ装置「Ａ」、「Ｂ」を持つネットワークの、スレーブ装置「Ａ」の能力情報１０９を示している。同様に、第４ｂ図は、この同じネットワークのスレーブ装置「Ｂ」の能力情報１０９を示している。判り易く例示するため、スレーブ装置「Ａ」に関する第１のベクトル４０１ａは、スレーブ装置「Ａ」が機能ｎ、ｏをサポートしているが機能ｐをサポートしていないことを示すようにセットされている。また第２のベクトル４０３ａは、スレーブ装置「Ａ」が機能ｑ、ｓをサポートしているが機能ｒをサポートしていないことを示すようにセットされている。同様に、スレーブ装置「Ｂ」に関する第１のベクトル４０１ｂは、スレーブ装置「Ｂ」が機能ｐをサポートしているが機能ｎあるいは機能ｏをサポートしていないことを示すようにセットされている。また、第２のベクトル４０３ｂは、スレーブ装置「Ｂ」が機能ｒをサポートしているが機能ｑあるいは機能ｓをサポートしていないことを示すようにセットされている。この例においては、どの機能も、両スレーブ装置「Ａ」、「Ｂ」でサポートされているかサポートされていないかのどちらでもないことが判るであろう。これは以下の理由による。すなわち、第２ａ図および第２ｂ図を参照して上に説明したように、共通領域２０５あるいは空領域２１１のどちらにもある機能を定義する点は存在しないためである。そのかわり、この特定のシステムに適切なデフォルトを含めるようにマスター装置１０１を設計することができる。しかし、このような機能の特定グループを能力情報１０９に含めることはできないので、両者が論理値「真」（機能がサポートされている）にセットされるか、論理値「偽」（機能がサポートされていない）にセットされるかのいずれかであることの理由が存在しない。しかし、無限に多くの機能を定義してもよいのだから、このような機能のすべてに完全な仕様をつくることは不可能である。
第４ｃ図は、これからシステムに追加するスレーブ装置「Ｃ」の能力情報１０９を示している。能力情報１０９も第１のベクトル４０１ｃと第２のベクトル４０３ｃを含んでいる。スレーブ装置「Ｃ」をネットワークに追加すると、前に第２ｂ図で説明した影響が出てくる。つまり、スレーブ装置「Ｃ」は、スレーブ装置「Ａ」、「Ｂ」も共通にサポートする機能のいくつかをサポートする（共通領域２０５’に注目されたい）。したがって、これらの機能が能力情報に定義される理由は依然として存在しない。すなわち、マスター装置１０１は、これらの機能がネットワークの各スレーブ装置によってサポートされていることを引き続き知っているのである。また、スレーブ装置「Ｃ」は、スレーブ装置「Ａ」、「Ｂ」のいずれかでサポートされていない機能の多くをサポートしていない（空領域２１１’に注目されたい）。ここでも、これらの機能が能力情報に定義される理由は依然として存在しない。すなわち、マスター装置１０１はこれらの機能がネットワークのどのスレーブ装置にもサポートされていないことを引き続き知っているのである。
第２ｂ図を参照すると、第１の部分的に共通な領域２１９のあることが判るが、この領域にはスレーブ装置「Ａ」、「Ｃ」でサポートされているが、スレーブ装置「Ｂ」ではサポートされていない機能だけが含まれている。これらの機能は以前にシステムに定義されていたものであり、我々の例では、機能ｎ、ｓである。したがって、ベクトル４０１ｃでは機能ｎに対応する変数が「真」に等しくセットされ、ベクトル４０３ｃでは機能ｓに対応する変数が「真」に等しくセットされている。
また、第２ｂ図を参照すると、第２の部分的に共通な領域２２１のあることが判るが、この領域にはスレーブ装置「Ｂ」、「Ｃ」でサポートされているが、スレーブ装置「Ａ」ではサポートされていない機能だけが含まれている。これらの機能は以前にシステムに定義されていたものであり、我々の例では、機能ｐ、ｒである。したがって、ベクトル４０１ｃでは機能ｐに対応する変数が「真」に等しくセットされ、ベクトル４０３ｃでは機能ｒに対応する変数が「真」に等しくセットされている。
第１の排他的機能の集合２０７’および第２の排他的機能の集合２０９’が定義されているが、スレーブ装置「Ｃ」によってサポートされていない。これらの機能ｏ、ｑに対応する変数は、第１と第２のベクトル４０１ｃ、４０３ｃで「偽」に等しくセットされている。
再び第２ｂ図を参照すると、既存のネットワークにスレーブ装置「Ｃ」を導入する結果として、新しい機能を定義する必要のあることが判る。第１に、以前は共通領域２０５の中にあったが、これらの機能はスレーブ装置「Ｃ」によってサポートされないので、これからは第１の新しい領域２１５の中になる機能が存在する。この例のために、これらを機能ｕ、ｖと呼ぶことにする。本発明によれば、第１の新しい領域２１５の中に概念的に配置される新しい機能は、第２のベクトル４０３ｃに追加されなければならない。マスター装置１０１も、第２のベクトル４０３ｃのフォーマットになっている第２のベクトルを認識するように修正される。したがって、第４ｃ図において、第２のベクトル４０３ｃも機能ｕ、ｖに対応する変数を含んでいる。スレーブ装置「Ｃ」がこれらの機能をサポートしないことを示すために、これらの２つの変数は「偽」に等しくセットされる。また本発明によれば、第２のベクトル４０３ａ、４０３ｂがネットワーク内の最長のベクトル４０３ｃより短いことをマスター装置１０１が認識すると、いつも「真」に等しいデフォルト値が存在していることを仮定してマスター装置１０１が設計されているので、スレーブ装置「Ａ」、「Ｂ」に対応する第２のベクトル４０３ａあるいは４０３ｂのいずれにも変数を追加する必要はない。このデフォルト値は第２のベクトル４０３ａ、４０３ｂの点線の値４０７ａ、４０７ｂで表されている。マスター装置１０１が、第２のベクトル４０３ａ、４０３ｂの本当の終りを認識すると、必要なときはいつでも「真」のデフォルト値を供給するように設計されているかぎり、これらの点線の値４０７ａ、４０７ｂが実際に第２のベクトル４０３ａ、４０３ｂの中に存在する必要はない。第１と第２のベクトル４０１ａ、４０１ｂ、４０１ｃ，４０３ａ、４０３ｂ、４０３ｃは、マスター装置１０１がベクトルの長さを決定するときに使用する（示されていない）長さ指示部（length indicator）を含んでいることが望ましい。しかし、第２のベクトル４０３ａ、４０３ｂが、未定義の機能に対応する変数を実際に含んでいなくてもよい理由は存在しない。この場合、第２のベクトル４０３ａ、４０３ｂの未定義変数を、実際に「真」に等しくセットしなければならない。またスレーブ装置「Ｃ」の第２のベクトル４０３ｃには、点線の値４０７ａ、４０７ｂに関して上に説明した通り正確に機能し、さらに新しく機能を定義する別の新しいスレーブ装置を含むためネットワークが拡張された場合に使用される点線の値４０７ｃが実際に含まれていることに注意されたい。
再度第２ｂ図を参照すると、以前は空領域２１１の一部にあった（つまり、スレーブ装置「Ａ」または「Ｂ」のいずれでもサポートされていない）が、これからスレーブ装置「Ｃ」でサポートされる新しい機能を定義する必要がある（第２の新しい領域２１７に注目されたい）。この例のために、これを機能ｔと呼ぶことにする。本発明によれば、第２の新しい領域２１７内に概念的に配置される新しい機能は、第１のベクトル４０１ｃに追加されなければならない。マスター装置１０１も、第１のベクトル４０１ｃのフォーマットになっている第１のベクトルを認識するように修正される。したがって、第４ｃ図において、第１のベクトル４０１ｃも機能ｔに対する変数を含んでいる。スレーブ装置「Ｃ」がこの機能をサポートすることを示すために、この変数は「真」に等しくセットされている。また本発明によれば、第１のベクトル４０１ａ、４０１ｂがネットワーク内の最長のベクトル４０１ｃより短いことをマスター装置１０１が認識すると、いくつも「偽」に等しいデフォルト値の存在していることを仮定してマスター装置１０１が設計されているので、スレーブ装置「Ａ」、「Ｂ」に対応する第１のベクトル４０１ａあるいは４０１ｂのいずれにも変数を追加する必要はない。このデフォルト値は第１のベクトル４０１ａ、４０１ｂの点線の値４０５ａ、４０５ｂで表されている。マスター装置１０１が、第１のベクトル４０１ａ、４０１ｂの本当の終りを認識すると、必要なときはいつでも「偽」のデフォルト値を供給するように設計されているかぎり、これらの点線の値４０５ａ、４０５ｂが実際に第１のベクトル４０１ａ、４０１ｂの中に存在する必要はない。しかし、第１のベクトル４０１ａ、４０１ｂが、未定義の機能に対応する変数を実際に含んでいなくてもよい理由は存在しない。この場合、第１のベクトル４０１ａ、４０１ｂの未定義変数を、実際に「真」に等しくセットしなければならない。またスレーブ装置「Ｃ」の第１のベクトル４０１ｃにも、点線の値４０５ａ、４０５ｂに関して上に説明した通り正確に機能する点線の値４０５ｃが実際に含まれていることに注意されたい。
本システムが正しく機能するためには、能力情報１０９の新しい符号化方式を含む制御ソフトウエア１０７がマスター装置に与えられたとき、マスター装置１０１も新しいソフトウエアによって性能が向上し、新しく定義された変数の意味を知ることができるようになることが望ましい。ソフトウエアの性能が向上されないと、マスター装置１０１は、それが事実ではないかもしれないのに、新しいスレーブ装置が既存の全スレーブ装置でサポートされている機能をすべてサポートしていると想定することになるであろう（共通領域２０５に注目されたい）。この種類のエラーを回避するため、マスター装置１０１は、能力情報１０９の実際の長さと予期した長さを比較することができる。もし一致しなければ、システムの完全性が危うくなるので、適切なエラールーチンを呼び出さなければならない。そのようなエラールーチンを実行することはシステムに任されているので、本考察の範囲外である。
前に参照した本発明の実施例においては、能力情報１０９がマスター装置１０１からスレーブ装置１０３にダウンロードされるが、本発明の別の側面には、マスター装置１０１が期待するどの機能をスレーブ装置がサポートするかを決定し、さらにスレーブ装置はこれらの機能をサポートするハードウエアを備えているか否かを決定するため、能力情報１０９を調べるスレーブ装置が備えられている。どちらかを選ぶとして、マスター装置１０１からスレーブ装置１０３にダウンロードされたソフトウエアに能力情報１０９が含まれていなければ、スレーブ装置１０３に期待されたハードウエア環境が現に存在していることを保証する命令を制御ソフトウエア１０７自体に含めればよいであろう。スレーブ装置１０３のハードウエアの性能が実際に強化されてしまう前に、マスター装置１０１が制御ソフトウエア１０７の性能向上版を受信しているという機会がある場合、この決定が必要になることがある。これが発生した場合、スレーブ装置１０３は、エラー条件が発生したことをマスター装置１０１に連絡しなければならない。
特定の実施例を参照して本発明を説明してきた。しかし、上に説明した好適実施例とは違う特殊な形式で本発明を実施することが可能なことは、当業者には容易に判るであろう。本発明の主旨から逸脱せずにこれを実行することが可能である。好適実施例は単に例示に過ぎないのであるから、あらゆる点でこれを限定して考えてはならない。本発明の範囲は、前述の記述よりむしろ添付の請求の範囲で与えられており、請求の範囲に入る変形や同等な実施例のすべては、請求の範囲に含まれるものとする。
【図１】
0003885892.tif 000004
【図２ａ】
0003885892.tif 000005
【図２ｂ】
0003885892.tif 000006
【図３】
0003885892.tif 000007
【図４ａ】
0003885892.tif 000008
【図４ｂ】
0003885892.tif 000009
【図４ｃ】
0003885892.tif 000010