(57)【要約】【課題】計算機が常に健全であるとは限らず、ハードウェア障害による停止・再起動などの突発的な事態が発生すると、使用中アドレスなどの管理情報がクリアされ、共有メモリを使用している計算機どうしで管理情報に不整合が発生する課題が生じる。【解決手段】  要求を発行する第一計算機と、  前記要求を受け付ける第二計算機と、  前記第一計算機と前記第二計算機の通信を行う通信路と、  前記第一計算機と前記第二計算機が情報を共有する共有メモリとを備え、  前記通信路を経由し、前記第一計算機が前記第二計算機に要求したデータが、前記共有メモリを経由して前記第二計算機から前記第一計算機にデータを受け渡す制御監視システム。【選択図】  図１
2017129892.tif 000002
【特許請求の範囲】
【請求項１】
要求を発行する第一計算機と、
前記要求を受け付ける第二計算機と、
前記第一計算機と前記第二計算機の通信を行う通信路と、
前記第一計算機と前記第二計算機が情報を共有する共有メモリとを備え、
前記通信路を経由し、前記第一計算機が前記第二計算機に要求したデータが、前記共有メモリを経由して前記第二計算機から前記第一計算機にデータを受け渡す制御監視システム。
【請求項２】
請求項１において、
前記第一計算機は、前記共有メモリの情報を共有するため通信に付与された更新情報の変化を監視する稼動監視部と、前記第二計算機の情報を管理する第一要求管理表とをもち、前記更新情報の更新が停止した時にその通信に対応する前記第一要求管理表の項目を削除する制御監視システム。
【請求項３】
請求項１において、
前記第二計算機は、前記要求を受け付ける時に取得した送信終了時刻に達したか否かを監視する自動割当解除部と、前記第一計算機の情報を管理する第二要求管理表とをもち、前記送信終了時刻に達した前記第二要求管理表の項目を削除し、再度他の要求を受け付けるように前記第二要求管理表を更新する制御監視システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機がネットワークによって接続された制御監視システムおよび制御監視方法に係り、特にサーバとコントローラとの間のデータの共有に関する。
【背景技術】
【０００２】
制御システムにおいては、システム内のそれぞれの計算機(サーバＰＣやコントローラなど)同士で通信をおこない、データを共有している。データの共有方法の一つとして、共有メモリ方式がある。
【０００３】
共有メモリ方式では、それぞれの計算機が書き込む共有メモリの領域と書き込む元となるデータのアドレスを固定的に定義し、その情報を他の計算機が参照してデータを共有する方式である。書き込む側の計算機が周期的に自身のデータを共有メモリ領域に書込み、参照する側の計算機が周期的にその共有メモリ領域を参照することで、データの受け渡しがされる仕組みである。
【０００４】
特許文献１には、共有メモリからデータを読み出す際に、高速アクセスを可能とするために、システムの内部で、計算機同士が通信して、共有メモリの中で使用中のアドレスを通知し、共有メモリの動的割り付けエリア上のアドレスをタグに対して割り当て、割り当てたアドレスを追加する技術について記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2015-049668
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１では、共有メモリを使用する計算機どうしが使用中アドレスなどの管理情報を適切なタイミングで交換し続けることが必要となる。しかし、計算機が常に健全であるとは限らず、ハードウェア障害による停止・再起動などの突発的な事態が発生すると、使用中アドレスなどの管理情報がクリアされ、共有メモリを使用している計算機どうしで管理情報に不整合が発生する課題が生じる。
【課題を解決するための手段】
【０００７】
要求を発行する第一計算機と、
前記要求を受け付ける第二計算機と、
前記第一計算機と前記第二計算機の通信を行う通信路と、
前記第一計算機と前記第二計算機が情報を共有するための共有メモリとを備え、
前記通信路を経由し、前記第一計算機が前記第二計算機に要求したデータが、前記共有メモリを経由して前記第二計算機から前記第一計算機にデータを受け渡す制御監視システム。
【発明の効果】
【０００８】
本発明によれば、通信が途絶えて一定時間が経過したのち、通信が再開されたとしても、お互いの管理情報は削除されているため、再度データの要求をおこない、共有メモリの領域を割り当てるところから開始されることで、管理情報の不整合の問題を回避することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明に係る最良の実施形態の構成図である。
【図２】本発明の動作を表すタイムチャート図である。
【図３】本発明の要求元計算機(サーバ)の管理表である。
【図４】本発明の要求先計算機(コントローラ)の管理表である。
【図５】本発明の稼動監視部の処理フロー図である。
【図６】本発明の自動割当解除部の処理フロー図である。
【発明を実施するための形態】
【００１０】
以下、実施例を図面を用いて説明する。
【実施例１】
【００１１】
図１は本実施例の２つの計算機のシステム構成図である。ここではネットワーク上に存在する共有メモリを転写メモリと呼称し、その転写メモリのデータを読み出す計算機をサーバ１０１、転写メモリに書き込む計算機をコントローラ１１１として説明する。ただし、転写メモリを利用する計算機の形態は任意である。また、図１には２つの計算機を図示しているが、計算機の個数はいくつであってもよいものとする。
【００１２】
サーバ１０１では転写メモリ１０４は複数のブロックをもち、そのブロックのＩＤを指定することでその内容が取り出せるようになっている。また、コントローラ１１１でも、転写メモリ１１４に示すように、ブロックのＩＤを指定して書込みをおこない、サーバ１０１の転写メモリ１０４の同一のブロックＩＤの内容を更新することができる。
【００１３】
サーバ１０１は主に２つの機能を実現する部位を持ち、それぞれ要求送信部１０２、データ受信部１０３と呼ぶ。コントローラも同様に２つの機能を持ち、要求受信部１１２、データ送信部１１３と呼ぶ。要求送信部１０２では、サーバがコントローラ１１１の持つデータを要求する処理をおこなう。それを通信１２１で表す。
【００１４】
通信１２１には、データを一意に識別できるアドレスの情報やデータの持つ名称などの情報を含むと同時に、データの送信を終了する送信終了時間も含む。また、通信１２１では、サーバがデータの送信を停止する終了要求を発行することもできる。
【００１５】
一方、コントローラ１１１内の要求受信部１１２では、前述の通信１２１を受信し解釈する機能をもつ。通信１２１を解釈した結果、要求されたデータがデータ送信部１１３から送信可能であると判断した場合、サーバ１０１の要求送信部１０２に対して通信１２２を応答として返す。この通信１２２には、転写メモリ１０４の中の要求に対応する利用可能なブロックのＩＤとコントローラ１１１の現在の生存カウンタ値を含む。通信１２２を受信した要求送信部１０２では、内部通信１３１によってデータ受信部１０３の要求管理表１０５にブロックのＩＤと生存カウンタ値を書き込む。
【００１６】
コントローラ１１１の要求受信部１１２がサーバ１０１に対して通信１２２を発行したあと、内部通信１４１でデータ送信部１１３の要求管理表１１５を更新する。要求管理表１１５には書き込み予定の転写メモリ１１４のブロックＩＤと、サーバ１０１から受信した送信終了時刻を書き込む。この処理の後、データ送信部１１３では、周期的に転写メモリ１１４の指定のブロックに要求されたデータの書き込みを開始する。同時に、自動割当解除部１１６では、内部通信１４２によって定期的に要求管理表１１５にアクセスし、送信終了時刻が経過しているかを監視する。詳細は後述の図４のフローチャートに示す。
【００１７】
次にデータ送信部１１３とデータ受信部１０３の間の処理について説明する。データ送信部１１３で転写メモリ１１４のブロックＩＤを指定して要求されたデータの書込みをおこなうと、データ送信部１１３の内部、あるいはこれよりも下位のプラットフォーム（図示していないが、例えばオペレーティングシステムやハードウェアなど）で通信１２４に変換し、転写メモリ１１４の内容を、転写メモリ１０４に格納する処理をおこなう。通信１２４では、その処理として、ブロックＩＤの情報とデータだけでなく、転写メモリ１１４に格納されたコントローラ１１１の生存カウンタ値を含める。
【００１８】
データ受信部１０３では、ブロックＩＤとデータの内容をもとに、内部通信１３２によって転写メモリ１０４に指定のブロックにデータを書き込む。一方、生存カウンタ値の情報は、コントローラ稼動監視部１０６が解釈し、内部通信１３３によって要求管理表１０５を更新する処理をおこなう。また、稼動監視部１０６は要求管理表１０５の生存カウンタ値の監視をおこなう。詳細は後述の図５のフローチャートに示す。
【００１９】
以上のプロセスによって、サーバ１０１からコントローラ１１１に対してデータの要求を発行し、コントローラ１１１のデータを転写メモリ１０４に書き込むことができる。なお、転写メモリ１０４および要求管理表１０５については、コントローラ１１１のデータ送信部からの転写メモリ１１４への書込みがない限り、前回値を保持する仕組みを具備する。
【００２０】
次に、図２で通信１２１、１２２、１２４および送信終了時間、コントローラ生存カウンタ値の関係をタイムチャートで示す。本実施例における通信は、要求通信１２１と応答通信１２２のやりとりの後、データ通信１２４を周期的に受信したら、再度要求通信１２１と応答通信１２２のやり取りを繰り返す。サーバ１０１が要求通信１２１に含める送信終了時間は、サーバが次の要求通信１２１を発行するまでの時間である。
【００２１】
また、コントローラ生存カウンタは、コントローラ１１１の内部で一定時間ごとにインクリメントされるものである。サーバ１０１が送信終了時間を過ぎても要求通信１２１をコントローラ１１１に送信しなかった場合、コントローラ１１１ではデータ送信１２４を停止する。一方、サーバ１０１がコントローラの生存カウンタが更新されていないことを検知すると、サーバ１０１ではコントローラ１１１が停止したと見なし、通信を停止する。コントローラ１１１の生存カウンタがインクリメントされる時間間隔は、サーバ１０１がその生存カウンタを監視する時間に対して十分小さいものとする。
【００２２】
図３にサーバ１０１の要求管理表１０５の内容を示す。要求管理表１０５は要求送信部１０２とコントローラ稼動監視部１０６によって参照・更新される。
【００２３】
項目３０１は管理番号であり、表の各要素の管理に用いる。項目３０２は要求先の情報であり、たとえば要求を発行した先のコントローラのネットワークアドレス等を格納する。項目３０３は転写メモリのブロックのＩＤであり、項目３０２に示されたコントローラがデータの送信に用いている転写メモリのブロックのＩＤである。項目３０４は前回生存カウンタ値であり、項目３０２に示されたコントローラが送信するデータに付与された生存カウンタの前回値を記録するものである。
【００２４】
要求送信部１０２ではコントローラ１１１から通知されたこれらの情報を書き込み、コントローラ稼動監視部１０６ではデータ送信１２４を受け取るたびに、前回生存カウンタ値の項目３０４を更新する。もし前回生存カウンタ値が、一定時間後にも変更されていない場合は、コントローラ１１１が停止していると見なす。
【００２５】
図４にコントローラ１１１の要求管理表１１５の内容を示す。
【００２６】
要求管理表１１５はコントローラ１１１の要求受信部１１２と自動割当解除部１１６が参照・更新する。
【００２７】
項目４０１には転写メモリのブロックＩＤを格納する。項目４０２に要求元の情報、例えば要求元サーバのアドレス等を格納する。項目４０３には項目４０１に指定された転写メモリに書き込むデータの参照先を格納する。項目４０４には、サーバ１０１に送信するときの送信終了時刻を格納する。項目４０３のデータ参照先の記述方法は参照先のデータのオブジェクト名称を例にしているが、コントローラのメモリアドレス番地などの記述であってもよい。
【００２８】
送信終了時刻は以下のようにして計算する。サーバ１０１から要求通信１２１を受信したときに、コントローラ１１１が内部で保持している時計の時刻に、要求通信１２１に含まれる送信終了時間を足した時刻となる。
【００２９】
例えば、コントローラ１１１が内部の時計で２０１５年７月２７日１１時３４分５６秒のときに、サーバ１０１からの要求通信１２１を受け取り、送信終了時間が１時間００分００秒を指定されたとき、要求管理表１１５に記載すべき送信終了時刻は２０１５年７月２７日１２時３４分５６秒となる。
【００３０】
自動割当解除部１１６は送信終了時刻とコントローラ１１１の内部の時計とを比較し、送信終了時刻を過ぎていた場合は該当のエントリを削除する。一方、要求受信部１１２がサーバ１０１から再度要求通信１２１を受け付けた場合、送信終了時刻は更新され、受信したときのコントローラの内部時計の時刻に要求通信１２１に含まれる送信終了時間を加えた時間になる。
【００３１】
これにより、計算機が通常動作ができなくなり、計算機が共有メモリの領域を解放して再利用してよいかの判断がつかず、共有メモリの領域が、占有され、解放できなくなる領域を生み出すことになった場合であっても、計算機が共有メモリを解放できない領域を生み出すことがなくなり、共有メモリの利用を効率化することができる。
【００３２】
図５に、コントローラ稼動監視部１０６の処理フローを示す。
【００３３】
コントローラ稼動監視部１０６は、データ受信部１０３がデータ通信１２４を受信したときに処理開始される。
【００３４】
処理５０２では、データ通信１２４に付与されている生存カウンタ値を参照する。
【００３５】
次に、処理５０３では要求管理表１０５からデータ通信１２４を受け付けたコントローラ１１１に対応するエントリを検索し、そのエントリの項目３０４（図３）の前回生存カウンタ値を参照する。
【００３６】
判定５０４では、処理５０２、処理５０３で参照した生存カウンタ値と前回生存カウンタ値とを比較し、値が一定時間後も同じか否かを判定する。値が異なっている場合は処理５０５へ分岐し、値が同じである場合は処理５０６に分岐する。
【００３７】
処理５０５では、コントローラ１１１に対応する要求管理表１０５の前回生存カウンタ値を、データ通信１２４で参照した生存カウンタ値で書き換える。処理５０６では、コントローラ１１１に対応する要求管理表１０５のエントリを削除する。常にカウントアップしていることが前提である生存カウンタ値が前回と変化しておらず、同一の値となっているということは、コントローラ１１１が停止、あるいは異常状態となっており、更新ができない状態であることを意味する。そのため、そのような状態になったコントローラ１１１は通信の対象から除外するのである。
【００３８】
図６には、自動割当解除部１１６の処理フローを示す。ここでは、自動割当解除部１１６は、コントローラ１１１に常駐するタスクとして動作し、ある一定の周期で起動され、処理をおこなうものとして説明する。
【００３９】
まず、処理６０２では、コントローラ１１１が内部で保持している時計から、現在の時刻を参照する。次に処理６０３では、要求管理表１１５のブロックＩＤがｎ(n＝1,2,3,…)のエントリから、送信終了時刻(図４では項目４０４)を参照する。そして判定６０４では送信終了時刻と現在時刻を比較する。
【００４０】
比較した結果、送信終了時刻が現在時刻よりも前である場合は、処理６０６に進む。比較し結果、送信終了時刻が現在時刻と同じか後である場合は、処理６０５に進む。処理６０５では、n番目のブロックIDのエントリを削除する処理をおこない、このブロックが別の要求で利用可能な状態にする。送信終了時刻は要求通信１２１を受け付けたときの現在時刻に、要求通信１２１の送信終了時間を加算したものであるので、送信終了時刻を過ぎたということは、要求通信１２１で受け付けた送信終了時間が経過したことを意味している。
【００４１】
よって、送信終了時間が経過した要求のエントリは削除することができる。次に処理６０６では、ブロックＩＤをインクリメントして、次のエントリを取り出す。判定６０７で、もし要求管理表１１５のすべてのエントリを確認し終えたのであれば、自動割当解除部１１６の処理はいったん終了するが、まだエントリが残っている場合は、再び処理６０３に戻る。自動割当解除部１１６は、終了した後一定の時間が経過した場合は、ＯＳや他のタスクから起動され、処理６０２から開始する。
【００４２】
本実施例においては、計算機（サーバ１０１、コントローラ１１１）は、プログラム等を実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、メモリ、他の計算機と通信を行う通信部を備える。また、計算機同士は、ネットワーク等の通信路を介して接続される。
【００４３】
メモリには、転写メモリ１０４、１１４、要求管理表１０５、１１５が記憶され、また、自動割当解除部１１６、稼働監視部１０６がプログラムとして記憶される。
【００４４】
本実施例によれば、通信が途絶えて一定時間が経過したのち、通信が再開されたとしても、お互いの管理情報は削除されているため、再度データの要求をおこない、共有メモリの領域を割り当てるところから開始されることで、管理情報の不整合の問題を回避することができる。
【００４５】
つまり、割当てを動的に管理するため、どのような要求が処理中かを管理する要求管理表１０５，１１５をサーバ１０１とコントローラ１１１の両方が持つことで、サーバ１０１とコントローラ１１１のそれぞれの要求管理表１０５，１１５の一貫性を保つことができる。
【００４６】
具体的には、サーバ１０１停止とコントローラ１１１停止による管理表の不一致を検知する必要がある。そこで、サーバ停止に関しては、要求が終了してもよい時刻の通知と再要求にて、管理表の一貫性を保つ。コントローラの停止に関しては、コントローラの稼働時間を転写メモリに含め確認することで、管理表の一貫性を保つことができる。
【００４７】
また、共有メモリ方式では、システムの増改築や、参照するデータを後から変更する場合には不便となる。例えば、参照する側の計算機が書き込む側の計算機に、現在共有メモリに書き込んでいないデータを新たに要求しようとしても、固定的な共有メモリの割当方式ではそれに対応することができない。あるいは、システムの増改築で追加された計算機で必要なデータが共有メモリ上にないときは、共有メモリの割当を変更しなければならない。この作業は、関連するほかの計算機に対して共有メモリ割当の再設計、および計算機の再起動の作業を伴うことになる。しかし、本実施例によれば、共有メモリ割当の再設計、計算機の再起動作業を行うことなく、システムの増改築を行うことができ、また、共有メモリの割り当ての変更も不要となる。
【符号の説明】
【００４８】
サーバ１０１、コントローラ１１１、転写メモリ１０４、１１４、要求送信部１０２、データ受信部１０３、要求受信部１１２、データ送信部１１３、通信１２１、１２２、１４１、１４２、１２４、１３２、１３３、要求管理表１０５、１１５、自動割当解除部１１６、稼働監視部１０６
【図１】
2017129892.tif 000003
【図２】
2017129892.tif 000004
【図３】
2017129892.tif 000005
【図４】
2017129892.tif 000006
【図５】
2017129892.tif 000007
【図６】
2017129892.tif 000008