(57)【要約】【課題】共有メモリを大容量化する。【解決手段】実施形態のコントローラは、通信インターフェースと、不揮発性の記憶部と、揮発性メモリと、生成部と、設定部と、伝送制御部と、を備える。通信インターフェースは、他のコントローラとネットワークを介して情報の送受信を行う。生成部は、他のコントローラと共有するメモリ空間が定義された仮想共有メモリ定義情報と、当該メモリ空間の所定領域毎に送信する周期と送信を行うコントローラとが示された送信設定情報と、を記憶部に生成する。設定部は、仮想共有メモリ定義情報に基づいて、共有するメモリ空間として、記憶部及び揮発性メモリを用いた仮想メモリを設定する。伝送制御部は、送信設定情報に基づいて、仮想メモリの所定領域毎に、当該所定領域に記憶された情報を、当該所定領域に対応付けられた周期に従って、通信インターフェースを介して他のコントローラとの間で伝送制御を行う。【選択図】図３
2019057097.tif 000002
【特許請求の範囲】
【請求項１】
他のコントローラとネットワークを介して情報の送受信を行う通信インターフェースと、
不揮発性の記憶部と、
揮発性メモリと、
前記他のコントローラと共有するメモリ空間が定義された仮想共有メモリ定義情報と、当該メモリ空間の所定領域毎に送信する周期と送信を行うコントローラとが示された送信設定情報と、を前記記憶部に生成する生成部と、
前記仮想共有メモリ定義情報に基づいて、前記共有するメモリ空間として、前記記憶部及び前記揮発性メモリを用いた仮想メモリを設定する設定部と、
前記送信設定情報に基づいて、前記仮想メモリの前記所定領域毎に、当該所定領域に記憶された情報を、当該所定領域に対応付けられた前記周期に従って、前記通信インターフェースを介して前記他のコントローラとの間で伝送制御を行う伝送制御部と、
を備えるコントローラ。
【請求項２】
前記記憶部は、複数のメモリ空間が定義された前記仮想共有メモリ定義情報を記憶し、
前記設定部は、前記仮想共有メモリ定義情報に基づいて、前記仮想メモリを複数設定する、
請求項１に記載のコントローラ。
【請求項３】
前記伝送制御部は、前記仮想メモリのうち、複数の前記所定領域の更新が開始されることを示す開始通知を、前記通信インターフェースを介して、前記他のコントローラに送信制御を行い、前記周期に従って、複数の前記所定領域の伝送制御を行った後、複数の前記所定領域の更新が終了したことを示す終了通知を、前記通信インターフェースを介して、前記他のコントローラに送信制御する、
請求項１又は２に記載のコントローラ。
【請求項４】
前記伝送制御部は、他のコントローラから前記開始通知を受信した場合に、前記開始通知に含まれる、複数の前記所定領域の各々が更新されたか否かを管理するための管理情報を生成し、当該管理情報に基づいて、複数の前記所定領域が更新されたか否かを管理する、
請求項３に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コントローラに関する。
【背景技術】
【０００２】
従来から、通信ネットワークに接続された複数のコントローラにおいて、所定の周期で情報の送受信を行うことで、複数のコントローラの各々が有するメモリ空間に共通するデータを格納することで、複数のコントローラが同一のメモリにアクセスするような機能を提供している。
【０００３】
近年、通信ネットワークに接続が必要なコントローラの数が増加している。コントローラの数が増加するに従って、コントローラに要求されるメモリ空間の大容量化も要求される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−２０７１７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術においては、要求に従ってコントローラのメモリ空間を大容量化するためには、多くの実メモリ（不揮発性メモリ）を搭載する必要があるため、単なるメモリ空間の大容量化は難しかった。さらに、大容量化されたメモリ空間に共通するデータを格納するためには、通信ネットワークの負荷が大きくなるという問題が生じる。
【課題を解決するための手段】
【０００６】
実施形態のコントローラは、通信インターフェースと、不揮発性の記憶部と、揮発性メモリと、生成部と、設定部と、伝送制御部と、を備える。通信インターフェースは、他のコントローラとネットワークを介して情報の送受信を行う。生成部は、他のコントローラと共有するメモリ空間が定義された仮想共有メモリ定義情報と、当該メモリ空間の所定領域毎に送信する周期と送信を行うコントローラとが示された送信設定情報と、を記憶部に生成する。設定部は、仮想共有メモリ定義情報に基づいて、共有するメモリ空間として、記憶部及び揮発性メモリを用いた仮想メモリを設定する。伝送制御部は、送信設定情報に基づいて、仮想メモリの所定領域毎に、当該所定領域に記憶された情報を、当該所定領域に対応付けられた周期に従って、通信インターフェースを介して他のコントローラとの間で伝送制御を行う。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態による通信システムにおいて各コントローラが備える仮想共有メモリを説明した図である。
【図２】図２は、第１の実施形態によるコントローラノードのハードウェア構成を例示した図である。
【図３】図３は、第１の実施形態によるコントローラノードのブロック構成を例示した図である。
【図４】図４は、第１の実施形態による仮想共有メモリ定義パラメータを例示した図である。
【図５】図５は、第１の実施形態による周期設定パラメータを例示した図である。
【図６】図６は、第１の実施形態による周期送信設定パラメータを例示した図である。
【図７】図７は、第１の実施形態による生成部により生成された仮想共有メモリを例示した図である。
【図８】図８は、第１の実施形態の周期伝送されるフレームフォーマットを例示した図である。
【図９】図９は、第１の実施形態のＰＣにおける、コントローラノードに対する仮想共有メモリの設定処理の手順を示すフローチャートである。
【図１０】図１０は、第１の実施形態のコントローラノードにおける、共有メモリに格納されているデータの等値化処理の手順を示すフローチャートである。
【図１１】図１１は、第２の実施形態のブロック同期送信開始通知のフレームフォーマットを例示した図である。
【図１２】図１２は、第２の実施形態の同期ブロック指定マップを例示した図である。
【図１３】図１３は、第２の実施形態のブロック同期送信終了通知のフレームフォーマットを例示した図である。
【図１４】図１４は、第２の実施形態の伝送制御部により生成されるブロック同期受信管理情報を例示した図である。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら実施形態に係るコントローラについて説明する。本実施形態にかかるコントローラは、コントローラノードとして示される。コントローラノードは、通信ネットワークを介して接続された他のコントローラノードとの間でデータを送受信することで、共有メモリを備えることとなる。なお、以下、複数の実施形態を説明するが、先に説明した実施形態等の構成要素と略同一の機能の構成要素には同一の符号を付けて、重複した説明を省略する。
【０００９】
（第１の実施形態）
図１は、第１の実施形態による通信システム１において各コントローラが備える仮想共有メモリを説明した図である。
【００１０】
図１に示すように、実施形態による通信システム１は、複数のコントローラノード１００（コントローラノード１００の各々は第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎと称する）と、ＰＣ１５０と、を備える。そして、複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）と、ＰＣ１５０と、は、通信ネットワーク１８０を介して接続されている。
【００１１】
複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）は、通信ネットワーク１８０を介して、他のコントローラノード１００やＰＣ１５０と通信を行う。複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）は、通信システム１において、一意となるノード番号が設定されている。
【００１２】
また、複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）は、通信システム１の通信ネットワーク１８０への参入／離脱を制御するための（図示しない）ネットワーク制御機能や、ネットワーク内のノード間で送信の順番を制御する（図示しない）送信制御機能と、を備えている。
【００１３】
ＰＣ１５０は、通信Ｉ／Ｆ１５１と、アプリケーション制御部１５２と、共有メモリ設定部１５３と、を備える。さらに、ＰＣ１５０は、複数のコントローラノード１００に対してアプリケーションのダウンロード制御を行うと共に、複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）に対して、共有メモリを生成するための設定を行う。
【００１４】
通信Ｉ／Ｆ１５１は、通信ネットワーク１８０を介して、複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）との間で情報を送受信するためのインターフェースとする。
【００１５】
アプリケーション制御部１５２は、複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）にダウンロードするアプリケーションに関する制御を行う。
【００１６】
例えば、アプリケーション制御部１５２は、複数のコントローラノード１００にダウンロードさせるアプリケーションが読み込み又は書き込みを行う、仮想共有メモリのブロックを設定する。これにより、仮想共有メモリにおいてブロック単位で書き込まれるデータを定めることができる。また、アプリケーション制御部１５２は、通信Ｉ／Ｆ１５１を介して、当該アプリケーションを、複数のコントローラノード１００にダウンロードする制御も行う。
【００１７】
本実施形態は、データの読み込み、書き込み、及び伝送制御を、仮想共有メモリのブロック単位で行う例について説明するが、仮想共有メモリのブロック単位に制限するものではなく、所定領域単位であれば良い。
【００１８】
共有メモリ設定部１５３は、アプリケーション制御部１５２により設定されたアプリケーションが読み込み又は書き込みを行う共有メモリに応じて、各コントローラノード１００の仮想共有メモリに関する設定を行う。具体的には、共有メモリ設定部１５３は、仮想共有メモリの生成に必要な情報（例えば仮想共有メモリ番号、ブロックサイズ、ブロック個数）を設定し、仮想共有メモリ定義パラメータとして生成する。さらに、共有メモリ設定部１５３は、仮想共有メモリのブロック毎に、伝送周期や、当該ブロックの情報を送信するコントローラノード１００を設定し、周期送信設定パラメータを生成する。なお、仮想共有メモリ定義パラメータ、及び周期送信設定パラメータは後述する。
【００１９】
そして、共有メモリ設定部１５３は、生成した仮想共有メモリ定義パラメータ及び周期送信設定パラメータを、通信Ｉ／Ｆ１５１を介して、複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）の各々に送信する。
【００２０】
そして、複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）は、通信Ｉ／Ｆ１０１を介して、ＰＣ１５０から、仮想共有メモリ定義パラメータ及び周期送信設定パラメータを受信する。
【００２１】
そして、複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）の各々は、仮想共有メモリ定義パラメータに従って、仮想共有メモリを設定する。
【００２２】
図１に示される例では、第１の仮想共有メモリ、第２の仮想共有メモリ、…、第Ｘの仮想共有メモリが、仮想共有メモリ定義パラメータに従って設定されたものとする。そして、複数のコントローラノード１００（第１のコントローラノード１００＿１〜第Ｎのコントローラノード１００＿Ｎ）の各々は、第１の仮想共有メモリ、第２の仮想共有メモリ、…、第Ｘの仮想共有メモリのブロック毎に、当該ブロックに格納されたデータを、周期送信設定パラメータに従って周期伝送する。これにより、各コントローラノード１００の仮想共有メモリに格納されたデータの等値化を実現できる。
【００２３】
図１に示される例では、第１の仮想共有メモリのブロックｋ１、第２の仮想共有メモリのブロックｋ２、及び第３の仮想共有メモリのブロックｋ３に格納されたデータが、周期伝送（伝送制御）により等値化されたことを示している。
【００２４】
ところで、近年においては、通信システムと接続するコントローラノードの数が増加する傾向にあるため、共有メモリも大容量化が要求される。しかしながら、要求に基づいてＲＡＭ等の揮発性メモリ（実メモリ）を大容量化するのは難しい。そこで、本実施形態においては、ＲＡＭ等の揮発性メモリ（実メモリ）と、ＨＤＤ等の不揮発性メモリと、を組み合わせた仮想メモリを用いて共有メモリの大容量化を図ることとした。
【００２５】
図２は、コントローラノード１００のハードウェア構成を例示した図である。図２に示されるように、コントローラノード１００は、通信Ｉ／Ｆ１０１と、Ｉ／Ｏインターフェース２０１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０２と、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）２０３と、プロセッサ２０４と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０５と、を備えている。
【００２６】
通信Ｉ／Ｆ１０１は、通信ネットワーク１８０と接続するためのインターフェースとする。
【００２７】
Ｉ／Ｏインターフェース２０１は、コントローラノード１００が制御／監視対象となる制御・監視機器２５０と接続するためのインターフェースとする。当該制御・監視機器２５０としては、例えばプラントに設けられた機器等が考えられる。そして、本実施形態のコントローラノード１００は、当該制御・監視機器２５０との間で信号の送受信を行う。
【００２８】
ＲＡＭ２０２は、ＨＤＤ２０３より高速に読み書き可能な揮発性メモリであって、コントローラノード１００が、作業領域として用いるほかに、仮想共有メモリの一部としても用いられる。
【００２９】
ＨＤＤ２０３は、情報を読み書き可能な不揮発性の記憶部であって、アプリケーション等が格納される他に、仮想共有メモリの一部としても用いられる。
【００３０】
プロセッサ２０４は、コントローラノード１００全体を制御する制御部として機能する。プロセッサ２０４は、ＲＯＭ２０５からプログラムを読み出して実行した結果をＲＡＭ２０２上に展開することで、各構成が実現される。
【００３１】
図３は、コントローラノード１００のブロック構成を例示した図である。図３に示されるように、ＨＤＤ２０３には、パラメータ記憶領域（記憶部）３１１が設けられている。本実施形態は、パラメータ記憶領域３１１をＨＤＤ２０３に備える例について説明するが、パラメータ記憶領域（記憶部）３１１をＨＤＤ２０３とは、別の構成として設けても良い。
【００３２】
パラメータ記憶領域３１１は、仮想共有メモリ定義パラメータ（仮想共有メモリ定義情報）と、周期設定パラメータと、周期送信設定パラメータ（送信設定情報）と、を記憶する。
【００３３】
図４は、仮想共有メモリ定義パラメータを例示した図である。仮想共有メモリ定義パラメータは、ＰＣ１５０から受信したパラメータであって、複数のコントローラノード１００で共通したパラメータとする。図４に示されるように、仮想共有メモリ定義パラメータは、仮想共有メモリ番号と、ブロックサイズと、ブロック個数と、を対応付けて記憶している。仮想共有メモリ番号は、仮想共有メモリを識別するための情報とする。ブロックサイズは、仮想共有メモリで生成される１ブロック当たりのサイズを示している。ブロック個数は、仮想共有メモリに設けられるブロックの個数を示している。
【００３４】
本実施形態においては、仮想共有メモリ番号を複数設定することで、複数の仮想メモリ空間を定義することができる。
【００３５】
図５は、周期設定パラメータを例示した図である。図５に示されるように、周期設定パラメータは、送信周期番号と、周期と、を対応付けて記憶している。送信周期番号は、周期送信設定パラメータに設定される送信周期を示している。周期は、送信周期番号に対応する実時間における周期を示している。周期設定パラメータは、予めコントローラノード１００に記憶されていても良いし、ＰＣ１５０から送信されても良い。
【００３６】
図６は、周期送信設定パラメータを例示した図である。周期送信設定パラメータは、ＰＣ１５０から受信したパラメータであって、複数のコントローラノード１００で共通したパラメータとする。図６に示されるように、周期送信設定パラメータは、仮想共有メモリ番号と、ブロック番号と、送信周期番号と、送信ノード番号と、対応付けて記憶している。図６に示される例では、仮想共有メモリ番号、及びブロック番号で識別されるブロック毎に、送信周期番号と、送信ノード番号と、が対応付けられている。送信周期番号には、周期設定パラメータの“送信周期番号”が示されている。周期設定パラメータを参照することで、実時間による送信周期を取得できる。送信ノード番号は、当該ブロックを送信するコントローラノード１００を示している。換言すれば、送信ノード番号で示されたコントローラノード１００が、当該ブロックに対して書き込みが許可されており、当該コントローラノード１００が当該ブロックに書き込んだデータを送信することを示している。
【００３７】
図３に戻り、ＲＯＭ２０５に格納されたプログラムをプロセッサ２０４が実行することで、ソフトウェア構成３００を実現する。本実施形態においては、ソフトウェア構成３００として、制御部３０１と、アプリケーション３０５と、を備えている。
【００３８】
アプリケーション３０５は、ＰＣ１５０からダウンロードされたアプリケーションであって、Ｉ／Ｏインターフェース２０１を介して、制御・監視機器２５０の制御又は監視を行うアプリケーションとする。また、アプリケーション３０５は、ＰＣ１５０により行われた設定に従って、仮想共有メモリに対してデータの読み込み及び書き込みを行う。
【００３９】
制御部３０１は、生成部３０４と、設定部３０２と、伝送制御部３０３と、を備え、コントローラノード１００全体の制御を行う。
【００４０】
生成部３０４は、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを、ＨＤＤ２０３のパラメータ記憶領域３１１に生成する。本実施形態の生成部３０４は、ＰＣ１５０から受信した、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを、ＨＤＤ２０３のパラメータ記憶領域３１１に記憶させることで、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを生成する。本実施形態は、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを生成するために、ＰＣ１５０から受信する例について説明するが、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータの生成手法を制限するものではない。また、本実施形態は、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを生成する例について説明するが、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを全て生成する手法に制限するものではない。例えば、仮想共有メモリ定義パラメータ、及び周期設定送信パラメータを生成し、周期設定パラメータを予め記憶していても良い。
【００４１】
設定部３０２は、仮想共有メモリ定義パラメータに基づいて、共有するメモリ空間として、ＨＤＤ２０３及びＲＡＭ２０２を用いた仮想メモリ空間を設定する。本実施形態の設定部３０２は、仮想共有メモリ定義パラメータに仮想共有メモリ番号が複数設定されている場合に、仮想共有メモリを複数設定する。
【００４２】
例えば、設定部３０２は、仮想共有メモリ定義パラメータに登録されている仮想共有メモリ番号毎に、ブロックサイズ×ブロック数の領域を、仮想共有メモリとして設定（確保）する。設定（確保）する手法は、どのような手法を用いても良く、例えばmalloc関数を用いることが考えられる。
【００４３】
図７は、設定部３０２により設定された仮想共有メモリを例示した図である。図７に示された仮想共有メモリ３１０は、図４に示される仮想共有メモリ定義パラメータに従って、Ｘ個の仮想共有メモリが設定されたものとする。設定された仮想共有メモリは、ブロックサイズ毎に分割され、分割されたブロック毎に、先頭ブロックから順番にブロック番号が割り当てられている。そして、仮想共有メモリでは、図６に示される周期送信設定パラメータに従ってブロック単位で送信制御が行われる。
【００４４】
周期送信設定パラメータに示されるように、ブロック単位で送信周期番号が設定されている。送信周期番号に対応する周期は、周期設定パラメータに予め記憶されている。これにより、ブロック毎の送信周期（伝送周期）が設定される。また、ブロック毎に、送信ノード番号が設定されている。これにより、当該ブロックを送信するコントローラノード１００が特定できる。
【００４５】
図６及び図７で示される例では、仮想共有メモリ番号‘１’及びブロック番号‘１’の仮想共有メモリのブロックは、送信ノード番号‘１’で識別される第１のコントローラノード１００＿１が読み書き可能であって、第１のコントローラノード１００＿１が送信制御を行う。
【００４６】
他の例としては、仮想共有メモリ番号‘Ｘ’及びブロック番号‘１０２４００’の仮想共有メモリのブロックは、送信ノード番号‘Ｎ’で識別される第Ｎのコントローラノード１００＿Ｎが読み書き可能であって、第Ｎのコントローラノード１００＿Ｎが送信制御を行う。これにより、第１のコントローラノード１００＿１は、仮想共有メモリ番号‘Ｘ’及びブロック番号‘１０２４００’の仮想共有メモリのブロックの読み込みのみ可能となる。
【００４７】
伝送制御部３０３は、周期送信設定パラメータに基づいて、仮想共有メモリのブロック毎に、当該ブロックに記憶されたデータを、送信周期番号に対応する周期に従って、通信Ｉ／Ｆ１０１を介して、他のコントローラノード１００との間で伝送制御を行う。
【００４８】
本実施形態においては、通信ネットワーク１８０に参加しているいずれかのコントローラノード１００が、自ノードの送信タイミングとなった場合に、伝送制御部３０３は、周期送信設定パラメータにおいて、送信ノード番号が自ノードを示しているブロックについて、送信周期番号で示される周期毎に、仮想共有メモリ番号及びブロック番号で識別されるブロックの情報を、通信ネットワーク１８０に接続されている他のコントローラノード１００（自コントローラノードを除いた全てのコントローラノード）に対してブロードキャストする。
【００４９】
図８は、本実施形態の周期伝送されるフレームフォーマットを例示した図である。図８に示されるように、フレームフォーマットは、ヘッダ８０１と、仮想共有メモリ番号８０２と、ブロック番号８０３と、ブロックデータ８０４と、を備える。ブロックデータ８０４には、仮想共有メモリ番号８０２、及びブロック番号８０３で識別されるブロックのデータが格納される。
【００５０】
伝送制御部３０３が、図８で示されるフレームフォーマットに従ってデータを送信する。そして、他のコントローラノード１００の伝送制御部３０３は、当該データを受信した場合に、仮想共有メモリ番号８０２、ブロック番号８０３で識別されるブロックに、ブロックデータ８０４内のデータを書き込む。
【００５１】
そして、通信ネットワーク１８０に接続されている全てのコントローラノード１００が上述した処理を行うことで、通信ネットワーク１８０に接続されている全てのコントローラノード１００の共有メモリの等値化を実現できる。次に、本実施形態のＰＣ１５０における、コントローラノード１００に対する仮想共有メモリの設定処理について説明する。
【００５２】
図９は、本実施形態のＰＣ１５０における、コントローラノード１００に対する仮想共有メモリの設定処理の手順を示すフローチャートである。
【００５３】
まず、ＰＣ１５０の共有メモリ設定部１５３は、コントローラノード１００が仮想共有メモリを設定するための、仮想共有メモリの数、仮想共有メモリ毎のブロックサイズ、及び仮想共有メモリ毎のブロックの個数の入力を受け付ける（Ｓ９０１）。
【００５４】
そして、共有メモリ設定部１５３は、入力を受け付けた仮想共有メモリの数、仮想共有メモリ毎のブロックサイズ、及び仮想共有メモリ毎のブロックの個数に基づいて、仮想共有メモリ定義パラメータを生成する（Ｓ９０２）。
【００５５】
次に、アプリケーション制御部１５２が、コントローラノード１００毎に、コントローラノード１００にダウンロードする、アプリケーション３０５のデータの書き込み先及び読み込み先となる仮想共有メモリ番号及びブロック番号を設定する（Ｓ９０３）。
【００５６】
さらに、アプリケーション制御部１５２は、Ｓ９０３で設定される仮想共有メモリ番号及びブロック番号毎に、アプリケーション３０５が書き込むデータの種別に応じた伝送周期を示した伝送周期番号と、ブロックに書き込みを行うコントローラノード１００に応じた送信元番号と、を設定する（Ｓ９０４）。
【００５７】
そして、共有メモリ設定部１５３は、Ｓ９０３及びＳ９０４に基づいて、周期送信設定パラメータを生成する（Ｓ９０５）。
【００５８】
そして、ＰＣ１５０は、通信Ｉ／Ｆ１５１を介して、通信ネットワーク１８０に接続された全てのコントローラノード１００に対して、仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータとを送信する（Ｓ９０６）。周期設定パラメータは、予めＰＣ１５０の記憶部に格納されているデータとする。
【００５９】
上述した処理手順により、通信ネットワーク１８０に接続された全てのコントローラノード１００に、仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータを受信できる。これにより、全てのコントローラノード１００の生成部３０４が、受信した仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータとを、ＨＤＤ２０３のパラメータ記憶領域３１１に記憶（生成）できる。
【００６０】
図１０は、本実施形態のコントローラノード１００における、共有メモリに格納されているデータの等値化処理の手順を示すフローチャートである。
【００６１】
まず、生成部３０４が、ＰＣ１５０から受信した、仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータとを、ＨＤＤ２０３のパラメータ記憶領域３１１に記憶する（Ｓ１００１）。本実施形態は、ＰＣ１５０から受信した、仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータとを記憶させることで、これらのデータをパラメータ記憶領域３１１に生成する。なお、すでに、仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータとが、パラメータ記憶領域３１１に生成されている場合には、Ｓ１００１の処理を行わなくても良い。
【００６２】
まず、設定部３０２は、仮想共有メモリ定義パラメータに従って、ＨＤＤ２０３及びＲＡＭ２０２を用いて、仮想共有メモリを設定する（Ｓ１００２）。
【００６３】
次に、伝送制御部３０３は、周期送信設定パラメータに従って、送信ノード番号が自装置を示しているブロック毎に、当該ブロックに記憶されたデータを、送信周期番号で示された送信周期毎に送信する（Ｓ１００３）。
【００６４】
伝送制御部３０３は、他のコントローラノード１００から、図８で示される所定のフレームフォーマットに従ったデータを受信する（Ｓ１００４）。
【００６５】
そして、伝送制御部３０３は、受信したデータのうち、ブロックデータに格納されたデータを、仮想共有メモリ番号及びブロック番号で識別されるブロックに書き込む（Ｓ１００５）。その後、再びＳ１００３から処理を繰り返す。
【００６６】
上述した処理を行うことで、通信ネットワーク１８０に接続された全てのコントローラノード１００間で仮想共有メモリの等値化を実現できる。
【００６７】
従来、コントローラノード１００において、共有メモリを大容量化したいという要望があった。これに対して、本実施形態では、ＲＡＭ２０２とＨＤＤ２０３とを組み合わせた、仮想共有メモリを備えることとした。これにより、共有メモリの大容量化を実現している。
【００６８】
共有メモリを大容量化した場合、仮想共有メモリの等値化を実現するためには、通信ネットワーク１８０に接続された全てのコントローラノード１００でデータの送受信を行うが、通信負荷が大きくなる。そこで、本実施形態のコントローラノード１００は、送信するデータの種類に応じて送信周期を設定することとした。例えば、リアルタイム性が必要な制御情報等は送信周期を短くし、リアルタイム性が高くない画像データ等は送信周期を長く設定する。
【００６９】
このように、データの種類に応じた送信周期が設定されているので、通信ネットワーク１８０の負荷軽減が図れているため、大容量化された共有メモリによる等値化が可能となる。
【００７０】
（第２の実施形態）
第１の実施形態においては、コントローラノード１００間で共有メモリの等値化を実現する手法について説明した。しかしながら、関連する情報が複数のブロックに跨がっている場合、当該複数のブロック全てが更新されてから、当該複数のブロックについて読み込みを開始したいという要望がある。そこで、本実施形態においては、関連する情報が格納された複数のブロックの更新手法について説明する。なお、本実施形態は、第１の実施形態と同様の構成を備えているものとして、構成の説明を省略する。
【００７１】
本実施形態においては、第１のコントローラノード１００＿１の伝送制御部３０３が、仮想共有メモリのうち、関連する情報が格納される、複数のブロックが更新されることを示す開始通知を、通信Ｉ／Ｆ１０１を介して、他のコントローラノード１００に送信制御する。本実施形態では、当該開始通知を、ブロック同期送信開始通知と称する。関連する情報とは、例えば、更新前と更新後のブロックの情報が混在している場合に、異常と判別されるような情報が考えられる。つまり、他のコントローラノード１００に、複数のブロックの更新が完了するまで読み込みを制限したい場合に、当該通知を行うこととする。
【００７２】
これにより、他のコントローラノード１００は、ブロック同期送信開始通知を受信した場合に、ブロック同期送信開始通知で示された、更新対象である複数のブロックが更新されるまで、当該複数のブロックに対して読み込みを行わないよう制御する。
【００７３】
図１１は、ブロック同期送信開始通知のフレームフォーマットを例示した図である。図１１に示されるように、ブロック同期送信開始通知は、ヘッダ１１０１と、同期区分１１０２と、仮想共有メモリ番号１１０３と、同期ブロック指定マップ１１０４と、を備えている。
【００７４】
同期区分１１０２は、当該通知の区分を示した情報が格納される。ブロック同期送信開始通知の場合、同期区分には“開始”が格納される。仮想共有メモリ番号１１０３は、これから更新を行う複数のブロックが格納された共有メモリを示す仮想共有メモリ番号が格納される。同期ブロック指定マップ１１０４は、更新が行われるブロックを指定するマップが格納される。
【００７５】
図１２は、同期ブロック指定マップ１１０４を例示した図である。図１２に示される同期ブロック指定マップ１１０４の各枠は、“ブロック番号［‘０’又は‘１’］”を示している。つまり、ブロック毎に‘０’又は‘１’が設定されているものとする。‘０’は更新対象でないことを示し、‘１’は更新対象であることを示している。
【００７６】
図１２に示される例では、少なくとも、ブロック番号３１〜４０、１０２３９２〜１０２３９５で示されるブロックが更新対象となることを示している。
【００７７】
その後、伝送制御部３０３は、第１の実施形態と同様に、周期送信設定パラメータに従って、送信ノード番号が自装置を示しているブロック毎に、当該ブロックのデータを、送信周期番号で示された送信周期毎に送信する。
【００７８】
そして、伝送制御部３０３は、仮想共有メモリのうち、関連する情報が格納される、複数のブロックの更新、換言すれば、当該複数のブロックの送信制御が終了した場合に、複数のブロックの更新が終了したことを示す終了通知を、通信Ｉ／Ｆ１０１を介して、他のコントローラノード１００に送信制御する。本実施形態では、当該終了通知を、ブロック同期送信終了通知と称する。
【００７９】
図１３は、ブロック同期送信終了通知のフレームフォーマットを例示した図である。図１３に示されるように、ブロック同期送信終了通知は、ヘッダ１３０１と、同期区分１３０２と、仮想共有メモリ番号１３０３と、同期ブロック指定マップ１３０４と、を備えている。同期区分は、当該通知の区分を示した情報が格納される。ブロック同期送信終了通知の場合、同期区分には“終了”が格納される。
【００８０】
本実施形態においては、関連する情報の複数の更新が行われている場合であっても、フレームフォーマットに、仮想共有メモリ番号１３０３と、同期ブロック指定マップ１３０４と、を含めることで、いずれの関連する情報の更新が終了したのか特定できる。
【００８１】
次に、ブロック同期送信開始通知、及びブロック同期送信終了通知の受信側のコントローラノード１００について説明する。
【００８２】
コントローラノード１００の伝送制御部３０３は、他のコントローラノード１００から、ブロック同期送信開始通知を受信した場合に、更新対象となるブロックを管理するためのブロック同期受信管理情報を生成する。
【００８３】
図１４は、本実施形態の伝送制御部３０３により生成されるブロック同期受信管理情報を例示した図である。図１４に示されるブロック同期受信管理情報は、同期区分１４０１と、仮想共有メモリ番号１４０２と、同期ブロック指定マップ１４０３と、同期ブロック受信マップ１４０４と、が対応付けて格納されている。同期区分１４０１には、当該伝送制御部３０３が受信した通知の種類を示している。例えば、当該伝送制御部３０３がブロック同期送信開始通知を受信した場合には“開始”が格納され、当該伝送制御部３０３がブロック同期送信終了通知を受信した場合には“終了”が格納される。
【００８４】
仮想共有メモリ番号１４０２には、ブロック同期送信開始通知に格納されていた仮想共有メモリ番号が設定される。同期ブロック指定マップ１４０３には、ブロック同期送信開始通知に格納されていた同期ブロック指定マップ１１０４が格納される。
【００８５】
同期ブロック受信マップ１４０４は、ブロックの更新（受信）が終了したか否かを保持するマップとする。同期ブロック受信マップ１４０４は、初期状態では、ブロック同期送信開始通知に格納されていた同期ブロック指定マップ１１０４が格納される。換言すれば、同期ブロック受信マップ１４０４は、初期状態では、同期ブロック指定マップ１４０３と同じ情報が格納される。同期ブロック受信マップ１４０４では、更新対象となっているブロックを“オン”とし、更新対象となっていないブロックを“オフ”とする。
【００８６】
そして、伝送制御部３０３は、仮想共有メモリのブロックの情報を受信する伝送制御が行われる毎に、ブロック同期受信管理情報の同期ブロック指定マップ１４０３を参照し、受信したブロックの情報が、更新対象であるか否かを判別する。そして、伝送制御部３０３は、更新対象のブロックと判別した場合に、同期ブロック受信マップ１４０４の該当ブロックを“オフ”に更新する。つまり、同期ブロック受信マップ１４０４が全て“オフ”になった場合に、更新対象のブロックが全て更新されたことになる。
【００８７】
そして、伝送制御部３０３は、ブロック同期送信終了通知を受信した際に、同期ブロック受信マップ１４０４が全て“オフ”か否かを判別する。全て“オフ”と判別した場合には、伝送制御部３０３は、更新対象のブロックが全て更新されたものとする。そして、伝送制御部３０３は、同期区分１４０１を“終了”に更新する。
【００８８】
そして、伝送制御部３０３は、コントローラノード１００内のアプリケーション等に更新完了した旨の通知を行うと共に、更新が行われた複数のブロックの読み込みを、アプリケーション３０５に対して許可する。その後、伝送制御部３０３は、ブロック同期受信管理情報を開放する。
【００８９】
一方、伝送制御部３０３は、ブロック同期送信終了通知を受信した際に、同期ブロック受信マップ１４０４が全て“オフ”ではないと判別した場合には、伝送制御部３０３は、更新対象のブロックの受信に異常があったものとして、すでに更新済みのブロックのデータを無効とする制御（例えば、ロールバック制御）を行う。
【００９０】
本実施形態においては、上述した処理を行うことで、仮想共有メモリの複数のブロックに、関連するデータが格納された場合でも、関連するデータの整合性を確保できる。これにより仮想共有メモリの安全性の向上を図ることができる。
【００９１】
上述した実施形態においては、揮発性メモリと不揮発性メモリとを組み合わせて仮想共有メモリを生成した上で、仮想共有メモリについてブロック毎に定めた周期でデータを送信することで、共有メモリ領域の大容量化と通信負荷の軽減の両立を実現できる。
【００９２】
さらにブロック毎に周期を設定できるので、コントローラノード１００間で高速にアクセスが必要なブロックについては、高速なアクセスを実現できる。
【００９３】
また、仮想共有メモリを、仮想共有メモリ番号で管理することで、仮想共有メモリを複数備えることを可能としている。このように、仮想共有メモリを複数備えることで、連続性が必要な大きな容量のデータを、コントローラノード１００間で複数共有することができる。
【００９４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９５】
１…通信システム、１００（１００＿１〜１００＿Ｎ）…コントローラノード、１０１…通信Ｉ／Ｆ、１５２…アプリケーション制御部、１５３…共有メモリ設定部、１８０…通信ネットワーク、２０１…Ｉ／Ｏインターフェース、２０２…ＲＡＭ、２０３…ＨＤＤ、２０４…プロセッサ、２０５…ＲＯＭ、２５０…制御・監視機器、３００…ソフトウェア構成、３０１…制御部、３０２…設定部、３０３…伝送制御部、３０４…生成部、３０５…アプリケーション、３１１…パラメータ記憶領域。 
【図１】
2019057097.tif 000003
【図２】
2019057097.tif 000004
【図３】
2019057097.tif 000005
【図４】
2019057097.tif 000006
【図５】
2019057097.tif 000007
【図６】
2019057097.tif 000008
【図７】
2019057097.tif 000009
【図８】
2019057097.tif 000010
【図９】
2019057097.tif 000011
【図１０】
2019057097.tif 000012
【図１１】
2019057097.tif 000013
【図１２】
2019057097.tif 000014
【図１３】
2019057097.tif 000015
【図１４】
2019057097.tif 000016