(57)【特許請求の範囲】
【請求項１】
ユーザプログラムを用いて被制御装置を制御するプログラマブルコントローラと、前記ユーザプログラムにより前記被制御装置を制御する動作を模擬してシミュレーションを行うシミュレーション装置と、を有するシミュレーションシステムであって、
前記プログラマブルコントローラは、
前記ユーザプログラムを実行して演算処理を行う演算部と、
前記演算処理の結果を格納する記憶部と、
前記プログラマブルコントローラの動作を制御するファームウェアと、
を備え、
前記演算部は前記ファームウェアに従って、
前記ユーザプログラムにおける１サイクル分の演算処理が終了した時点で、新たなサイクル分の演算処理を行わない一時停止状態に遷移するとともに、前記１サイクル分の演算処理の結果を前記記憶部に格納し、
前記一時停止状態の解除を指示する停止解除指示コマンドを前記シミュレーション装置から受信した場合に、前記一時停止状態を解除するとともに前記記憶部に格納された、前記一時停止状態に遷移する直前に行った前記１サイクル分の前記演算処理の結果を前記シミュレーション装置に送信し、
前記シミュレーション装置は、
前記被制御装置を制御する動作を前記被制御装置の２次元形状モデルまたは３次元形状モデルを制御することにより模擬してシミュレーションを行うシミュレーション部と、
前記停止解除指示コマンドを生成する停止解除指示コマンド生成部と、
を備え、
前記シミュレーション部は、
前記プログラマブルコントローラから送信される、前記演算部が前記一時停止状態に遷移する直前に前記演算部で行われた１サイクル分の前記ユーザプログラムの演算処理の結果に基づいて１サイクル分のシミュレーションを実行し、
前記１サイクル分のシミュレーションが終了した時点で、新たなサイクル分のシミュレーションを行わない一時停止状態に遷移するとともに、前記停止解除指示コマンド生成部が生成した前記停止解除指示コマンドを前記プログラマブルコントローラに送信すること、
を特徴とするシミュレーションシステム。
【請求項２】
前記演算部は、前記一時停止状態を解除した後に前記ユーザプログラムにおける新たなサイクル分の演算処理を実行すること、
を特徴とする請求項１に記載のシミュレーションシステム。
【請求項３】
前記シミュレーション部は、前記停止解除指示コマンドを前記プログラマブルコントローラに送信した後に前記プログラマブルコントローラから送信される新たな１サイクル分の前記ユーザプログラムの演算処理の結果を受信した場合に、前記シミュレーション部の一時停止状態を解除して、前記新たな１サイクル分の前記ユーザプログラムの演算処理の結果に基づいて新たな１サイクル分のシミュレーションを実行すること、
を特徴とする請求項１または２に記載のシミュレーションシステム。
【請求項４】
前記演算部が前記ユーザプログラムの１サイクル分の演算処理を実行する毎に前記一時停止状態となる第１動作モードと、前記演算部が前記一時停止状態となることなく連続して前記ユーザプログラムの複数サイクル分の演算処理を実行する第２動作モードと、を切り換えて設定する機能を備えること、
を特徴とする請求項１から３のいずれか１つに記載のシミュレーションシステム。
【請求項５】
ユーザプログラムにより被制御装置を制御する動作を模擬してシミュレーションを行うシミュレーション装置に通信可能に接続されてシミュレーションシステムを構成し、前記ユーザプログラムを用いて前記被制御装置を制御するプログラマブルコントローラであって、
前記ユーザプログラムを実行して演算処理を行う演算部と、
前記演算処理の結果を格納する記憶部と、
前記プログラマブルコントローラの動作を制御するファームウェアと、
を備え、
前記演算部は前記ファームウェアに従って、
前記ユーザプログラムにおける１サイクル分の演算処理が終了した時点で、新たなサイクル分の演算処理を行わない一時停止状態に遷移するとともに、前記１サイクル分の演算処理の結果を前記記憶部に格納し、
前記一時停止状態の解除を指示する停止解除指示コマンドを前記シミュレーション装置から受信した場合に、前記一時停止状態を解除するとともに前記記憶部に格納された、前記一時停止状態に遷移する直前に行った前記１サイクル分の演算処理の結果を前記シミュレーション装置に送信すること、
を特徴とするプログラマブルコントローラ。
【請求項６】
前記演算部は、前記一時停止状態を解除した後に前記ユーザプログラムにおける新たなサイクル分の演算処理を実行すること、
を特徴とする請求項５に記載のプログラマブルコントローラ。
【請求項７】
前記演算部が前記ユーザプログラムの１サイクル分の演算処理を実行する毎に前記一時停止状態となるシミュレーション動作モードと、前記演算部が前記一時停止状態となることなく連続して前記ユーザプログラムの複数サイクル分の演算処理を実行する通常動作モードと、を切り換える切り換え機能を備えること、
を特徴とする請求項５または６に記載のプログラマブルコントローラ。
【請求項８】
ユーザプログラムを用いて被制御装置を制御するプログラマブルコントローラに通信可能に接続されてシミュレーションシステムを構成し、前記ユーザプログラムにより前記被制御装置を制御する動作を模擬するシミュレーションを行うシミュレーション装置であって、
前記被制御装置を制御する動作を前記被制御装置の２次元形状モデルまたは３次元形状モデルを制御することにより模擬してシミュレーションを行うシミュレーション部と、
新たなサイクル分の演算処理を行わない一時停止状態にある前記プログラマブルコントローラの前記一時停止状態の解除を指示する停止解除指示コマンドを生成する停止解除指示コマンド生成部と、
を備え、
前記シミュレーション部は、
前記プログラマブルコントローラから送信される、前記プログラマブルコントローラが前記一時停止状態に遷移する直前に前記プログラマブルコントローラで行われた１サイクル分の前記ユーザプログラムの演算処理の結果に基づいて１サイクル分のシミュレーションを実行し、
前記１サイクル分のシミュレーションが終了した時点で、新たなサイクル分のシミュレーションを行わない一時停止状態に遷移するとともに、前記停止解除指示コマンド生成部が生成した前記停止解除指示コマンドを前記プログラマブルコントローラに送信すること、
を特徴とするシミュレーション装置。
【請求項９】
前記シミュレーション部は、前記停止解除指示コマンドを前記プログラマブルコントローラに送信した後に前記プログラマブルコントローラから送信される新たな１サイクル分の前記ユーザプログラムの演算処理の結果を受信した場合に、前記シミュレーション部の一時停止状態を解除して、前記新たな１サイクル分の前記ユーザプログラムの演算処理の結果に基づいて新たな１サイクル分のシミュレーションを実行すること、
を特徴とする請求項８に記載のシミュレーション装置。
【請求項１０】
ユーザプログラムの１サイクル分の演算処理を実行する毎に新たな演算を行わない一時停止状態となる第１動作モードと、前記一時停止状態となることなく連続して前記ユーザプログラムの複数サイクル分の演算処理を実行する第２動作モードと、を有する請求項５から請求項７のいずれか１つに記載のプログラマブルコントローラに対して前記第１動作モードと前記第２動作モードと切り換えて設定する動作モード設定部を備えること、
を特徴とするエンジニアリングツール。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、シミュレーションシステム、プログラマブルコントローラ、シミュレーション装置、エンジニアリングツールに関する。
【背景技術】
【０００２】  製造装置などを開発する工程における実機を用いたデバッグでは、機械の干渉により設備、加工物が破損しないように慎重な調整が求められることから、多くの開発時間が必要となっている。このため、機械の軌道や干渉の確認をパソコン上で行う３Ｄ  ＣＡＤ（computer  aided  design）シミュレータへの要望が強い。３Ｄ  ＣＡＤシミュレータでは、機械の干渉による設備、加工物の破損を心配せずにデバッグができる。このため、３Ｄ  ＣＡＤシミュレータでは、慎重な調整が不要となり、デバッグの時間を大幅に削減することが可能となる。【０００３】  しかし、プログラマブルコントローラ実機についての３Ｄ  ＣＡＤシミュレータによるシミュレーションでは、３Ｄ  ＣＡＤシミュレータにおける１サイクルあたりのプログラマブルコントローラ実機のサイクル数が不定である。このため、プログラマブルコントローラ実機で算出されたデータが３Ｄ  ＣＡＤシミュレータでのシミュレーションに反映されない場合がある。このようなデータの反映ミスは、シミュレーションの精度の低下を招く。【０００４】  そこで、シミュレーション装置のサイクルとプログラマブルコントローラ実機のサイクルとを合わせる技術として、たとえばプログラマブルコントローラがスキャンタイムを１サイクル行うと待ち状態になり、シミュレーション装置からの指令により次のサイクルを実行する方法が提案されている（たとえば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２９７２２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】  しかしながら、上記従来の技術によれば、シミュレーションの精度を向上させるためには、設計者がプログラマブルコントローラのユーザプログラムを変更する、などの対応が必要である。すなわち、従来は設計者がプログラマブルコントローラのユーザプログラムを修正する等して、プログラマブルコントローラ実機の１サイクルの時間と３Ｄ  ＣＡＤシミュレータの１サイクルの時間とを同期させている。しかし、このような処理は、設計者に余計な負担を強いることとなり、設計者の負担が大きい、という問題があった。【０００７】  本発明は、上記に鑑みてなされたものであって、設計者に負担を掛けることなく、精度の高いシミュレーションを行って開発時間を低減可能なシミュレーションシステム、プログラマブルコントローラ、シミュレーション装置、エンジニアリングツールを得ることを目的とする。
【課題を解決するための手段】
【０００８】  上述した課題を解決し、目的を達成するために、本発明にかかるシミュレーションシステムは、ユーザプログラムを用いて被制御装置を制御するプログラマブルコントローラと、前記ユーザプログラムにより前記被制御装置を制御する動作を模擬してシミュレーションを行うシミュレーション装置と、を有するシミュレーションシステムであって、前記プログラマブルコントローラは、前記ユーザプログラムを実行して演算処理を行う演算部と、前記演算処理の結果を格納する記憶部と、備え、前記演算部は、前記ユーザプログラムにおける１サイクル分の演算処理が終了した時点で、新たなサイクル分の演算処理を行わない一時停止状態に遷移するとともに、前記１サイクル分の演算処理の結果を前記記憶部に格納し、前記一時停止状態の解除を指示する停止解除指示コマンドを前記シミュレーション装置から受信した場合に、前記一時停止状態を解除するとともに前記記憶部に格納された前記１サイクル分の前記演算処理の結果を前記シミュレーション装置に送信し、前記シミュレーション装置は、前記被制御装置を制御する動作を前記被制御装置の２次元形状モデルまたは３次元形状モデルを制御することにより模擬してシミュレーションを行うシミュレーション部と、前記停止解除指示コマンドを生成する停止解除指示コマンド生成部と、を備え、前記シミュレーション部は、前記プログラマブルコントローラから送信される１サイクル分の前記ユーザプログラムの演算処理の結果に基づいて１サイクル分のシミュレーションを実行し、前記１サイクル分のシミュレーションが終了した時点で、新たなサイクル分のシミュレーションを行わない一時停止状態に遷移するとともに、前記停止解除指示コマンド生成部が生成した前記停止解除指示コマンドを前記プログラマブルコントローラに送信すること、を特徴とする。
【発明の効果】
【０００９】  本発明によれば、設計者に負担を掛けることなく、精度の高いシミュレーションを行って開発時間を低減できる、という効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施の形態１にかかるシミュレーションシステムを示す図である。
【図２】図２は、本発明の実施の形態１にかかるシミュレーションシステムにおけるシミュレーションの手順のうちＰＬＣにおける処理手順を示すフローチャートである。
【図３】図３は、本発明の実施の形態１にかかるシミュレーションシステムにおけるシミュレーションの手順のうちシミュレーション装置における処理手順を示すフローチャートである。
【図４】図４は、本発明の実施の形態１にかかるシミュレーションシステムでのシミュレーションにおける処理の流れを説明する図である。
【図５】図５は、本発明の実施の形態２にかかるエンジニアリングツールの構成を示す図である。
【図６】図６は、本発明の実施の形態にかかるシミュレーション装置およびＰＬＣとしての機能を実現するコンピュータ装置の構成の一例を模式的に示すブロック図である。
【発明を実施するための形態】
【００１１】  以下に、本発明にかかるシミュレーションシステム、プログラマブルコントローラ、シミュレーション装置、エンジニアリングツールの実施の形態を図面に基づいて詳細に説明する。なお、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【００１２】
実施の形態１．
図１は、本発明の実施の形態１にかかるシミュレーションシステムを示す図である。本実施の形態にかかるシミュレーションシステムは、シミュレーション装置１００とプログラマブルコントローラ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ：ＰＬＣ）２００とを備える。シミュレーション装置１００は、ＰＬＣ２００から取得した演算結果に基づいて被制御装置の動作をシミュレーションして表示する。ＰＬＣ２００は、ユーザプログラムに従って命令の演算を行い、演算結果を該ＰＬＣ２００に接続される被制御装置（図示せず）に出力して該被制御装置の動作を制御する。
【００１３】  シミュレーション装置１００は、入力部１１１と、表示部１１３と、不揮発性メモリ１１５と、揮発性メモリ１１７と、シミュレーション部１１９と、停止解除指示コマンド生成部１２１と、データ送信用コマンド解析部１２３と、通信部１２５と、制御部１２７と、を備える。これらの各構成部は、内部バス１２９により接続されている。
【００１４】  入力部１１１は、設計者または外部装置等からの各種情報を入力する入力手段である。
【００１５】  表示部１１３は、シミュレーションにおける被制御装置の２次元形状モデルまたは３次元形状モデル、プログラム、その他の各種の情報を表示する表示手段であり、例えば、ＬＣＤ（液晶表示デバイス）である。
【００１６】  不揮発性メモリ１１５は、データ送信用コマンドの解析結果であるＰＬＣ２００から送信されるデータ送信用コマンドから取得したＰＬＣ２００の演算結果１３３を格納するデータメモリ領域１３１を有する記憶部である。また、データメモリ領域１３１には、シミュレーション装置１００での処理データも格納される。また、不揮発性メモリ１１５は、シミュレーション部１１９がシミュレーションを実行するためのプログラムなどのシミュレーション装置１００が動作するための各種のプログラム１３７を格納するプログラムメモリ領域１３５を有する。
【００１７】  揮発性メモリ１１７は、シミュレーション装置１００における各種処理において用いられるワークエリア１３９を有する記憶部である。ワークエリア１３９では、フラグやコマンド、データが管理され、たとえば時間同期機能用フラグ１４１、停止解除指示コマンド１４３などの情報が格納される。
【００１８】  シミュレーション部１１９は、シミュレーションを実行する。シミュレーション部１１９は、シミュレーション演算部１４５と描画部１４７とを有する。シミュレーション演算部１４５は、ＰＬＣ２００の演算結果に基づいて被制御装置の動作のシミュレーションの演算を行う。描画部１４７は、シミュレーション演算部１４５での演算結果に基づいて被制御装置の２次元形状モデルまたは３次元形状モデルを描画するための演算を行い、演算結果に基づいて２次元形状モデルまたは３次元形状モデルを表示部１１３に描画する。
【００１９】  停止解除指示コマンド生成部１２１は、揮発性メモリ１１７のワークエリア１３９における時間同期機能用フラグ１４１として一時停止モードフラグが設定された場合に、ＰＬＣ２００の一時停止状態の解除を指示する停止解除指示コマンドを生成する。
【００２０】  データ送信用コマンド解析部１２３は、ＰＬＣ２００より受信したデータ送信用コマンドの解析を行い、該データ送信用コマンドをシミュレーション装置１００で使用可能な形式に変換する。
【００２１】  通信部１２５は、シミュレーション装置１００とＰＬＣ２００との間で相互にデータを送受信するために、ＰＬＣ２００の通信部２２５との間で通信を行う。通信部１２５とＰＬＣ２００の通信部２２５とは、通信回線１４９により接続されている。なお、通信部２２５との間の通信手段は特に問わない。
【００２２】  制御部１２７は、シミュレーション装置１００内における処理全般を制御する。
【００２３】  つぎに、ＰＬＣ２００の構成について説明する。ＰＬＣ２００は、入力部２１１と、表示部２１３と、不揮発性メモリ２１５と、揮発性メモリ２１７と、命令実行エンジン部２１９と、データ送信用コマンド生成部２２１と、受信データ用コマンド解析部２２３と、通信部２２５と、制御部２２７と、を備える。これらの各構成部は、内部バス２２９により接続されている。
【００２４】  入力部２１１は、ユーザまたは外部装置等からの各種情報を入力する入力手段である。
【００２５】  表示部２１３は、設計者が作成したユーザプログラム、ＰＬＣ２００に入出力される各種情報などを表示する表示手段であり、例えば、ＬＣＤ（液晶表示デバイス）である。
【００２６】  不揮発性メモリ２１５は、ＰＬＣ２００が動作するための各種プログラムおよびユーザプログラム等のプログラム２３３を格納するプログラムメモリ領域２３１と、ユーザプログラムの演算結果２３７を格納するデータメモリ領域２３５とを有する記憶部である。ここで、ユーザプログラムの演算結果の具体な例としては、たとえば被制御装置がロボットであれば、エンドエフェクタの位置、エンドエフェクタの移動速度があげられる。また、たとえば被制御装置が輪転機であれば、回転数、回転速度が挙げられる。また、たとえば被制御装置がプラント設備であれば、プロセス量などが挙げられる。
【００２７】  揮発性メモリ２１７は、ＰＬＣ２００における各種処理において用いられるワークエリア２３９を有する記憶部である。ワークエリア２３９では、フラグやコマンド、データが管理され、たとえば時間同期機能用フラグ２４１、データ送信用コマンド２４３などの情報が格納される。
【００２８】  命令実行エンジン部２１９は、ユーザプログラムに基づき該ユーザプログラムの命令を実行して演算を行う演算部である。演算結果は、被制御装置を制御するための制御データとなる。
【００２９】  データ送信用コマンド生成部２２１は、ワークエリア２３９内のデータに基づきデータ送信用コマンドを生成する。
【００３０】  受信データ用コマンド解析部２２３は、シミュレーション装置１００より受信した受信データの解析を行い、受信データをＰＬＣ２００で使用可能な形式に変換する。
【００３１】  通信部２２５は、ＰＬＣ２００とシミュレーション装置１００との間で相互にデータを送受信するために、シミュレーション装置１００の通信部１２５との間で通信を行う。通信部１２５との間の通信手段は特に問わない。
【００３２】  制御部２２７は、ＰＬＣ２００内における処理全般を制御する。
【００３３】  つぎに、シミュレーションシステムにおけるシミュレーションの手順について説明する。図２は、実施の形態１にかかるシミュレーションシステムにおけるシミュレーションの手順のうちＰＬＣ２００における処理手順を示すフローチャートである。図３は、実施の形態１にかかるシミュレーションシステムにおけるシミュレーションの手順のうちシミュレーション装置１００における処理手順を示すフローチャートである。図４は、実施の形態１にかかるシミュレーションシステムでのシミュレーションにおける処理の流れを説明する図である。図４において、ハッチング部分がシミュレーション装置１００におけるユーザプログラムの命令を実行して演算処理を実行している時間、またはＰＬＣ２００におけるシミュレーションを実行している時間を示している。
【００３４】  まず、シミュレーション装置１００およびＰＬＣ２００の電源が投入されると、ＰＬＣ２００では命令実行エンジン部２１９が、シミュレーション対象とされるユーザプログラムの命令の１サイクル分を、所定の初期データに基づいて実行して演算を行う。そして、ユーザプログラムの１サイクル分の演算が終了すると、命令実行エンジン部２１９は、エンド処理を行う（ステップＳ１１０）。エンド処理は、シミュレーション装置１００などの外部機器との通信等の、命令実行以外の処理である。このエンド処理の中で、命令実行エンジン部２１９は、ユーザプログラムの演算結果２３７を不揮発性メモリ２１５におけるデータメモリ領域２３５に格納する。
【００３５】  エンド処理が終了すると、データ送信用コマンド生成部２２１は、データメモリ領域２３５に格納されたユーザプログラムの演算結果２３７を埋め込んだデータ送信用コマンドを生成して揮発性メモリ２１７のワークエリア２３９にデータ送信用コマンド２４３として格納する（ステップＳ１２０）。
【００３６】  また、命令実行エンジン部２１９は、エンド処理が終了すると、ワークエリア２３９における時間同期機能用フラグ２４１として一時停止モードフラグを設定、すなわち一時停止モードフラグをオンにする（ステップＳ１３０）。これにより、命令実行エンジン部２１９は一時停止モードに遷移して、ユーザプログラムの実行・演算は行わず、一時停止状態となる。
【００３７】  このＰＬＣ２００の時間同期機能用フラグ２４１における一時停止モードフラグは、命令実行エンジン部２１９が、ユーザプログラムの命令を実行しない一時停止状態に遷移することを指示するためのフラグである。この一時停止モードフラグが設定された場合には、命令実行エンジン部２１９は一時停止状態に遷移する。また、一時停止モードフラグが解除、すなわち一時停止モードフラグがオフにされた場合には、命令実行エンジン部２１９は一時停止状態からユーザプログラムの命令を実行する通常のモードに遷移する。
【００３８】  このような一時停止モードフラグの設定により命令実行エンジン部２１９が一時停止状態に遷移する機能は、たとえばファームウェアなどにあらかじめ組み込まれる。このため、一命令実行エンジン部２１９が一時停止状態となる機能を用いるための設計者によるユーザプログラムの作成、ユーザプログラムの変更等の処理が不要であり、設計者に負担がかかることがない。
【００３９】  一方、シミュレーション装置１００では、電源が投入されるとシミュレーション部１１９が、被制御装置の動作のシミュレーションを所定の初期データに基づいて１サイクル分だけ実行する（ステップＳ２１０）。すなわち、シミュレーション演算部１４５は、所定の初期データに基づいて被制御装置の動作のシミュレーションの演算を行う。そして、描画部１４７は、シミュレーション演算部１４５での演算結果に基づいて被制御装置の３次元形状モデルを描画するための演算を行い、演算結果に基づいて３次元形状モデルを表示部１１３に描画する。なお、ここでは３次元形状モデルを描画する場合について示しているが、２次元形状モデルの場合も同様にして描画できる。以下においても同様である。
【００４０】  １サイクル分のシミュレーションが終了すると、シミュレーション演算部１４５は揮発性メモリ１１７のワークエリア１３９における時間同期機能用フラグ１４１として一時停止モードフラグを設定する（ステップＳ２２０）。これにより、シミュレーション部１１９は、一時停止モードに遷移し、シミュレーションは行わずに一時停止状態となる。
【００４１】  このシミュレーション装置１００の時間同期機能用フラグ１４１における一時停止モードフラグは、シミュレーション部１１９が、シミュレーションを実行しない一時停止状態に遷移することを指示するためのフラグである。この一時停止モードフラグが設定された場合には、シミュレーション部１１９は一時停止状態に遷移する。また、一時停止モードフラグが解除、すなわち一時停止モードフラグがオフにされた場合には、シミュレーション部１１９は一時停止状態からシミュレーションを実行する通常のモードに遷移する。
【００４２】  一時停止モードフラグが設定されると、停止解除指示コマンド生成部１２１は、停止解除指示コマンドを生成して、揮発性メモリ１１７のワークエリア１３９に停止解除指示コマンド１４３として格納する。
【００４３】  停止解除指示コマンド１４３が揮発性メモリ１１７のワークエリア１３９に格納されると、シミュレーション演算部１４５は、通信部１２５、通信回線１４９を介して該停止解除指示コマンド１４３をＰＬＣ２００の通信部２２５に送信する（ステップＳ２３０）。この時点で、シミュレーションシステムにおけるシミュレーション処理の１回目のサイクルであるサイクル１が終了する。
【００４４】  ＰＬＣ２００の通信部２２５は、シミュレーション装置１００から送信された停止解除指示コマンド１４３を、通信回線１４９を介して受信する（ステップＳ１４０）。ＰＬＣ２００の通信部２２５は、受信した停止解除指示コマンド１４３を受信データ用コマンド解析部２２３に送信する。受信データ用コマンド解析部２２３は、停止解除指示コマンド１４３の解析を行い、停止解除指示コマンド１４３をＰＬＣ２００で使用可能な形式に変換する。そして、受信データ用コマンド解析部２２３は、解析済みの停止解除指示コマンド１４３を命令実行エンジン部２１９に送信する。
【００４５】  また、命令実行エンジン部２１９は、揮発性メモリ２１７のワークエリア２３９に格納された、ユーザプログラムの演算結果２３７を埋め込んだデータ送信用コマンド２４３を、通信部２２５、通信回線１４９を介してシミュレーション装置１００の通信部１２５に送信する（ステップＳ１５０）。
【００４６】  また、命令実行エンジン部２１９は、解析済みの停止解除指示コマンド１４３を受信すると、ワークエリア２３９の時間同期機能用フラグ２４１の一時停止モードフラグを解除する（ステップＳ１６０）。これにより、命令実行エンジン部２１９は、一時停止モードを解除する。この時点で、ＰＬＣ２００における１回目のサイクルであるサイクル１が終了する。そして、命令実行エンジン部２１９は、ユーザプログラムにおけるつぎの１サイクル分である２回目のサイクル分のユーザプログラムの命令を実行して演算を行う。
【００４７】  なお、このような一時停止モードフラグの解除により命令実行エンジン部２１９の一時停止状態が解除される機能は、たとえばファームウェアなどにあらかじめ組み込まれる。このため、一命令実行エンジン部２１９の一時停止状態の解除機能を用いるための設計者によるユーザプログラムの作成、ユーザプログラムの変更等の処理が不要であり、設計者に負担がかかることがない。
【００４８】  そして、ユーザプログラムにおけるつぎの１サイクル分の演算が終了すると、命令実行エンジン部２１９は、エンド処理を行う（ステップＳ１７０）。このエンド処理の中で、命令実行エンジン部２１９は、新たなユーザプログラムの演算結果２３７を不揮発性メモリ２１５におけるデータメモリ領域２３５に格納する。
【００４９】  その後は、ＰＬＣ２００は、所望のシミュレーション対象のユーザプログラムについて、ステップＳ１２０に戻って処理を繰り返す。なお、データ送信用コマンド生成部２２１は、データメモリ領域２３５に格納された最新のユーザプログラムの演算結果２３７を埋め込んだデータ送信用コマンドを生成して揮発性メモリ２１７のワークエリア２３９にデータ送信用コマンド２４３として格納する。
【００５０】  一方、シミュレーション装置１００の通信部１２５は、ＰＬＣ２００から送信されたデータ送信用コマンド２４３を、通信回線１４９を介して受信する（ステップＳ２４０）。通信部１２５は、データ送信用コマンド２４３を受信すると、受信したデータ送信用コマンド２４３をデータ送信用コマンド解析部１２３に送信する。データ送信用コマンド解析部１２３は、データ送信用コマンド２４３の解析を行い、データ送信用コマンド２４３をシミュレーション装置１００で使用可能な形式に変換する。そして、データ送信用コマンド解析部１２３は、データ送信用コマンド２４３から取得したＰＬＣ２００の演算結果を不揮発性メモリ１１５のデータメモリ領域１３１にＰＬＣ２００の演算結果１３３として格納する。
【００５１】  ＰＬＣ２００の演算結果１３３がデータメモリ領域１３１に格納されると、シミュレーション部１１９は、揮発性メモリ１１７のワークエリア１３９の一時停止モードフラグを解除する（ステップＳ２５０）。これにより、シミュレーション部１１９は一時停止モードを解除し、データメモリ領域１３１に格納されたＰＬＣ２００の演算結果１３３に基づいて、つぎの１サイクル分のシミュレーションを実行する（ステップＳ２６０）。すなわち、シミュレーション演算部１４５は、ＰＬＣ２００の演算結果１３３に基づいて被制御装置の動作のシミュレーションの演算を行う。そして、描画部１４７は、シミュレーション演算部１４５での演算結果に基づいて被制御装置の３次元形状モデルを描画するための演算を行い、演算結果に基づいて３次元形状モデルを表示部１１３に描画する。
【００５２】  そして、シミュレーション装置１００は、ＰＬＣ２００からデータ送信用コマンド２４３が送信されるたびに、ステップＳ２６０からステップＳ２２０に戻って処理を繰り返す。
【００５３】
上記の本実施の形態にかかるシミュレーションシステムにおいては、ＰＬＣ２００は、ユーザプログラムを１サイクル分実行するたびに１サイクル分の終了位置、すなわちエンド処理が終了した時点で命令実行エンジン部２１９における命令実行処理すなわち演算処理を一時停止し、１サイクル分の演算処理の結果を保持する。一方、シミュレーション装置１００は、１サイクル分のシミュレーション処理が終了した時点でシミュレーション部１１９がシミュレーション処理を一時停止し、停止解除指示コマンド１４３をＰＬＣ２００に送信する。
【００５４】
ＰＬＣ２００の命令実行エンジン部２１９は、停止解除指示コマンド１４３を受け取ると一時停止状態を解除して、一時停止状態になる直前の１サイクル分の演算処理の結果をシミュレーション装置１００に送信するとともにユーザプログラムの命令を次のサイクル分だけ実行して一時停止する。そして、シミュレーション装置１００では、１サイクル分の演算処理の結果を受信すると、シミュレーション部１１９の一時停止状態を解除して該１サイクル分の演算処理の結果に基づいて次のサイクルのシミュレーションを開始する。そして、シミュレーション処理が終了した時点でシミュレーション部１１９がシミュレーション処理を一時停止し、停止解除指示コマンド１４３をＰＬＣ２００に送信する。
【００５５】
このような処理を繰り返し実行することにより、ＰＬＣ２００におけるサイクルの開始タイミングであるユーザプログラムの命令実行開始のタイミングと、シミュレーション装置１００におけるサイクルの開始タイミングであるシミュレーションの開始のタイミングと、をほぼ同時に合わせて、ＰＬＣ２００とシミュレーション装置１００との処理サイクル開始のタイミングを同期させることができる。
【００５６】
ＰＬＣ２００の１サイクルには、ユーザプログラムを１サイクル分だけ実行する時間と、ユーザプログラムの実行が終了して一時停止状態となってから停止解除指示コマンド１４３を受信して一時停止状態を解除するまでの時間とが含まれる。一方、シミュレーション装置１００の１サイクルは、シミュレーションを開始してからシミュレーションを終了して停止解除指示コマンド１４３をＰＬＣ２００に送信するまでの時間が含まれる。
【００５７】
そして、シミュレーション装置１００が停止解除指示コマンド１４３をＰＬＣ２００に送信して１サイクルを終了するタイミングと、ＰＬＣ２００が該停止解除指示コマンド１４３の受信により一時停止状態を解除して１サイクルを終了するタイミングとは、ほぼ同時であり、時間同期が取られている。また、ＰＬＣ２００がデータ送信用コマンド２４３をシミュレーション装置１００に送信するとともに次のサイクルを開始するタイミングと、シミュレーション装置１００が該データ送信用コマンド２４３を受信して次のサイクルを開始するタイミングとは、ほぼ同時であり、時間同期が取られている。
【００５８】  したがって、本実施の形態にかかるシミュレーションシステムでは、ＰＬＣ２００のサイクルと、シミュレーション装置１００のサイクルとを同期させることができる。これにより、ＰＬＣ２００の演算結果が１サイクルずつ確実にシミュレーション装置１００でのシミュレーションに適用される。たとえばＰＬＣ２００における１回目のサイクルの演算で得られたデータは、シミュレーション装置１００における２回目のサイクルに確実に用いられる。また、たとえばＰＬＣ２００における３回目のサイクルの演算で得られたデータは、シミュレーション装置１００における４回目のサイクルに確実に用いられる。
【００５９】  これにより、シミュレーション装置１００が新たなサイクルを実施する際には、同期された直前のサイクルにおけるＰＬＣ２００の演算結果を用いてシミュレーションが行われる。したがって、ＰＬＣ２００のサイクルとシミュレーション装置１００のサイクルとのずれに起因してシミュレーション装置１００におけるシミュレーション結果に誤差が生じることが防止でき、シミュレーションの精度を向上させることができる。
【００６０】
ここで、ＰＬＣ２００のサイクルと、シミュレーション装置１００のサイクルとの１サイクルの時間を同期するための機能、すなわち命令実行エンジン部２１９の一時停止状態の設定および解除の機能をあらかじめＰＬＣ２００に設けることで、設計者の負担を無くすことができる。すなわち、本実施の形態にかかるシミュレーションシステムにおいては、設計者がＰＬＣ２００のユーザプログラムを修正する等して、ＰＬＣ２００の１サイクルの時間とシミュレーション装置１００の１サイクルの時間とを同期させる必要がない。したがって、本実施の形態にかかるシミュレーションシステムにおいては、設計者によるＰＬＣ２００のユーザプログラムの修正または原状復帰のための作業が不要であり、ユーザプログラムのデバッグ処理の工数の低減、ＰＬＣ２００の開発工数の低減が可能である。
【００６１】  なお、上記においては、ＰＬＣ２００の１回目のサイクルと、シミュレーション装置１００の１回目のサイクルとが同時に始まる場合について説明したが、ＰＬＣ２００の１回目のサイクルと、シミュレーション装置１００の１回目のサイクルとは同時に始まる必要はない。ＰＬＣ２００とシミュレーション装置１００との１回目のサイクルが異なるタイミングで始まった場合でも、ＰＬＣ２００の１回目のサイクルがシミュレーション装置１００の１回目のサイクルよりも早く終われば、ＰＬＣ２００は１回目のサイクルの終了後に一時停止状態になり、上記と同様の処理が行われる。これにより、２回目のサイクルからは、ＰＬＣ２００のサイクルと、シミュレーション装置１００のサイクルとが同期される。
【００６２】  したがって、実施の形態１によれば、設計者に負担を掛けることなく、精度の高いシミュレーションを行って、ユーザプログラムのデバッグ処理およびＰＬＣ２００の開発を短時間で行える、という効果を奏する。
【００６３】実施の形態２．  実施の形態２では、実施の形態１に示したようにＰＬＣ２００の命令実行エンジン部２１９がユーザプログラムを実行する際に１サイクル毎に一時停止を行うシミュレーション動作モードと、ＰＬＣ２００の命令実行エンジン部２１９がユーザプログラムを１サイクル実施する毎に一時停止することなく連続して実行する通常動作モードと、を切り換える機能について説明する。
【００６４】  実施の形態１に示したように、ＰＬＣ２００がユーザプログラムを実行する際に１サイクル毎に一時停止を行うシミュレーション動作モードは、シミュレーションを行う場合に用いられ、実際の設備の稼働時には用いられない。このため、実際に設備を稼働する際には、ＰＬＣ２００の動作モードをシミュレーション動作モードから通常動作モードに切り換える必要がある。
【００６５】
ＰＬＣ２００のシミュレーション動作モードと通常動作モードとの切り換えは、たとえばＰＬＣ２００における揮発性メモリ２１７のワークエリア２３９の時間同期機能用フラグ２４１で管理される。この場合には、時間同期機能用フラグ２４１として、シミュレーション動作モード切り換えフラグを設ける。シミュレーション動作モード切り換えフラグは、ＰＬＣ２００の動作モードをシミュレーション動作モードに設定するためのフラグである。
【００６６】
ワークエリア２３９の時間同期機能用フラグ２４１にシミュレーション動作モード切り換えフラグが設定された場合には、ＰＬＣ２００は、実施の形態１に示したシミュレーション動作モードで動作する。一方、シミュレーション動作モード切り換えフラグが設定されていない場合には、ＰＬＣ２００は、通常の動作モードで動作する。すなわち、命令実行エンジン部２１９は、ユーザプログラムを実行する前に、ワークエリア２３９の時間同期機能用フラグ２４１におけるシミュレーション動作モード切り換えフラグの設定状態を検知する。そして、シミュレーション動作モード切り換えフラグが設定されている場合には、シミュレーション動作モードで動作する。また、シミュレーション動作モード切り換えフラグが設定されていない場合には、命令実行エンジン部２１９は、通常の動作モードで動作する。
【００６７】  シミュレーション動作モード切り換えフラグの設定および解除は、たとえばＰＬＣ２００のユーザプログラムを作成・編集を行うエンジニアリングツール３００により行うことができる。図５は、実施の形態２にかかるエンジニアリングツール３００の構成を示す図である。エンジニアリングツール３００は、入力部３１１、表示部３１３、プログラム編集部３１５、動作モード設定部３１７、通信部３１９、記憶部３２１、制御部３２３を有する。これらの各構成部は、内部バス３２５により接続されている。なお、ＰＬＣ２００の設置場所に運搬可能な可搬型でもよく、例えば監視室等に設置された据え置き型でもよい。
【００６８】  入力部３１１は、設計者または外部装置等からの各種情報を入力する入力手段である。
【００６９】  表示部３１３は、ユーザプログラムの作成・編集用の情報、シミュレーション動作モード切り換えフラグの設定および解除に関する情報など、エンジニアリングツール３００において入出力される各種情報などを表示する表示手段であり、例えば、ＬＣＤ（液晶表示デバイス）である。
【００７０】  プログラム編集部３１５は、入力部３１１から入力される情報等に基づいてユーザプログラムの作成・編集を行う。
【００７１】  動作モード設定部３１７は、ＰＬＣ２００のワークエリア２３９におけるシミュレーション動作モード切り換えフラグの設定および解除を行う。
【００７２】  通信部３１９は、エンジニアリングツール３００とＰＬＣ２００との間で相互にデータを送受信するために、ＰＬＣ２００の通信部２２５との間で通信を行う。通信部３１９とＰＬＣ２００の通信部２２５とは、例えば通信回線３２７により接続されている。なお、通信部２２５との間の通信手段は特に問わない。
【００７３】  記憶部３２１は、エンジニアリングツール３００が動作するための各種プログラム、エンジニアリングツール３００における各種処理において生成される各種データなどの情報が格納される。
【００７４】  制御部３２３は、エンジニアリングツール３００内における処理全般を制御する。
【００７５】  エンジニアリングツール３００によりＰＬＣ２００のシミュレーション動作モード切り換えフラグの設定を行う場合には、たとえば設計者が、シミュレーション動作モード切り換えフラグの設定を指示する情報を、入力部３１１を用いてエンジニアリングツール３００に入力する。制御部３２３は、この情報に基づいて、ＰＬＣ２００に対してシミュレーション動作モード切り換えフラグの設定を指示する設定指示コマンドを通信部３１９を介して送信する。
【００７６】  ＰＬＣ２００の通信部２２５は、エンジニアリングツール３００から送信された設定指示コマンドを通信回線３２７を介して受信する。ＰＬＣ２００の通信部２２５は、受信した設定指示コマンドを受信データ用コマンド解析部２２３に送信する。受信データ用コマンド解析部２２３は、設定指示コマンドの解析を行い、設定指示コマンドをＰＬＣ２００で使用可能な形式に変換する。そして、受信データ用コマンド解析部２２３は、解析済みの設定指示コマンドを制御部２２７に送信する。
【００７７】
制御部２２７は、解析済みの設定指示コマンドを受信すると、該設定指示コマンドに基づいて揮発性メモリ２１７のワークエリア２３９における時間同期機能用フラグ２４１にシミュレーション動作モード切り換えフラグを設定する。
【００７８】
また、エンジニアリングツール３００によりＰＬＣ２００のシミュレーション動作モード切り換えフラグの解除を行う場合には、制御部３２３は、設定指示コマンドの代わりに、ＰＬＣ２００に対してシミュレーション動作モード切り換えフラグの解除を指示する解除指示コマンドを、通信部３１９を介して送信する。ＰＬＣ２００では、上記と同様の経路で処理が行われて、制御部２２７が解除指示コマンドに基づいて揮発性メモリ２１７のワークエリア２３９における時間同期機能用フラグ２４１のシミュレーション動作モード切り換えフラグを解除する。
【００７９】
また、シミュレーション動作モード切り換えフラグの設定および解除は、たとえばシミュレーション動作モード切り換えフラグの設定および解除用のプログラムをＰＬＣ２００が保持することでも実施可能である。この場合は、たとえば設計者が、シミュレーション動作モード切り換えフラグの設定を指示する設定指示情報またはシミュレーション動作モード切り換えフラグの解除を指示する解除指示情報を入力部２１１を用いてＰＬＣ２００に入力する。ＰＬＣ２００の制御部２２７は、該設定指示情報または解除指示情報に基づいて、揮発性メモリ２１７のワークエリア２３９における時間同期機能用フラグ２４１のシミュレーション動作モード切り換えフラグを設定または解除する。
【００８０】  上述したように、実施の形態２では、エンジニアリングツール３００またはＰＬＣ２００に保持するシミュレーション動作モード切り換えフラグの設定および解除用のプログラムを用いて、ＰＬＣ２００の動作モードをシミュレーション動作モードまたは通常動作モードに容易に切り換えることができる。これにより、シミュレーション装置１００とＰＬＣ２００との時間同期方法について詳しくない設計者でも、ＰＬＣ２００の動作モードをシミュレーション動作モードまたは通常動作モードに容易に切り換えることができる。
【００８１】実施の形態３．  上述した実施の形態にかかるシミュレーションシステムにおけるシミュレーション装置１００およびＰＬＣ２００において実行されるシミュレーション方法を、該シミュレーション方法の処理手順が格納されたプログラムとして構成し、このプログラムを図６に示すようにＣＰＵ、記憶装置等を有するコンピュータ装置で実行することによって実現することができる。
【００８２】  図６は、上述した実施の形態にかかるシミュレーション装置１００およびＰＬＣ２００としての機能を実現するコンピュータ装置４００の構成の一例を模式的に示すブロック図である。図６に示されるように、コンピュータ装置４００は、ＬＣＤ（Liquid  Crystal  Display）などの表示装置４０１、キーボードなどの入力装置４０２、演算を行うＣＰＵ４０３、ＲＯＭ（Read  Only  Memory）などの不揮発性メモリ４０４、ＲＡＭ（Random  Access  Memory）などの揮発性メモリ４０５、表示装置４０１に表示する表示画面を記憶する表示用メモリ４０６、フラッシュメモリなどの着脱可能な外部メモリとのインタフェースである外部メモリインタフェース４０７、外部機器との間で通信を行う通信インタフェース４０８などが内部バス４０９を介して接続された構成を有する。
【００８３】  そして、不揮発性メモリ４０４に格納された上記のシミュレーション方法の処理手順が記述されたプログラムが揮発性メモリ４０５にロードされ、ＣＰＵ４０３によって実行される。このプログラムは、ハードディスク、ＣＤ（Compact  Disk）、ＲＯＭ（Read  Only  Memory）、ＭＯ（Magneto-Optical  disk）、ＤＶＤ（Digital  Versatile  DiskまたはDigital  Video  Disk）などのコンピュータ装置で読取可能な記録媒体に記録され、または、このプログラムは、インターネットなどのネットワーク（通信回線）を介して配布することもできる。この場合には、通信インタフェース４０８を介して接続された情報処理端末からプログラムが不揮発性メモリ４０４上に格納される。
【産業上の利用可能性】
【００８４】  以上のように、本発明にかかるシミュレーションシステム、プログラマブルコントローラ、シミュレーション装置、エンジニアリングツールは、ＰＬＣのユーザプログラムのデバッグ処理を実施する場合に有用である。
【符号の説明】
【００８５】
１００  シミュレーション装置、１１１  入力部、１１３  表示部、１１５  不揮発性メモリ、１１７  揮発性メモリ、１１９  シミュレーション部、１２１  停止解除指示コマンド生成部、１２３  データ送信用コマンド解析部、１２５  通信部、１２７  制御部、１２９  内部バス、１３１  データメモリ領域、１３３  ＰＬＣの演算結果、１３５  プログラムメモリ領域、１３７  プログラム、１３９  ワークエリア、１４１  時間同期機能用フラグ、１４３  停止解除指示コマンド、１４５  シミュレーション演算部、１４７  描画部、１４９  通信回線、２００  プログラマブルコントローラ（ＰＬＣ）、２１１  入力部、２１３  表示部、２１５  不揮発性メモリ、２１７  揮発性メモリ、２１９  命令実行エンジン部、２２１  データ送信用コマンド生成部、２２３  受信データ用コマンド解析部、２２５  通信部、２２７  制御部、２２９  内部バス、２３１  プログラムメモリ領域、２３３  プログラム、２３５  データメモリ領域、２３７  ユーザプログラムの演算結果、２３９  ワークエリア、２４１  時間同期機能用フラグ、２４３  データ送信用コマンド、３００  エンジニアリングツール、３１１  入力部、３１３  表示部、３１５  プログラム編集部、３１７  動作モード設定部、３１９  通信部、３２１  記憶部、３２３  制御部、３２５  内部バス、３２７  通信回線、４００  コンピュータ装置、４０１  表示装置、４０２  入力装置、４０３  ＣＰＵ、４０４  不揮発性メモリ、４０５  揮発性メモリ、４０６  表示用メモリ、４０７  外部メモリインタフェース、４０８  通信インタフェース、４０９  内部バス。
【要約】
プログラマブルコントローラ２００は、ユーザプログラムを実行して演算処理を行う命令実行エンジン部２１９と、演算処理の結果を格納する不揮発性メモリ２１５と、プログラマブルコントローラ２００の動作を制御するファームウェアと、を備え、命令実行エンジン部２１９はファームウェアに従って、ユーザプログラムにおける１サイクル分の演算処理が終了した時点で、新たなサイクル分の演算処理を行わない一時停止状態に遷移するとともに、１サイクル分の演算処理の結果を不揮発性メモリ２１５に格納し、一時停止状態の解除を指示する停止解除指示コマンドをシミュレーション装置１００から受信した場合に、一時停止状態を解除するとともに不揮発性メモリ２１５に格納された、一時停止状態に遷移する直前に行った１サイクル分の演算処理の結果をシミュレーション装置１００に送信する。【図１】
0005784263.tif 000002
【図２】
0005784263.tif 000003
【図３】
0005784263.tif 000004
【図４】
0005784263.tif 000005
【図５】
0005784263.tif 000006
【図６】
0005784263.tif 000007