(57)【要約】【課題】システムに存在する複数のノードにおいて、一つのノードが他のノードから所望のデータを取得できるようにしても、共有メモリ領域の設定を変更するためにシステムの運用を停止させることなく、データの共有を継続できるデータ共有システムを提供する。【解決手段】ネットワークによって互いに接続された複数複数のノードの夫々は、共有されるデータを記録可能な共有メモリ領域にアクセス可能であり、複数のノードのうち、共有されるデータの送信元のノードは、データを、アクセス可能な共有メモリ領域に記録するとともに、データを他の複数のノードに同報送信し、他の複数のノードの夫々は、ノードがアクセス可能な共有メモリ領域に、同報送信されたデータを記録し、複数のノードのうち少なくとも一つは、プル方式のデータ通信が可能であり、アクセス可能な共有メモリ領域を介して要求するデータを取得できる。【選択図】図３
2018073318.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークによって互いに接続された複数のノードを備え、
前記複数のノードの夫々が他のノードと、プッシュ方式のデータ通信を実行することにより、前記複数のノードがデータを共有できるようにしたデータ共有システムであって、
前記複数のノードの夫々は、前記共有されるデータを記録可能な共有メモリ領域にアクセス可能であり、
前記複数のノードのうち、前記共有されるデータの送信元のノードは、当該データを、当該ノードがアクセス可能な共有メモリ領域に記録するとともに、当該データを他の複数のノードに同報送信し、
前記他の複数のノードの夫々は、当該ノードがアクセス可能な共有メモリ領域に、前記送信元のノードから同報送信されたデータを記録し、
前記複数のノードのうち少なくとも一つは、プル方式のデータ通信が可能であり、
当該プル方式のデータ通信が可能なノードは、当該ノードがアクセス可能な共有メモリ領域を介して、当該ノードが要求するデータを取得できる
データ共有システム。
【請求項２】
前記複数のノードは夫々前記共有メモリ領域を備え、
当該共有メモリ領域は、
前記プッシュ方式で通信されるデータを記録する第１の領域と、
前記プル方式で通信されるデータを記録する第２の領域と、を備え、
前記プル方式のデータ通信を可能とする第１のノードが、当該プル方式のデータ通信を可能とする第２のノードに、データの取得を要求すると、
当該第２のノードは、
当該要求されたデータを、当該第２のノードの前記共有メモリの第２の領域に格納し、
当該データと、当該データの前記第２の領域での格納情報と、を前記第１のノードに応答する、
請求項１記載のデータ共用システム。
【請求項３】
前記第１のノードは、前記格納情報に基づいて、前記要求したデータを、当該ノードの共有メモリ領域に格納する、
請求項２記載のデータ共有システム。
【請求項４】
前記プル方式のデータ通信が可能なノードが、
前記他の複数のノードのうちの通信先ノードに、当該プル方式に従ってデータの取得要求を送信し、
前記通信先ノードから、応答が所定期間内に返信された場合は、前記通信先ノードはプル方式のデータ通信を可能とすると判定し、前記応答に基づいて、前記共有メモリ領域から前記要求したデータを取得し、
前記通信先ノードから、応答が所定期間経過しても返信されない場合は、前記要求したデータを、前記共有メモリ領域を介して、前記プッシュ方式の通信によって取得する、
請求項１記載のデータ共有システム。
【請求項５】
前記プル方式の通信が可能なノードは、前記要求したデータを、前記共有メモリ領域を介して、前記他の複数のノードに、プッシュ方式の通信によって、同報送信する、
請求項１記載のデータ共有システム。
【請求項６】
前記第１のノードは前記第２のノードに、前記データの取得の要求を繰り返し送信する、
請求項２記載のデータ共有システム。
【請求項７】
前記第２のノードは、前記要求を所定時間受信しない場合に、当該ノードの共有メモリ領域の前記第２の領域に記録された前記要求されたデータを削除する
請求項６記載のデータ共有システム。
【請求項８】
前記格納情報は、前記共有メモリ領域の位置とサイズとから定義される
請求項２記載のデータ共有システム。
【請求項９】
前記プッシュ方式で通信されたデータは、複数のノード夫々の前記共有メモリ領域において、前記第１の領域における同じ位置に記憶される、
請求項２記載のデータ共有システム。
【請求項１０】
管理ノードを備え、
当該管理ノードは、
前記共有メモリ領域に対して、前記プッシュ方式の通信によって送受信されるデータの記憶領域と、前記プル方式の通信によって送受信されるデータの記憶領域とのパラメータを生成し、
このパラメータの情報を前記複数のノードに夫々に送信し、
当該複数のノードの夫々は、前記パラメータに基づいて、前記共有メモリ領域に、前記プッシュ方式の通信によって送受信されるデータの記憶領域と、前記プル方式の通信によって送受信されるデータの記憶領域とを設定する
請求項１記載のデータ共有システム。
【請求項１１】
前記管理ノードは、前記パラメータの設定ファイルに基づいて、前記共有メモリ領域を定義する、
請求項１０記載のデータ共有システム。
【請求項１２】
ネットワークによって互いに接続された複数のノードの夫々が他のノードと、プッシュ方式のデータ通信を実行することにより、前記複数のノードがデータを共有できるようにしたデータ共有方法であって、
前記複数のノードの夫々は、前記共有されるデータを記録可能な共有メモリ領域にアクセスし、
前記複数のノードのうち、前記共有されるデータの送信元のノードは、当該データを、当該ノードがアクセス可能な共有メモリ領域に記録するとともに、当該データを他の複数のノードに同報送信し、
前記他の複数のノードの夫々は、当該ノードがアクセス可能な共有メモリ領域に、前記送信元のノードから同報送信されたデータを記録し、
前記複数のノードのうち少なくとも一つのプル方式のデータ通信が可能であるノードは、当該ノードがアクセス可能な共有メモリ領域を介して、当該ノードが要求するデータを取得する
データ共有方法。
【請求項１３】
ネットワークによって他の複数のノードと接続され、当該他の複数のノードとプッシュ方式のデータ通信を実行することにより、データを共有できるようにしたノードであって、
前記共有されるデータを記録可能な共有メモリ領域にアクセス可能であり、
前記データを前記共有メモリ領域に記録するとともに、当該データを他の複数のノードに同報送信し、
プル方式のデータ通信が可能であり、前記共有メモリ領域を介して、前記他の複数のノードから要求するデータを取得する
ノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークによって接続された複数の制御装置がお互いにデータを共有システムに関する。
【背景技術】
【０００２】
複数の制御装置をネットワークによって接続し、複数の制御装置の間でセンサ／アクチュエータの入出力値や制御演算結果といった制御用データを共有できるようにしたシステムが知られている（例えば、特開2008-59420号公報）。この種のシステムでは、複数の制御装置夫々にデータを共有するための共有メモリ領域を持たせ、データを取得した制御装置は、共有メモリ領域にデータをコピーし、そして、これを、他の複数の制御装置の共有メモリに同報送信する。したがって、共有メモリ領域を介することによって、複数の制御装置は、夫々が取得したデータをお互いに共有することができるようになる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2008-59420号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のシステムは、複数の制御装置で共有されるデータの整合性を維持するために、データと共有メモリ領域の位置との関係を予め設定しておき、あるデータが一つの制御装置によって取得されると、このデータを、複数の制御装置夫々の共有メモリ領域において、同じ位置に記録するようにしていた。
【０００５】
ビッグデータの解析やＡＩ技術の進歩に代表されるように、各種の制御の高度化が進み、これに伴って、制御装置も、予め設定された範囲のデータに留まらず、新たなデータを必要とすることがよくある。しかしながら、新たなデータを、共有メモリ領域によって、複数の制御装置で共有できるようにするためには、データ共有システムの運用を停止させて、新たなデータを含めて、データと共有メモリ領域との対応を設定し直さなければならないという課題があった。そこで、本発明は、システムに存在する複数のノードにおいて、一つのノードが他のノードから所望のデータを取得できるようにしても、共有メモリ領域の設定を変更するためにシステムの運用を停止させることなく、データの共有を継続できるデータ共有システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
前記目的を達成するために、本発明は、ネットワークによって互いに接続された複数のノードを備え、前記複数のノードの夫々が他のノードと、プッシュ方式のデータ通信を実行することにより、前記複数のノードがデータを共有できるようにしたデータ共有システムであって、前記複数のノードの夫々は、前記共有されるデータを記録可能な共有メモリ領域にアクセス可能であり、前記複数のノードのうち、前記共有されるデータの送信元のノードは、当該データを、当該ノードがアクセス可能な共有メモリ領域に記録するとともに、当該データを他の複数のノードに同報送信し、前記他の複数のノードの夫々は、当該ノードがアクセス可能な共有メモリ領域に、前記送信元のノードから同報送信されたデータを記録し、前記複数のノードのうち少なくとも一つは、プル方式のデータ通信が可能であり、当該プル方式のデータ通信が可能なノードは、当該ノードがアクセス可能な共有メモリ領域を介して、当該ノードが要求するデータを取得できるというものである。
【発明の効果】
【０００７】
本発明によれば、システムに存在する複数のノードにおいて、一つのノードが他のノードから所望のデータを取得できるようにしても、共有メモリ領域の設定を変更するためにシステムの運用を停止させることなく、データの共有を継続できるデータ共有システムを提供することができる。
【図面の簡単な説明】
【０００８】
【図１】データ共有システムのブロック図の一例である。
【図２Ａ】転写メモリのブロック図の一例である。
【図２Ｂ】転写メモリのブロック図の他の例である。
【図３】データ共有システムのブロック図の一例であって、データの送受信方式が異なる複数種類のノードを示す。
【図４】プル方式非搭載ノードのブロック構成の一例を示す。
【図５】プル方式搭載ノードのブロック構成の一例を示す。
【図６】管理ノードのブロック構成の一例を示す。
【図７】転写メモリ通信テーブルの一例である。
【図８】受信要求管理テーブルの一例である。
【図９】転写メモリデータ管理テーブルの一例である。
【図１０】書き込みデータ管理テーブルの一例である。
【図１１】データ取得開始要求メッセージのフォーマットの一例である。
【図１２】データ取得開始応答メッセージのフォーマットの一例である。
【図１３】データ取得停止要求メッセージのフォーマットの一例である。
【図１４】データ取得停止応答メッセージのフォーマットの一例である。
【図１５】データ取得継続要求メッセージのフォーマットの一例である。
【図１６】転写メモリ設定ファイルのフォーマットの一例である。
【図１７】書き込みデータ設定ファイルのフォーマットの一例である。
【図１８】構築コマンド実行モジュールの動作フローチャートである。
【図１９】構築コマンド実行モジュールのテーブル生成処理のフローチャートである。
【図２０】構築コマンド実行モジュールのデータ設定処理のフローチャートである。
【図２１】応答処理モジュールのフローチャートである。
【図２２】応答処理モジュールのデータ取得開始要求受付処理のフローチャートである。
【図２３】応答処理モジュールのデータ割り当て処理のフローチャートである。
【図２４】応答処理モジュールのデータ取得停止要求受付処理のフローチャートである。
【図２５】応答処理モジュールのデータ取得継続要求受付処理のフローチャートである。
【図２６】書き込み処理モジュールのフローチャートである。
【図２７】書き込み処理モジュールのフローチャートである。
【図２８】要求先管理テーブルの一例である。
【図２９Ａ】送信要求管理テーブルの一例である。
【図２９Ｂ】読み出しデータ管理テーブルの一例である。
【図３０】ユーザプログラムとデータアクセスモジュールによるデータアクセスのシーケンスの一例である。
【図３１】データアクセスモジュールによるデータ取得開始処理のフローチャートの一例である。
【図３２】データアクセスモジュールによるデータ取得停止処理のフローチャートの一例である。
【図３３】データアクセスモジュールによるデータ取得処理のフローチャートの一例である。
【図３４】監視処理モジュールのフローチャートの一例である。
【図３５】応答処理モジュールのデータ取得開始の第２のフローチャートである。
【図３６】応答処理モジュールのデータ取得停止処理の第２のフローチャートである。
【発明を実施するための形態】
【０００９】
図１に、データ共有システムのブロック図の一例を示す。この制御システムは、ネットワーク１３０にノード１１０（１１０ａ，１１０ｂ，１１０ｃ，１１０ｄ，１１０ｅ）が複数接続されている。ノードとは、パソコン、ワークステーション等の計算機、その他、コントローラ等の制御装置である。複数のノード夫々の制御アプリケーションは、センサ／アクチュエータの入出力値や制御演算結果といったデータ１３０Ａを複数のノードにおいて所定周期で共有する。複数のノード夫々は、データを共有するための共有メモリ領域を有する。この領域は、複数のノード間でデータを転写し合いながらデータを共有することから、便宜上、“転写メモリ”と称され、以後の実施形態の説明では、この表現を用いることとる。図１の符号１４０は、複数のノード夫々の転写メモリを示す。複数のノード夫々は、自身のメモリ資源の一部を転写メモリに割り当てればよい。
【００１０】
データ共有システムとしては、例えば、生産ラインで、各生産工程の管理データを、すべての生産工程で共有するといった態様や、アーケードゲームの如く、例えば、３人のゲーム操作者がおり、それぞれの画面に向かって別々の操作をし、相手の操作データを自己のゲーム機に共有データとして取り込み、自己の表示画面に表示させるといった態様がある。
【００１１】
ノードは、転写メモリ１４０の一部を送信エリアとして設定し、送信エリアのデータを、複数のノードで共有するために、他の複数のノードに同報送信する。データを受信したノードは、送信元ノードにおける、転写メモリ先頭からの相対位置と同様になるように、そのデータを自らの転写メモリにコピーする。“同報送信”は、例えば、ブロードキャスト通信、ＩＰ（Internet Protocol）マルチキャスト通信を含む。
【００１２】
図２Ａに示すように、転写メモリ１４０は、例えば、数バイトを単位とした複数の領域に分けられ、ノードは夫々の領域に対してデータの書き込み、及び、読み出しを行う。この領域は、転写メモリの先頭からのバイト数（オフセット）と、サイズとによって規定される。転写メモリ１４０は、例えば、データＡ（１４０ａ）、データＢ（１４０ｂ）、データＣ（１４０ｃ）、データＤ（１４０ｄ）、データＤ（１４０ｅ）を記録し、夫々のデータ領域の境界は、転写メモリの先頭位置からのバイト数（０，ａ，ｂ，ｃ，ｄ，ｅ）によって決められている。
【００１３】
ノード１１０ａはデータＡを、ノード１１０ｂはデータＢを、ノード１１０ｃはデータＣを、ノード１１０ｄはデータＤを、そして、ノード１１０ｅはデータＥを、他のノードに同報送信する。ノード１１０ａはデータＢ〜Ｅを、ノード１１０ｂはデータＡ、Ｃ〜Ｅを、ノード１１０ｃはデータＡ、Ｂ、Ｄ、Ｅを、ノード１１０ｄはデータＡ〜Ｃ、Ｅを、そして、ノード１１０ｅはデータＡ〜Ｄを、自身の転写メモリ１４０を介して取得する。
【００１４】
このようにプッシュ方式のノードの複数を備える制御システムにおいては、データを提供するノードとデータを取得するノードとの間で、転写メモリにおける、共有データの書き込み／読み出し位置に整合が取れている必要がある。一方、あるノードのデータの書き込み／読み出し位置を変更しようとすると、他のノードも同じように変更しなければならない。
【００１５】
既述のとおり、プッシュ方式の通信機能を有する複数のノードのうち一部のノードをプル方式のデータ通信も可能にするプル方式搭載ノードに置き換えることはできる。データ共有システムに、プル方式搭載ノードとプル方式非搭載ノードとが混在しても、夫々のノードの転写メモリ１４０に、プッシュ方式のデータ送受信用領域とプル方式のデータ送受信用領域とを設け、プル方式搭載ノードも転写メモリ１４０を経由してデータの送受信を行うことにより、システムは、プッシュ方式における転写メモリ１４０の機能を維持しながら、複数のノード間でデータの共有を維持することができる。図２Ｂにおいて、転写メモリのオフセットが０〜ａ、及び、ｃ〜ｄの領域にはノードから同報で送信し、又は、受信された、プッシュ方式に対応するデータ（１４０ａ，１４０ｄ）が記録されている。オフセットがａ〜ｃ、そして、オフセットがｄ〜ｅの領域にはプル方式で送信し、又は、受信されたデータ（１５０ａ，１５０ｂ）が記録される。図２Ａ，２Ｂに示すような、転写メモリの運用、或いは、構成、即ち、オフセット及びサイズと、データとの対応関係は、後述の管理ノード（開発ノードと表現されてもよい。）の構築コマンドによって達成される（図６）。
【００１６】
プッシュ方式のデータ通信は、事前に定めたデータのみをネットワークで共有するため、複数のノードに新たなデータを共有させることはできないものの、プル方式搭載ノードではこれが可能なる。一方、プル方式のデータ送受信では、プッシュ方式のノードのように、転写メモリにおいて、複数のデータ毎の位置の割り当てを事前に行うことはできない。したがって、二つの方式が制御システムに混在すると、プル方式のデータ送信では、複数のノード間でデータを共有するための転送メモリとは別な領域を必要とし、ノードの記憶資源の利用効率を悪化させると思われかもしれない。
【００１７】
本発明に係るデータ共有システムでは、プル方式搭載ノードとプル方式非搭載ノードとが混在していても、プル方式のデータとプッシュ方式のデータ夫々の記憶領域を転写メモリ１４０に共存させ、データ送受信制御モジュールが、プル方式通信とプッシュ方式通信の夫々に基づいて、二つの記憶領域を区別しながらデータの通信のための諸制御を行う。
【００１８】
その結果、プル方式のデータ送信に、複数のノード間でデータを共有するために、転送メモリとは別な領域が必要にならないようにでき、故に、ノードの記憶資源の利用効率が低下するのを防ぐことができる。なお、プルアクセス方式のノードをデータ共有システムに導入しようとする場合、導入コストの抑制や変更リスクを低減させるため、全てのプッシュ方式のノードをプル方式搭載ノードに代えるのではなく、一部のノードをプル方式搭載ノードに代えるのに留まり、両方式のノードがデータ共有システムに混在することが頻繁に発生する。図１のデータ共有システムは、両方式のノードがデータ共有システムに混在しながら、一つのノードが他のノードから所望のデータを取得できるようにしても、共有メモリ領域の設定を変更するためにシステムの運用を停止させることなく、データの共有を継続することができる。
【００１９】
図３は、データ共有システムのブロック図の一例であって、データの送受信方式が異なる複数種類のノードを示している。図３において、ノード３１０（３１０ａ，３１０ｂ）はプル方式搭載ノードであり、ノード３２０（３２０ａ，３２０ｂ）はプル方式非搭載ノードである。ノード３３０は開発ノード（管理ノード）である。開発ノードの機能は後述する。
【００２０】
ノード３１０は、プル方式のデータアクセスによって、他のプル方式搭載ノードの記憶モジュールにあるデータを、転写メモリ１４０を経由して送受信して、他のノードとデータを共有できる。ノード３１０、及び、ノード３２０夫々は、プッシュ方式のデータアクセスによって転写メモリの任意の領域からデータを読み出し、又は、転写メモリの送信エリア中の任意の領域にデータを書き込むことによって、データを共有することができる。プル方式搭載ノードは、他のノードにデータを要求し、この要求によって取得しデータを、プッシュ方式によって、複数のノードに同報送信してもよい。
【００２１】
開発ノード３３０は、複数のノードに転写メモリ１４０を経由したデータ送受信を可能にするためのプログラムやテーブル等を生成し、複数のノードにこれをロードする。なお、制御システムを構成するプル方式搭載ノード３１０、及び、プル方式非搭載ノード３２０の数は、図３に例示した範囲に限定されない。
【００２２】
図４はプル方式非搭載ノード３２０の構成を示すブロック図である。プル方式非搭載ノード３２０は、揮発／不揮発性メモリやハードディスク装置を含む記憶モジュール４２０と、中央処理装置等からなる処理モジュール４１０と、通信インタフェース（通信Ｉ／Ｆ）４０２と、を備える。通信インタフェース４０２には、ネットワークに接続し、ネットワークドライバやＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）、ＵＤＰ／ＩＰ（User Datagram Protocol/Internet Protocol）レイヤまでのプロトコルが実装されている。処理モジュール４１０は、ユーザプログラム４１１と転写メモリ通信モジュール４１２とＯＳ４０１とを備える。なお、モジュールという用語は、機能の単位であり、ハードウェア、及び/又は、プログラムによって実現される。
【００２３】
転写メモリ通信モジュール４１２は、ユーザプログラム４１１からの制御を受けて、転写メモリ通信管理テーブル４２２から、転写メモリ１４０の送信エリアの情報を読み出し、転写メモリ１４０の送信エリアにあるデータを、通信インタフェース４０２を通して、ネットワークに接続する複数のノードに向けて、同報送信し、また、通信インタフェース４０２を経由して他のノードの転写メモリから受信したデータを自身の転写メモリ１４０に書き込む。なお、データ送信側ノードは、転写メモリの先頭からの相対位置の情報と共にデータを送信し、受信側ノードは受信した相対位置情報に基づいて、データを自身の転写メモリの同じ相対位置に書き込む。
【００２４】
ユーザプログラム４１１は、所定の制御処理などを行う。ユーザプログラム４１１は、さらに、データを転写メモリ１４０の規定された領域に書き込み、一方、ここからのデータを読み出す。
【００２５】
記憶モジュール４２０は、転写メモリ１４０、及び、転写メモリ通信管理テーブル４２２を備える。転写メモリ１４０は、既述のとおり、転写メモリ通信モジュール４１２が他ノードと共有するデータを書き込む共有メモリ領域である。ノードは、転写メモリを複数備え、それぞれをＩＤで管理してもよい。さらにまた、ネットワークや複数のノードなどデータを共有する範囲毎に転写メモリを設定してもよい。
【００２６】
転写メモリ通信管理テーブル４２２（詳細を後述する。）は、転写メモリ通信モジュール４１２が他ノードに同報送信するデータが割り当てられる領域としての、送信エリアの管理情報を格納する。ユーザプログラム４１１は、転写メモリ通信管理テーブル４２２に、転写メモリ１４０の送信エリアの情報を記録する。
【００２７】
図５はプル方式搭載ノード３１０の構成を示すブロック図である。ノード３１０はプル方式非搭載ノード３２０にプル方式に関する構成要素を追加したものである。記憶モジュール４２０は、プル方式データアクセスに係る受信要求の情報、及び、受信した要求の有効期限の情報等を格納する受信要求管理テーブル５２１（詳細を後述する。）、要求されたデータが書き込まれる転写メモリ領域を管理する書き込みエリア管理テーブル５２２（詳細を後述する。）、転写メモリ１４０に書き込むデータを管理する書き込みデータ管理テーブル５２３（詳細を後述する。）、送信した要求の情報を格納する送信要求管理テーブル２８２１（詳細を後述する。）、転写メモリ１４０から読み出すデータを管理する読み出しデータ管理テーブル２８２２（詳細を後述する。）、要求先のノードの情報を管理する要求先管理テーブル２８２３（詳細を後述する。）を備える。
【００２８】
処理モジュール４１０は、応答処理モジュール５１１、書き込み処理モジュール５１２、ユーザプログラム２８１１、データアクセスモジュール２８１２、そして、監視処理モジュール２８１３を備える。応答処理モジュール５１１はプル方式のアクセスを受けて応答する処理を行い、データアクセスモジュール２８１２はプル方式のアクセスを送信する処理を行う。
【００２９】
応答処理モジュール５１１は、通信インタフェース４０２から要求を受信すると、要求された処理を行い、その結果を応答として要求元のノード（プル方式搭載ノード）３１０に返信する。要求は、転写メモリ１４０経由で取得するデータを要求元ノードの転写メモリに追加することを要求するデータ取得開始要求、転写メモリ経由で取得するデータの削除を要求するデータ取得停止要求、そして、データ取得開始要求で要求したデータ取得の継続を要求するデータ取得継続要求を含む。なお、これらの要求の詳細は後述する。
【００３０】
応答処理モジュール５１１は、データ取得開始要求メッセージを要求元ノードから受信した場合、受信した要求を受信要求管理テーブル５２１に格納し、書き込みエリア管理テーブル５２２からデータを割り当てる転写メモリ領域を決定し、書き込むデータと書き込み位置の情報を書き込みデータ管理テーブル５２３に格納する。また、応答処理モジュール５１１は、受信した要求を管理する番号である受信要求番号、書き込むデータと書き込み位置の情報を含むデータ取得開始応答メッセージを要求の送信元ノードに返信する。
【００３１】
応答処理モジュール５１１は、データ取得停止要求メッセージを受信した場合、指定された要求の内容を受信要求管理テーブル５２１から削除し、書き込むデータと書き込み位置の情報を、書き込みエリア管理テーブル５２２と書き込みデータ管理テーブル５２３とから削除し、削除の成功通知をデータ取得停止応答メッセージとして要求元のノードに返信する。応答処理モジュール５１１は、データ取得継続要求を受信した場合、受信要求管理テーブル５２１の有効期限を更新する。
【００３２】
書き込み処理モジュール５１２は、書き込みデータ管理テーブル５２３に基づいて、内部メモリに格納されたデータを転写メモリ１４０に書き込み、さらに、受信要求管理テーブル５２１の有効期限をチェックし、有効期限が切れている要求を削除する。
【００３３】
ユーザプログラム２８１１は、プル方式非搭載ノード（図４）と同様な制御処理を行い、さらに、データアクセスモジュール２８１２にＡＰＩを利用させてプル方式のデータアクセスを実現させる。ＡＰＩは、他ノードに対してデータ取得開始要求メッセージを送信し、転写メモリ１４０経由で要求したデータを取得できるようにするデータ取得開始ＡＰＩ、要求したデータを転写メモリ１４０から読み出すデータ取得ＡＰＩ、データ取得を停止するデータ取得停止ＡＰＩを備える。
【００３４】
データ取得開始ＡＰＩは、通信インタフェース４０２経由で他のノードにデータの取得を開始する要求を送信し、他のノードから応答を受信する。このとき、データ取得開始ＡＰＩは、要求先ノードによって受信される要求に割り当てられた受信要求番号等の要求に関する情報を送信要求管理テーブル２８２１に格納し、要求先ノードによって割り当てられた転写メモリ領域の位置情報等要求したデータに関する情報を応答メッセージから読み出しデータ管理テーブル２８２２に格納する。さらに、データ取得開始ＡＰＩは、受信要求番号を要求先管理テーブル２８２３に格納する。
【００３５】
監視処理モジュール２８１３は、要求先管理テーブル２８２３を参照し、データ取得開始要求を送信したノードに対してデータ取得継続要求を周期的に送信する。
【００３６】
図６は開発ノード３３０（図３）の詳細な構成を示すブロック図である。開発ノード３３０は、ユーザインタフェース６０３と、揮発／不揮発性メモリやハードディスク装置を含む記憶モジュール６２０と、中央処理装置等からなる処理モジュール６１０と、通信インタフェース（通信Ｉ／Ｆ）６０２とを備える。ユーザインタフェー６０３は、システムの管理ユーザに管理情報の入力を可能にさせる。
【００３７】
記憶モジュール６２０は、プル方式搭載ノード３１０、及び、プル方式非搭載ノード３２０の転写メモリ１４０に関するパラメータを設定するための転写メモリ設定ファイル６２１と、転写メモリ１４０に対して書き込むデータへの設定のための書き込みデータ設定ファイル６２２とを備える。ユーザインタフェース６０３は構築コマンド（構築コマンド実行モジュール６１１）によって、これらファイルを設定する。
【００３８】
処理モジュール６１０は、構築コマンド実行モジュール６１１とＯＳ６０１とを備える。構築コマンド実行モジュール６１１は、構築コマンドを実行して、ユーザが用意した転写メモリ設定ファイル６２１に基づいて書き込みエリア管理テーブル５２２を設定し、及び、書き込みデータ設定ファイル６２２に基づいて書き込みデータ管理テーブル５２３を設定し、これらテーブルをプル方式搭載ノード３１０、及び、プル方式非搭載ノード３２０の処理モジュールや記憶モジュールにロードする。
【００３９】
転写メモリ通信管理テーブル４２２（図７）は、複数のノード夫々の転写メモリ１４０の送信エリアに関するパラメータを格納する。このテーブルには、エントリごとに、パラメータの有無を示す使用フラグ７１１、送信エリアの先頭位置を示す先頭オフセット７１４、送信エリアのサイズを示すサイズ７１５、送信エリアのデータをネットワークに同報送信する周期である送信周期７１６が設定されている。それぞれのエントリはインデックスによって識別される。図７に示すテーブルは、インデックス１のエントリに対応する送信エリアが、先頭オフセット７１４を０ｘ１１００とし、サイズ７１５を０ｘＦ００とし、転写メモリ通信モジュール４１２によってネットワークに同報送信されるデータの送信周期７１６を１００ミリ秒にする、こと等を示している。
【００４０】
プル方式搭載ノードは、他のプル方式搭載ノードに、データを取得するための要求を発することによって、他のノードからデータを取得する。データを取得する要求を発するノードが既述のとおり要求元ノードであり、要求を受けてデータを要求元ノードに送信するノードが要求先ノードである。図８は、プル方式の通信に基づく要求、即ち、要求先ノードが受信したデータ取得開始要求（後述）等の要求の内容を管理する受信要求管理テーブル５２１の構成図である。
【００４１】
このテーブルにおいて、各エントリは受信した要求夫々に対応しており、各エントリは受信要求番号８０１によって識別される。受信要求番号８０１は、複数のプル方式搭載ノード夫々毎に唯一性を持つが、例えば、ノードに複数の独立したプル型アクセスの機能を持つ処理系が存在する場合、それぞれの処理系ごとに唯一性を持たせるようにしてもよい。
【００４２】
テーブルの各エントリは、エントリにパラメータが設定されていることを示す使用フラグ８１１、要求元ノードを識別するノード番号８１３、要求元ノードのアプリケーションを識別するアプリ番号８１４、要求に振られた通番であるシーケンス番号８１５、データ取得継続要求を受信した前回の時刻（継続要求受信時刻）８１６を備える。プル方式搭載ノード３１０からの要求は継続的に送信される。なお、各ノードは、通信インタフェース４０２を介して通信する場合に、ＩＰアドレスなどの実際にメッセージを、送信するために必要な情報に変換する機能を予め備える。
【００４３】
図９は転写メモリ１４０の書き込みエリアを管理する書き込みエリア管理テーブル５２２の構成図である。書き込みエリア管理テーブル５２２、及び、書き込みデータ管理テーブル５２３は、プッシュ方式のデータ送受信、及び、プル方式データ送受信の両方に適用される。要求先ノードは、このテーブルを利用して、プル方式のデータアクセス要求を受けたデータを、転写メモリに書き込むことができる。
【００４４】
書き込みエリア管理テーブル５２２のエントリは、複数の書き込みエリア夫々に対応する。エントリは、エントリにパラメータがセットされていることを示す使用フラグ９０１と、書き込みエリアの先頭位置を示すオフセット９１３と、書き込みエリアのサイズ９１４と、書き込み処理モジュール５１２がデータを該書き込みエリアに書き込む周期９１５と、該書き込みエリアに書き込むデータを管理する書き込みデータ管理テーブル５２３へのポインタ９１６と、エントリへの要求数を制限するためのエントリ数９１７と、を備える。
【００４５】
図１０は書き込みエリアに書き込むデータを管理する書き込みデータ管理テーブル５２３である。このテーブルは、書き込みエリアを一定のサイズごとに区分して管理する。各区分は書き込みブロックを構成する。テーブルの各エントリによって、書き込みブロックごとに書き込むデータが管理されており、エントリは、そのエントリの状態１０１１、データのサイズ１０１２、データを書き込む転写メモリ領域の先頭位置を示すオフセット１０１３、データが実際に格納されていて、転写メモリにコピーされるデータのコピー元としての、内部メモリのメモリアドレス１０１４、該データを指定した受信要求に対応する受信要求番号のリスト１０１５と、を備える。書き込み処理モジュール５１２（図５）は、メモリアドレスのデータを、書き込みエリア管理テーブル５２２にしたがって、転写メモリ１４０に書き込む。応答処理モジュール５１１は、複数のプル方式搭載ノード夫々の要求の状態、例えば、要求の継続が停止されたこと等を、複数の要求夫々に付された受信要求番号に基づいて管理する。
【００４６】
エントリの状態１０１１は、パラメータがセットされていないことを示す「未使用」、パラメータがセットされていることを示す「使用」、他ノードから受信した要求ではなく書き込みデータ設定ファイル６２２によって事前設定された項目（プッシュ方式の送信に割り当てられるデータ）であることを示す「固定」、プル型ノードからの要求を受けてパラメータが更新中であり、その他のプル型ノードからのアクセスによって、使用、及び、削除等できない状態であることを示す「編集中」、のうちいずれかの値を持つ。プルアクセスの要求を受けたノードの書き込み処理モジュール５１２は、状態１０１１が、「未使用」である項目の書き込みエリアに、データ（メモリアドレス）を対応させて、要求先ノードに要求データを送信する。
【００４７】
受信要求番号リスト１０１５は、受信要求管理テーブル５２１（図８）において受信された要求番号８０１のリストである。状態が「使用」であり、かつ、受信要求番号リストに記録がないエントリは、ノードによるデータの要求は無くなったものとして、応答処理モジュール５１１によって削除される。データ共有システムは、エントリの状態１０１１の値によって、転写メモリに記録されるデータを、プルアクセス用のデータか、プッシュアクセスによって同報送信されるデータかを区別することができる。
【００４８】
図１１は、プル方式搭載ノード（要求元ノード）が、転写メモリを経由してデータを取得するために、要求先ノードに対して、要求元ノードの転写メモリに対するデータ書込み開始を要求するデータ取得開始要求メッセージ１１０１のフォーマットである。要求元ノードのデータアクセスモジュール２８１２は、ＡＰＩを介することによって、要求先ノードにメッセージを送信する。データ取得開始要求メッセージ１１０１は、メッセージの属性情報を含むヘッダ部１１１０、及び、データ取得開始要求の内容情報を含むボディ部１１２０とを備える。
【００４９】
ヘッダ部１１１０は、プル方式の要求メッセージの識別子を含む要求メッセージ識別子、メッセージサイズ、該メッセージの送信元ノード（要求元ノード）の番号、該メッセージの送信元ノードにおいてメッセージを送信したアプリケーションを識別する要求元アプリ番号、要求メッセージと応答メッセージの対応を管理するために利用される通番としてのシーケンス番号、そして、メッセージの種別を備える。メッセージ種別は「データ取得開始要求メッセージ」になる。
【００５０】
ボディ部１１２０は、要求先ノードに対して書き込み開始を要求するデータに関する情報として、データを転写メモリ１４０（要求元ノード）にコピーする周期（データ書き込み周期）、データ数、データのコピー元である内部メモリ（要求先ノード）のメモリアドレス、サイズを備える。メモリアドレス、及び、サイズはデータ数の分存在する。
【００５１】
図１２は、データ取得開始要求メッセージ１１０１に対して、データ書込み開始処理の結果を要求元ノードに対して通知するためのデータ取得開始応答メッセージ１２０１の構成図である。このメッセージは、要求先ノードの応答処理モジュール５１１から要求元ノードの応答処理モジュール５１１に、要求されたデータと共に送られる。ヘッダ部１２１０のメッセージ種別は「データ取得開始応答メッセージ」である。ヘッダ部のその他の要素の詳細は図１１のヘッダ部１１１０に同じである。
【００５２】
ボディ部１２２０は、要求元ノードに対してデータ取得開始要求の処理結果であるレスポンスコード、要求に対して割り振られた受信要求番号、要求メッセージで要求されたデータを転写メモリ１４０（要求元ノード）にコピーする周期であるデータ書き込み周期、データ数、データのコピー元である転写メモリ（要求先ノード）の先頭位置を示すオフセット、そして、サイズを備える。オフセット、及び、サイズはデータ数の分だけ存在する。
【００５３】
要求先ノードから、データ取得開始応答メッセージ１２０１とともに要求元ノードに送られたデータは、通信バッファ等の要求元ノードの内部メモリに記録され、要求元ノードの書き込み処理モジュール５１２（図５）によって、要求先ノードの内部メモリからその転写メモリ１４０に、データ取得開始応答メッセージ１２０１の転写メモリ設定情報（オフセット、サイズ）に基づいてロードされる。
【００５４】
図１３は、データ取得開始要求によって書込みが開始されたデータに関して、繰返し行われるデータ書き込みの停止を要求先ノードに対して要求するためのデータ取得停止要求メッセージ１３０１の構成図である。メッセージは、メッセージの属性情報を含むヘッダ部１３１０とデータ取得停止要求の内容情報を含むボディ部１３２０とを備える。ヘッダ部１３１０のメッセージ種別は「データ取得停止要求メッセージ」になる。その他の要素の詳細は図１１の１１１０に同じである。
【００５５】
ボディ部１３２０は、データ共有を停止するデータに対応する要求を示す受信要求番号を備える。データアクセスモジュール２８１２が、データ取得開始応答メッセージ１２０１に含まれる受信要求番号をセットして要求先ノードに送信すると、要求先ノードの応答処理モジュール５１１は、この受信要求番号を、書き込みデータ管理テーブル５２３の全エントリの受信要求番号リスト１０１５から削除する。書き込み処理モジュール５１２は、このリストが空となったエントリのデータを削除する。
【００５６】
図１４はデータ取得停止要求メッセージ１３０１の送信元である要求元ノードに対して、要求先ノードの応答処理モジュール５１１が、書き込み停止処理の結果を通知するデータ取得停止応答メッセージ１４０１の構成図である。このメッセージは、メッセージの属性情報を含むヘッダ部１４１０とデータ取得停止処理の結果を含むボディ部１４２０とを備える。ヘッダ部１４１０のメッセージ種別は「データ取得停止応答メッセージ」である。その他の要素の詳細は図１２の１２１０の説明に同じである。ボディ部１４２０は、要求元ノードに対してデータ取得開始要求の処理結果であるレスポンスコード、データ取得停止要求によって無効となった受信要求番号を備える。
【００５７】
図１５は、データ取得開始要求メッセージ１１０１によって、転写メモリ１４０に書き込みを開始したデータに関し、データアクセスモジュール２８１２が、書き込みの継続を要求するデータ取得継続要求メッセージ１５０１の構成図である。メッセージは、メッセージの属性情報を含むヘッダ部１５１０とデータ取得停止要求の内容情報を含むボディ部１５２０とを備える。ヘッダ部のメッセージ種別は「データ取得継続要求メッセージ」である。ヘッダ部のその他の要素の詳細は図１１のヘッダ部１１１０に同じである。ボディ部１５２０は、データ数、及び、書き込みを継続するデータを指定したデータ取得開始要求に対する応答としてのデータ取得開始応答メッセージ１２０１に含まれていた受信要求番号を備える。受信要求番号の数は、データ数と同じである。
【００５８】
図１６は、プル搭載ノード３１０、プル方式非搭載ノード３２０の書き込みエリアに関する設定を規定したファイル（転写メモリ設定ファイル６２１）の構成図である。開発ノード３３０の構築コマンド実行モジュール６１１が構築コマンドを実行する際に、このファイルのパラメータを元に書き込みエリア管理テーブル５２２と書き込みデータ管理テーブル５２３を生成し、これをノードの記憶モジュール６２０にロードする。
【００５９】
転写メモリ設定ファイル６２１は、設定する書き込みエリアの数である書き込みエリア数、書き込みエリアの先頭位置を示す書き込みエリアのオフセット、書き込みエリアのサイズを示す書き込みエリアサイズ、そして、書き込みエリアのデータを転写メモリにコピーする周期である書き込み周期を備える。書き込みエリアオフセット、書き込みエリアサイズ、書き込み周期は、書き込みエリア数の分だけ存在する。
【００６０】
図１７は、書き込みエリアに書き込むデータを事前に設定するための書き込みデータ設定ファイル６２２の構成図である。それぞれの行がデータに対応しており、行ごとに、データのコピー先の位置を示すオフセット１７０３、データのコピー元の位置を示すメモリアドレス１７０４、データのサイズ１７０５が存在する。
【００６１】
図１８は、構築コマンドを実行する構築コマンド実行モジュール（図６:６１１）の動作を示すフローチャートである。構築コマンド実行モジュールは、書き込みエリア管理テーブル５２２と書き込みデータ管理テーブル５２３とを生成し（Ｓ１９００）、続いて、書き込みデータ管理テーブル５２３にデータを設定し（Ｓ２０００）、テーブルをプル方式搭載ノード３１０、そして、プル方式非搭載ノード３２０に対してローディングする（１８０１）。構築コマンド実行モジュール６１１は管理ユーザの入力を契機として、フローチャートを実行する。構築コマンド実行モジュールは、上記テーブル以外のテーブルやプログラムをノードにロードすることもできる。
【００６２】
図１９は、テーブル生成処理（図１８：Ｓ１９００）の詳細を示すフローチャートである。構築コマンド実行モジュール６１１は、管理ユーザが作成した転写メモリ設定ファイル６２１（図１６）を取り込む（１９０１）。続いて、以前に作成した書き込みエリア管理テーブル５２２（図９）、及び、書き込みデータ管理テーブル５２３（図１０）を、エントリが一つもない状態に初期化する（１９０２）。構築コマンド実行モジュール６１１は、転写メモリ設定ファイル６２１の書き込みエリアの設定数（図１６のエリア数Ｎ）がなくなるまで処理（１９２１〜１９２４）を繰り返す（１９１２:ＹＥＳ）。
【００６３】
構築コマンド実行モジュール６１１は、転写メモリ設定ファイル６２１の書き込みエリアの設定を一つ読み出す（１９２１）。構築コマンド実行モジュール６１１は、書き込みエリア管理テーブル５２２に新しいエントリを追加し、このエントリに、読み出したオフセット、サイズ、書き込み周期をセットする（１９２２）。
【００６４】
構築コマンド実行モジュール６１１は、続いて、サイズを書き込みブロックで割ることによって算出された数だけ、書き込みデータ管理テーブル５２３にエントリを追加し、各エントリにオフセットの値を追加し、エントリ数を書き込みエリア管理テーブル５２２に追加する（１９２３）。構築コマンド実行モジュール６１１は、追加されたエントリ（書き込みエリア管理テーブル５２２）の使用フラグに「使用」を、書き込みデータ管理テーブル５２３へのポインタ（図９:９１６）を書き込みデータ管理テーブル５２３の先頭位置のポインタにセットする（１９２４）。構築コマンド実行モジュール６１１は、転写メモリ設定ファイル６２１の書き込みエリアの設定数に残りがなくなると、フローチャートを終了する（１９１２：ＮＯ）。
【００６５】
図２０は構築コマンド実行モジュール６１１のデータ設定処理（図１８：Ｓ２０００）のフローチャートである。構築コマンド実行モジュール６１１は、書き込みデータ設定ファイル６２２（図１７参照）の内容に基づいて、書き込みデータ管理テーブル５２３に対して項目を追加する。構築コマンド実行モジュール６１１は、ユーザが定義した書き込みデータ設定ファイル６２２が存在する場合に、これを取り込み、２０１１以降の処理を行う（２００１：ＹＥＳ）。
【００６６】
構築コマンド実行モジュール６１１は、書き込みデータ設定ファイル６２２に、処理が行われていない残りの行があることを判定すると（２０１１：ＹＥＳ）、書き込みデータ設定ファイル６２２から、未処理の行のうち１行分の設定を読み込む（２０２１）。読み込んだ内容の、オフセット、書き込み周期、そして、サイズに該当し、状態が「未使用」であるエントリを書き込みデータ管理テーブル５２２（図９）から検索する（２０２２）。
【００６７】
構築コマンド実行モジュール６１１は、エントリを発見しないと（２０２３：ＮＯ）、設定値が異常であることを示すエラーをリターンして処理を終了する（２０６１）。エントリを発見すると（２０２３：ＹＥＳ）、そのエントリのポインタとエントリ数が示す書き込みデータ管理テーブル５２３のエントリ群から、オフセットが一致するエントリを検索し、さらに、見つかったエントリ以降、サイズをブロックのサイズで割った値の分だけのエントリが連続して「未使用」であるエントリ群を検索する（２０３１）。構築コマンド実行モジュール６１１が当該エントリ群を発見しないと（２０３２：ＮＯ）、設定値が異常であることを示すエラーをリターンして処理を終了する（２０７１）。一方、構築コマンド実行モジュール６１１が当該エントリ群を発見すると（２０３２：ＹＥＳ）、当該エントリ群に対して、メモリアドレス、サイズをセットし、使用フラグを「固定」に変更する（２０４２）。
【００６８】
図２１は応答処理モジュール５１１（図５）の動作のフローチャートである。応答処理モジュール５１１は、他ノード（要求元ノード）から受信した要求メッセージを処理し、応答メッセージを送信して、要求元ノードからのプル方式の問合せに対応する。
【００６９】
応答処理モジュール５１１は、要求メッセージの受信を待ち（２１０１）、要求メッセージを受信するまでこれを繰り返す（２１０２:ＮＯ）。要求メッセージを受信すると（２１０２：ＹＥＳ）、要求メッセージを解析する（２１１１）。応答処理モジュール５１１は、要求の種別に基づいて処理を分岐させる。
【００７０】
応答処理モジュール５１１は、要求がデータ取得開始要求であることを判定すると（２１１２：データ取得開始要求）、データ取得開始要求の受け付け処理（Ｓ２２００）を行い、要求がデータ取得停止要求であることを判定すると（２１１２:データ取得停止要求）、データ取得停止要求の受け付け処理（Ｓ２４００）を行い、要求種別がデータ取得継続要求であることを判定すると（２１１２：データ取得継続要求）、データ取得継続要求の受け付け処理（Ｓ２５００）を行う。応答処理モジュール５１１は、これらの処理を終了すると、要求メッセージ受信待ち（２１０１）にリターンする。
【００７１】
図２２は応答処理モジュール５１１のデータ取得開始要求受付処理（図２１：Ｓ２２００）の詳細を示すフローチャートである。応答処理モジュール５１１は、予めデータ取得開始応答メッセージ１２０１を生成しておく（２２０１）。続いて、応答処理モジュール５１１は、受信要求管理テーブル５２１（図８）から使用フラグが「未使用」であるエントリを検索する（２２０２）。
【００７２】
応答処理モジュール５１１はこのエントリを発見できないと（２２０３：ＮＯ）、受信要求管理テーブル５２１に空きが無く受信可能な要求数の上限に達していることを示すエラーをデータ取得開始応答メッセージ１２０１（図１２）のレスポンスコードにセットし（２２４１）、要求元ノードに対してこの応答メッセージを送信する（２２７５）。
【００７３】
一方、応答処理モジュール５１１がエントリを発見すると（２２０３：ＹＥＳ）、受信要求管理テーブル５２１の当該エントリの使用フラグを「編集中」に変更し、受信したデータ取得開始要求メッセージ１１０１に含まれるノード番号、アプリ番号、シーケンス番号を当該エントリにセットし、当該エントリの受信要求番号を一時記憶する（２２１１）。
【００７４】
応答処理モジュール５１１は、書き込みエリア管理テーブル５２２（図９）検索し、書き込みエリア管理テーブル５２２に残りエントリがあることを判定すると（２２１２:ＹＥＳ）、書き込みエリア管理テーブル５２２から１エントリを取り出す（２２２１）。応答処理モジュール５１１は、当該エントリの書き込み周期がデータ取得開始要求メッセージ１１０１（図１１）に含まれる書き込み周期と一致しないことを判定すると（２２２２:ＮＯ）、書き込みエリア管理テーブル５２２から次のエントリを取り出す。
【００７５】
応答処理モジュール５１１は、両者の書き込み周期が一致すると判定すると（２２２２：ＹＥＳ）、２２３１のステップに移行する。応答処理モジュール５１１は、書き込みエリア管理テーブル５２２に残りエントリが無いことを判定すると（２２１２：ＮＯ）、転写メモリの書き込みエリアに関する条件不一致を示すエラーを、データ取得開始応答メッセージ１２０１（図１２）のレスポンスコードにセットし（２２５１）、記憶した受信要求番号（２２１１）のエントリを受信要求管理テーブル５２１（図８）から削除して（２２５２）、要求元モードに対して応答メッセージを送信する（２２７５）。
【００７６】
ステップ２２３１以降は、データ取得開始要求メッセージ１１０１のデータ１つを対象データとして行う処理であり、当該メッセージにデータの残りがあると（２２３１：ＹＥＳ）、応答処理モジュール５１１は次のステップに移行する。応答処理モジュール５１１は、書き込みエリア管理テーブル５２２のうちステップ２２２１で取り出したエントリが持つ、書き込みデータ管理テーブル５２３へのポインタ９１６、及び、エントリ数９１７（図９）から決まる書き込みデータ管理テーブル５２３のエントリ群を、データ割り当て処理Ｓ２３００（図２３）の検索対象として設定する（２２３２）。図２３にて後述するように、応答処理モジュール５１１は、検索対象の設定（２２３２）に基づいて、データ取得開始要求メッセージ１１０１のデータを書き込みエリアに割り当てる処理（Ｓ２３００）を実行する。
【００７７】
応答処理モジュール５１１は、データ割り当て処理を成功すると（２２３４：ＹＥＳ）、次のデータの処理に戻る（２２３１）。応答処理モジュール５１１は、データ割り当て処理に失敗すると（２２３４：ＮＯ）、転写メモリの空き容量不足エラーをレスポンスコードにセットする（２２７１）。そして、応答処理モジュール５１１は、処理中のデータ割り当て（Ｓ２３００）をキャンセルし、一時記憶した受信要求番号（２２１１）を受信要求削除処理（後述）の削除対象に設定し（２２７２）、受信要求削除処理（Ｓ２７００）を実行する。その後、応答処理モジュール５１１は、記憶した受信要求番号のエントリを受信要求管理テーブル５２１から削除して（２２７４）、要求元ノードに応答メッセージを送信する（２２７５）。
【００７８】
応答処理モジュール５１１がデータ取得開始要求メッセージにデータの残りが無いことを判定すると（２２３１：ＮＯ）、一時記憶した受信要求番号に対応する受信要求管理テーブル５２１のエントリの使用フラグを「使用中」に変更し（２２６１）、データ取得開始応答メッセージ１２０１に正常終了を示す応答メッセージ、及び、受信要求番号をセットし（２２６２）、要求元ノードにデータ取得開始応答メッセージを送信する（２２７５）。
【００７９】
図２３は応答処理モジュール５１１のデータ割り当て処理（図２２：Ｓ２３００）を詳細に説明するためのフローチャートである。応答処理モジュール５１１は、データ取得開始要求メッセージ１１０１の対象データを書き込みデータ管理テーブル５２３（図１０）に割り当てる。
【００８０】
応答処理モジュール５１１は、書き込みデータ管理テーブル５２３を検索し、検索しているテーブルにエントリの残りがあることを判定すると（２３０２：ＹＥＳ）、書き込みデータ管理テーブル５２３から１エントリを取り出してエントリの使用状態を参照する（２３１１）。応答処理モジュール５１１は、最初に「未使用」と判定したエントリをデータ割り当ての候補エントリとして一時記憶する（２３１２）。
【００８１】
応答処理モジュール５１１は、当該エントリのメモリアドレスとサイズがデータ取得開始要求メッセージ１１０１の対象データに一致することを判定すると（２３１３：ＹＥＳ）、当該エントリに同じデータが既に割り当てられているため、このエントリを利用する。そこで、応答処理モジュール５１１は、当該エントリの受信要求番号リストに、一時記憶した受信要求番号を追加する（２３２１）。続いて、データ取得開始応答メッセージ１１０１に当該エントリのオフセット、及び、サイズをセットする（２３２２）。そして、応答処理モジュール５１１は、割り当て処理の成功をリターンする（２３２３）。
【００８２】
応答処理モジュール５１１は、エントリのメモリアドレスとサイズが対象データに一致しないことを判定すると（２３１３：ＮＯ）、次の書き込みデータ管理テーブル５２３のエントリに対して２３０２以降の処理を繰り返す。
【００８３】
応答処理モジュール５１１は、書き込みデータ管理テーブル５２３の検索対象に含まれるエントリに残りが無いことを判定すると（２３０２：ＮＯ）、データ取得開始応答メッセージ１１０１と同じデータを割り当てるエントリが無いため、使用状態が「未使用」である候補エントリを既に見つけていると判定し（２３３１：ＹＥＳ）、当該エントリの使用フラグを「使用中」に変更し、データ取得開始応答メッセージ１１０１のデータのメモリアドレス、及び、サイズを書き込みデータ管理テーブル５２３の当該エントリにセットする（２３３２）。応答処理モジュール５１１は、候補エントリが見つけないと（２３３１：ＮＯ）、割り当て失敗をリターンし（２３４１）、処理を終了する。
【００８４】
図２４は応答処理モジュール５１１のデータ取得停止要求受付処理（図２１：Ｓ２４００）を詳細に説明するフローチャートである。応答処理モジュール５１１は、データ取得開始要求受け付け処理によって開始した、送信先ノードの転写メモリへのデータ書き込み（図２２）を停止する。
【００８５】
応答処理モジュール５１１は、返信用のデータ取得停止応答メッセージ１４０１（図１４）を生成しておく（２４０１）。続いて、応答処理モジュール５１１は、受信したデータ取得停止要求メッセージ１３０１（図１３）に含まれる受信要求番号に該当する受信要求管理テーブル５２１（図８）のエントリを取り出す（２４０２）。
【００８６】
応答処理モジュール５１１は、当該エントリのノード番号、及び、アプリ番号が、データ取得停止要求メッセージ１３０１の送信元ノード（要求元ノード）と一致することを判定すると（２４０３：ＹＥＳ）、当該エントリの受信要求番号を削除の対象として（２４１１）、書き込みデータ管理テーブル５２３について受信要求削除処理（Ｓ２７００）を適用する。
【００８７】
そして、応答処理モジュール５１１は、受信要求管理テーブル５２１から当該エントリを削除し（２４１２）、正常終了（０）をデータ取得停止応答メッセージ１４０１のレスポンスコードにセットし（２４１３）、要求元ノードに対してメッセージを返信する（２４１４）。
【００８８】
応答処理モジュール５１１は、当該エントリのノード番号、及び、アプリ番号が、データ取得停止要求メッセージの送信元ノードと一致しない場合（２４０３：ＮＯ）、受信要求番号が不正であることを示すエラーをデータ取得停止要求メッセージのレスポンスコードにセットし（２４２１）、要求元ノードにメッセージを返信する。
【００８９】
図２５は、応答処理モジュール５１１のデータ取得継続要求受付処理（図２１：Ｓ２５００）を詳細に説明するフローチャートである。応答処理モジュール５１１は、データ取得継続要求メッセージ１５０１（図１５）を受信すると、データ取得開始要求受け付け処理によって開始した転写メモリへのデータの書き込み（図２２）を継続する。応答処理モジュール５１１は、データ取得継続要求メッセージ１５０１を所定時間の間に受信しない場合は、要求メッセージに係るデータの書き込みを自動的に停止する。
【００９０】
応答処理モジュール５１１は、データ取得継続要求メッセージ１５０１を受け付け、メッセージに含まれる受信要求番号に残りがあることを判定すると（２５０１：ＹＥＳ）、受信要求番号を１つ参照し（２５０２）、その受信要求番号に対応する受信要求管理テーブル５２１のエントリを取り出す（２５０３）。
【００９１】
応答処理モジュール５１１は、当該エントリのノード番号がデータ取得継続要求メッセージ１５０１の発信元ノード（要求元ノード）のノード番号に一致することを判定すると（２５０４：ＹＥＳ）、受信要求管理テーブル５２１の当該エントリの継続要求受信時刻を現在時刻に更新し（２５１１）、次の受信要求番号の処理に戻る（２５０１）。応答処理モジュール５１１は、当該エントリのノード番号が一致しないことを判定する場合も同じである（２５０４：ＮＯ）。応答処理モジュール５１１は、受信要求番号に残りが無いことを判定すると（２５０１：ＮＯ）、処理を終了する。
【００９２】
図２６は書き込み処理モジュール５１２（図５）の動作を示すフローチャートである。書き込み処理モジュール５１２は、要求先ノードの転写メモリ１４０の書き込みエリアに対するデータの書き込み、及び、データ取得継続要求を一定時間受信していない要求に関するデータの自動削除処理を行う。
【００９３】
書き込み処理モジュール５１２は実行周期を定めており、前回実行時から実行周期に相当する時間が経過していない場合は処理を待機する（２６０１：ＮＯ）。書き込み処理モジュール５１２は、実行周期が経過すると（２６０１：ＹＥＳ）、書き込みエリア管理テーブル５２２のエントリに残りがあるか否かを判定し、これを肯定すると（２６１１：ＹＥＳ）、テーブルから１エントリを取り出す（２６２１）。
【００９４】
書き込み処理モジュール５１２は、前回の書き込みから書き込み周期に相当する時間が経過していることを判定すると（２６２２：ＹＥＳ）、エントリ（２６２１）が持つポインタ、及び、サイズが指し示す書き込みデータ管理テーブル５２３（図１０）の複数エントリを対象にして処理を進める。
【００９５】
書き込み処理モジュール５１２は、当該エントリのポインタに対応する、書き込みデータ管理テーブル５２３のエントリに残りがある場合（２６３１：ＹＥＳ）、残りのエントリから１エントリを取り出す（２６４１）。書き込み処理モジュール５１２は、当該エントリの使用フラグが「使用中」、又は、「固定」であることを判定すると（２６４２：ＹＥＳ）、当該エントリのオフセット、及び、サイズが示す転写メモリ領域１４０に、当該エントリのメモリアドレス、及び、サイズが示す内部メモリの領域からデータをコピーし、次のエントリの処理に進む（２６５１）。
【００９６】
書き込み処理モジュール５１２は、エントリ（２６４１）の使用フラグが「使用中」、又は、「固定」であることを否定すると、２６５１のステップに進むことなく、次のエントリの処理に進む（２６４２：ＮＯ）。
【００９７】
書き込み処理モジュール５１２は、書き込みエリア管理テーブル５２２のエントリ（２６２１）について、書き込み周期の時間が経過していないことを判定すると（２６２２：ＮＯ）、２６１１のステップにリターンする。書き込み処理モジュール５１２が、エントリに残りがないことを判定（２６３１：ＮＯ）した場合も同様である。
【００９８】
書き込み処理モジュール５１２は、書き込みエリア管理テーブル５２２のエントリに残りが無いことを判定すると（２６１１：ＮＯ）、データの自動削除処理に進む。書き込み処理モジュール５１２は、受信要求管理テーブル５２１に残りのエントリがあることを判定すると（２６６１：ＹＥＳ）、受信要求管理テーブル５２１から１エントリを取り出す（２６７１）。続いて、書き込み処理モジュール５１２は、エントリ（２６７１）の継続要求受信時刻からタイムアウト時間が経過していることを判定すると（２６７２：ＹＥＳ）、当該エントリの受信要求番号を削除対象として設定し（２６８１）、受信要求削除処理（Ｓ２７００）を実行する。
【００９９】
書き込み処理モジュール５１２は、受信要求削除処理を終了すると、受信要求管理テーブル５２１の次のエントリの処理に進む（２６６１）。書き込み処理モジュール５１２は、エントリの継続要求受信時刻からタイムアウト時間が経過していないことを判定すると（２６７２：ＮＯ）、次のエントリの処理に進む（２６６１）。タイムアウト時間は、固定値でよいが、設定ファイルなどでユーザが定義してもよく、或いは、要求元ノードからパラメータとして要求先ノードに通知することによって設定されてもよい。書き込み処理モジュール５１２は、受信要求管理テーブル５２１に残りのエントリが無いことを判定すると（２６６１：ＮＯ）、次回の実行周期まで待機する（２６９１）。
【０１００】
図２７は応答処理モジュール５１１、及び、書き込み処理モジュール５１２が夫々行う受信要求削除処理（Ｓ２７００）の詳細を示すフローチャートである。モジュール５１１，５１２は、削除すべき受信要求番号に関する書き込みデータ管理テーブル５２３のエントリを消去する。
【０１０１】
モジュール５１１，５１２は、書き込みデータ管理テーブル５２３のエントリに残りがあることを判定すると（２７０１：ＹＥＳ）、書き込みデータ管理テーブル５２３から１エントリを取り出す（２７１１）。
【０１０２】
モジュール５１１，５１２は、エントリの使用フラグが「使用中」であることを判定し（２７１２：ＹＥＳ）、エントリの受信要求番号リストに削除対象の受信要求番号が含まれていることを判定すると（２７２１：ＹＥＳ）、書き込みデータ管理テーブル５２３の受信要求番号リストから削除対象の受信要求番号を削除する（２７３１）。そして、モジュール５１１，５１２がエントリ（２７１１）の受信要求番号リストが空であることを判定すると（２７３２：ＹＥＳ）、当該エントリ自体を削除し、使用フラグを「未使用」にセットする（２７４１）。
【０１０３】
モジュール５１１，５１２は、エントリ（２７１１）の使用フラグが「使用中」でないこと判定した場合（２７１２：ＮＯ）、受信要求番号リストに削除対象の受信要求番号が含まれていないことを判定した場合（２７２１：ＮＯ）、さらに、受信要求番号削除後に受信要求番号リストが空でないことを判定した場合（２７３２：ＮＯ）の夫々では、書き込みデータ管理テーブル５２３の次のエントリに進む（２７０１）。モジュール５１１，５１２は、書き込みデータ管理テーブル５２３のエントリに残りが無いことを判定すると処理を終了する（２７０１：ＮＯ）。
【０１０４】
次に、要求先ノードに対するプル方式のアクセスを可能にするための要求元ノードの動作等について説明する。図２８は、プル方式のデータアクセスのため、データ取得開始要求の送信先である要求先ノードの情報を管理するための要求先管理テーブル２８２３（図５）の構成図である。
【０１０５】
要求先管理テーブル２８２３は、エントリごとに１つの要求先ノードの情報を管理しており、エントリにパラメータがセットされていることを示す使用フラグ、要求先ノードのノード番号、要求元ノードのユーザアプリを識別するアプリ番号、データ取得継続要求メッセージを送信した前回時刻である継続要求送信時刻、要求元ノードが要求先ノードから受け取ったデータ取得開始応答メッセージ１２０１（図１２）に含まれる受信要求番号のリストを備える。アプリ番号はプロセス番号等、ユーザプログラム２８１１（図５）が動作するＯＳ４０１が発行する値でよく、或いは、ＡＰＩのパラメータとして与えられるものであってもよい。
【０１０６】
次に、図５に示すように、要求元ノードが要求先ノードに送信した要求を管理するための、送信要求管理テーブル２８２１（図２９Ａ）と読み出しデータ管理テーブル２８２２（図２９Ｂ）とを説明する。送信要求管理テーブル２８２１はエントリごとに１つの要求の情報を管理しており、エントリにパラメータがセットされていることを示す使用フラグ、要求先ノードから受信したデータ取得開始応答メッセージに含まれていた受信要求番号、要求先ノードのノード番号、要求したデータの書き込み周期、要求したデータの情報を格納する読み出しデータ管理テーブルへのポインタと、を備える。
【０１０７】
読み出しデータ管理テーブル２８２２はエントリごとに１つのデータを管理しており、パラメータがセットされていることを示す使用フラグ、データのコピー元である転写メモリ領域の先頭位置を示すオフセット、データのサイズと、を備える。
【０１０８】
図３０はユーザプログラム２８１１（図５）とデータアクセスモジュール２８１２（図５）夫々の動作のタイミングチャート図である。要求元ノードのユーザプログラム２８１１は、他ノード（要求先ノード）のデータを取得するために、データ取得開始ＡＰＩを実行する（３１０１）。その際、ユーザプログラム２８１１は、データ取得開始ＡＰＩに、パラメータとして、要求先ノード番号、取得しようとするデータの更新周期（書き込み周期）、データ数、メモリアドレス、サイズを入力する。データアクセスモジュール２８１２は、データ取得開始ＡＰＩを介して、これらパラメータ受け取り、要求先ノードへデータ取得開始要求メッセージ要求を送信して、要求元ノードと要求先夫々の転写メモリを経由してデータ取得を開始するためのデータ取得開始処理（Ｓ３２００）を実行し、その実行結果として、要求を管理するための番号としての送信要求番号をユーザプログラムに返す。
【０１０９】
ユーザプログラム２８１１は、送信要求番号を利用してデータ取得ＡＰＩを実行し、データを取得する（３１１１）。その際、ユーザプログラム２８１１は、データ取得ＡＰＩに、パラメータとして、送信要求番号、データ数、データのコピー先である要求元ノードの内部メモリのメモリアドレス、サイズを入力する。データアクセスモジュール２８１２は、これらのパラメータを利用して、転写メモリ１４０（要求先ノード）から、指定されたデータを指定した領域（コピー先アドレス：要求元ノード）にコピーし（データ取得処理：Ｓ３３００）、実行結果をユーザプログラム２８１１に通知する。データ取得ＡＰＩによって、ユーザプログラム２８１１は所定のタイミングと回数で、データを継続して取得することができる（３１１２：ＹＥＳ）。
【０１１０】
ユーザプログラム２８１１がデータの取得を終了すると（３１１２：ＮＯ）、データ取得停止ＡＰＩを実行する（３１２１）。このとき、ユーザプログラム２８１１は、データ取得停止ＡＰＩに、パラメータとして、送信要求番号を指定する。データアクセスモジュール２８１２はこれらのパラメータを利用して、要求先ノードに対してデータの取得の停止を要求するデータ取得停止処理（Ｓ３４００）を実行し、停止したことをユーザプログラム２８１１に返信する。
【０１１１】
図３１はデータアクセスモジュール２８１２によるデータ取得開始処理（図３０：Ｓ３２００）の詳細を説明するフローチャートである。データアクセスモジュール２８１２は、送信要求管理テーブル２８２１（図２９Ａ）から使用フラグが「未使用」であるエントリを検索する（３２０１）。データアクセスモジュール２８１２は当該エントリを発見できないと（３２０２：ＮＯ）は、送信要求数上限エラーをリターンして処理を終了する（３２４１）。データアクセスモジュール２８１２が当該エントリを発見すると（３２０２：ＹＥＳ）、当該エントリの使用フラグ（送信要求管理テーブル２８２１）を「編集中」に変更する（３２１１）。
【０１１２】
データアクセスモジュール２８１２は、続いて、データ取得開始要求メッセージ１１０１（図１１）を新たに生成し、パラメータとして、ＡＰＩから与えられた、データ書き込み周期、データ数、メモリアドレス、サイズをデータ取得開始要求メッセージ１１０１にセットする（３２１２）。さらに、パラメータとして与えられた、送信元ノード（要求ノード）番号を応答メッセージ１２０１の宛先としてヘッダ部１１１０にセットし、データ取得開始要求メッセージ１１０１を要求先ノードに送信し（３２１３）、要求先ノードからのデータ取得開始応答メッセージ１２０１を受信待ちする（３２１４）。
【０１１３】
データアクセスモジュール２８１２が要求先ノードからデータ取得開始応答メッセージ１２０１を受信しないと（３２１５：ＮＯ）、受信待ちがタイムアウトしていない場合は継続して応答メッセージを待ち（３２５１：ＮＯ）、受信待ちがタイムアウトすると（３２５１：ＹＥＳ）、応答受信タイムアウトエラーとして処理を終了する（３２５２）。
【０１１４】
データアクセスモジュール２８１２は、データ取得開始応答メッセージ１２０１を受信すると（３２１５：ＹＥＳ）、送信要求管理テーブル２８２１のエントリ（３２０２）に対し、応答メッセージに含まれる受信要求番号、データ数、をセットし、使用中フラグを「使用中」に変更し（３２２１）、応答メッセージの受信要求番号、データ数、オフセット、サイズを、読み出しデータ管理テーブル２８２２（図２９Ｂ）にセットする（３２２２）。次いで、データアクセスモジュール２８１２は、要求先管理テーブル２８２３から要求先ノードとノード番号が一致するエントリを検索する（３２２３）。
【０１１５】
データアクセスモジュール２８１２は、エントリを発見すると（３２２４：ＹＥＳ）、送信要求管理テーブル２８２１の当該エントリに対応する送信要求番号を、要求先管理テーブル２８２３（図２８）における当該エントリの送信要求番号リストに追加し（３２３１）、当該エントリを発見できないと（３２２４：ＮＯ）、要求先管理テーブル２８２３の未使用エントリにノード番号、送信要求番号をセットし、継続要求送信時刻に現在時刻をセットする（３２７２）。
【０１１６】
図３２はデータアクセスモジュール２８１２のデータ取得停止処理を説明するフローチャートである。データアクセスモジュール２８１２は、送信要求管理テーブル２８２１（図２９Ａ）から、ＡＰＩのパラメータに対応する送信要求番号のエントリを検索する（３３０１）。
【０１１７】
データアクセスモジュール２８１２は、エントリを発見できないと（３３０２：ＮＯ）、送信要求番号の異常を示すエラーをリターンして、処理を終了し（３３４１）、エントリを発見すると（３３０２：ＹＥＳ）、エントリの使用フラグを判定する。データアクセスモジュール２８１２は使用フラグを「未使用」と判定すると（３３０３：ＹＥＳ）、送信要求番号の異常を示すエラーをリターンし、処理を終了する（３３４２）。データアクセスモジュール２８１２は、使用フラグが「未使用」でないことを判定し（３３０３：ＮＯ）、使用フラグが「編集中」であることを判定すると（３３０４：ＹＥＳ）、編集中であることを示すエラーをリターンし、処理を終了する（３３４３）。
【０１１８】
データアクセスモジュール２８１２は、使用フラグを「編集中」でないと判定すると（３３０４：ＮＯ）、データ取得停止要求メッセージ１３０１を新たに生成し、送信要求管理テーブル２８２１のエントリ（３３０２）の受信要求番号を要求先管理テーブル２８２３の受信要求番号リストにセットし（３３１１）、データ取得停止要求メッセージ１３０１（図１３）を、前記エントリにセットされたノード番号（要求先ノード）を宛て先として送信し（３３１２）、要求先ノードからのデータ取得停止応答メッセージ１４０１（図１４）を待つ（３３１３）。
【０１１９】
データアクセスモジュール２８１２は、データ取得停止応答メッセージ１４０１を受信しないと（３３１４：ＮＯ）、受信待ちがタイムアウトしていない場合は継続して応答メッセージの受信を待ち（３３６１：ＮＯ）、タイムアウトした場合は（３３６１：ＹＥＳ）、データ取得停止応答メッセージ１４０１のレスポンスコードに“０”をセットする（３３６２）。
【０１２０】
データアクセスモジュール２８１２は、データ取得停止応答メッセージ１４０１を受信すると（３３１４：ＹＥＳ）、応答メッセージからレスポンスコードを取得し（３３２１）、要求先管理テーブル２８２３のエントリのうち要求先ノード番号が一致するエントリの送信要求番号リストから送信要求番号（３３１１を参照）を削除する（３３２２）。データアクセスモジュール２８１２は、送信要求番号リストが空になったことを判定すると（３３２３：ＹＥＳ）、要求先管理テーブル２８２３のエントリ（３３０１）を削除する（３３３１）。続いて、データアクセスモジュール２８１２は、送信要求管理テーブル２８２１の当該エントリと、当該エントリのポインタで参照している読み出しデータ管理テーブル２８２２の全てのエントリを削除し（３３３２）、正常終了とレスポンスコードをリターンし、処理を終了する（３３３３）。
【０１２１】
図３３はデータアクセスモジュール２８１２によるデータ取得処理のフローチャートである。データアクセスモジュール２８１２は、送信要求管理テーブル２８２１から送信要求番号に該当するエントリを検索し（３４０１）、該当するエントリを発見しないと（３４０２：ＮＯ）、送信要求番号の異常を示すエラーをリターンし、処理を終了する（３４４１）。
【０１２２】
データアクセスモジュール２８１２は、該当するエントリを発見すると（３４０２：ＹＥＳ）、エントリの使用フラグを判定し、使用フラグが「未使用」であることを判定すると（３４１１：ＹＥＳ）、送信要求番号の異常を示すエラーをリターンし、処理を終了する（３４５１）。
【０１２３】
データアクセスモジュール２８１２は、使用フラグを「未使用」でないと判定し（３４１１：ＮＯ）、そして、使用フラグを「編集中」であると判定すると（３４２１：ＹＥＳ）、エントリ（３４０２）が編集中であることを示すエラーをリターンし、処理を終了する（３４６１）。
【０１２４】
データアクセスモジュール２８１２が使用フラグを「編集中」ではないと判定すると（３４２１：ＮＯ）、前記エントリのポインタで参照している読み出しデータ管理テーブル２８２２（図２９Ｂ）からオフセット、サイズを取得し（３４３１）、メモリアドレスとサイズによって与えられた、データのコピー先（内部メモリ）に、オフセットとサイズによって特定される転写メモリ領域（要求元ノード）からデータをコピーし（３４３２）、正常終了をリターンして処理を終了する（３４３３）。
【０１２５】
図３４はデータ取得継続要求メッセージ１５０１（図１５）を送信する監視処理モジュール２８１３（図５）の動作のフローチャートである。監視処理モジュール２８１３は、データ取得開始要求メッセージ１１０１を送信したユーザプログラム２８１１が正常に動作している場合に、要求先ノードにデータ取得継続要求メッセージ１５０１を自動送信する。
【０１２６】
監視処理モジュール２８１３は、実行周期分の時間が経過するまで待機し、実行周期分の時間が経過すると（３５０１：ＹＥＳ）、要求先管理テーブル２８２３（図２８）に残りのエントリがあることを判定すると（３５１１：ＹＥＳ）、要求先管理テーブル２８２３から１エントリを取り出す（３５２１）。
【０１２７】
監視処理モジュール２８１３は、当該エントリの継続要求送信時刻から事前設定された送信間隔分の時間が経過していないことを判定すると（３５３１：ＮＯ）、要求先管理テーブル２８２３の次のエントリの処理に進む（３５１１）。事前設定された送信間隔分の時間が経過すると（３５３１：ＹＥＳ）、監視処理モジュール２８１３は、エントリ（３５２１）のノード番号を要求先ノードの宛先としたデータ取得継続要求メッセージ１５０１を生成する（３５４１）。
【０１２８】
続いて、監視処理モジュール２８１３は、要求先管理テーブル２８２３の当該エントリの送信要求番号リストに残りがあることを判定すると（３５４２：ＹＥＳ）、送信要求番号リストから送信要求番号を１つ取り出す（３５５１）。監視処理モジュール２８１３は、当該エントリのアプリ番号（要求先管理テーブル２８２３）に対応するユーザプログラム２８１１が正常に動作していることを確認すると（３５５２：ＹＥＳ）、当該エントリの受信要求番号をデータ取得継続要求メッセージ１５０１にセットする（３５６１）。監視処理モジュール２８１３が、ユーザプログラム２８１１が正常に動作していないことを判定すると、当該エントリの使用フラグ（要求先管理テーブル２８２３）に「無効」をセットする（３５８１）。
【０１２９】
監視処理モジュール２８１３は、エントリの送信要求番号リスト（要求先管理テーブル２８２３）に残りが無いことを判定すると（３５４２：ＮＯ）、データ取得継続要求メッセージ１５０１を要求先ノードに送信し（３５７１）、要求先管理テーブル２８２３のエントリに残りがなくなると（３５１１：ＮＯ）、次回の実行周期まで待機する（３５９１）。
【０１３０】
以上説明した実施形態によれば、ノードが他のノードと、転写メモリに基づいて、プッシュ方式の通信によってデータを共有できる。ノードは他のノードのデータを要求する、プル方式の通信を行う場合でも要求先のノードがその転写メモリにデータを記録し、データの位置を要求元ノードに伝え、要求元ノードが自身の転写メモリにその位置に基づいてデータを記録することにより、要求元ノードと要求先ノードとの間でデータを共有することができる。要求元ノードは、要求されたデータを転写メモリのプル方式用データ記憶領域に記録して、データを、要求先ノードを含めた複数のノードに同報送信してもよい。このように、転写メモリを介してのデータの送受信によって、プッシュ型通信とプル型通信の双方で、複数のノード間でのデータの共有が可能になる。夫々がプル方式の複数のノードの一部をプッシュ方式のノードに置換する事象によって、システムにプッシュ方式のノードとプル方式のノードとが混在しても、複数のノード間で同じデータを共有できる。
【０１３１】
プル型の通信において、データを要求する要求元ノードは、要求先ノードに、要求を繰り返し送信する。要求先ノードは、要求が継続的に受信できない場合には、要求元ノードがシステムから除かれたとして、要求されたデータを転写メモリ（プル方式用データの記録領域）から削除することができる。転写メモリの容量に十分な余裕をとれないため、転写メモリの容量の浪費を避けることができる。
【０１３２】
要求先ノードは、要求元ノードからの要求を要求番号によって管理する。要求先ノードは、複数のノードから同じデータに対する要求があっても、複数のノード毎にデータを転写メモリに記録することはせず、データを転写メモリの一つの記録領域に記録し、複数のノード夫々の要求を要求番号に基づいて管理する。
【０１３３】
転写メモリに基づき、複数のプッシュ方式のノード間でデータを共有するシステムに、プル方式のノードを混在させても、開発ノードの構築コマンド（図６）によって、プッシュ通信におけるデータの共有を損なうことなく、プル方式のノード同士、又は、プル方式のノードとプッシュ方式のノードとの間の転写メモリを利用したデータの共有が可能になる。
【０１３４】
一方、ノードが他ノードの転写メモリからデータを取得する場合、データがプル方式用データか、プッシュ方式用のデータかによって、ＡＰＩに設定されるパラメータが異なるため、ＡＰＩを使い分ける必要に迫られるが、それでは、ＡＰＩを別々に作成しなければならないなど労力が嵩むという課題がある。そこで、要求元ノード（ユーザプログラム２８１１）は、図３１で説明したＡＰＩ（プル方式用のデータ通信）にセットされるパラメータに、プッシュ方式通信での転写メモリの割り当て情報（オフセット情報：１〜Ｎ）を含ませれば、ＡＰＩを使い分ける必要なく他ノードの転写メモリからプッシュ方式用のデータを取得することができる。
【０１３５】
図３５に、図３０で説明したＡＰＩ（プル方式用のデータ通信）にセットされるパラメータに、プッシュ方式通信での転写メモリの割り当て情報（オフセット情報：１〜Ｎ）を含ませた態様における、データ取得開始処理（図３０：Ｓ３２００に対応）のフローチャートを示す。このフローチャートが図３１のフローチャートと異なるのは、一点鎖線で囲むステップ３５００Ａ〜３５０２Ａが追加された点である。データ取得開始ＡＰＩのパラメータとしてオフセットが指定されると、受信待ちタイムアウトが発生した後に（３２５１）、オフセットが有効であるかが判定される（３５００Ａ）。
【０１３６】
データアクセスモジュール２８１２は、オフセットが有効であることを判定すると（３５００Ａ：ＹＥＳ）、相手ノードがプッシュ方式を利用する既設のノードであり、プル方式を利用しないため応答を受信しなかったと判断し、パラメータに加えた転写メモリ割り当て情報に従い、読み出しデータ管理テーブル２８２２（図２９Ｂ）を更新、即ち、パラメータのデータ数、オフセット、サイズを送信要求管理テーブル２８２１（図２９Ａ）のエントリのポインタが指す読み出しデータ管理テーブル２８２２にセットする（３５０１Ａ）。さらに、データアクセスモジュール２８１２は、送信要求管理テーブル２８２１の使用フラグに「固定」をセットし（３５０２Ａ）、受信番号をリターンする（３２３２）。
【０１３７】
図３６に、図３０で説明したＡＰＩ（プル方式用のデータ通信）にセットされるパラメータに、プッシュ方式通信での転写メモリの割り当て情報（オフセット情報：１〜Ｎ）を含ませた態様における、データ取得停止処理（図３０：Ｓ３４００）のフローチャートである。使用フラグが「編集中」でないことが判定（３３０４）された後に、データアクセスモジュール２８１２は、使用フラグが「固定」であるか否かを判定する（３６００Ａ）を判定する。データアクセスモジュール２８１２は、これを否定すると３３１１に移行し、これを肯定すると、エントリ（３３０２）は、要求先ノードからの応答の情報ではなく、予めセットされたパラメータ（オフセット：1〜Ｎ）を基にデータの取得を行うものとして、要求先ノードにデータ取得停止要求を送信する必要は無く、テーブルの削除処理のみを行うために、レスポンスコードに正常終了を示す“０”をセットする（３６０１Ａ）。データアクセスモジュール２８１２は、その後、テーブル削除処理（３３３２）に進む。
【０１３８】
図３５及び図３６で示した態様によれば、要求元ノードは、要求先ノードが、プッシュ方式を利用し、プル方式に対応していないノードであることを判断できるために、要求先ノードがプル方式に対応しているか否かに拘わらずに合わせて、要求元ノードのデータ受信方式を要求先ノードの通信方式に合わせて、要求先ノードの転写メモリからデータを取得することができる。以上、実施形態を説明したが、記載のものに上記開示に限定されるものでなく、その趣旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【０１３９】
１１０  ノード
１３０  ネットワーク
１４０  転写メモリ
３１０  管理ノード
３１０ａ，ｂ  プル方式搭載ノード
３２０ａ，ｂ  プル方式非搭載ノード
【図１】
2018073318.tif 000003
【図２Ａ】
2018073318.tif 000004
【図２Ｂ】
2018073318.tif 000005
【図３】
2018073318.tif 000006
【図４】
2018073318.tif 000007
【図５】
2018073318.tif 000008
【図６】
2018073318.tif 000009
【図７】
2018073318.tif 000010
【図８】
2018073318.tif 000011
【図９】
2018073318.tif 000012
【図１０】
2018073318.tif 000013
【図１１】
2018073318.tif 000014
【図１２】
2018073318.tif 000015
【図１３】
2018073318.tif 000016
【図１４】
2018073318.tif 000017
【図１５】
2018073318.tif 000018
【図１６】
2018073318.tif 000019
【図１７】
2018073318.tif 000020
【図１８】
2018073318.tif 000021
【図１９】
2018073318.tif 000022
【図２０】
2018073318.tif 000023
【図２１】
2018073318.tif 000024
【図２２】
2018073318.tif 000025
【図２３】
2018073318.tif 000026
【図２４】
2018073318.tif 000027
【図２５】
2018073318.tif 000028
【図２６】
2018073318.tif 000029
【図２７】
2018073318.tif 000030
【図２８】
2018073318.tif 000031
【図２９Ａ】
2018073318.tif 000032
【図２９Ｂ】
2018073318.tif 000033
【図３０】
2018073318.tif 000034
【図３１】
2018073318.tif 000035
【図３２】
2018073318.tif 000036
【図３３】
2018073318.tif 000037
【図３４】
2018073318.tif 000038
【図３５】
2018073318.tif 000039
【図３６】
2018073318.tif 000040