(57)【要約】本発明の種々の態様及び実施例による装置を提供する。この装置は、メモリと、コントローラエリアネットワーク（ＣＡＮ）バスに結合されたＣＡＮコントローラと、メモリ及びＣＡＮコントローラに結合された少なくとも１つのプロセッサとを具える。この少なくとも１つのプロセッサは、ＣＡＮコントローラを第１のボーレートに設定し、第２のボーレートを決定し、この第２のボーレートの決定に応答して、第２のボーレートの少なくとも識別子を含むボーレート変更要求を、ＣＡＮバスを介して送信するように構成されているようにする。【選択図】図１
2017507534.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
コントローラエリアネットワーク（ＣＡＮ）バスに結合されたＣＡＮコントローラと、
前記メモリ及び前記ＣＡＮコントローラに結合された少なくとも１つのプロセッサと
を具える装置であって、前記少なくとも１つのプロセッサは、
前記ＣＡＮコントローラを第１のボーレートに設定し、
第２のボーレートを決定し、
この第２のボーレートの決定に応答して、前記第２のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信する
ように構成されている装置。
【請求項２】
請求項１に記載の装置において、前記少なくとも１つのプロセッサは更に、
タイムアウトが経過したことを決定し、
このタイムアウトが経過したことの決定に応答して、前記ＣＡＮバスを介してボーレート確認要求を送信し、
前記ＣＡＮコントローラを第２のボーレートに設定する
ように構成されている装置。
【請求項３】
請求項２に記載の装置において、前記少なくとも１つのプロセッサは更に、
前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信し、
このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していないことを決定し、
前記第２のボーレートよりも小さい下位のボーレートを決定し、
この下位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信する
ように構成されている装置。
【請求項４】
請求項２に記載の装置において、前記少なくとも１つのプロセッサは更に、
前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信し、
このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していることを決定し、
前記第２のボーレートよりも大きい上位のボーレートを決定し、
この上位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信する
ように構成されている装置。
【請求項５】
請求項２に記載の装置において、前記少なくとも１つのプロセッサは更に、
前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信し、
このデータフレームの受信に応答して、前記ＣＡＮバスに結合されたＣＡＮ装置が前記第２のボーレートを支持していないことを決定し、
前記ＣＡＮコントローラを前記第１のボーレートで動作させる
ように構成されている装置。
【請求項６】
請求項１に記載の装置において、前記少なくとも１つのプロセッサは更に、
第１のタイムアウトが生じたことを決定し、
この第１のタイムアウトに基づいてクライアントモードに切換える
ように構成されている装置。
【請求項７】
請求項６に記載の装置において、前記少なくとも１つのプロセッサは更に、前記ＣＡＮバスを高周波で信号伝達させるバイトのパターンを含む少なくとも１つのデータフレームを、前記ＣＡＮバスを介して送信するように構成されている装置。
【請求項８】
請求項６に記載の装置において、前記少なくとも１つのプロセッサは更に、
前記ＣＡＮバスに結合された装置から、新たなボーレートの少なくとも１つの識別子を含むボーレート変更要求を受信し、
この新たなボーレートが前記ＣＡＮバスにより支持されたか否かを決定し、
この新たなボーレートが前記ＣＡＮバスにより支持されなかった場合に、前記ＣＡＮバスを介して承認否定を送信する
ように構成されている装置。
【請求項９】
メモリと、コントローラエリアネットワーク（ＣＡＮ）バスに結合されたＣＡＮコントローラと、前記ＣＡＮコントローラ及び前記メモリに結合された少なくとも１つのプロセッサとを有するコンピュータを用いてボーレートを選択するコンピュータ実装方法であって、この方法が、
前記ＣＡＮコントローラを第１のボーレートに設定するステップと、
第２のボーレートを決定するステップと、
この第２のボーレートの決定に応答して、前記第２のボーレートの少なくとも識別子を有するボーレート変更要求を、前記ＣＡＮバスを経て送信するステップと
を含むコンピュータ実装方法。
【請求項１０】
請求項９に記載のコンピュータ実装方法が更に、
タイムアウトが経過したことを決定するステップと、
このタイムアウトが経過したことの決定に応答して、ボーレート確認要求を、前記ＣＡＮバスを経て送信するステップと、
前記ＣＡＮコントローラを前記第２のボーレートに設定するステップと
を含むコンピュータ実装方法。
【請求項１１】
請求項１０に記載のコンピュータ実装方法が更に、
前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信するステップと、
このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していないことを決定するステップと、
前記第２のボーレートよりも小さい下位のボーレートを決定するステップと、
この下位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信するステップと
を含むコンピュータ実装方法。
【請求項１２】
請求項１０に記載のコンピュータ実装方法が更に、
前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信するステップと、
このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していることを決定するステップと、
前記第２のボーレートよりも大きい上位のボーレートを決定するステップと、
この上位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信するステップと
を含むコンピュータ実装方法。
【請求項１３】
請求項１０に記載のコンピュータ実装方法が更に、
前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信するステップと、
このデータフレームの受信に応答して、前記ＣＡＮバスに結合されたＣＡＮ装置が前記第２のボーレートを支持していないことを決定するステップと、
前記ＣＡＮコントローラを前記第１のボーレートで動作させるステップと
を含むコンピュータ実装方法。
【請求項１４】
請求項９に記載のコンピュータ実装方法が更に、
第１のタイムアウトが生じたことを決定するステップと、
この第１のタイムアウトに基づいてクライアントモードに切換えるステップと
を含むコンピュータ実装方法。
【請求項１５】
請求項１４に記載のコンピュータ実装方法が更に、前記ＣＡＮバスを高周波で信号伝達させるバイトのパターンを含む少なくとも１つのデータフレームを、前記ＣＡＮバスを介して送信するステップを含むコンピュータ実装方法。
【請求項１６】
請求項１４に記載のコンピュータ実装方法が更に、
新たなボーレートの少なくとも１つの識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して受信するステップと、
この新たなボーレートが前記ＣＡＮコントローラにより支持されたか否かを決定するステップと、
この新たなボーレートが前記ＣＡＮコントローラにより支持されなかった場合に、前記ＣＡＮバスを介して承認否定を送信するステップと
を含むコンピュータ実装方法。
【請求項１７】
コントローラエリアネットワーク（ＣＡＮ）バスに結合された装置に対するボーレートを選択するための指令の列が記憶された非一過性のコンピュータ可読媒体であって、前記指令により、少なくとも１つのプロセッサが、
ＣＡＮコントローラを第１のボーレートに設定し、
第２のボーレートを決定し、
この第２のボーレートの決定に応答して、前記第２のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信する
ようにした非一過性のコンピュータ可読媒体。
【請求項１８】
請求項１７に記載の非一過性のコンピュータ可読媒体において、前記指令の列には、前記少なくとも１つのプロセッサが、
タイムアウトが経過したことを決定し、
このタイムアウトが経過したことの決定に応答して、前記ＣＡＮバスを介してボーレート確認要求を送信し、
前記ＣＡＮコントローラを第２のボーレートに設定する
ようにする指令が含まれている非一過性のコンピュータ可読媒体。
【請求項１９】
請求項１８に記載の非一過性のコンピュータ可読媒体において、前記指令の列には、前記少なくとも１つのプロセッサが、
前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信し、
このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していないことを決定し、
前記第２のボーレートよりも小さい下位のボーレートを決定し、
この下位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信する
ようにする指令が含まれている非一過性のコンピュータ可読媒体。
【請求項２０】
請求項１８に記載の非一過性のコンピュータ可読媒体において、前記指令の列には、前記少なくとも１つのプロセッサが、
前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信し、
このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していることを決定し、
前記第２のボーレートよりも大きい上位のボーレートを決定し、
この上位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信する
ようにする指令が含まれている非一過性のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の技術分野は、一般的にマイクロプロセッサを用いた装置（デバイス）間の通信、特にバス（母線）を介して結合された装置に対する転送ボーレートを自動的に選択するシステム及び方法に関するものである。
【背景技術】
【０００２】
コントローラエリアネットワーク（ＣＡＮ）通信は、マイクロプロセッサを用いた装置間の通信の一方法である。装置は代表的に、ＣＡＮバスに通信可能に結合されたＣＡＮコントローラを有している。他の装置との通信は一般に固定のボーレートで行われている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ボーレートを低くすることにより、最小のエラーで長距離の通信を可能にするが、通信速度が犠牲となる。ボーレートを高くすると、ＣＡＮバスチャネル品質が悪くなっている場合にデータエラーを生じる傾向がある。これらのデータエラーには、ＣＡＮバスを経る全体的なスループット（処理能力）を少なくするフレーミングエラーが含まれるおそれがある。
【課題を解決するための手段】
【０００４】
本発明の幾つかの実施例によれば、装置が提供される。この装置は、メモリと、ＣＡＮバスに結合されたコントローラエリアネットワーク（ＣＡＮ）コントローラと、前記メモリ及びＣＡＮコントローラに結合された少なくとも１つのプロセッサとを有している。ＣＡＮコントローラを第１のボーレートに設定するように構成されている前記の少なくとも１つのプロセッサは、第２のボーレートを決定するとともに、この第２のボーレートの決定に応答して、少なくともこの第２のボーレートの識別子を含むボーレート変更要求を、ＣＡＮバスを介して送信するようにする。
【０００５】
本発明の一例では、前記少なくとも１つのプロセッサは更に、タイムアウト（時間切れ）が経過したことを決定し、このタイムアウトが経過したことの決定に応答して、前記ＣＡＮバスを介してボーレート確認要求を送信し、前記ＣＡＮコントローラを第２のボーレートに設定するように構成した。
【０００６】
本発明の一例では、前記少なくとも１つのプロセッサは更に、前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信し、このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していないことを決定し、前記第２のボーレートよりも小さい下位のボーレートを決定し、この下位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信するように構成した。
【０００７】
本発明の一例では、前記少なくとも１つのプロセッサは更に、前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信し、このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していることを決定し、前記第２のボーレートよりも大きい上位のボーレートを決定し、この上位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信するように構成した。
【０００８】
本発明の一例では、前記少なくとも１つのプロセッサは更に、前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信し、このデータフレームの受信に応答して、前記ＣＡＮバスに結合されたＣＡＮ装置が前記第２のボーレートを支持していないことを決定し、前記ＣＡＮコントローラを前記第１のボーレートで動作させるように構成した。
【０００９】
本発明の一例では、前記少なくとも１つのプロセッサは更に、第１のタイムアウトが生じたことを決定し、この第１のタイムアウトに基づいてクライアントモードに切換えるように構成した。
【００１０】
本発明の一例では、前記少なくとも１つのプロセッサは更に、前記ＣＡＮバスを高周波で信号伝達させるバイトのパターンを含む少なくとも１つのデータフレームを、前記ＣＡＮバスを介して送信するように構成した。
【００１１】
本発明の一例では、前記少なくとも１つのプロセッサは更に、前記ＣＡＮバスに結合された装置から、新たなボーレートの少なくとも１つの識別子を含むボーレート変更要求を受信し、この新たなボーレートが前記ＣＡＮバスにより支持されたか否かを決定し、この新たなボーレートが前記ＣＡＮバスにより支持されなかった場合に、前記ＣＡＮバスを介して承認否定を送信するように構成した。
【００１２】
本発明の一例によれば、コンピュータを用いてボーレートを選択するコンピュータ実装方法を提供する。このコンピュータは、メモリと、コントローラエリアネットワーク（ＣＡＮ）バスに結合されたＣＡＮコントローラと、前記ＣＡＮコントローラ及び前記メモリに結合された少なくとも１つのプロセッサとを有する。この方法は、前記ＣＡＮコントローラを第１のボーレートに設定するステップと、第２のボーレートを決定するステップと、この第２のボーレートの決定に応答して、前記第２のボーレートの少なくとも識別子を有するボーレート変更要求を、前記ＣＡＮバスを経て送信するステップとを具えている。
【００１３】
前記方法は更に、タイムアウトが経過したことを決定するステップと、このタイムアウトが経過したことの決定に応答して、ボーレート確認要求を、前記ＣＡＮバスを経て送信するステップと、前記ＣＡＮコントローラを前記第２のボーレートに設定するステップとを含むようにしうる。
【００１４】
前記方法は更に、前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信するステップと、このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していないことを決定するステップと、前記第２のボーレートよりも小さい下位のボーレートを決定するステップと、この下位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信するステップとを含むようにしうる。
【００１５】
前記方法は更に、前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信するステップと、このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していることを決定するステップと、前記第２のボーレートよりも大きい上位のボーレートを決定するステップと、この上位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信するステップとを含むようにしうる。
【００１６】
前記方法は更に、前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信するステップと、このデータフレームの受信に応答して、前記ＣＡＮバスに結合されたＣＡＮ装置が前記第２のボーレートを支持していないことを決定するステップと、前記ＣＡＮコントローラを前記第１のボーレートで動作させるステップとを含むようにしうる。
【００１７】
本発明の一例では、前記方法は更に、第１のタイムアウトが生じたことを決定するステップと、この第１のタイムアウトに基づいてクライアントモードに切換えるステップと
を具えているようにしうる。この例では、前記方法は更に、前記ＣＡＮバスを高周波で信号伝達させるバイトのパターンを含む少なくとも１つのデータフレームを、前記ＣＡＮバスを介して送信するステップを含むようにしうる。
【００１８】
前記方法は更に、新たなボーレートの少なくとも１つの識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して受信するステップと、この新たなボーレートが前記ＣＡＮコントローラにより支持されたか否かを決定するステップと、この新たなボーレートが前記ＣＡＮコントローラにより支持されなかった場合に、前記ＣＡＮバスを介して承認否定を送信するステップとを含むようにしうる。
【００１９】
本発明の他の例によれば、コントローラエリアネットワーク（ＣＡＮ）バスに結合された装置に対するボーレートを選択するための指令の列が記憶された非一過性のコンピュータ可読媒体を提供する。前記指令により、少なくとも１つのプロセッサが、ＣＡＮコントローラを第１のボーレートに設定し、第２のボーレートを決定し、この第２のボーレートの決定に応答して、前記第２のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信するようにした。
【００２０】
一例では、前記指令の列には、前記少なくとも１つのプロセッサが、タイムアウトが経過したことを決定し、このタイムアウトが経過したことの決定に応答して、前記ＣＡＮバスを介してボーレート確認要求を送信し、前記ＣＡＮコントローラを第２のボーレートに設定するようにする指令が含まれているようにする。
【００２１】
一例では、前記指令の列には、前記少なくとも１つのプロセッサが、前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信し、このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していないことを決定し、前記第２のボーレートよりも小さい下位のボーレートを決定し、この下位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信するようにする指令が含まれているようにする。
【００２２】
一例では、前記指令の列には、前記少なくとも１つのプロセッサが、前記ＣＡＮバスに結合された少なくとも１つの装置からデータフレームを受信し、このデータフレームの受信に応答して、前記ＣＡＮバスが前記ＣＡＮコントローラのエラー件数に基づいて前記第２のボーレートを支持していることを決定し、前記第２のボーレートよりも大きい上位のボーレートを決定し、この上位のボーレートの少なくとも識別子を含むボーレート変更要求を、前記ＣＡＮバスを介して送信するようにする指令が含まれているようにする。
【００２３】
更に、他の態様（アスペクト）、例及びこれらの代表的な態様及び例の利点は以下に詳細に説明する。更に、前述した情報及び後述する詳細な説明は、種々の態様及び例の説明上の実例にすぎず、特許請求の範囲に開示した態様及び例の特徴を理解するための要旨及び構成を提供することを目的とするものである。ここに開示する如何なる例も、ここに開示する目的、目標及び必要性の少なくとも１つと適合する如何なる方法によっても如何なる他の例とも組合せることができ、“例”、“幾つかの例”、“変更例”、“種々の例”、“一例”、“少なくとも１つの例”、“この及び他の例”、等は必ずしも互いに排他的なものではなく、例と関連して説明する特定の特性、構造又は特徴を少なくとも１つの例に含めることができることを表すことを意図するものである。ここでこのような用語が現れることは必ずしも全てが同じ例を参照するものではない。
【図面の簡単な説明】
【００２４】
【図１】図１は、ボーレート自動選択システムの一例を示すブロック線図である。
【図２】図２は、本発明の例に開示する処理及び機能を実行するコンピュータシステムの一例を示すブロック線図である。
【図３】図３は、幾つかの態様及び実施例による装置制御処理の一例を示す流れ図である。
【図４】図４は、幾つかの態様及び実施例による自動ボーレート処理の一例を示す流れ図である。
【図５】図５は、幾つかの態様及び実施例によるデータ転送処理の一例を示す流れ図である。
【図６】図６は、幾つかの態様及び実施例による接続検査処理の一例を示す流れ図である。
【図７】図７は、幾つかの態様及び実施例によるバスマネージャサービス処理の一例を示す流れ図である。
【図８】図８は、幾つかの態様及び実施例によるバスクライアントサービス処理の一例を示す流れ図である。
【発明を実施するための形態】
【００２５】
本発明の少なくとも１つの例の種々の態様を以下に添付図面を参照して説明する。この添付図面は、実際の寸法を描写するものではない。これらの図面は、種々の態様及び例の説明及び更なる理解を提供するために導入されるものであり、本明細書の一部に含まれ且つその一部を構成するものであるが、如何なる特定例の制限を規定することを意図するものではない。これらの図面は、本明細書の図面以外の部分と相俟って、説明し特許請求の範囲に記載した態様及び例の原理及び動作を説明するのに供するものである。これらの図面においては、種々の図面に示すそれぞれ同一の又はほぼ同一の構成要素は同じ符号で示している。図面を明瞭にするため、全ての図において全ての構成要素にラベル表示していない場合がある。
【００２６】
本発明で開示する方法及び装置の例はその適用に当って、以下の記載で説明する又は添付図面に示す構成の細目及び構成要素の配置に限定されるものではない。これらの方法及び装置は、他の例で実施しうるとともに、種々の状態で実行又は処置しうるものである。ここでは特定の実施例は説明の目的で与えるものであり、本発明はこれらの実施例に限定されるものではない。特に、何れか１つの例又はそれよりも多い例と関連して説明した工程、構成要素、素子及び特性は、他の例の何れにおいても同様な役割のものから排除されるべきものであることを意味するものではない。
【００２７】
又、ここで用いる熟語及び用語は説明のためのものであり、これらに限定されるべきものではない。本明細書におけるシステム及び方法の実施例、構成要素、素子又は工程に対する単数形での言及は、複数のものも含むことができる。本明細書における実施例、構成要素、素子又は工程に対する複数形での言及は、単数のものも含むことができる。単数形又は複数形での言及は、目下開示されるシステム若しくは方法、又はこれらの構成要素、工程若しくは素子を限定するものではない。本明細書において、「含む」、「備える」、「有する」、「包含する」、「必要とする」及び当該用語の変形は、これらの後に列挙される項目及び当該項目の均等物を含むとともに付加的な項目を含むことを意図する。「又は」を使用して説明される任意の用語が、説明されたものの１つ、複数及びすべてを指すことができるように、「又は」に対する言及を包括的に解釈することができる。
【００２８】
前述したように、装置は代表的に固定の通信レートでＣＡＮバスを介して通信する。通信距離はボーレートを低速にすることにより最大化しうるが、ボーレートを低速にすることにより装置間の応答時間を遅らせるおそれがある。これとは逆に、ボーレートを高速（例えば、１Mbps）にすることにより、ＣＡＮバスの品質が悪くなっている（例えば、信号反射がある）場合にフレーミングエラーを生じるおそれがある。本発明で開示する幾つかの態様及び実施例には、ＣＡＮバスに結合された装置のボーレートを自動的に調整するシステム及び方法が含まれるものである。
【００２９】
[ボーレート自動選択システム]
ここに開示する種々の例は、１つ以上のコンピュータシステムに関するボーレート自動選択システムを実施するものである。図１は、ボーレート自動選択システム１００の一例を示す。図示するように、ボーレート自動選択システム１００は装置１０４、装置１０６、装置１０８及び装置１１０を含んでいる。図示するように、これらの装置１０４、１０６、１０８及び１１０はＣＡＮコントローラ１１４、１１６、１１８及び１２０をそれぞれ含んでおり、これらＣＡＮコントローラはＣＡＮバス１２２を介して通信するための“バスマネージャ”又は“バスクライアント”として構成されている。少なくとも１つの実施例では、所定の時間で、ＣＡＮバス１２２に結合された１つのみの装置がバスマネージャとして動作する。この実施例では、装置は、バスマネージャが存在しないことをある装置が決定した場合に、バスクライアントとして動作している状態からバスマネージャに動的に切換えるようにすることができる。従って、装置１０４、１０６、１０８及び１１０の何れの１つもバスマネージャ又はバスクライアントとして動作することができる。
【００３０】
一実施例では、装置１０４、１０６、１０８及び１１０の各々を、以下で図２につき更に説明するコンピュータシステム２００のようなコンピュータシステムを用いて実施する。他の実施例では、装置１０４、１０６、１０８及び１１０は計算資源を含むが、主としてコンピュータシステム以外の装置として機能するものである。これらの実施例では、例えば、装置１０４、１０６、１０８及び１１０を無停電電源装置、電力装置（例えば、変圧器、スマートバッテリ及び電力配分ユニット）、センサ、アクチュエータ等とすることができる。
【００３１】
ＣＡＮバス１２２には、如何なる通信ネットワークをも含め、マイクロプロセッサを用いる装置がこの通信ネットワークを介して情報を送受信するようにしうる。このＣＡＮバス１２２は例えば、同じ装置の２つの構成要素間の物理的なデータバスとすることができる。他の例では、ＣＡＮバス１２２を、ISO 11898-1:2003に応じて2つ以上の装置間のＣＡＮ信号伝達（シグナリング）を容易にするように構成された如何なる物理層（例えば、シリアル、イーサネット(登録商標）等）にもすることができる。
【００３２】
図１に示すように、装置１０４は、ソフトウェア処理を介してバスマネージャモードに構成されたＣＡＮコントローラ１１４を含んでいる。このモードでは、装置１０４は、図３〜８で説明する処理のようなコンピュータ実行処理を介するＣＡＮコントローラ１１４のインタフェース接続及び制御を行い得る。一実施例では、装置１０４自体を、ＣＡＮバス１２２の他の装置がバスマネージャとして動作していないことの決定に基づいてバスマネージャとして構成することができる。
【００３３】
装置が一旦バスマネージャとして動作し始めると、この装置はバスマネジメント（バス管理）機能を周期的に実行しうる。一実施例では、装置１０４がキープアライブメッセージを、ＣＡＮバス１２２を介して周期的に送出し、このＣＡＮバス１２２に結合された他の装置（例えば、装置１０６、１０８及び１１０）に、バスマネージャが存在することを指示するようにすることができる。他の実施例では、バスマネージャがＣＡＮバス１２２の通信品質を連続的に監視し、これに応じてボーレートを調整する。
【００３４】
種々の実施例では、装置（例えば、装置１０４、１０６、１０８及び１１０）の起動中に、この装置が“聞き取りのみ（listen only ）”のモードに入り、何れの役割（例えば、バスマネージャ又はバスクライアント）をこの装置が担う必要があるかを決定する。一実施例では、予め決定した期間（例えば、1秒）後にＣＡＮバス１２２を介して何の通信をも受信しない場合には、装置はバスマネージャとして動作するようにする。他の実施例では、バスマネージャがＣＡＮバス１２２に既に存在する場合には、装置がバスクライアントとして動作するようにする。これらの実施例では、ボーレートが装置により識別されるまで聞き取りのみのモードが継続される。この聞き取りのみのモードは、装置によりＣＡＮバス１２２上に導入されるフレーミングエラーの可能性を低減させることができる。少なくとも１つの実施例では、装置自体を最初に可能な最低のボーレート（例えば、６２．５Kb）に構成する。他の実施例では、装置自体を最初に可能な最大のボーレートに構成する。これらの全ての実施例では、装置によりフレーミングエラーの検出に基づいてボーレートの不整合（ミスマッチ）を決定しうる。不整合が決定された場合、装置は次のボーレートに増大又は減少させることができる。有効なデータフレームが一旦受信され、従って、有効なボーレートが設定されると、装置は、バスマネージャからボーレート変更指令（BUAD_RATE_SWITCH）が受信されるまで、この有効なボーレートで動作し続けることができる。
【００３５】
一実施例では、バスクライアントとして構成された装置が、最大パルス又は周波数を形成する全てのデータフレームフィールド内の予め規定したバイトパターンを含むテストデータフレームを、ＣＡＮバス１２２上で送信するようにする。この装置によれば、例えば、0xAAのテストパターンを有するデータフレームを、ＣＡＮバス１２２を介して転送することができる。一実施例では、バスマネージャがテストパターンを有するデータフレームを受信し、ＣＡＮバス通信品質を決定するようにする。バスマネージャは例えば、エラー（0xAA以外のバイト）を有するテストフレームを受信するおそれがある。これらのエラーはＣＡＮバス１２２の劣化の結果によるおそれがある。この場合、バスマネージャは、更なるフレーミングエラーを回避するためにボーレートの変更を開始することができる。
【００３６】
[コンピュータシステム]
図１に関して上述したように、ここで開示する態様及び機能は、１つ以上のコンピュータシステムで達成される専門のハードウェア又はソフトウェアとして実行しうる。現在使用されているコンピュータシステムとしては多くの例のものがある。これらの例には、多くの中で、ネットワークアプライアンス、パーソナルコンピュータ、ワークステーション、メインフレーム、ネットワーク化されたクライアント、サーバ、メディアサーバ、アプリケーションサーバ、データベースサーバ及びウェブサーバが含まれる。コンピュータシステムの他の例には、携帯電話、携帯情報端末（パーソナルデジタルアシスタンス）、タブレットコンピュータ及びラップトップコンピュータのようなモバイル計算装置と、ロードバランサ（負荷分散装置）、ルータ及びスイッチのようなネットワーク装置とを含めることができる。更に、複数の態様を単一のコンピュータシステムに設けるか、又は１つ以上の通信ネットワークに接続された複数のコンピュータシステム間で分散させることができる。
【００３７】
例えば、１つ以上のクライアントコンピュータにサービスを提供するか、又は全体のタスクを分散システムの一部として実行するように構成された１つ以上のコンピュータシステム間で種々の態様及び機能を分散させることができる。更に、種々の機能を実行する1つ以上のサーバシステム間で分散される構成要素を含むクライアントサーバ又は多層システムに関して態様を実行しうる。従って、本発明の例は、特定の如何なるシステム又はシステムの群に関して実行することに限定されるものでもない。更に、態様及び機能は、ソフトウェアとハードウェアとファームウェアとの何れか又はこれらの任意の組合せで実行しうる。従って、態様、処理及び機能は、種々のハードウェア及びソフトウェア構成を用いる方法、工程、システム、システム素子及び構成要素内で実行でき、本発明の例は特定の如何なる分散アーキテクチュア、ネットワーク又は通信プロトコルにも限定されるものではない。
【００３８】
図２を参照するに、この図２には、種々の態様及び機能を実現する分散型コンピュータシステム２００の機能系統図を示してある。図示するように、この分散型コンピュータシステム２００は情報を交換する１つよりも多いコンピュータシステムを有している。特に、この分散型コンピュータシステム２００はコンピュータシステム２０２、２０４及び２０６を有している。図示するように、コンピュータシステム２０２、２０４及び２０６は、通信ネットワーク２０８により相互接続されているとともに、この通信ネットワーク２０８を介してデータを交換しうる。このネットワーク２０８には、コンピュータシステムがデータを交換しうるようにする如何なる通信ネットワークをも含めることができる。ネットワーク２０８を用いてデータを交換するために、コンピュータシステム２０２、２０４及び２０６とネットワーク２０８とは、数ある中で、ＲＳ‐４８５、ＲＳ４２２、ファイバーチャネル、トークンリング、イーサネット（登録商標）、無線イーサネット、ブルートゥース（登録商標）、ＩＰ、ＩＰＶ６、ＴＣＰ／ＩＰ、ＵＤＰ、ＤＴＮ、ＨＴＴＰ、ＦＴＰ、ＳＮＭＰ、ＳＭＳ、ＭＭＳ、ＳＳ７、ＪＳＯＮ、ＳＯＡＰ、ＣＯＲＢＡ、ＲＥＳＴ及びウェブサービスを含む種々の方法、プロトコル及び標準規格を用いることができる。データ転送を安全にするために、コンピュータシステム２０２、２０４及び２０６は、例えば、ＴＬＳ、ＳＳＬ又はＶＰＮを含む種々の安全対策を用いてネットワーク２０８を介してデータを送信することができる。分散型コンピュータシステム２００は、ネットワーク化した３つのコンピュータシステムを示しているが、分散型コンピュータシステム２００はこれに限定されず、何らかの媒体及び通信プロトコルを用いてネットワーク化した如何なる個数のコンピュータシステム及び計算装置をも有することができる。
【００３９】
図２は、コンピュータシステム２０２、２０４及び２０６を有する分散型コンピュータシステム２００の特定例を示している。この図２に示すように、コンピュータシステム２０２はプロセッサ２１０と、メモリ２１２と、バス２１４と、インタフェース２１６と、データ記憶装置２１８とを具えている。ここに開示する態様、機能及び処理の少なくとも幾つかを実行するために、プロセッサ２１０は、一連の指令を実行して操作データをもたらすようにする。このプロセッサ２１０は、プロセッサ、マルチプロセッサ、コントローラ又はマイクロコントローラの如何なる種類のものにもすることができる。幾つかの代表的なプロセッサは、Stellaris ARM Cortex-M3 、Intel Xeon、Itanium 、Core、Celeron 、Pentium 、AMD Opteron 、Sun UltraSPARC、IBM Power5+ 及びＩＢＭのメインフレーム用チップを含む。プロセッサ２１０はバス２１４により、１つ以上のメモリ装置を含む他のシステムの構成要素に接続されている。
【００４０】
メモリ２１２は、コンピュータシステム２０２の動作中にプログラム及びデータを記憶する。従って、このメモリ２１２は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）又はスタティックメモリ（ＳＲＡＭ）のような比較的高性能で、揮発性であるランダムアクセスメモリとすることができる。しかし、このメモリ２１２には、ディスクドライブ又はその他の不揮発性記憶装置のような、データを記憶するための如何なる装置をも含めることができる。ここで開示する機能を実行するために、種々の例によりメモリ２１２を特定化した、ある場合には特異的とした構造に組織化することができる。これらのデータ構造は、特定のデータに対する値及びデータの種類を記憶するための大きさ及び組織化されたものにすることができる。
【００４１】
コンピュータシステム２０２の構成要素は、バス２１４のような相互接続素子により結合されている。バス２１４には１つ以上の物理的バス、例えば、同じ機構内に一体化された構成要素間のバスを含めることができるが、ＩＤＥ、ＳＣＳＩ、ＰＣＩ及びInfiniBandのような専門の又は標準のコンピューティングバス技術を含むシステム素子間の如何なる通信結合体をも含めることができる。従って、バス２１４は、コンピュータシステム２０２の構成要素間で交換すべきデータ及び指示のような情報の通信を可能にする。
【００４２】
コンピュータシステム２０２は、入力装置、出力装置及び入力／出力組合せ装置のような１つ以上のインタフェース装置２１６をも有している。インタフェース装置は入力を受信するか又は出力を生じることができる。特に、出力装置は外部プレゼンテーション用の情報を提供しうる。入力装置は外部情報源から情報を受けることができる。インタフェース装置の例には、キーボード、マウス装置、トラックボール、マイクロホン、タッチスクリーン、印刷装置、ディスプレイスクリーン、スピーカ、ネットワークインタフェースカード、等が含まれる。インタフェース装置は、コンピュータシステム２０２が情報を交換するとともにユーザ及びその他のシステムのような外部実体（エンティティ）と通信するようにする。
【００４３】
データ記憶装置２１８は、プロセッサ２１０により実行されるプログラム又はその他のオブジェクトを規定する指令を記憶するコンピュータ読取及び書込可能な不揮発性（非一過性）データ記憶媒体を含む。このデータ記憶装置２１８には、記憶媒体に記録されておりプログラムの実行中にプロセッサ２１０により処理される情報を含めることもできる。より具体的には、特に記憶スペースを節約するか又はデータ交換性能を高めるように構成した１つ以上のデータ構造内に情報を記憶させることができる。指令は符号化信号として永続的に記憶させることができ、これら指令によりプロセッサ２１０がここに開示する如何なる機能をも実行するようにすることができる。記憶媒体は例えば、数ある中で光ディスク、磁気ディスク又はフラッシュメモリとすることができる。動作に際しては、プロセッサ２１０又は他のある種のコントローラによりデータを不揮発性記憶媒体からメモリ２１２のような他のメモリ内に読込み、これにより、データ記憶装置２１８内に設けられた記憶媒体が達成するよりも速く、プロセッサ２１０により情報にアクセスするようにする。メモリはデータ記憶装置２１８内に又はメモリ２１２内に配置しうるが、プロセッサ２１０はメモリ内のデータを処理し、次いで処理が終了した後にデータ記憶装置２１８と関連する記憶媒体にこのデータをコピーする。種々の構成要素により記憶媒体と他のメモリ素子との間のデータの移動を管理することができるが、本発明の例は特定のデータ管理用の構成要素に限定されるものではない。更に、本発明の例は特定のメモリシステム又はデータ記憶システムに限定されるものではない。
【００４４】
コンピュータシステム２０２は、種々の態様及び機能を実行しうる一種類のコンピュータシステムとして例示しているが、態様及び機能は図２に示すようなコンピュータシステム２０２で実行されるものに限定されるものではない。種々の態様及び機能は、図２に示すものとは異なるアーキテクチュア又は構成要素を有する１つ以上のコンピュータで実行するようにしうる。例えば、コンピュータシステム２０２は、ここに開示する特定の動作を実行するように適合させた特定用途向け集積回路（ＡＳＩＣ）のような、特別にプログラミングした特定の目的のハードウェアを有するようにしうる。しかしながら、モトローラ（Motorola）社のPowerPC （登録商標）プロセッサ及び幾つかの専門の計算装置により専用のハードウェア及びオペレーティングシステムを起動するようにしたＭＡＣ ＯＳ システム（System）Ｘを起動するグリッド状の幾つかの汎用の計算装置を用いる他の例により上述したのと同じ機能を実行しうる。
【００４５】
コンピュータシステム２０２は、このコンピュータシステム２０２内に設けられたハードウェア素子の少なくとも一部を管理するオペレーティングシステムを含むコンピュータシステムとすることができる。幾つかの例では、プロセッサ２１０のようなプロセッサ又はコントローラがオペレーティングシステムを実行するようにする。実行され得る特定のオペレーティングシステムの例には、マイクリウム社（Micrium, Inc. ）から入手しうるMicroC/OS-IIや、マイクロソフト社（Microsoft Corporation ）から入手しうるウインドウズ（登録商標）ＮＴ、ウインドウズ２０００（ウインドウズＭＥ）、ウインドウズＸＰ、ウインドウズビスタ又はウインドウズ７オペレーティングシステムのようなウインドウズベースのオペレーティングシステムや、アップルコンピュータ社（Apple Computer）から入手しうるＭＡＣ ＯＳ システムＸオペレーティングシステムや、レッドハット社（Red Hat Inc.）から入手しうる多くのリナックス（Linux ）（登録商標）ベースのオペレーティングシステム提供の１つ、例えば、エンタープライス（Enterprise）リナックスオペレーティングシステムや、サンマイクロシステムズ社（Sun Microsystems）から入手しうるソラリス（Solaris ）オペレーティングシステムや、種々の情報源から入手しうるユニックス（ＵＮＩＸ；登録商標）オペレーティングシステムが含まれる。他の多くのオペレーティングシステムも用いることができ、本発明の例は如何なる特定のオペレーティングシステムにも限定されるものではない。
【００４６】
プロセッサ２１０とオペレーティングシステムとが相俟って、アプリケーションプログラムが高水準言語（プログラミング言語）で書かれているコンピュータプラットホームを規定する。これらのコンポーネントアプリケーションは、通信プロトコル、例えば、ＴＣＰ／ＩＰを用いるインターネット（登録商標）のような通信ネットワークを介して通信する実行可能な、中間バイトコード、又は解釈コードとすることができる。同様にして、態様は、.NET、SmallTalk 、Java（登録商標）、Ｃ++、Ada 又はＣ＃（Ｃシャープ）のようなオブジェクト指向プログラム言語を用いて実行しうる。他のオブジェクト指向プログラム言語も用いることができる。或いはまた、関数型、スクリプト又は論理プログラミング言語を用いることができる。
【００４７】
更に、種々の態様及び機能は、非プログラミング環境で、例えば、ブラウザのプログラムの窓内で見た際にグラフィカルユーザインタフェースの態様をレンダリングするか又は他の機能を実行するＨＴＭＬ、ＸＭＬ又はその他のフォーマットで作成された文書で実行しうる。更に、種々の例を、プログラミングされた要素又はプログラミングされていない要素、或いはこれらの組合せとして実行しうる。例えば、ＨＴＭＬを用いてウエブページを実行できるとともに、このウエブページ内から呼び出されるデータオブジェクトをＣ++で書き表すことができる。従って、本発明の例は、特定のプログラミング言語に限定されるものではなく、適切な如何なるプログラミング言語をも用いることができる。従って、ここに開示する機能要素には、種々の要素、例えば、ここに開示する機能を実行するように構成された専用ハードウェア、実行可能コード、データ構造又はオブジェクトを含めることができる。
【００４８】
幾つかの例では、ここに開示する構成要素によれば、これらの構成要素により実行される機能に影響を及ぼすパラメータを読み出すことができる。これらのパラメータは、（ＲＡＭのような）揮発性メモリ又は（磁気ハードドライブのような）不揮発性メモリを含む適切な如何なる形態のメモリ内にも物理的に記憶させることができる。更に、これらのパラメータは、（ユーザモードアプリケーションにより規定されたファイル又はデータベースのような）正当なデータ構造内に又は（オペレーティングシステムにより規定されたアプリケーションレジストリのような）共有データ構造内に論理的に記憶させることができる。更に、本発明の幾つかの例により、外部実体がパラメータを変更し、これにより構成要素の動作を設定するようにするシステム及びユーザの双方のインタフェースを提供するようにする。
【００４９】
[自動ボーレート選択処理]
図３は、装置制御処理３００の一例を示す。この処理３００は工程３０２で開始する。
【００５０】
工程３０４では、装置（例えば、図１の装置１０４、１０６、１０８及び１１０）が起動され、初期化される。一実施例では、初期化に、ＣＡＮコントローラが利用できるようにすることを決定することを含める。工程３０６では、装置を、図１のＣＡＮバス１２２のようなＣＡＮバスに通信可能に結合させる。一実施例では、ＣＡＮ分離リレーを閉じることにより装置をＣＡＮバスに通信可能に結合させる。図１につき上述したように、装置を初期的に“聞き取りのみ”のモードで動作させて、ＣＡＮバスにおいてフレーミングエラーが導入されるのを回避するようにしうる。
【００５１】
工程３０８では、以下で図４につき説明する自動ボーレート処理４００のような自動ボーレート処理を実行する。一実施例では、有効なボーレートが成立されるまで自動ボーレート処理により装置のボーレートを増大するように調整しうる。工程３１０では、装置が有効なボーレートを決定し損なうと（No）、処理が工程３０８に戻るようにしうる。装置が有効なボーレートを決定すると（Yes ）、処理は工程３１２に進む。
【００５２】
工程３１２では、装置がバスマネージャとして動作するべきか又はバスクライエントとして動作するべきかをこの装置により決定する。装置がバスマネージャとして動作している場合には、処理は工程３２２に進む。装置がバスマネージャとして動作していない場合には、処理は工程３１４に進む。
【００５３】
工程３１４では、装置がパブリッシュデバイス要求（PUBLISH_DEVICE）を、ＣＡＮバスを介して送信する。工程３１６では、装置により、予め決定した期間が経過する前にキープライブデータフレームが受信されたか（Yes ）否か（No）を決定する。一実施例では、ランダムな期間（例えば、2500ms〜5000ms）を待つように装置を構成しうる。この実施例では、ランダムな期間を待つ各装置は、２つの装置がバスマネージャとして動作する状態に同時に切換わらないことを確実にできる。キープアライブデータフレームがバスマネージャから受信される前にランダムな期間が経過した場合には、処理は工程３１８に進む。ランダムな期間の経過前にキープアライブデータフレームがバスマネージャから受信された場合には、処理は工程３２０に進む。工程３１８では、装置がIsBusManager（イズバスマネージャ）の状態フラグを１に設定でき、次いで処理を工程３１２に戻す。工程３２０では、装置が、図８のバスクライアントサービス処理８００のようなバスクライアントサービスを実行し、次いで工程３１２に戻ることができる。
【００５４】
少なくとも１つの実施例では、IsBusManagerの状態フラグが１に設定されたことにより処理が工程３１２に戻るようにする。例えば、工程３１６において装置がキープアライブデータフレームをバスマネージャから受信する前にランダムな期間が経過するようにしうる。この例では、工程３１６において処理がIsBusManagerの状態フラグを１に設定する。このIsBusManagerの状態フラグが１に設定されると、装置はバスマネージャとして動作する。
【００５５】
工程３２２では、ウオッチドッグタイマにおいて、バスマネージャサービスが予め決定された期間よりも多くの間待機状態にあったか否かが調査される。一実施例では、バスマネージャサービスが例外に遭遇するか、又はさもなければ適切に実行し損なう場合には、ウオッチドッグタイマが、バスマネージャサービスはもはや有効でないことを決定し、適切な対応を講じるようにする。ウオッチドッグタイマが終了されると、処理は工程３２４に進む。ウオッチドッグタイマが終了されないと、処理は工程３２６に進む。
【００５６】
工程３２４では、処理によりIsBusManagerの状態フラグを０に設定し、この処理が工程３１２に戻る。IsBusManagerの状態フラグが０に設定されると、装置はバスクライアントとして動作する。
【００５７】
工程３２６では、ウオッチドッグタイマがリセットされ、処理が工程３２８に進む。工程３２８では、処理により図７のバスマネージャサービス処理７００のようなバスマネージャサービス処理を実行し、次いで処理が工程３１２に戻る。
【００５８】
[自動ボーレート処理]
図３につき上述したように、自動ボーレート処理を実行するように装置を構成することができる。自動ボーレート処理４００の一例を図４に示す。この処理４００は工程４０２で開始される。
【００５９】
装置は工程４０４で“聞き取りのみ”のモードに入る。一実施例では、装置はＣＡＮコントローラのトランシーバ出力ドライバを無効にすることにより聞き取りのみのモードに入る。この聞き取りのみのモードでは、装置がＣＡＮバスを介してデータを受信するが、データを送信しない（例えば、フレーミングエラーの導入を回避する）。
【００６０】
工程４０６では、装置が可能な最低のボーレート（例えば、６２．５Kbps）を選択する。又、工程４０６では、装置がIsBusManagerの状態フラグを１に設定する。工程４０８では、装置が、図１のＣＡＮバス１２２のようなＣＡＮバスにおいて他の装置（例えば、図１の装置１０４、１０６、１０８及び１１０）から送信されたデータをリッスン（listen）する。工程４１０では、データが受信されると、他の装置（例えば、バスマネージャ）がバス上に存在し、処理が工程４１２に進む。データが受信されないと、ＣＡＮバス上に他の装置が存在しないか、又はバスマネージャとして動作する装置が存在せず、処理は工程４３４に進む。
【００６１】
工程４１２では、装置がIsBusManagerの状態フラグを０に設定する。工程４１４では、フレーミングエラーが検出されると、ボーレートが不整合となっているおそれがある。フレーミングエラーが検出されると、処理は工程４１６に進む。フレーミングエラーが検出されないと、処理は工程４３０に進む。工程４３０では、装置が、後に更に説明する図６の接続検査処理６００のような接続検査処理を実行しうる。接続検査処理が成功である場合には、処理が工程４３２に進み、成功コードのリターン処理を終了させる。接続検査処理が失敗すると、処理が工程４３２に進み、失敗コードのリターン処理を終了させる。成功コード及び失敗コードは、図３の処理３００の工程３１０におけるような処理により利用して、有効なボーレートが装置に対して決定されたか否かを決定するようにしうる。
【００６２】
工程４１６では、装置によりＣＡＮコントローラをリセットしうる。工程４１８では、装置により、予め決定した回数の再試行（リトライ）が実行されたか否かを決定しうる。例えば、装置は、異なるボーレートに変更する前にボーレートが複数回（例えば、３回）有効であることを検査することができる。上述した再試行の回数を超えた場合、処理は工程４２０に進む。上述した再試行の回数を超えない場合には、処理は工程４３０に進む。
【００６３】
工程４２０では、装置により、全てのボーレートが試みられたか否かを決定する。全てのボーレートが試みられた場合には、処理は工程４２４に進む。全てのボーレートが試みられなかった場合には、処理は工程４２２に進む。
【００６４】
工程４２２では、次のボーレートが選択され、処理が工程４０８に戻る。工程４２４において、ＣＡＮバスを介して有効ボーレートを成立させるための再試行の回数（例えば、３回）が予め決定した再試行総数を超える場合には、処理は工程４２６において終了され、失敗コードを戻す。この失敗コードは図３の処理３００の工程３１０におけるような処理により利用して、有効ボーレートが装置に対して設定されなかったことを決定することができる。再試行の回数が予め決定した再試行総数を超えなかった場合には、処理は工程４０６に戻る。
【００６５】
工程４１０に戻るに、ＣＡＮバスを介してデータが受信されない場合には、処理が工程４３４に進む。この工程４３４では、タイマが終了したか（時間が経過したか）否か又はForceNegotiation（フォースネゴシェーション）の状態フラグが１に設定されたか否かを決定する。一実施例では、タイマが終了した後までデータが受信されない場合には、装置は、他の装置がＣＡＮバスに通信可能に結合されていないことを決定しうる。この実施例では、処理が工程４３６に進む。タイマが終了せず且つForceNegotiationの状態フラグが１に設定されていない場合には、処理が工程４０８に戻る。
【００６６】
工程４３６では、IsBusManagerの状態フラグ又はForceNegotiationの状態フラグが１に設定されているか否かを調査する。どちらかの状態フラグが１に設定されている場合には、処理が工程４４２に進む。何れの状態フラグも１に設定されていない場合には、処理は工程４３８に進む。
【００６７】
工程４３８では、再試行総数が予め決定した値（例えば、３）を超えると、処理は工程４４０に進む。再試行総数が予め決定した値を超えない場合には、処理は工程４０８に進む。工程４４０では、ForceNegotiationのフラグが１に設定され、処理が工程４０８に戻る。
【００６８】
工程４４２では、ForceNegotiationの状態フラグを消去（例えば、０に設定）し、再試行カウンタを消去し、タイマをリセットする。工程４４４では、処理が、以下で説明する図５のデータ転送処理５００のようなデータ転送処理を実行する。一実施例では、このデータ転送処理によりキープアライブデータフレームを送信し、このキープアライブデータフレームがＣＡＮバス上の他の装置により承認（アクノリッジメント）されたか否かを決定する。このデータ転送処理が終了した後、装置は聞き取りのみのモードに戻るように切換り、工程４０８に戻る。
【００６９】
[データ転送処理]
図４につき上述したように、装置はデータ転送処理を実行してキープアライブデータフレームを転送する。図５はデータ転送処理５００の一例を示す。この処理５００は工程５０２で開始される。
【００７０】
工程５０４では、装置がそのＣＡＮコントローラの送信機を有効にする。工程５０６では、装置がＣＡＮバスを介してキープアライブデータフレームを送信する。工程５０８では、装置により、図１のＣＡＮバス１２２のようなＣＡＮバスに通信可能に結合された１つ以上の装置（例えば、装置１０４、１０６、１０８及び１１０）から承認を受けたか否かを決定する。承認を受けていない場合には、処理は工程５１０に進む。承認を受けた場合には、処理は工程５１４に進む。
【００７１】
工程５１０では、装置がフレーム待ちタイマを調査する。フレーム待ちタイマが予め決定した期間（例えば、１００ms）を超えない場合には、処理は工程５０８に戻る。フレーム待ちタイマが予め決定した期間を過ぎると、処理は工程５１２で終了し、失敗コードを戻す。
【００７２】
工程５１４では、IsBusManagerの状態フラグを１に設定する。工程５１６では、装置によりＣＡＮコントローラの送信機を無効にする（例えば、聞き取りのみのモードにする）。工程５１８では、処理が終了し、成功コードを戻す。
【００７３】
[接続検査処理]
図４につき上述したように、装置は、テストデータフレーム（例えば、全てのデータフレームフィールドにおけるテストデータパターン0xAA）を送信又は受信することにより、成立されたボーレートを検査する接続検査処理を実行しうる。図６は、接続検査処理６００の一例を示す。この処理６００は工程６０２で開始される。この工程６０２においては、処理により、装置がバスマネージャとして又はバスクライアントとして動作しているか否かを決定する。装置がバスマネージャ（例えば、IsBusManager＝１）として動作している場合には、処理は工程６０４に進む。装置がバスクライアント（例えば、IsBusManager＝０）として動作している場合には、処理は工程６１６に進む。
【００７４】
工程６０４では、ＣＡＮバスを介して受信されるデータフレームをリッスンする。工程６０６では、データフレームが工程６０４において受信される前に、予め決定した期間が経過したか否かを決定するために受信タイムアウトを調査する。この受信タイムアウトが経過した場合には、処理が工程６０８に進む。この受信タイムアウトが経過していない場合には、処理が工程６１０に進む。
【００７５】
工程６０８では、処理により、上述した図４の自動ボーレート処理４００のような自動ボーレート処理を実行する。工程６１４において、処理が終了する。
【００７６】
工程６１０において、装置がデータフレームを受信しなかった場合、処理は工程６０４に戻り、受信タイムアウトが過ぎるまでデータフレームをリッスンし続ける。装置がデータフレームを受信した場合、処理は工程６１２に進む。装置がデータフレームを受信しなかった場合、処理は工程６０４に戻る。
【００７７】
工程６１２では、工程６１０で受信したデータフレームが検査される。一実施例では、この検査にテストデータパターン（例えば、0xAA）に対する調査を含めることができる。この実施例では、データフレームが（フレーミングエラーの為に）テストパターンを有さない場合には、装置により、ＣＡＮバスの劣化が生じたことを決定しうる。工程６１４において処理が終了する。
【００７８】
工程６０２に戻って説明するに、装置により、バスクライアントモードで動作している（すなわち、IsBusManager＝０である）ことを決定すると、処理が工程６１６に進む。この工程６１６では、装置が、テストデータパターンを含む多数のデータフレームを送信しうる。例えば、0xAAのデータパターンを有するデータフレームを装置によりＣＡＮバスを介して送信しうる。工程６１８では、装置により、データフレームの全てが、ＣＡＮバスに通信可能に結合された他の装置（例えば、バスマネージャ）により承認されたか否かを確かめる。全てのデータフレームが承認された場合には、処理が工程６１４で終了される。全てよりも少ないデータフレームが承認された場合には、処理が工程６２０に進む。
【００７９】
工程６２０では、全ての承認を受ける前に、予め決定した期間が経過したか否かを決定するために待ちのタイムアウトを調査する。待ちのタイムアウトが経過していない場合には、処理は工程６２２に進む。待ちのタイムアウトが経過した場合には、処理は工程６０８に進む。
【００８０】
工程６２２では、処理は工程６１６で送られたデータフレームの承認を待ち続ける。データフレームの承認を待つのに続いて処理が工程６１８に戻る。
【００８１】
工程６０８において、処理は、上述した図４の自動ボーレート処理４００のような自動ボーレート処理を実行する。工程６１４において処理が終了する。
【００８２】
[バスマネージャサービス処理]
図３につき前述したように、装置は、この装置が現在バスマネージャとして動作している場合に、バスマネージャサービスを実行しうる。図７はバスマネージャサービス７００の一例を示している。この処理７００は工程７０２で開始する。
【００８３】
工程７０２では、装置により、図１のＣＡＮバス１２２のようなＣＡＮバスが予め決定した期間（例えば、１２５ms）の間待機状態にあったか否かを調査する。ＣＡＮバスが予め決定した期間の間待機状態にあった場合には、処理が工程７０４に進む。ＣＡＮバスが予め決定した期間の間待機状態になかった場合には、処理が工程７０８に進む。
【００８４】
工程７０４では、装置がＣＡＮバスを介してキープアライブデータフレームを送信する。工程７０６において、処理が終了する。
【００８５】
工程７０８では、処理によりＣＡＮバス調査を実行しうる。装置により、最後のＣＡＮバス調査が最近に（例えば、１秒前よりも後に）実行されたことを決定した場合には、処理が工程７０６で終了される。装置により、最後のＣＡＮバス調査が最近に実行されなかったことを決定した場合には、処理が工程７１０に進む。
【００８６】
工程７１０では、装置により、ＣＡＮバスがアクセス可能であるか否かを決定するとともに、ＣＡＮバスの品質を決定する。一実施例では、装置によりＣＡＮバスの状態を決定しうる。例えば、装置のＣＡＮコントローラはBUS_PASSIVE （聞き取りのみ）のモード又はBUS_OFF （使用不可能）モードにおけるものとすることができる。装置によりＣＡＮバスが有効（アクティブ）でないことを決定すると、処理は工程７１２に進みその後工程７１６に進み、ＣＡＮコントローラをリセットし且つより低いボーレートを選択する。少なくとも１つの実施例では、装置により工程７１０においてＣＡＮバスの品質を決定することもできる。この実施例では、装置が受信／送信エラーの件数に対してこの装置のＣＡＮコントローラに質問することができる。エラーの件数が予め決定した数（例えば、９６）を超える場合には、処理が工程７１２に進む。エラーの件数が予め決定した数を超えない場合には（例えば、ＣＡＮバス品質が良好である場合には）、処理は工程７１４に進む。
【００８７】
工程７１２では、装置がそのＣＡＮコントローラをリセットし、（エラーの件数に含まれる）全てのカウンタを消去する。工程７１６では、より低いボーレートを選択でき、処理が工程７２０に進む。
【００８８】
工程７１４では、装置の現在のボーレートが、支持された最大のボーレートである場合には、処理は工程７０６で終了する。装置の現在のボーレートが、支持された最大のボーレートでない場合には、処理は工程７１８に進む。工程７１８においては、装置が次の最大のボーレートを選択し、処理が工程７２０に進む。
【００８９】
工程７２０においては、装置が、工程７１６又は工程７１８で選択された新たなボーレートの識別子を含むボーレート変更要求（BAUD_RATE_SWITCH ）を、ＣＡＮバスを介して送信する。
【００９０】
工程７２２では、装置がＣＡＮバスに結合された装置（例えば、図１の装置１０４、１０６、１０８及び１１０）からの承認否定（例えば、CANCEL_SWITCH 、PUBLISH_DEVICE）をリッスンする。工程７２４では、承認否定を受信しない場合に、装置は工程７２６に進む。承認否定を受信した場合には、装置はボーレートを変更する試みを放棄しうる。一実施例では、装置は、ある装置が新たなボーレートを支持し得ない場合に、キャンセルスイッチ応答を受信するようにする。他の実施例では、装置は、新たな装置がＣＡＮバスに加えられているか、又はある装置がＣＡＮバスに対するボーレートを成立させようとしているか、或いはこれらの双方が行なわれており、従って、新たな装置がオンライン状態になるまで新たなボーレートへの変更を遅延させる必要があるようにすることを表すパブリッシュデバイス要求（PUBLISH_DEVICE）を受信する。承認否定応答を受信した場合には、装置はボーレートを変更する試みを放棄し、処理は工程７０６において終了する。
【００９１】
工程７２６では、装置は、ボーレート変更要求（BAUD_RATE_SWITCH ）に応答するための予め決定した期間（例えば、５秒）を待つ。予め決定した期間が経過していない場合には、処理は工程７２２に戻り、応答をリッスンし続ける。予め決定した期間が経過した場合には、処理は工程７２８に進む。この工程７２８では、装置がボーレート変更確認要求（BAUD_RATE_SWITCH_CONFIRM）を送信する。一実施例では、ボーレート変更確認要求を受信する装置がこれら装置のＣＡＮコントローラのボーレートを新たなボーレートに設定する。工程７３０では、装置がそのＣＡＮコントローラを、工程７１６又は工程７１８で識別された新たなボーレートにリセット及び初期化する。工程７３２では、装置により、上述した図６の接続検査処理のような接続検査処理を実行し、処理は工程７０６で終了する。
【００９２】
[バスクライアントサービス処理]
図３につき上述したように、装置が現在バスクライアントとして動作している場合に、この装置はバスクライアントサービス処理を実行しうる。図８はバスクライアントサービス処理８００の一例を示している。この処理８００は工程８０２で開始する。
【００９３】
工程８０２では、図１のＣＡＮバス１２２のようなＣＡＮバスを介してバスマネージャからの要求（例えば、BAUD_RATE_SWITCH 、BAUD_RATE_SWITCH_CONFIRM、等）をリッスンする。
【００９４】
工程８０４において、ボーレート変更確認要求が受信された場合に、処理は工程８０６に進む。ボーレート変更確認要求が受信されない場合には、処理は工程８１８に進む。
【００９５】
工程８０６では、装置がSwitchFlagの状態フラグを調査する。このSwitchFlagの状態フラグが１である場合には、処理が工程８１０に進む。このSwitchFlagの状態フラグが（例えば、新たなボーレートに対する不適合の為に）０である場合には、処理が工程８１２に進む。
【００９６】
工程８１０では、装置は、以下で更に説明するように工程８１８において前に受信したボーレート変更要求で識別された新たなボーレートを設定する。工程８１６において、処理は終了する。
【００９７】
工程８１２では、装置によりそのＣＡＮコントローラをリセットする。工程８１４では、処理により、上述した図４の自動ボーレート処理４００のような自動ボーレート処理を実行する。工程８１６においてこの処理が終了する。
【００９８】
工程８０４に戻るに、受信した要求がボーレート変更確認要求でない場合には、処理は工程８１８に進む。この工程８１８において、受信した要求がボーレート変更要求である場合には、処理は工程８２０に進む。受信した要求がボーレート変更でない場合には、処理は工程８２４に進む。
【００９９】
工程８２０では、ボーレート変更要求で識別された新たなボーレートが装置のＣＡＮコントローラにより支持された場合には、処理が工程８２０に進み、SwitchFlagの状態フラグを１に設定する。新たなボーレートが装置のＣＡＮコントローラにより支持されない場合には、処理によりSwitchFlagの状態フラグを０に設定する。工程８１６でこの処理が終了する。
【０１００】
工程８２４では、装置が送信／受信エラーの件数に対してこの装置のＣＡＮコントローラに質問する。エラーの件数が予め決定した数（例えば、９６）より少ない場合には、処理は工程８１６で終了する。エラーの件数が予め決定した数を超える場合には、処理は工程８２６に進む。この工程８２６では、装置により、そのＣＡＮコントローラがBUS_OFF 又はERROR_PASSIVE モードにあるかを調査する。このＣＡＮコントローラがBUS_OFF 又はERROR_PASSIVE モードにある場合には、装置は正しい処置（例えば、そのＣＡＮコントローラをBUS_ACTIVEに設定する処置）をとり、処理は工程８２８に進む。このＣＡＮコントローラがBUS_OFF 又はERROR_PASSIVE モードにない場合には、処理は工程８３２に進む。工程８２８では、装置はそのＣＡＮコントローラをリセットする。工程８３０では、処理は、上述した図４の自動ボーレート処理４００のような自動ボーレート処理を実行する。
【０１０１】
工程８３２では、装置により、バスの品質が低いことを表しているデータフレームを、ＣＡＮバスを介して送信する。一実施例では、バスマネージャとして動作している装置（例えば、図１の装置１０４、１０６、１０８及び１１０）がデータフレームを受信し、これに応じてボーレートを調整する。工程８１６で処理が終了する。
【０１０２】
処理３００〜８００の各々は、特定の実施例での１つの特定の工程列を示している。これらの処理に含まれる工程は、特にここに開示したように構成した１つ以上のコンピュータシステム又は装置（連続可能な電源、センサ、等）により或いはこれらを用いることにより実行しうる。幾つかの工程は任意的なものであり、これら自体を１つ以上の実施例に従って省略することができる。更に、ここに開示した実施例の範囲を逸脱することなく、工程の順序を変えるか又は他の工程を加えることができる。更に、上述したように、少なくとも１つの実施例において、工程を、特別に構成した特定の機構、すなわちここに開示した例及び実施例に応じて構成した自動ボーレート選択システムで実行する。
【０１０３】
ここに開示した実施例は、種々の通信技術及びプロトコルと関連させて用いることができる。例えば、ある実施例は、特に、MODBUS、コモンインダストリアルプロトコル（共通産業プロトコル）及びBACnetを用いて通信する。
【０１０４】
従って、少なくとも１つの例の幾つかの態様を説明したが、種々の変形、変更及び改善が当業者にとって容易に達成されること明らかである。例えば、ここに開示した例を他の状況で用いることもできる。このような変形、変更及び改善は本発明の一部となるものであり、ここに開示した例の範囲内となるものである。従って、前述した説明及び図面は例示にすぎないものである。
【図１】
2017507534.tif 000003
【図２】
2017507534.tif 000004
【図３】
2017507534.tif 000005
【図４】
2017507534.tif 000006
【図５】
2017507534.tif 000007
【図６】
2017507534.tif 000008
【図７】
2017507534.tif 000009
【図８】
2017507534.tif 000010
【国際調査報告】
2017507534.tif 000011