(57)【要約】【課題】  一時的な障害においては、データ送信側ノードとデータ受信側ノードとの共有メモリを無効化する順序を規定することにより、速やかに回復する手段を提供することを目的とする。【解決手段】  制御装置は、監視端末からメッセージを受信する通信制御部と、監視対象のデータを記憶している共有メモリと、新たな監視対象のデータと共有メモリが先に記憶している監視対象のデータとが一致するか否かの比較を行い、一致しない場合、共有メモリに新たな監視対象のデータを書き込み、通信制御部に新たな監視対象のデータを送り、一致する場合、制御装置が正常に動作していることを示すハートビートデータを通信制御部に送る通常の処理を実行する監視タスク部と、通信制御部が監視端末へ監視対象の新たなデータとハートビートデータとのいずれかを送信した時刻を記憶する時刻記録部とを備える。【選択図】        図１
2006048249.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークを介して監視端末と接続する制御装置において、
監視対象のデータを記憶する制御装置側共有メモリと、
新たな監視対象のデータと前記制御装置側共有メモリが記憶する監視対象のデータとが一致するか否かの比較を行い、一致しない場合、前記制御装置側共有メモリに新たな監視対象のデータを書き込み、新たな監視対象のデータを出力し、一致する場合、正常動作していることを示すハートビートデータを出力する監視タスク部と、
前記監視タスク部が出力した新たな監視対象のデータとハートビートデータとを入力して前記監視端末へ送信する送信部と
を備えることを特徴とする制御装置。
【請求項２】
前記制御装置は、さらに
前記送信部が前記監視端末へデータを送信した時刻を記録する時刻記録部を備え、
前記送信部は、前記監視端末へデータを送信することができない場合、
前記時刻記録部に記録されている前回の監視端末へ送信した時刻から所定の時間が経過する以前は、前記制御装置側共有メモリに記録されていたが監視端末へ送信することができなかった監視対象のデータの前記監視端末への送信を試み、所定の時間が経過する以前に、前記送信部が前記監視端末へ監視対象のデータを送信することができるようになった場合、前記制御装置側共有メモリに記憶されていたが監視端末へ送信することができなかった監視対象のデータを前記監視端末へ送信し、
前記時刻記録部に記録されている前回の監視端末へ送信した時刻から所定の時間が経過した後は、
前記監視タスク部が、前記制御装置側共有メモリが記憶する監視対象のデータを消去すること
を特徴とする請求項１に記載の制御装置。
【請求項３】
前記制御装置は、さらに
前記監視端末から監視端末側共有メモリが記憶する監視対象のデータを消去したことを示すメッセージを受信する受信部と、
前記送信部が前記監視端末へデータを送信した時刻を記録する時刻記録部とを備え、
前記時刻記録部に記録されている前回の監視端末へ送信した時刻から所定の時間が経過する以前に、
前記受信部が前記監視端末から監視端末側共有メモリが記憶する監視対象のデータを消去したことを示すメッセージを受信した場合、
前記監視タスク部が、前記制御装置側共有メモリが記憶する全て監視対象のデータを消去すること
を特徴とする請求項１に記載の制御装置。
【請求項４】
制御装置から通信ネットワークを介して監視対象のデータとハートビートデータとを受信する受信部と、
前記制御装置から受信した監視対象のデータを記憶する監視端末側共有メモリと、
前記受信部が前記制御装置から監視対象のデータを受信した時刻とハートビートデータを受信した時刻とのうち、直前の時刻を記録する時刻記録部と、
所定の間隔で時刻を計測するタイマー管理部と、
前記タイマー管理部が計測する所定の間隔毎に、前記時刻記録部が記録している時刻と現在時刻とを比較し、前記時刻記録部が記録している時刻が現在時刻より前記所定の間隔以前の時刻であった場合、通信に障害が発生したと判断する障害検出部と
を備えることを特徴とする監視端末。
【請求項５】
前記監視端末は、さらに
前記障害検出部が通信に障害が発生したと判断した場合、前記監視端末側共有メモリが記憶する監視対象のデータを消去する共有メモリ管理部と、
前記監視タスク部が前記監視端末側共有メモリが記憶する監視対象のデータを消去したことを示すメッセージを前記制御装置へ送信する送信部と、
を備えることを特徴とする請求項４に記載の監視端末。
【請求項６】
監視タスク部が、新たな監視対象のデータと制御装置側共有メモリが記憶する監視対象のデータとが一致するか否かの比較を行い、一致しない場合、前記制御装置側共有メモリに新たな監視対象のデータを書き込み、送信部に新たな監視対象のデータを送り、一致する場合、正常動作していることを示すハートビートデータを送信部に送るデータ判定工程と、
送信部が、監視端末へ前記新たな監視対象のデータと前記ハートビートデータとのいずれかを送信する送信工程と
を実行することを特徴とする制御装置の制御方法。
【請求項７】
受信部が、制御装置から通信ネットワークを介して監視対象のデータとハートビートデータとを受信する受信工程と、
前記制御装置から受信した監視対象のデータを監視端末側共有メモリに記憶する記憶工程と、
時刻記録部が、前記受信部が前記制御装置から監視対象のデータを受信した時刻とハートビートデータと受信した時刻とのうち、直前の時刻を記録する時刻記録工程と、
タイマー管理部が、所定の間隔で時刻を計測するタイマー工程と、
障害検出部が、前記タイマー管理部が計測する所定の間隔毎に、前記時刻記録部が記録している時刻と現在時刻とを比較し、前記時刻記録部が記録している時刻が現在時刻より前記所定の間隔以前の時刻であった場合、通信に障害が発生したと判断する障害検出工程と
を実行することを特徴とする監視端末の監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、制御装置から監視端末へデータを送信しているときに障害が発生した場合に、制御装置と監視端末とのそれぞれの共有メモリの内容の一貫性が保たれるようにメモリの管理を行う制御装置と監視端末に関する。
【背景技術】
【０００２】
従来のノードで構成される分散共有メモリシステムにおける障害検出方法では、データ受信側ノードが、データ送信側ノードからデータが制限時間内に転送されてこないことを検出した場合、データ受信側ノードは、共有メモリのデータを不正データと差し替えることで、データリードの要求元に共有メモリが無効化されたことを示していた（例えば、特許文献１を参照）。
【特許文献１】特開２００４−１３７２３号公報（第１８頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来の分散共有メモリシステムの障害検出方法では、単純にデータが制限時間内に到着しないことにより障害検出を行っていたため、データの差分を検出し、検出した差分のみをデータ送信側ノードからデータ受信側ノードに送る方法を用いた場合には、障害の発生によりデータが到達しないことと、送信すべき差分がないため送信しないこととを見分けることができない。その結果、差分だけを送ることにより、通信データ量の削減を行う方法を分散共有メモリシステムに適用することはできない。
【０００４】
また、データ受信側ノードは、障害を検出すると直ちに共有メモリのデータを無効化するため、通信ケーブルの活線挿抜などを原因とする一時的な障害においても、速やかに復旧することが困難であった。さらに、データ受信側ノードが、障害を検出して共有メモリを無効化したことを、データ送信側ノードに速やかに伝えることができなかった。
【０００５】
この発明はこのような問題点を解決するためになされたものであり、データの差分を検出し、検出した差分のみを送る分散共有メモリシステムにおいて、障害が発生したことを正確に検出することができるようにするとともに、一時的な障害においては、データ送信側ノードとデータ受信側ノードとの共有メモリを無効化する順序を規定することにより、速やかに回復する手段を提供することを目的とする。
【課題を解決するための手段】
【０００６】
通信ネットワークを介して監視端末と接続する制御装置は、監視対象のデータを記憶する制御装置側共有メモリと、新たな監視対象のデータと制御装置側共有メモリが記憶する監視対象のデータとが一致するか否かの比較を行い、一致しない場合、制御装置側共有メモリに新たな監視対象のデータを書き込み、新たな監視対象のデータを出力し、一致する場合、正常動作していることを示すハートビートデータを出力する監視タスク部と、監視タスク部が出力した新たな監視対象のデータとハートビートデータとを入力して前記監視端末へ送信する送信部とを備えることとした。
【発明の効果】
【０００７】
この発明によれば通信ネットワークを介して監視端末と接続する制御装置は、制御装置側共有メモリが監視対象のデータを記憶し、監視タスク部が新たな監視対象のデータと制御装置側共有メモリが記憶する監視対象のデータとが一致するか否かの比較を行い、一致しない場合、制御装置側共有メモリに新たな監視対象のデータを書き込み、新たな監視対象のデータを出力し、一致する場合、正常動作していることを示すハートビートデータを出力し、送信部が監視タスク部が出力した新たな監視対象のデータとハートビートデータとを入力して前記監視端末へ送信することができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
以下に述べる実施の形態１では、制御装置が監視対象のデータを周期的に検査し、必要がある場合には、監視対象のデータを書き換えて監視端末へ送信するという制御装置と監視端末が正常動作している場合の実施の形態にについて説明する。なお、以下の説明においては、「監視対象のデータ」を「監視対象の識別子と値」と記載することもある。
【０００９】
通信ネットワークを介して監視端末と接続する制御装置１０１は、監視対象のデータを記憶する制御装置側共有メモリ１１０と、新たな監視対象のデータと制御装置側共有メモリ１１０が記憶する監視対象のデータとが一致するか否かの比較を行い、一致しない場合、制御装置側共有メモリ１１０に新たな監視対象のデータを書き込み、新たな監視対象のデータを出力し、一致する場合、正常動作していることを示すハートビートデータを出力する監視タスク部１０７と、監視タスク部１０７が出力した新たな監視対象のデータとハートビートデータとを入力して監視端末へ送信する送信部１０５１とを備える。
【００１０】
制御装置１０１の構成をさらに詳しく説明する。図１は実施の形態１における監視システムの構成を示す図である。
監視システムは、監視対象のデータを送信する制御装置１０１と監視対象のデータを制御装置１０１から受信する監視端末１０２とをネットワーク１０３により接続することで構成される。
【００１１】
制御装置１０１は、共有メモリ管理部１０４と通信制御部１０５とデータ送受信部１０６と監視タスク部１０７および時刻記録部１０８とから構成される。
【００１２】
共有メモリ管理部１０４は、共有メモリ管理テーブル１０９と共有メモリ１１０とを有する。共有メモリ管理テーブル１０９は、監視対象を識別する対象識別子と共有メモリ１１０上のアドレスとを組にしたテーブルである。共有メモリ管理部１０４は、このテーブルにアクセスしてアドレスを取得することで、共有メモリ１１０上での値の読み書きを行う。
【００１３】
監視タスク部１０７は、共有メモリ１１０に監視対象のその時点での値を書き込む。
また、監視タスク部１０７は、データ送受信部１０６と通信制御部１０５とを用いて、監視対象のデータ（対象識別子と値）を監視端末１０２に送信する。データ送受信部１０６は、送信するデータを一時的に保持するためのバッファ１１１を有する。
【００１４】
通信制御部１０５は、データを送信する送信部１０５１とデータを受信する受信部１０５２とから構成され、ネットワーク１０３を利用した通信の制御を行う部位であり、一般的には、ＴＣＰ／ＩＰのようなプロトコルスタックとＬＡＮカードのようなハードウェアから構成される。
【００１５】
監視端末１０２は、制御装置１０１から通信ネットワーク１０３を介して監視対象のデータとハートビートデータとを受信する受信部１１２２と、制御装置１０１から受信した監視対象のデータを記憶する監視端末側共有メモリ１１７と、受信部１１２２が制御装置１０１から監視対象のデータを受信した時刻とハートビートデータを受信した時刻とのうち、直前の時刻を記録する時刻記録部１１８と、所定の間隔で時刻を計測するタイマー管理部１１９と、タイマー管理部１１９が計測する所定の間隔毎に、時刻記録部１１８が記録している時刻と現在時刻とを比較し、時刻記録部１１８が記録している時刻が現在時刻より所定の間隔以前の時刻であった場合、通信に障害が発生したと判断する障害検出部１１５とを備える。
【００１６】
監視端末１０２は、さらに、障害検出部１１５が通信に障害が発生したと判断した場合、監視端末側共有メモリ１１７が記憶する監視対象のデータを消去する共有メモリ管理部１１４と、共有メモリ管理部１１４が監視端末側共有メモリ１１７が記憶する監視対象のデータを消去したことを示すメッセージを制御装置１０１へ送信する送信部１１２１とを備える。
【００１７】
監視端末１０２の構成をさらに詳しく説明する。
図１に示す監視端末１０２は、通信制御部１１２と、データ送受信部１１３と、共有メモリ管理テーブル１１６と共有メモリ１１７とを有する共有メモリ管理部１１４と、時刻記録部１１８とタイマー管理部１１９とを有する障害検出部１１５とから構成される。通信制御部１１２は、データを送信する送信部１１２１とデータを受信する受信部１１２２とから構成される。
【００１８】
次に、実施の形態１における制御装置１０１と監視端末１０２との動作について説明する。最初に、正常時の制御装置１０１と監視端末１０２の動作について説明した後、異常時の監視端末１０２の動作について説明する。
【００１９】
制御装置１０１の動作は次のようになる。
制御装置１０１は、監視タスク部１０７が、新たな監視対象のデータと制御装置側共有メモリ１１０が記憶する監視対象のデータとが一致するか否かの比較を行い、一致しない場合、制御装置側共有メモリ１１０に新たな監視対象のデータを書き込み、送信部１０５１に新たな監視対象のデータを送り、一致する場合、正常動作していることを示すハートビートデータを送信部１０５１に送るデータ判定工程と、送信部１０５１が、監視端末１０２へ新たな監視対象のデータとハートビートデータとのいずれかを送信する送信工程とからなる制御方法とを実行する。
【００２０】
まず、正常時の制御装置１０１の詳しい動作を図２に示すフローチャートを用いて説明する。
制御装置１０１上の監視タスク部１０７は、周期的に、監視対象の現在のデータを共有メモリ管理部１０４を通じて共有メモリ１１０に書き込む。例えば、制御装置１０１が数値制御装置の場合、Ｘ軸、Ｙ軸などの軸が監視対象であり、共有メモリ１１０上に書き込まれるデータは軸の値である。図１では、Ｘ軸、Ｙ軸の代わりに、Ａ、Ｂという対象識別子を用いている。また、以下の説明では、上記の周期を１秒とする。
【００２１】
また、制御装置１０１から監視端末１０２に通信する際に、どれぐらいの時間通信が途絶えたら監視端末１０２に障害が発生と判断すべきかについて、予め、制御装置１０１から通知しておく。この時間は、上記で説明した通信の周期（１秒）よりも十分に大きな値である。ここでは、仮に、これを４秒とする。つまり、制御装置１０１から監視端末１０２への通信が、４秒以上途絶えたら、障害が発生したと判断する。
【００２２】
監視タスク部１０７は、監視対象の現在のデータを共有メモリ１１０に書き込む際、まず、監視対象が存在するか否かを確認し、（ステップＳ１００）、存在する場合、（ステップＳ１００でＹｅｓの場合）、共有メモリ１１０に書き込まれている監視対象の値を取り出し、これから書き込もうとする値と異なるか否かを判断する（ステップＳ１０１）。その結果、値が異なる場合（ステップＳ１０１でＹｅｓの場合）、監視タスク部１０７は、共有メモリ１１０に新たな値を書き込み（ステップＳ１０２）、データ送受信部１０６のバッファ１１１に監視対象の識別子とその新たな値を書き込み（ステップＳ１０３）、ステップＳ１００へ戻る。ステップＳ１０１で値が異ならない、つまり値は同じであると判断した場合（ステップＳ１０１でＮｏの場合）、ステップＳ１００へ戻る。ステップＳ１００からステップＳ１０３までがデータ判定工程である。
【００２３】
このように値が異なるか否かの確認を行った上でデータ送受信部１０６のバッファ１１１に書き込むことにより、監視対象の数が増えた場合においても送信データ量を削減することができ、通信の効率化を図ることが可能となる。
【００２４】
ステップＳ１００で確認した結果、存在しない場合（ステップＳ１００でＮｏの場合）、データ送受信部１０６のバッファ１１１に監視対象の識別子と新たな値が書き込まれたか否かを判断する（ステップＳ１０４）。書き込まれたと判断した場合、（ステップＳ１０４でＹｅｓの場合）、監視タスク部１０７は、データ送受信部１０６に送信命令を出し（ステップＳ１０５）、送信命令を受けたデータ送受信部１０６は、通信制御部１０５の送信部１０５１を用いて、バッファ１１１に格納された１つまたは複数の監視対象の識別子と値とを監視端末１０２へと送る（ステップＳ１０６）。
【００２５】
ステップＳ１０４で書き込まれていないと判断した場合（ステップＳ１０４でＮｏの場合）、監視タスク部１０７は、通信制御部１０５の送信部１０５１を介して、監視端末１０２に対してハートビートデータを送信する（ステップＳ１０７）。ステップＳ１０４からステップＳ１０７までが送信工程である。
【００２６】
ハートビートデータは、システムが正常に動作していることを示すごく小さいサイズのデータである。このように、監視対象の値の変化の有無に関わらず、制御装置１０１は、監視端末１０２との間で一定の周期で必ず通信を行う。
【００２７】
通信を行った結果、通信制御部１０５が、通信が成功したか否かを判断し（ステップＳ１０８）、成功したと判断した場合、監視タスク部１０７は現在時刻を時刻記録部１０８に書き込む（ステップＳ１０９）。
【００２８】
監視端末１０２の動作は次のようになる。
監視端末１０２は、受信部１１２２が、制御装置１０１から通信ネットワーク１０３を介して監視対象のデータとハートビートデータとを受信する受信工程と、制御装置１０１から受信した監視対象のデータを監視端末側共有メモリ１１７に記憶する記憶工程と、時刻記録部１１８が、受信部１１２２が制御装置１０１から監視対象のデータを受信した時刻とハートビートデータと受信した時刻とのうち、直前の時刻を記録する時刻記録工程と、タイマー管理部１１９が、所定の間隔で時刻を計測するタイマー工程と、障害検出部１１５がタイマー管理部１１９が計測する所定の間隔毎に、時刻記録部１１８が記録している時刻と現在時刻とを比較し、時刻記録部１１８が記録している時刻が現在時刻より所定の間隔以前の時刻であった場合、通信に障害が発生したと判断する障害検出工程とからなる監視方法とを実行する。
【００２９】
次に、正常時の監視端末１０２の詳しい動作を図３に示すフローチャートを用いて説明する。
監視端末１０２の通信制御部１１２は、ネットワーク１０３を通じて送られてきた１つまたは複数の監視の対象識別子と値、またはハートビートデータを受信する（ステップＳ１１０）。データ送受信部１１３は、通信制御部１１２からの受信完了通知を受けて、通信制御部１１２から監視対象の識別子と値、またはハートビートデータを受け取る（ステップＳ１１１）。これが受信工程である。
【００３０】
そして、受信したものが監視対象の識別子と値であるか否かを判断し（ステップＳ１１２）、監視対象の識別子と値である場合（ステップＳ１１２でＹｅｓの場合）、共有メモリ管理部１１４を用いて、共有メモリ１１７に監視対象の識別子と値を書き込む（ステップＳ１１３）。これが記憶工程である。
【００３１】
監視対象の識別子と値ではなくハートビートデータであった場合（ステップＳ１１２でＮｏの場合）、共有メモリ１１７には何も書き込まない（ステップＳ１１４）。監視対象の識別子と値、またはハートビートデータのいずれかを受信した場合にも、データ送受信部１１３は、障害検出部１１５を用いて時刻記録部１１８に受信した時刻を記録する（ステップＳ１１５）。これが時刻記録工程である。
【００３２】
次に、異常発生時の監視端末１０２の動作を図４に示すフローチャートを用いて説明する。
障害検出部１１５は、タイマー管理部１１９を用いて、４秒ごとに時刻記録部１１８に記録されている時刻を取り出して現在時刻と比べ、時刻記録部１１８に記録されている時刻が、現在時刻より４秒以上前の時刻であるか否かを判断する（ステップＳ１２０）。これがタイマー工程である。
【００３３】
比較の結果、時刻記録部１１８に記録されている時刻が現在時刻より４秒以上前の時刻である場合（ステップＳ１２０でＹｅｓの場合）、障害検出部１１５は障害が発生したと判断し、共有メモリ管理部１１４を通じて共有メモリ１１７を再初期化することにより無効化する（ステップＳ１２１）。これが障害検出工程である。
【００３４】
図５は、実施の形態１における制御装置１０１から監視端末１０２へ通信を行った場合の処理の例を示したものである。
最初に、制御装置１０１から監視端末１０２に対して、４秒間通信が途絶えたら異常が起きたと見なすよう通知する（２０１）。制御装置１０１は、１秒間隔で監視端末１０２へ送信を行う。例では、最初の２０２の送信で、制御装置１０１が、対象識別子Ａとその値０、対象識別子Ｂとその値１を送信している。１秒後の２０３では、対象識別子Ｂの値に変化がなかったので、対象識別子Ａとその値１のみを送信している。２０４では、対象識別子Ａおよび対象識別子Ｂの両方の値に変化がなかったので、代わりにハートビートデータを送信している。２０５では、対象識別子Ａおよび対象識別子Ｂの両方の値に変化があったため、両方の対象識別子とそれぞれの値を送信している。２０６では、通信障害が発生している。監視端末１０２は、４秒の間、制御装置１０１からの通信がなかったので、２０７で共有メモリ１１７を無効化している。
【００３５】
以上のように、分散共有メモリを有する監視システムにおいては、通信を開始する以前に、制御装置１０１から監視端末１０２に対して、障害発生と判断するまでの時間Ｔ１をあらかじめ通知しておく。制御装置１０１では、Ｔ１より十分に短い時間間隔Ｔ２で監視対象の値の変化を調べる。そして、値の変化が検出された場合、監視対象の識別子と値を送り、変化が検出されない場合には、その監視対象の識別子と値を送らない。但し、値の変化がまったく検出できなかった場合においては、データサイズの小さいハートビートデータを制御装置１０１から監視端末１０２へ送る。これにより、制御装置１０１から監視端末１０２への通信を時間Ｔ２の周期で発生させる。更に、監視端末１０２が、時間Ｔ１の間、制御装置１０１からの通信がないことを検出した場合、共有メモリを無効化させる。
【００３６】
この実施の形態によれば、通信ネットワーク１０３を介して監視端末１０２と接続する制御装置１０１は、制御装置側共有メモリ１１０が監視対象のデータを記憶し、監視タスク部１０７が新たな監視対象のデータと制御装置側共有メモリ１１０が記憶する監視対象のデータとが一致するか否かの比較を行い、一致しない場合、制御装置側共有メモリ１１０に新たな監視対象のデータを書き込み、新たな監視対象のデータを出力し、一致する場合、正常動作していることを示すハートビートデータを出力し、送信部１０５１が監視タスク部１０７が出力した新たな監視対象のデータとハートビートデータとを入力して監視端末１０２へ送信することができる。
【００３７】
この実施の形態によれば、監視端末１０２は、受信部１１２２が制御装置１０１から通信ネットワーク１０３を介して監視対象のデータとハートビートデータとを受信し、監視端末側共有メモリ１１７が制御装置１０１から受信した監視対象のデータを記憶し、タイマー管理部１１９が、受信部１１２２が制御装置１０１から監視対象のデータを受信した時刻とハートビートデータを受信した時刻とのうち、直前の時刻を記録する時刻記録部１１８と、所定の間隔で時刻を計測し、障害検出部１１５が、タイマー管理部１１９が計測する所定の間隔毎に、時刻記録部１１８が記録している時刻と現在時刻とを比較し、時刻記録部１１８が記録している時刻が現在時刻より所定の間隔以前の時刻であった場合、通信に障害が発生したと判断することができる。
【００３８】
監視端末１０２は、さらに、障害検出部１１５が通信に障害が発生したと判断した場合、共有メモリ管理部１１４が監視端末側共有メモリ１１７が記憶する監視対象のデータを消去し、送信部１１２１が、共有メモリ管理部１１４が監視端末側共有メモリ１１７が記憶する監視対象のデータを消去したことを示すメッセージを制御装置１０１へ送信することができる。
【００３９】
この実施の形態によれば、正常時の通信データ量削減による通信の効率化と、制限時間を設定することによる障害の発生時の共有メモリの内容の不一致を検出することができる両方の効果がある。すなわち、単純に差分データの送信により通信を効率化を実現すると、値に変化がない場合に通信が発生しないので、制限時間を設定することによる障害発生の検出が難しい。しかし、上記した方法により、通信を効率化と制限時間を設定することによる障害発生の検出とを両立することが可能となる。
【００４０】
実施の形態２．
実施の形態１では、正常時の通信データ削減による通信の効率化と障害発生時に制限時間を設定することによる共有メモリの内容の不一致の検出とを両立させようというものであった。以下に示す実施の形態２では、制御装置が監視端末との通信において、定められた期間受信せずに、障害を検出した場合、直ちに致命的なエラーとはせずに、監視端末１０２との通信が速やかに回復した場合には、共有メモリの内容の一貫性を回復する方法を説明する。
【００４１】
実施の形態２における監視システムと制御装置１０１と監視端末１０２との構成は、実施の形態１と同じである。
【００４２】
制御装置１０１は、実施に形態１の構成に加えて、さらに、送信部１０５１が監視端末１０２へデータを送信した時刻を記録する時刻記録部１０８を備えている。
【００４３】
制御装置１０１では、送信部１０５１は、監視端末へデータを送信することができない場合、時刻記録部１０８に記録されている前回の監視端末１０２へ送信した時刻から所定の時間が経過する以前は、制御装置側共有メモリ１１０に記録されていたが監視端末１０２へ送信することができなかった監視対象のデータの監視端末１０２への送信を試み、所定の時間が経過する以前に、送信部１０５１が監視端末１０２へ監視対象のデータを送信することができるようになった場合、制御装置側共有メモリ１１０に記憶されていたが監視端末１０２へ送信することができなかった監視対象のデータを監視端末１０２へ送信し、時刻記録部１０８に記録されている前回の監視端末１０２へ送信した時刻から所定の時間が経過した後は、監視タスク部１０７が、制御装置側共有メモリ１１０が記憶する監視対象のデータを消去する。
【００４４】
実施の形態２における制御装置１０１の詳しい動作を図６に示すフローチャートを用いて説明する。制御装置１０１は、通信障害が発生しても、通常の処理を継続する時間を、予め定めておく。ここでは、その時間を８秒とする。
【００４５】
制御装置１０１の監視タスク部１０７は、通信の障害が発生したか否かを判断し（ステップＳ１３０）、発生していない場合、つまり、監視端末１０２への通信が正常に行われる場合（ステップＳ１０３でＮｏの場合）、時刻記録部１０８に現在時刻を記録する（ステップＳ１３１）。発生している場合、つまり、監視タスク部１０７が送信を実行した時、通信制御部１０５がエラーを返し、この結果を受けてデータ送受信部１０６もエラーを返す場合（ステップＳ１０３でＹｅｓの場合）、監視タスク部１０７は時刻記録部１０８に時刻を記録しない（ステップＳ１３２）。監視タスク部１０７は、通信制御部１０５がエラーを返した場合、その後、あらかじめ定められた一定時間（８秒）が経過するまでは、実施の形態１で示したように、１秒間隔で監視対象の現在の値と共有メモリ１１０の値と比較し、値が異なれば共有メモリ１１０に監視対象の現在の値を書き込む（ステップＳ１３３）。
【００４６】
しかし、この場合、送信部１０５１は、監視端末１０２へは比較した差分を送るのではなく、共有メモリ管理テーブル１０９に登録されていたが監視端末１０２へ送ることができなかった監視対象の識別子と値とを送ろうと試行する。
【００４７】
定められた８秒を過ぎても通信制御部１０５がエラーを返す場合は、監視タスク部１０７は、共有メモリ管理部１０４を通じて、共有メモリ管理テーブル１０９を再初期化することにより、共有メモリ１１０を無効化する（ステップＳ１３４）。
【００４８】
これに対して、監視端末１０２が障害が発生したと判断するのは、実施の形態１で示したように、通信が途絶えてから４秒以降である。これにより、通信に障害が発生した場合には、監視端末１０２が初めに共有メモリ１１０を無効化し、次に、制御装置１０１が共有メモリ１１０を無効化するという順番が保証されることになる。
【００４９】
その後、制御装置１０１へ監視端末側共有メモリ１１７が記憶する監視対象のデータを消去したことを示すメッセージを送信する（ステップＳ１３５）。
【００５０】
上記のような方法により、通信制御部１０５が、最初にエラーを返して以降８秒以内に成功を返し、かつ、この成功が監視端末１０２へに通信が途絶えてから４秒以内に返された場合、制御装置１０１と監視端末１０２の共有メモリは、共に無効化されることなく、一貫性を保ったままにすることができる。
【００５１】
図７は、実施の形態２における制御装置１０１から監視端末１０２へ通信を行った場合の処理の例を示したものである。
４０１〜４０５は、実施の形態１における２０１〜２０５と同様であり説明を省略する。４０６では、監視対象の識別子Ｂの値に変化があったため、対象識別子Ｂとその値を送信しようとしたが、通信制御部１０５はエラーを返した。以降、最大８秒間、通信制御部１０５が成功を返すまで、監視対象の識別子Ａとその値、監視対象の識別子Ｂとその値の両方を送信しようと試行する。４０７では、通信制御部１０５はエラーを返した。４０８では、通信制御部１０５は成功を返した。成功を返した後、４０９では、再び変化のあった監視対象の識別子とその値のみを送信する。図７では、監視端末１０２において４秒以内に通信が再開しているため、共有メモリ１１７の無効化は行わず、制御装置１０１においても、８秒以内に通信に成功しているため、共有メモリ１１０の無効化は行われない。
【００５２】
図８に、制御装置１０１の正常時および障害検出時の送信アルゴリズムをまとめる。但し、障害検出後、８秒以降の手順については示していない。
監視タスク部１０７は通信障害等の障害を検出したか否かを判断する（ステップＳ３０１）。検出した場合、すべての対象識別子と値を監視端末１０２に送信しようと試みる（ステップＳ３０７）。検出していない場合、送信すべき監視対象があるかどうかを判断する（ステップＳ３０２）。監視対象がある場合、共有メモリ１１０から同じ監視対象の以前の値を読み出し（ステップＳ３０３）、読み出した値と送信しようとする値が同じであるか否かを判断する（ステップＳ３０４）。値が同じ場合、送信しようとする値を共有メモリ１１０に書き込む必要はないので、ステップＳ３０２に戻って、他に送信すべき監視対象があるか否かを判断する。値が異なる場合、送信しようとする値を共有メモリ１１０に書き込む（ステップＳ３０５）。バッファ１１１に監視対象の識別子と値を書き込む（ステップＳ３０６）。ステップＳ３０２において、送信すべき監視対象がこれ以上ない場合、バッファ１１１が空か否かを判断する（ステップＳ３０８）。バッファ１１１が空の場合、ハートビートデータを送信する（ステップＳ３１０）。バッファ１１１が空でない場合、バッファ１１１の内容を送信する（ステップＳ３０９）。
【００５３】
この実施の形態によれば、制御装置１０１は、さらに、送信部１０５１が監視端末１０２へデータを送信した時刻を記録する時刻記録部１０８を備えることにより、送信部１０５１は、監視端末１０２へデータを送信することができない場合、時刻記録部１０８に記録されている前回の監視端末１０２へ送信した時刻から所定の時間が経過する以前は、制御装置側共有メモリ１１０に記録されていたが監視端末１０２へ送信することができなかった監視対象のデータの監視端末１０２への送信を試み、所定の時間が経過する以前に、送信部１０５１が監視端末１０２へ監視対象のデータを送信することができるようになった場合、制御装置側共有メモリ１１０に記憶されていたが監視端末１０２へ送信することができなかった監視対象のデータを監視端末１０２へ送信し、時刻記録部１０８に記録されている前回の監視端末１０２へ送信した時刻から所定の時間が経過した後は、監視タスク部１０７が、制御装置側共有メモリ１１０が記憶する監視対象のデータを消去することができる。
【００５４】
この実施の形態によれば、障害発生時に、制御装置１０１が共有メモリ１１０を無効化するまでの時間Ｔ３を、監視端末１０２が共有メモリ１１７を無効化するまでの時間Ｔ１より十分大きくし、制御装置１０１が送信の際エラーを検出した場合、すぐに共有メモリ１１０を無効化せず、通信が回復するまで全対象識別子とデータの送信を試行することで、通信ケーブルの活線挿抜などによる一時的な障害が発生した場合にも、共有メモリの一貫性速やかに回復することができる。
【００５５】
実施の形態３．
実施の形態２では、制御装置１０１と監視端末１０２と間の障害が速やかに回復した場合、共有メモリの内容の一貫性を回復する方法を示した。以下に述べる実施の形態３では、監視端末１０２が共有メモリ１１７を無効化して以降、制御装置１０１との通信障害が回復した場合、制御装置１０１が即座に全対象識別子とその値を停止し、同様に共有メモリ１１０を無効化する方法について示す。
【００５６】
実施の形態３における監視システムと制御装置１０１と監視端末１０２との構成は、実施の形態１と同じである。
【００５７】
制御装置１０１は、実施の形態１での構成に加えて、さらに、監視端末１０２から監視端末側共有メモリ１１７が記憶する監視対象のデータを消去したことを示すメッセージを受信する受信部１０５２と、送信部１０５１が監視端末１０２へデータを送信した時刻を記録する時刻記録部１０８とを備えている。
【００５８】
制御装置１０１は、時刻記録部１０８に記録されている前回の監視端末１０２へ送信した時刻から所定の時間が経過する以前に、受信部１０５２が監視端末１０２から監視端末側共有メモリ１１７が記憶する監視対象のデータを消去したことを示すメッセージを受信した場合、監視タスク部１０７が、制御装置側共有メモリ１１０が記憶する全て監視対象のデータを消去する。
【００５９】
図９は、実施の形態３における制御装置１０１から監視端末１０２へ通信を行った場合の処理の例を示したものである。
５０１〜５０５については、２０１〜２０５と同様であり説明を省略する。５０６では監視対象の識別子Ｂの変化があったため、監視対象の識別子Ｂとその値を送信したが、通信制御部１０５はエラーを返した。以降、最大８秒間は、全監視対象の識別子とその値を送信する。図９では、５０７において監視対象の識別子Ａとその値、監視対象の識別子Ｂとその値を送信している。監視端末１０２では、４秒間、制御装置１０１からの通信がなかったため、５０８において共有メモリ１１７を無効化する。この時点で、制御装置１０１は８秒経過していないため送信の試行を続けている。そして、５０７の最後に通信制御部１０５が通信の成功を返した。監視端末１０２は、共有メモリ１１７を既に無効化しているので、５０９において、共有メモリ１１７を無効化したことを示すメッセージを制御装置１０１に送信する。これを受けた制御装置１０１は、５１０において共有メモリ１１０を無効化する。
【００６０】
この実施の形態によれば、制御装置１０１は、さらに、監視端末１０２から監視端末側共有メモリ１１７が記憶する監視対象のデータを消去したことを示すメッセージを受信する受信部１０５２と、送信部１０５１が監視端末１０２へデータを送信した時刻を記録する時刻記録部１０８とを備えることにより、時刻記録部１０８に記録されている前回の監視端末１０２へ送信した時刻から所定の時間が経過する以前に、受信部１０５２が監視端末１０２から監視端末側共有メモリ１１７が記憶する監視対象のデータを消去したことを示すメッセージを受信した場合、監視タスク部１０７が、制御装置側共有メモリ１１０が記憶する全て監視対象のデータを消去することができる。
【００６１】
この実施の形態によれば、障害発生時に、制御装置１０１が共有メモリ１１０を無効化するまでの時間Ｔ３を、監視端末１０２が共有メモリ１１７を無効化するまでの時間Ｔ１より十分大きくし、制御装置１０１が送信の際エラーを検出した場合、すぐに共有メモリ１１０を無効化せず、通信が回復するまで全対象識別子とデータの送信を試行するようにし、更に、監視端末１０２が共有メモリ１１７を無効化した後に通信が回復した場合、監視端末１０２から制御装置１０１に対して、共有メモリ１１７を無効化したことを示すメッセージを明示的に送り、これを受けた制御装置１０１が共有メモリ１１０を無効化することにより、制御装置１０１は、共有メモリ１１０を無効化するまでの時間Ｔ３を待つことなく共有メモリ１１０を無効化すること可能となる。
【００６２】
監視システムは、共有メモリのデータ送信側である制御装置と共有メモリのデータ受信側である監視端末をネットワークにより接続し、制御装置において周期的に監視対象の値を取得し現在書かれている共有メモリの値と比較し、値が同じ場合には何もせず、値が異なる場合には、共有メモリの値を上書きし、そして、その値を監視端末へ送信し、値を比較した結果、変化した値が１つもない場合は、監視対象の値の代わりにハートビートデータと呼ばれる小さいデータを送信する手段を提供する制御装置と、監視対象の値とハートビートデータの両方を受信し、いずれかのデータがあらかじめ決められた時間内に到着しにない場合に障害発生と判断し、共有メモリを無効化する手段を提供する監視端末とから構成される。
【００６３】
監視システムは、監視端末側で障害発生と判断し共有メモリを無効化するまでの時間を、制御装置側で監視端末との通信エラーにより障害発生と判断し共有メモリを無効化するまでの時間より短く設定する手段を提供し、制御装置では通信エラーを検出後、共有メモリを無効化するまでは、すべての監視対象のデータを監視端末に送る手段を提供し、監視端末において、共有メモリ無効化される以前に通信が回復した場合、監視対象のデータを共有メモリに書き込む手段を提供する。これにより共有メモリの一貫性を回復する機能を提供する分散共有メモリにより構成される。
【００６４】
監視システムは、監視端末側で障害発生と判断し共有メモリを無効化した直後、制御装置との通信が回復し、制御装置から監視対象の値が送られてきた場合、監視端末から共有メモリを無効化したことを示すメッセージを送り、制御装置ではこのメッセージに基づき同様に共有メモリを無効化する手段を提供する。
【００６５】
図１０は、前記した各実施の形態における制御装置１０１と監視端末１０２とのハードウェア構成を示す図である。
制御装置１０１と監視端末１０２とは、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、ＣＲＴ表示装置９０１、キーボード（Ｋ／Ｂ）９０２、マウス９０３、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）９０４、磁気ディスク装置９２０、ＣＤＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）９０５、プリンタ装置９０６、スキャナ装置９０７と接続されている。
【００６６】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
【００６７】
通信ボード９１５は、ＦＡＸ機、電話器、ＬＡＮ等に接続されている。例えば、通信ボード９１５、Ｋ／Ｂ９０２、ＦＤＤ９０４などは、情報入力部の一例である。また、例えば、通信ボード９１５、スキャナ装置９０７、ＣＲＴ表示装置９０１などは、出力部の一例である。
【００６８】
ここで、通信ボード９１５は、ＬＡＮに限らず、直接、インターネット、或いはＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）に接続されていても構わない。直接、インターネット、或いはＩＳＤＮ等のＷＡＮに接続されている場合、制御装置１０１と監視端末１０２は、インターネット、或いはＩＳＤＮ等のＷＡＮに接続され、ウェブサーバは不用となる。
【００６９】
磁気ディスク装置９２０には、オペレーティングシステム（ＯＳ）９２１、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３は、ＣＰＵ９１１、ＯＳ９２１、ウィンドウシステム９２２により実行される。
【００７０】
上記プログラム群９２３には、各機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、各ファイルが記憶されている。
また、前記した実施の形態で説明したフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
【００７１】
また、制御装置１０１と監視端末１０２とは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
【００７２】
また、プログラムは、また、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体による記録装置を用いて記憶されても構わない。
【図面の簡単な説明】
【００７３】
【図１】実施の形態１における監視システムの構成を示す図である。
【図２】実施の形態１における制御装置の正常時の動作を示すフローチャートである。
【図３】実施の形態１における監視端末の正常時の動作を示すフローチャートである。
【図４】実施の形態１における監視端末の異常時の動作を示すフローチャートである。
【図５】実施の形態１における制御装置から監視端末へ通信を行った場合の処理の例を示す図である。
【図６】実施の形態２における制御装置の動作を示すフローチャートである。
【図７】実施の形態２における制御装置から監視端末へ通信を行った場合の処理の例を示すずである。
【図８】制御端末の監視タスク部の各周期における正常時および障害検出時の送信アルゴリズムを示すフローチャートである。
【図９】実施の形態３における制御装置から監視端末へ通信を行った場合の処理の例を示す図である。
【図１０】各実施の形態における制御装置１０１と監視端末１０２とのハードウェア構成を示す図である。
【符号の説明】
【００７４】
１０１  制御装置、１０２  監視端末、１０３  ネットワーク、１０４  共有メモリ管理部、１０５  通信制御部、１０５１  送信部、１０５２  受信部、１０６  データ送受信部、１０７  監視タスク部、１０８  時刻記録部、１０９  共有メモリ管理テーブル、１１０  共有メモリ、１１１  バッファ、１１２  通信制御部、１１２１  送信部、１１２２  受信部、１１３  データ送受信部、１１４  共有メモリ管理部、１１５  障害検出部、１１６  共有メモリ管理テーブル、１１７  共有メモリ、１１８  時刻記録部、１１９  タイマー管理部、９０１  ＣＲＴ表示装置、９０２  キーボード（Ｋ／Ｂ）、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2006048249.tif 000003
【図２】
2006048249.tif 000004
【図３】
2006048249.tif 000005
【図４】
2006048249.tif 000006
【図５】
2006048249.tif 000007
【図６】
2006048249.tif 000008
【図７】
2006048249.tif 000009
【図８】
2006048249.tif 000010
【図９】
2006048249.tif 000011
【図１０】
2006048249.tif 000012