(58)【調査した分野】(Int.Cl.,DB名)
前記プロセス実行手段によって実行される前記プロセスは、前記システム情報送信手段を構成し、自プロセスに係るプロセス情報を含むシステム情報を前記別のノードにマルチキャストすることを特徴とする請求項1に記載のノード。
自ノード又は自ノードで実行されるプロセスの状態を監視して、当該状態を示す情報を前記システム情報送信手段によってマルチキャストされるシステム情報とするノード管理手段を更に備える請求項1〜3の何れか一項に記載のノード。
【発明を実施するための形態】
【0016】
以下、図面と共に本発明に係るノードの好適な実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【0017】
図1に本実施形態に係るノード10により構成されるコンピュータシステムである分散型マルチCPU制御システム1を示す。分散型マルチCPU制御システム1は、例えば、自律型の海中探査機の制御システムとして用いられる。複数のノード10は、ケーブル等によって構成されるネットワーク14によって接続されており、互いに情報の送受信を行えるようになっている。
【0018】
ノード10は、CPU11、メモリ12、通信モジュール13等のハードウェアによって構成されたCPUボードである。これらの構成要素が、後述するノード10の機能手段を構成する。分散型マルチCPU制御システム1では、複数のノード10がネットワークを介して互いに接続されている。各ノード10では、所定の機能である単機能を有するプロセスが起動されて、当該プロセスによって制御システムとしての機能が実現される。
【0019】
例えば、ノード10には、ノード10に応じて海中探査機に設けられた各機器21〜23がケーブル等によって接続されており、各機器21〜23はノード10(のプロセス)によって監視及び制御される。機器21〜23は、具体的には、海中探査機の推進に用いられるスラスタ(推進装置)21、海中探査機の速度を計測する速度計(DVL:Doppler Velocity Log)22、及び海中における海中探査機の位置の計測を行う慣性航法装置(INS:Inertial Navigation System)23等である。
【0020】
なお、各プロセスは、他のプロセスによって得られる情報を利用することがある。例えば、スラスタ21を制御するプロセスは、速度計22を監視するプロセスによって得られる速度計22によって計測された速度、及び慣性航法装置23を監視するプロセスによって得られる慣性航法装置23によって計測された位置(緯度、経度)の情報に基づいてスラスタ21の制御内容を決定する。
【0021】
上述したように、従来の分散型マルチCPU制御システムでは、各プロセスが個別に別のプロセスと通信を行って情報共有を行っていた。そのため、ノード数及びプロセス数が増加するに伴い、システム情報を共有するために複雑なコーディングソフトウェアが必要となっていた。本発明に係るプロセス間の情報共有は、分散型マルチCPU制御システム1において、システム構成の変更を容易にすると共に高い冗長性を持たせることを可能とするものである。
【0022】
<第1実施形態>
図2に第1実施形態に係るノード10の構成を示す。ノード10では、1つ以上のプロセス31,41が稼動される。これらのプロセス31,41は、ノード10が備えるCPU11、メモリ12等によって構成されるプロセス実行手段によって実行され稼動される。各プロセス31,41の実行は、従来のノードと同様に例えば、ノード10内に記憶されるプログラムが読み出されて実行されることによって行われる。本実施形態では、後述するように各プロセスが本発明の機能手段を実現するものである。プロセス31は、従来のノードでも実行される、例えば上述した機器の監視や制御を行うプロセスである。
【0023】
また、ノード10は、共有メモリ51を備える。共有メモリ51は、分散型マルチCPU制御システム1に含まれる各ノード10で実行される各プロセスに係るプロセス情報を含むシステム情報を記憶するメモリである。プロセス情報とは、各プロセスの機能に係るものであり、例えば、上述したスラスタ21から出力されたスラスタ速度(スラスタ回転数)や速度計22によって計測された速度(DVL速度)や慣性航法装置23によって計測された位置を示す情報(INS緯度、経度)等の各プロセス31によって管理される情報である。これらのプロセス情報を、
図3に示すように一定のフォーマットでまとめて配列化(一元化)したものがシステム情報である。システム情報に含まれる情報は、分散型マルチCPU制御システム1で共通したものであり、全てのノード10のプロセスで管理あるいは利用されえる情報である。
【0024】
共有メモリ51は、自ノード10における各プロセス31,41からアクセス可能な状態でシステム情報を記憶する。自ノード10における各プロセス31は、共有メモリ51に格納されたシステム情報を参照して、自プロセス31の機能に必要な情報を取得する。更に、各プロセス31は、自プロセス31に係るプロセス情報をシステム情報に含めて共有メモリ51に記憶させる。即ち、各プロセス31は、自プロセス31で管理しているプロセス情報で、共有メモリ51に記憶されたシステム情報のうち当該プロセス情報を更新する。例えば、プロセス31は、一定時間毎(例えば、100ms毎)に自身が管理しているDVL速度の情報で、システム情報のうちDVL速度の情報を更新する。あるいは、プロセス31は、速度計22を監視することによってDVL速度の情報を新たに取得した場合、システム情報のうちDVL速度の情報を新たに取得したDVL速度の情報で更新することとしてもよい。
【0025】
上記のプロセス31,41のうち共有メモリ制御プロセス41は、本実施形態の機能に係るプロセスである。共有メモリ制御プロセス41は、システム情報のうち自ノード10の各プロセス31を含むプロセス情報をシステム情報として別のノード10にマルチキャストするシステム情報送信手段である。このマルチキャストは、分散型マルチCPU制御システム1に含まれる全てのノード10に対して行われる。
【0026】
例えば、共有メモリ制御プロセス41は、一定時間毎(例えば、100ms毎)に共有メモリ51を参照して、システム情報を取得して(読み出して)別のノード10にマルチキャストする。あるいは、共有メモリ制御プロセス41は、共有メモリ51を監視しておき、システム情報の更新が行われたらシステム情報を取得して別のノード10にマルチキャストする。なお、送信するシステム情報は、自ノード10の共有メモリ51に記憶されている全てのプロセス情報を含むものであってもよいし、自ノード10において更新したプロセス情報のみを含むものであってもよい。
【0027】
また、共有メモリ制御プロセス41は、別のノード10からマルチキャストされたシステム情報を受信して共有メモリ51に記憶させるシステム情報格納手段である。即ち、共有メモリ制御プロセス41は、別のノード10(の共有メモリ制御プロセス41)から送信されたシステム情報で、自ノード10の共有メモリ51に記憶されたシステム情報を更新する。
【0028】
このとき、共有メモリ制御プロセス41は、システム情報の更新確認及び共有メモリ51の保全のために、常に共有メモリ51をリフレッシュしてからシステム情報を更新(格納)することとしてもよい。あるいは、共有メモリ制御プロセス41は、一定時間毎に共有メモリ51をリフレッシュすることとしてもよい。以上が、第1実施形態に係るノードの構成である。
【0029】
引き続いて、
図4のシーケンス図を用いて、本実施形態に係るノード10で実行される処理を説明する。本処理は、分散型マルチCPU制御システム1が稼動している間、常に行われる。
【0030】
ノード10では、各プロセス31によって、自プロセス31に係るプロセス情報がシステム情報に含められて共有メモリ51に記憶される(S01)。その一方で、共有メモリ制御プロセス41によって、共有メモリ51が参照されてシステム情報が取得される(S02)。続いて、取得されたシステム情報が、共有メモリ制御プロセス41から別のノード10にマルチキャストされる(S03)。
【0031】
また、共有メモリ制御プロセス41によって、別のノード10から(S02,S03に相当する処理によって)マルチキャストされたシステム情報が受信される(S04)。続いて、共有メモリ制御プロセス41によって、受信されたシステム情報が共有メモリ51に記憶される(S05)。また、各プロセス31によって、共有メモリ51に記憶されたシステム情報のうち自プロセス31の機能に必要な情報が参照される(S06)。
【0032】
以上が、本実施形態に係るノード10で実行される処理である。なお、ノード10においては、S01〜S06の処理は必ずしも順番に行われる必要はなく、それぞれのタイミングで行われればよい。但し、S02の処理とS03の処理とはセットであり、S04の処理とS05の処理とはセットである。なお、本実施形態では、共有メモリ51において、システム情報における自ノード10のプロセス31に係るプロセス情報が他のノード10でのシステム情報における当該プロセス情報よりも早く更新される。
【0033】
上述したように本実施形態に係るノード10では、各プロセス31に係るプロセス情報は、システム情報として全て共有メモリ51に記憶されて各プロセス31において利用される。上記の情報の共有に、各プロセス間の個別の情報の送受信は不要である。更に、本実施形態は、全てのノード10で同一の機能を有する共有メモリ51と共有メモリ制御プロセス41とを設け、また、各プロセス31に自プロセス31の情報を共有メモリ51に格納させ必要な情報は共有メモリ51を参照させることによって実現できる。
【0034】
従って、システム構成の変更を行う場合であっても、システム情報の共有を容易に行うことができ、その結果、当該変更を容易に行うことができる。また、各ノード10において全てのシステム情報を共有することになるので高い冗長性及び移植性を持たせることが可能になる。これによりシステムや機器の制御の設計及び換装を容易にし、堅牢なシステムが構築される。
【0035】
<第2実施形態>
図5に第2実施形態に係るノード110の構成を示す。なお、以下の説明では第1実施形態との相違点について示す。従って、特段の説明が無い部分については第1実施形態と同様である(以下の実施形態についても同様)。
【0036】
ノード110では、1つ以上のプロセス131と、共有メモリ制御プロセス141とが実行される。また、ノード10は、共有メモリ151を備える。
【0037】
各プロセス131は、自プロセス131に係るプロセス情報を含むシステム情報を別のノード110にマルチキャストするシステム情報送信手段である。例えば、プロセス131は、一定時間毎(例えば、100ms毎)に自身が管理しているDVL速度の情報を含むシステム情報をマルチキャストする。あるいは、プロセス131は、速度計22を監視することによってDVL速度の情報を新たに取得した場合、取得したDVL速度の情報を含むシステム情報をマルチキャストする。なお、送信するシステム情報は、自ノード110の共有メモリ151に記憶されている(自プロセス131以外の)全てのプロセス情報を含むものであってもよいし、自プロセス131において更新したプロセス情報のみを含むものであってもよい。このマルチキャストは、分散型マルチCPU制御システム1に含まれる全てのノード110に対して(自ノード110に対しても)行われる。
【0038】
また、各プロセス131は、ネットワークの正常性が確保されずに、パケットロス等によってシステム情報がノード110間で共有されない場合には、自プロセス131が管理するプロセス情報を含むシステム情報を自ノード110の共有メモリ151にバックアップしておく。
【0039】
本実施形態においては、共有メモリ制御プロセス141によるマルチキャストは行われない。別のノード110及び自ノード(のプロセス131)からマルチキャストされたシステム情報の受信及び共有メモリ151への格納は、共有メモリ制御プロセス141によって第1実施形態と同様に行われる。以上が、第2実施形態に係るノード110の構成である。
【0040】
引き続いて、
図6のシーケンス図を用いて、本実施形態に係るノード110で実行される処理を説明する。本処理は、分散型マルチCPU制御システム1が稼動している間、常に行われる。
【0041】
ノード110では、各プロセス131によって、自プロセス131に係るプロセス情報を含むシステム情報が別のノード10にマルチキャストされる(S11)。また、このマルチキャストと同じタイミングで、各プロセス131によって、自プロセス131に係るプロセス情報を含むシステム情報が自ノード10の共有メモリ151にバックアップされる(S15)。
【0042】
また、共有メモリ制御プロセス141によって、システム情報として別のノード110から(S11に相当する処理によって)マルチキャストされたシステム情報が受信される(S12)。続いて、共有メモリ制御プロセス141によって、受信されたシステム情報が共有メモリ151に記憶される(S13)。また、各プロセス131によって、共有メモリ151に記憶されたシステム情報のうち自プロセス31の機能に必要な情報が参照される(S14)。
【0043】
以上が、本実施形態に係るノード110で実行される処理である。なお、ノード110においては、S11〜S14の処理は必ずしも順番に行われる必要はなく、それぞれのタイミングで行われればよい。但し、S12の処理とS13の処理とはセットである。なお、本実施形態では、全てのノード110には各プロセス131のプロセス情報を含むシステム情報が同じタイミングで入力されるので、各ノード110の共有メモリ151では同じタイミングでシステム情報が更新される。
【0044】
上述したように、各プロセス131が、自プロセス131に係るプロセス情報を含むシステム情報を全てのノード110にマルチキャストするようにしても、システム情報の共有を容易に行うことができる。
【0045】
<第3実施形態>
ところで、長時間の運用を前提とする海中機器にもかかわらず、従来の分散型マルチCPU制御システムでは、各プロセスあるいは各ノードに不具合が生じた場合、当該プロセスあるいは当該ノードにおいて自力で不具合に対処する術がなく、海中機器自体を全回収して不具合に対処する必要があった。しかし、突発的な不具合発生に伴うシステムの再起動、あるいは計測機器、観測機器の取り付け取り外し、そしてこれに伴う制御系、通信系の構成変更(ノードの増減)は、海中機器の開発及びその運用において回避困難な事項である。また、長期間運用を基本とする海中機器においては、システムの自己復旧はその運用性を考慮した結果、必須の事項となる。
【0046】
以下に説明する実施形態では、上述した2つの実施形態の何れかによって各ノード間でのシステム情報が共有されるシステムを利用して、上記の問題点を解決するためのシステムについて説明する。
【0047】
図7に本実施形態に係るノード210の構成を示す。本実施形態に係るノード210では、上記の実施形態で説明したプロセスに加えて、システム管理プロセス242と、ノード管理プロセス243とが実行される。
【0048】
システム管理プロセス242は、共有メモリ251に記憶されたシステム情報を監視し、当該システム情報に応じてプロセス231又はノード210の制御を行うシステム管理手段である。上述したようにシステム情報は、全てのノード210で共有されているので、システム管理プロセス242は全てのノード210で実行されている必要はなく、特定のノード210でのみ実行されていればよい。システム管理プロセス242は、後述するように制御の必要性を判断して、制御の実行をノード管理プロセス243に指令する。
【0049】
ノード管理プロセス243は、システム管理プロセス242からの指令を受け付けて、自ノード210内において制御に係る処理を実行するプロセスであり、ノード管理手段に相当する。ノード管理プロセス243は、分散型マルチCPU制御システム1における全てのノード210で実行されるノードである。また、ノード管理プロセス243は、プロセス状態監視プロセス244と、ノード状態監視プロセス245とを含んでいる。ノード管理プロセス243によるノード210の操作としては、ノード210の起動状態からの停止、ノード210の停止状態からの起動、及びノード210の再起動がある。また、ノード管理プロセス243によるプロセスの操作としては、プロセスの起動状態からの停止、プロセスの停止状態からの起動、及びプロセスの再起動がある。
【0050】
プロセス状態監視プロセス244は、自ノード210で実行される各プロセスの状態を監視するプロセスである。各プロセスの状態を示す状態としては、例えば、各プロセスを識別する識別IDに対応付けられた正常、異常及び動的再起動中等の情報である。各プロセスの監視より得られた情報はプロセス状態監視プロセス244によってシステム情報に含められ、マルチキャストされる。マルチキャストは、第1実施形態のように自ノード210の共有メモリ制御プロセス(
図7には図示せず)によって行われてもよいし、第2実施形態のようにプロセス状態監視プロセス244自身によって行われてもよい。
【0051】
ノード状態監視プロセス245は、自ノード210の状態を監視するプロセスである。自ノードの状態を示す状態としては、例えば、自ノードを識別する識別IDに対応付けられた正常、異常及び動的再起動中等の情報である。自ノード210の監視より得られた情報はノード状態監視プロセス245によってシステム情報に含められ、マルチキャストされる。マルチキャストは、第1実施形態のように自ノード210の共有メモリ制御プロセスによって行われてもよいし、第2実施形態のようにノード状態監視プロセス245自身によって行われてもよい。
【0052】
プロセス状態監視プロセス244及びノード状態監視プロセス245による監視自体は、従来のプロセス状態及びノード状態の監視と同様の技術を利用することができる。
【0053】
システム管理プロセス242は、システム情報から何れかのノード210及びプロセス231に異常が無いかどうか判断する。なお、この判断の際には、プロセス状態監視プロセス244及びノード状態監視プロセス245による監視によって得られたプロセス及びノードの状態の情報が参照される。また、通常のプロセス231に係るプロセス情報が参照されて判断されてもよい。
【0054】
システム管理プロセス242は、何れかのノード210及びプロセス231に異常があると判断した場合は、当該異常に応じた制御を行う。具体的には、異常が発生しているノード210又はプロセス231の再起動を行う。なお、プロセス231の設定された回数の再起動によっても異常が解消されなかった(復旧しなかった)場合には、当該プロセスの重要度に応じて当該プロセス231が実行されているノード210の再起動を行うこととしてもよい。なお、再起動の実行自体は、上述したようにノード管理プロセス243によって行われる。システム管理プロセス242は、再起動の対象となるノード210又はプロセス231と同じノード210で実行されているノード管理プロセス243に対して、再起動の実行をするように指令する。
【0055】
また、システム管理プロセス242は、ノード状態監視プロセス245によって監視されたノードの状態を参照することによって、ノードの追加、取り外し、換装あるいはノードの状態変化(起動→停止、停止→起動、再起動)が生じたことを検出する。システム管理プロセス242は、これらを検出した場合に各ノード210の共有メモリ制御プロセスに対してノード210間でシステム情報が共有されるように制御する。以上が、第3実施形態に係るノード210の構成である。
【0056】
引き続いて、
図8のシーケンス図を用いて、本実施形態に係るノード210(あるいはノード210間)で実行される処理を説明する。本処理は、ノード210内のプロセス231に異常が発生した場合に行われる。
【0057】
ノード210では、ノード管理プロセス243のプロセス状態監視プロセス244によって、プロセス231が監視されている。プロセス231に異常が発生すると、プロセス状態監視プロセス244によって異常が検知される(S21)。検知された異常の情報は、システム情報に含められノード210間で共有される。続いて、システム管理プロセス242によってシステム情報が参照されて、プロセス231の異常が検知される(S21)。なお、システム管理プロセス242は、異常が発生したプロセス231とは別のノード210において実行されていてもよい。
【0058】
続いて、システム管理プロセス242によって、異常の検知に応じて異常が発生したプロセス231の再起動を行うと判断される。続いて、システム管理プロセス242から、当該プロセス231が実行されているノード210のノード管理プロセス243に対して、当該プロセス231の再起動指令がなされる(S22)。ノード管理プロセス243では、再起動指令が受け付けられると、プロセス231の再起動が実施される(S23)。プロセス231の再起動が実施されると、当該プロセス231からノード管理プロセス243に対して起動通知及び正常復帰の通知が行われる(S24)。以上が、本実施形態に係るノード210で実行される処理である。
【0059】
上述したように本実施形態に係るノード210では、分散型マルチCPU制御システム1の各ノード210及び各ノード210で実施されるプロセスが正常に動作するように制御される。従って、ノード210及びプロセスに応じた、分散型マルチCPU制御システム1の適切な管理が可能になる。
【0060】
<第4実施形態>
引き続いて、第3実施形態における分散型マルチCPU制御システム1の管理をベースとした当該管理のバリエーションを示す。
図9に本実施形態に係るノード310a〜310eを含んで構成される分散型マルチCPU制御システム1の構成を示す。
図9では、上述した本発明の機能に係るプロセスについては省略し、通常のプロセス331a〜331hのみを記す。また、ハッチングされたノード310cにおけるプロセス331g、及びノード310eにおけるプロセス331hは、当初は実行されていない。これらは、制御の過程で起動される。
【0061】
本実施形態においては、あるノード310の状態を監視及び管理するノード(即ち、あるノード310の状態を監視及び管理するシステム管理プロセスが実行されるノード)を決定する場合、分散型マルチCPU制御システム1において予め特定のノード310がバディ(Buddy)として選定されていてもよい。あるいは、分散型マルチCPU制御システム1の状況に応じて決められるノードでもよい。例えば、現在起動されているノード310の中で最も安定して動作しているノード310が選択されてもよい。
【0062】
本実施形態では、システム管理プロセスは、システム情報を参照して他ノード310の異常を検出した場合、当該他ノード310で実行されているプロセス331を更に他のノード310で起動させる。システム管理プロセスは、システム情報を参照して他ノード310の異常を検出した場合、当該他ノード310を再起動するように制御し、当該制御によっても正常に復旧されなかった場合に上記の制御をすることとしてもよい。
【0063】
プロセスを起動する上記の他のノード310の選定は、システム管理プロセスに予めバディ(Buddy)として記憶されている特定のノードを、代替プロセスを起動させるための特定のノードとするように行われてもよい。また、そのノードは、既に起動しているノードでもよいし、システム管理プロセスによって新たに起動されるノードでもよい。あるいは、分散型マルチCPU制御システム1の状況に応じて決められるノードでもよい。例えば、現在起動されているノード310の中で最も稼働率の低いノード310が選択される。
【0064】
引き続いて、
図9の構成図、及び
図10のシーケンス図を用いて、本実施形態に係るノード310間で実行される処理を説明する。本処理は、ノード310dに異常が発生した場合に行われる。また、本処理では、ノード310cにおいて各ノード310a〜310eを管理するシステム管理プロセスが実行されている。
【0065】
ノード310dで異常が発生すると、ノード310cのシステム管理プロセスによってシステム情報が参照されて、ノード310dの異常が検知される(S31)。続いて、システム管理プロセスによって、異常の検知に応じて異常が発生したノード310dの再起動を行うと判断される。続いて、システム管理プロセスから、当該ノード310dのノード管理プロセスに対して、当該ノード310dの再起動指令がなされる(S32)。ノード管理プロセスでは、再起動指令が受け付けられると、ノード310dの再起動が実施される。しかしながら、本処理では、ノード310dは正常に復旧せず、異常の状態のままとなる(正常復帰の応答がない)。その場合は、再度、ノード310cのシステム管理プロセスにノード310dの異常が検知される(S33)。再起動の結果、当該ノード310dが正常に復旧した場合は、そこで終了される。
【0066】
続いて、システム管理プロセスによって、異常のままであるノード310dで実行されているプロセス331g,331hをそれぞれノード310c、ノード310eで実行させると判断される(図示せず)。このときプロセス331g,331hが起動されるノード310c,310eは、上述した方法で決定されたものであり、ノード310eは既に起動しているノードでもよいし、新たに起動されるノードでもよい。なお、ノード310dで実行されているプロセス331g,331hは、システム情報を参照することによりシステム管理プロセスにて把握される。
【0067】
続いて、システム管理プロセスによってノード310cのノード管理プロセスに対してプロセス331gの起動指令がなされる(S34)。また、システム管理プロセスによってノード310eのノード管理プロセスに対してプロセス331hの起動指令がなされる(S35)。
【0068】
ノード310cのノード管理プロセスでは、プロセス331gの起動指令が受け付けられると、
図9のハッチングされたブロックで示すようにプロセス331gの起動が実施される。プロセス331gが起動されると、ノード310cのノード管理プロセス(あるいは、プロセス331g自体)からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる(S36)。
【0069】
ノード310eのノード管理プロセスでは、プロセス331hの起動指令が受け付けられると、
図9のハッチングされたブロックで示すようにプロセス331hの起動が実施される。プロセス331hが起動されると、ノード310eのノード管理プロセス(あるいは、プロセス331h自体)からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる(S37)。以上が、本実施形態に係るノード310間で実行される処理である。
【0070】
上記のように、各ノード310において起動されているプロセス331又はノード310自体に異常が生じた場合、あるいは異常が生じて適切に復旧しない場合には、別のノード310において異常が発生したプロセス331を起動させることとしてもよい。
【0071】
これにより、各ノード310やプロセス331に異常が発生した場合であっても、分散型マルチCPU制御システム1を確実に機能させることができる。
【0072】
<第5実施形態>
引き続いて、第4実施形態と同様に第3実施形態における分散型マルチCPU制御システム1の管理をベースとした当該管理のバリエーションを示す。
図11に本実施形態に係るノード410a〜410eを含んで構成される分散型マルチCPU制御システム1の構成を示す。
図11では、上述した本発明の機能に係るプロセスについては省略し、通常のプロセス431a〜431hのみを記す。また、ハッチングされたノード410dにおけるプロセス431e及びプロセス431f、並びにノード410eにおけるプロセス431e及びプロセス431fは、当初は実行されていない。これらは、制御の過程で起動される。
【0073】
機器の監視や制御は、機器と物理的にケーブル等で接続(接合)しているノード410で起動されるプロセス431によってのみ可能である。例えば、
図11に示すように慣性航法装置23にはノード410c,410d,410eの3つのノードが接続(パラレル接合)されており、これらのノード410上のプロセスでのみ慣性航法装置23の監視や制御が可能である。重要度の高い機器の制御を行っているプロセス431やノード410に異常が発生した場合、あるいは異常の発生によって再起動を行う場合には、その間当該機器の制御が行えなくなる。そこで、システム管理プロセスは、そのような場合には、当該機器に接続されている別のノード410上に当該プロセスを起動させる。また、このとき起動させるプロセス431は、互いに異なるノード410で重複して起動させることとしてもよい。これにより、その機能を補完して、機器を確実に制御させる。
【0074】
また、当初機器を制御していたプロセス431及びノード410が、再起動の結果、正常に復旧すれば当該機器の制御を元のプロセス431及びノード410に戻してもよいし、機能補完したプロセス431及びノード410による制御を続けてもよい。
【0075】
なお、上記の制御のため重要な機器には、予めバックアップ用のノード410を用意しておき複数のノード410と物理的に接続させておく。また、新たにプロセス431を起動させるノード410は、予め起動されている(スタンバイ状態の)ノード410でもよいし、プロセス431を起動させる際にノードを起動することとしてもよい。なお、その選択は、システム状態、システム構成(ノード数、プロセス数、稼動算時間)、接続機器構成等を考慮して、システム管理プロセスにより行われる。
【0076】
引き続いて、
図11の構成図、及び
図12のシーケンス図を用いて、本実施形態に係るノード410間で実行される処理を説明する。本処理では、ノード410cのプロセス431e,431fが慣性航法装置23の監視及び制御を行っている。また、上述したように慣性航法装置23には、ノード410c,410d,410eの3つのノードが接続されている。また、ノード410eは、処理開始には起動されていない。本処理は、ノード410cに異常が発生した場合に行われる。また、本処理では、ノード410dにおいて各ノード410a〜410eを管理するシステム管理プロセスが実行されている。
【0077】
ノード410cで異常が発生すると、ノード410dのシステム管理プロセスがシステム情報を参照することにより、ノード410cの異常が検知される(S41)。
【0078】
続いて、システム管理プロセスによって、異常が検知されたノード410cで実行されている慣性航法装置23を監視制御するプロセス431e,431fをノード410dで実行させると判断される(図示せず)。このときプロセス431e,431fが起動されるノード410は、上述した方法で決定される。なお、ノード410cで実行されているプロセスプロセス431e,431fは、システム情報が参照されてシステム管理プロセスに把握される。また、ノード410cの異常検知後、上述した実施形態と同様に、ノード410cの再起動の制御等のノード410cを復旧するための制御が行われていてもよい。
【0079】
続いて、システム管理プロセスによってノード410dのノード管理プロセスに対してプロセス431eの起動指令がなされる(S42)。また、システム管理プロセスによってノード410dのノード管理プロセスに対してプロセス431fの起動指令がなされる(S43)。
【0080】
ノード410dのノード管理プロセスでは、プロセス431eの起動指令が受け付けられると、
図11のハッチングされたブロックで示すようにプロセス431eの起動が実施される。プロセス431eが起動されると、ノード410dのノード管理プロセス(あるいは、プロセス431e自体)からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる(S44)。
【0081】
ノード410dのノード管理プロセスでは、プロセス431fの起動指令が受け付けられると、プロセス431fの起動が実施される。プロセス431fが起動されると、ノード410dのノード管理プロセス(あるいは、プロセス431f自体)からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる(S45)。なお、例えば、プロセス431fが重要なプロセスでない場合(ノード410cの復旧を待ってから実行されてもよいプロセスであった場合)には、必ずしもノード410dにおいてプロセス431fが起動されなくてもよい。
【0082】
S42〜S45の処理は、次のような処理が行われてもよい。まず、システム管理プロセスによって、ノード410eの起動制御が行われる(S46)。なお、システム管理プロセスによるノード410eを起動させる判断は、上述したように行われる。
【0083】
システム管理プロセスによる(起動されていない)ノード410eの起動制御は、具体的にはそのノード410eへの電源制御であり、例えば、当該ノード410eの電源をオンすることによって行われる。但し、ノード410eの起動制御は、上記の方法以外によって行われてもよい。システム管理プロセスによる起動制御により、ノード410eが起動されると、ノード410eのノード管理プロセスからシステム管理プロセスに対してノード410eが正常起動した旨の通知が行われる(S47)。
【0084】
続いて、システム管理プロセスによってノード410eのノード管理プロセスに対してプロセス431eの起動指令がなされる(S48)。また、システム管理プロセスによってノード410eのノード管理プロセスに対してプロセス431fの起動指令がなされる(S49)。
【0085】
ノード410eのノード管理プロセスでは、プロセス431eの起動指令が受け付けられると、
図11のハッチングされたブロックで示すようにプロセス431eの起動が実施される。プロセス431eが起動されると、ノード410eのノード管理プロセス(あるいは、プロセス431e自体)からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる(S50)。
【0086】
ノード410eのノード管理プロセスでは、プロセス431fの起動指令が受け付けられると、
図11のハッチングされたブロックで示すようにプロセス431fの起動が実施される。プロセス431fが起動されると、ノード410eのノード管理プロセス(あるいは、プロセス431f自体)からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる(S51)。以上が、本実施形態に係るノード410間で実行される処理である。
【0087】
上記のように、重要度の高い機器に接続されたノード410やプロセス431に異常が生じた場合、当該機器が接続された別のノード410において異常が発生したプロセス431を起動させることとしてもよい。これにより、機器に接続されたノード410やプロセス431に異常が生じた場合であっても、確実に機器を監視、制御することができる。
【0088】
<第6実施形態>
図13に本実施形態に係るノード510a〜510eを含んで構成される分散型マルチCPU制御システム1の構成を示す。
図13に示すように、機器と各ノードとの間に制御系統切替装置552を設けて、機器の制御が特定のノード510又はプロセス531によって確実に行われるようにしてもよい。制御系統切替装置552は、システム管理プロセスからの制御を受けて、システム管理プロセスから指定された特定のノード510又は特定のプロセス531との間のみの情報の送受信を許可する装置である。
【0089】
システム管理プロセスは、重要度の高い機器の制御を行っているプロセス531やノード510に異常が発生した場合、機器との情報の送受信を行う当該プロセス531又はノード510を切り替えて、切り替えた先のプロセス531又はノード510で機器の監視や制御を行うようにさせる。これにより、より適切に機器の制御が行われる。
【0090】
引き続いて、
図13の構成図、及び
図14のシーケンス図を用いて、本実施形態に係るノード510間で実行される処理を説明する。本処理では、ノード510cのプロセス531e,531fが慣性航法装置23の監視及び制御を行っている。また、上述したように慣性航法装置23には、ノード510c,510d,510eの3つのノードが接続されている。慣性航法装置23と、ノード510c,510d,510eとの間には制御系統切替装置552が設けられている。制御系統切替装置552は、ノード510cと制御系統切替装置552との間の情報の送受信を許可する。また、ノード510eは、処理開始には起動されていない。本処理は、ノード510cに異常が発生した場合に行われる。また、本処理では、ノード510dにおいて各ノード510a〜510eを管理するシステム管理プロセスが実行されている。
【0091】
ノード510cで異常が発生すると、ノード510dのシステム管理プロセスがシステム情報を参照することにより、ノード510cの異常が検知される(S61)。
【0092】
続いて、システム管理プロセスによって、異常が検知されたノード510cで実行されている慣性航法装置23を監視制御するプロセス531e,531fをノード510dで実行させると判断される(図示せず)。このときプロセス531e,531fが起動されるノード510は、上述した方法で決定される。続いて、システム管理プロセスによって、制御系統切替装置552に対して、ノード510dと慣性航法装置23との間の情報の送受信を許可するように切替指令が行われる(S62)。
【0093】
切替指令を受けた制御系統切替装置552では切替処理が行われて、また、切替先のノード510dに切替が行われた旨の通知が行われる。切替先のノード510dでは、ノード管理プロセスによってその通知が受け付けられて、システム管理プロセスに切替が完了した旨の通知が行われる(S63)。
【0094】
なお、ノード510cで実行されているプロセスプロセス531e,531fは、システム情報が参照されてシステム管理プロセスに把握される。また、ノード510cの異常検知後、上述した実施形態と同様に、ノード510cの再起動の制御等のノード510cを復旧する制御が行われていてもよい。
【0095】
続いて、システム管理プロセスによってノード510dのノード管理プロセスに対してプロセス531eの起動指令がなされる(S64)。また、システム管理プロセスによってノード510dのノード管理プロセスに対してプロセス531fの起動指令がなされる(S65)。
【0096】
ノード510dのノード管理プロセスでは、プロセス531eの起動指令が受け付けられると、
図13のハッチングされたブロックで示すようにプロセス531eの起動が実施される。プロセス531eが起動されると、ノード510dのノード管理プロセス(あるいは、プロセス531e自体)からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる(S66)。
【0097】
ノード510dのノード管理プロセスでは、プロセス531fの起動指令が受け付けられると、プロセス531fの起動が実施される。プロセス531fが起動されると、ノード510dのノード管理プロセス(あるいは、プロセス531f自体)からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる(S67)。なお、例えば、プロセス531fが重要なプロセスでない場合(ノード510cの復旧を待ってから実行されてもよいプロセスであった場合)には、必ずしもノード510dにおいてプロセス531fが起動されなくてもよい。
【0098】
S62以降の処理は、次のような処理が行われてもよい。まず、システム管理プロセスによって、ノード510eの起動制御が行われる(S68)。なお、システム管理プロセスによるノード510eを起動させる判断は、上述したように行われる。
【0099】
ノード510eの起動制御は上述した方法と同様に行われる。システム管理プロセスによる起動制御により、ノード510eが起動されると、ノード510eのノード管理プロセスからシステム管理プロセスに対してノード510eが正常起動した旨の通知が行われる(S69)。
【0100】
続いて、システム管理プロセスによって、制御系統切替装置552に対して、ノード510eと慣性航法装置23との間の情報の送受信を許可するように切替指令が行われる(S70)。切替指令を受けた制御系統切替装置552では切替処理が行われ、切替先のノード510eのノード管理プロセスでは、慣性航法装置23との間で情報の送受信が行われてシステム管理プロセスに切替が完了した旨の通知が行われる(S71)。
【0101】
続いて、システム管理プロセスによってノード510eのノード管理プロセスに対してプロセス531eの起動指令がなされる(S72)。また、システム管理プロセスによってノード510eのノード管理プロセスに対してプロセス531fの起動指令がなされる(S73)。
【0102】
ノード510eのノード管理プロセスでは、プロセス531eの起動指令が受け付けられると、
図13のハッチングされたブロックで示すようにプロセス531eの起動が実施される。プロセス531eが起動されると、ノード510eのノード管理プロセス(あるいは、プロセス531e自体)からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる(S74)。
【0103】
ノード510eのノード管理プロセスでは、プロセス531fの起動指令が受け付けられると、
図13のハッチングされたブロックで示すようにプロセス531fの起動が実施される。プロセス531fが起動されると、ノード510eのノード管理プロセス(あるいは、プロセス531f自体)からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる(S75)。以上が、本実施形態に係るノード510間で実行される処理である。
【0104】
上記のような構成とすることによって、機器の制御がシステム管理プロセスによって決定される特定のノード又はプロセスによって行われる。その結果、適切に機器を監視、制御することができる。
【0105】
<第7実施形態>
図15に本実施形態に係る分散型マルチCPU制御システム1の構成を示す。
図15に示すように本実施形態において、分散型マルチCPU制御システム1は海中機器2に備えられて構成される。分散型マルチCPU制御システム1に含まれる1つのノード610aには、上述した実施形態の構成に加えて通信変換機661を備えている。通信変換機661は、分散型マルチCPU制御システム1以外の装置と通信を行って、共有メモリに格納されるシステム情報の送受信を行う通信手段を構成する。
【0106】
通信変換機661と通信を行う、分散型マルチCPU制御システム1以外の装置は、例えば、
図15に示すような船舶に設けられる電磁波や音響等の無線通信装置(I/Fノード)671及び電気ケーブルや光ファイバーケーブル等の有線通信装置(I/Fノード)672、陸上に設けられる衛星通信装置(I/Fノード)673及び電気ケーブルや光ファイバーケーブル等の有線通信装置(I/Fノード)674、並びに海中機器2とI/Fノード673とを中継する衛星675等である。なお、この通信は、無線通信で行われてもよいし、有線で行われてもよい。
【0107】
共有メモリに記憶されるシステム情報の入出力を行うことによって、海中機器2の外部から、海中機器2の状態を遠隔監視することができ、また、海中機器2に対して遠隔制御を行うことができる。
【0108】
引き続いて、上述した各実施形態の更なる変形例について説明する。分散型マルチCPU制御システムの各ノードにおいて、自ノード又は自ノードで実行されるプロセスに異常が発生する危険度を推定する危険度推定手段として機能するプロセスを実行させることが望ましい。推定された危険度を示す情報は、システム情報に含められ第1実施形態あるいは第2実施形態に示す構成によって各ノード間で共有される。なお、危険度が推定されるプロセスはノードで起動される全プロセスでもよいし、特定のプロセスであってもよい。
【0109】
異常が発生する危険度は、ノード又はプロセスが機能しなくなる可能性を示すものである。プロセスの危険度については、例えば、各プロセスが制御している機器の時間当たりのエラー回数(頻度)を機器及びエラー内容に応じて重み付けして算出(推定)する。
【0110】
具体的には以下の式によって算出することができる。
Dp=α・Ecom+β・Em1+γ・Em2
ここで、Dpはプロセス異常危険度を示し、Ecomは当該プロセスが制御する機器との通信エラー回数を示し、Em1は当該プロセスが制御する機器からのエラーメッセージ1の回数を示し、Em2は当該プロセスが制御する機器からのエラーメッセージ2の回数を示す。Ecom、Em1、Em2については、例えば、上述したプロセス状態監視プロセスによって監視されてシステム情報に格納されており、それを参照する。α,β,γは上記の内容の重要度に応じて定義された重みであり、予め危険度を算出するプロセスに設定、記憶されている。
【0111】
ノードの危険度については、例えば、ノードで起動されている各プロセスの異常危険度、当該ノードの記憶容量残量、メモリ使用量、CPU負荷等を無次元化した評価値を用いる。あるいは、上記の各内容を個別項目としてそれぞれの危険度を評価する。
【0112】
具体的には以下の式によって算出することができる。
Dn=α・(Dp1+Dp2+Dp3)+β・CM+γ・CF+η・CP
ここで、Dnはノード異常危険度を示し、Dp1,Dp2,Dp3はそれぞれ当該ノードで起動されている(3つの)プロセスのプロセス異常危険度を示し、CMは当該ノードの共有メモリの残量を示し、CFは当該ノードの記憶領域残量を示し、CPは当該ノードのCPU負荷を示す。CM、CF、CPについては、例えば、上述したノード状態監視プロセスによって監視されてシステム情報に格納されており、それを参照する。α,β,γ,ηは上記の内容の重要度に応じて定義され、各内容(項)を無次元化する重みであり、予め危険度を算出するプロセスに設定、記憶されている。
【0113】
システム管理プロセスが、上記のように算出されてシステム情報に含まれる各ノード及び各プロセスの危険度を参照して、当該各ノード及び各プロセスに異常が発生する前に上述した第3〜第6実施形態で説明したように再起動等の制御を行う。具体的には例えば、危険度の値が予め設定、記憶した閾値を超えた場合に再起動の制御を行う。
【0114】
また、分散型マルチCPU制御システムには、緊急事態を専門に扱うプロセス(緊急用プロセス)が起動されるノードである、緊急用ノードが設けられていてもよい。第5及び第6実施形態で説明したような方法によっても、重要度の高い機器の復旧がなされない場合にシステム管理プロセスが緊急事態と判断して、緊急用ノードの緊急用プロセスによってその後の全処理を実行するように制御する。例えば、海中機器においては、緊急処理に必要となるノード以外の全てのノード及びプロセスを正規の手順で終了させ、これによってシステム健常性(ノード破壊及びデータ破損等の回避)が確保された後に、バラストを離脱させる等の当該海中機器を自己浮上あるいは緊急回収可能な状態へと制御する。
【0115】
また、分散型マルチCPU制御システムにおいては、汎用的な通信プロトコルを適用することによってプライマリネットワークを構築し、また上述した実施形態を実現すると共に、別の通信プロトコルを適用したセカンダリネットワークを同時に構築し、非常時に上記の実施形態の一部又は全部を実現させる冗長的な構成としてもよい。例えば、プライマリネットワークとしてEthernetを適用し、別系統のセカンダリネットワークとしてCANbusを適用する。これにより、Ethernet通信に不具合が生じた場合でも、CANbus通信に切り替えることによって、各ノード間の通信を確立させると共に、重要度の高い機器を制御するノードあるいは緊急ノードの機能を確保する。
【0116】
本実施形態では、上述したように海中探査機に適用されるものとして説明した。本発明は、分散型マルチCPU制御システムが用いられるシステムで人為的なアクセスが長期間困難なシステムに適用することが望ましい。あるいは、不具合発生時にごく短時間でも放置が許されない(早急な復旧が必要な)システムへ適用することが望ましい。
【0117】
本実施形態に係る自律型海中探査機の制御システムでは、長時間の巡航においては突発的、偶発的な予期せぬ不具合が生じるが、自走式であるため外部からの支援が困難となる。そのため制御システムには自己復旧能力が必須となる。また、ミッションに応じて航行機器、観測機器の換装が頻繁に起こるため、システム構成の変更に柔軟な制御システムが必要になる。
【0118】
また、海底観測ステーションにおける制御システムやインテリジェントブイにおける制御システムに本発明を適用することも望ましい。長期にわたり海底に設定される海底観測ステーションやインテリジェントブイにおいては、機器の老朽化に伴う時系列的な不具合、あるいは観測内容に伴い機器の換装も生じる。しかし、海底観測ステーションあるいはインテリジェントブイ自体を回収することは、地理的あるいはコスト面において困難なため、現場(海底、海上)にて自己で不具合を復旧させる能力が必須となる。また、機器の換装に伴うシステム構成の変更に柔軟な制御システムが必要になる。
【0119】
また、無人宇宙ステーションにおける制御システム、人工衛星における制御システム、及び無人惑星探査機に本発明を適用することも望ましい。長期にわたり宇宙空間に配置されるこれらのシステムや装置においては、機器の老朽化に伴う時系列的な不具合、あるいは観測内容に伴い機器の換装も生じる。しかし、そのような事態においても回収することは非常に困難であるため、現場(宇宙)にて自己で不具合を復旧させる能力が必須となる。
【0120】
また、原子炉における制御システムに適用することも望ましい。人為的なアクセスが困難な環境にもかかわらず、不具合発生時にはシステムのダウン(制御不能状態)が仮に短時間でも許されず、早急な自己復旧が必須である。