(57)【特許請求の範囲】
【請求項１】
マスタ・ユニットとスレーブ・ユニットとの間での通信方法であって、
‐コマンド・バイト（２０）とある個数のデータ・バイト（２４、２５）とをマスタ・ユニット（１）からスレーブ・ユニット（７）へ送信し、前記コマンド・バイト（２０）がデータ・バイト・カウンタ・ビットを含んでいる送信のステップと、
‐コマンド・バイト（２０）および前記個数のデータ・バイト（２４、２５）を受信するステップとを含み、
データ・バイト（２４、２５）の個数は、以下の規則集合によって決定されることを特徴とし、前記規則集合は、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）がコマンドの第１の集合に属している場合、前記データ・バイト・カウンタ・ビットはデータ・バイトの期待される個数である関連付けられたデータ・バイト（２４、２５）の個数を表している情報を含み、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）がコマンドの第２の集合に属している場合、前記データ・バイト・カウンタ・ビットはデータ・バイト（２４、２５）の期待される個数が得られる前にデコードされなければならない１つの数値を表している情報を含むという規則集合である方法。
【請求項２】
請求項１に記載の方法において、
メッセージが再送信される時を除いて、新しいメッセージが送信されるたびに前記コマンド・バイト（２０）の中のメッセージ・カウンタ（ｂ３）を増加させるステップをさらに含む方法。
【請求項３】
請求項２に記載の方法において、メッセージ・カウンタ（ｂ３）を増加させる前記ステップが、単独ビットを増加させるステップを含む方法。
【請求項４】
請求項１に記載の方法において、コマンド・バイトを送信する前記ステップが、３つのビット（ｂ０，ｂ１，ｂ３）がデータ・バイト・カウンタ・ビットであるコマンド・バイト（２０）を送信するステップを含む方法。
【請求項５】
請求項１に記載の方法において、データ・バイト・カウンタ・ビット（ｂ０，ｂ１，ｂ２）を含んでいてコマンドの第１の集合に属しているコマンド・バイト（２０）を送信する前記ステップが、６グループのコマンドのうちの１つを送信し、各グループがそれぞれ０、１、２、３、４、および５個のデータ・バイトに関連付けられている送信のステップを含み；そしてデータ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）を含んでいてコマンドの第２の集合に属しているコマンド・バイト（２０）を送信する前記ステップが、２グループのコマンドを送信し、各グループがそれぞれ０個および１個のデータ・バイトに関連付けられている送信のステップを含む方法。
【請求項６】
請求項１に記載の方法において、
スレーブ・ユニットをアドレスするためのアドレス・バイトを送信するステップと、
コマンド、データ、およびアドレスの各バイトに対して補数のバイトを送信するステップとをさらに含む方法。
【請求項７】
請求項１に記載の方法において、
前記データ・バイトに続いてチェックサムを送信するステップと、
コマンド、データ、およびチェックサムの各バイトに対して補数のバイトを送信するステップとをさらに含む方法。
【請求項８】
請求項１に記載の方法において、
受信された信号と全く同じであるアクノレッジ信号を返すステップをさらに含む方法。
【請求項９】
コンピュータ読出し可能な媒体であって、プログラムがその上に記録されており、前記プログラムは実行された時、請求項１から請求項８までのどれかに従う方法を前記コンピュータに実行させるようになっている媒体。
【請求項１０】
スレーブ・ユニット（７）において情報を受信する方法であって、
‐  データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）を含んでいるコマンド・バイト（２０）を受信するステップと、
‐ある個数のデータ・バイト（２４、２５）を受信するステップとを含み、
前記データ・バイトの個数は以下の規則集合に従って決定されることを特徴とし、前記規則集合は、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）がコマンドの第１の集合に属している場合、前記データ・バイト・カウンタ・ビットはデータ・バイトの期待される個数である関連付けられたデータ・バイト（２４、２５）の個数を表している情報を含み、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）がコマンドの第２の集合に属している場合、前記データ・バイト・カウンタ・ビットはデータ・バイト（２４、２５）の期待される個数が得られる前にデコードされなければならない１つの数値を表している情報を含んでいるという規則集合である方法。
【請求項１１】
請求項１０に記載の方法において、コマンド・バイト（２０）を受信する前記ステップが、再送信の間は変化しないままになっているメッセージ・カウンタ（ｂ３）を受信するステップを含む方法。
【請求項１２】
請求項１１に記載の方法において、メッセージ・カウンタ（ｂ３）を受信する前記ステップが、単独のビットを受信するステップを含む方法。
【請求項１３】
請求項９に記載の方法において、コマンド・バイトを受信する前記ステップが、３つのビット（ｂ０、ｂ１、ｂ２）がデータ・バイト・カウンタ・ビットであるコマンド・バイト（２０）を受信するステップを含む方法。
【請求項１４】
請求項１０に記載の方法において、データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）を含んでいてコマンドの第１の集合に属しているコマンド・バイト（２０）を受信する前記ステップが、６グループのコマンドのうちの１つを受信し、各グループがそれぞれ０、１、２、３、４、および５個のデータ・バイトに関連付けられている、受信のステップを含み；そしてデータ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）を含んでいてコマンドの第２の集合に属しているコマンド・バイト（２０）を受信する前記ステップが、各グループがそれぞれ０個および１個のデータ・バイトに関連付けられている２グループのコマンドの送信のステップを含む方法。
【請求項１５】
請求項１０に記載の方法において、
アドレス・バイトを受信し、前記アドレス・バイトが受け付けられた場合に関連付けられたコマンドおよびデータのバイト（２０、２４、２５）を解釈するステップと、
コマンド、データ、およびアドレスの各バイトに対する補数のバイトを受信するステップとをさらに含む方法。
【請求項１６】
請求項９に記載の方法において、
前記データ・バイトに続いているチェックサムを受信するステップと、
コマンド、データ、およびチェックサムの各バイトに対する補数のバイトを受信するステップとをさらに含む方法。
【請求項１７】
請求項１０に記載の方法において、
受信された信号と全く同じであるアクノレッジ信号を返すステップをさらに含む方法。
【請求項１８】
コンピュータ読出し可能な媒体であって、プログラムがその上に記録されており、前記プログラムは実行された時、請求項１０から請求項１７までのどれかに従う方法を前記コンピュータに実行させるようになっている媒体。
【請求項１９】
情報をマスタ・ユニットから送信する方法であって、
‐データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）を含んでいるコマンド・バイト（２０）を送信するステップと、
‐ある個数のデータ・バイト（２４、２５）を送信するステップとを含み、
前記データ・バイトの個数は以下の規則集合に従って決定され、前記規則集合は、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）がコマンドの第１の集合に属している場合、前記データ・バイト・カウンタ・ビットは送信されるべきデータ・バイトの個数である関連付けられたデータ・バイト（２４、２５）の個数を表している情報を含み、
前記データ・バイト・カウンタ・ビットがコマンドの第２の集合に属している場合、前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）は送信されるべきデータ・バイト（２４、２５）の個数が得られる前に符号化されなければならない１つの数値を表している情報を含むという規則集合である方法。
【請求項２０】
請求項１９に記載の方法において、コマンド・バイトを送信する前記ステップが、メッセージ・カウンタ（ｂ３）を送信するステップをさらに含み、前記メッセージ・カウンタは、メッセージが再送信される時以外は新しいメッセージが送信されるたびに増加されるようになっている方法。
【請求項２１】
請求項２０に記載の方法において、メッセージ・カウンタ（ｂ３）を増加させる前記ステップが、単独のビットを増加させるステップを含む方法。
【請求項２２】
請求項１９に記載の方法において、コマンド・バイトを送信する前記ステップが、３つのビット（ｂ０、ｂ１、ｂ２）がデータ・バイト・カウンタ・ビットであるコマンド・バイト（２０）を送信するステップを含む方法。
【請求項２３】
請求項１９に記載の方法において、データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）を含んでいてコマンドの第１の集合に属しているコマンド・バイト（２０）を送信する前記ステップが、６グループのコマンドのうちの１つを送信し、各グループがそれぞれ０、１、２、３、４、および５個のデータ・バイトに関連付けられている送信のステップを含み；そしてデータ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）を含んでいてコマンドの第２の集合に属しているコマンド・バイト（２０）を送信する前記ステップが、２グループのコマンドを送信し、各グループがそれぞれ０個および１個のデータ・バイトに関連付けられている送信のステップを含む方法。
【請求項２４】
請求項１９に記載の方法において、
スレーブ・ユニットをアドレスするためのアドレス・バイトを送信するステップと、
コマンド、データ、およびアドレスの各バイトに対して補数のバイトを送信するステップとをさらに含む方法。
【請求項２５】
請求項１９に記載の方法において、
前記データ・バイトに続いてチェックサムを送信するステップと、
コマンド、データ、およびチェックサムの各バイトに対して補数のバイトを送信するステップとをさらに含む方法。
【請求項２６】
コンピュータ読出し可能な媒体であって、プログラムがその上に記録されており、前記プログラムは実行された時、請求項１９から請求項２５までのどれかに従う方法を前記コンピュータに実行させるようになっている媒体。
【請求項２７】
マスタ・ユニット（１）とスレーブ・ユニット（７）との間で通信するためのコンピュータ・システムであって、
‐データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）を含んでいる前記スレーブ・ユニットに対して前記マスタ・ユニットからコマンド・バイト（２０）およびある個数のデータ・バイト（２４、２５）を送信するための手段と、
‐前記コマンド・バイトと前記個数のデータ・バイトを受信するための手段とを含み、
前記データ・バイトの個数は以下の規則集合に従って決定されることを特徴とし、前記規則集合は、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）が第１の集合に属している場合、前記データ・バイト・カウンタ・ビットはデータ・バイトの期待される個数である関連付けられたデータ・バイト（２４、２５）の個数を表している情報を含み、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）が第２の集合に属している場合、前記データ・バイト・カウンタ・ビットはデータ・バイト（２４、２５）の期待される個数が得られる前にデコードされなければならない１つの数値を表している情報を含むという規則集合であるコンピュータ・システム。
【請求項２８】
スレーブ・ユニット（７）において情報を受信するためのコンピュータ・システムであって、
‐データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）を含んでいるコマンド・バイト（２０）を受信するための手段と、
‐ある個数のデータ・バイトを受信するための手段とを含み、
前記データ・バイトの個数は以下の規則集合に従って決定されることを特徴とし、前記規則集合は、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）が第１の集合に属している場合、前記データ・バイト・カウンタ・ビットは期待されるデータ・バイトの個数である関連付けられたデータ・バイト（２４、２５）の個数を表している情報を含み、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）が第２の集合に属している場合、前記データ・バイト・カウンタ・ビットはデータ・バイト（２４、２５）の期待される個数が得られる前にデコードされなければならない１つの数値を表している情報を含むという規則集合であるコンピュータ・システム。
【請求項２９】
マスタ・ユニット（１）から情報を送信するためのコンピュータ・システムであって、
‐データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）を含んでいるコマンド・バイト（２０）を送信するための手段と、
‐ある個数のデータ・バイト（２４、２５）を送信するための手段とを含み、
前記データ・バイトの個数は以下の規則集合に従って決定されることを特徴とし、前記規則集合は、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）が第１の集合に属している場合、前記データ・バイト・カウンタ・ビットは送信されるべきデータ・バイトの個数である関連付けられたデータ・バイト（２４、２５）の個数を表している情報を含み、
前記データ・バイト・カウンタ・ビット（ｂ０、ｂ１、ｂ２）が第２の集合に属している場合、前記データ・バイト・カウンタ・ビットは送信されるべきデータ・バイト（２４、２５）の個数が得られる前に符号化されなければならない１つの数値を表している情報を含むという規則集合であるコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の分野】
本発明は、マスタ・ユニットとスレーブ・ユニットとの間の通信の分野に関し、前記スレーブ・ユニットはあるタイプの構造、たとえば、半自律性の自動車を制御するために、マスタ・ユニットからダウンロードされた一組の命令を実行することができる。
【０００２】
【発明の背景】
半導体デバイスにおける最近の技術開発は、小型で低コストのマイクロプロセッサ、たとえば、制御およびデータ収集のシステムにおける魅力的なコンポーネントであるシングルチップ・プロセッサを作り上げた。コンピュータ制御の制御システムの初期の頃においては、中央コンピュータがシステム内のすべての計算および入力／出力の動作を管理した。しかし、これらの新しいプロセッサによってその計算および入力／出力の動作をより小型のローカルなコンピュータ（スレーブ・ユニット）に分散させることが可能となった。そのスレーブ・ユニットは中央コンピュータ（マスタ・ユニット）から構成設定され、および／または監視されるようになっている。この方法によって中央コンピュータにおける制御関連の計算の仕事はなくなり、その能力を、たとえば、より良いユーザ・インターフェースなどのために使うことができる。しかし、実現可能なソリューションを得るためには、マスタ・ユニットとスレーブ・ユニットとの間の効率の良い、そして信頼できる通信が必要である。
【０００３】
マスタ・ユニットとスレーブ・ユニットとの間の通信は、通常、一組のパラメータ（データ）に関連付けられた命令（コマンド）を含む。通常、コンピュータ・プログラムは、マスタ・ユニットからスレーブ・ユニットへダウンロードされ、そのダウンロードの後、スレーブ・ユニットがそのプログラムを実行する。しかし、そのダウンロードされたプログラムがスレーブ・ユニットにおいて実行されている間に、そのスレーブ・ユニットに対してマスタ・ユニットから追加の情報をダウンロードすることが必要になる可能性がある。さらに、コスト効率の良いソリューションを得るために、小容量のメモリおよび非常に限定された数の追加のコンポーネントを備えたシングル・チップのプロセッサが好まれる。したがって、スレーブ・ユニットにおいて通信に関連付けられた仕事が占めるメモリおよびプロセッサ時間はできるだけ少ないことが重要である。その通信の、別の、そして重要な態様はそれらの信頼性が高くなければならないことである。スレーブ・ユニットに対するコマンドが失われた場合、問題の制御システムの機能にとって致命的となり得る。
【０００４】
米国特許第５，５３０，４３６号は、マスタ・ユニットとスレーブ・ユニットとの間の通信方法を開示しており、その中で１つの拡張ビットを含んでいる制御バイトがそれに続く第１のアドレス・バイトを伴って送信される。追加の第２のアドレス・バイトが必要な場合、拡張ビットがセットされ、追加の第２のアドレス・バイトが第１のアドレス・バイトに続く。これは第１のアドレス・バイトだけが必要である可能性が最も大きい場合に便利である。これはアドレスの効率的なコーディングであるが、コマンドおよび関連のデータも効率の良いコーディングを必要とすることを考慮せず、またこのコーディング方式は信頼性の処理手順を組み込んでもいない。
【０００５】
【発明の概要】
本発明の目的は、特に、短いメッセージの大きな集合が通信されなければならない時に、効率的で柔軟性の高いプロトコルを提供する方法を提供することである。
【０００６】
これは、マスタ・ユニットとスレーブ・ユニットとの間の通信方法によって本発明に従って達成され、その方法は少なくとも１つのコマンド・バイトをマスタ・ユニットからスレーブ・ユニットへ送信し、そのコマンド・バイトは以下の規則集合に従ってスレーブ・ユニットによって解釈されるデータ・バイト・カウンタ・ビットを含んでおり、その規則集合は、前記データ・バイト・カウンタ・ビットが第１の集合に属している場合、前記データ・バイト・カウンタ・ビットは期待されるデータ・バイトの個数である関連付けられたデータ・バイトの個数を表している情報を含み、前記データ・バイト・カウンタ・ビットが第２の集合に属している場合、前記データ・バイト・カウンタ・ビットはデータ・バイトの期待される個数が得られる前にデコードされなければならない１つの数値を表している情報を含む、コマンド・バイトの送信のステップと；少なくともそのコマンド・バイトを受信するステップと；そのコマンド・バイトを解釈するステップと；その規則集合によって要求される個数のデータ・バイトを受信するステップとを含んでいる。
【０００７】
結果として、スレーブ・ユニットとマスタ・ユニットにおいてメッセージを送信および受信することができ、比較的大量の短いメッセージを含んでいるメッセージの集合の効率的な通信が得られ、長いメッセージがあってもよいようにすることができる。あるいは、比較的大量の長いメッセージを含んでいるメッセージの集合の効率的な通信が得られ、短いメッセージがあってもよいようにすることができる。
【０００８】
コマンド・バイトはメッセージ・カウンタをさらに含んでいてもよい。そのメッセージ・カウンタは新しいメッセージが送信されるたびに増加されるが、再送信の間には変化しない。それによって、より信頼性の高い通信方式が得られる。
【０００９】
本発明によれば、本発明のさらにもう１つの目的は、情報が、たとえば、１つのスレーブ・ユニットにおいて受信される方法を提供することである。その方法は、以下の規則集合に従って、データ・バイト・カウンタ・ビットを含んでいるコマンド・バイトを受信し、そしてデータ・バイトを受信するステップを含む。その規則集合は、データ・バイト・カウンタ・ビットが第１の集合に属している場合、そのデータ・バイト・カウンタ・ビットはデータ・バイトの期待される個数である関連付けられたデータ・バイトの個数を表している情報を含み；そのデータ・バイト・カウンタ・ビットが第２の集合に属している場合、そのデータ・バイト・カウンタ・ビットはそのデータ・バイトの期待される個数が得られる前にデコードされなければならない１つの数値を表している情報を含んでいるという規則集合である。
【００１０】
結果として、スレーブ・ユニットまたはマスタ・ユニットにおいてメッセージを受信することが可能であり、比較的大量の短いメッセージを含んでいるメッセージの集合の効率的な通信が得られ、長いメッセージがあってもよいようにすることができる。あるいは、比較的大量の長いメッセージを含んでいるメッセージの集合の効率的な通信が得られ、短いメッセージがあってもよいようにすることができる。
【００１１】
さらに、本発明によれば、本発明のさらにもう１つの目的は、たとえば、マスタ・ユニットから情報が送信される方法を提供することであり、その方法は、コマンド・ビットとデータ・バイト・カウンタ・ビットとを含んでいる少なくとも１つのコマンド・バイトを送信するステップと；以下の規則集合に従ってある個数のデータ・バイトを送信するステップとを含み、その規則集合は、データ・バイト・カウンタ・ビットが第１の集合に属している場合、そのデータ・バイト・カウンタ・ビットは送信されるべきデータ・バイトの個数である関連付けられたデータ・バイトの個数を表している情報を含み；データ・バイト・カウンタ・ビットが第２の集合に属している場合、送信されるべきデータ・バイトの個数が得られる前に符号化されなければならない１つの数値を表している情報を含んでいる。
【００１２】
結果として、スレーブ・ユニットまたはマスタ・ユニットにおいてメッセージを送信することができ、比較的大量の短いメッセージを含んでいるメッセージの集合の効率的な通信が得られ、長いメッセージがあってもよいようにすることができる。あるいは、比較的大量の長いメッセージを含んでいるメッセージの集合の効率的な通信が得られ、短いメッセージがあってもよいようにすることができる。
【００１３】
また、本発明は、マスタ・プログラムとスレーブ・プログラムとの間で情報を転送するためのデータ構造によって符号化されたコンピュータ読出し可能なメモリ・デバイスにも関し、その情報はある個数のデータ・バイトに関連付けられた少なくとも１つのコマンド・バイトを含み、マスタ・プログラムは関連付けられたデータ・バイトの個数に関する情報を含んでいる少なくとも１つのパラメータを伴うデータ構造を有しているカウンタを含み、前記パラメータは以下の規則に従って修正される。その規則は、そのコマンド・バイトがコマンドの第１の集合に属している場合、そのコマンド・バイトは関連付けられたデータ・バイトの個数を表している１つの値を含み、そして、そのパラメータがその値によって修正され；そのコマンド・バイトがコマンドの第２の集合に属している場合、そのパラメータは減らされた値によって修正されるという規則である。
【００１４】
本発明によれば、本発明のさらにもう１つの目的は、スレーブ・プログラムの中で情報を受信するためのデータ構造によって符号化されたコンピュータ読出し可能なメモリ・デバイスを提供することであり、その情報はある個数のデータ・バイトに関連付けられた少なくとも１つのコマンド・バイトを含み、スレーブ・プログラムは関連付けられたデータ・バイトの個数に関する情報を含んでいる少なくとも１つのパラメータを伴うデータ構造を有しているカウンタを含み、そのパラメータは以下の規則に従って修正される。その規則は前記コマンド・バイトがコマンドの第１の集合に属している場合、そのコマンド・バイトは関連付けられたデータ・バイトの個数を表している値を含み、そして前記パラメータがその値で修正され；前記コマンド・バイトがコマンドの第２の集合に属している場合、前記パラメータは減らされた値で修正されるという規則である。
【００１５】
本発明によれば、本発明のさらにもう１つの目的は、マスタ・プログラムの中で情報を送信するためのデータ構造で符号化されたコンピュータ読出し可能なメモリ・デバイスを提供することであり、その情報はある個数のデータ・バイトに関連付けられた少なくとも１つのコマンド・バイトを含み、マスタ・プログラムは送信されるべき関連付けられたデータ・バイトの個数についての情報を含んでいる少なくとも１つのパラメータを有するデータ構造を含み、前記パラメータは以下の規則に従って修正される。その規則は、前記コマンド・バイトがコマンドの第１の集合に属している場合、そのコマンド・バイトは関連付けられたデータ・バイトの個数を表している第１の値を含み；前記コマンド・バイトがコマンドの第２の集合に属している場合、前記パラメータは前記第１の値とは異なる値で修正されるという規則である。
【００１６】
また、本発明は、マスタ・ユニットとスレーブ・ユニットとの間の通信のためのコンピュータ・システムに関し；データ・バイト・カウンタ・ビットを含んでいるコマンド・バイトを送信するための手段と、１つの規則集合に従って、データ・バイトを送信するための手段とを含み、その規則集合は、データ・バイト・カウンタ・ビットが第１の集合に属している場合、そのデータ・バイト・カウンタ・ビットは期待されるデータ・バイトの個数である関連付けられたデータ・バイトの個数を表している情報を含み、そしてデータ・バイト・カウンタ・ビットが第２の集合に属している場合、そのデータ・バイト・カウンタ・ビットはデータ・バイトの期待される個数が得られる前にデコードされなければならない数値を表している情報を含むという規則集合である。そのシステムは少なくともコマンド・バイトを受信するための手段と、そのコマンド・バイトを解釈するための手段と、規則集合によって要求される数のデータ・バイトを受信するための手段とをさらに含む。
【００１７】
本発明は、さらに、スレーブ・ユニットにおいて情報を受信するためのコンピュータ・システムに関し、そのシステムはデータ・バイト・カウンタ・ビットを含んでいるコマンド・バイトを受信するための手段と、以下の規則集合に従ってデータ・バイトを受信するための手段とを含んでいる。その規則集合は、データ・バイト・カウンタ・ビットが第１の集合に属している場合、そのデータ・バイト・カウンタ・ビットはデータ・バイトの期待される個数である関連付けられたデータ・バイトの個数を表している情報を含み；データ・バイト・カウンタ・ビットが第２の集合に属している場合、そのデータ・バイト・カウンタ・ビットはデータ・バイトの期待される個数が得られる前にデコードされなければならない数値を表している情報を含むという規則集合である。
【００１８】
さらに本発明によれば、本発明のさらにもう１つの目的は、たとえば、マスタ・ユニットから情報を送信するためのコンピュータ・システムを提供し、それはコマンド・ビットとデータ・バイト・カウンタ・ビットを含んでいる少なくとも１つのコマンド・バイトを送信するための手段と、以下の規則集合に従ってある個数のデータ・バイトを送信するための手段とを含む。その規則集合は、データ・バイト・カウンタ・ビットが第１の集合に属している場合、そのデータ・バイト・カウンタ・ビットは送信されるべきデータ・バイトの個数である関連付けられたデータ・バイトの個数を表している情報を含み；データ・バイト・カウンタ・ビットが第２の集合に属している場合、そのデータ・バイト・カウンタ・ビットは、送信されるべきデータ・バイトの個数が得られる前に符号化されなければならない１つの数値を表している情報を含むという規則集合である。
【００１９】
【好適な実施形態の詳細な説明】
図１は、スレーブ・ユニットとマスタ・ユニットとを備えている本発明の１つの好適な実施形態を示している。マスタ・ユニット１はトランシーバ（送信機および受信機）２とパーソナル・コンピュータ（ＰＣ）３とを含む。パーソナル・コンピュータおよびＰＣという用語は任意のタイプのコンピュータ、たとえば、組込み型のコンピュータおよび汎用コンピュータを含む。ＰＣ３は共通のＰＣインターフェース、たとえば、シリアルのＲＳ３３２ポートまたは８ビットのパラレル・ポートを使ってトランシーバ２に対して配線によって接続されている。トランシーバ２は無線リンク１３上でスレーブ・ユニット７との通信を担当する。トランシーバ２は選択されたＰＣインターフェースに従って動作するＰＣインターフェース４を含む。トランシーバ２は二方向のリピータおよび変調器および復調器５とをさらに含み、それはＰＣインターフェースからの信号を無線送信機および受信機のデバイス６に対して適応させた信号に変換し、そしてその逆の変換を行う。無線通信は、たとえば、無線送信、超音波または赤外線の手段によって実装することができる。
【００２０】
トランシーバ２のようなスレーブ・ユニット７は二方向のリピータおよび変調器／復調器９と、送信機および受信機のデバイス８とを備えている。それによってマイクロプロセッサ１０がマスタ・ユニット１と通信することができる。そのマイクロプロセッサはメモリ１１と入力／出力モジュール（Ｉ／Ｏモジュール）１２に対して接続されている。Ｉ／Ｏモジュールは、たとえば、電気的モータ、発光ダイオード（ＬＥＤ）、およびスイッチ、フォトダイオードなどのセンサに対する適切なインターフェースのためのドライバを含む。Ｉ／Ｏモジュールは、システムを制御することができるように構成されている。そのシステムは、たとえば、列車を駆動するためのモータ、および手動または自動のいずれかで列車を始動および停止させるためのセンサ／アクチュエータを備えている玩具の列車などであってよい。
【００２１】
マスタ・ユニット１はマイクロプロセッサ１０によって解釈される情報を送信する。その情報は、たとえば、命令および関連付けられたデータの形式での情報であり、それによって、マイクロプロセッサ１０によって実行することができるコンピュータ・プログラムを構成することができる。１つの好適な実施形態においては、スレーブ・ユニット７は実行することができるコマンドおよびデータを含んでいるソフトウェアのプログラムを受信し、一方、スレーブ・ユニット７はそのソフトウェア・プログラムに対する追加の入力として提供されるさらに多くのコマンド／データを受信する。このようにして、制御プログラムをマスタ・ユニット１からダウンロードすることができ、そしてそのソフトウェアはＰＣ３からのユーザ・コマンド以外にセンサ信号に応答することができる。
【００２２】
同じように、スレーブ・ユニットは単純なアクノレッジ情報として、あるいは、たとえば、ＰＣ３に対するセンサ起動のコマンド／要求としてのいずれかでマスタ・ユニットに対して情報を送信することができる。
【００２３】
図１に示されているシステムは比較的狭いバンド幅の無線リンクおよびスレーブ・ユニットを備えたシステムの一例であり、好ましい可能な最小のハードウェアである。これによって、少なくともその第１の態様において、本発明は無線リンク１３上でのマスタ１とスレーブ７との間の通信に主として向けられている。
【００２４】
情報は無線リンク１３上で次のバイト形式で通信される。
【外１】
0004064626.tif 000002
ここで、ＣＭＤはコマンド・バイト、ＤＡＴＡ1〜ＤＡＴＡNはそのコマンド・バイトに関連付けられたデータ・バイト、ＣＨＫはチェックサムである。チェックサムはコマンド・バイト（ＣＭＤ）とそれに続いているデータ・バイト（ＤＡＴＡ1〜ＤＡＴＡN）の切り詰められた８ビットの加算として計算される。バー（￣）はバイトの補数を示すが、これらのバイトはチェックサムには含まれない。Ｎは特定のコマンドに続くデータ・バイトの個数である。このフォーマットはコマンドが送信される時に常に使われる。バイトの補数を送信することの目的は、トランシーバに対する直流成分のない信号を得ることである。さらに、ほとんどのシングル・チップのマイクロプロセッサはバイト指向であり、それによってこのバイトのフォーマットが実現可能になっている。
【００２５】
本発明の実際的な実装は、ハードウェアおよびソフトウェアの組合せを含むことができる。マスタ・ユニット１とスレーブ・ユニット７との間の物理的なインターフェースは、論理データ信号を物理信号に変換し、またその逆の変換が可能なあるタイプのハードウェアをもちろん含むことができる。しかし、本発明はハードウェアで、ソフトウェアで、あるいはそれらの組合せで実装することができる。そのソフトウェアは、それを実行することができる任意のハードウェア・デバイス、たとえば、マイクロプロセッサ／メモリ１０／１１、ＰＣインターフェース４またはコンピュータＰＣ３において実行することができるプログラムの中に埋め込むことができる。
【００２６】
図２は、本発明によるコマンド・バイトの中での１つの好適なビット割当てを示している。コマンド・バイト２０は８個のビット、ｂ０〜ｂ７を有している。データ・バイト・カウンタ２１は３つのビット、ｂ０〜ｂ２を含み、コマンド・バイトに続くデータ・バイトの個数Ｎを示す。コマンド２３は４つのビット、ｂ４〜ｂ７を含む。メッセージ・カウンタ２２は１つのビット、ｂ３を含む。
【００２７】
この割当ては伝統的にｂ４、ｂ５、ｂ６、およびｂ７によって符号化された１６種類のコマンドが可能であり、各コマンドはｂ０、ｂ１、およびｂ２によって符号化されている０〜７個のデータ・バイトを有している。
【００２８】
データ・バイトの個数がコマンドの個数と組み合わされる場合、１２８種類の組合せが得られ、コマンドの暗黙のグルーピング、たとえば、１６コマンドの８グループが０〜７個のデータ・バイトをそれぞれ有している。効率を良くするために、この７ビットの直接的なコーディングの１２８個の組合せは、このコーディング方式を使っている１つのコマンド・セットがこのコマンドのグルーピングに適合し、そして関連付けられた数のデータ・バイトに適合することが必要である。
【００２９】
この暗黙の関連付けられた個数のデータ・バイトは、１６個以上のコマンドが１つのデータ・バイトを使う場合にコマンドのグルーピングを避けるためにスキップされ、各７ビットのコマンドはそれぞれ固定された数のデータ・バイトに関連付けられなければならない。しかし、これによってデコード回路／ソフトウェアの複雑性が増加する。特に、デコーディングがバイト指向のマイクロプロセッサにおいて実行される時、特定の７ビットのコマンドに関連付けられているデータ・バイトの個数を示すためにルックアップ・テーブルを備える必要がある。他方、可能なデータ・バイトの個数が固定されていて、すべてのコマンドに対して等しい場合、単純なデコーディング回路を使うことができるが、この方式は効率的でなく、通信のバンド幅に関して、比較的大量のデータ・バイトを有している少数のコマンドの場合がサポートされなければならない。
【００３０】
図３は、本発明によるコマンド・バイトおよび関連付けられた個数のデータ・バイトの３つの例を示している。Ａ３、Ｂ３、およびＣ３の各例はコマンド・バイト２０を含み、そのコマンド・バイトはデータ・バイト・カウンタ２１、メッセージ・カウンタ２２、およびコマンド２３をさらに含んでいる。データ・バイト２４は期待されるデータ・バイトであり、一方、バイト２５は送信されないか、あるいは期待されないバイトである。
【００３１】
例Ａ３は、２進値が「０００」であるデータ・バイト・カウンタ２１が、期待されるデータ・バイトがないことを示している、コマンド・バイトを示している。
【００３２】
例Ｂ３は２進値が「１００」であるデータ・バイト・カウンタ２１が１つのデータ・バイトが期待されることを示している、コマンド・バイトを示している。
【００３３】
例Ｃ３は、２進値が「１１１」であるデータ・バイト・カウンタ２１が、７個のデータ・バイトが期待されることを示している、コマンド・バイトを示している。しかし、本発明によれば、このコマンドのグループを期待されるデータ・バイトが１つだけであるように構成することが可能である。このオプションは比較的多数のコマンドが少数のデータ・バイトを使う場合に、より効率的なコーディング方式を提供する。
【００３４】
図４は、可能なコマンドおよびデータ・バイトの個数の関数としてのコマンドの配分を示している。Ｂ４〜Ｂ７によって表されている４ビットのコマンド空間がコマンド軸に沿って８回繰り返されている。垂直の太線のバーは１６個のコマンドのスパンを表している。いくつかのアプリケーションの場合、６および７のデータ・バイトは不要であり、したがって、これらの２つのグループはそれぞれデータ・バイトが０および１個であるグループへ移動される。たとえば、特定のコマンド（Ａ４）がコマンドｂ４＝１、ｂ５＝１、ｂ６＝１、ｂ７＝１でデータ・バイトが０個であるように符号化され、ｂ０＝０（ＬＳＢ）、ｂ１＝０、ｂ２＝０（ＭＳＢ）であり、ここで、ＬＳＢは最下位ビットであり、ＭＳＢは最上位ビットである。しかし、特定のコマンド（Ｂ４）はコマンドｂ４＝１、ｂ５＝１、ｂ６＝１、ｂ７＝１で符号化され、６個のデータ・バイトがあり、ｂ０＝０（ＬＳＢ）、ｂ１＝１、ｂ２＝１（ＭＳＢ）である。しかし、コマンド（Ｂ）は、データ・バイトがないとして解釈される。この方式では、データ・バイト・カウンタによって示されている数とは異なる数のデータ・バイトを有している、たとえば、１、２、または１７個のデータ・バイトを有している選択可能なコマンドの集合を構成することができ、一方、別の集合はデータ・バイト・カウンタによって示されているデータ・バイトの個数、たとえば、１、２、３、４、または５個のデータ・バイトを有している。ＬＳＢおよびＭＳＢは都合によって逆の順序によって送信することができる。
【００３５】
図５は、図４に示されている配分に従ってコマンドを送信するためのフローチャートを示している。好適な実施形態においては、図１に示されているマスタ・ユニットは開始状態４０から送信手順をイネーブルする。その手順は、たとえば、コマンド・バイトおよびデータ・バイトのシーケンシャルなリストが格納されている先入れ先出しのＦＩＦＯレジスタから送信されるべき情報を読み出すことができる。状態４１は、そのＦＩＦＯレジスタから１つのコマンド・バイトを読み出し、そして状態４２はそのコマンド・バイトを送信する。状態４３において、それはデータ・バイト・カウンタ２１（図２）によって示されているデータ・バイトの個数、Ｎｏ＿ＤＢが値「６」に等しいかどうかがテストされ、これが成立した場合、そのコマンドにはデータ・バイトが関連付けられておらず、その手順は停止する。状態４４において、データ・バイト・カウンタ２１（図２）によって示されているデータ・バイトの個数、Ｎｏ＿ＤＢが値「７」に等しいかどうかがテストされる。これが成立した場合、状態４７が１つのデータ・バイトをＦＩＦＯレジスタから読み出し、状態４８がそのデータ・バイトを送信する。Ｎｏ＿ＤＢが「０」、「１」、「２」、「３」、「４」、または「５」のうちの１つの値に等しい場合、Ｎｏ＿ＤＢ個のバイトが状態４５においてＦＩＦＯから読み出され、状態４６によって送信される。
【００３６】
図５の中のフローチャートは、ハードウェア、ソフトウェア、またはそれらの組合せで実装することができる。図５のフローチャートまたはその一部分を実装しているソフトウェアはマスタ・ソフトウェアと呼ばれる。マスタ・ソフトウェアは上記のハードウェア・デバイス、すなわち、マスタ・ユニットおよび／またはスレーブ・ユニットのどれかにおいて実行することができるプログラムの中に埋め込むことができる。
【００３７】
そのソフトウェアは任意のデータ記憶装置またはデータ伝送媒体の手段によって分配することができる。その媒体はフロッピー・ディスク、ＣＤ‐ＲＯＭ、ミニディスク、コンパクト・ディスクまたはネットワークを含む。そのネットワークは、たとえば、インターネットであってもよい。ネットワークを経由して、本発明のソフトウェアの実施形態はコンピュータ・プログラムをダウンロードすることによって分配することができる。そのソフトウェアはマスタ・ソフトウェアだけを含むことができる。
【００３８】
図６は、図４に示されている分配に従ってコマンドを受信するためのフローチャートを示している。１つの好適な実施形態においては、図１に示されているスレーブ・ユニットは、受信機がアクノレッジ信号によって送信機に対して応答しない限り、コマンド・バイト２０（図２）を受信するために待機しながら受信モードになる。アクノレッジ信号は次のように受信された信号、
【外２】
0004064626.tif 000003
であるか、あるいはそれに対する補数信号であることが好ましい。アクノレッジ信号はバイトのシーケンス全体が受信された時に送信または返送することができる。
【００３９】
スレーブ・ユニット７は開始状態３９において起動される。たとえば、スレーブ・ユニット７（図１）が受信モードにある時、状態３０はコマンド・バイトを待ち、そのバイトの内容、すなわち、データ・バイト・カウンタのフィールド、Ｎｏ＿ＤＢ、およびコマンド・フィールド（ＣＭＤ）を読む。コマンド・バイトが受信されると、次の状態３１がデータ・バイト・カウンタを値「０」に初期化する。状態３２はデータ・バイトが続いていないコマンド・バイト、すなわち、コマンド・バイトから読まれたデータ・バイトの個数、Ｎｏ＿ＤＢが「０」または「６」に等しい場合を探す。状態３２の結果が「真」であった場合、そのコマンド・バイトは状態３８において記憶／実行される。
【００４０】
状態３２の結果が「偽」であった場合、それはデータ・バイトの個数、Ｎｏ＿ＤＢが「７」に等しいかどうか、すなわち、そのコマンド・バイトの後に１つのデータ・バイトだけが期待されるかどうかがチェックされる。Ｎｏ＿ＤＢが「７」に等しかった場合、データ・バイトが１つだけ期待され、そのデータ・バイト・カウンタが状態３７において「７」に設定される。その期待されるデータ・バイトが状態３５において読まれ、状態３８において記憶／実行される。
【００４１】
コマンド・バイトの中で読まれたデータ・バイトの個数が「１」、「２」、「３」、「４」、または「５」に等しかった場合、状態３３の結果は「偽」であり、状態３４、３５、および３６を含んでいるループに入り、そのループはデータ・バイトの個数がデータ・バイト・カウンタに等しくなるまで実行される。ループが実行されるたびに、データ・バイト・カウンタＤＢ＿ＣＮＴが増加される。与えられたコマンド・バイトに属しているすべてのデータ・バイトが検索された時、その受信機は新しいコマンド・バイトに対して待機する。この方法によって、図４に示されているコマンドの配分をデコードすることができる。
【００４２】
本発明のもう１つの態様は、図２の中でビットｂ３として示されている単独ビットのメッセージ・カウンタ２２である。このカウンタはより頑健な情報通信を得るために使われる。
【００４３】
図６の中のフローチャートはハードウェア、ソフトウェア、またはそれらの組合せで実装することができる。図６の中のフローチャートを実装しているソフトウェアまたはその一部分はスレーブ・ソフトウェアと呼ばれる。スレーブ・ソフトウェアは上記のハードウェア、すなわち、マスタ・ユニットおよび／またはスレーブ・ユニットのどれかにおいて実行することができるプログラムの中で実施することができる。
【００４４】
そのソフトウェアは任意のデータ記憶装置またはデータ伝送媒体の手段によって分配することができる。その媒体はフロッピー・ディスクおよびＣＤ−ＲＯＭ、ミニディスク、コンパクト・ディスクまたはネットワークを含む。そのネットワークはたとえば、インターネットであってよい。そのネットワークを経由して、本発明のソフトウェアの実施形態をコンピュータ・プログラムのダウンロードによって分配することができる。そのソフトウェアはスレーブ・ソフトウェアだけを含んでいてもよい。
【００４５】
同様に、マスタ・およびスレーブのソフトウェアは上記のように単独のソフトウェア・パッケージの中で分配することができる。
【００４６】
図７は、失われた、あるいは誤りのバイト・シーケンスが本発明によるメッセージ・カウンタによって、そして従来の技術による再送信フラグによってどのように扱われるかの一例を示している。一般性を失うことなしに、この例はマスタ・ユニットとスレーブ・ユニットとの間の伝送によって与えられ、その通信はコマンド・バイトを含んでいる。メッセージ・カウンタの場合、そして本発明の１つの態様に従って、マスタ・ユニットから送信された第１のコマンド・バイトＸ１はそのメッセージ・カウンタが「０」に設定されている。コマンド・バイトＸ１はスレーブ・ユニットにおいて正しく受信され、アクノレッジ信号Ｙ１として返される。マスタ・ユニットはメッセージ・カウンタが１に設定されている新しいコマンドＸ２を送信する準備ができている。このメッセージに対するアクノレッジ信号Ｙ２がマスタ・ユニットによって受信されなかった場合、コマンドＸ２が再送信される。ここで、メッセージ・カウンタは変更されないことに留意されたい。というのは、その通信は論理「１」に等しいメッセージ番号２を依然として処理しているからである。スレーブは受信するすべての新しいコマンドに対して変更ビットｂ３を受信しなければならないことを前もって知っている。
【００４７】
再送信フラグを使っている時、その通信は間違う可能性がある。マスタ・ユニットは再送信フラグを「０」に設定してコマンドＸ１を送信する。スレーブ・ユニットはＸ１を受信し、アクノレッジ信号Ｙ１を送信する。それはマスタ・ユニットの中において受信される。マスタはそれによって再送信フラグを「０」にセットした新しいコマンドＸ２を送信するための準備ができている。コマンドＸ２はスレーブ・ユニットによってアクノレッジされず、マスタ・ユニットはその再送信フラグを「１」にセットしてＸ２の再送信Ｘ２’を送信する。この再送信はスレーブ・ユニットによって正しく受信されてアクノレッジされる。コマンドＸ１がＸ２’に等しかった場合、スレーブ・ユニットはコマンドＸ２’をＸ１の再送信として「誤って」解釈する可能性があり、そしてそれによってそのコマンドを記憶または実行することなしに捨てる。
【００４８】
マスタ・ユニットは、スレーブ・ユニットが互いに通信することができるのと丁度同じように、無線リンク上である個数のスレーブ・ユニットのうちの１つと通信できることが好ましい。スレーブ・ユニットは交換可能な情報に対して応答することができ、あるいはダミーのリピータとして動作することができる。本発明のこの態様は、この分野の技術に熟達した人であれば容易に実装することができる。しかし、これらの機能を提供する好適な方法はアドレス・フィールドＡＤＲのフォーマットを次のようにしてバイトを拡張することである。
【外３】
0004064626.tif 000004
ここで、ＣＭＤはコマンド・バイト、ＤＡＴＡ1〜ＤＡＴＡNはコマンド・バイトに関係付けられているデータ・バイトであり、ＣＨＫはチェックサムである。Ｎはデータ・バイトの個数である。各スレーブ・ユニットはそれによってユニークなアドレスと関係付けられる。
【図面の簡単な説明】
【図１】  スレーブ・トランシーバ・ユニットとマスタ・トランシーバ・ユニットとを備えている本発明の１つの好適な実施形態を示す。
【図２】  本発明に従って、コマンド・バイトの中の好適なビット割当てを示す。
【図３】  本発明に従ってコマンド・バイトおよび関連付けられた数のデータ・バイトの３つの例を示す。
【図４】  可能なコマンドおよびデータ・バイトの個数の関数としてのコマンドの配分を示す。
【図５】  図４に示されている配分に従ってコマンドを送信するためのフローチャートを示す。
【図６】  図４に示されている配分に従ってコマンドを受信するためのフローチャートを示す。
【図７】  本発明によるメッセージ・カウンタによって、そして従来の技術による再送信フラグによって、失われた、あるいは誤りのバイト・シーケンスがどのように処理されるかの一例を示す。
【図１】
0004064626.tif 000005
【図２】
0004064626.tif 000006
【図３】
0004064626.tif 000007
【図４】
0004064626.tif 000008
【図５】
0004064626.tif 000009
【図６】
0004064626.tif 000010
【図７】
0004064626.tif 000011