(57)【要約】【課題】バス及びバスに接続される機器の少なくともいずれかが故障しているか否かを、簡易な構成のバスドライバによって判定する。【解決手段】ドライバ２ｃは、Ａ１００のアクションによりバスリセット割込みを受け入れてバスの初期化を開始した後に初期化完了割り込みを受け入れない場合、アプリケーション１６からの依頼回数が最大依頼回数よりも多くなるまで、バスが初期化完了待ちの状態であると判定し続ける。したがって、ドライバ２ｃは、アプリケーション１６からＡ１０８のアクションによって送信再依頼を受け入れても、バスが初期化完了待ちの状態であることを示すエラーをアプリケーション１６に対して出力する。そして、ドライバ２ｃは、アクション１２０（Ａ１２０）により依頼回数が最大依頼回数よりも多くなると、アクション１３０（Ａ１３０）としてハードウェア故障を示すエラーをアプリケーション１６に対して出力する。【選択図】図１１
2010055242.tif 000002
【特許請求の範囲】
【請求項１】
バスに対する複数の機器の接続状態の変化を検出する検出手段と、
この検出手段の検出結果に基づいて、バスを初期化する初期化手段と、
この初期化手段がバスを初期化した後に、バスの使用の可否を決定する決定手段と、
前記検出手段が複数の機器の接続状態の変化を最後に検出した後に生じる予め定められた事象を計数する計数手段と、
この計数手段の計数結果に基づいて、バス及び複数の機器の少なくともいずれかが故障しているか否かを判定する故障判定手段と、
を有するバスシステム。
【請求項２】
前記計数手段は、
データの送信要求を受けた回数を計数する
請求項１記載のバスシステム。
【請求項３】
前記計数手段は、
前記検出手段が複数の機器の接続状態の変化を最後に検出した後の時間経過を計数する
請求項１記載のバスシステム。
【請求項４】
前記故障判定手段の判定結果を出力する判定結果出力手段を
さらに有する請求項１乃至３いずれか記載のバスシステム。
【請求項５】
複数の機器と、
前記複数の機器を接続するバスと、
このバスに対する前記複数の機器の接続状態の変化を検出する検出手段と、
この検出手段の検出結果に基づいて、前記バスを初期化する初期化手段と、
この初期化手段が前記バスを初期化した後に、前記バスの使用の可否を決定する決定手段と、
前記検出手段が前記複数の機器の接続状態の変化を最後に検出した後に生じる予め定められた事象を計数する計数手段と、
この計数手段の計数結果に基づいて、前記バス及び前記複数の機器の少なくともいずれかが故障しているか否かを判定する故障判定手段と、
を有する機器システム。
【請求項６】
バスに対する複数の機器の接続状態の変化を検出するステップと、
バスに対する複数の機器の接続状態の変化を検出した場合に、バスを初期化するステップと、
バスを初期化した後に、バスの使用の可否を決定するステップと、
バスに対する複数の機器の接続状態の変化を最後に検出した後に生じる予め定められた事象を計数するステップと、
事象の係数結果に基づいて、バス及び複数の機器の少なくともいずれかが故障しているか否かを判定するステップと、
をコンピュータに実行させるバスドライバプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスシステム、機器システム及びバスドライバプログラムに関するものである。
【背景技術】
【０００２】
特許文献１は、ディジタルバスのリセットがかかってからディジタルバスの初期化作業が完了するまでの期間に、ディジタルバスに流れる子ノードから親ノードへの通知を示す信号の受け取りの有無を検出することによりディジタルバスの故障診断を行うディジタルバス故障検出装置を開示する。また、特許文献２は、接続手続きに先立って自己診断モードが成立するときに自装置の自己診断処理を実行し、その診断結果に基づいて自装置に異常がある場合にデータ転送制御回路の接続手続きを実行しないインタフェイス装置を開示する。
【０００３】
【特許文献１】特開平１０−２２４３８４号公報
【特許文献２】特開２００１−２８２５６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、バス及びバスに接続される機器の少なくともいずれかが故障しているか否かを、簡易な構成のバスドライバによって判定することができるバスシステム、機器システム及びバスドライバプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、請求項１に係る本発明は、バスに対する複数の機器の接続状態の変化を検出する検出手段と、この検出手段の検出結果に基づいて、バスを初期化する初期化手段と、この初期化手段がバスを初期化した後に、バスの使用の可否を決定する決定手段と、前記検出手段が複数の機器の接続状態の変化を最後に検出した後に生じる予め定められた事象を計数する計数手段と、この計数手段の計数結果に基づいて、バス及び複数の機器の少なくともいずれかが故障しているか否かを判定する故障判定手段と、を有するバスシステムである。
【０００６】
請求項２に係る本発明は、前記計数手段は、データの送信要求を受けた回数を計数する請求項１記載のバスシステムである。
【０００７】
請求項３に係る本発明は、前記計数手段は、前記検出手段が複数の機器の接続状態の変化を最後に検出した後の時間経過を計数する請求項１記載のバスシステムである。
【０００８】
請求項４に係る本発明は、前記故障判定手段の判定結果を出力する判定結果出力手段をさらに有する請求項１乃至３いずれか記載のバスシステムである。
【０００９】
請求項５に係る本発明は、複数の機器と、前記複数の機器を接続するバスと、このバスに対する前記複数の機器の接続状態の変化を検出する検出手段と、この検出手段の検出結果に基づいて、前記バスを初期化する初期化手段と、この初期化手段が前記バスを初期化した後に、前記バスの使用の可否を決定する決定手段と、前記検出手段が前記複数の機器の接続状態の変化を最後に検出した後に生じる予め定められた事象を計数する計数手段と、この計数手段の計数結果に基づいて、前記バス及び前記複数の機器の少なくともいずれかが故障しているか否かを判定する故障判定手段と、を有する機器システムである。
【００１０】
請求項６に係る本発明は、バスに対する複数の機器の接続状態の変化を検出するステップと、バスに対する複数の機器の接続状態の変化を検出した場合に、バスを初期化するステップと、バスを初期化した後に、バスの使用の可否を決定するステップと、バスに対する複数の機器の接続状態の変化を最後に検出した後に生じる予め定められた事象を計数するステップと、事象の係数結果に基づいて、バス及び複数の機器の少なくともいずれかが故障しているか否かを判定するステップと、をコンピュータに実行させるバスドライバプログラムである。
【発明の効果】
【００１１】
請求項１に係る本発明によれば、バス及びバスに接続される機器の少なくともいずれかが故障しているか否かを、本構成を有していない場合に比較して、簡易な構成のバスドライバによって判定することができる。
【００１２】
請求項２に係る本発明によれば、請求項１に係る本発明の効果に加えて、バス及びバスに接続される機器の少なくともいずれかが故障しているか否かを、本構成を有していない場合に比較して、簡易な構成のバスドライバによって判定することができる。
【００１３】
請求項３に係る本発明によれば、請求項１に係る本発明の効果に加えて、バス及びバスに接続される機器の少なくともいずれかが故障しているか否かを、本構成を有していない場合に比較して、簡易な構成のバスドライバによって判定することができる。
【００１４】
請求項４に係る本発明によれば、請求項１乃至３いずれかに係る本発明の効果に加えて、バス及びバスに接続される機器の少なくともいずれかが故障しているか否かを判定した結果を把握することができる。
【００１５】
請求項５に係る本発明によれば、バス及びバスに接続される機器の少なくともいずれかが故障しているか否かを、本構成を有していない場合に比較して、簡易な構成のバスドライバによって判定することができる。
【００１６】
請求項６に係る本発明によれば、バス及びバスに接続される機器の少なくともいずれかが故障しているか否かを、本構成を有していない場合に比較して、簡易な構成のバスドライバによって判定することができる。
【発明を実施するための最良の形態】
【００１７】
［本発明の背景］
本発明の理解を容易にするために、まず、本発明がなされるに至った背景を説明する。
図１は、本発明の実施形態に係る機器システム１の構成例を概念的に示す構成概念図である。ただし、機器システム１は、後述する本発明の背景を説明するためのドライバ２ａ並びに本発明の実施形態に係るドライバ２ｂ、ドライバ２ｃ及びドライバ２ｄのいずれもドライバ２に代えて適用可能にされている。
【００１８】
図１に示すように、機器システム１は、例えば機器１０−１〜１０−４がＩＥＥＥ（Institute of Electrical and Electronics Engineers）により定められたＩＥＥＥ１３９４の規格に対応したケーブル１２−１〜１２−３によって接続されることにより構成され、トポロジーが例えばデイジーチェーンとなっている。
以下、機器１０−１〜１０−４など、複数ある構成部分のいずれかを、特定せずに示す場合には、単に機器１０などと記載することがある。
【００１９】
機器１０−１〜１０−４は、それぞれＩＥＥＥ１３９４の規格に対応した接続ハードウェア１４及びバスドライバプログラムであるドライバ２並びにアプリケーション１６を有する電子機器である。機器１０−１〜１０−４のアプリケーション１６は、例えばソフトウェアからなるものであってもよいし、ハードウェア及びソフトウェアからなるものであってもよく、それぞれ異なるものであってもよいし、同じものであってもよい。
このように、機器システム１は、機器１０−１〜１０−４それぞれの接続ハードウェア１４及びアプリケーション１６並びにケーブル１２−１〜１２−３が用いられることにより、機器１０−１〜１０−４のいずれかがルートノードとなるネットワークを構成し、機器１０−１〜１０−４が相互に制御情報及びデータをＩＥＥＥ１３９４の規格に沿って送受することができるようにされている。
【００２０】
［機器１０］
図２は、図１に示した機器１０のハードウェア構成を示すハードウェア構成図である。
図２に示すように、機器１０は、ＣＰＵ１００、メモリ１０２、ハードディスクドライブ（ＨＤＤ）等の記憶装置１０４、データの送受信を行う通信インタ−フェイス（Ｉ／Ｆ）１０６及びＵＩ（ユーザインターフェイス）装置１０８が制御バス１１０を介して互いに接続されることにより構成されている。
【００２１】
ＣＰＵ１００は、メモリ１０２又は記憶装置１０４に格納されたプログラムに応じて予め定められた処理を実行し、機器１０の動作を制御する。また、ＣＰＵ１００は、時刻を示す時刻信号生成部（図示せず）を含み、機器１０内の各部に対して時刻信号を出力することができるようにされている。記憶装置１０４には、上述したドライバ２及びアプリケーション１６も記憶されている。通信Ｉ／Ｆ１０６には、上述した接続ハードウェア１４も含まれている。ＵＩ装置１０８は、例えばタッチパネルなどからなり、ユーザの入力を受け入れるとともに、機器システム１に関する情報を表示する。
なお、ＣＰＵ１００が実行するプログラムは、メモリ１０２又は記憶装置１０４から提供されるのではなく、ＣＤ−ＲＯＭ等の記録媒体１０５に格納されて提供さててもよい。
【００２２】
［ドライバ２ａ］
図３は、本発明の背景を説明するためのドライバ２ａの概要を示すプログラム構成図である。
ドライバ２ａは、検出部２００、初期化部２０２、初期化完了通知部２０４及び通信制御部２０６を有するＩＥＥＥ１３９４の規格に対応したバスドライバプログラムであり、図１に示したＩＥＥＥ１３９４のドライバ２に代えて機器１０に適用されるものである。
以下、ケーブル１２−１〜１２−３を用いて構成されるＩＥＥＥ１３９４のバスを、単にバスと記述する。
【００２３】
検出部２００は、機器システム１（図１）において、ケーブル１２−１〜１２−３の抜き差し並びに機器１０−１〜１０−４の電源の投入及び切断（接続状態の変化）を検出する。
【００２４】
初期化部２０２は、検出部２００がケーブル１２−１〜１２−３の抜き差し又は機器１０−１〜１０−４の電源の投入若しくは切断を検出した場合に、バスリセット信号を送信し、機器１０−１〜１０−４の親子の関係付けによりツリー構造を作成することにより、バスを初期化してネットワークを構成する。また、初期化部２０２は、接続ハードウェア１４を介してバスリセット信号（バスリセット割り込み：図４等参照）を受け入れた場合にも、機器１０−１〜１０−４の全てにバスリセット信号が伝わるように、他の機器１０に対してバスリセット信号を送信する。
【００２５】
初期化完了通知部２０４は、機器システム１におけるバスの初期化が完了したことを通知する信号（初期化完了割り込み：図４等参照）を送出することにより、バスの使用が可能になったことを示す。つまり、初期化完了通知部２０４は、機器１０−１〜１０−４の全てに対し、ＩＥＥＥ１３９４のバスが初期化されている間にはバスの使用が不可であることを決定し、ＩＥＥＥ１３９４のバスが初期化された後にはバスの使用が可能となったことを決定する決定部となっている。
【００２６】
通信制御部２０６は、バスの使用権を得るためのアービトレーション（調停）を含むバスの制御を行う。
【００２７】
［ドライバ２ａを適用された機器１０の基本動作］
図４は、機器システム１におけるドライバ２ａを適用された機器１０の基本動作を示すタイミングチャートである。
図４に示すように、アクション１００（Ａ１００）において、ドライバ２ａは、接続ハードウェア１４を介してバスリセット割込みを受け入れると、バスの初期化を開始する。ここで、ドライバ２ａは、上述した初期化完了割り込みを受け入れるまで、バスが初期化完了待ちの状態であると判定している。
【００２８】
アクション１０２（Ａ１０２）において、ドライバ２ａは、データの送信を依頼する送信依頼（送信要求信号）をアプリケーション１６から受け入れる。
【００２９】
アクション１０４（Ａ１０４）において、ドライバ２ａは、未だ初期化完了割り込みを受け入れていないので、バスが初期化完了待ちの状態であることを示すエラーをアプリケーション１６に対して出力する。
【００３０】
アクション１０６（Ａ１０６）において、ドライバ２ａは、接続ハードウェア１４を介して初期化完了割り込み受け入れると、バスの初期化が完了し、バスが送受信可能状態になったと判定する。
【００３１】
アクション１０８（Ａ１０８）において、ドライバ２ａは、データの送信を再び依頼する送信再依頼（送信要求信号）をアプリケーション１６から受け入れる。そして、ドライバ２ａは、バスが送受信可能状態になっているので、アプリケーション１６から送信されるデータを送信する送信処理を行う。なお、アプリケーション１６からの送信再依頼は、アプリケーション１６がＡ１０４のアクションにおいてエラーを受け入れて予め定められた時間が経過した時などに行われる。
【００３２】
アクション１１０（Ａ１１０）において、ドライバ２ａは、接続ハードウェア１４を介して、アプリケーション１６が出力するデータを送信先へ送信する。
【００３３】
［ドライバ２ａを適用された機器１０の第１の動作例］
図５は、機器システム１におけるドライバ２ａを適用された機器１０の第１の動作例を示すタイミングチャートである。
なお、ドライバ２ａを適用された機器１０の第１の動作例において、図４に示したアクション（Ａ１００〜Ａ１０８）と実質的に同一のものには、同一の符号が付してある。
【００３４】
図５に示すように、アプリケーション１６がＡ１０２のアクションにより送信依頼を行い、Ａ１０６のアクションによりバスが送受信可能状態になった後のアクション１０８において、ドライバ２ａは、データの送信を再び依頼する送信再依頼（送信要求信号）をアプリケーション１６から受け入れる。
【００３５】
ただし、最初のＡ１０８のアクションよりも前に行われたアクション１１２（Ａ１１２）において、ドライバ２ａは、接続ハードウェア１４を介して、新たにバスリセット割込み（最初のＡ１００のアクションと同じ）を受け入れて、バスの初期化を開始している。ここで、ドライバ２ａが新たにバスリセット割り込みを受け入れる場合として、新たに他のケーブル１２が抜き差しされた場合、又は新たに他の機器１０の電源が投入若しくは切断された場合などが挙げられる。
【００３６】
アクション１１４（Ａ１１４）において、ドライバ２ａは、未だ初期化完了割り込みを受け入れていないので、バスが初期化完了待ちの状態であることを示すエラーをアプリケーション１６に対して出力する。
【００３７】
アクション１１６（Ａ１１６）において、ドライバ２ａは、接続ハードウェア１４を介して初期化完了割り込み受け入れると、バスの初期化が完了し、バスが送受信可能状態になったと判定する。
【００３８】
アクション１１８（Ａ１１８）において、ドライバ２ａは、Ａ１１２のアクションと同様に、バスの初期化を開始する。
【００３９】
アクション１２０（Ａ１２０）において、ドライバ２ａは、Ａ１０８のアクションと同様に、データの送信を再び依頼する送信再依頼（送信要求信号）をアプリケーション１６から受け入れる。
【００４０】
アクション１２２（Ａ１２２）において、ドライバ２ａは、Ａ１１４のアクションと同様に、バスが初期化完了待ちの状態であることを示すエラーをアプリケーション１６に対して出力する。
【００４１】
アクション１２４（Ａ１２４）において、ドライバ２ａは、Ａ１０６のアクションと同様に、バスが送受信可能状態になったと判定する。
【００４２】
アクション１２６（Ａ１２６）において、ドライバ２ａは、Ａ１１８のアクションと同様に、バスの初期化を開始する。
【００４３】
アクション１２８（Ａ１２８）において、ドライバ２ａは、Ａ１２０のアクションと同様に、データの送信を再び依頼する送信再依頼（送信要求信号）をアプリケーション１６から受け入れる。
【００４４】
このように、ドライバ２ａを適用された機器１０は、アプリケーション１６がエラー（バスが初期化完了待ちの状態であることを示す）を受け入れて送信再依頼を行う前に、送受信可能状態であったバスが再び初期化完了待ちの状態になってしまうと、アプリケーション１６からデータを送信することができない状態が続く。つまり、アプリケーション１６が送信再依頼を行う前にバスの初期化が開始されることが繰り返されると、機器システム１に故障などの異常がない場合にも、アプリケーション１６からデータを送信することができない状態が続いてしまう。  
【００４５】
［ドライバ２ａを適用された機器１０の第２の動作例］
図６は、機器システム１におけるドライバ２ａを適用された機器１０の第２の動作例を示すタイミングチャートである。
なお、ドライバ２ａを適用された機器１０の第２の動作例において、図５に示したアクション（Ａ１００〜Ａ１２８）と実質的に同一のものには、同一の符号が付してある。
【００４６】
図６に示すように、ドライバ２ａは、Ａ１００のアクションにおいてバスリセット割込みを受け入れてバスの初期化を開始した後に初期化完了割り込みを受け入れない場合、バスが初期化完了待ちの状態であると判定し続ける。したがって、ドライバ２ａは、アプリケーション１６からＡ１０８、Ａ１２０及びＡ１２８のアクションによって送信再依頼を受け入れても、バスが初期化完了待ちの状態であることを示すエラーをアプリケーション１６に対して出力し続ける。
【００４７】
このように、バスが連続した初期化完了待ちの状態であるとドライバ２ａが判定する期間に、ドライバ２ａがアプリケーション１６から送信再依頼を繰り返して受け入れる場合、機器システム１において、ケーブル１２−１〜１２−３及び機器１０−１〜１０−４の少なくともいずれかが故障していると考えられる。
【００４８】
ここで、アプリケーション１６は、図４に示した第１の動作例（正常状態）において受け入れる信号（制御情報）と、図５に示した第２の動作例（異常状態）において受け入れる信号とが同じである。つまり、アプリケーション１６が上述の第１の動作例と第２の動作例との区別をつけることができないので、ユーザも、機器１０のアプリケーション１６及びＵＩ装置１０８を介して上述の第１の動作例と第２の動作例との区別をつけることができない。
【００４９】
［第１の実施形態］
図７は、本発明に係るドライバ（バスドライバプログラム）２ｂの概要を示すプログラム構成図である。
上述したように、ドライバ２ｂは、図１に示したドライバ２に代えて機器システム１に適用可能にされており、図３に示したドライバ２ａを包含するものである。
図７に示すように、ドライバ２ｂは、ドライバ２ａに加えて、割込時刻記憶部２０８、消去部２１０、経過時間算出部２１２、故障判定部２１４、設定部２１６及び通知部２１８を有する。
【００５０】
ドライバ２ａは、接続ハードウェア１４を介してバスリセット割り込み及び初期化完了割込みを受け入れるとともに、予め定められた制御信号（上述した送信要求信号なども含む）及びデータを受け入れ、バスを制御する制御信号及びデータを出力する。
【００５１】
割込時刻記憶部２０８は、接続ハードウェア１４を介してバスリセット割り込みを受け入れた時に、ＣＰＵ１００が出力する時刻信号を受け入れて、バスリセット割り込みを受け入れた時刻（割込時刻）を記憶するとともに、記憶した割込時刻を経過時間算出部２１２に対して出力する。ただし、割込時刻記憶部２０８は、消去部２１０が割込時刻を消去することができるようにされている。
【００５２】
消去部２１０は、接続ハードウェア１４を介して初期化完了割込みを受け入れると、割込時刻記憶部２０８が記憶する割込時刻を消去する。
【００５３】
経過時間算出部２１２は、アプリケーション１６から送信（使用）要求信号を受け入れると、割込時刻記憶部２０８が出力する割込時刻とＣＰＵ１００が出力する時刻信号とを受け入れて、割込時刻記憶部２０８が記憶した割込時刻から送信要求信号を受け入れるまでの経過時間を算出し、算出した経過時間を故障判定部２１４に対して出力する。
【００５４】
故障判定部２１４は、経過時間算出部２１２から受け入れた経過時間と後述するスレッショルド時間とを比較し、経過時間がスレッショルド時間未満である場合にはバスが初期化完了待ちの状態であると判定し、経過時間がスレッショルド時間以上である場合にはケーブル１２−１〜１２−３及び機器１０−１〜１０−４の少なくともいずれかが故障（ハードウェア故障）であると判定し、判定結果を通知部２１８に対して出力する。スレッショルド時間は、設定部２１６により設定可能にされている。
【００５５】
設定部２１６は、例えばユーザがＵＩ装置１０８を介して入力した情報に応じて、スレッショルド時間を故障判定部２１４に対して設定する。また、設定部２１６は、アプリケーション１６からの指示に応じてスレッショルド時間を故障判定部２１４に対して設定するようにされてもよい。
【００５６】
通知部２１８は、故障判定部２１４から受け入れる判定結果に応じて、バスが初期化完了待ちの状態であること又はハードウェア故障のいずれかの判定結果を通知する。ここで、通知部２１８は、アプリケーション１６に対して判定結果を通知するとともに、ＵＩ装置１０８を介して判定結果をユーザに通知する。
【００５７】
［ドライバ２ｂを適用された機器１０の動作例］
図８は、機器システム１におけるドライバ２ｂを適用された機器１０の動作例を示すタイミングチャートである。
なお、ドライバ２ｂを適用された機器１０の動作例において、図６に示したアクション（Ａ１００〜Ａ１２８）と実質的に同一のものには、同一の符号が付してある。
【００５８】
図８に示すように、ドライバ２ｂは、Ａ１００のアクションにおいてバスリセット割込みを受け入れると、バスリセット割り込みを受け入れた時刻（割込時刻）を記憶する（アクション１０１：Ａ１０１）。また、ドライバ２ｂは、バスリセット割込みを受け入れてバスの初期化を開始した後に初期化完了割り込みを受け入れない場合、割込時刻後の経過時間がスレッショルド時間以上になるまで、バスが初期化完了待ちの状態であると判定し続ける。したがって、ドライバ２ｂは、アプリケーション１６からＡ１０８のアクションによって送信再依頼を受け入れても、バスが初期化完了待ちの状態であることを示すエラーをアプリケーション１６に対して出力する。そして、ドライバ２ｂは、アクション１２０（Ａ１２０）において、割込時刻後の経過時間がスレッショルド時間以上になった後に送信再依頼を受け入れると、アクション１３０（Ａ１３０）としてハードウェア故障を示すエラーをアプリケーション１６に対して出力する。つまり、アプリケーション１６は、ドライバ２ｂからの通知により、ハードウェア故障が生じていることを把握する。
【００５９】
［ドライバ２ｂの動作例］
図９は、ＣＰＵ１００が実行するドライバ２ｂの動作例（Ｓ１０）を示すフローチャートである。
図９に示すように、ステップ１００（Ｓ１００）において、ドライバ２ｂは、アプリケーション１６から送信依頼などの通信処理依頼を受信する。
【００６０】
ステップ１０２（Ｓ１０２）において、ドライバ２ｂは、バスの初期化中であるか否かを判定し、バスの初期化中でない場合にはＳ１０４の処理に進み、バスの初期化中である場合にはＳ１０６の処理に進む。
【００６１】
ステップ１０４（Ｓ１０４）において、ドライバ２ｂは、バスドライバプログラムとしての通信処理を行う。
【００６２】
ステップ１０６（Ｓ１０６）において、ドライバ２ｂは、バスリセット割り込みを受け入れた時刻からの経過時間を算出する。
【００６３】
ステップ１０８（Ｓ１０８）において、ドライバ２ｂは、Ｓ１０６の処理で算出した経過時間がスレッショルド時間未満か否かを判定し、スレッショルド時間未満の場合にはＳ１１０の処理に進み、スレッショルド時間以上の場合にはＳ１１２の処理に進む。
なお、ドライバ２ｂがＳ１０８の処理を行うタイミングは、ドライバ２ｂが送信再依頼を受信した時にされてもよいし、ドライバ２ｂが送信再依頼を受信することなく単に経過時間がスレッショルド時間以上になった時にされてもよい。
【００６４】
ステップ１１０（Ｓ１１０）において、ドライバ２ｂは、例えばアプリケーション１６に対してバスが初期化完了待ちの状態であることを示すエラー通知を行う。
【００６５】
ステップ１１２（Ｓ１１２）において、ドライバ２ｂは、例えばアプリケーション１６に対してハードウェア故障が生じていることを示すエラー通知を行う。
【００６６】
［第２の実施形態］
図１０は、本発明に係るドライバ（バスドライバプログラム）２ｃの概要を示すプログラム構成図である。
上述したように、ドライバ２ｃは、図１に示したドライバ２に代えて機器システム１に適用可能にされており、図３に示したドライバ２ａを包含するものである。
図１０に示すように、ドライバ２ｃは、ドライバ２ａに加えて、第１の計数部２２０、第１の記憶部２２２、差分演算部２２４、第２の計数部２２６、第２の記憶部２２８、消去部２３０、故障判定部２３２、設定部２３４及び通知部２３６を有する。
【００６７】
ドライバ２ａは、上述したように接続ハードウェア１４を介してバスリセット割り込み及び初期化完了割込みを受け入れるとともに、予め定められた制御信号（送信要求信号なども含む）及びデータを受け入れ、バスを制御する制御信号及びデータを出力する。
【００６８】
第１の計数部２２０は、接続ハードウェア１４を介してバスリセット割込みを受け入れるごとにバスリセット割込みを受け入れた回数を計数し、計数した回数を第１の記憶部２２２に対して出力する。なお、第１の計数部２２０は、例えば第１の計数部２２０自身が実装された機器１０の電源投入の検出信号が入力されると、計数した回数をリセットする（０にする）ようにされている。
【００６９】
第１の記憶部２２２は、第１の計数部２２０が出力する回数を受け入れて記憶するとともに、差分演算部２２４からの要求に応じて記憶している回数を差分演算部２２４に対して出力する。なお、第１の記憶部２２２は、例えば第１の記憶部２２２自身が実装された機器１０の電源投入の検出信号が入力されると、記憶した回数をリセットする（０にする）ようにされている。
【００７０】
差分演算部２２４は、アプリケーション１６から送信（使用）要求信号を受け入れるごとに第１の記憶部２２２が記憶している回数を受け入れ、送信要求信号を前回受け入れた時の回数と送信要求信号を今回受け入れた時の回数との差分を演算し、演算結果を故障判定部２３２に対して出力する。
【００７１】
第２の計数部２２６は、アプリケーション１６から送信（使用）要求信号を受け入れるごとに送信要求信号を受け入れた回数（依頼回数）を計数し、計数した回数を第２の記憶部２２８に対して出力する。ただし、第２の計数部２２６は、計数した回数を消去部２３０が消去することができるようにされている。
【００７２】
第２の記憶部２２８は、第２の計数部２２６が計数した回数を受け入れて記憶するとともに、故障判定部２３２に対して出力する。ただし、第２の記憶部２２８は、記憶した回数を消去部２３０が消去することができるようにされている。
【００７３】
消去部２３０は、接続ハードウェア１４を介して初期化完了割込みを受け入れると、第２の計数部２２６が計数した回数及び第２の記憶部２２８が記憶した回数を消去してリセットする（０にする）。
【００７４】
故障判定部２３２は、第２の記憶部２２８から受け入れた回数と後述する閾値（最大依頼回数）とを比較し、受け入れた回数（依頼回数）が閾値（最大依頼回数）以下である場合にはバスが初期化完了待ちの状態であると判定し、受け入れた依頼回数が最大依頼回数よりも多い場合にはケーブル１２−１〜１２−３及び機器１０−１〜１０−４の少なくともいずれかが故障（ハードウェア故障）であると判定し、判定結果を通知部２３６に対して出力する。閾値（最大依頼回数）は、設定部２３４により設定可能にされている。
また、故障判定部２３２は、差分演算部２２４から受け入れた演算結果が１以上である場合にも、バスが初期化完了待ちの状態であると判定する。
【００７５】
設定部２３４は、例えばユーザがＵＩ装置１０８を介して入力した情報に応じて、故障判定部２３２が判定を行うための閾値（最大依頼回数）を故障判定部２３２に対して設定する。また、設定部２３４は、アプリケーション１６からの指示に応じて最大依頼回数を故障判定部２３２に対して設定するようにされてもよい。
【００７６】
通知部２３６は、故障判定部２３２から受け入れる判定結果に応じて、バスが初期化完了待ちの状態であること又はハードウェア故障のいずれかの判定結果を通知する。ここで、通知部２３６は、アプリケーション１６に対して判定結果を通知するとともに、ＵＩ装置１０８を介して判定結果をユーザに通知する。
【００７７】
［ドライバ２ｃを適用された機器１０の動作例］
図１１は、機器システム１におけるドライバ２ｃを適用された機器１０の動作例を示すタイミングチャートである。
なお、ドライバ２ｃを適用された機器１０の動作例において、図６に示したアクション（Ａ１００〜Ａ１２８）と実質的に同一のものには、同一の符号が付してある。
【００７８】
図１１に示すように、ドライバ２ｃは、Ａ１００のアクションによりバスリセット割込みを受け入れてバスの初期化を開始した後に初期化完了割り込みを受け入れない場合、アプリケーション１６からの送信依頼の回数（依頼回数）が最大依頼回数よりも多くなるまで、バスが初期化完了待ちの状態であると判定し続ける。したがって、ドライバ２ｃは、アプリケーション１６からＡ１０８のアクションによって送信再依頼を受け入れても、バスが初期化完了待ちの状態であることを示すエラーをアプリケーション１６に対して出力する。そして、ドライバ２ｃは、アクション１２０（Ａ１２０）により依頼回数が最大依頼回数よりも多くなると、アクション１３０（Ａ１３０）としてハードウェア故障を示すエラーをアプリケーション１６に対して出力する。つまり、アプリケーション１６は、ドライバ２ｃからの通知により、ハードウェア故障が生じていることを把握する。
【００７９】
［ドライバ２ｃの動作例］
図１２は、ＣＰＵ１００が実行するドライバ２ｃの動作例（Ｓ２０）を示すフローチャートである。
図１２に示すように、ステップ２００（Ｓ２００）において、ドライバ２ｃは、アプリケーション１６から送信依頼などの通信処理依頼を受信する。
【００８０】
ステップ２０２（Ｓ２０２）において、ドライバ２ｃは、バスの初期化中であるか否かを判定し、バスの初期化中でない場合にはＳ２０４の処理に進み、バスの初期化中である場合にはＳ２０６の処理に進む。
【００８１】
ステップ２０４（Ｓ２０４）において、ドライバ２ｃは、バスドライバプログラムとしての通信処理を行う。
【００８２】
ステップ２０６（Ｓ２０６）において、ドライバ２ｃは、送信要求信号を前回受け入れた時のバスリセット割込みの回数と送信要求信号を今回受け入れた時のバスリセット割込みの回数との差分を演算する。
【００８３】
ステップ２０８（Ｓ２０８）において、ドライバ２ｃは、Ｓ２０６の処理で演算した結果に応じて、送信要求信号を今回受け入れた時にバスリセット割込みを受け入れた回数の増加があったか否かを判定し、増加があった場合にはＳ２１０の処理に進み、増加がなかった場合にはＳ２１２の処理に進む。
【００８４】
ステップ２１０（Ｓ２１０）において、ドライバ２ｃは、例えばアプリケーション１６に対してバスが初期化完了待ちの状態であることを示すエラー通知を行う。
【００８５】
ステップ２１２（Ｓ２１２）において、ドライバ２ｃは、アプリケーション１６からの依頼回数が最大依頼回数以下であるか否かを判定し、依頼回数が最大依頼回数以下である場合にはＳ２１０の処理に進み、依頼回数が最大依頼回数よりも多い場合にはＳ２１４の処理に進む。
【００８６】
ステップ２１４（Ｓ２１４）において、ドライバ２ｃは、例えばアプリケーション１６に対してハードウェア故障が生じていることを示すエラー通知を行う。
【００８７】
［第３の実施形態］
次に、機器システム１に適用されるドライバ２ｄについて説明する。
ドライバ２ｄは、ドライバ２ｂの機能に加えて、アプリケーション１６の動作チェック及び負荷テスト等を行うためのデバッグモードが設けられている。ここで、ドライバ２ｄには、例えばデバッグモードであることを示すフラグビット（図示せず）が設けられている。
図１３は、機器システム１におけるドライバ２ｄを適用された機器１０の動作例を示すタイミングチャートである。
なお、ドライバ２ｄを適用された機器１０の動作例において、図６に示したアクション（Ａ１００〜Ａ１２８）と実質的に同一のものには、同一の符号が付してある。
【００８８】
図１３に示すように、ドライバ２ｄは、Ａ１００のアクションにおいてバスリセット割込みを受け入れると、バスリセット割り込みを受け入れた時刻（割込時刻）を記憶する（アクション１０１：Ａ１０１）。ただし、ドライバ２ｄは、上述したフラグビットが立てられると初期化完了割込みがマスクされ、初期化完了割込みがない状態を維持する。また、ドライバ２ｄは、上述したフラグビットが立てられると、バスリセット割り込みを受け入れた時刻後の経過時間がスレッショルド時間以上になっても、ハードウェア故障を示すエラーをアプリケーション１６に対して出力しないようにされている。
【図面の簡単な説明】
【００８９】
【図１】本発明の実施形態に係る機器システムの構成例を概念的に示す構成概念図である。
【図２】図１に示した機器のハードウェア構成を示すハードウェア構成図である。
【図３】本発明の背景を説明するためのドライバの概要を示すプログラム構成図である。
【図４】機器システムにおいて、本発明の背景を説明するためのドライバを適用された機器の基本動作を示すタイミングチャートである。
【図５】機器システムにおいて、本発明の背景を説明するためのドライバを適用された機器の第１の動作例を示すタイミングチャートである。
【図６】機器システムにおいて、本発明の背景を説明するためのドライバを適用された機器の第２の動作例を示すタイミングチャートである。
【図７】本発明に係るドライバ（バスドライバプログラム）の第１の実施形態の概要を示すプログラム構成図である。
【図８】機器システムにおいて、本発明に係るドライバの第１の実施形態を適用された機器の動作例を示すタイミングチャートである。
【図９】ＣＰＵが実行する本発明に係るドライバの第１の実施形態の動作例（Ｓ１０）を示すフローチャートである。
【図１０】本発明に係るドライバ（バスドライバプログラム）の第２の実施形態の概要を示すプログラム構成図である。
【図１１】機器システムにおいて、本発明に係るドライバの第２の実施形態を適用された機器の動作例を示すタイミングチャートである。
【図１２】ＣＰＵが実行する本発明に係るドライバの第２の実施形態の動作例（Ｓ２０）を示すフローチャートである。
【図１３】機器システムにおいて、本発明に係るドライバの第３の実施形態を適用された機器の動作例を示すタイミングチャートである。
【符号の説明】
【００９０】
１・・・機器システム
１０−１〜１０−４・・・機器
１２−１〜１２−３・・・ケーブル
１４・・・接続ハードウェア
１６・・・アプリケーション
１００・・・ＣＰＵ
１０２・・・メモリ
１０４・・・記憶装置
１０６・・・通信Ｉ／Ｆ
１０８・・・ＵＩ装置
２，２ａ，２ｂ，２ｃ，２ｄ・・・ドライバ（バスドライバプログラム）
２００・・・検出部
２０２・・・初期化部
２０４・・・初期化完了通知部
２０６・・・通信制御部
２０８・・・割込時刻記憶部
２１０・・・消去部
２１２・・・経過時間算出部
２１４・・・故障判定部
２１６・・・設定部
２１８・・・通知部
２２０・・・第１の計数部
２２２・・・第１の記憶部
２２４・・・差分演算部
２２６・・・第２の計数部
２２８・・・第２の記憶部
２３０・・・消去部
２３２・・・故障判定部
２３４・・・設定部
２３６・・・通知部
【図１】
2010055242.tif 000003
【図２】
2010055242.tif 000004
【図３】
2010055242.tif 000005
【図４】
2010055242.tif 000006
【図５】
2010055242.tif 000007
【図６】
2010055242.tif 000008
【図７】
2010055242.tif 000009
【図８】
2010055242.tif 000010
【図９】
2010055242.tif 000011
【図１０】
2010055242.tif 000012
【図１１】
2010055242.tif 000013
【図１２】
2010055242.tif 000014
【図１３】
2010055242.tif 000015