(57)【要約】【課題】制御システムを構成する各機器に発生する異常を予測すること。【解決手段】シミュレーション方法は、複数の機器と、複数の機器を接続する通信ネットワークとを含むシステムの動作をシミュレーションする方法であって、複数の機器の動作および複数の機器間の通信ネットワーク上における動作をそれぞれ規定した論理プロセスを設定するステップと、複数の機器に応じてタイムテーブルを設定するステップと、複数の機器に規定された論理プロセスをタイムテーブルに従って並列実行させるステップと、を含む。【選択図】図６
2020030690.tif 000002
【特許請求の範囲】
【請求項１】
複数の機器と、複数の前記機器を接続する通信ネットワークとを含むシステムの動作をシミュレーションする方法であって、
前記複数の機器の動作および複数の前記機器間の前記通信ネットワーク上における動作をそれぞれ規定した論理プロセスを設定するステップと、
前記複数の機器に応じてタイムテーブルを設定するステップと、
前記複数の機器に規定された前記論理プロセスを前記タイムテーブルに従って並列実行させるステップと、を含む、
シミュレーション方法。
【請求項２】
前記論理プロセスの実行結果に基づいて、前記複数の機器の異常および前記複数の機器の間の通信異常を検出するステップをさらに含む、
請求項１に記載のシミュレーション方法。
【請求項３】
前記通信異常を検出するステップでは、前記複数の機器の仕様情報に基づいて、前記通信異常を検出する
請求項２に記載のシミュレーション方法。
【請求項４】
前記システムは、稼働系と、待機系とを含む冗長システムで構成されており、
前記通信異常が検出された場合に、前記稼働系から前記待機系に切り替えるステップをさらに含む、
請求項２または３に記載のシミュレーション方法。
【請求項５】
前記通信異常を検出するステップでは、前記通信異常が連続して検出された場合において前記稼働系から前記待機系に切り替わらない場合に異常であることを検出し、前記通信異常が連続して検出されない場合において前記稼働系から前記待機系に切り替わった場合に異常であることを検出する、
請求項４に記載のシミュレーション方法。
【請求項６】
複数の機器と、複数の前記機器を接続する通信ネットワークとを含むシステムを模擬したシステムモデルを生成し、前記複数の機器の動作および複数の前記機器間の前記通信ネットワーク上における動作をそれぞれ規定した論理プロセスを設定する論理プロセス設定部と、
前記複数の機器に応じてタイムテーブルを設定するタイムテーブル設定部と、
前記複数の機器に設定された前記論理プロセスを前記タイムテーブルに従って並列実行させる論理プロセス実行部と、を備える、
シミュレーションシステム。
【請求項７】
コンピュータに、複数の機器と、複数の前記機器を接続する通信ネットワークとを含むシステムの動作をシミュレーションさせるためのプログラムであって、
前記コンピュータに、
前記複数の機器の動作および複数の前記機器間の前記通信ネットワーク上における動作をそれぞれ規定した論理プロセスを設定するステップと、
前記複数の機器に応じてタイムテーブルを設定するステップと、
前記複数の機器に規定された前記論理プロセスを前記タイムテーブルに従って並列実行させるステップと、を実行させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション方法、シミュレーションシステム、およびプログラムに関する。
【背景技術】
【０００２】
ロボット、飛行機などを制御する制御システムは種々の機器で構成されており、各機器はそれぞれに実装されるソフトウェアに基づいて動作する。新規の制御システムを構築する際に、ＭＡＴＬＡＢ（登録商標）などを用いて、制御システムを複数の機能ブロックにモデル化し、制御システムの動作をシミュレーションする技術が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５６５１２５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
制御システムを構成する各機器は、異なる事業者が個々に制作することが多く、制御システム全体として動作させたときに、不具合が散見される。そのため、メーカ間の調整、機器のソフトウェアの再実装など膨大な時間と手間を要することがあった。しかしながら、特許文献１は、論理プロセスの並列実行の速度を向上する技術を提供するのみであり、制御システム全体とし動作したときに、各機器に発生する異常を予測することができないという問題がある。
【０００５】
そこで、本発明は、制御システムを構成する各機器に発生する異常を予測することのできるシミュレーション方法、シミュレーションシステム、およびプログラムを提供することを課題とする。
【課題を解決するための手段】
【０００６】
本発明のシミュレーション方法は、複数の機器と、複数の前記機器を接続する通信ネットワークとを含むシステムの動作をシミュレーションする方法であって、前記複数の機器の動作および複数の前記機器間の前記通信ネットワーク上における動作をそれぞれ規定した論理プロセスを設定するステップと、前記複数の機器に応じてタイムテーブルを設定するステップと、前記複数の機器に規定された前記論理プロセスを前記タイムテーブルに従って並列実行させるステップと、を含む。
【０００７】
この方法によれば、複数の機器の動作および複数の機器間のネットワーク動作をシミュレーションで模擬することができる。したがって、実際にシステムを構築し、システム全体として動作させることなく、システムの動作を確認することができる。
【０００８】
また、前記論理プロセスの実行結果に基づいて、前記複数の機器の異常および前記複数の機器の間の通信異常を検出するステップをさらに含むことが好ましい。
【０００９】
この方法によれば、複数の機器の動作および複数の機器間のネットワーク動作で発生する異常をシミュレーションで模擬することができる。したがって、実際にシステムを構築し、システム全体として動作させることなく、システムで発生する異常を予測することができる。
【００１０】
また、前記通信異常を検出するステップでは、前記複数の機器の仕様情報に基づいて、前記通信異常を検出することが好ましい。
【００１１】
この方法によれば、複数の機器の動作および複数の機器間のネットワーク動作で発生する異常を仕様情報との差異に基づいて検出することができる。したがって、システムで発生する異常をより精度よく予測することができる。
【００１２】
また、前記システムは、稼働系と、待機系とを含む冗長システムで構成されており、前記通信異常が検出された場合に、前記稼働系から前記待機系に切り替えるステップをさらに含むことが好ましい。
【００１３】
この方法によれば、冗長系を備えるシステムにおける複数の機器の動作および複数の機器間のネットワーク動作をシミュレーションで模擬することができる。したがって、実際にシステムを構築し、システム全体として動作させることなく、システムの動作をより精度よく確認することができる。
【００１４】
また、前記通信異常を検出するステップでは、前記通信異常が連続して検出された場合において前記稼働系から前記待機系に切り替わらない場合に異常であることを検出し、前記通信異常が連続して検出されない場合において前記稼働系から前記待機系に切り替わった場合に異常であることを検出することが好ましい。
【００１５】
この方法によれば、冗長系を備えたシステムで発生する複数の機器の動作および複数の機器間のネットワーク動作で発生する異常をシミュレーションで模擬することができる。したがって、実際にシステムを構築し、システム全体として動作させることなく、冗長系を備えたシステムで発生する異常を予測することができる。
【００１６】
本発明のシミュレーションシステムは、複数の機器と、複数の前記機器を接続する通信ネットワークとを含むシステムを模擬したシステムモデルを生成し、前記複数の機器の動作および複数の前記機器間の前記通信ネットワーク上における動作をそれぞれ規定した論理プロセスを設定する論理プロセス設定部と、前記複数の機器に応じてタイムテーブルを設定するタイムテーブル設定部と、前記複数の機器に設定された前記論理プロセスを前記タイムテーブルに従って並列実行させる論理プロセス実行部と、を備える。
【００１７】
この構成によれば、複数の機器の動作および複数の機器間のネットワーク動作で発生する異常をシミュレーションで模擬することができる。したがって、実際にシステムを構築し、システム全体として動作させることなく、システムで発生する異常を予測することができる。
【００１８】
本発明のプログラムは、コンピュータに、複数の機器と、複数の前記機器を接続する通信ネットワークとを含むシステムの動作をシミュレーションさせるためのプログラムであって、前記コンピュータに、前記複数の機器の動作および複数の前記機器間の前記通信ネットワーク上における動作をそれぞれ規定した論理プロセスを設定するステップと、前記複数の機器に応じてタイムテーブルを設定するステップと、前記複数の機器に規定された前記論理プロセスを前記タイムテーブルに従って並列実行させるステップと、を実行させる。
【００１９】
このプログラムによれば、複数の機器の動作および複数の機器間のネットワーク動作で発生する異常をシミュレーションで模擬することができる。したがって、実際にシステムを構築し、システム全体として動作させることなく、システムで発生する異常を予測することができる。
【図面の簡単な説明】
【００２０】
【図１】図１は、本発明の実施形態において制御システムモデルを構築する実際の制御システムの構成の一例を示す概略図である。
【図２】図２は、本発明の実施形態に係る制御システムをモデル化した制御システムモデルの一例を示すブロック図である。
【図３】図３は、本発明の実施形態に係る制御システムモデルの機器モデルの構成の一例を示すブロック図である。
【図４】図４は、本発明の実施形態に係る制御システムモデルに設定されたタイムチャートの一例である。
【図５】図５は、本発明の実施形態に係るシミュレーションシステムの構成を示すブロック図である。
【図６】図６は、本発明の実施形態に係るシミュレーション装置の動作の流れの一例を示すフローチャートである。
【図７】図７は、本発明の実施形態に係る冗長系の制御システムモデルの一例を示すブロック図である。
【図８】図８は、本発明の実施形態に係る冗長系の制御システムモデルの動作の流れの一例を示すシーケンス図である。
【図９】図９は、本発明の実施形態に係る冗長系の制御システムモデルの動作の流れの一例を示すシーケンス図である。
【図１０】図１０は、本発明の実施形態に係る冗長系の制御システムモデルの動作の流れの一例を示すシーケンス図である。
【図１１】図１１は、本発明の実施形態に係る冗長系の制御システムモデルの異常があった場合の動作の流れの一例を示すシーケンス図である。
【図１２】図１２は、本発明の実施形態に係る冗長系の制御システムモデルの異常があった場合の動作の流れの一例を示すシーケンス図である。
【発明を実施するための形態】
【００２１】
以下に添付図面を参照して、本発明に係る実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではなく、また、実施形態が複数ある場合には、各実施形態を組み合わせて構成するものも含む。
【００２２】
図１を用いて、本発明の実施形態でモデル化するシステムの構成について説明する。図１は、モデル化する制御システムの構成の一例を示す概略図である。
【００２３】
図１に示すように、制御システム１は、第１の機器２−１と、第２の機器２−２と、・・・、第Ｎの機器２−Ｎ（Ｎは３以上の整数）とを含む。第１の機器２−１から第Ｎの機器２−Ｎは、それぞれ、通信ネットワーク３を介して、互いに通信可能に接続されている。制御システム１は、例えば、飛行機やロケットなどを制御する制御システムである。
【００２４】
第１の機器２−１から第Ｎの機器２−Ｎは、それぞれ、アプリケーションと、ミドルウェアと、ＯＳ（Operating  System）と、ハードウェアとから構成されている。ここで、ＯＳは、例えば、ＴＯＰＰＥＲＳ(Toyohashi  Open  Platform  for  Embedded  Real-Time  Systems)などの組み込み用のＯＳである。第１の機器２−１から第Ｎの機器２−Ｎにおいて、ミドルウェアと、ＯＳと、ハードウェアとは共通であり、アプリケーションのみが異なっている。第１の機器２−１から第Ｎの機器２−Ｎは、飛行機やロケットなどを制御するために、それぞれ、アプリケーションに従った物理量を測定している。第１の機器２−１から第Ｎの機器２−Ｎが測定する物理量に特に制限はないが、例えば、機体の角度や加速度である。本実施形態では、アプリケーションは、例えば、Ｃ言語で記述されているものとする。第１の機器２−１から第Ｎの機器２−Ｎは、それぞれが独立して動作する機器である。具体的には、第１の機器２−１から第Ｎの機器２−Ｎは同期をとるために、第１の機器２−１から第Ｎの機器２−Ｎのうちの一台が、例えば、３２ミリ秒間隔で他の機器に同期信号を出力する。各機器は、同期信号を基準として、アプリケーションに応じた動作を実行する。
【００２５】
通信ネットワーク３は、第１の機器２−１から第Ｎの機器２−Ｎのそれぞれを互いに通信可能に接続するネットワークである。通信ネットワーク３に特に制限はないが、ＭＩＬ−ＳＴＤ−１５５３Ｂや、Ｅｔｈｅｒｎｅｔ（登録商標）などの通信規格が用いられる。
【００２６】
次に、図２を用いて、実際のシステムを模擬して生成したシステムモデルについて説明する。図２は、図１に示す制御システム１を模擬した制御システムモデルを示すブロック図である。本実施形態では、制御システム１を模擬したシステムモデルをソフトウェアで構築し、シミュレーションによって制御システム１の動作を模擬する。
【００２７】
図２に示すように、制御システムモデル１０は、第１の機器モデル１１−１と、第２の機器モデル１１−２と、・・・、第Ｎの機器モデル１１−Ｎと、仮想通信ネットワーク１２とを含む。制御システムモデル１０は、モデルエディタ上において、複数のブロックと、各ブロック間の信号の送受信を表す結線によって構成される。
【００２８】
本実施形態において、制御システムモデル１０は、例えば、ＭＡＴＬＡＢ上で動作するＳｉｍｕｌｉｎｋ（登録商標）によって生成される。具体的には、本実施形態では、Ｓｉｍｕｌｉｎｋ機能によって機器に相当する制御ブロックを配置することで制御システムモデル１０を生成し、閉ループシミュレーションを実行する。
【００２９】
図３を用いて、各機器モデルの構成について説明する。図３は、第１の機器モデル１１−１の構成を示すブロック図である。第２の機器モデル１１−２から第Ｎの機器モデル１１−Ｎの構成については、第１の機器モデル１１−１と同様なので説明は省略する。
【００３０】
図３に示すように、第１の機器モデル１１−１は、模擬アプリケーション１３と、模擬ミドルウェア１４と、模擬ＯＳ１５とを有している。
【００３１】
模擬アプリケーション１３は、図１に図示の第１の機器２−１に搭載されているアプリケーションの仕様書や、冗長性に関する仕様書などに基づいて生成された、第１の機器２−１のアプリケーションを模擬したモデルである。この場合、模擬アプリケーション１３は、第１の機器２−１が持つアプリケーションと同じ言語で記述されていることが好ましい。具体的には、第１の機器２−１のアプリケーションがＣ言語で記述されている場合には、模擬アプリケーション１３は、Ｃ言語で記述されていることが好ましい。
【００３２】
模擬ミドルウェア１４は、図１に図示の第１の機器２−１のミドルウェアの仕様書に基づいて生成された、第１の機器２−１のミドルウェアを模擬したモデルである。
【００３３】
模擬ＯＳ１５は、図１に図示の第１の機器２−１のＯＳの仕様書に基づいて生成された、第１の機器２−１のＯＳを模擬したモデルである。模擬ＯＳ１５は、例えば、ソースコードで構成されており、あらかじめ定められた所定の時間にのみ模擬アプリケーション１３が動作するように構成されている。このため、制御システムモデル１０を構成する第１の機器モデル１１−１から第Ｎの機器モデル１１−Ｎは、あらかじめ定められたタイムテーブルに従って対応する機器の動作を模擬する。タイムテーブルは、第１の機器モデル１１−１から第Ｎの機器モデル１１−Ｎの設計に応じて変更することができる。
【００３４】
再び図２を参照する。仮想通信ネットワーク１２は、図１に図示の第１の機器２−１の通信ネットワーク３の仕様書に基づいて生成された、第１の機器２−１の通信ネットワーク３を模擬したモデルである。ここで、仮想通信ネットワーク１２は、通信ネットワーク３を完全に模擬したモデルである必要はなく、簡易的に模擬したモデルであってもよい。すなわち、仮想通信ネットワーク１２は、例えば、１５５３Ｂ通信や、Ｅｔｈｅｒｎｅｔなどを仮想的に実現している。仮想通信ネットワーク１２には、第１の機器モデル１１−１から第Ｎの機器モデル１１−Ｎが接続されている。これにより、第１の機器モデル１１−１から第Ｎの機器モデル１１−Ｎは、それぞれ、仮想通信ネットワーク１２を介してデータを送受信できるようになっている。この際、仮想通信ネットワーク１２は、負荷の違いによる処理時間のバラツキや、動作の違いによる実行時間のバラツキを模擬することができる。
【００３５】
本実施形態では、第１の機器モデル１１−１から第Ｎの機器モデル１１−Ｎは、それぞれ、第１の機器２−１から第Ｎの機器２−Ｎの仕様書に基づいて生成されている。仮想通信ネットワーク１２は、通信ネットワーク３の仕様書に基づいて生成されている。そのため、本実施形態は、各機器と、モデル化された各機器のインターフェースは一致しているので、各機器の仕様書に従って、所望の動作を模擬して実行できるようなタイムテーブルを生成することができる。また、本実施形態では、各機器に接続されている通信ネットワーク３だけでなく、各機器に接続された電源もモデル化されており、電源の動作も模擬して動作させることができる。したがって、本実施形態は、例えば、後述するシミュレーションシステムにおいて、ネットワーク上における制御システム１のタイムテーブルに従った挙動をシミュレーションすることができる。
【００３６】
図４を用いて、タイムテーブルの一例について説明する。図４は、タイムテーブルの一例を示す図である。
【００３７】
図４では、第１の機器モデル１１−１と、第２の機器モデル１１−２と、第３の機器モデル１１−３と、第４の機器モデル１１−４との４台の機器モデルを動作させるためのタイムテーブルを示している。タイムテーブル中の「１」から「２４」までの数字は、それぞれの機器モデルが対応する機器の動作を模擬する順番を示している。図４に図示のタイムテーブルは、Ｔ１からＴ１６の１６個の時間間隔を有しており、第１の機器モデル１１−１から第４の機器モデル１１−４は、分割された区間内で動作するように構成されている。区間Ｔ１からＴ１６は、同一の時間間隔を有しており、例えば、２００マイクロ秒から３００マイクロ秒である。このように、同期信号を出力する間隔である３２ミリ秒を短い時間に分割したうえで、第１の機器モデル１１−１から第４の機器モデル１１−４を周期的に動作させる。これにより、分割した区間において、複数の機器が同時に動作しているようなシミュレーションを実行することができる。図４に示すタイムテーブルは、例示であり、本発明を限定するものではない。各機器モデルに対応する機器の動作を模擬させる順番や、時間間隔は設計に応じて任意に変更可能である。
【００３８】
図４のタイムテーブルを具体的に説明すると、区間Ｔ１では、第１の機器モデル１１−１、第２の機器モデル１１−２、第３の機器モデル１１−３、第４の機器モデル１１−４の順に、それぞれに対応する機器の動作を模擬することを意味している。区間Ｔ１では、例えば、第１の機器モデル１１−１が同期信号を出力し、第２の機器モデル１１−２から第４の機器モデル１１−４と同期する動作を模擬している。
【００３９】
区間Ｔ２と、区間Ｔ３とでは、第１の機器モデル１１−１のみが対応する機器の動作を模擬する。ここでは、例えば、第１の機器２−１が、特定の物理量をセンサによって検出する動作を模擬している。
【００４０】
区間Ｔ４と、区間Ｔ５とでは、第１の機器モデル１１−１と、第２の機器モデル１１−２とが、対応する機器の動作を模擬する。ここでは、例えば、第１の機器２−１が検出した検出結果を、第２の機器２−２へ送信する動作を模擬している。
【００４１】
区間Ｔ６と、区間Ｔ７とでは、第１の機器モデル１１−１と、第３の機器モデル１１−３とが対応する機器の動作を模擬する。ここでは、例えば、第１の機器２−１が検出した検出結果を、第３の機器へ送信する動作を模擬している。
【００４２】
区間Ｔ８では、第１の機器モデル１１−１と、第４の機器モデル１１−４とが対応する機器の動作を模擬する。ここでは、例えば、第１の機器２−１が検出した検出結果を第４の機器へ送信する動作を模擬している。
【００４３】
区間Ｔ９から区間Ｔ１１では、第１の機器モデル１１−１から第４の機器モデル１１−４は、それぞれ、対応する機器の動作を模擬しない。
【００４４】
区間Ｔ１２と、区間Ｔ１３とでは、第１の機器モデル１１−１と、第２の機器モデル１１−２とが対応する機器の動作を模擬する。ここでは、例えば、第２の機器２−２が、第１の機器２−１から受信した検出結果に対するフィードバックを第１の機器２−１へ送信する動作を模擬している。
【００４５】
区間Ｔ１４と、区間Ｔ１５とでは、第１の機器モデル１１−１と、第３の機器モデル１１−３とが対応する機器の動作を模擬する。ここでは、例えば、第３の機器が、第１の機器２−１から受信した検出結果に対するフィードバックを第１の機器２−１に送信する動作を模擬している。
【００４６】
区間Ｔ１６では、それぞれ、対応する機器の動作を模擬しない。
【００４７】
上述のとおり、本実施形態では、タイムテーブルに従って、通常であればそれぞれが独立して動作する各機器を、１つの区間で２以上の機器が同時に動作しているようなシミュレーションを実行することができる。本実施形態では、タイムテーブルに従ってシミュレーションさせた結果、タイムテーブルと異なる結果が出力された場合に異常であると判定する。
【００４８】
次に、図５を用いて、本発明の実施形態に係るシミュレーションシステムの構成について説明する。図５は、本発明の実施形態に係るシミュレーションシステムの構成を示すブロック図である。
【００４９】
図３に示すように、シミュレーションシステム１００は、操作部１１０と、表示部１２０と、シミュレーション装置１３０とを備える。
【００５０】
操作部１１０は、例えば、タッチパネルや、キーボードで構成された入力装置である。ユーザは、操作部１１０を操作することによって、シミュレーション装置１３０に対して各種の機能を発揮させることができる。ユーザは、例えば、操作部１１０を操作して、制御システム１を構成する各機器のスペックなどを含む製品情報をソースコードで入力する。ユーザがソースコードで入力した製品情報は、仕様情報１５３として、後述するシミュレーション装置１３０の記憶部１５０に格納される。また、ユーザは、操作部１１０を操作して、仕様情報１５３のソースコードを書き換えることで、各機器の仕様をアップデートすることができる。
【００５１】
表示部１２０は、例えば、液晶ディスプレイ（LCD：Liquid  Crystal  Display）または有機ＥＬ（Organic  Electro-Luminescence）ディスプレイなどを含むディスプレイである。表示部１２０は、例えば、シミュレーション結果などをユーザに対して提供する。
【００５２】
シミュレーション装置１３０は、制御システム１のシミュレーションを実行する装置であり、制御部１４０と、記憶部１５０とを備えている。
【００５３】
制御部１４０は、シミュレーションシステム１００を制御する。具体的には、制御部１４０は、記憶部１５０に記憶されているプログラムを展開して実行することによってシミュレーションシステム１００を制御する。制御部１４０は、例えば、記憶部１５０が記憶しているシミュレーションプログラム１５１を展開して実行することによって制御システムモデル１０を生成することができる。制御部１４０は、例えば、ＣＰＵ（Central  Processing  Unit）を含む電子的な回路などで実現することができる。
【００５４】
記憶部１５０は、制御部１４０がシミュレーション装置１３０を制御するためのプログラムを記憶している。記憶部１５０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、または、ハードディスク、ソリッドステートドライブ、光ディスクなどの記憶装置である。記憶部１５０は、例えば、シミュレーションプログラム１５１と、シミュレーション結果情報１５２と、仕様情報１５３とを記憶している。
【００５５】
次に、制御部１４０について具体的に説明する。制御部１４０は、論理プロセス設定部１４１と、タイムテーブル設定部１４２と、論理プロセス実行部１４３と、異常検出部１４４とを有する。
【００５６】
論理プロセス設定部１４１は、複数の機器の動作および複数の機器間のネットワーク動作をそれぞれ規定した論理プロセスを設定する。具体的には、論理プロセス設定部１４１は、記憶部１５０が記憶するシミュレーションプログラム１５１を展開して実行することによって制御システムモデル１０を生成する。そして、論理プロセス設定部１４１は、制御システムモデル１０を構成する第１の機器モデル１１−１から第Ｎの機器モデル１１−Ｎと、仮想通信ネットワーク１２とに対してユーザが所望する動作を実行させるための論理プロセスを設定する。ここで、「論理プロセス」とは、制御システム１の動作を模擬した動作を実行させるためのプログラムのことを意味する。また、論理プロセスを設定するとは、制御システムモデル１０にユーザが所望する動作を実行させるための、プログラムを設定することを意味する。
【００５７】
タイムテーブル設定部１４２は、制御システムモデル１０を構成する第１の機器モデル１１−１から第Ｎの機器モデル１１−Ｎと、仮想通信ネットワーク１２とに応じたタイムテーブルを設定する。具体的には、タイムテーブル設定部１４２は、記憶部１５０が記憶する各機器の製品情報を示す仕様情報１５３に基づいて、各機器に応じたタイムテーブルを設定する。タイムテーブル設定部１４２は、仕様情報１５３に基づいているので、最適な動作をするようにタイムテーブルを設定することができる。最適な動作とは、例えば、各機器を動作させるために必要な時間を最小にすることのできる動作である。
【００５８】
論理プロセス実行部１４３は、制御システムモデル１０において、論理プロセス設定部１４１によって規定された論理プロセスを、タイムテーブル設定部１４２によって設定されたタイムテーブルに従って実行する。すなわち、論理プロセス実行部１４３は、制御システム１の動作を模擬したシミュレーションを実行する。論理プロセス実行部１４３は、シミュレーション結果を表示部１２０に出力する。これにより、シミュレーション結果がユーザに提供される。論理プロセス実行部１４３は、シミュレーション結果を記憶部１５０にシミュレーション結果情報１５２として記憶する。
【００５９】
異常検出部１４４は、論理プロセス実行部１４３が実行したシミュレーション結果と、予め設定した動作の実行結果の期待値とを比較する。これにより、異常検出部１４４は、シミュレーション結果と、期待値との差異を検出する。
【００６０】
具体的には、異常検出部１４４は、タイムテーブルと、仕様情報１５３とに基づいて、設定された論理プロセスの所望のシミュレーション結果を算出する。異常検出部１４４は、シミュレーション結果情報１５２と、所望のシミュレーション結果を比較することによって、所望のシミュレーション結果との差異を検出する。具体的には、異常検出部１４４によるシミュレーション結果情報１５２と、所望のシミュレーション結果とが一致する場合、ユーザは、制御システム１は正常に動作すると判定することができる。一方、シミュレーション結果情報１５２と、所望のシミュレーション結果とが一致しない場合、ユーザは、予め設定した期待値が間違っているか、実行したプログラムが間違っているか、制御システム１の構成が間違っているかのいずれかであることを判定することができる。
【００６１】
図６を用いて、シミュレーション装置１３０の制御部１４０の動作の流れについて説明する。図６は、制御部１４０の動作の流れを示すフローチャートである。
【００６２】
まず、制御部１４０は、複数の機器の動作および複数の機器間のネットワーク動作をそれぞれ規定した論理プロセスを設定する（ステップＳ１１）。そして、制御部１４０は、ステップＳ１２に進む。
【００６３】
制御部１４０は、論理プロセスに対して複数の機器に応じたタイムテーブルを設定する（ステップＳ１２）。そして、制御部１４０は、ステップＳ１３に進む。
【００６４】
制御部１４０は、設定された論理プロセスを、複数の機器に応じて設定されたタイムテーブルに従って、並列実行する（ステップＳ１３）。そして、制御部１４０は、ステップＳ１４に進む。
【００６５】
制御部１４０は、ステップＳ１３で実行したシミュレーション結果と、あらかじめ定められている所望の結果とを比較する（ステップＳ１４）。そして、制御部１４０は、ステップＳ１５に進む。
【００６６】
シミュレーション結果と、所望の結果とが一致する場合（ステップＳ１５の「Ｙｅｓ」）、制御部１４０は、ステップＳ１６に進み、制御システム１は正常に動作すると判定する（ステップＳ１６）。そして、制御部１４０は、図６の動作を終了する。
【００６７】
一方、シミュレーション結果と、所望の結果とが一致しない場合（ステップＳ１５の「Ｎｏ」）、制御部１４０は、ステップＳ１７に進み、制御システム１には異常があると判定する（ステップＳ１７）。そして、制御部１４０は、図６の動作を終了する。
【００６８】
図７を用いて、本実施形態において、制御システムに異常が発生した場合の動作を実行させるシステムの一例について説明する。図７は、冗長系を備えた制御システムの一例を示す図である。
【００６９】
図７に示すように、制御システム１Ａは、アクチュエータ２０と、稼働系システム３０と、待機系システム４０とを備える。
【００７０】
稼働系システム３０は、第１のコントローラ３１と、第１のセンサ３２とを備える。第１のコントローラ３１は、例えば、ＣＰＵを含む電子的な回路で実現することができる。第１のセンサ３２は、特定の物理量を測定する。制御システム１Ａでは、第１のコントローラ３１が第１のセンサ３２を制御して、特定の物理量を測定させる。そして、第１のコントローラ３１は、第１のセンサ３２に測定させた物理量に応じて、アクチュエータ２０を制御する。
【００７１】
待機系システム４０は、第２のコントローラ４１と、第２のセンサ４２とを備える。待機系システム４０は、稼働系システム３０の冗長系のシステムである。第２のコントローラ４１と、第２のセンサ４２とは、それぞれ、第１のコントローラ３１と、第１のセンサ３２と同様の動作を実行する。
【００７２】
図８と、図９と、図１０とを用いて、制御システム１Ａにおける、所望の動作の流れについて説明する。図８は、通信異常が発生しない場合の制御システム１Ａの動作の一例を示すシーケンス図である。図９は、通信異常が一回発生した場合の制御システム１Ａの動作の一例を示すシーケンス図である。図１０は、通信異常が連続して発生した場合の制御システム１Ａの動作の一例を示すシーケンス図である。図８と、図９と、図１０との動作の流れは、シミュレーションシステム１００で実行される論理プロセスの所望の流れであるものとする。
【００７３】
図８を参照して、通信異常が発生しない場合の制御システム１Ａの所望の動作の流れを説明する。
【００７４】
第１のコントローラ３１は、第１のセンサ３２に対して問い合わせを送信することで、センサデータを要求する（ステップＳ１０１）。第１のセンサ３２は、問い合わせに従って、物理量を測定したセンサデータを第１のコントローラ３１に送信する（ステップＳ１０２）。第１のコントローラ３１は、受けたセンサデータに応じた動作をアクチュエータ２０に実行させるために、コマンドＡをアクチュエータ２０に送信する（ステップＳ１０３）。
【００７５】
ステップＳ１０１からステップＳ１０３と並行して、第２のコントローラ４１は、第２のセンサ４２に対して問い合わせを送信することで、センサデータを要求する（ステップＳ１０４）。第２のセンサ４２は、問い合わせに従って、物理量を測定したセンサデータを第２のコントローラ４１に送信する（ステップＳ１０５）。ここで、第２のセンサ４２が送信するセンサデータは、ステップＳ１０２で第１のセンサ３２が第１のコントローラ３１に送信したセンサデータと同一である。第２のコントローラ４１は、受けたセンサデータに応じた動作をアクチュエータ２０に実行させるために、コマンドＢをアクチュエータ２０に送信する（ステップＳ１０６）。
【００７６】
アクチュエータ２０は、通常、稼働系である第１のコントローラ３１から受けたコマンドＡを採用する（ステップＳ１０７）。アクチュエータ２０は、コマンドＡに従った動作を実行する。
【００７７】
以降、ステップＳ１０８からステップＳ１１４に示すように、ステップＳ１０１からステップＳ１０７の動作を繰り返す。
【００７８】
図９を参照して、通信異常が一回発生した場合の制御システム１Ａの所望の動作の流れを説明する。
【００７９】
ステップＳ２０１からステップＳ２０７は、ステップＳ１０１からステップＳ１０７と同様なので、説明は省略する。
【００８０】
第１のコントローラ３１は、第１のセンサ３２に対して問い合わせを送信する（ステップＳ２０８）。第１のコントローラ３１は、通信の異常などが発生しセンサデータを第１のセンサ３２から受けることができなかった場合、ステップＳ２０３で送信したコマンドＡをアクチュエータ２０に送信する（ステップＳ２０９）。
【００８１】
ステップＳ２１０からステップＳ２１２は、ステップＳ２０４からステップＳ２０６の動作の繰り返しなので、説明は省略する。
【００８２】
アクチュエータ２０は、通信異常が一回目の場合は、稼働系である第１のコントローラ３１から受けたコマンドＡを採用する（ステップＳ２１３）。この場合、アクチュエータ２０は、ステップＳ２０７で実行した動作と同様の動作を実行する。
【００８３】
以降、ステップＳ２１４からステップＳ２２０に示すように、ステップＳ１０１からステップＳ１０７の動作を繰り返す。
【００８４】
図１０を参照して、通信異常が連続して発生した場合の制御システム１Ａの所望の動作の流れを説明する。
【００８５】
ステップＳ３０１からステップＳ３１３は、ステップＳ２０１からステップＳ２１３と同様なので、説明は省略する。
【００８６】
第１のコントローラ３１は、第１のセンサ３２に対して問い合わせを送信する（ステップＳ３１４）。第１のコントローラ３１は、通信の異常などにより連続してセンサデータを受けることができなかった場合、異常があったことを示すコマンドＡをアクチュエータ２０に送信する（ステップＳ３１５）。
【００８７】
ステップＳ３１６からステップＳ３１８は、ステップＳ３０４からステップＳ３０６の動作の繰り返しなので、説明は省略する。
【００８８】
アクチュエータ２０は、異常があったことを示すコマンドＡを受けた場合には、コマンドＢを採用する（ステップＳ３１９）。この場合、アクチュエータ２０は、コマンドＢに従った動作を実行する。
【００８９】
以降、ステップＳ３２０からステップＳ３２３に示すように、ステップＳ３１６からステップＳ３１９の動作を繰り返す。
【００９０】
図１１と、図１２とを参照して、シミュレーションシステム１００が機器の異常又は通信異常を検出する方法について説明する。図１１は、通信異常が発生しない場合の制御システム１Ａの動作の異常の一例を示すシーケンス図である。図１２は、通信異常が一回発生した場合の制御システム１Ａの動作の異常の一例を示すシーケンス図である。
【００９１】
図１１を参照して、通信異常が発生していない場合の制御システム１Ａにおいて、シミュレーションシステム１００が異常を検出する方法の一例について説明する。
【００９２】
ステップＳ４０１からステップＳ４１４は、ステップＳ１０１からステップＳ１１４と同様なので、説明は省略する。また、ステップＳ４１５からステップＳ４２０は、ステップＳ１０１からステップＳ１０６の繰り返しなので説明は省略する。
【００９３】
アクチュエータ２０は、コマンドＢを採用する（ステップＳ４２１）。この場合、アクチュエータ２０は、コマンドＢに従った動作を実行する。しかしながら、通信異常が発生していない場合には、図８に示すように、アクチュエータ２０は、コマンドＡを採用することが所望されている。シミュレーションシステム１００の制御部１４０は、図８に図示の通信異常が発生していない場合の所望の動作の流れと、図１１に図示の実際のシミュレーション結果とを比較することによって、制御システム１Ａで発生する異常を予測することができる。これにより、シミュレーションシステム１００の制御部１４０は、図１１の動作の流れが異常であると判定する。
【００９４】
図１２を参照して、通信異常が一回発生した場合の制御システム１Ａにおいて、シミュレーションシステム１００が異常を検出する方法の一例について説明する。
【００９５】
ステップＳ５０１からステップＳ５０８は、ステップＳ２０１からステップＳ２０８と同様なので、説明は省略する。
【００９６】
第１のコントローラ３１は、異常があったことを示すコマンドＡを送信する（ステップＳ５０９）。ステップＳ５１０からステップＳ５１２は、ステップＳ２１０からステップＳ２１２と同様なので説明は省略する。
【００９７】
アクチュエータ２０は、異常があったことを示すコマンドＡを受けているのでコマンドＢを採用する（ステップＳ５１３）。この場合、アクチュエータ２０は、コマンドＢに従った動作を実行する。ステップＳ５１４からステップＳ５１９は、ステップＳ２０１からステップＳ２０６の繰り返しなので説明は省略する。この場合、アクチュエータ２０は、コマンドＡを受けているにも関わらず、コマンドＢを採用する（ステップＳ５２０）。
【００９８】
しかしながら、通信異常の発生が一回目である場合には、図９に示すように、ステップＳ５０３のコマンドＡを送信し、アクチュエータ２０は、ステップＳ５０３のコマンドＡを採用することが所望されている。シミュレーションシステム１００は、図９に図示の通信異常が一回発生した場合の所望の動作の流れと、図１２に図示の実際のシミュレーション結果とを比較することによって、制御システム１Ａで発生する異常を予測することができる。これにより、シミュレーションシステム１００の制御部１４０は、図１２の動作の流れが異常であると判定する。
【００９９】
上述のとおり、本実施形態は、複数の機器が通信ネットワークを介して接続されている制御システムにおいて、実際に制御システムを構築することなく、制御システムの動作を確認することができる。これにより、本実施形態は、制御システムに発生する異常を予測することができる。
【０１００】
本実施形態では、機器間の通信異常を予測する場合について説明したが、これは例示であり、本発明を限定するものではない。本実施形態は、誤った信号を出力するなどの機器に発生する異常も検出することができる。
【符号の説明】
【０１０１】
１，１Ａ  制御システム
２−１  第１の機器
２−２  第２の機器
２−Ｎ  第Ｎの機器
３  通信ネットワーク
１０  制御システムモデル
１１−１  第１の機器モデル
１１−２  第２の機器モデル
１１−Ｎ  第Ｎの機器モデル
１２  仮想通信ネットワーク
１３  模擬アプリケーション
１４  模擬ミドルウェア
１５  模擬ＯＳ
２０  アクチュエータ
３０  稼働系システム
３１  第１のコントローラ
３２  第１のセンサ
４０  待機系システム
４１  第２のコントローラ
４２  第２のセンサ
１００  シミュレーションシステム
１１０  操作部
１２０  表示部
１３０  シミュレーション装置
１４０  制御部
１４１  論理プロセス設定部
１４２  タイムテーブル設定部
１４３  論理プロセス実行部
１４４  異常検出部
１５０  記憶部
１５１  シミュレーションプログラム
１５２  シミュレーション結果情報
１５３  仕様情報
【図１】
2020030690.tif 000003
【図２】
2020030690.tif 000004
【図３】
2020030690.tif 000005
【図４】
2020030690.tif 000006
【図５】
2020030690.tif 000007
【図６】
2020030690.tif 000008
【図７】
2020030690.tif 000009
【図８】
2020030690.tif 000010
【図９】
2020030690.tif 000011
【図１０】
2020030690.tif 000012
【図１１】
2020030690.tif 000013
【図１２】
2020030690.tif 000014