以下に、システム管理装置およびシステムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、この実施例における構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。
図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を接続する場合、これらの機器は、例えば、図20に示すように接続される。図20に示す例では、一方の機器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を接続することにより、冗長構成の実現も容易になる。例えば、図20に示した構成の場合、冗長化された機器が正常に動作しているか否かの監視、冗長化された機器から送信された情報のいずれを採用するかを決定するための多数決処理等を、個々の機器が行わなければならない。一方、システム管理装置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は、インターフェース部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に記憶されるデータの一部または全部は、インターフェース部から独立して設けられた記憶部に記憶されてもよい。
図5は、制御部および記憶部がインターフェース部から独立して設けられたシステム管理装置の構成の例を示す図である。図5に示すシステム管理装置11は、インターフェース部101x〜106xと、コントローラ部151〜153とを備える。
インターフェース部101x〜106xは、制御部120および記憶部130をもたないことを除いて、図1に示したシステム管理装置10のインターフェース部101〜106と同様の構成を有する。すなわち、インターフェース部101x〜106xには、それぞれ、2台の機器20a、2台の機器20b、および2台の機器20cが接続される。インターフェース部101x〜106xのそれぞれは、データ信号を送受信するためのポート(ポート#1D〜ポート#6D)と、リセットまたは再起動のための信号を送受信するためのポート(ポート#1R〜ポート#6R)とを有する。インターフェース部101x〜106xは、接続部111〜113のそれぞれによって、電気的に接続される。
コントローラ部151〜153は、それぞれ、制御部120および記憶部130を有する。コントローラ部151〜153は、接続部111〜113のそれぞれによって、電気的に接続される。さらに、コントローラ部151〜153は、接続部111〜113のそれぞれによって、インターフェース部101x〜106xと接続される。
制御部120および記憶部130は、図1に示したシステム管理装置10の制御部120および記憶部130と同様の機能を有する。制御部120が備える構成管理部121および異常処理部123は、1つのコントローラ部に含まれるものが有効化され、他のコントローラ部に含まれるものは無効化される。どの構成管理部121および異常処理部123が有効化されるかは、例えば、予め定められたコントローラ部151〜153の優先順位に基づいて判定される。有効化されている構成管理部121および異常処理部123を有するコントローラ部に異常が生じた場合、優先順位が次に高いコントローラ部が有する構成管理部121および異常処理部123が有効化される。
例えば、コントローラ部151〜153の制御部120は、同じ情報を受信し、並行して同じ処理を実行するとともに、他のコントローラ部の制御部120の処理結果を取得する。そして、各コントローラ部の制御部120の処理結果を多数決判定することにより、他のコントローラ部に異常があればそれを検出する。
このように、制御部120および記憶部130は、システム管理装置11においては、インターフェース部101x〜106xから独立して、コントローラ部151〜153に設けられている。このように制御部120および記憶部130をインターフェース部から独立させることにより、必要な制御部120および記憶部130の数を減らすことができる。例えば、図1に示したシステム管理装置10は、6個の制御部120および記憶部130を必要とするが、システム管理装置11では、制御部120および記憶部130の数は3個で済む。さらに、システム管理装置10においては、インターフェース部の数を増やした分だけ制御部120および記憶部130の数を増やす必要があるが、システム管理装置11においては、インターフェース部の数を増やしても制御部120および記憶部130の数はそのままでよい。
制御部120および記憶部130の数を減らすことにより、部品点数が少なくなるため、故障発生率が低減し信頼性が向上する。さらに、部品点数が少なくなる上に、部品を実装するボードの面積が小さくて済むようになるために、システム管理装置のサイズおよび質量を小さくすることができる。この特徴は、特に、システム管理装置を、ロケットおよび宇宙船等の重量削減が重要視される機械に搭載する場合に有利である。さらに、制御部120および記憶部130は比較的高価な部品であるため、制御部120および記憶部130の数の削減は、コストの低減に寄与する。
上述したように、制御部120に含まれる多数決判定部122は、外部の冗長構成に関する多数決判定と、内部の冗長構成に関する多数決判定という2重の多数決判定を行う。システム管理装置11は、制御部120の機能のうち、内部の冗長構成に関する多数決判定を行う機能をもつ制御部と、内部の冗長構成に関する多数決判定に関連する情報を記憶する記憶部とをインターフェース部101x〜106xのそれぞれに備え、その他の機能をもつ制御部と、その他の機能に関連する情報を記憶する記憶部とをコントローラ部151〜153のそれぞれに備えてもよい。すなわち、システム管理装置11は、内部の冗長構成に関する多数決判定を行うための構成要素が、コントローラ部151〜153のそれぞれからインターフェース部101x〜106xのそれぞれに移動した構成を有してもよい。この構成の場合、インターフェース部101x〜106xの内部冗長構成に関する多数決判定部は、単純な一致/不一致の照合を行えばよく、図1Aのインターフェース部101x〜106xの制御部120から機能が削減されるので、コスト低減に寄与する。
図6は、制御部および記憶部がインターフェース部から独立して設けられたシステム管理装置の構成の他の例を示す図である。図6に示すシステム管理装置12は、インターフェース部101xx〜103xxと、コントローラ部151〜153とを備える。システム管理装置12では、制御部120および記憶部130は、インターフェース部101xx〜103xxから独立して、コントローラ部151〜153に設けられている。さらに、インターフェース部101xx〜103xxは、それぞれ2つの機器を接続することができるように構成されている。このように1つのインターフェース部に複数の機器を接続できるように構成することにより、接続可能な機器の数を維持しつつ、部品点数をさらに減らすことができる。
なお、図5および6では、制御部120および記憶部130がコントローラ部151〜153のそれぞれに備えられている例、すなわち、制御部120および記憶部130の機能が3重に冗長化されている例について説明した。しかしながら、制御部120および記憶部130の機能の冗長度は3に限定されず、必要な冗長度が設定されてよい。
上記の実施例では、1つのシステム管理装置を含むシステムの例を示したが、システムは、複数のシステム管理装置を含んでもよい。図7は、複数のシステム管理装置を含むシステムの例を示す図である。図7に示すシステムは、システム管理装置13およびシステム管理装置14を含む。システム管理装置13およびシステム管理装置14は、システム管理装置10と同様の構成を有する。システム管理装置13のインターフェース部107および108は、それぞれ、システム管理装置14のインターフェース部の1つと接続されている。このように複数のシステム管理装置が接続される場合、1つのシステム管理装置が主系となり、他は従系となる。構成管理部121および異常処理部123は、主系のシステム管理装置において有効にされ、有効にされた構成管理部121および異常処理部123が、従系のシステム管理装置に関する制御も担当する。
このように、システム管理装置を相互に接続することにより、システム管理装置の構成を複雑にすることなく、システムに接続可能な機器の数を増やすことができる。さらに、遠方に設置されている機器をシステムに含めることができる。さらに、複数のインターフェース部を用いてシステム管理装置間を複数の経路で接続することにより、システムの信頼性を向上させることができる。システム管理装置を相互に接続する場合、接続部同士を直接接続してもよい。
システム管理装置は、システム全体の動作を制御する機能を有してもよい。この場合、システム管理装置に接続された機器は、システム管理装置の指示に応じて各種処理を実行する。システム全体の動作を制御する機能を有するシステム管理装置の動作について、図8を参照しながら説明する。図8におけるステップS201〜ステップS202の初期処理と、ステップS207〜ステップS218の異常処理は、図4に示した例と同様であるので、説明を省略する。
システム管理装置は、ステップS203で、どの種別の機器にどの処理を実行させるかを判定し、判定した機器に判定した処理の実行を指示する。どの種別の機器にどの処理を実行させるかは、例えば、予め設定されたスケジュール、それ以前に機器から受信した情報、予め設定された判定ロジック等に基づいて決定される。システム管理装置は、ステップS204で、機器から処理結果を示す情報を受信し、ステップS205で、多数決判定処理を行って、採用する情報を判定する。
続いて、システム管理装置は、ステップS206で、ステップS204からステップS205でエラーが検出されたかを判定する。エラーが検出されない場合(ステップS206,No)、システム管理装置は、ステップS203に戻り、どの種別の機器にどの処理を実行させるかを再び判定する。この判定は、ステップS205で採用した情報に応じて変動することがある。エラーが検出された場合(ステップS206,Yes)、システム管理装置は、ステップS207〜ステップS218で、異常処理を実行する。
上記のシステム管理装置10〜14は、例えば、ロケットおよび宇宙船等の宇宙機に搭載されるシステムに適用することができる。この場合、宇宙機に搭載される各種のアビオニクスが機器20a〜20cに相当する。宇宙機に搭載されるシステムは、高度な信頼性が要求されるが、接続される機器の構成を簡易にしつつ冗長構成を容易に実現することができるシステム管理装置10〜14は、そのようなシステムの構築に好適である。
実施例1で説明したシステム管理装置に接続された各機器が時刻同期して動作するシステムの例について説明する。以下の説明において、既に説明した部分と同様の部分には、当該部分と同じ符号を付し、その説明を重ねて行わないことがある。
以下の説明においては、説明を簡単にするため、冗長化されている接続部のうち、接続部111のみについて説明し、他の接続部についての説明を省略する。さらに、接続部111の接続形態はスター型であると想定する。さらに、データ信号を送受信するためのポート#1Dと、リセットまたは再起動のための信号を送受信するためのポート#1RとをまとめてポートP#1のように記載する。
本実施例に係るシステムの構成について説明する。図9は、本実施例に係るシステムの構成を示す図である。図9に示すシステムは、機器20d〜20gと、クロックマスタ30と、システム管理装置10を含む。機器20d〜20gおよびクロックマスタ30は、システム管理装置10を介して相互に通信可能に構成される。機器20d〜20gおよびクロックマスタ30が採用する通信方式は、イーサネット(登録商標)である。以下の説明では、機器20d〜20gを、いずれであるかを特定することなく、機器20と総称することがある。
機器20は、リアルタイム処理を実行する。例えば、機器20は、他の機器20がある処理を完了すると、その処理結果に基づく処理を所定の時間内に完了するように構成される。機器20は、リアルタイム性を確保するために、送信するデータを複数のグループのいずれかに分類し、グループ毎に設定された時間帯に、そのグループに分類されたデータを送信する。機器20による通信制御の詳細については後述する。
機器20は、何かを検出する機器であってもよいし、他の機器を駆動する機器であってもよいし、他の機器によって駆動される機器であってもよい。
クロックマスタ30は、機器20間の時刻同期を実現する。具体的には、クロックマスタ30は、所定の周期毎に同期メッセージを機器20d〜20gへ送信する。同期メッセージは、ほぼ同時に機器20d〜20gに届くように、例えば、同報通信によって送信される。機器20d〜20gは、同期メッセージを受信した時刻に基づいて、時刻同期を行う。
システム管理装置10は、機器20間でのパケットの送信および受信を中継する。システム管理装置10が中継するパケットには、データが収容されたパケットと、同期メッセージ等の制御用のパケットとが含まれる。システム管理装置10は、インターフェース部101〜105と、接続部111とを有する。インターフェース部101〜105は、それぞれ、ケーブル40を介して機器20d〜20gおよびクロックマスタ30に接続される。
接続部111は、あるインターフェース部で受信されたパケットが、そのパケットの送信先の機器20が接続されたインターフェース部から出力されるように、出力先の切り替えを行う。接続部111による出力先の切り替えは、パケットに設定された送信先アドレスに基づいて行われる。接続部111は、複数のインターフェース部において同時にパケットを受信した場合でもパケットロスが生じないように、受信したパケットを一時的に記憶するバッファ140を有する。
図10を参照しながら、機器20の構成について、さらに詳しく説明する。図10は、機器20dのブロック図である。機器20e〜20gは、機器20dと同様の構成を有する。図10に示すように、機器20dは、処理部21と、ネットワークインターフェース22と、通信制御部23とを有する。
処理部21は、機器20dに固有の機能を実現するための各種処理を実行する。処理部21が実行する処理は、機器20d〜20gのそれぞれで異なってもよい。ネットワークインターフェース22は、ケーブル40が接続されるインターフェースである。ケーブル40は、機器20dとシステム管理装置10とを通信可能に接続する。ネットワークインターフェース22は、例えば、物理層レベル、データリンク層レベル、ネットワーク層レベル、およびトランスポート層レベルでの接続を実現する。
通信制御部23は、リアルタイム性を確保するための通信制御を実行する。通信制御部23による通信制御は、例えば、セッション層およびプレゼンテーション層のレベルで行われる。通信制御部23は、受付部231と、グループ判定部232と、時間帯判定部233と、送信部234と、送信バッファ235と、受信部236と、多数決判定部237と、受信バッファ238とを有する。
受付部231は、他の機器20へ送信すべきデータを処理部21から受け付け、データを送信バッファ235に格納する。受付部231が受け付けるデータは、処理部21によって予めパケットに形成される。受付部231は、パケットに形成されていないデータを処理部21から受け付けるように構成されてもよい。その場合、データのパケット化は、受付部231または送信部234が行う。
グループ判定部232は、受付部231が受け付けたデータを予め設定された複数のグループのうちどのグループに分類するかを判定する。グループは、時間帯と対応付けられ、データは、分類されたグループに対応する時間帯に送信される。グループおよび時間帯は、それぞれの時間帯において、システム内で送受信されるデータ(パケット)の量が時間帯内に伝送可能な量を超えないように、システム内で共通して設定される。
例えば、グループは、データの優先度に基づいてデータがグループに分類されるように設定される。データの優先度は、システム内で伝送されるデータ(パケット)の優先度毎の量が周期的に一貫している場合に、分類の基準として好適である。周期的に一貫しているとは、ある周期毎の量がほぼ一定であることを意味する。分類の基準は、システム内で伝送されるデータ(パケット)のグループ毎の量が周期的に一貫している限り、どのような基準でもよい。例えば、データの種類、データが生成される頻度、データのサイズ、データの送信先等が分類の基準として用いられてもよい。
時間帯判定部233は、受付部231が受け付けたデータをどの時間帯で送信するかを判定する。それぞれのグループに対応する時間帯は、周期的に到来する。時間帯判定部233は、グループ判定部232によって分類されたグループに対応する次の時間帯を、データを送信する時間帯と判定する。
送信部234は、送信バッファ235に格納されているデータ(パケット)を、時間帯判定部233によって判定された時間帯の開始時にネットワークインターフェース22を介して送信する。同じ時間帯に送信すべきデータ(パケット)が複数ある場合、送信部234は、それらを続けて送信する。送信バッファ235に格納されているデータがパケットに形成されていない場合、送信部234は、パケットに形成した後にデータを送信する。
送信バッファ235は、受付部231で受け付けられたデータを一時的に記憶する。送信バッファ235に記憶されるデータは、パケット化されていてもよいし、いなくてもよい。
受信部236は、ネットワークインターフェース22を介してパケットを受信する。受信部236が受信するパケットは、データが収納されたパケットと、クロックマスタ30から送信された同期メッセージ等の制御用のパケットを含む。データが収納されたパケットが受信された場合、データの取り出しは、受信部236または処理部21が行う。
多数決判定部237は、冗長化されたデータが受信された場合に、多数決判定を行う。多数決判定の詳細については後述する。
受信バッファ238は、受信部236で受信されたデータを一時的に記憶する。受信バッファ238に記憶されるデータは、パケット化されていてもよいし、いなくてもよい。
図10に示した例では、ネットワークインターフェース22及び通信制御部23が機器20dに配置されているが、ネットワークインターフェース22及び通信制御部23は、システム管理装置10に配置されてもよい。すなわち、図10に示した処理部21、ネットワークインターフェース22及び通信制御部23のうち、システム管理装置10等のシステム管理装置がネットワークインターフェース22及び通信制御部23を備え、システム管理装置に接続される機器が処理部21のみを備える構成でもよい。
図11を参照しながら、図9に示したシステムにおける通信制御についてより詳細に説明する。図11は、通信制御について説明するための図である。図11は、機器20dから機器20eへデータを送信するための制御について説明しているが、他の機器20間でも同様の制御が行われる。
通信制御は、周期的に実行される。1つの周期の長さは、少なくとも、リアルタイム処理において機器20間でのデータの送受信に許容されている遅延時間以下に設定される。各周期には、予め設定されている複数のグループのそれぞれに対応する時間帯が設けられる。
各周期の初めには、同期処理が行われる。同期処理においては、クロックマスタ30が、各機器20に同期メッセージを送信する。同期メッセージを受信すると、機器20の通信制御部23は、それぞれ、受信時刻に基づいて時刻同期を行う。こうして時刻同期を行うことにより、各グループに対応する時間帯の開始時刻を、全ての機器20間で一致させることができる。機器20は、同期メッセージを受信した場合、または時刻同期が完了した場合に、クロックマスタ30に応答を返してもよい。同期処理の長さは、少なくとも、同期メッセージの伝送と、機器20における時刻同期とに要する時間よりも長く設定される。
機器20dの処理部21は、他の機器20へ送信するデータを生成する。データの生成は、通信制御部23による通信制御の周期とは非同期に実行されてもよい。すなわち、処理部21は、リアルタイム性を確保するために機器20間の通信がどのように制御されているかを考慮することなく、予め決められた処理を実行してもよい。このような構成により、通信制御部23の仕様に合わせて、処理部21の仕様を変更する必要がなくなる。
図11に示す例では、機器20eへ送信すべきデータa〜hが、処理部21によって順次生成されている。データa、データd、およびデータgは、グループ判定部232によって「グループ1」に分類されるデータである。データbおよびデータeは、グループ判定部232によって「グループ2」に分類されるデータである。データc、データfおよびデータhは、グループ判定部232によって「グループn」に分類されるデータである。
データa〜hは、送信バッファ235に一時的に格納される。そして、データa〜hは、複数のグループのいずれか1つに分類され、分類されたグループに対応する時間帯が到来したときに送信される。
データaは、第1周期におけるグループ1用の時間帯の到来前に生成されているため、第1周期におけるグループ1用の時間帯の開始時に機器20eへ送信される。データdおよびデータgは、第1周期におけるグループ1用の時間帯と第2周期におけるグループ1用の時間帯の間の期間に生成されているため、第2周期におけるグループ1用の時間帯の開始時に機器20eへ送信される。
データbは、第1周期におけるグループ2用の時間帯の到来前に生成されているため、第1周期におけるグループ2用の時間帯の開始時に機器20eへ送信される。データeは、第1周期におけるグループ2用の時間帯と第2周期におけるグループ2用の時間帯の間の期間に生成されているため、第2周期におけるグループ2用の時間帯の開始時に機器20eへ送信される。
データcは、第1周期におけるグループn用の時間帯の到来前に生成されているため、第1周期におけるグループn用の時間帯の開始時に機器20eへ送信される。データfおよびデータhは、第1周期におけるグループn用の時間帯と第2周期におけるグループn用の時間帯の間の期間に生成されているため、第2周期におけるグループn用の時間帯の開始時に機器20eへ送信される。
このように、それぞれのグループに対応する時間帯では、そのグループに分類されたデータのみが送信される。既に説明したように、グループは、対応する時間帯において、システム内で送受信されるパケットの量が時間帯内に伝送可能な量を超えないように設定される。このため、ある期間に大量のデータが機器20間で送受信され、遅延またはパケットロスが発生し、それによってリアルタイム性が失われる事態が発生することを抑制することができる。
さらに、この方式では、機器20は、ある程度の幅をもつ時間帯内にデータが受信されるようにデータを送信すればよく、1つの時間帯内に複数のデータの伝送が可能である。このため、1つのパケットが、送信開始から受信完了まで通信経路を占有するように制御する場合と比べて、時刻同期の精度を緩和しても良好な伝送効率を維持することができる。このため、機器20およびシステム管理装置10の構成を簡易にし、開発・製造コストを低減することができる。
リアルタイム性を確保するため、各時間帯の長さは、衝突によるパケットの再送またはロスが生じないように設定される。具体的には、時間帯の長さは、その時間帯にシステム内で送受信されるパケットの量が図9に示したシステム管理装置10のバッファ140の容量を超えないように設定される。送受信されるパケットの量がバッファ140の容量を超えなければ、ある機器20に複数の機器20が同時にパケットを送信しても、衝突によるパケットの再送またはロスは生じない。このため、パケットは、所定の期間内に送信先へ伝送される。
時間帯にシステム内で送受信されるパケットの量がバッファ140の容量を超えないようにする設定は、時間帯の長さだけでなく、データをグループに分類する分類の基準によって実現されてもよい。例えば、ある時間帯に送受信されるパケットの量がバッファ140の容量を超える恐れがある場合には、その時間帯に対応するグループが複数のグループに分割されるように、分類の基準を設定してもよい。
図9では、全てのインターフェース部がバッファ140を共有する例を示したが、システム管理装置10は、インターフェース部毎に独立したバッファを持つように構成されてもよい。図12は、インターフェース部毎に独立してバッファが設けられる例を示す図である。図12において、機器20d〜20gおよびインターフェース部101〜104は、重複して図示されている。左側に図示された機器20d〜20gおよびインターフェース部101〜104は、パケットの送信に関連する。右側に図示された機器20d〜20gおよびインターフェース部101〜104は、パケットの受信に関連する。図12では、インターフェース部105およびクロックマスタ30の図示を省略している。
図12に示した例では、機器20d〜20gから送信されたパケットは、それぞれ、受信バッファ161〜164に格納される。そして、パケットは、接続部111によって送信先に振り分けられる。機器20d〜20gに振り分けられたパケットは、それぞれ、送信バッファ171〜174に格納される。その後、パケットは、送信バッファ171〜174から、対応する機器20へ送信される。受信バッファ161〜164および送信バッファ171〜174は、それぞれ、インターフェース部101〜104の記憶部130に設けられてもよい。
このような構成の場合、時間帯の長さと分類の基準とは、その時間帯に機器20が送信するパケットの量が、受信バッファ161〜164のうち対応する受信バッファの容量を超えないように設定される。このように設定することにより、インターフェース部毎に独立してバッファが設けられている場合でも、衝突によるパケットの再送またはロスが生じない。
時間帯の長さと分類の基準とは、システム管理装置10のバッファ140または受信バッファ161〜164だけでなく、機器20d〜20gの受信バッファ238があふれないように設定されてもよい。
時間帯の長さは、データ量に加えて、システムの性能も考慮して決定される。具体的には、時間帯の長さは、その時間帯に対応するグループに振り分けられたデータを含むパケットを機器20が受信するのに必要な時間またはそれよりも長い時間に設定される。
時間帯nの長さTnは、例えば、以下の式を満たすように設定される。
Tn ≧ RTn_max + Mn
ここで、RTn_maxは、時間帯nに対応するグループに振り分けられたデータを含むパケットの受信に機器20が要する時間の最大値である。例えば、時間帯nに機器20d〜20gが受信するパケットの量が、それぞれ、10kByte、5kByte、6kByte、3kByteであり、機器20d〜20gの受信性能が、それぞれ、50Mbps、60Mbps、40Mbps、40Mbpsであるとする。この場合、機器20d〜20gがパケットの受信に要する時間は、それぞれ、1.6ms、0.6ms、1.2ms、0.6msとなる。この場合のRTn_maxは、1.6msである。
Mnは、マージンである。マージンは、時間帯毎に異なってもよい。例えば、時間帯内に1つの機器20に対して複数の機器20がパケットを送信する場合、システム管理装置10での処理時間が長くなる可能性がある。したがって、この時間帯のマージンは、他の時間帯のマージンよりも長く設定してもよい。あるいは、時間帯内に送信されるデータの優先度に応じてマージンを変更してもよい。具体的には、優先度の高いデータが送信される期間のマージンは、時間帯内でのデータの送信に失敗する可能性を小さくするために、他の時間帯のマージンよりも長く設定してもよい。
図13および図14を参照しながら、図9に示したシステムにおける多数決判定の例についてより詳細に説明する。図13および図14は、多数決判定について説明するための図である。
重要な処理は、冗長性を確保するため、複数の機器20で実行され、それぞれの実行結果を示すデータが他の装置にほぼ同時に送信されるように構成されることがある。例えば、図13に示す例では、機器20e〜20gが、それぞれ同じ処理を実行し、同じ実行結果を示すデータWをほぼ同時に機器20dへ送信している。このように冗長化されたデータが分類されるグループは予め決められている。
機器20dの通信制御部23は、冗長化されたデータが分類されるグループに対応する時間帯では、受信したデータを受信バッファ238に一時的に格納し、多数決判定によって選択したデータのみを処理部21に出力する。多数決判定が実行されるタイミングは、時間帯が終わるとき、または同じ種類のデータが時間帯内で最初に受信されてから所定の時間が経過したときである。
一方、通常の処理は、1つの機器20で実行され、実行結果を示すデータが、他の装置に送信される。例えば、図14に示す例では、機器20e〜20gが、それぞれ異なる処理を実行し、それぞれの実行結果を示すデータX〜データZを機器20dへ送信している。機器20dの通信制御部23は、冗長化されたデータが分類されないグループに対応する時間帯では、受信したデータを、そのまま処理部21に出力する。
このように、機器20は、時間帯に応じて、多数決判定を行うか否かを切り替える。このため、冗長化されたデータが分類されるグループに対応する時間帯では、送信されるデータの信頼性が向上し、冗長化されたデータが分類されないグループに対応する時間帯では、より多くのデータを伝送することができる。
図15〜図17を参照しながら、図9に示したシステムにおいて実行される処理の処理手順について説明する。
図15は、クロックマスタ30が実行する処理の処理手順の例を示すフローチャートである。図15に示す処理手順は、繰り返して実行される。クロックマスタ30は、新たな周期が開始するかを判定する(ステップS301)。具体的には、クロックマスタ30は、同期メッセージを前回送信してから周期の長さに相当する時間が経過した場合に、新たな周期が開始すると判定する。新たな周期が開始する場合(ステップS301,Yes)、クロックマスタ30は、機器20のそれぞれに同期メッセージを送信する(ステップS302)。新たな周期が開始しない場合(ステップS301,No)、同期メッセージは送信されない。
このように、クロックマスタ30は、新たな周期が開始する度に、機器20に同期メッセージを送信し、時刻同期を行う。機器20が、十分に正確な計時機能を有する場合、クロックマスタ30は、複数の周期毎(例えば、10周期毎)に、機器20に同期メッセージを送信してもよい。
図16は、機器20の通信制御部23によるデータ送信処理の処理手順の例を示すフローチャートである。図16に示す処理手順は、繰り返して実行される。通信制御部23は、クロックマスタ30から同期メッセージを受信したかを判定する(ステップS401)。同期メッセージを受信した場合(ステップS401,Yes)、通信制御部23は、時刻同期処理を実行する(ステップS402)。同期メッセージを受信していない場合(ステップS401,No)、時刻同期処理は実行されない。
続いて、通信制御部23は、処理部21からデータ(パケット)を受信したかを判定する(ステップS403)。データを受信した場合(ステップS403,Yes)、通信制御部23は、データをどのグループに分類するかを判定し(ステップS404)、データを送信バッファ235に格納する(ステップS405)。ステップS405は、ステップS404よりも前に実行されてもよい。データを受信していない場合(ステップS403,No)、ステップS404およびステップS405は実行されない。
続いて、通信制御部23は、新たな時間帯が開始するかを判定する(ステップS406)。具体的には、通信制御部23は、時刻同期処理によって同期された時刻からの経過時間に基づいて、新たな時間帯が開始するか否かを判定する。新たな時間帯が開始する場合(ステップS406,Yes)、通信制御部23は、その時間帯に送信すべきデータがあるかを判定する(ステップS407)。
送信すべきデータがある場合(ステップS407,Yes)、通信制御部23は、そのデータを送信バッファ235から取得し(ステップS408)、ネットワークインターフェース22経由で送信する(ステップS409)。新たな時間帯が開始しない場合(ステップS406,No)、または送信すべきデータがない場合(ステップS407,No)、ステップS408およびステップS409は実行されない。
このように、通信制御部23は、送信すべきデータをグループのいずれかに分類し、グループに対応する時間帯内でデータを送信する。図16では、時刻同期処理(ステップS401〜ステップS402)が、データ送信処理の一部として実行されているが、時刻同期処理は、図17に示すデータ受信処理の一部として実行されてもよいし、独立して実行されてもよい。
図17は、機器20の通信制御部23によるデータ受信処理の処理手順の例を示すフローチャートである。図17に示す処理手順は、繰り返して実行される。通信制御部23は、現在の時間帯が冗長化されたデータが受信される時間帯、すなわち、多数決判定の必要な時間帯であるかを判定する(ステップS501)。
多数決判定の必要な時間帯でない場合(ステップS501,No)、通信制御部23は、システム管理装置10からデータを受信したかを判定する(ステップS502)。データを受信した場合(ステップS502,Yes)、通信制御部23は、データを処理部21へ出力する(ステップS503)。データを受信していない場合(ステップS502,No)、ステップS503は、実行されない。
その後、通信制御部23は、時間帯が終了するかを判定する(ステップS504)。時間帯が終了しない場合(ステップS504,No)、通信制御部23は、ステップS502に戻る。時間帯が終了する場合(ステップS504,Yes)、通信制御部23は、図17に示す処理手順を終了する。
多数決判定の必要な時間帯である場合(ステップS501,Yes)、通信制御部23は、システム管理装置10からデータを受信したかを判定する(ステップS505)。データを受信した場合(ステップS505,Yes)、通信制御部23は、データを受信バッファ238に格納する(ステップS506)。データを受信していない場合(ステップS505,No)、ステップS506は、実行されない。
その後、通信制御部23は、時間帯が終了するかを判定する(ステップS507)。時間帯が終了しない場合(ステップS507,No)、通信制御部23は、ステップS505に戻る。時間帯が終了する場合(ステップS507,Yes)、通信制御部23は、受信バッファ238からデータを取得し(ステップS508)、多数決判定処理を行う(ステップS509)。そして、通信制御部23は、多数決判定処理において選択されたデータを処理部21へ出力し(ステップS510)、図17に示す処理手順を終了する。
このように、通信制御部23は、時間帯に応じて多数決判定を行うか否かを切り替えることにより、信頼性の向上と伝送効率の向上とを両立させる。
なお、上記の実施例で示した本発明の態様は、本発明の要旨を逸脱しない範囲で任意に変更することができる。例えば、上記の実施例で示した通信制御方法は、イーサネットネットワーク以外のネットワークに適用してもよい。上記の実施例では、クロックマスタ30が独立して設けられる例を示したが、クロックマスタ30の機能は、機器20のいずれかによって実現されてもよいし、システム管理装置10〜14のいずれかによって実現されてもよい。
図18は、クロックマスタ30の機能がシステム管理装置11によって実現される例を示す図である。図18に示す例では、クロックマスタ30の機能は、3重に冗長化されているコントローラ部151〜153のいずれかによって実現される。
上記の実施例では、1つのシステム管理装置を含むシステムの例を示したが、システムは、複数のシステム管理装置を含んでもよい。図19は、複数のシステム管理装置を含むシステムの例を示す図である。図19に示すシステムは、システム管理装置10aおよびシステム管理装置10bを含む。システム管理装置10aおよびシステム管理装置10bは、システム管理装置10と同様の構成を有する。システム管理装置10aのインターフェース部101〜105の1つは、ケーブル40を介して、システム管理装置10bのインターフェース部101〜105の1つと接続されている。
このように、システム管理装置を相互に接続することにより、システム管理装置の構成を複雑にすることなく、システムに接続可能な機器20の数を増やすことができる。図9に示したシステムには、機器20d〜20gの4台が接続されているが、図19に示したシステムには、機器20d〜20jの7台が接続されている。
機器20の通信制御部23の機能(より具体的には、受付部231、グループ判定部232、時間帯判定部233、送信部234、受信部236、および多数決判定部237の少なくとも1つの機能)は、ソフトウェアを用いて実現されてもよい。ソフトウェアは、オペレーションシステム(OS)の一部であってもよいし、アプリケーションプログラムであってもよいし、OSとアプリケーションプログラムの間を仲介するミドルウェアであってもよい。一般に、ソフトウェアを用いた制御では、ハードウェアによる制御と比較して、時刻同期の精度が低下する。しかしながら、上記の通信制御方式では、時刻同期の精度への要求が緩和されるため、ソフトウェアを用いた制御でも、リアルタイム性を確保することができる。通信制御部23の機能は、FPGAロジック等を用いたハードウェアで実現されてもよい。
上記のシステムおよび通信制御方法は、例えば、ロケットおよび宇宙船等の宇宙機の制御システムに適用することができる。この場合、宇宙機に搭載される各種のアビオニクスが機器20に相当する。宇宙機における制御システムでは、各種の処理が周期的に行われる。このため、アビオニクス間でデータを伝送する周期がほぼ一貫しており、グループおよび時間帯の設定が容易である。
グループおよび時間帯の設定を自動化してもよい。例えば、グループおよび時間帯を設定せずにシステムを一定期間稼動させる間に、システム管理装置10が、データの送信される時間、送信されるデータのサイズ、種類、優先度等を記録し、記録された情報に基づいて、システム管理装置10またはクロックマスタ30が、グループおよび時間帯を設定してもよい。設定されたグループおよび時間帯は、機器20に通知される。