(57)【特許請求の範囲】
【請求項１】
プラント設備の管理を行う制御装置で実行される複数の処理プログラムの試験を行うシミュレーション装置であって、
互いに処理の優先順位が設定され、それぞれに処理周期が設定された複数の処理プログラムと、
疑似的な時間を示す積算値をカウントする疑似時間計時手段と、
前記複数の処理プログラムの起動タイミングを制御する起動制御手段とを備え、
前記起動制御手段は、前記複数の処理プログラムのうちの起動対象の処理プログラムを、前記疑似時間計時手段によってカウントされた積算値が前記起動対象の処理プログラムに設定された前記処理周期に対応する値に至ったタイミングで、前記起動対象の処理プログラムに設定された前記優先順位に従って、起動させるように制御し、
前記疑似時間計時手段は、当該起動対象の処理プログラムの実行の終了が検知されたことを契機に、前記起動対象の処理プログラムに設定された処理周期に対応する値だけ前記積算値をカウントアップし、
前記複数の処理プログラムは、前記制御装置内で実行されるプログラムに対応する複数の処理プログラムを含む一方の処理プログラム群と、前記一方の処理プログラム群と独立に優先順位が設定された複数の処理プログラムであって、前記プラント設備である制御対象装置内で実行されるプログラムに対応する複数の処理プログラムを含む他方の処理プログラム群とによって構成され、
前記他方の処理プログラム群の前記複数の処理プログラムの中には、前記一方の処理プログラム群の前記処理プログラムと前記他方の処理プログラム群の前記処理プログラムとの間のデータ通信処理を模擬する処理プログラムが含まれており、
前記起動制御手段は、前記積算値に基づいて、前記一方の処理プログラム群及び前記他方の処理プログラム群毎に起動タイミングを制御可能とし、前記一方の処理プログラム群の前記複数の処理プログラムと前記他方の処理プログラム群の前記複数の処理プログラムとを並行して実行させる、
シミュレーション装置。
【請求項２】
前記複数の処理プログラムには、最短の処理周期に対して整数倍した前記処理周期がそれぞれ設定されており、
前記起動制御手段は、前記複数の処理プログラムのうち、前記積算値が前記処理周期に対応する値に至ったものを前記起動対象の処理プログラムとして複数選択し、選択した複数の前記起動対象の処理プログラムを前記優先順位に従って起動させるように制御し、
前記疑似時間計時手段は、前記起動制御手段によって選択された前記複数の起動対象の処理プログラムの実行の終了が検知されたことを契機に前記最短の処理周期に対応する値だけ前記積算値をカウントアップする、
請求項１記載のシミュレーション装置。
【請求項３】
実時間を計時する実時間計時手段をさらに備え、
前記疑似時間計時手段は、前記積算値をカウントアップする際に、前記実時間計時手段によって計時された実時間を参照しながら当該カウントアップするまでの時間に待機時間を挿入する、
請求項１又は２記載のシミュレーション装置。
【請求項４】
前記疑似時間計時手段は、前記実時間と前記積算値とが同一時間を表す値になるように、前記待機時間を挿入する、
請求項３記載のシミュレーション装置。
【請求項５】
前記疑似時間計時手段は、前記積算値の示す時間が実時間に対して所定の比率となるように、前記待機時間を挿入する、
請求項３記載のシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置内で実行される処理プログラムの試験を行うシミュレーション装置に関するものである。
【背景技術】
【０００２】
従来から、プラント設備等の設備の監視や設備の稼動管理を行う制御装置が用いられており、このような制御装置内では監視または稼動管理に関連した処理プログラム（または、「ロジック」ともいう）が実行されている。処理プログラムを制御装置に新たに実装したり、処理プログラムをバージョンアップした際には、それらの処理プログラムが正常に動作するかを予め試験することが一般的に行われる。
【０００３】
例えば、下記特許文献１には、制御装置又はそのエミュレータとプラントモデルとを組み合わせたシミュレータシステムが開示されている。このシミュレータシステムは、制御装置と制御対象モデルをシミュレートするモデル演算装置とを備える。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−６３３９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上記の従来のシミュレータシステムでは、制御装置の演算周期は固定周期に設定されている。そのため、制御装置用のシミュレータの有するクロックの精度によっては演算周期の誤差が変動する可能性がある。そのため、複数の演算周期を有する複数の処理プログラムを同時に試験した場合に、ある時間内での実行回数の関係が実機とは異なってしまう場合があった。
【０００６】
そこで、本発明は、かかる課題に鑑みて為されたものであり、複数の演算周期を有する複数の処理プログラム間での実行回数の関係を安定化し、複数の処理プログラムの連携動作を効率的に確認することが可能なシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明の一側面に係るシミュレーション装置は、制御装置で実行される複数の処理プログラムの試験を行うシミュレーション装置であって、互いに処理の優先順位が設定され、それぞれに処理周期が設定された複数の処理プログラムと、疑似的な時間を示す積算値をカウントする疑似時間計時手段と、複数の処理プログラムの起動タイミングを制御する起動制御手段とを備え、起動制御手段は、複数の処理プログラムのうちの起動対象の処理プログラムを、疑似時間計時手段によってカウントされた積算値が起動対象の処理プログラムに設定された処理周期に対応する値に至ったタイミングで、起動対象の処理プログラムに設定された優先順位に従って、起動させるように制御し、疑似時間計時手段は、当該起動対象の処理プログラムの実行の終了が検知されたことを契機に、起動対象の処理プログラムに設定された処理周期に対応する値だけ積算値をカウントアップする。
【０００８】
かかる構成のシミュレーション装置によれば、起動制御手段によって、疑似時間計時手段によってカウントされる積算値に基づいて、その積算値が予め設定された処理周期に対応する値に至ったタイミングで、予め設定された優先順位に従って、複数の処理プログラムが起動される。そして、起動対象の処理プログラムの実行が終了したことを契機に、その処理プログラムの処理周期に対応する値だけ積算値がカウントアップされる。これにより、内蔵するクロックの精度に影響されることなく、所定時間内の複数の処理プログラム間の実行回数の関係を安定化させることができる。その結果、複数の処理プログラムの連携動作を効率的に確認することが可能となる。
【０００９】
複数の処理プログラムには、最短の処理周期に対して整数倍した処理周期がそれぞれ設定されており、起動制御手段は、複数の処理プログラムのうち、積算値が処理周期に対応する値に至ったものを起動対象の処理プログラムとして複数選択し、選択した複数の起動対象の処理プログラムを優先順位に従って起動させるように制御し、疑似時間計時手段は、起動制御手段によって選択された複数の起動対象の処理プログラムの実行の終了が検知されたことを契機に最短の処理周期に対応する値だけ積算値をカウントアップする、ことも好適である。
【００１０】
かかる構成を採れば、複数の処理プログラムの処理周期のうちで最短の処理周期の分だけ積算値がカウントアップされることにより、最小限の積算値の更新処理で所定時間内の複数の処理プログラム間の実行回数の関係を安定化させることができる。その結果、シミュレーション装置の処理負荷を最小限にすることで安定した処理プログラムの実行確認が可能にされる。
【００１１】
また、実時間を計時する実時間計時手段をさらに備え、疑似時間計時手段は、積算値をカウントアップする際に、実時間計時手段によって計時された実時間を参照しながら当該カウントアップするまでの時間に待機時間を挿入する、ことも好適である。
【００１２】
この場合、実時間に対する処理プログラムの実行周期を適宜調整して複数の処理プログラムの負荷を変えた試験が可能となる。
【００１３】
さらに、疑似時間計時手段は、実時間と積算値とが同一時間を表す値になるように、待機時間を挿入する、ことも好適である。かかる疑似時間計時手段を備えれば、実時間に対する処理プログラムの実行周期を適宜調整して複数の処理プログラムの実機を想定した試験が可能となる。
【００１４】
またさらに、疑似時間計時手段は、積算値の示す時間が実時間に対して所定の比率となるように、待機時間を挿入する、ことも好適である。かかる疑似時間計時手段を備えれば、実時間に対する処理プログラムの実行周期を適宜調整して複数の処理プログラムの負荷を様々変更した試験が可能となる。
【００１５】
さらにまた、互いに独立に優先順位が設定された複数の処理プログラムをそれぞれ含む複数の処理プログラム群を備え、起動制御手段は、積算値に基づいて、複数の処理プログラム群毎に起動タイミングを制御可能とされている、ことも好適である。
【００１６】
かかる構成を採れば、制御装置、制御対象装置等の複数の装置に実装される複数の処理プログラム間での連携動作の確認が可能となる。
【００１７】
また、複数の処理プログラム群の処理プログラム間での通信を模擬する処理プログラムをさらに備える、ことも好適である。この場合、複数の装置に実装される複数の処理プログラム間での通信の試験も併せて可能となる。
【発明の効果】
【００１８】
本発明によれば、複数の演算周期を有する複数の処理プログラム間での実行回数の関係を安定化し、複数の処理プログラムの連携動作を効率的に確認することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の好適な一実施形態に係るシミュレーション装置の構成概略図である。
【図２】図１の処理プログラムの一例を示すラダー図である。
【図３】（ａ）は、実機の制御装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図であり、（ｂ）は、図１のシミュレーション装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図である。
【図４】（ａ）は、実機の制御装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図であり、（ｂ）は、図１のシミュレーション装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図である。
【図５】（ａ）は、実機の制御装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図であり、（ｂ）は、図１のシミュレーション装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図である。
【図６】図１のシミュレーション装置による処理プログラムの起動制御の手順を示すフローチャートである。
【図７】（ａ）は、実機の制御装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図であり、（ｂ）は、本実施形態のシミュレーション装置１によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図である。
【図８】（ａ）は、実機の制御装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図であり、（ｂ）〜（ｄ）は、変形例のシミュレーション装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図である。
【図９】変形例のシミュレーション装置による処理プログラムの起動制御の手順を示すフローチャートである。
【図１０】本発明の変形例にかかるシミュレーション装置の構成概略図である。
【図１１】（ａ）は、実機の制御装置によって起動が制御された処理プログラム群の演算のタイミングを示すタイミングチャート図であり、（ｂ）は、シミュレーション装置によって実時間値を基に起動が制御された処理プログラム群の演算のタイミングを示すタイミングチャート図であり、（ｃ）は、本変形例のシミュレーション装置によって起動が制御された処理プログラム群の演算のタイミングを示すタイミングチャート図である。
【発明を実施するための形態】
【００２０】
以下、添付図面を参照して本発明の実施形態を詳細に説明する。なお、図面の説明において同一又は相当要素には同一の符号を付し、重複する説明を省略する。
【００２１】
図１は、本発明の好適な一実施形態に係るシミュレーション装置の構成概略図である。同図に示されるシミュレーション装置１は、プラント設備等の設備の監視や設備の稼動管理を行う制御装置に実装される処理プログラム（「ロジック」ともいう）の動作を試験するための装置である。シミュレーション装置１の試験対象とする制御装置としては、例えば、発電装置のガスタービンの動作を制御する制御装置が挙げられるが、これに限定されるものではない。試験対象の制御装置は、例えば、ＰＬＣ（programmable logic controller）等によって構成され、通常は、複数の演算周期で複数の優先順位で起動されるロジックが実装される。
【００２２】
シミュレーション装置１は、パーソナルコンピュータ、サーバ装置等に代表される汎用のコンピュータで構成される情報処理装置である。詳細には、シミュレーション装置１は、物理的には、１又は複数のＣＰＵと、ＲＡＭ及びＲＯＭ等の主記憶装置と、外部装置との間でデータを送受信するデータ送受信デバイスである通信モジュールと、半導体メモリ及びハードディスク装置等の補助記憶装置と、マウス、タッチパネル及びキーボード等の入力デバイスと、ディスプレイ及びスピーカ等の出力デバイスとを含むコンピュータシステムとして構成されている。シミュレーション装置１の各機能は、ＣＰＵ、ＲＡＭ等のハードウェア上に１又は複数の所定のコンピュータソフトウェアを読み込ませることにより、ＣＰＵの制御のもとで通信モジュール、入力デバイス、および出力デバイスを動作させるとともに、ＲＡＭや補助記憶装置におけるデータの読み出し及び書き込みを行うことで実現される。
【００２３】
次に、シミュレーション装置１の機能構成について説明する。シミュレーション装置１は、図１に示すように、機能的には、複数の処理プログラム１１ａ，１１ｂ，…、起動制御部（起動制御手段）２１、疑似時間タイマー部（疑似時間計時手段）２２、実時間タイマー部（実時間計時手段）２３、積算値格納部３０を備えている。以下、シミュレーション装置１の各機能部の機能について詳細に説明する。
【００２４】
複数の処理プログラム１１ａ，１１ｂ，…は、シミュレーション装置１の試験対象の処理プログラムであり、予めシミュレーション装置１に読み込まれることによりシミュレーション装置１によって実行可能とされている。図２には、シミュレーション装置１に読み込まれる処理プログラムの一例を示すラダー図である。この処理プログラムは、ＰＬＣ用のプログラムであり、（１）入力値“x2”の内容確認、（２）出力値“y70”の内容確認、（３）入力値“x2”が“オン”、または出力値“y70”が“オン”ならば出力値“y70”を“オン”に設定する、という（１）〜（３）の処理を行い、（３）の処理が終わったら、次の演算周期で（１）〜（３）の処理を繰り返すという演算動作が組み込まれたものである。これらの複数の処理プログラム１１ａ，１１ｂ，…には、それぞれ、処理の周期を示す演算周期情報（例えば、40msec）と、他の処理プログラムとの間の互いの優先順位の関係を示す優先順位情報（例えば、優先度“１”）が予め設定されている。
【００２５】
疑似時間タイマー部２２は、疑似的な時間を示す積算値をカウントする。具体的には、疑似時間タイマー部２２は、複数の処理プログラム１１ａ，１１ｂ，…のうちの起動制御部２１によって起動された処理プログラムの実行の終了が検知されたことを契機に、その処理プログラムに設定された演算周期に対応する値だけ積算値をカウントアップする。より具体的には、疑似時間タイマー部２２は、起動制御部２１によって起動された処理プログラムの実行の終了が検知されたことを契機に、複数の処理プログラム１１ａ，１１ｂ，…のうちの最短の演算周期に対応する値だけ積算値をカウントアップする。そして、疑似時間タイマー部２２は、カウントした最新の積算値を積算値格納部３０に格納する。
【００２６】
実時間タイマー部２３は、実時間を計時する計時手段である。例えば、実時間タイマー部２３は、シミュレーション装置１内で機能するＯＳ（Operating System）が有するクロックを用いて実時間を計時する。
【００２７】
起動制御部２１は、複数の処理プログラム１１ａ，１１ｂ，…の起動を制御する。すなわち、起動制御部２１は、疑似時間タイマー部２２によってカウントされている積算値を参照し、その積算値が演算周期に対応するに至っている起動対象のプログラムを、シミュレーション装置１にダウンロードされている試験対象の複数の処理プログラム１１ａ，１１ｂ，…の中から選択する。そして、起動制御部２１は、選択した複数の処理プログラムを、それらに設定されている優先順位の順に従って起動させるように制御する。この際、起動制御部２１は、複数の処理プログラムを重複して実行させることなく、１つの処理プログラムの実行が終了した直後に次の優先順位の処理プログラムを起動するように制御する。
【００２８】
ここで、起動制御部２１による試験対象の処理プログラムの起動制御の一例について、図３〜図５を参照しつつ説明する。図３〜５において、（ａ）は、実機の制御装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図であり、（ｂ）は、本実施形態のシミュレーション装置１によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図である。なお、これらの例においては、試験対象の処理プログラム“Ａ”に対して演算周期“10msec”および優先度“１”が設定され、試験対象の処理プログラム“Ｂ”に対して演算周期“20msec”および優先度“２”が設定され、試験対象の処理プログラム“Ｃ”に対して演算周期“40msec”および優先度“３”が設定されている。この場合は、それぞれの処理プログラム“Ａ”，“Ｂ”，“Ｃ”に、最小の演算周期“10msec”を整数倍した演算周期“10msec”，“20msec”，“40msec”がそれぞれ設定されている。また、実機の制御装置には、ＲＴＯＳ（Real Time Operating System）が実装されており、このＲＴＯＳのクロック機能により、シミュレーション装置１の実時間タイマー部２３に比較して精度の高いタイマー（ＲＴＯＳタイマー）が実現されている。
【００２９】
図３（ａ）に示すように、実機においては、精度の比較的高いＲＴＯＳタイマーを用いて処理プログラム“Ａ”，“Ｂ”，“Ｃ”の起動が制御されることにより、ＲＴＯＳタイマーが“0msec”のタイミングで処理プログラム“Ａ”，“Ｂ”，“Ｃ”が優先度の順番で起動される。次に、ＲＴＯＳタイマーが“10msec”のタイミングで処理プログラム“Ａ”のみが起動され、その後、ＲＴＯＳタイマーが“20msec”のタイミングで処理プログラム“Ａ”，“Ｂ”が優先度の順番で起動される。さらに、ＲＴＯＳタイマーが“30msec”のタイミングで処理プログラム“Ａ”のみが起動される。このように、実機では、ＲＴＯＳタイマーを参照しながら、予め設定された演算周期及び優先度で複数の処理プログラムをシングルタスクで起動することによって、所定の時間（例えば40msec）の間で複数の処理プログラム“Ａ”，“Ｂ”，“Ｃ”間の実行回数の関係が一定とされる。具体的には、40msecの間の処理プログラム“Ａ”，“Ｂ”，“Ｃ”の実行回数は、それぞれ、４回、２回、１回に設定される。
【００３０】
一方、図３（ｂ）に示すように、シミュレーション装置１においては、疑似時間タイマー部２２のカウントする積算値が初期値の“0msec”のタイミングで、その積算値が演算周期に対応する処理プログラム“Ａ”，“Ｂ”，“Ｃ”が起動対象の処理プログラムとして選択され、それらの処理プログラム“Ａ”，“Ｂ”，“Ｃ”が優先度の順番に従ってシングルタスクで起動される。このとき、選択されたプログラムの中で優先順位が一番低い処理プログラム“Ｃ”の実行の終了が検出されたことを契機に、積算値が最短の演算周期“10msec”の値だけカウントアップされて“10msec”に更新される。次に、そのときの積算値“10msec”が演算周期に対応する処理プログラム“Ａ”のみが起動対象の処理プログラムとして選択され、その処理プログラム“Ａ”が起動された後に、処理プログラム“Ａ”の実行の終了が検出されたことを契機に、積算値が最短の演算周期“10msec”の値だけカウントアップされて“20msec”に更新される。その後、同様にして、積算値“20msec”が演算周期に対応する処理プログラム“Ａ”，“Ｂ”が起動対象の処理プログラムとして選択され、その処理プログラム“Ａ”，“Ｂ”が順番に起動された後に、処理プログラム“Ｂ”の実行の終了が検出されたことを契機に、積算値が“30msec”に更新される。次に、積算値“30msec”が演算周期に対応する処理プログラム“Ａ”のみが起動対象の処理プログラムとして選択され、その処理プログラム“Ａ”が起動された後に、処理プログラム“Ａ”の実行の終了が検出されたことを契機に、積算値が“40msec”に更新される。
【００３１】
このような起動制御部２１による起動制御により、実機における処理プログラム“Ａ”，“Ｂ”，“Ｃ”の実時間“40msec”の間における実行回数の関係と同一の関係を、疑似時間タイマー部２２が積算値“40msec”をカウントするまでの間で設定することができる。具体的には、シミュレーション装置１においても、積算値“40msec”をカウントする間の処理プログラム“Ａ”，“Ｂ”，“Ｃ”の実行回数を、それぞれ、４回、２回、１回に設定することができる。
【００３２】
図４（ａ）には、実機において複数の処理プログラムの実行が競合する場合を示している。つまり、ＲＴＯＳタイマーが“10msec”のタイミングでは、図３（ａ）の場合と同様に、処理プログラム“Ａ”の起動が制御されている。その一方、その時点で処理プログラム“Ｃ”が起動中であるために、処理プログラム“Ｃ”の実行が中断され優先度がより高い処理プログラム“Ａ”の実行の割り込みが発生する。つまり、実機では、シングルタスク方式が採用されているので、処理プログラムの実行時間によっては優先度に従った割り込みが発生しうる。
【００３３】
これに対して、図４（ｂ）に示すように、シミュレーション装置１においては、割り込み処理は発生し得ない。それは、積算値が“0msec”のタイミングで起動対象の処理プログラム“Ａ”，“Ｂ”，“Ｃ”が選択されて、それらの起動が制御された後に、優先度の一番低い処理プログラム“Ｃ”の実行が終了するまでには、積算値がカウントアップされないためである。このようにしても、実機における処理プログラム“Ａ”，“Ｂ”，“Ｃ”の実行回数の関係と同一の関係を設定することができることに変わりはない。従って、シミュレーション装置１においては、クロックの精度が低くて演算時間を正確に管理することができない場合でも、実行回数の関係は忠実に再現することができる。
【００３４】
図５（ａ）には、実機において３つの処理プログラムの実行が同時に競合する場合を示している。ＲＴＯＳタイマーが“30msec”のタイミングでは、３つの処理プログラム“Ａ”，“Ｂ”，“Ｃ”の実行が競合しているが、優先度に従って、処理プログラム“Ａ”の実行が最優先され、次に、処理プログラム“Ｂ”が実行された後に、処理プログラム“Ｂ”の実行が終了してから処理プログラム“Ｃ”が起動される。これに対して、図５（ｂ）に示すように、シミュレーション装置１では割り込み処理は発生しないが、実機における処理プログラム“Ａ”，“Ｂ”，“Ｃ”の実行回数の関係と同一の関係を設定することができる。
【００３５】
次に、図６を参照しながら、シミュレーション装置１による処理プログラムの起動制御の手順について説明する。図６は、シミュレーション装置１による処理プログラムの起動制御の手順を示すフローチャートである。
【００３６】
まず、シミュレーション装置１への外部からの指示入力により、複数の処理プログラムの試験が開始されると、積算値格納部３０に格納された積算値が初期値“0msec”にリセットされる（ステップＳ０１）。その後、ダウンロードされている試験対象の複数の処理プログラムに予め設定されている演算周期が特定される（ステップＳ０２）。併せて、試験対象の複数の処理プログラムに予め設定されている優先順位も特定される（ステップＳ０３）。
【００３７】
続いて、シミュレーション装置１の起動制御部２１により、疑似時間タイマー部２２によってカウントされている現在の積算値が積算値格納部３０から参照される（ステップＳ０４）。次に、起動制御部２１により、複数の処理プログラムの中から積算値が演算周期に対応する値に至っている処理プログラムが起動対象の処理プログラムとして抽出される（ステップＳ０５）。
【００３８】
その後、起動制御部２１により、抽出された複数の処理プログラムが優先順位の順番に従ってシングルタスクで起動される（ステップＳ０６）。そして、起動制御部２１により、抽出された複数の処理プログラムの全ての実行の終了が検知される（ステップＳ０７）。そうすると、疑似時間タイマー部２２によって、最短の演算周期の分だけ積算値がカウントアップされる（ステップＳ０８）。その後、試験終了の条件が満たされたか（例えば、所定の積算値に至ったか否か）が判定され（ステップＳ０９）、条件を満たしていない場合は（ステップＳ０９；ＮＯ）処理がステップＳ０４に戻され、条件を満たしている場合には（ステップＳ０９；ＹＥＳ）、処理が終了される。
【００３９】
以上説明したシミュレーション装置１によれば、起動制御部２１によって、疑似時間タイマー部２２によってカウントされる積算値に基づいて、その積算値が予め設定された処理周期に対応する値に至ったタイミングで、予め設定された優先順位に従って、複数の処理プログラム１１ａ，１１ｂ，…が起動される。そして、起動対象の処理プログラム１１ａ，１１ｂ，…の実行が終了したことを契機に、その処理プログラム１１ａ，１１ｂ，…の最短の処理周期に対応する値だけ積算値がカウントアップされる。これにより、内蔵するクロックの精度に影響されることなく、所定時間内の複数の処理プログラム間の実行回数の関係を安定化させることができる。その結果、複数の処理プログラムの連携動作を効率的に確認することが可能となる。
【００４０】
例えば、シミュレーション装置１として使用される汎用コンピュータに内蔵されるＯＳのクロックはその精度が低い場合がある（例えば、40msec以上の誤差を有する）。その場合であっても、実機での所定時間（例えば、40msec）内での複数の処理プログラムの実行回数の関係を、それらの処理プログラムの実行順序を規定の順序に設定しながら、シミュレーション装置１でも保つことができる。その結果、互いにデータを入出力する複数の処理プログラム間の連携動作を、効率的に試験することができる。
【００４１】
また、疑似時間タイマー部２２は、複数の処理プログラムの処理周期のうちで最短の処理周期の分だけ積算値をカウントアップする。これにより、最小限の積算値の更新処理で積算値の示す所定時間内の複数の処理プログラム間の実行回数の関係を安定化させることができる。その結果、シミュレーション装置１の処理負荷を最小限にすることで安定した処理プログラムの実行確認が可能にされる。
【００４２】
なお、本発明は、上述した実施形態に限定されるものではない。
【００４３】
例えば、シミュレーション装置１の疑似時間タイマー部２２は、積算値をカウントアップする際に、シミュレーション装置１内の実時間タイマー部２３によって計時されている実時間を参照しながら、カウントアップするまでの時間に待機時間を挿入してもよい。
【００４４】
図７及び図８には、このような場合の起動制御部２１による試験対象の処理プログラムの起動制御の例を示している。図７において、（ａ）は、実機の制御装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図であり、（ｂ）は、本変形例のシミュレーション装置１によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図である。図７の例では、図３と同様な演算時間及び優先度が設定されている。この場合、図３に示した例において積算値が“120msec”にカウントアップされる直前に待機時間が挿入されている。すなわち、疑似時間タイマー部２２は、積算値を“120msec”にカウントアップする際に、実時間タイマー部２３によってカウントされている実時間値を参照し、その実時間値が“120msec”に至るまで、すなわち、実時間値が更新後の積算値と同一時間の値になるまで待機時間Δｔ１の間待機した後に、積算値を“120msec”にカウントアップする。このようにすることで、処理プログラムをユーザの体感時間と同じ時間で繰り返し実行させることができる。
【００４５】
同様にして、疑似時間タイマー部２２は、処理プログラムの繰り返し実行のペースを調整するために、積算値の示す時間が実時間に対して所定の比率となるように待機時間を挿入してもよい。図８において、（ａ）は、実機の制御装置によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図であり、（ｂ）〜（ｄ）は、本変形例のシミュレーション装置１によって起動が制御された処理プログラムの演算のタイミングを示すタイミングチャート図である。これらの例においては、試験対象の処理プログラム“Ａ”に対して演算周期“20msec”および優先度“１”が設定され、試験対象の処理プログラム“Ｂ”に対して演算周期“40msec”および優先度“２”が設定されている。そして、図８（ｂ）に示す例においては、疑似時間タイマー部２２は、積算値“120msec”をカウントアップする時点でその積算値の示す時間“120msec”が、実時間値の示す時間“120msec”と同一の時間となるように待機時間Δｔ２を挿入する。これにより、処理プログラムの繰り返しのペースを実時間と一致させることができる。また、図８（ｃ）に示す例においては、疑似時間タイマー部２２は、積算値“120msec”をカウントアップする時点でその積算値の示す時間“120msec”が、実時間値の示す時間“60msec”の２倍の時間となるように待機時間Δｔ４を挿入する。これにより、処理プログラムの繰り返しのペースを実時間よりも速くすることができる。また、図８（ｄ）に示す例においては、疑似時間タイマー部２２は、積算値“120msec”をカウントアップする時点でその積算値の示す時間“120msec”が、実時間値の示す時間“240msec”の０．５倍の時間となるように待機時間Δｔ６を挿入する。これにより、処理プログラムの繰り返しのペースを実時間よりも遅くすることができる。
【００４６】
図９は、本変形例にかかるシミュレーション装置１による処理プログラムの起動制御の手順を示すフローチャートである。図９のステップＳ１０２〜ステップＳ１０７、及びステップＳ１０９〜ステップＳ１１０の処理は、上述した図６のステップＳ０２〜ステップＳ０９の処理と同一である。ステップＳ１０１では、積算値が初期値“0msec”にリセットされると同時に、実時間タイマー部２３の保持する実時間値も初期値“0msec”にリセットされる。そして、ステップＳ１０８では、疑似時間タイマー部２２が、積算値を所定値にカウントアップする際に実時間タイマー部２３でカウントされている実時間値を参照しながら待機時間を挿入する（ステップＳ１０８）。
【００４７】
以上のような変形例によれば、実時間に対する処理プログラムの実行周期を適宜調整して複数の処理プログラムの負荷を変えた試験が可能となる。すなわち、処理プログラムの繰り返しのペースを実機と同一にして複数の処理プログラムを対象にした実機を想定した試験を行うこともできるし、処理プログラムの繰り返しのペースを実機のペースに対して所定割合にして複数の処理プログラムの負荷を様々変更した試験を行うこともできる。
【００４８】
また、本発明の他の変形例としては、互いに独立に優先順位が設定された複数の処理プログラム群を処理対象としてもよい。図１０は、本発明の変形例にかかるシミュレーション装置１Ａの構成を示している。このように、シミュレーション装置１Ａには、処理プログラム１１ａ，１１ｂ，…を含む処理プログラム群１１と、処理プログラム１２ａ，…を含む処理プログラム群１２とが実装されている。そして、シミュレーション装置１Ａの起動制御部２１は、疑似時間タイマー部２２がカウントした積算値を基に、２つの処理プログラム群１１，１２毎に起動タイミングを制御可能に構成されている。
【００４９】
図１１には、このような場合の起動制御部２１による試験対象の処理プログラム群の起動制御の例を示し、（ａ）は、実機の制御装置によって起動が制御された処理プログラム群の演算のタイミングを示すタイミングチャート図であり、（ｂ）は、シミュレーション装置によって実時間値を基に起動が制御された処理プログラム群の演算のタイミングを示すタイミングチャート図であり、（ｃ）は、本変形例のシミュレーション装置１Ａによって起動が制御された処理プログラム群の演算のタイミングを示すタイミングチャート図である。ここでは、処理プログラム“Ａ”、“Ｂ”によって一方の処理プログラム群が構成され、処理プログラム“Ｃ”によって他方の処理プログラム群が構成されている。さらに、他方の処理プログラム群には、処理プログラム“Ｃ”と処理プログラム“Ａ”との間のデータ通信処理を模擬する処理プログラム“Ｄ”も含まれている。この処理プログラム“Ｄ”は、例えば、シミュレーション装置１Ａ内の共有メモリに対するデータの書き込みおよび読み出しの動作によって実現される。すなわち、装置からデータを送信する処理が、共有メモリに対するデータの書き込みによってシミュレートされ、装置でデータを受信する処理が、共有メモリからのデータの読み出しによってシミュレートされる。また、この処理プログラム“Ｄ”は、シミュレーション装置１Ａ内でのソケット通信によってシミュレートされてもよい。一方の処理プログラム群は、例えば実機の制御装置内で実行されるプログラム群に対応し、他方の処理プログラム群は、例えば実機の制御対象装置内で実行されるプログラム群に対応する。そして、試験対象の処理プログラム“Ａ”に対して演算周期“10msec”および優先度“１”が設定され、試験対象の処理プログラム“Ｂ”に対して演算周期“20msec”および優先度“２”が設定され、試験対象の処理プログラム“Ｂ”に対して演算周期“60msec”および優先度“３”が設定され、処理プログラム“Ｄ”は処理プログラム“Ｃ”の直後に起動されるように設定されている。
【００５０】
図１１（ｂ）に示すように、内蔵するクロック等を基にカウントされた実時間値を基に複数の処理プログラム群を起動させた場合は、クロックの精度が悪いために処理プログラム群の間の実行タイミングにずれが生じる。そのため、通信を伴う処理を試験しようとしても、処理プログラム間の通信を介した連携動作を再現することができない。これに対して、図１１（ｃ）に示すように、シミュレーション装置１Ａによれば、処理プログラム群の起動制御に際して同一の積算値を参照することにより、処理プログラム群の間の実行タイミングのずれを防止できる。その結果、制御装置、制御対象装置等の複数の装置に実装される複数の処理プログラム間での連携動作の確認が可能となる。
【符号の説明】
【００５１】
１、１Ａ  シミュレーション装置
１１、１２  処理プログラム群
１１ａ、１１ｂ、１２ａ  処理プログラム
２１  起動制御部
２２  疑似時間タイマー部
２３  実時間タイマー部
３０  積算値格納部
【図１】
0006676883.tif 000002
【図２】
0006676883.tif 000003
【図３】
0006676883.tif 000004
【図４】
0006676883.tif 000005
【図５】
0006676883.tif 000006
【図６】
0006676883.tif 000007
【図７】
0006676883.tif 000008
【図８】
0006676883.tif 000009
【図９】
0006676883.tif 000010
【図１０】
0006676883.tif 000011
【図１１】
0006676883.tif 000012