(57)【特許請求の範囲】
【請求項１】
第１のＰＬＣシステムを動作させる第１のＰＬＣプログラムおよび第２のＰＬＣシステムを動作させる第２のＰＬＣプログラムを記憶する記憶部と、
前記第１のＰＬＣシステムおよび前記第２のＰＬＣシステムを備えたネットワークシステムの構成を模擬した仮想ネットワークシステムを構築し、前記仮想ネットワークシステム、前記第１のＰＬＣプログラムおよび前記第２のＰＬＣプログラムを用いて前記ネットワークシステムの動作を模擬するシミュレーション部と、
を備え、
前記仮想ネットワークシステムは、前記第１のＰＬＣシステムの動作を模擬する第１の仮想ＰＬＣシステムおよび前記第２のＰＬＣシステムの動作を模擬する第２の仮想ＰＬＣシステムを含み、
前記シミュレーション部は、前記第１の仮想ＰＬＣシステム内で第１の周期で第１の時刻同期を実行させるとともに、前記第２の仮想ＰＬＣシステム内で前記第１の周期で第２の時刻同期を実行させ、前記第１の時刻同期によって設定された第１の時刻と、前記第２の時刻同期によって設定された第２の時刻と、を第２の周期で同期させながら、前記第１の仮想ＰＬＣシステムに前記第１のＰＬＣプログラムを実行させ且つ前記第２の仮想ＰＬＣシステムに前記第２のＰＬＣプログラムを実行させる、
ことを特徴とするシミュレーション装置。
【請求項２】
前記第１のＰＬＣシステムは、
制御対象の第１の装置を制御する第１のＰＬＣと、
前記第２のＰＬＣシステムとの間でデータ通信を行なう第１の通信ユニットと、
を含み、
前記第２のＰＬＣシステムは、
制御対象の第２の装置を制御する第２のＰＬＣと、
前記第１のＰＬＣシステムとの間でデータ通信を行なう第２の通信ユニットと、
を含み、
前記第１の仮想ＰＬＣシステムは、
前記第１のＰＬＣの動作を模擬した第１の仮想ＰＬＣと、
前記第１の通信ユニットの動作を模擬した第１の仮想通信ユニットと、
を含み、
前記第２の仮想ＰＬＣシステムは、
前記第２のＰＬＣの動作を模擬した第２の仮想ＰＬＣと、
前記第２の通信ユニットの動作を模擬した第２の仮想通信ユニットと、
を含み、
前記シミュレーション部は、前記第１の仮想ＰＬＣシステム内で前記第１のＰＬＣと前記第１の通信ユニットとの間で前記第１の時刻同期を実行させるとともに、前記第２の仮想ＰＬＣシステム内で前記第２のＰＬＣと前記第２の通信ユニットとの間で前記第２の時刻同期を実行させる、
ことを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
前記シミュレーション部は、前記第１の通信ユニットと前記第２の通信ユニットとの間で、前記第１の時刻と前記第２の時刻とを同期させることを特徴とする請求項２に記載のシミュレーション装置。
【請求項４】
前記第１の仮想通信ユニットは、前記第１の仮想ＰＬＣ内で生成されたデータを格納する仮想記憶部を有し、
前記シミュレーション部は、
前記第１の仮想通信ユニットおよび前記第２の仮想通信ユニットが接続されているネットワーク内で前記第１の仮想通信ユニットを識別する第１の識別情報と、
前記第１の仮想ＰＬＣシステムを識別する第２の識別情報と、
前記第１の仮想ＰＬＣシステム内で前記第１の仮想通信ユニットを識別する第３の識別情報と、
前記仮想記憶部内のデータ格納領域を示すアドレスと、
に基づいて、前記第２の仮想ＰＬＣシステムに、前記第１の仮想ＰＬＣシステム内のデータを読み出させる、
ことを特徴とする請求項３に記載のシミュレーション装置。
【請求項５】
前記記憶部は、前記ネットワークシステムの構成を示す構成情報をさらに記憶し、
前記シミュレーション部は、前記構成情報に基づいて前記仮想ネットワークシステムを構築する、
ことを特徴とする請求項１から４のいずれか１つに記載のシミュレーション装置。
【請求項６】
前記シミュレーション部は、
前記第１のＰＬＣプログラムの実行状況に沿って前記第１の時刻を進行させ、前記第２のＰＬＣプログラムの実行状況に沿って前記第２の時刻を進行させる、
ことを特徴とする請求項１から５のいずれか１つに記載のシミュレーション装置。
【請求項７】
第１のＰＬＣシステムおよび第２のＰＬＣシステムを備えたネットワークシステムの構成を模擬した仮想ネットワークシステムを構築する構築ステップと、
前記第１のＰＬＣシステムを動作させる第１のＰＬＣプログラムと、前記第２のＰＬＣシステムを動作させる第２のＰＬＣプログラムと、前記仮想ネットワークシステムとを用いて前記ネットワークシステムの動作を模擬する模擬ステップと、
を含み、
前記仮想ネットワークシステムは、前記第１のＰＬＣシステムの動作を模擬する第１の仮想ＰＬＣシステムおよび前記第２のＰＬＣシステムの動作を模擬する第２の仮想ＰＬＣシステムを含み、
前記模擬ステップでは、前記第１の仮想ＰＬＣシステム内で第１の周期で第１の時刻同期を実行させるとともに、前記第２の仮想ＰＬＣシステム内で前記第１の周期で第２の時刻同期を実行させ、前記第１の時刻同期によって設定された第１の時刻と、前記第２の時刻同期によって設定された第２の時刻と、を第２の周期で同期させながら、前記第１の仮想ＰＬＣシステムに前記第１のＰＬＣプログラムを実行させ且つ前記第２の仮想ＰＬＣシステムに前記第２のＰＬＣプログラムを実行させる、
ことを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラを備えたネットワークシステムのシミュレーションを実行するシミュレーション装置およびシミュレーション方法に関する。
【背景技術】
【０００２】
工場の生産工程の自動化を図るＦＡ（Factory  Automation）の分野では、プログラマブルロジックコントローラ（ＰＬＣ：Programmable  Logic  Controller）を用いた自動制御機器が利用されている。このようなＦＡの分野では、ＦＡシステム内にＰＬＣが配置されることによって、ＦＡシステムが構築される。このため、大規模なＦＡシステムが構築される際には、複数のＰＬＣがネットワークで接続されることとなる。【０００３】
ネットワークを用いてＰＬＣシステムが接続される場合、ネットワークに接続するためのネットワークユニットが用いられる。このネットワークユニットには、通信プロトコルまたはネットワーク構成に適した様々な種類のものがあるので、ユーザは、構築するＦＡシステムに適切なネットワークユニットを選択して用いることができる。【０００４】
ＰＬＣシステムが構築される際には、ＰＬＣが実行するＰＬＣプログラムの動作を確認するためにシミュレーションが実行される。このシミュレーションでは、実機のＰＬＣの動作を模擬する仮想ＰＬＣがコンピュータ上に構築され、仮想ＰＬＣの動作が所望のものとなるか否かが確認される。これにより、ＰＬＣシステム自体を構築すること無く、ＰＬＣプログラムの不具合を修正することができるので、ＦＡシステムを構築するコストを低減することが可能となる。【０００５】
特許文献１に記載のシミュレーション方法では、１台のＰＣ（Personal  Computer）が１つの仮想ＰＬＣを動作させ、ＰＣ用ネットワークを用いて、仮想ＰＬＣ同士のネットワーク上での動作を模擬して検証している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１６２３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来の技術である特許文献１では、ネットワーク接続されているＰＬＣ毎にＰＬＣの動作を模擬するＰＣが必要となる。このため、大規模なＰＬＣネットワークを検証する場合、高いコストをかけて複雑な検証環境を構築する必要があった。【０００８】
本発明は、上記に鑑みてなされたものであって、プログラマブルロジックコントローラを備えたネットワークシステムのシミュレーションを簡易な構成で実行することができるシミュレーション装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、シミュレーション装置において、第１のＰＬＣシステムを動作させる第１のＰＬＣプログラムおよび第２のＰＬＣシステムを動作させる第２のＰＬＣプログラムを記憶する記憶部と、第１のＰＬＣシステムおよび第２のＰＬＣシステムを備えたネットワークシステムの構成を模擬した仮想ネットワークシステムを構築し、仮想ネットワークシステム、第１のＰＬＣプログラムおよび第２のＰＬＣプログラムを用いてネットワークシステムの動作を模擬するシミュレーション部と、を備える。また、本発明のシミュレーション装置は、仮想ネットワークシステムが、第１のＰＬＣシステムの動作を模擬する第１の仮想ＰＬＣシステムおよび第２のＰＬＣシステムの動作を模擬する第２の仮想ＰＬＣシステムを含む。また、本発明のシミュレーション装置は、シミュレーション部が、第１の仮想ＰＬＣシステム内で第１の周期で第１の時刻同期を実行させるとともに、第２の仮想ＰＬＣシステム内で第１の周期で第２の時刻同期を実行させ、第１の時刻同期によって設定された第１の時刻と、第２の時刻同期によって設定された第２の時刻と、を第２の周期で同期させながら、第１の仮想ＰＬＣシステムに第１のＰＬＣプログラムを実行させ且つ第２の仮想ＰＬＣシステムに第２のＰＬＣプログラムを実行させる。
【発明の効果】
【００１０】
本発明にかかるシミュレーション装置は、プログラマブルロジックコントローラを備えたネットワークシステムのシミュレーションを簡易な構成で実行することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態にかかるシミュレーション装置の構成を示す図
【図２】実施の形態にかかる仮想ネットワークシステムの接続構成を説明するための図
【図３】実施の形態にかかる仮想ネットワークシステムの構成を示す図
【図４】実施の形態にかかるシステム設定データの構成例を示す図
【図５】実施の形態にかかるＮＷＵ設定データの構成例を示す図
【図６】実施の形態にかかる第１の組情報の構成例を示す図
【図７】実施の形態にかかる第２の組情報の構成例を示す図
【図８】実施の形態にかかる仮想ネットワークシステムの動作処理手順を示すフローチャート
【図９】実施の形態にかかるバッファメモリの構成例を示す図
【図１０】実施の形態にかかるシミュレーション装置のハードウェア構成例を示す図
【発明を実施するための形態】
【００１２】
以下に、本発明の実施の形態にかかるシミュレーション装置およびシミュレーション方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態．
図１は、本発明の実施の形態にかかるシミュレーション装置の構成を示す図である。シミュレーション装置５０は、複数のＰＬＣシステムを備えたネットワークシステムのシミュレーションを実行するコンピュータである。シミュレーション装置５０は、仮想的なネットワークシステム内に配置された仮想的なＰＬＣシステムを、シミュレーションである模擬動作させることによって、実際のネットワークシステムの動作を検証する。ネットワークシステムの一例は、ＦＡシステムである。
【００１４】
ＰＬＣシステムは、ＰＬＣシステムの全体を制御するＰＬＣと、ＰＬＣシステムに電源供給を行う電源ユニットと、生産装置または設備装置に取り付けられたスイッチまたはセンサの信号を受付ける入力ユニットと、アクチュエータといった外部装置に制御指示を出力する出力ユニットと、ネットワークに接続するための通信ユニットであるネットワークユニットと、複数のユニットが装着されるベースユニットと、を備えている。ＰＬＣシステムでは、ＰＬＣと、電源ユニットと、入力ユニットと、出力ユニットと、ネットワークユニットと、がベースユニットに接続されている。なお、ＰＬＣは、ＰＬＣユニットとも呼ばれる。
【００１５】
ＰＬＣシステムは、ネットワークユニットを介して他のＰＬＣシステムに接続されている。具体的には、ＰＬＣシステムのネットワークユニットと、他のＰＬＣシステムのネットワークユニットとが接続されている。
【００１６】
各ＰＬＣシステムは、ネットワークユニットを介して他のＰＬＣシステムからデータを読み出す。このように、ネットワークシステムは、ＰＬＣシステム間でデータ通信を実行しながら、各ＰＬＣシステムを動作させる。
【００１７】
各ＰＬＣシステムは、入力ユニットまたはネットワークユニットがデータを受付けると、受付けたデータに対応する制御指示をＰＬＣが生成し、生成された制御指示を出力ユニットが外部装置に出力する。これにより、各ＰＬＣシステムは、ＰＬＣシステム間でデータを送受信しながらアクチュエータといった外部装置を制御する。
【００１８】
実施の形態では、シミュレーション装置５０が、仮想的なネットワークシステムである仮想ネットワークシステムをシミュレーション装置５０内に構築し、この仮想ネットワークシステムを模擬動作させる。仮想ネットワークシステムは、ＰＬＣシステムを備えたネットワークシステムの構成を模擬したシステムである。仮想ネットワークシステムは、仮想的なＰＬＣシステムである仮想ＰＬＣシステムを複数有しており、各仮想ＰＬＣシステムは、仮想的なＰＬＣである仮想ＰＬＣと、仮想的なネットワークユニット（ＮＷＵ：NetWork  Unit）である仮想ＮＷＵとを備えている。
【００１９】
図２は、実施の形態にかかる仮想ネットワークシステムの接続構成を説明するための図である。ここでは、仮想ネットワークシステム１Ｘに配置される仮想ＰＬＣシステムが仮想ＰＬＣシステム１０Ｐ，１０Ｑ，１０Ｒ，１０Ｓの４つである場合について説明する。仮想ネットワークシステム１Ｘは、後述する仮想ネットワークシステム１の一例である。したがって、ここでの仮想ＰＬＣシステム１０Ｐ，１０Ｑ，１０Ｒ，１０Ｓは、後述する仮想ＰＬＣシステム１０Ａ，１０Ｂと同様の機能を有している。
【００２０】
仮想ＰＬＣシステム１０Ｐは、仮想ＰＬＣ２０Ｐと、仮想ＮＷＵ３０Ｐ−１と、仮想ＮＷＵ３０Ｐ−２と、を備えている。また、仮想ＰＬＣシステム１０Ｑは、仮想ＰＬＣ２０Ｑと、仮想ＮＷＵ３０Ｑとを備えており、仮想ＰＬＣシステム１０Ｒは、仮想ＰＬＣ２０Ｒと、仮想ＮＷＵ３０Ｒとを備えており、仮想ＰＬＣシステム１０Ｓは、仮想ＰＬＣ２０Ｓと、仮想ＮＷＵ３０Ｓとを備えている。
【００２１】
そして、仮想ＮＷＵ３０Ｐ−２は、仮想ＰＬＣシステム１０Ｐとは異なる別の仮想ＰＬＣシステム１０Ｑが備える仮想ＮＷＵ３０Ｑに接続されている。また、仮想ＮＷＵ３０Ｐ−２は、仮想ＰＬＣシステム１０Ｐ，１０Ｑとは異なる別の仮想ＰＬＣシステム１０Ｒが備える仮想ＮＷＵ３０Ｒに接続されている。また、仮想ＮＷＵ３０Ｐ−１は、仮想ＰＬＣシステム１０Ｐ，１０Ｑ，１０Ｒとは異なる別の仮想ＰＬＣシステム１０Ｓが備える仮想ＮＷＵ３０Ｓに接続されている。このように、仮想ネットワークシステム１Ｘは、仮想ＰＬＣシステム１０Ｐが、複数の仮想ＮＷＵである仮想ＮＷＵ３０Ｐ−１，３０Ｐ−２を備えている。そして、仮想ＮＷＵ３０Ｐ−１と仮想ＮＷＵ３０Ｐ−２とは、異なるネットワークの異なる仮想ＮＷＵに接続されている。
【００２２】
実施の形態のシミュレーション装置５０は、仮想ネットワークシステム内で、仮想ＰＬＣシステム間の時刻同期を実行しながら各仮想ＰＬＣシステムを模擬動作させることによって、実際のネットワークシステムの動作を検証する。具体的には、シミュレーション装置５０は、仮想ＰＬＣシステム間での時刻同期と、仮想ＰＬＣシステム間でのデータ通信と、各仮想ＰＬＣシステムでのＰＬＣプログラムを用いた動作とを実行する。これにより、シミュレーション装置５０は、実際のネットワークシステムの振る舞いを模擬的に確認することができる。
【００２３】
シミュレーション装置５０は、シミュレーションを実行する際に用いられる種々のデータを外部装置から受付ける入力部５１を備えている。また、シミュレーション装置５０は、種々のデータを記憶しておく記憶部５２を備えている。記憶部５２が記憶するデータの例は、ＰＬＣ設定データ、シミュレーションプログラム、ＰＬＣプログラム、および構成情報である。
【００２４】
ＰＬＣプログラムは、ＰＬＣが動作する際に用いられるプログラムである。構成情報は、ネットワークシステムの構成を示す情報であり、仮想ネットワークシステムを構築する際に用いられる。構成情報には、ネットワークシステムに配置される構成要素のリストと、構成要素間の接続関係、各構成要素の機能といった、構成要素の情報が含まれている。また、ＰＬＣ設定データは、ＰＬＣが動作する際に用いられるデータである。ＰＬＣ設定データは、ＰＬＣが動作する際の動作条件といった種々の情報を含んでいる。シミュレーションプログラムは、ＰＬＣを仮想的に動作せるための仮想ＰＬＣシステムをシミュレーション装置５０内に構築し、仮想ＰＬＣシステムを用いてＰＬＣのシミュレーションを実行するプログラムである。シミュレーションプログラムは、構成情報を用いて仮想ネットワークシステムを構築し、構築した仮想ネットワークシステム、ＰＬＣ設定データおよびＰＬＣプログラムを用いてシミュレーションを実行する。
【００２５】
また、シミュレーション装置５０は、仮想ネットワークシステムを構築し、仮想ネットワークシステムを動作させることによってネットワークシステムの動作をシミュレーションするシミュレーション部５３を備えている。シミュレーション部５３は、シミュレーションプログラム、ＰＬＣ設定データおよびＰＬＣプログラムを用いて仮想ネットワークシステムを動作させる。換言すると、シミュレーション部５３は、シミュレーションプログラム、ＰＬＣ設定データおよびＰＬＣプログラムを用いて、ネットワークシステムのシミュレーションを実行する。また、シミュレーション装置５０は、シミュレーション結果を外部装置に出力する出力部５５を備えている。
【００２６】
このように、シミュレーション部５３は、種々のデータを用いて仮想ネットワークシステムを動作させる。仮想ネットワークシステムの動作が、実際のネットワークシステムの仮想的な動作である。したがって、仮想ＰＬＣシステムの動作が、実際のＰＬＣシステムの仮想的な動作である。
【００２７】
図３は、実施の形態にかかる仮想ネットワークシステムの構成を示す図である。図３では、シミュレーション装置５０が構築する仮想ネットワークシステム１の機能ブロック図を示している。なお、以下では、仮想ネットワークシステム１に配置される仮想ＰＬＣシステムが仮想ＰＬＣシステム１０Ａ，１０Ｂの２つである場合について説明するが、仮想ネットワークシステム１に配置される仮想ＰＬＣシステムは３つ以上であってもよい。なお、仮想ネットワークシステム１内における動作は、シミュレーション部５３が実行するものである。換言すると、シミュレーション部５３が、仮想ネットワークシステム１を用いてシミュレーションを実行する。
【００２８】
仮想ネットワークシステム１は、実際のネットワークシステムを模擬するシステムであり、実際のネットワークシステムと同様の動作を仮想的に実行する。仮想ネットワークシステム１は、仮想ＰＬＣシステム１０Ａ，１０Ｂと、仮想ＰＬＣシステム１０Ａ，１０Ｂに接続された宛先解決部４５と、を備えている。仮想ＰＬＣシステム１０Ａ，１０Ｂは、実際のＰＬＣシステムを模擬するシステムである。
【００２９】
シミュレーション装置５０は、第１の仮想ＰＬＣシステムである仮想ＰＬＣシステム１０Ａと第２の仮想ＰＬＣシステムである仮想ＰＬＣシステム１０Ｂとを時刻同期させながら、仮想ＰＬＣシステム１０Ａ，１０Ｂを模擬動作させる。これにより、シミュレーション装置５０は、実際のＰＬＣシステムの動作を検証する。したがって、シミュレーション装置５０が仮想ＰＬＣシステム１０Ａ，１０Ｂに動作させる内容は、実際のＰＬＣシステムが動作する内容に対応している。
【００３０】
また、実際の各ＰＬＣシステムは、ＰＬＣプログラムを用いて動作する。したがって、シミュレーション装置５０は、仮想ＰＬＣシステム１０Ａ，１０Ｂを、ＰＬＣプログラムを用いて模擬動作させる。
【００３１】
仮想ＰＬＣシステム１０Ａは、仮想ＰＬＣシステム１０Ａが記憶しているＰＬＣプログラムを用いて演算を実行し、仮想ＰＬＣシステム１０Ｂは、仮想ＰＬＣシステム１０Ｂが記憶しているＰＬＣプログラムを用いて演算を実行する。このとき、仮想ＰＬＣシステム１０ＡのＰＬＣプログラムは、仮想ＰＬＣシステム１０Ｂによる演算結果を用いて、さらなる演算を実行する。また、仮想ＰＬＣシステム１０ＢのＰＬＣプログラムは、仮想ＰＬＣシステム１０Ａによる演算結果を用いて、さらなる演算を実行する。
【００３２】
仮想ＰＬＣシステム１０Ａは、第１の識別情報である後述の局番号と、第２の識別情報である後述のシステム番号と、第３の識別情報である後述のユニット識別子と、第４の識別情報である後述のネットワーク番号と、後述のバッファアドレスとに基づいて、仮想ＰＬＣシステム１０Ｂからデータを読み出す。この場合において、仮想ＰＬＣシステム１０Ａは、宛先解決部４５を介して、仮想ＰＬＣシステム１０Ｂとの間でデータ通信を行なう。なお、仮想ＰＬＣシステム１０Ａが、１つのネットワークだけに接続されている場合は、ネットワーク番号を不要とすることも可能である。
【００３３】
仮想ＰＬＣシステム１０Ａの具体的な構成について説明する。仮想ＰＬＣシステム１０Ａは、仮想的なＰＬＣである仮想ＰＬＣ２０Ａと、仮想的なネットワークユニットである仮想ＮＷＵ３０Ａと、システム設定データを格納するシステム設定データ格納部４０Ａとを備えている。仮想ＰＬＣ２０Ａは、ＰＬＣの動作を模擬したものであり、仮想ＮＷＵ３０Ａは、ネットワークユニットを模擬したものである。
【００３４】
仮想ＰＬＣシステム１０Ａは、仮想ＰＬＣ２０Ａおよび仮想ＮＷＵ３０Ａを含むユニットの集合であり、ユニットの組み合わせによって仮想ＰＬＣシステム１０Ａで実行できる機能が決まる。
【００３５】
仮想ＰＬＣ２０Ａは、仮想ＰＬＣシステム１０Ａを制御するユニットであり、仮想ＮＷＵ３０Ａは、他の仮想ＰＬＣシステムである仮想ＰＬＣシステム１０Ｂと通信を行なうユニットである。仮想ＰＬＣ２０Ａは、実際のＰＬＣに対応する動作を実行し、仮想ＮＷＵ３０Ａは、実際のＮＷＵに対応する動作を実行する。
【００３６】
なお、仮想ＰＬＣシステム１０Ａが模擬する実際のＰＬＣシステムは、電源ユニット、入力ユニット、または出力ユニットを備えている。したがって、仮想ＰＬＣシステム１０Ａは、仮想的な電源ユニットである仮想電源ユニット、仮想的な入力ユニットである仮想入力ユニット、または仮想的な出力ユニットである仮想出力ユニットを備えている。また、仮想ＮＷＵ３０Ａが模擬する実際のネットワークユニットは、実際のＰＬＣ以外の他のユニットと接続可能な構成であってもよい。したがって、仮想ＮＷＵ３０Ａは、仮想ＰＬＣ２０Ａ以外の他の仮想ユニットに接続可能な構成であってもよい。この場合の仮想ユニットは、実際のＰＬＣ以外の他のユニットの動作を模擬するユニットであれば何れのユニットであってもよい。
【００３７】
システム設定データ格納部４０Ａは、システム設定データを格納するメモリである。システム設定データ格納部４０Ａ内のシステム設定データは、仮想ＰＬＣシステム１０Ａの情報であり、仮想ＰＬＣシステム１０Ａ，１０Ｂで用いられる。ここで、システム設定データの構成について説明する。
【００３８】
図４は、実施の形態にかかるシステム設定データの構成例を示す図である。ここでは、システム設定データ格納部４０Ａ内のシステム設定データ６１について説明する。システム設定データ６１は、仮想ＰＬＣシステム１０Ａが備える各ユニットのユニット識別子と、仮想ＰＬＣシステム１０Ａのシステム番号とを含んでいる。そして、システム設定データ６１では、ユニット識別子とシステム番号とが対応付けされている。
【００３９】
システム番号は、仮想ネットワークシステム１内の仮想ＰＬＣシステム１０Ａ，１０Ｂに与えられる識別子であり、仮想ＰＬＣシステム１０Ａ，１０Ｂ毎に固有の情報である。仮想ＰＬＣシステム１０Ａのシステム番号の例は「１」であり、仮想ＰＬＣシステム１０Ｂのシステム番号の例は「２」である。ユニット識別子は、仮想ＰＬＣシステム１０Ａ内の各ユニットに固有の情報である。
【００４０】
仮想ＰＬＣ２０Ａは、ＰＬＣ設定データ格納部２１Ａと、ＰＬＣプログラム格納部２２Ａと、プログラム実行部２３Ａと、仮想時計２４Ａと、ユニット間交信部２５Ａと、ツール通信部２６Ａとを備えている。
【００４１】
なお、システム設定データ格納部４０Ｂ内のシステム設定データ６１もシステム設定データ格納部４０Ａ内のシステム設定データ６１と同様の構成を有している。システム設定データ格納部４０Ｂ内のシステム設定データ６１は、仮想ＰＬＣ２０Ｂの情報を有しており、仮想ＰＬＣシステム１０Ａ，１０Ｂで用いられる。
【００４２】
ＰＬＣ設定データ格納部２１Ａは、前述のＰＬＣ設定データを格納するメモリである。ＰＬＣ設定データ格納部２１Ａ内のＰＬＣ設定データは、仮想ＰＬＣ２０Ａに対応する実際のＰＬＣに設定されるデータであり、ユーザによって作成される。
【００４３】
ＰＬＣ設定データの例は、仮想ＰＬＣ２０Ａと仮想ＮＷＵ３０Ａとの間の交信周期であるユニット間交信周期、またはＰＬＣプログラムの処理条件である。ＰＬＣプログラムの処理条件の例は、ＰＬＣプログラムを実行する周期である。この場合、ＰＬＣプログラムの処理条件には、何れのプログラムを何れの周期で実行するかを指定した情報が含まれている。
【００４４】
ＰＬＣプログラム格納部２２Ａは、ＰＬＣプログラムを格納するメモリである。ＰＬＣプログラム格納部２２Ａ内のＰＬＣプログラムは、仮想ＰＬＣシステム１０Ａに対応するＰＬＣシステムを動作させる際に用いられるプログラムである。ＰＬＣプログラムの例は、ラダープログラムといったシーケンスプログラムである。
【００４５】
ツール通信部２６Ａは、図示しないエンジニアリングツールとの間でデータ通信を実行する。エンジニアリングツールは、仮想ＰＬＣシステム１０Ａを動作させる際の種々の設定を行うためのツールである。ユーザからの指示に従ってエンジニアリングツールが種々の設定を行うと、この設定に対応する設定情報が、仮想ＰＬＣシステム１０Ａに送信される。そして、ツール通信部２６Ａが、エンジニアリングツールで設定された設定情報を受信し、ＰＬＣ設定データ格納部２１Ａ、ＰＬＣプログラム格納部２２Ａおよびプログラム実行部２３Ａの何れかに転送する。
【００４６】
ツール通信部２６Ａは、ＰＬＣ設定データへの設定情報をＰＬＣ設定データ格納部２１Ａに転送し、ＰＬＣプログラムへの設定情報をＰＬＣプログラム格納部２２Ａに転送する。また、ツール通信部２６Ａは、ＰＬＣプログラムの実行処理に対応する設定情報をプログラム実行部２３Ａに転送する。また、ツール通信部２６Ａは、エンジニアリングツールから取得要求のあったデータをプログラム実行部２３Ａから取得してエンジニアリングツールに転送する。
【００４７】
プログラム実行部２３Ａは、ＰＬＣプログラム格納部２２Ａ内からＰＬＣプログラムを読み出して実行する。このとき、プログラム実行部２３Ａは、ＰＬＣ設定データ格納部２１Ａ内のＰＬＣ設定データに基づいて、ＰＬＣプログラムを実行する。また、プログラム実行部２３Ａは、ツール通信部２６Ａから設定情報が送信されてきた場合には、設定情報を用いてＰＬＣプログラムを実行する。
【００４８】
また、プログラム実行部２３Ａは、ＰＬＣプログラムの実行状況に沿って仮想時計２４Ａの時刻を進行させる。換言すると、プログラム実行部２３Ａは、ＰＬＣプログラムの進行に沿って、仮想時計２４Ａの時刻データである仮想時刻を進行させる。プログラム実行部２３Ａは、ＰＬＣプログラムの実行を開始すると、実行済みの命令に対応する消費時間を仮想時計２４Ａに送信する。
【００４９】
仮想時計２４Ａは、プログラム実行部２３ＡによるＰＬＣプログラムの実行状況に基づいて時刻が進められる仮想的な時計である。仮想時計２４Ａでは、仮想ＰＬＣ２０Ａがリセットされた時刻が０である。仮想時計２４Ａは、ＰＬＣプログラムの実行が開始されると、ＰＬＣプログラム内の命令ごとに決められた消費時間を累算していく。これにより、仮想時計２４Ａは、実行済みの命令に対応する時刻データを保持する。したがって、仮想時計２４Ａの時刻データは、リセット時刻からの時間経過を表している。実施の形態で用いる時刻データは、仮想ネットワークシステム１を動作させる際に用いられる仮想的な時刻である。
【００５０】
ユニット間交信部２５Ａは、プログラム実行部２３ＡがＰＬＣプログラムを実行する際に、仮想ＰＬＣシステム１０Ａ内の他のユニットとの間でデータ通信を実行する。ここでのユニット間交信部２５Ａは、仮想ＮＷＵ３０Ａとの間でデータ通信を実行する。
【００５１】
ユニット間交信部２５Ａは、ＰＬＣ設定データ格納部２１Ａ内のＰＬＣ設定データと、仮想時計２４Ａから読み出した時刻データとに基づいて、仮想ＮＷＵ３０Ａとの間で時刻同期を実行する。具体的には、ユニット間交信部２５Ａは、時刻データと、ＰＬＣ設定データに含まれるユニット間交信周期とに基づいて、仮想ＮＷＵ３０Ａとの間で時刻同期を実行するタイミングである後述のユニット間交信タイミングを検出する。そして、ユニット間交信部２５Ａは、ユニット間交信タイミングになると、仮想ＮＷＵ３０Ａとの間で時刻同期を実行する。このとき、ユニット間交信部２５Ａは、仮想ＮＷＵ３０Ａに仮想時計２４Ａの時刻データを送信し、時刻データが示す時刻を仮想ＮＷＵ３０Ａに設定させることによって時刻同期を実行する。
【００５２】
このように、仮想ＰＬＣ２０Ａは、時刻データとユニット間交信周期とに従って、ユニット間交信部２５Ａを周期的に動作させ、他のユニットである仮想ＮＷＵ３０Ａとの間で時刻同期を実行する。
【００５３】
なお、本実施の形態における時刻同期は、時分秒といった文字通りの時間に基づく同期だけでなく、カウンタのカウント値に基づく同期でも良く、仮想ＰＬＣ２０Ａと仮想ＮＷＵ３０Ａとの間で同期を取ることができるとともに、仮想ＰＬＣ２０Ｂと仮想ＮＷＵ３０Ｂとの間で同期を取ることができるものであれば良い。
【００５４】
また、ユニット間交信部２５Ａは、ＰＬＣプログラムから、他ユニットのデータの読み出し指示であるユニット読み出し要求、または他のユニットへのデータの書き込み指示であるユニット書き込み要求があると、仮想ＮＷＵ３０Ａとの間でデータ通信を実行する。これにより、ユニット間交信部２５Ａは、プログラム実行部２３Ａから送られてくる後述の自局データを仮想ＮＷＵ３０Ａに書き込む。また、ユニット間交信部２５Ａは、仮想ＮＷＵ３０Ａから読み出した後述の他局データをプログラム実行部２３Ａに送信する。
【００５５】
このように、プログラム実行部２３Ａは、ＰＬＣプログラムを実行する際に、ユニット間交信部２５Ａを介して、仮想ＰＬＣシステム１０Ａ内の他のユニットに自局データを書き込む。また、プログラム実行部２３Ａは、ＰＬＣプログラムを実行する際に、ユニット間交信部２５Ａを介して、仮想ＰＬＣシステム１０Ａ内の他のユニットから他局データを読み出す。
【００５６】
この場合において、ユニット間交信部２５Ａは、システム設定データ格納部４０Ａ内のシステム設定データ６１に基づいて、仮想ＮＷＵ３０Ａとの間でデータ通信を実行する。具体的には、ユニット間交信部２５Ａは、システム設定データ６１内のシステム番号とユニット識別子との対に基づいて、仮想ＮＷＵ３０Ａ内の後述するバッファメモリ３３Ａにアクセスする。そして、ユニット間交信部２５Ａは、バッファメモリ３３Ａに自局データを書き込み、バッファメモリ３３Ａから他局データを読み出す。ユニット間交信部２５Ａは、読み出した他局データをプログラム実行部２３Ａに送信する。これにより、ＰＬＣプログラムは、他局データを用いた種々の処理を実行する。
【００５７】
自局データは、自局が生成したデータであり、他局データは、他局が生成したデータである。したがって、バッファメモリ３３Ａに格納される自局データは、仮想ＰＬＣシステム１０Ａが生成したデータであり、バッファメモリ３３Ａに格納される他局データは、仮想ＰＬＣシステム１０Ｂが生成したデータである。すなわち、バッファメモリ３３Ｂに格納される自局データは、仮想ＰＬＣシステム１０Ｂのデータであるが、仮想ＰＬＣシステム１０Ａから見ると他局データである。
【００５８】
仮想ＮＷＵ３０Ａは、仮想ＮＷＵ３０Ｂと同一のネットワークに接続されている。仮想ＮＷＵ３０Ａは、ＮＷＵ設定データ格納部３１Ａと、ユニット間交信部３２Ａと、バッファメモリ３３Ａと、仮想時計３４Ａと、ネットワーク内交信部３５Ａとを備えている。
【００５９】
ＮＷＵ設定データ格納部３１Ａは、ＮＷＵ設定データを格納するメモリである。ここで、ＮＷＵ設定データの構成について説明する。図５は、実施の形態にかかるＮＷＵ設定データの構成例を示す図である。ここでは、ＮＷＵ設定データ格納部３１Ａ内のＮＷＵ設定データ６２について説明する。
【００６０】
ＮＷＵ設定データ６２は、ネットワーク番号と、局番号と、バッファアドレスとを含んでいる。そして、ＮＷＵ設定データ６２では、ネットワーク番号と局番号とバッファアドレスとが対応付けされている。ここでのネットワーク番号は、仮想ＮＷＵ３０Ａ，３０Ｂが接続するネットワークに付与された識別子である。ネットワーク番号は、仮想ネットワークシステム１内の各ネットワークに固有の番号である。局番号は、各ネットワーク内における仮想ＮＷＵ３０Ａ，３０Ｂの識別子であり、ネットワークに接続する仮想ＮＷＵ３０Ａ，３０Ｂ毎に付与される。局番号は、１つのネットワーク内では各仮想ＮＷＵ３０Ａ，３０Ｂに固有の情報である。バッファアドレスは、バッファメモリ３３Ａ内のデータ格納領域を示すアドレスである。バッファメモリ３３Ａは、局番号毎にデータ格納領域が割り当てられるので、ＮＷＵ設定データ６２によってバッファアドレスと局番号とが対応付けされている。
【００６１】
また、ＮＷＵ設定データ６２は、ネットワーク内での交信周期であるシステム間交信周期を含んでいる。このシステム間交信周期は、仮想ＮＷＵ３０Ａ，３０Ｂとの間で行われる時刻同期に用いられる。
【００６２】
なお、ＮＷＵ設定データ格納部３１Ｂ内のＮＷＵ設定データ６２もＮＷＵ設定データ格納部３１Ａ内のＮＷＵ設定データ６２と同様の構成を有している。ＮＷＵ設定データ格納部３１Ａ内のＮＷＵ設定データ６２は、仮想ＮＷＵ３０Ａの情報を有しており、ＮＷＵ設定データ格納部３１Ｂ内のＮＷＵ設定データ６２は、仮想ＮＷＵ３０Ｂの情報を有している。
【００６３】
ユニット間交信部３２Ａは、ユニット間交信部２５Ａとの間でデータ通信を実行する。ユニット間交信部３２Ａは、ユニット間交信部２５Ａから読み出し要求のあった他局データをバッファメモリ３３Ａから読み出してユニット間交信部２５Ａに送信する。また、ユニット間交信部３２Ａは、ユニット間交信部２５Ａから書き込み要求のあった自局データをバッファメモリ３３Ａに書き込む。
【００６４】
ユニット間交信部３２Ａは、システム設定データ格納部４０Ａ内のシステム設定データ６１に基づいて、バッファメモリ３３Ａにアクセスする。具体的には、ユニット間交信部３２Ａは、ユニット間交信部２５Ａと同様に、システム設定データ６１内のシステム番号とユニット識別子との対に基づいてバッファメモリ３３Ａにアクセスする。この場合において、ユニット間交信部３２Ａは、ＮＷＵ設定データ６２に含まれるバッファアドレスに基づいて、バッファメモリ３３Ａ内の領域にアクセスする。
【００６５】
また、ユニット間交信部３２Ａは、ユニット間交信部２５Ａから時刻データが送られてくると、この時刻データを仮想時計３４Ａに設定する。これにより、仮想時計３４Ａは、ユニット間交信周期で仮想時計２４Ａに同期する。換言すると、ユニット間交信部２５Ａ，３２Ａは、仮想時計３４Ａの時刻を仮想時計２４Ａの時刻に合わせる。
【００６６】
また、ユニット間交信部３２Ａは、他の仮想ＰＬＣシステムからのデータの読み出し指示であるシステム読み出し要求を、ユニット間交信部２５Ａから受信すると、このシステム読み出し要求をネットワーク内交信部３５Ａに転送する。
【００６７】
バッファメモリ３３Ａは、仮想ＰＬＣ２０Ａ内で生成されたデータを格納する仮想記憶部である。バッファメモリ３３Ａは、ユニット間交信部３２Ａおよびネットワーク内交信部３５Ａからアクセス可能なよう構成されている。バッファメモリ３３Ａは、仮想ＰＬＣ２０Ａによって書き込まれる自局データと、仮想ＰＬＣシステム１０Ｂから読み出した他局データとを格納する。
【００６８】
ネットワーク内交信部３５Ａは、仮想ＮＷＵ３０Ａの接続されているネットワーク内で時刻同期およびデータ通信を実行する。ここでのネットワーク内交信部３５Ａは、仮想ＮＷＵ３０Ｂとの間で時刻同期およびデータ通信を実行する。ネットワーク内交信部３５Ａは、ＮＷＵ設定データ６２内のシステム間交信周期と、仮想時計３４Ａの時刻データとに基づいて、仮想ＮＷＵ３０Ｂとの間で時刻同期を実行する。ネットワーク内交信部３５Ａは、仮想時計３４Ａの時刻と後述する仮想時計３４Ｂの時刻とを合わせることによって、仮想ＮＷＵ３０Ｂとの間で時刻同期を実行する。仮想ＮＷＵ３０Ａ，３０Ｂは、先に進行している方の仮想時計を特定の時刻で停止させ、遅れている方の仮想時計が特定の時刻になると、停止させていた方の仮想時計を再始動させることによって時刻同期を実行する。
【００６９】
また、ネットワーク内交信部３５Ａは、仮想ＰＬＣ２０Ａからシステム読み出し要求を受信すると、仮想ＮＷＵ３０Ｂ内のメモリであるバッファメモリ３３Ｂからシステム読み出し要求に対応する他局データを読み出す。
【００７０】
宛先解決部４５は、ネットワーク番号と、局番号と、システム番号と、ユニット識別子との組である第１の組情報を構築する。また、宛先解決部４５は、ネットワーク番号と、バッファメモリ３３Ａ内のバッファアドレスと、局番号との組である第２の組情報を構築する。
【００７１】
宛先解決部４５は、システム設定データ格納部４０Ａ内のシステム設定データ６１と、ＮＷＵ設定データ格納部３１Ａ内のＮＷＵ設定データ６２とに基づいて、第１の組情報および第２の組情報を構築する。
【００７２】
ここで、第１の組情報および第２の組情報の構成について説明する。図６は、実施の形態にかかる第１の組情報の構成例を示す図である。第１の組情報７１は、ネットワーク番号と、局番号と、システム番号と、ユニット識別子とが対応付けされた情報である。
【００７３】
第１の組情報７１のネットワークのネットワーク番号は、仮想ＮＷＵ３０Ａ，３０Ｂが接続されているネットワークのネットワーク番号である。また、第１の組情報７１の局番号は、仮想ＮＷＵ３０Ａ，３０Ｂの局番号である。また、第１の組情報７１のシステム番号は、仮想ＰＬＣシステム１０Ａ，１０Ｂのシステム番号である。また、第１の組情報７１のユニット識別子は、仮想ＰＬＣシステム１０Ａ，１０Ｂが備えるユニットのユニット識別子である。
【００７４】
図６では、仮想ＮＷＵ３０Ｂが接続されているネットワークのネットワーク番号「１０１」と、仮想ＮＷＵ３０Ｂの局番号「６０１」と、仮想ＮＷＵ３０Ｂを有した仮想ＰＬＣシステム１０Ｂのシステム番号「２」と、仮想ＮＷＵ３０Ｂのユニット識別子「０１０」とが対応付けされている場合を示している。
【００７５】
図７は、実施の形態にかかる第２の組情報の構成例を示す図である。第２の組情報７２は、ネットワーク番号と、バッファアドレスと、局番号とが対応付けされた情報である。第２の組情報７２のネットワーク番号は、仮想ＮＷＵ３０Ａ，３０Ｂが接続されているネットワークのネットワーク番号である。また、第２の組情報７２の局番号は、仮想ＮＷＵ３０Ａ，３０Ｂの局番号である。また、第２の組情報７２のバッファアドレスは、仮想ＮＷＵ３０Ａ，３０Ｂが備えるバッファメモリ３３Ａ，３３Ｂのバッファアドレスである。
【００７６】
図７では、仮想ＮＷＵ３０Ｂが接続されているネットワークのネットワーク番号「１０１」と、仮想ＮＷＵ３０Ｂの局番号「６０１」と、仮想ＮＷＵ３０Ｂが備えるバッファメモリ３３Ｂのバッファアドレス「１００〜１１９」とが対応付けされている場合を示している。
【００７７】
宛先解決部４５は、システム設定データ格納部４０Ａ，４０Ｂ内のシステム設定データ６１、ＮＷＵ設定データ格納部３１Ａ，３１Ｂ内のＮＷＵ設定データ６２に基づいて、第１の組情報７１を構築する。また、宛先解決部４５は、ＮＷＵ設定データ格納部３１Ａ，３１ＢのＮＷＵ設定データ６２に基づいて、第２の組情報７２を構築する。この場合において、宛先解決部４５は、ＮＷＵ設定データ格納部３１Ａ，３１Ｂが格納しているＮＷＵ設定データ６２のそれぞれから、ネットワーク番号、局番号およびバッファアドレスを抽出する。また、宛先解決部４５は、システム設定データ格納部４０Ａ，４０Ｂが格納しているシステム設定データ６１のそれぞれから、システム番号およびユニット識別子を抽出する。
【００７８】
そして、宛先解決部４５は、抽出したネットワーク番号、局番号、システム番号、およびユニット識別子を用いて、第１の組情報７１を構築する。また、宛先解決部４５は、抽出したネットワーク番号、局番号、およびバッファアドレスを用いて、第２の組情報７２を構築する。
【００７９】
仮想ＰＬＣシステム１０Ｂは、仮想ＰＬＣシステム１０Ａと同様の機能を有している。すなわち、仮想ＰＬＣシステム１０Ｂは、仮想ＰＬＣ２０Ａと同様の機能を有した仮想ＰＬＣ２０Ｂと、仮想ＮＷＵ３０Ａと同様の機能を有した仮想ＮＷＵ３０Ｂと、システム設定データ格納部４０Ａと同様の機能を有したシステム設定データ格納部４０Ｂとを有している。
【００８０】
仮想ＰＬＣ２０Ｂは、ＰＬＣ設定データ格納部２１Ａと同様の機能を有したＰＬＣ設定データ格納部２１Ｂと、ＰＬＣプログラム格納部２２Ａと同様の機能を有したＰＬＣプログラム格納部２２Ｂとを備えている。また、仮想ＰＬＣ２０Ｂは、プログラム実行部２３Ａと同様の機能を有したプログラム実行部２３Ｂと、仮想時計２４Ａと同様の機能を有した仮想時計２４Ｂとを備えている。また、仮想ＰＬＣ２０Ｂは、ユニット間交信部２５Ａと同様の機能を有したユニット間交信部２５Ｂと、ツール通信部２６Ａと同様の機能を有したツール通信部２６Ｂとを備えている。
【００８１】
仮想ＮＷＵ３０Ｂは、ＮＷＵ設定データ格納部３１Ａと同様の機能を有したＮＷＵ設定データ格納部３１Ｂと、ユニット間交信部３２Ａと同様の機能を備えたユニット間交信部３２Ｂとを備えている。また、仮想ＮＷＵ３０Ｂは、バッファメモリ３３Ａと同様の機能を備えたバッファメモリ３３Ｂと、仮想時計３４Ａと同様の機能を備えた仮想時計３４Ｂと、ネットワーク内交信部３５Ａと同様の機能を備えたネットワーク内交信部３５Ｂとを備えている。仮想ＰＬＣシステム１０Ｂは、仮想ＰＬＣシステム１０Ａと同様の動作を実行する。
【００８２】
実施の形態では、シミュレーション装置５０が、複数の仮想ＰＬＣシステム１０Ａ，１０Ｂを有した仮想ネットワークシステム１をコンピュータであるシミュレーション装置５０に構築する。そして、シミュレーション装置５０が、仮想ＰＬＣシステム１０Ａ，１０Ｂを動作させ、これにより、仮想ＮＷＵ３０Ａ，３０Ｂ間での時刻同期およびデータのやり取りを模擬する。これにより、シミュレーション装置５０は、仮想ＰＬＣシステム１０Ａ，１０Ｂを連動させる。
【００８３】
図８は、実施の形態にかかる仮想ネットワークシステムの動作処理手順を示すフローチャートである。仮想ネットワークシステム１では、仮想ＰＬＣシステム１０Ａが、仮想ＰＬＣシステム１０Ｂからデータを取得して動作し、仮想ＰＬＣシステム１０Ｂが、仮想ＰＬＣシステム１０Ａからデータを取得して動作する。この場合において、仮想ＰＬＣシステム１０Ａ，１０Ｂは、仮想時計３４Ａ，３４Ｂに基づいた同期処理を実行する。なお、仮想ＰＬＣシステム１０Ａ，１０Ｂは、同様の動作を実行するので、以下では、仮想ＰＬＣシステム１０Ａが、仮想ＰＬＣシステム１０Ｂからデータを取得して動作する場合について説明する。すなわち、自局の例が仮想ＰＬＣシステム１０Ａであり、他局の例が仮想ＰＬＣシステム１０Ｂである場合について説明する。
【００８４】
シミュレーション装置５０によって構築された仮想ネットワークシステム１の仮想ＰＬＣシステム１０Ａは、ステップＳ１０において、シミュレーション装置５０からの指示に従ってＰＬＣプログラムを実行する。具体的には、プログラム実行部２３Ａが、ＰＬＣプログラム格納部２２ＡからＰＬＣプログラムを読み出してＰＬＣプログラムを実行する。このとき、プログラム実行部２３Ａは、ＰＬＣ設定データ格納部２１Ａから取得したＰＬＣ設定データと、ツール通信部２６Ａから取得した設定情報とを用いてＰＬＣプログラムを実行する。
【００８５】
プログラム実行部２３Ａは、ＰＬＣプログラムの実行中に生成した自局データであって仮想ＰＬＣシステム１０Ｂに送信するものがあれば、この自局データをユニット間交信部２５Ａに送信する。自局データは、自局である仮想ＰＬＣシステム１０Ａが生成したデータである。
【００８６】
また、ステップＳ２０において、プログラム実行部２３Ａは、ＰＬＣプログラムの進行状態に基づいて仮想時計２４Ａを進める。ユニット間交信部２５Ａは、仮想時計２４Ａが保持している時刻データと、ＰＬＣ設定データ内に設定されているユニット間交信周期とに従って動作する。また、ユニット間交信部３２Ａは、仮想時計３４Ａが保持している時刻データに従って動作する。
【００８７】
ユニット間交信部２５Ａは、仮想時計２４Ａ内の時刻データおよびユニット間交信周期に基づいて、時刻データが、仮想ＰＬＣ２０Ａと仮想ＮＷＵ３０Ａとの間に設定されているユニット間交信タイミングを検出する。そして、ユニット間交信部２５Ａは、ユニット間交信タイミングを検出すると、仮想ＮＷＵ３０Ａとの間で時刻同期を実行する。
【００８８】
ユニット間交信タイミングでは、ユニット間交信部２５Ａが、ユニット間交信部３２Ａに時刻データを送信する。ユニット間交信部３２Ａは、ユニット間交信部２５Ａから時刻データを受信すると、この時刻データを仮想時計３４Ａに設定する。すなわち、仮想ＰＬＣ２０Ａは、ユニット間交信タイミングになると、仮想ＰＬＣ２０Ａ内の時刻データを仮想ＮＷＵ３０Ａに設定する。このように、ステップＳ３０において、仮想ＰＬＣシステム１０Ａは、仮想ＰＬＣシステム１０Ａ内での時刻データを同期させる。
【００８９】
また、ユニット間交信部２５Ａは、ＰＬＣプログラムからの指示にしたがって、仮想ＮＷＵ３０Ａとの間でデータ通信を実行する。ユニット間交信部２５Ａは、ＰＬＣプログラムからデータの読み出し要求を受信すると、ステップＳ４０において、仮想ＮＷＵ３０Ａのバッファメモリ３３Ａから他局データの読出しを行う。このとき、ユニット間交信部２５Ａは、ユニット間交信部３２Ａを介してバッファメモリ３３Ａから他局データを読み出す。また、ユニット間交信部２５Ａは、ＰＬＣプログラムからデータの書き込み要求を受信すると、ステップＳ５０において、仮想ＮＷＵ３０Ａへの自局データの書き込みを行う。このとき、ユニット間交信部２５Ａは、ユニット間交信部３２Ａを介してバッファメモリ３３Ａに自局データを書き込む。
【００９０】
ここでバッファメモリ３３Ａの構成について説明する。図９は、実施の形態にかかるバッファメモリの構成例を示す図である。ここでは、バッファメモリ３３Ａの構成について説明するが、バッファメモリ３３Ｂもバッファメモリ３３Ａと同様の構成を有している。
【００９１】
バッファメモリ３３Ａのデータ格納領域は、自局データを格納する自局データ格納ブロック３３１Ａと、他局データを格納する他局データ格納ブロック３３２Ａとに分割されている。自局データ格納ブロック３３１Ａは、自局データである仮想ＰＬＣシステム１０Ａのデータを格納する領域であり、他局データ格納ブロック３３２Ａは、他局データである仮想ＰＬＣシステム１０Ｂのデータを格納する領域である。自局データ格納ブロック３３１Ａおよび他局データ格納ブロック３３２Ａは、それぞれバッファメモリ３３Ａ内で固有のバッファアドレスを有している。このバッファアドレスは、ＮＷＵ設定データ６２に含まれている。
【００９２】
バッファメモリ３３Ａ，３３Ｂでは、仮想ＰＬＣシステム１０Ａ，１０Ｂが、共通のバッファアドレスを用いる。また、バッファメモリ３３Ａ，３３Ｂでは、仮想ＰＬＣシステム１０Ａ，１０Ｂが、バッファアドレス毎に同一のデータを格納する。したがって、バッファメモリ３３Ａ内の第１のバッファアドレスに格納されるデータと、バッファメモリ３３Ｂ内の第１のバッファアドレスに格納されるデータとは同じデータである。換言すると、バッファメモリ３３Ａ内で第１のバッファアドレスが割り当てられたデータ格納領域と、バッファメモリ３３Ｂ内で第１のバッファアドレスが割り当てられたデータ格納領域と、には同一のデータが格納される。仮想ＮＷＵ３０Ａのデータが、バッファメモリ３３Ａのバッファアドレス１００〜１１９のデータ格納領域に格納される場合、バッファメモリ３３Ｂでもバッファアドレス１００〜１１９のデータ格納領域は、仮想ＮＷＵ３０Ａのデータが格納される。別言すれば、バッファメモリ３３Ａのバッファアドレス１００〜１１９に局番号「Ｘ」が割り当てられると、バッファメモリ３３Ｂのバッファアドレス１００〜１１９にも局番号「Ｘ」が割り当てられる。
【００９３】
バッファメモリ３３Ａ，３３Ｂは、システム番号とユニット識別子との対からなるバッファメモリ識別子で管理されており、仮想ＰＬＣシステム１０Ａ，１０Ｂの共有メモリの形で用いられる。この構成により、仮想ネットワークシステム１では、バッファメモリ識別子を用いることにより、仮想ネットワークシステム１内の何れの構成要素からでもバッファメモリ３３Ａ，３３Ｂにアクセスできる。
【００９４】
前述したように、システム設定データ６１は、仮想ＰＬＣシステム１０Ａが備える各ユニットのユニット識別子と、仮想ＰＬＣシステム１０Ａのシステム番号とを含んでいる。したがって、仮想ＰＬＣシステム１０Ａのユニット間交信部２５Ａおよび仮想ＮＷＵ３０Ａのユニット間交信部３２Ａは、それぞれ仮想ＰＬＣシステム１０Ａ内で唯一の識別子が割り当てられている。具体的には、ユニット間交信部２５Ａ，３２Ａは、ユニット識別子とシステム番号との対からなるバッファメモリ識別子が割り当てられている。このように、ユニット間交信部２５Ａおよびバッファメモリ３３Ａは、システム番号とユニット識別子との対からなるバッファメモリ識別子で特定することができる。
【００９５】
仮想ＰＬＣシステム１０Ａ内では、仮想ＰＬＣ２０Ａが、仮想ＮＷＵ３０Ａへの交信処理である書き込み処理と読み込み処理の２種類を行う。仮想ＰＬＣ２０Ａは、書き込み処理の際には、バッファメモリ識別子とバッファアドレスとの対によって書き込み対象を特定することができる。また、仮想ＰＬＣ２０Ａは、読み込み処理の際には、バッファメモリ識別子とバッファアドレスとの対によって読み込み対象を特定することができる。
【００９６】
ネットワーク内交信部３５Ａは、仮想時計３４Ａ内の時刻データおよびシステム間交信周期に基づいて、時刻データが、ネットワーク内に設定されている交信タイミングになると仮想ＮＷＵ３０Ｂとの間で時刻同期を実行する。以下の説明では、ネットワーク内に設定されている交信タイミングをシステム間交信タイミングという。ここでのネットワーク内には、仮想ＰＬＣシステム１０Ａ，１０Ｂが配置されているので、ここでのシステム間交信タイミングは、仮想ＰＬＣシステム１０Ａ，１０Ｂ間に設定されている交信タイミングともいえる。
【００９７】
仮想ＰＬＣシステム１０Ａが用いている時刻データと、仮想ＰＬＣシステム１０Ｂが用いている時刻データとには、ずれが生じる場合がある。このため、ネットワーク内交信部３５Ａ，３５Ｂは、ネットワーク内交信部３５Ａの時刻データおよびネットワーク内交信部３５Ｂの時刻データに基づいて時刻同期を実行する。
【００９８】
仮想ＰＬＣシステム１０Ａの時刻が仮想ＰＬＣシステム１０Ｂの時刻よりも先に進行している場合、ネットワーク内交信部３５Ａは、システム間交信タイミングを検出すると、システム間交信タイミングになったことを示すタイミング情報をネットワーク内交信部３５Ｂに通知する。そして、仮想ＰＬＣ２０Ａは、ＰＬＣプログラムの実行を停止する。
【００９９】
そして、ネットワーク内交信部３５Ｂは、ネットワーク内交信部３５Ａからタイミング情報を受信した後に、自局でシステム間交信タイミングを検出すると、時刻同期の確認を示す同期確認情報をネットワーク内交信部３５Ａに送る。これにより、仮想ＰＬＣ２０Ａは、ＰＬＣプログラムの実行を再開し、次のシステム間交信タイミングまでＰＬＣプログラムの実行を続ける。
【０１００】
また、仮想ＰＬＣシステム１０Ｂの時刻が仮想ＰＬＣシステム１０Ａの時刻よりも先に進行している場合、ネットワーク内交信部３５Ｂは、システム間交信タイミングを検出すると、システム間交信タイミングになったことを示すタイミング情報をネットワーク内交信部３５Ａに通知する。そして、仮想ＰＬＣ２０Ｂは、ＰＬＣプログラムの実行を停止する。
【０１０１】
そして、ネットワーク内交信部３５Ａは、ネットワーク内交信部３５Ｂからタイミング情報を受信した後に、自局でシステム間交信タイミングを検出すると、時刻同期の確認を示す同期確認情報をネットワーク内交信部３５Ｂに送る。これにより、仮想ＰＬＣ２０Ｂは、ＰＬＣプログラムの実行を再開し、次のシステム間交信タイミングまでＰＬＣプログラムの実行を続ける。
【０１０２】
このように、仮想ＰＬＣシステム１０Ａ，１０Ｂは、ステップＳ６０において、他局との間で時刻データを同期させる。換言すると、仮想ＰＬＣシステム１０Ａ，１０Ｂは、時刻データのすり合わせを実行する。なお、ネットワーク上に３つ以上の仮想ＮＷＵが接続されている場合、自局のシステム間交信タイミングを最後に検出した仮想ＮＷＵが同期確認情報を他局に送信する。
【０１０３】
上述したように、仮想ＰＬＣ２０Ａは、ユニット間交信タイミングになると、仮想ＮＷＵ３０Ａとの間で時刻同期を実行する。同様に、仮想ＰＬＣ２０Ｂは、ユニット間交信タイミングになると、仮想ＮＷＵ３０Ｂとの間で時刻同期を実行する。また、仮想ＮＷＵ３０Ａは、システム間交信タイミングになると、仮想ＮＷＵ３０Ｂとの間で時刻同期を実行する。
【０１０４】
また、ネットワーク内交信部３５Ａは、仮想ＰＬＣ２０Ａからデータ取得要求があると、仮想ＰＬＣシステム１０Ｂとの間でデータ通信を実行する。これにより、ネットワーク内交信部３５Ａは、ステップＳ７０において、バッファメモリ３３Ｂから他局データを読み出す。このとき、ネットワーク内交信部３５Ａは、ネットワーク内交信部３５Ｂを介してバッファメモリ３３Ｂから他局データを読み出す。そして、ネットワーク内交信部３５Ａは、読み出した他局データをバッファメモリ３３Ａに格納する。この場合において、ネットワーク内交信部３５Ａは、ＮＷＵ設定データ格納部３１Ａに格納されたＮＷＵ設定データ６２に基づいて、仮想ＰＬＣ２０Ｂから他局データを読み出す。ここでの他局データは、仮想ＰＬＣシステム１０Ｂといった他局が生成したデータである。
【０１０５】
このように、仮想ＰＬＣ２０Ａは、仮想ＮＷＵ３０Ａとの間で時刻同期およびデータ通信を実行しながらＰＬＣプログラムを実行する。また、仮想ＰＬＣ２０Ｂは、仮想ＮＷＵ３０Ｂとの間で時刻同期およびデータ通信を実行しながらＰＬＣプログラムを実行する。そして、仮想ＰＬＣシステム１０Ａは、仮想ＰＬＣシステム１０Ｂとの間で時刻同期およびデータ通信を実行しながら動作する。このとき、仮想ＮＷＵ３０Ａ，３０Ｂ間で時刻同期が行われる。
【０１０６】
すなわち、シミュレーション部５３は、第１の仮想ＰＬＣシステムである仮想ＰＬＣシステム１０Ａ内で、仮想時計２４Ａ，３４Ａ間の時刻同期である第１の時刻同期を実行させる。また、シミュレーション部５３は、第２の仮想ＰＬＣシステムである仮想ＰＬＣシステム１０Ｂ内で、仮想時計２４Ｂ，３４Ｂ間の時刻同期である第２の時刻同期を実行させる。そして、シミュレーション部５３は、第１の時刻同期によって設定された第１の時刻と、第２の時刻同期によって設定された第２の時刻と、を同期させることによって、時刻同期を実行する。
【０１０７】
ここで他局データを読み出す方法について説明する。ここでは、仮想ＰＬＣシステム１０Ａのネットワーク内交信部３５Ａが、仮想ＰＬＣシステム１０Ｂのバッファメモリ３３Ｂから他局データを読み出す場合の読み出し処理について説明する。なお、バッファメモリ３３Ｂに格納されている他局データは、仮想ＰＬＣシステム１０Ａから見た他局データであり、仮想ＰＬＣシステム１０Ｂから見ると自局データである。
【０１０８】
前述したように、宛先解決部４５は、ネットワーク番号と、局番号と、システム番号と、ユニット識別子との組である第１の組情報７１を構築しておく。また、宛先解決部４５は、ネットワーク番号と、バッファメモリ３３Ａ内のバッファアドレスと、局番号との組である第２の組情報７２を構築しておく。
【０１０９】
仮想ＰＬＣ２０Ａが、ネットワーク内交信部３５Ａに、他局データの読み出し要求を送信すると、ネットワーク内交信部３５Ａは、読み出し要求に含まれているバッファアドレスを抽出する。このバッファアドレスは、読み出し対象が格納されている領域のアドレスであり、バッファメモリ３３Ａ，３３Ｂで共通である。
【０１１０】
ネットワーク内交信部３５Ａは、抽出したバッファアドレスを宛先解決部４５に送る。また、宛先解決部４５は、ＮＷＵ設定データ格納部３１ＡからＮＷＵ設定データ６２を読み出す。そして、宛先解決部４５は、ＮＷＵ設定データ６２からネットワーク番号を抽出する。このネットワーク番号は、仮想ＰＬＣ２０Ａ，２０Ｂが接続されているネットワークのネットワーク番号である。
【０１１１】
宛先解決部４５は、ネットワーク番号およびバッファアドレスに基づいて、バッファメモリ３３Ｂから読み出し対象の他局データを読み出す。具体的には、宛先解決部４５は、ネットワーク番号とバッファアドレスとの対に基づいて、第２の組情報７２から局番号を抽出する。これにより、宛先解決部４５は、ネットワーク番号とバッファアドレスとの対を、ネットワーク番号と局番号との対に変換する。
【０１１２】
さらに、宛先解決部４５は、ネットワーク番号と局番号との対に基づいて、第１の組情報７１からシステム番号およびユニット識別子を抽出する。これにより、宛先解決部４５は、ネットワーク番号と局番号との対を、システム番号とユニット識別子との対に変換する。このように、宛先解決部４５は、ネットワーク番号とバッファアドレスとの対を、第１の組情報７１および第２の組情報７２を用いてシステム番号とユニット識別子との対に変換する。
【０１１３】
そして、宛先解決部４５は、システム番号とユニット識別子との対に基づいて、バッファメモリ３３Ｂを特定する。この後、宛先解決部４５は、特定したバッファメモリ３３Ｂのバッファアドレスにアクセスして、読み出し対象の他局データを読み出す。そして、宛先解決部４５は、読み出した他局データをネットワーク内交信部３５Ａに送信する。これにより、ネットワーク内交信部３５Ａは、他局データを、バッファメモリ３３Ａに格納する。このとき、ネットワーク内交信部３５Ａは、読み出し要求に含まれていたバッファアドレスに他局データを格納する。
【０１１４】
ここで、シミュレーション装置５０のハードウェア構成について説明する。図１０は、実施の形態にかかるシミュレーション装置のハードウェア構成例を示す図である。シミュレーション装置５０は、図１０に示した制御回路３００、すなわちプロセッサ３０１およびメモリ３０２により実現することができる。プロセッサ３０１の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ３０２の例は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）である。
【０１１５】
シミュレーション装置５０は、プロセッサ３０１が、メモリ３０２で記憶されている、シミュレーション装置５０の動作を実行するためのシミュレーションプログラムを読み出して実行することにより実現される。また、このシミュレーションプログラムは、シミュレーション装置５０の手順または方法をコンピュータに実行させるものであるともいえる。メモリ３０２は、プロセッサ３０１が各種処理を実行する際の一時メモリにも使用される。
【０１１６】
このように、プロセッサ３０１が実行するシミュレーションプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な（non-transitory）記録媒体を有するコンピュータプログラムプロダクトである。プロセッサ３０１が実行するシミュレーションプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。なお、シミュレーション装置５０の機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【０１１７】
ところで、仮想ＰＬＣシステム１０Ａのように、仮想ＰＬＣシステム１０Ｂによる演算結果を用いて自局の演算を実行する場合、発生しうる演算結果を格納したデータ領域を事前に準備したうえでシミュレーションを実行する方法がある。この方法では、使用するデータ領域を変更しながらシミュレーションが実行される。しかしながら、この方法では、シミュレーション対象となるＰＬＣプログラムを、複数のデータ領域を参照するように改変する必要があるので、シミュレーションのためのコストが高くなる。一方、シミュレーション装置５０による、実施の形態のシミュレーション方法では、ＰＬＣプログラムを改変する必要がないので、シミュレーションを用いた検証環境を低コストで実現することが可能となる。換言すると、実施の形態のシミュレーション装置５０は、ＰＬＣプログラムを改変する必要がないので、シミュレーションを用いた検証環境を簡易な構成で実現することが可能となる。
【０１１８】
このように、シミュレーション装置５０は、仮想ネットワークシステム１を構築し、仮想ネットワークシステム１内で時刻を同期させながら仮想ＰＬＣシステム１０Ａ，１０ＢにＰＬＣプログラムを実行させている。これにより、シミュレーション装置５０は、仮想ネットワークシステム１を動作させることができるので、実際にネットワークシステムを構築することなく、実際のネットワークシステムを模擬的に動作させることができる。したがって、シミュレーション装置５０は、実際にネットワークシステムを構築してＰＬＣプログラムの動作確認を確認する場合よりも低コストで動作を確認することができる。
【０１１９】
なお、ユーザは、構築するネットワークシステムに適したネットワークユニットを選択して使用することができる。この場合のネットワークユニットは、パラメータで個別にネットワーク構成を設定できるものであってもよい。また、複数のネットワークユニットを単一のＰＬＣシステムに用いることで、異なる設定の複数のネットワークにＰＬＣシステムを接続してもよい。ユーザによって決定されるネットワークシステムが、何れの構成であっても、シミュレーション装置５０は、仮想ネットワークシステム１のような仮想ネットワークシステムを構築してシミュレーションを実行することができる。
【０１２０】
このように実施の形態では、シミュレーション装置５０のシミュレーション部５３が、仮想ネットワークシステム１を構築し、仮想ネットワークシステム１が仮想ネットワークシステム１内で時刻を同期させながら仮想ＰＬＣ２０Ａ，２０ＢにＰＬＣプログラムを実行させている。これにより、仮想ＰＬＣ２０Ａは、仮想ＰＬＣ２０Ｂが生成したデータを用いて、ＰＬＣプログラムを実行することができる。したがって、ＰＬＣシステムを備えたネットワークシステムのシミュレーションを簡易な構成で実行することが可能となる。
【０１２１】
また、仮想ＰＬＣ２０Ａが、仮想ＮＷＵ３０Ａとの間で時刻同期を実行し、仮想ＰＬＣ２０Ｂが、仮想ＮＷＵ３０Ｂとの間で時刻同期を実行している。そして、仮想ネットワークシステム１は、仮想ＮＷＵ３０Ａ，３０Ｂ間で時刻同期を実行している。これにより、仮想ネットワークシステム１内で正確に時刻同期を実行することが可能となる。
【０１２２】
また、仮想ＰＬＣシステム１０Ａが、局番号と、システム番号と、ユニット識別子と、ネットワーク番号と、バッファアドレスとに基づいて、仮想ＰＬＣシステム１０Ｂからデータを読み出すので、仮想ＰＬＣシステム１０Ａは、仮想ＰＬＣシステム１０Ｂから容易にデータを読み出すことができる。
【０１２３】
また、シミュレーション部５３が、構成情報を用いて仮想ネットワークシステム１を構築するので、シミュレーション部５３は、容易に仮想ネットワークシステム１を構築することが可能となる。
【０１２４】
また、仮想ＰＬＣ２０Ａが、ＰＬＣプログラムの実行状況に沿って仮想時計２４Ａの時刻を進行させるので、仮想ネットワークシステム１は、正確な時刻同期を実行することが可能となる。
【０１２５】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０１２６】
１  仮想ネットワークシステム、１０Ａ，１０Ｂ  仮想ＰＬＣシステム、２０Ａ，２０Ｂ  仮想ＰＬＣ、２１Ａ，２１Ｂ  ＰＬＣ設定データ格納部、２２Ａ，２２Ｂ  ＰＬＣプログラム格納部、２３Ａ，２３Ｂ  プログラム実行部、２４Ａ，２４Ｂ，３４Ａ，３４Ｂ  仮想時計、２５Ａ，２５Ｂ，３２Ａ，３２Ｂ  ユニット間交信部、２６Ａ，２６Ｂ  ツール通信部、３０Ａ，３０Ｂ  仮想ＮＷＵ、３１Ａ，３１Ｂ  ＮＷＵ設定データ格納部、３３Ａ，３３Ｂ  バッファメモリ、３５Ａ，３５Ｂ  ネットワーク内交信部、４０Ａ，４０Ｂ  システム設定データ格納部、４５  宛先解決部、５０  シミュレーション装置、５３  シミュレーション部、６１  システム設定データ、６２  ＮＷＵ設定データ、７１  第１の組情報、７２  第２の組情報。
【要約】
シミュレーション装置において、ＰＬＣシステムを動作させるＰＬＣプログラムを記憶する記憶部と、ＰＬＣシステムを備えたネットワークシステムの構成を模擬した仮想ネットワークシステム（１）を構築し、仮想ネットワークシステム（１）およびＰＬＣプログラムを用いてネットワークシステムの動作を模擬するシミュレーション部と、を備え、ネットワークシステムは、ＰＬＣシステムを複数有し、仮想ネットワークシステム（１）は、ＰＬＣシステムの動作を模擬する仮想ＰＬＣシステム（１０Ａ，１０Ｂ）を複数有し、シミュレーション部は、仮想ネットワークシステム（１）内で時刻を同期させながら仮想ＰＬＣシステム（１０Ａ，１０Ｂ）にＰＬＣプログラムを実行させる。【図１】
0006433635.tif 000002
【図２】
0006433635.tif 000003
【図３】
0006433635.tif 000004
【図４】
0006433635.tif 000005
【図５】
0006433635.tif 000006
【図６】
0006433635.tif 000007
【図７】
0006433635.tif 000008
【図８】
0006433635.tif 000009
【図９】
0006433635.tif 000010
【図１０】
0006433635.tif 000011