(58)【調査した分野】(Int.Cl.,DB名)
前記処理部は、前記処理要求メッセージを受信した時刻から、前記処理を完了した時刻までの処理時間を計測し、前記処理時間が前記動作時間より長いか否かを判定し、前記処理時間が前記動作時間より長いと判定された場合、前記他制御装置へエラーを示す応答を送信する、
請求項4に記載の制御装置。
前記処理部は、第2通信を要求する第2通信要求メッセージを前記他制御装置へ送信し、前記他制御装置により前記第2通信が前記通信条件を満たすと判定され、第2要求送信周期を示す情報を前記他制御装置から受信した場合、前記第2要求送信周期毎に、前記第2処理要求メッセージを前記他制御装置へ送信する、
請求項1に記載の制御装置。
前記通信が前記通信条件を満たすと判定され、且つ前記他制御装置から応答送信周期を示す情報を受信した場合、前記処理部は、前記応答送信周期毎に、前記処理を実行し前記処理の結果を示す処理応答メッセージを前記他制御装置へ送信する、
請求項1に記載の制御装置。
【発明を実施するための形態】
【0016】
以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、本発明の実施形態を説明する図において、同一部には同一の符号を付し、その繰り返しの説明は、省略することにする。
【0017】
図1は、本発明の実施形態の制御システムの構成を示す。この制御システムは、複数のノード100(100a,100b,100c,100d)を含む。或るノード100は、ネットワーク114経由で、他ノードに記憶されたデータへのアクセスを行う。なお、システム内のノード数は、この図に例示した数に限定されない。例えば、各ノードは、制御対象機器に接続され、制御対象装置の監視や制御を行う制御装置である。
【0018】
図2は、ノード100の構成を示す。ノード100は、コントローラ(制御装置)、ワークステーション、パーソナルコンピュータ等のコンピュータである。
【0019】
ノード100は、ハードウェアモジュールとして、揮発/不揮発性メモリやハードディスク装置等を含む記憶部111と、中央処理装置(CPU:Central Processing Unit)等を含む処理部112と、通信インタフェース(通信I/F)113とを含む。この通信インタフェース113は、ネットワーク114との接続を行うインタフェースであり、イーサネット(登録商標)や無線LAN(Local Area Network)などの通信インタフェースが該当する。記憶部111は、プログラム及びデータを格納する。処理部112は、記憶部111に格納されたプログラムを実行する。
【0020】
記憶部111は、プログラムとして、OS150、通信ミドルウェア160、アプリケーション170(170a、170b)を実行する。記憶部111は更に、データとして、設定ファイル120と、応答送信管理テーブル130と、要求送信管理テーブル140とを格納する。記憶部111は更に、他ノードからアクセス可能な領域である共有メモリ領域180を含む。
【0021】
設定ファイル120は、アプリケーション170の実行の周期を示すアプリケーション実行周期171と、アプリケーション実行周期171内のアプリケーション170の実行時間であるアプリケーション実行時間172と、他ノードからのデータ取得要求メッセージの受信からその応答メッセージの送信までのデータ取得処理に掛かる時間(以下、データ取得処理時間と呼ぶ)と、OS150により確保されたバッファにおいて、通信インタフェース113により受信されバッファに保存できるメッセージの最大数である最大格納メッセージ数と、それぞれのノード100を一意に識別するノードアドレスに関する情報とを含む。
【0022】
データ取得要求メッセージは、システム内のノード100に対して、そのノード100の記憶部111に格納されたデータにアクセスするために送信されるメッセージである。以後、データ取得要求メッセージを送信するノード100を要求元と呼び、データ取得要求メッセージを受信するノード100を要求先と呼ぶ。
【0023】
本実施形態の制御システム、データ取得要求メッセージの送受信方式として、単発型要求メッセージ方式と、周期型要求メッセージ方式がある。
【0024】
単発型要求メッセージ方式において、データ取得要求メッセージを受信したノード100は、その受信毎に、記憶部111に格納されたデータをデータ取得応答メッセージとして送信する。これにより、要求先は、要求元からのデータ取得要求メッセージに応じてデータ取得応答メッセージを送信することができる。
【0025】
一方、周期型要求メッセージ方式において、一度だけデータ取得要求メッセージを受信したノード100は、データ取得要求メッセージに示された周期で応答メッセージを自発的に送信する。これにより、その後、要求元がデータ取得要求メッセージを送信しなくても要求先が与えられた周期でデータ取得応答メッセージを送信することができる。
【0026】
なお、データ取得要求メッセージには、データアクセスの対象データの数、要求先の共有メモリ領域180内で対象データが格納された先頭のメモリアドレス、そのデータサイズ、周期型要求メッセージ方式のために応答メッセージを送信する周期などを含む。
【0027】
図3は、アプリケーション実行周期171とアプリケーション実行時間172との関係を示す。この図に示すように、一般的に、制御システム上で動作するアプリケーション170は一定の周期であるアプリケーション実行周期171が経過する度に、一定のアプリケーション実行時間172の長さを有するアプリケーション実行期間だけ動作する。ノード100が複数のアプリケーション170a、170bを実行する場合、アプリケーション実行期間は、複数のアプリケーション170a、170bの実行期間を合わせた期間である。この場合のアプリケーション実行時間172は、複数のアプリケーション170a、170bの実行時間の合計である。アプリケーション実行周期171の中で、アプリケーション実行期間以外の期間をアプリケーション待機期間と呼ぶ。
【0028】
ノード100は、他ノードよりデータ取得要求メッセージを受信すると、アプリケーション待機期間においてデータ取得要求メッセージを解析し、データ取得要求メッセージにより指定されたデータを記憶部111から取得し、取得されたデータを応答メッセージとして他ノードへ送信するデータ取得処理を行う。
【0029】
アプリケーション実行周期171と比較して、アプリケーション実行時間172が小さい場合や、受信したデータ取得要求メッセージの数が少ない場合、ノード100は、アプリケーション待機期間にデータ取得処理を行うことが可能である。
【0030】
しかし、アプリケーション実行周期171とアプリケーション実行時間172がほとんど同じ場合などは、そのデータ取得処理を行う時間がほとんどないため、ノード100は、或るアプリケーション実行周期で受信されたデータ取得要求メッセージのデータ取得処理を、次のアプリケーション実行周期に行う可能性がある。
【0031】
この場合、要求先によるデータ取得処理のタイミングが、要求されたデータが更新する前であるのか、更新する後であるのか分からない。そのため、例えば、アプリケーション170が制御ロジックや故障/事故の解析のように、データ取得要求を複数回発行する場合、そのデータの更新タイミングの違いにより、予想通りの動作ができない場合があるため、上記のような要求/応答型のデータアクセスを制御システムに適用できない場合がある。
【0032】
そのため、本実施例の制御システムは、一つのアプリケーション実行周期内で、要求先がデータ取得要求メッセージの受信とその応答メッセージの送信とを実行できるように、要求元によるデータ取得要求メッセージの送信を制御する。
【0033】
図4は、応答送信管理テーブル130と要求送信管理テーブル140を示す。
【0034】
応答送信管理テーブル130は、他ノードから受信されたデータ取得要求メッセージを示すテーブルであり、データ取得要求メッセージ毎のエントリを含む。一つのコネクションに対応するエントリは、要求元ノードアドレス131と、要求先頭メモリアドレス132と、データサイズ133と、応答送信周期134とを含む。要求元ノードアドレス131は、当該データ取得要求メッセージの要求元のノードアドレスを示す。ノードアドレスは例えば、IP(Internet Protocol)アドレス等のネットワークアドレスである。要求先頭メモリアドレス132は、当該データ取得要求メッセージに含まれ、取得の対象データの先頭のメモリアドレスを示す。データサイズ133は、当該データ取得要求メッセージに含まれるデータサイズを示す。応答送信周期134は、当該データ取得要求メッセージに含まれ、応答メッセージの送信の周期を示す。これらの項目のうち、要求先頭メモリアドレス132と、データサイズ133と、応答送信周期134は、周期型要求メッセージ方式のデータ取得要求メッセージに含まれ、単発型要求メッセージ方式のデータ取得要求メッセージに含まれない。
【0035】
周期型要求メッセージ方式において、要求先は、要求先頭メモリアドレス132に示されたアドレスからデータサイズ133が示すサイズ分のデータを、応答送信周期134に示された周期で、応答メッセージとして送信する。周期型要求メッセージ方式を用いることにより、要求先は、要求元とのコネクションが確立されれば、要求元からのデータ取得要求メッセージを受信しなくても、応答送信周期134の経過毎に応答メッセージを送信することができる。
【0036】
この応答送信管理テーブル130によれば、要求先は、要求元からの受信の計画を管理することができる。
【0037】
要求送信管理テーブル140は、要求元がデータ取得要求メッセージの送信タイミング制御に利用するテーブルであり、コネクションを確立した要求先毎のエントリを含む。一つの要求先に対応するエントリは、要求先ノードアドレス141と、要求送信周期142とを含む。要求先ノードアドレス141は、データ取得要求メッセージを送信するノードアドレスを示す。要求送信周期142は、要求先ノードアドレス141が示すノード100にデータ取得要求メッセージを送信する周期を示す。
【0038】
要求元は、要求先ノードアドレス141に示されたノード100に対し、要求送信周期142毎にデータ取得要求メッセージを送信する。要求元が要求先から受信した要求送信周期142の経過毎にデータ取得要求メッセージを送信することにより、要求先のデータ取得要求メッセージの受信数を制限することができる。
【0039】
この要求送信管理テーブル140によれば、要求元は、要求先への送信の計画を管理することができる。
【0040】
OS150は、ノード100の動作を統括的に制御する基本ソフトウェアである。
【0041】
図5は、通信ミドルウェア160の機能構成を示す。
【0042】
通信ミドルウェア160は、データ取得要求メッセージの受信とそれに対する応答メッセージの送信とを一つのアプリケーション実行周期内で処理できるように、データ取得要求メッセージの送信タイミングなどの制御を行う。通信ミドルウェア160は、モジュールとして、メッセージ生成/送信部161と、メッセージ解析/受信部162と、データ取得要求受付部163と、データ取得部164と、周期データ管理部165と、帯域管理部166とを含む。
【0043】
メッセージ生成/送信部161は、他モジュールからの命令に応じたメッセージを生成し、通信インタフェース113を通じて送信する。
【0044】
メッセージ解析/受信部162は、他ノードから通信インタフェース113を介して送信されたメッセージを受信し、そのメッセージを解析した後、その解析結果に応じて、他モジュールにその結果を送信する。
【0045】
データ取得要求受付部163は、アプリケーション170からのデータ取得要求を受付け、その要求を要求送信管理テーブル140に示された要求送信周期142に合わせてメッセージ生成/送信部161へ送信する。メッセージ生成/送信部161は、その要求に基づくデータ取得要求メッセージを送信し、メッセージ解析/受信部162は、データ取得要求メッセージに対する応答メッセージを受信し、データ取得要求に対する応答をデータ取得要求受付部163へ送信する。データ取得要求受付部163は、メッセージ解析/受信部162からその応答を受信し、該当するアプリケーション170へその応答を送信する。
【0046】
データ取得部164は、メッセージ解析/受信部162により受信されたデータ取得要求メッセージに応じて、記憶部111よりデータを取得し、その結果をメッセージ生成/送信部161に送信する。
【0047】
周期データ管理部165は、周期型要求メッセージ方式のデータ取得要求メッセージを受信した後、応答送信管理テーブル130に示された応答送信周期134に合わせて、データ取得部164にデータ取得要求を送信する。
【0048】
帯域管理部166は、後に述べる電源起動時に上限受信パケットレートを算出し、その算出したレートに応じて、他ノードによるデータ取得要求メッセージの送信を制御する。なお、上限受信パケットレートは、アプリケーション実行周期内にノード100が受信できるデータ取得要求メッセージ数である。
【0049】
アプリケーション170は、アプリケーション実行周期171毎に、アプリケーション実行期間の間、動作する。記憶部111は、他ノードの記憶部111内の要求先の共有メモリ領域180内でアプリケーション170の動作に必要なデータのメモリアドレスを記憶する。アプリケーション170は、他ノードのメモリアドレスを指定するデータ取得要求を通信ミドルウェア160へ発行することにより、通信ミドルウェア160からデータを取得する。OS150は、アプリケーション170の動作保証を行い、データ取得処理などの他の処理よりアプリケーション170の実行を優先し、アプリケーション170をアプリケーション実行周期171毎に実行する。
【0050】
以下、ノード100の動作について説明する。
【0051】
ノード100の電源起動時、帯域管理部166は、データ取得要求メッセージの受信量の上限を決定する上限受信量決定処理を行う。
【0052】
図6は、上限受信量決定処理のフローを示す。
【0053】
ノード100の電源起動後、帯域管理部166は、記憶部111に格納された設定ファイル120を読込み、アプリケーション実行周期171と、アプリケーション実行時間172と、データ取得処理時間と、最大メッセージ数などの情報を取得する(S500)。なお、これらの情報の中で、OS150を通じて取得できる情報がある場合には、設定ファイル120を利用せず、OS150を通じて取得してもよい。
【0054】
次に、帯域管理部166は、取得した情報を利用して、要求メッセージ処理レートとバッファあふれ防止レートをそれぞれ算出する(S510、S520)。
【0055】
要求メッセージ処理レートは、単位時間に、データ取得処理できるデータ取得要求メッセージ数である。アプリケーション実行周期中に受信したデータ取得要求メッセージは、アプリケーション待機期間中にデータ取得処理される。例えば、単位時間をアプリケーション実行周期171とし、アプリケーション実行周期171が50ms、アプリケーション実行時間172が30ms、データ取得処理時間が1msの場合、要求メッセージ処理レートは、(アプリケーション実行周期171−アプリケーション実行時間172)÷データ取得処理時間÷アプリケーション実行周期171=(50ms−30ms)÷1ms÷50ms=20個/50msとなる。この場合、ノード100は、アプリケーション待機期間中内に、20個までのデータ取得要求メッセージのデータ取得処理を行うことができる。
【0056】
ノード100がアプリケーション実行周期内に要求メッセージ処理レートを超えたメッセージ数を受信した場合、そのアプリケーション実行周期内にデータ取得処理を完了できない恐れがある。
【0057】
バッファあふれ防止レートは、アプリケーション実行期間中の単位時間に、バッファが格納できるデータ取得要求メッセージ数であり、例えば、バッファが格納できるデータ取得要求メッセージの最大数である最大格納メッセージ数が90個、アプリケーション実行時間172が30msとすると、最大格納メッセージ数÷アプリケーション実行時間172=90個÷30ms=3個/ms=150個/50msとなる。この場合、ノード100は、アプリケーション実行期間内に、150個までのデータ取得要求メッセージを受信することができる。
【0058】
ノード100がアプリケーション実行期間中にバッファあふれ防止レートを超えたメッセージ数を受信した場合、データ取得要求メッセージをバッファに格納することができないため、データ取得要求メッセージをロストする恐れがある。
【0059】
要求メッセージ処理レートならびにバッファあふれ防止レートの両方を算出した後、帯域管理部166は、これら2つのレートの中で小さい方を上限受信パケットレートとする(S530)。例えば、上記の要求メッセージ処理レート及びバッファあふれ防止レートの値では、要求メッセージ処理レートを上限受信パケットレートとする。
【0060】
以上が電源起動時の帯域管理部166のフローである。複数のノード100は非同期で動作し、要求先は、要求元によるデータ取得要求メッセージの送信タイミングを知らない。即ち、要求先は、アプリケーション実行期間中にデータ取得要求メッセージを受信する場合と、アプリケーション待機期間中にデータ取得要求メッセージを受信する場合とがある。帯域管理部166のフローによれば、それぞれの期間で受信可能なデータ取得要求メッセージ数を算出し、少ない方を上限受信パケットレートとして決定し、アプリケーション実行周期内で受信されるデータ取得要求メッセージ数が上限受信パケットレート以下に制限する。これにより、データ取得要求メッセージの受信から応答メッセージの送信までのデータ取得処理に掛かる時間を、予め定められた応答時間以下にすることができる。
【0061】
なお、帯域管理部166は、予め定められた計測時間内でアプリケーション実行期間中に処理できるデータ取得要求メッセージの数を、要求メッセージ処理レートとし、計測時間内でアプリケーション待機期間中に受信できるデータ取得要求メッセージの数を、バッファあふれ防止レートとし、計測時間内に処理できるデータ取得要求メッセージの数を、上限受信パケットレートとしても良い。この場合、帯域管理部166は、計測時間をアプリケーション実行周期としても良い。
【0062】
データ取得要求メッセージを送信する送信処理の時間は、アプリケーション実行時間やデータ取得処理時間に比べて小さく、他の処理に与える影響は小さいため、ノード100は、要求メッセージ処理レートの算出に送信処理の時間を考慮しなくても良い。また、ノード100は、アプリケーション待機期間の長さから予め設定された送信処理の時間を減じて、要求メッセージ処理レートを算出しても良い。
【0063】
以下、要求元であるノード100aが要求先であるノード100bと通信を行うことにより対象データを取得する通信処理について説明する。
【0064】
図7は、通信処理のシーケンスを示す。
【0065】
ノード100aで動作するアプリケーション170aは、通信ミドルウェア160に対して、データ取得要求を送信する(S610)。この要求には要求先のノードアドレスや対象データが格納されたメモリアドレスを指定する。周期型要求メッセージ方式の場合、データ取得要求は更に、データ取得の周期である応答送信周期を指定する。
【0066】
データ取得要求を受信した通信ミドルウェア160は、必要に応じてコネクション確立処理を行う(S700)。なお、コネクション確立処理の詳細はのちに説明する。コネクション確立処理によって、ノード100aの要求により、ノード100bは電源起動に算出した上限受信パケットレートを超えるか否かを判断する。これにより、ノード100bとのコネクションを確立済みのノード100の動作に影響を与えることを防ぐ。
【0067】
コネクション確立処理(S700)の結果、コネクション確立が困難な場合(S720のNoの場合)、通信ミドルウェア160はアプリケーション170aに対して、データ取得ができないことを通知する(S820)。
【0068】
コネクション確立処理(S700)の結果、コネクション確立ができる場合(S720のYesの場合)、通信ミドルウェア160はノード100bの記憶部111に格納されたデータにアクセスするデータ取得処理を実行し(S800)、その実行結果であるデータ取得応答を、アプリケーション170aに通知する(S820)。周期型要求メッセージ方式の場合、S800及びS820が繰り返し行われる。
【0069】
以上の通信処理によれば、要求元は、要求先との通信によりコネクションを確立し、コネクションが確立されれば、要求先からデータを取得することができる。
【0070】
図8は、要求元におけるコネクション確立処理及びデータ取得処理のフローを示す。
【0071】
コネクション確立処理(S700)において、ノード100aの通信ミドルウェア160のデータ取得要求受付部163は、アプリケーション170aよりデータ取得要求を受信すると、その受信内容を解析し、要求送信管理テーブル140を参照する(S710、S712)。
【0072】
要求送信管理テーブル140に、要求先のノードアドレスが含まれている場合、データ取得要求受付部163は、コネクション確立済みと判断し(S714のYesの場合)、データ取得処理(S810以降)を実行する。
【0073】
要求送信管理テーブル140に、要求先のノードアドレスが含まれていない場合、データ取得要求受付部163は、コネクションが未確立と判断し(S714のNoの場合)、コネクション処理を実行するために、メッセージ生成/送信部161は、コネクション確立要求メッセージを生成し、コネクション確立要求メッセージをノード100bに対して送信する(S716)。
【0074】
コネクション確立要求メッセージを送信後、メッセージ解析/受信部162が、その要求に対するコネクション確立応答メッセージを受信、解析した結果(S718)、コネクション確立が可能と判断された場合(S720のYesの場合)、データ取得要求受付部163は、要求先ノードアドレス141と、その応答に含まれる要求送信周期141とを、要求送信管理テーブル140に設定し、データ取得処理(S810以降)へ移行する。
【0075】
解析した結果、コネクション確立が困難と判断された場合(S720のNoの場合)、データ取得要求受付部163は、アプリケーション170aに対して、データ取得ができないことを通知する(S820)。
【0076】
以上が要求元のノード100aにおけるコネクション確立処理の説明である。次に、ノード100aにおけるデータ取得処理(S800)を説明する。
【0077】
通信ミドルウェア160のデータ取得要求受付部163は、要求送信管理テーブル140に含まれる要求送信周期142を参照して、データ取得要求メッセージを送信するタイミングか否かを判断する(S810)。
【0078】
送信するタイミングであると判断された場合(S810のYesの場合)、メッセージ生成/送信部161は、データ取得要求メッセージの生成、ならびに送信を行う(S812)。
【0079】
送信したデータ取得要求メッセージに対する応答メッセージを、メッセージ解析/受信部162が受信し解析すると(S814)、データ取得要求受付部163は、その結果をアプリケーション170aに通知する(S820)。
【0080】
一方、データ取得要求メッセージを送信するタイミングではないと判断された場合(S810のNoの場合)、データ取得要求受付部163は、データ取得要求メッセージの待ち状態になり、アプリケーション170a又は他アプリケーションからのデータ取得要求を待つ(S816)。
【0081】
以上の要求元の処理によれば、要求先とのコネクションが確立されていなければ、コネクションを確立すると共に、要求先から要求送信周期を受信することができる。これにより、要求元は、要求送信周期に従ってデータ取得要求メッセージを送信することができる。
【0082】
図9は、要求先におけるコネクション確立処理及びデータ取得処理のフローを示す。
【0083】
メッセージ解析/受信部162はノード100aからコネクション確立要求メッセージを受信すると(S750のYesの場合)、帯域管理部166にその旨を通知、通知を受けた帯域管理部166は、応答送信管理テーブル130を参照し(S752)、確立されたコネクションにより受信されるデータ取得要求メッセージ数と、受信されたコネクション確立要求メッセージとの合計を算出し、単位時間あたりの合計のメッセージ数である受信パケットレートを算出し、算出された受信パケットレートが上限受信パケットレートを超えるか否かを判断する(S754)。データ取得要求メッセージ数は例えば、応答送信管理テーブル130のエントリ数である。単位時間は例えば、アプリケーション実行周期171である。
【0084】
受信パケットレートが上限受信パケットレートを超えないと判断された場合(S754のNoの場合)、メッセージ生成/送信部161は、要求送信周期を示すコネクション確立応答メッセージを送信し(S756)、処理をS750へ移行させる。
【0085】
受信パケットレートが上限受信パケットレートを超えると判断された場合、(S754のYesの場合)、メッセージ生成/送信部161は、コネクション確立不可を示すコネクション確立応答メッセージを送信し(S758)、処理をS750へ移行させる。
【0086】
以上が要求先のノード100bにおけるコネクション確立処理の説明である。次に、ノード100bにおけるデータ取得処理(S800)を説明する。
【0087】
メッセージ解析/受信部162は、コネクション確立要求メッセージでなく(S750のNoの場合)、データ取得要求メッセージを受信すると(S850のYesの場合)、データ取得部164にその旨を通知する。その通知を受けたデータ取得部164は、要求先の共有メモリ領域180より該当データを取得し(S854)、メッセージ生成/送信部161は、取得されたデータを含む応答をノード100aへ送信し(S856)、処理をコネクション確立処理のS750へ移行させる。
【0088】
また、周期データ管理部165は、応答送信管理テーブル130を参考し、周期データを送信するタイミングか否か、即ち、前回の周期データの送信から応答送信周期134が経過したか否かを判断する(S858)。周期データは、周期型要求メッセージ方式において、要求先が応答送信周期134毎に送信する応答メッセージである。
【0089】
判断した結果、周期データを送信するタイミングであると判断された場合(S858のYesの場合)、データ取得部164にその旨を通知する。通知を受けたデータ取得部164は、要求先の共有メモリ領域180より該当データを取得し(S854)、メッセージ生成/送信部161は、取得したデータを含む応答をノード100aへ送信する(S856)。
【0090】
S858において、周期データを送信するタイミングではないと判断された場合(S858のNoの場合)、周期データ管理部165は、周期データを送信するタイミングになるまで待つ。
【0091】
以上の要求先の処理によれば、要求元からコネクション確立要求メッセージを受信した場合に、アプリケーション実行周期171内に受信されるデータ取得要求メッセージの数に基づいて、コネクションを確立するか否かを判定することができる。これにより、アプリケーション実行周期171内に受信されるデータ取得要求メッセージの数を制限することができ、データ取得要求メッセージの数の増大による応答メッセージの遅れを防ぐことができる。また、要求先は、コネクション確立と共に周期型要求メッセージ方式のデータ取得要求メッセージを受信した場合、その後、データ取得要求メッセージを受信することなく、応答送信周期134毎に応答メッセージを送信することができる。
【0092】
以上の動作により、ノード100aはノード100bに格納された対象データを取得することができる。
【0093】
以上に説明したように、コネクション確立要求メッセージを受信した要求先は、コネクションを確立すると判定した場合に、要求送信周期を示すコネクション確立応答メッセージを送信することにより、アプリケーション170が共有メモリ領域180内のデータを更新するタイミングに対して、データ取得応答メッセージを送信するタイミングを一定に保つことができる。
【0094】
また、要求先が確立済のコネクションの情報に基づいて、新たに要求されたコネクションを確立するか否かを判定することにより、要求先が他ノードから受信するデータ取得要求メッセージの量を制限することができる。また、要求先がデータ取得要求メッセージの受信からデータ取得応答メッセージの送信までの応答処理を、予め定められた応答時間内に完了することができる。これにより、要求先のアプリケーション170が共有メモリ領域180内のデータを更新するタイミングに対して、データ取得要求メッセージを受信するタイミングを一定に保つことができる。また、応答時間をアプリケーション実行周期とすることにより、アプリケーション実行周期内に処理することができるデータ取得要求メッセージの量を制限することができる。
【0095】
図10は、データ取得要求メッセージの受信タイミングを示す。
【0096】
要求先がアプリケーション実行周期の終了直前にデータ取得要求メッセージを受信した場合など、データ取得要求メッセージの受信タイミングによっては、データ取得処理の途中でアプリケーション実行期間になってデータ取得処理が中断され、アプリケーション実行期間後にデータ取得処理が再開される可能性がある。このように、データ取得処理が次のアプリケーション実行周期に跨ると、対象データがアプリケーションにより更新される恐れがある。ここでは、データ取得処理が次のアプリケーション実行周期に跨る場合を検出するデータ取得処理について説明する。
【0097】
図11は、要求先におけるデータ取得処理のフローを示す。
【0098】
要求先であるノード100bのメッセージ解析/受信部162は、要求元であるノード100aからデータ取得要求メッセージを受信し(S850)、そのメッセージを解析した後(S852)、データ取得部164は処理部112等に含まれる時計を利用して現時刻を確認し、時刻Aとして記憶部111に保存する(S1000)。
【0099】
次に、データ取得部164は要求先の共有メモリ領域180より該当データを取得する(S854)。
【0100】
データ取得後、データ取得部164は、S1000と同様、現時刻を確認し、その時刻Bと時刻Aを比較する(S1010、S1020)。
【0101】
比較した結果、2つの時刻の差が、アプリケーション実行時間172より長い場合(S1020のYesの場合)、データ取得部164は、データ取得処理中にアプリケーション170の実行が行われたと判断し、エラーとして応答をノード100aへ送信し(S1030)、処理を前述のS750へ移行させる。
【0102】
比較した結果、2つの時刻の差が、アプリケーション実行時間172より短い場合(S1020のNoの場合)、データ取得部164は、データ取得処理が正常に行われたと判断し、取得したデータを応答として送信し(S1040)、処理を前述のS750へ移行させる。
【0103】
このデータ取得処理によれば、データ取得前と、データ取得後の時刻を確かめることにより、データ取得処理中にアプリケーションの実行が行われた否かを判断することが可能となる。
【0104】
なお、他ノードから要求メッセージにより要求される処理は、共有メモリ領域180に格納されたデータの送信だけでなく、そのデータを用いた演算とその演算結果の送信など、他の処理であっても良い。また、データ取得要求メッセージが、コネクション確立要求メッセージの代わりに用いられても良い。周期型要求メッセージにおいて、コネクション確立要求メッセージが、データ取得要求メッセージの代わりに用いられても良い。
【0105】
以上に説明したように、要求先のアプリケーション170が共有メモリ領域180内のデータを更新するタイミングと、データ取得要求メッセージを受信するタイミングとの順序が異なる場合に、要求元へエラーを送信することにより、要求元が誤ったデータを用いることを防ぐことができる。また、要求元は、或るアプリケーション実行周期内に要求したデータをその周期内に取得できると共に、取得されたデータがその周期内に更新されたデータであることを保証することができる。
【0106】
本発明の表現のための用語について説明する。制御装置として、ノード100b等が用いられても良い。他制御装置として、ノード100a等が用いられても良い。アプリケーション実行周期として、アプリケーション実行周期171等が用いられても良い。記憶部として、記憶部111等が用いられても良い。処理部として、処理部112等が用いられても良い。処理情報として、設定ファイル120等が用いられても良い。通信情報として、応答送信管理テーブル130及び要求送信管理テーブル140等が用いられても良い。通信及び第2通信として、コネクション等が用いられても良い。処理として、共有メモリ領域180に格納されたデータを取得する処理等が用いられても良い。判定情報として、コネクション確立応答メッセージ等が用いられても良い。通信要求メッセージ及び第2通信要求メッセージとして、コネクション確立要求メッセージ等が用いられても良い。処理要求メッセージ及び第2処理要求メッセージとして、データ取得要求メッセージ等が用いられても良い。処理応答メッセージとして、データ取得応答メッセージ等が用いられても良い。受信時間として、単位時間やアプリケーション実行周期等が用いられても良い。上限受信数として、上限受信パケットレート等が用いられても良い。受信数として、データ取得要求メッセージ数等が用いられても良い。上限応答処理数として、要求メッセージ処理レート等が用いられても良い。上限格納数として、バッファあふれ防止レート等が用いられても良い。動作期間として、アプリケーション実行期間等が用いられても良い。動作期間以外の期間として、アプリケーション待機時間等が用いられても良い。動作時間として、アプリケーション実行時間172等が用いられても良い。応答処理時間として、処理時間等が用いられても良い。要求送信周期及び第2要求送信周期として、要求送信周期142等が用いられても良い。応答送信周期として、応答送信周期134等が用いられても良い。
【0107】
以上、実施形態を具体的に説明したが、上記開示に限定されるものでなく、その趣旨を逸脱しない範囲において種々変更可能であることは言うまでもない。