以下に、システム管理装置およびシステムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、この実施例における構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。
図1A、図1B、および図1Cを参照しながら、本実施例に係るシステム管理装置10とそれを含むシステムについて説明する。図1Aは、システム管理装置10とそれを含むシステムの例を示す図である。図1Bは、システム管理装置10が有する制御部120のブロック図である。図1Cは、システム管理装置10が有する記憶部130のブロック図である。図1Aに示す例において、システム管理装置10は、2台の機器20a(機器A)と、2台の機器20b(機器B)と、2台の機器20c(機器C)と接続され、これらの機器の間での情報の送受信を仲介するように構成されている。
システム管理装置10、機器20a、機器20b、および機器20cは、システムを構成する。例えば、機器20aは、センサとして機能する機器であり、機器20bは、センサの検出する値に基づいて動作部の動作を制御する制御機器であり、機器20cは、動作部を有する被制御機器である。すなわち、機器20a、機器20b、および機器20cは、機器間で情報を送受信することによって、システムの動作を実現させる。
機器20a、機器20b、および機器20cは、信頼性を高めるために冗長化されている。具体的には、機器20a、機器20b、および機器20cは、それぞれ、2台が並行して動作するように構成されている。2台の機器20aは、略同じ周期で同じ処理を実行する。2台の機器20bは、略同じ周期で同じ処理を実行する。2台の機器20cは、略同じ周期で同じ処理を実行する。
システム管理装置10を介さずに機器20a、機器20b、および機器20cを接続する場合、これらの機器は、例えば、図7に示すように接続される。図7に示す例では、一方の機器20bは、2台の機器20aおよび2台の機器20cと接続されている。もう一方の機器20bも同様に、2台の機器20aおよび2台の機器20cと接続されている。このように、システム管理装置10を介さずに機器20a、機器20b、および機器20cを接続する場合、接続経路が多くなり構成が複雑化する。例えば、機器20aと機器20cとの間での情報のやりとりが必要になった場合、冗長度をさらに高めることが必要になった場合、あるいは他の機器を追加することが必要になった場合には、接続経路が増加し、構成がさらに複雑になる。加えて、接続経路の増加に対応するために、個々の機器の改修が必要になる場合もある。
システム管理装置10を介して機器20a、機器20b、および機器20cを接続することにより、このような問題は解決される。システム管理装置10を介してこれらの機器を接続することにより、個別の接続経路を設けることなく、任意の機器間で情報を伝送することが可能になる。冗長度をさらに高めることが必要になった場合、あるいは他の機器を追加することが必要になった場合でも、新たな機器をシステム管理装置10に接続すれば、新たな機器と既存の機器の間の通信が可能になる。
システム管理装置10を介して機器20a、機器20b、および機器20cを接続することにより、冗長構成の実現も容易になる。例えば、図7に示した構成の場合、冗長化された機器が正常に動作しているか否かの監視、冗長化された機器から送信された情報のいずれを採用するかを決定するための多数決処理等を、個々の機器が行わなければならない。一方、システム管理装置10を介して機器20a、機器20b、および機器20cを接続する構成の場合、監視および多数決判定の機能をシステム管理装置10に集約することができる。
図1Aに示すように、システム管理装置10は、インターフェース部101〜106(IF#1〜IF#6)と、バス111〜113とを有する。
インターフェース部101〜106には、それぞれ、2台の機器20a、2台の機器20b、および2台の機器20cが接続される。インターフェース部101〜106のそれぞれは、データ信号を送受信するためのポート(ポート#1D〜ポート#6D)と、リセットまたは再起動のための信号を送受信するためのポート(ポート#1R〜ポート#6R)とを有する。このように、リセットまたは再起動のための信号を送受信するためのポートを独立して設けることにより、データ信号を送受信するための接続経路に一時的な障害が発生した場合に、対応する機器をリセットまたは再起動させて障害を解消することができる。
ポートの種別は、インターフェース部毎に異なってもよい。ポートの種別は、データ信号を送受信するためのポートと、リセットまたは再起動のための信号を送受信するためのポートとで異なってもよい。すなわち、複数の種別のポートがシステム管理装置10に混在していてもよい。例えば、シリアル通信に対応した機器が接続されるインターフェース部は、USB(Universal Serial Bus)、RS−232C等のポートを有してもよい。例えば、パラレル通信に対応した機器が接続されるインターフェース部は、SCSI(Small Computer System Interface)等のポートを有してもよい。
バス111〜113は、インターフェース部101〜106を相互に電気的に接続する。バス111〜113のそれぞれは、同じ信号を伝送する。すなわち、システム管理装置10の内部において、インターフェース部101〜106間の接続経路は、3重に冗長化されている。このように、内部の接続経路を冗長化することにより、システム管理装置10の信頼性を向上することができる。
インターフェース部101〜106のそれぞれは、さらに、制御部120と、記憶部130とを有する。制御部120は、各種の制御を実行する。制御部120が行う制御には、例えば、システムに含まれる機器の構成の管理、インターフェース部が機器から受信した情報の送信先の判定、機器およびバスのエラーの検出、エラーの検出にともなう異常処理等に関する制御が含まれる。
図1Bに示すように、制御部120は、構成管理部121と、多数決判定部122と、異常処理部123とを有する。構成管理部121および異常処理部123は、1つのインターフェース部に含まれるものが有効化され、他のインターフェース部に含まれるものは無効化される。どの構成管理部121および異常処理部123が有効化されるかは、例えば、予め定められたインターフェース部101〜106の優先順位に基づいて判定される。有効化されている構成管理部121および異常処理部123を有するインターフェース部に異常が生じた場合、優先順位が次に高いインターフェース部が有する構成管理部121および異常処理部123が有効化される。
構成管理部121は、システム管理装置10に接続されている機器の構成を管理する。機器の構成は、システム管理装置10にどのような機器が接続され、それぞれの機器がどのような状態にあるかを示す。機器の構成には、どの機器とどの機器が冗長構成を成しているかに関する情報が含まれる。構成管理部121は、それぞれの機器が起動中にシステム管理装置10へ送信する起動通知メッセージ等のメッセージに含まれる情報に基づいて、機器の構成に関する初期の情報を作成する。さらに、構成管理部121は、異常処理部123による機器のリセット、再起動、または切り離し、機器からの通知等に応じて、機器の構成に関する情報を更新する。機器の構成に関する情報は、各インターフェース部に配信され、各インターフェース部の記憶部130に、構成テーブル131として記憶される。
多数決判定部122は、多数決判定によって、冗長構成を成している機器から送信された複数の情報のうちのいずれを採用するかを判定する。多数決判定を実現するための手法については、任意の公知の各種の手法を用いてよい。例えば、冗長構成を成している機器が2台の場合、多数決判定部122は、予め定められた基準(例えば、起動通知メッセージが受信された順序等)に基づく優先度を用いて、採用する情報を決定してもよい。
さらに、多数決判定部122は、バス111〜113のいずれを経由した情報を、送信元の機器から送信された情報として採用するかを判定するための多数決判定を、機器から送信された情報毎に実行する。この多数決判定は、冗長構成を成している機器から送信された複数の情報に対する多数決判定の前に行われる。すなわち、多数決判定部122は、バス111〜113のいずれかに障害が発生していても、それぞれの機器から送信された情報を高い確率で正しく受信できるように構成されている。
このように、多数決判定部122は、外部の冗長構成に関する多数決判定と、内部の冗長構成に関する多数決判定という2重の多数決判定を行う。多数決判定を2重に実行することによって、システム管理装置10の信頼性を高めることができる。
異常処理部123は、インターフェース部101〜106のいずれかにおいてエラーが検出された場合に、エラーに対する対処を実行する。例えば、異常処理部123は、ある機器のエラーが検出された場合、その機器のエラーが検出された回数に応じて、その機器のリセット、再起動、または切り離しを実行する。
制御部120の機能は、ソフトウェアによって実現されてもよい。この場合、制御部120は、例えば、CPU(Central Processing Unit)等の演算装置と、RAM(Random Access Memory)等の記憶装置を有する。そして、制御部120は、予め用意されているプログラムを記憶装置上に割り当てられた記憶領域に展開し、演算装置によって実行することにより、各種の機能を実現する。プログラムは、記憶部130に記憶されていてもよい。制御部120の機能がソフトウェアによって実現される場合、構成管理部121、多数決判定部122、および異常処理部123は、ソフトウェアが実行されたときに実体化する。構成管理部121および異常処理部123は、有効化されるときに実体化されてもよい。
記憶部130は、ソリッドステートドライブ、ハードディスクドライブ等の非一過的(non−transitory)な記憶媒体を有する。記憶部130は、データおよびプログラムを記憶することができる。図1Cに示すように、記憶部130に記憶されるデータには、構成テーブル131と、状態データ132とが含まれる。構成テーブル131は、機器の構成に関する情報を保持する。
状態データ132は、インターフェース部に接続されている機器の状態を示す情報を保持する。機器の状態を示す情報には、例えば、対応する機器から最後に受信した情報、対応する機器へ最後に送信した情報等が含まれる。状態データ132は、異常処理部123が機器のリセットまたは再起動を実行するときに利用される。リセット前または再起動前の状態を示す情報を機器に伝えることにより、機器がリセット前または再起動前の状態から処理を再開することができる。
システム管理装置10の構成は、図1Aに示す例に限定されない。例えば、システム管理装置10が有するインターフェース部の数は、6個に限定されない。各インターフェース部が有するポートは、データ信号を送受信するためのポートと、リセットまたは再起動のための信号を送受信するためのポートとを兼ねていてもよい。バスの冗長度は、3に限定されない。
図2および図3を参照しながら、構成管理部121による機器の構成の管理について説明する。図2は、システムの起動時の動作の例を示す図である。図3は、構成テーブル131の例を示す図である。
図2に示すように、機器20a、機器20b、および機器20cは、起動中に、機器の種別を示す値を含むメッセージをシステム管理装置10へ送信する。機器の種別とは、機器の役割(用途)も含めて決定される種別であり、物理的に同一の装置であっても役割が異なれば異なる種別が割り当てられることもある。起動中とは、起動が開始してから、定常的な処理が開始されるまでの期間を意味する。
図2に示す例において、2台の機器20aは、機器の種別が「A」であることを示すメッセージをシステム管理装置10へ送信する。2台の機器20bは、機器の種別が「B」であることを示すメッセージをシステム管理装置10へ送信する。2台の機器20cは、機器の種別が「C」であることを示すメッセージをシステム管理装置10へ送信する。
こうして送信されたメッセージに基づいて、構成管理部121は、IF#1およびIF#2には、種別が「A」の機器が接続され、これらが冗長構成を成していることを検出することができる。さらに、構成管理部121は、IF#3およびIF#4には、種別が「B」の機器が接続され、これらが冗長構成を成していることを検出することができる。さらに、構成管理部121は、IF#5およびIF#6には、種別が「C」の機器が接続され、これらが冗長構成を成していることを検出することができる。
構成管理部121は、メッセージに含まれる種別を、メッセージを受信したインターフェース部と対応付けて、構成テーブル131を作成する。構成テーブル131の例を図3に示す。図3に示すように、構成テーブル131は、IF番号、種別、ステータス、エラー回数、リセット回数、再起動回数、エラー発生時間といった項目を有する。構成テーブル131には、インターフェース部毎に情報が格納される。
IF番号の項目には、インターフェース部を識別するための番号が設定される。種別の項目には、インターフェース部に接続されている機器の種別を示す値が設定される。種別の項目に同じ値が設定され、ステータスの項目に「active」が設定されているインターフェース部に接続されている機器は、冗長構成を成している機器とみなされる。
ステータスの項目には、インターフェース部に接続されている機器の現在の状態を示す値が設定される。機器の現在の状態を示す値には、例えば、「starting up」、「active」、および「detached」が含まれる。「starting up」は、機器が起動中であることを意味する。「active」は、機器が定常的な処理を実行可能であることを意味する。「detached」は、機器が故障したと判定され、システムから論理的または物理的に切り離されたことを意味する。
エラー回数の項目には、インターフェース部に接続されている機器のエラーが検出された回数が設定される。リセット回数の項目には、インターフェース部に接続されている機器がリセットされた回数が設定される。再起動回数の項目には、インターフェース部に接続されている機器が再起動された回数が設定される。エラー発生時間の項目には、インターフェース部に接続されている機器のエラーが最後に検出された日時が設定される。
リセットは、再起動よりも簡易的に機器を起動し直す方式で実現され、システムの動作に及ぼす影響がより小さい。例えば、再起動では、機器全体の電源が一旦OFFにされるのに対して、リセットでは、機器の一部の電源がONに保たれる。あるいは、再起動では、機器全体が初期化されるのに対して、リセットでは、機器の一部が初期化されずにそのまま保たれる。あるいは、再起動では、機器の電源がOFFにされた状態が一定期間継続するのに対して、リセットでは、機器の電源がOFFにされた後に即座にONにされる。
エラー回数、リセット回数、再起動回数、およびエラー発生時間の項目の値は、エラーの検出、または異常処理部123による異常処理に応じて更新される。いずれかのインターフェース部が、機器のエラーを検出すると、その情報が、有効化されている構成管理部121に伝えられる。構成管理部121は、構成テーブル131の対応する行のエラー回数の項目の値に1を加算し、その行のエラー発生時間の項目に現在の日時を設定する。そして、エラー回数の項目の値が、閾値nを超えた場合には、異常処理部123は、対応する機器をリセットする。
異常処理部123によって機器がリセットされると、構成管理部121は、構成テーブル131の対応する行のリセット回数の項目の値に1を加算する。そして、リセット回数の項目の値が、閾値mを超えた場合には、異常処理部123は、対応する機器を再起動する。異常処理部123によって機器が再起動されると、構成管理部121は、構成テーブル131の対応する行の再起動回数の項目の値に1を加算する。そして、再起動回数の項目の値が、閾値kを超えた場合には、異常処理部123は、対応する機器を論理的または物理的に切り離す。
本実施例において、構成管理部121は、機器がリセットまたは再起動されるときに、エラー回数の項目の値を0に設定し直す。構成管理部121は、機器が再起動されるときに、リセット回数の項目の値を0に設定し直す。システム管理装置10は、エラー回数の項目の値を0に設定し直さずに、エラー回数の項目の値を閾値で除算した余りに基づいて、機器をリセットまたは再起動するタイミングを判定してもよい。システム管理装置10は、リセット回数の項目の値を0に設定し直さずに、リセット回数の項目の値を閾値で除算した余りに基づいて、機器を再起動するタイミングを判定してもよい。閾値は、機器の種別毎に異なってもよい。
構成管理部121は、更新した構成テーブル131を他のインターフェース部に配信する。構成管理部121は、機器のエラーが最後に検出されてから所定の期間が経過した場合に、エラー回数、リセット回数、および再起動回数の項目の値を0に戻してもよい。具体的には、構成管理部121は、構成テーブル131のエラー発生時間の項目に設定されている日時から所定の期間が経過した場合に、同じ行のエラー回数、リセット回数、および再起動回数の項目の値を0に戻してもよい。このように構成することにより、一時的な理由で生じたエラーの影響を低減することができる。一時的な理由で生じたエラーには、例えば、宇宙線の影響で生じたエラーが含まれる。
このように、異常処理部123は、機器のエラーが検出された場合に、段階的に機器の復旧を試みる。このため、異常処理部123は、復旧可能な機器が切り離される可能性を低減することができる。異常処理部123による異常処理の詳細については、後述のシステム管理装置10の動作と併せて、記述する。
図4を参照しながら、システム管理装置10の動作について説明する。図4は、システム管理装置10の動作の例を示すフローチャートである。システムが起動されると、システム管理装置10は、図4に示すように、ステップS101〜ステップS102で、初期処理を実行する。具体的には、有効化されている構成管理部121は、ステップS101で、構成情報を収集する。すなわち、構成管理部121は、インターフェース部101〜106が接続された機器から受信したメッセージを取得し、メッセージに含まれる情報に基づいて機器の種別を判定する。そして、制御部120は、ステップS102で、構成テーブル131を作成し、他のインターフェース部に配信する。
この段階において、構成テーブル131の種別の項目には、対応するインターフェース部に接続されている機器の種別を示す値が設定される。エラー回数、リセット回数、および再起動回数の項目の値は、0に設定される。エラー発生時間の項目は、空欄に設定される。ステータスの項目には、対応するインターフェース部に接続されている機器の起動が完了した後に、「active」が設定される。
続いて、システム管理装置10は、ステップS103〜ステップS106で、定常処理を実行する。具体的には、システム管理装置10に接続されている機器が、それぞれの周期に従って処理を実行し、他の機器へ送信すべき情報を、送信先の機器の種別を示す値と共にシステム管理装置10へ送信する。情報を送信した機器が接続されたインターフェース部の制御部120は、ステップS103で、情報を受信し、送信先の機器の種別を示す値に基づいて、情報を他のインターフェース部に転送する。制御部120は、構成テーブル131のステータスの項目に「active」以外の値が設定されているインターフェース部を転送先として無視する。情報を転送されたインターフェース部の制御部120は、ステップS104で、多数決判定処理を行う。
システム管理装置10およびインターフェース部101〜106に接続された機器は、時刻同期して動作する。具体的には、システム管理装置10および機器は、同期した基準クロックに基づいて、所定の周期で処理を実行する。周期は、機器の種別毎に異なってもよい。インターフェース部101〜106に接続された機器は、同じ種別の機器が、ほぼ同じタイミングで同じ処理を独立して実行するように制御される。このため、システム管理装置10は、ステップS103では、同じ種別の機器がほぼ同じタイミングで送信した情報を受信する。そして、システム管理装置10は、ステップS104では、同じ種別の機器がほぼ同じタイミングで送信した情報から、採用すべき情報を、多数決判定によって判定する。
例えば、2台の機器20aは、情報を、送信先の機器の種別を示す値「B」と共にシステム管理装置10へ送信する。機器20aは、「B」の種別に対応する機器がシステム管理装置10に何台接続されているかを知らなくてよい。この場合、機器20aが接続されているインターフェース部101および102の制御部120は、それぞれ、構成テーブル131を参照し、インターフェース部103および104を情報の転送先として選択する。そして、インターフェース部101および102の制御部120は、バス111〜113のそれぞれを介して、情報をインターフェース部103および104へ転送する。
インターフェース部103および104の制御部120は、この場合、それぞれ、計6個の情報を受信する。そして、それぞれの制御部120は、まず、送信元のインターフェース部毎に、バス111〜113を介して転送された3つの情報から多数決判定によって1つの情報を選択し、さらに、送信元のインターフェース部毎に選択された2つの情報から多数決判定によって1つの情報を選択する。
システム管理装置10とインターフェース部101〜106に接続された機器とを時刻同期させるための処理は、初期処理および定常処理の少なくとも一方で実行される。時刻同期させるための処理は、システム管理装置10が主導してもよいし、インターフェース部101〜106に接続された機器のいずれかが主導してもよい。
システム管理装置10は、ステップS105で、ステップS103からステップS104でエラーが検出されたかを判定する。例えば、制御部120は、冗長構成を成している機器の一方から情報を受信したが他方から情報を受信しない場合、他方の機器のエラーを検出する。あるいは、制御部120は、冗長構成を成している機器のうち、多数決判定によって採用した情報と異なる情報を送信した機器がある場合、その機器のエラーを検出する。
エラーが検出されない場合(ステップS105,No)、システム管理装置10は、ステップS106に進む。情報を転送されたインターフェース部の制御部120は、ステップS106で、多数決判定で採用した情報を、送信先の機器へ送信する。
ステップS106で情報が送信された後、システム管理装置10は、ステップS103に戻り、次の情報の処理を行う。
ステップS105でエラーが検出された場合(ステップS105,Yes)、有効化されている異常処理部123を有する制御部120は、ステップS107〜ステップS118で、構成テーブル131に基づいて異常処理を実行する。異常処理において更新された構成テーブル131は、他のインターフェース部に配信される。具体的には、制御部120は、ステップS107で、エラー回数の項目の値に1を加算し、加算後の値が閾値nよりも多いかを判定する。加算後の値が閾値nよりも多くない場合(ステップS107,No)、制御部120は、ステップS118に進む。
制御部120は、ステップS118で、エラーが検出された機器に再処理を指示する。再処理を指示された機器は、システム管理装置10へ送信した情報を得た処理を再実行してもよいし、情報をシステム管理装置10へ送信する処理のみを再実行してもよい。エラーが検出された機器が他の機器と冗長構成を成している場合、制御部120は、エラーが検出された機器と冗長構成を成している機器にも再処理を指示してもよい。エラーが検出された機器が他の機器と冗長構成を成しており、かつ、多数決処理で他の機器から送信された情報を採用した場合、制御部120は、エラーが検出された機器に再処理を指示しなくてもよい。
その後、システム管理装置10は、ステップS103に戻る。
加算後のエラー回数の項目の値が閾値nよりも多い場合(ステップS107,Yes)、有効化されている異常処理部123を有する制御部120は、ステップS108に進む。この場合、制御部120は、エラー回数の項目の値を0に戻す。制御部120は、ステップS108で、エラーが検出された機器を含む冗長系統の数が1より多いか、すなわち、エラーが検出された機器が冗長構成を成しているかを判定する。
エラーが検出された機器を含む冗長系統の数が1より多い場合(ステップS108,Yes)、制御部120は、ステップS109に進む。制御部120は、ステップS109で、必要に応じて、冗長系統の切り替えを行う。例えば、エラーが検出された機器が、主系と従系とを有する冗長構成の主系に設定されている場合、制御部120は、エラーが検出された機器を従系に設定する。あるいは、冗長構成に含まれる機器に設定されている優先度を用いて多数決判定が行われる場合、制御部120は、エラーが検出された機器の優先度を下げる。このように、制御部120は、エラーが検出された機器にその後もエラーが継続して検出されてもエラーの影響が小さくなるように、冗長系統の切り替えを行う。
その後、制御部120は、ステップS110に進む。エラーが検出された機器を含む冗長系統の数が1の場合、すなわち、エラーが検出された機器が冗長構成を成していない場合(ステップS108,No)、制御部120は、ステップS109を実行せずに、ステップS110に進む。
制御部120は、ステップS110で、リセット回数の項目の値に1を加算し、加算後の値が閾値mよりも多いかを判定する。加算後の値が閾値mよりも多くない場合(ステップS110,No)、制御部120は、ステップS111に進む。制御部120は、ステップS111で、エラーが検出された機器へリセット信号を送出し、機器にリセットを実行させる。そして、制御部120は、ステップS112で、リセットが完了したことを示すために機器から送信されるリセット完了通知が受信されるのを待ち受ける。リセット完了通知が受信されるまで、機器に対応するステータスの項目の値は、「starting up」に設定される。
ステップS111からステップS112において、制御部120は、リセットした機器に対応するインターフェース部の状態データ132から、リセットした機器の状態を示す情報を取得し、リセットした機器に送信する。情報を送信するタイミングは、例えば、リセット完了通知が受信されたときである。このように、状態を示す情報を機器に送信することにより、機器がリセット前と同じ状態から処理を再開することが可能になる。制御部120は、エラーが検出された機器へリセット信号を送出する前に、機器に最新の状態を示す情報を送信するように要求し、送信された情報をリセット完了後に機器に送信してもよい。
リセット完了通知を受信した後、制御部120は、ステップS118に進む。制御部120は、ステップS118で、リセットした機器に再処理を指示し、その後、ステップS103に戻る。システム管理装置10は、ステップS111が実行された後、ステップS112およびステップS118を実行しつつ、これと並行して、ステップS103以降の処理を実行してもよい。すなわち、システム管理装置10は、リセット完了通知が受信される前に、次の情報の処理を開始してもよい。
加算後のリセット回数の項目の値が閾値mよりも多い場合(ステップS110,Yes)、有効化されている異常処理部123を有する制御部120は、ステップS113に進む。この場合、制御部120は、リセット回数の項目の値を0に戻す。制御部120は、ステップS113で、再起動回数の項目の値に1を加算し、加算後の値が閾値kよりも多いかを判定する。
加算後の再起動回数の項目の値が閾値kよりも多くない場合(ステップS113,No)、制御部120は、ステップS114に進む。制御部120は、ステップS114で、エラーが検出された機器へ再起動信号を送出し、機器に再起動を実行させる。そして、制御部120は、ステップS115で、再起動が完了したことを示すために機器から送信される再起動完了通知が受信されるのを待ち受ける。再起動完了通知が受信されるまで、機器に対応するステータスの項目の値は、「starting up」に設定される。
ステップS114からステップS115において、制御部120は、再起動した機器に対応するインターフェース部の状態データ132から、再起動した機器の状態を示す情報を取得し、再起動した機器に送信する。情報を送信するタイミングは、例えば、再起動完了通知が受信されたときである。このように、状態を示す情報を機器に送信することにより、機器が再起動前と同じ状態から処理を再開することが可能になる。制御部120は、エラーが検出された機器へ再起動信号を送出する前に、機器に最新の状態を示す情報を送信するように要求し、送信された情報を再起動完了後に機器に送信してもよい。
再起動完了通知を受信した後、制御部120は、ステップS118に進む。制御部120は、ステップS118で、再起動した機器に再処理を指示し、その後、ステップS103に戻る。システム管理装置10は、ステップS114が実行された後、ステップS115およびステップS118を実行しつつ、これと並行して、ステップS103以降の処理を実行してもよい。すなわち、システム管理装置10は、再起動完了通知が受信される前に、次の情報の処理を開始してもよい。
加算後の再起動回数の項目の値が閾値kよりも多い場合(ステップS113,Yes)、有効化されている異常処理部123を有する制御部120は、ステップS116に進む。制御部120は、ステップS116で、エラーが検出された機器を含む冗長系統の数が1より多いか、すなわち、エラーが検出された機器が冗長構成を成しているかを判定する。
エラーが検出された機器を含む冗長系統の数が1より多い場合(ステップS116,Yes)、制御部120は、ステップS117に進む。制御部120は、ステップS117で、エラーが検出された機器が今後使用されないように、切り離し処理を実行する。切り離し処理において、制御部120は、エラーが検出された機器に対応するステータスの項目の値を「detached」に変更する。制御部120は、さらに、エラーが検出された機器を停止させるための停止信号の送出等の他の処置を行ってもよい。
その後、制御部120は、ステップS118に進む。この場合、制御部120は、切り離した機器には再処理を指示しない。エラーが検出された機器を含む冗長系統の数が1の場合、すなわち、エラーが検出された機器が冗長構成を成していない場合(ステップS116,No)、制御部120は、ステップS114に進む。
上述してきたように、システム管理装置10を用いることにより、複数の機器を接続するための接続経路を減少させることができ、さらに、冗長構成に関する各種の機能をシステム管理装置10に集約することができる。このため、複数の機器を通信可能に接続して構成されるシステムを簡易に実現することが可能になる。
なお、上記の実施例で示した本発明の態様は、本発明の要旨を逸脱しない範囲で任意に変更することができる。例えば、上記の実施例では、機器のエラーを検出した回数に応じて機器をリセットし、機器をリセットした回数に応じて機器を再起動し、機器を再起動した回数に応じて機器を切り離す例について説明したが、異常処理の制御は、これに限定されない。システム管理装置は、機器のリセットまたは再起動の一方を行わなくてもよい。
上記の実施例では、制御部120および記憶部130がインターフェース部毎に設けられる例を示したが、システム管理装置の構成はこれに限定されない。制御部120の機能の一部または全部は、インターフェース部から独立して設けられてもよい。記憶部130に記憶されるデータの一部または全部は、インターフェース部から独立して設けられた記憶部に記憶されてもよい。
上記の実施例では、1つのシステム管理装置を含むシステムの例を示したが、システムは、複数のシステム管理装置を含んでもよい。図5は、複数のシステム管理装置を含むシステムの例を示す図である。図5に示すシステムは、システム管理装置11およびシステム管理装置12を含む。システム管理装置11およびシステム管理装置12は、システム管理装置10と同様の構成を有する。システム管理装置11のインターフェース部107および108は、それぞれ、システム管理装置12のインターフェース部の1つと接続されている。このように複数のシステム管理装置が接続される場合、1つのシステム管理装置が主系となり、他は従系となる。構成管理部121および異常処理部123は、主系のシステム管理装置において有効にされ、有効にされた構成管理部121および異常処理部123が、従系のシステム管理装置に関する制御も担当する。
このように、システム管理装置を相互に接続することにより、システム管理装置の構成を複雑にすることなく、システムに接続可能な機器の数を増やすことができる。さらに、遠方に設置されている機器をシステムに含めることができる。さらに、複数のインターフェース部を用いてシステム管理装置間を複数の経路で接続することにより、システムの信頼性を向上させることができる。システム管理装置を相互に接続する場合、バス同士を直接接続してもよい。
システム管理装置は、システム全体の動作を制御する機能を有してもよい。この場合、システム管理装置に接続された機器は、システム管理装置の指示に応じて各種処理を実行する。システム全体の動作を制御する機能を有するシステム管理装置の動作について、図6を参照しながら説明する。図6におけるステップS201〜ステップS202の初期処理と、ステップS207〜ステップS218の異常処理は、図4に示した例と同様であるので、説明を省略する。
システム管理装置は、ステップS203で、どの種別の機器にどの処理を実行させるかを判定し、判定した機器に判定した処理の実行を指示する。どの種別の機器にどの処理を実行させるかは、例えば、予め設定されたスケジュール、それ以前に機器から受信した情報、予め設定された判定ロジック等に基づいて決定される。システム管理装置は、ステップS204で、機器から処理結果を示す情報を受信し、ステップS205で、多数決判定処理を行って、採用する情報を判定する。
続いて、システム管理装置は、ステップS206で、ステップS204からステップS205でエラーが検出されたかを判定する。エラーが検出されない場合(ステップS206,No)、システム管理装置は、ステップS203に戻り、どの種別の機器にどの処理を実行させるかを再び判定する。この判定は、ステップS205で採用した情報に応じて変動することがある。エラーが検出された場合(ステップS206,Yes)、システム管理装置は、ステップS207〜ステップS218で、異常処理を実行する。
上記のシステム管理装置10〜12は、例えば、ロケットおよび宇宙船等の宇宙機に搭載されるシステムに適用することができる。この場合、宇宙機に搭載される各種のアビオニクスが機器20a〜20cに相当する。宇宙機に搭載されるシステムは、高度な信頼性が要求されるが、接続される機器の構成を簡易にしつつ冗長構成を容易に実現することができるシステム管理装置10〜12は、そのようなシステムの構築に好適である。