"記憶部と演算部とを備えたコントローラサポート装置であって、前記記憶部は、コントローラサポートプログラムと、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データとの格納に用いられ、前記第1テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第1テストプログラムの、前記シミュレータにおいて測定された実行時間であり、前記第2テスト実行時間は、前記テストソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第2テストプログラムの、前記コントローラにおいて測定された実行時間であり、前記コントローラサポートプログラムは、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、前記シミュレータにおいて動作するオブジェクトプログラムである第1制御プログラムの、前記シミュレータにおいて測定された実行時間である第1制御実行時間を取得する処理と、前記第1制御実行時間を前記較正データを用いて変換することにより、前記制御ソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第2制御プログラムの、前記コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、前記推定実行時間を表すデータを出力するための処理とを、前記演算部に実行させる、コントローラサポート装置。前記記憶部は、さらに、前記第1制御プログラムの格納に用いられ、前記コントローラサポートプログラムは、さらに、前記コントローラサポート装置を前記シミュレータとして機能させるための処理と、前記シミュレータにおいて前記第1制御プログラムを実行することにより前記第1制御実行時間を測定する処理とを、前記演算部に実行させる、請求項1に記載のコントローラサポート装置。前記コントローラサポート装置は、さらに、表示部を備え、前記記憶部は、さらに、前記第1テストプログラムと、前記第2テスト実行時間との格納に用いられ、前記コントローラサポートプログラムは、さらに、前記シミュレータにおいて前記第1テストプログラムを実行することにより前記第1テスト実行時間を測定する処理と、前記第1テスト実行時間および前記第2テスト実行時間から前記較正データを算出する処理とを、前記演算部に実行させ、前記推定実行時間を表すデータを出力するための処理は、前記表示部に前記推定実行時間を表示させるための表示用データを作成する処理である、請求項2に記載のコントローラサポート装置。記憶部と演算部とを備えたコントローラサポート装置において実行されるためのコントローラサポートプログラムであって、前記記憶部は、前記コントローラサポートプログラムと、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データとの格納に用いられ、前記第1テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第1テストプログラムの、前記シミュレータにおいて測定された実行時間であり、前記第2テスト実行時間は、前記テストソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第2テストプログラムの、前記コントローラにおいて測定された実行時間であり、前記コントローラサポートプログラムは、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、前記シミュレータにおいて動作するオブジェクトプログラムである第1制御プログラムの、前記シミュレータにおいて測定された実行時間である第1制御実行時間を取得する処理と、前記第1制御実行時間を前記較正データを用いて変換することにより、前記制御ソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第2制御プログラムの、前記コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、前記推定実行時間を表すデータを出力するための処理とを、前記演算部に実行させる、コントローラサポートプログラム。前記記憶部は、さらに、前記第1制御プログラムの格納に用いられ、前記コントローラサポートプログラムは、さらに、前記コントローラサポート装置を前記シミュレータとして機能させるための処理と、前記シミュレータにおいて前記第1制御プログラムを実行することにより前記第1制御実行時間を測定する処理とを、前記演算部に実行させる、請求項4に記載のコントローラサポートプログラム。前記記憶部は、さらに、前記第1テストプログラムと、前記第2テスト実行時間との格納に用いられ、前記コントローラサポートプログラムは、さらに、前記シミュレータにおいて前記第1テストプログラムを実行することにより前記第1テスト実行時間を測定する処理と、前記第1テスト実行時間および前記第2テスト実行時間から前記較正データを算出する処理とを、前記演算部に実行させる、請求項5に記載のコントローラサポートプログラム。記憶部と演算部とを備えたコントローラサポート装置において実行されるためのコントローラサポートプログラムを格納した記録媒体であって、前記記憶部は、前記コントローラサポートプログラムと、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データとの格納に用いられ、前記第1テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第1テストプログラムの、前記シミュレータにおいて測定された実行時間であり、前記第2テスト実行時間は、前記テストソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第2テストプログラムの、前記コントローラにおいて測定された実行時間であり、前記コントローラサポートプログラムは、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、前記シミュレータにおいて動作するオブジェクトプログラムである第1制御プログラムの、前記シミュレータにおいて測定された実行時間である第1制御実行時間を取得する処理と、前記第1制御実行時間を前記較正データを用いて変換することにより、前記制御ソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第2制御プログラムの、前記コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、前記推定実行時間を表すデータを出力するための処理とを、前記演算部に実行させる、コントローラサポートプログラムを格納した記録媒体。前記記憶部は、さらに、前記第1制御プログラムの格納に用いられ、前記コントローラサポートプログラムは、さらに、前記コントローラサポート装置を前記シミュレータとして機能させるための処理と、前記シミュレータにおいて前記第1制御プログラムを実行することにより前記第1制御実行時間を測定する処理とを、前記演算部に実行させる、請求項7に記載のコントローラサポートプログラムを格納した記録媒体。前記記憶部は、さらに、前記第1テストプログラムと、前記第2テスト実行時間との格納に用いられ、前記コントローラサポートプログラムは、さらに、前記シミュレータにおいて前記第1テストプログラムを実行することにより前記第1テスト実行時間を測定する処理と、前記第1テスト実行時間および前記第2テスト実行時間から前記較正データを算出する処理とを、前記演算部に実行させる、請求項8に記載のコントローラサポートプログラムを格納した記録媒体。制御対象を制御するコントローラにおける制御プログラムの実行時間を推定する方法であって、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データを算出する較正データ算出ステップを含み、前記第1テスト実行時間は、テストソースプログラムから生成された、前記コントローラのシミュレータにおいて動作するオブジェクトプログラムである第1テストプログラムの、前記シミュレータにおいて測定された実行時間であり、前記第2テスト実行時間は、前記テストソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第2テストプログラムの、前記コントローラにおいて測定された実行時間であり、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、前記シミュレータにおいて動作するオブジェクトプログラムである第1制御プログラムの、前記シミュレータにおいて測定された実行時間である第1制御実行時間を前記較正データを用いて変換することにより、前記制御ソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第2制御プログラムの、前記コントローラにおける実行時間の推定値である推定実行時間を算出する推定実行時間算出ステップを含む、制御プログラムの実行時間を推定する方法。従来のPLCは、その演算部に、制御プログラムを実行するために開発されたASICApplicationSpecificIntegratedCircuitを採用し、そのASICがPLC用のニーモニック命令に対応する実行コードを実行する構成であることが多かった。一般に、ラダー言語等のPLC用のプログラミング言語で使用される命令は、PLC用のニーモニック命令に1対1に変換することができる。そのような場合には、特許文献1に示されるように各命令の実処理時間データを積算する方式によって、ある程度正確な制御プログラムの実行時間を求めることができた。しかし、近年は、汎用マイクロプロセッサの高速化に伴い、PLCの演算部にも汎用マイクロプロセッサが採用されることが多くなりつつある。そのような場合、ラダー言語やその他のPLC用のプログラミング言語で作成された制御プログラムソースプログラムは、マイクロプロセッサに実行可能なオブジェクトプログラムにコンパイルされた形でPLCにおいて実行される。本願発明者らの経験によれば、PLC用のプログラミング言語における各命令に対応する、マイクロプロセッサにおける実処理時間は、オブジェクトプログラムが最適化されることの影響などにより、必ずしも一定とはならない。そのため、上述したような実処理時間データの積算方式では、高い精度の推定実行時間を得ることができない。さらに、制御プログラムが、特殊な命令やファンクションブロックのライブラリを利用する場合には、呼び出したライブラリ要素の実行時間が実行条件によって変動するため、実処理時間データの積算方式では、実行時間の推定精度がいっそう悪化する。このような状況を背景として、コントローラサポート装置において、汎用マイクロプロセッサを用いたPLCより一般的に、コントローラにおける実行時間を、より高い精度で推定できる方式が必要である。もちろん、その方式がASICを用いたコントローラについての実行時間推定にも適用できることはより好ましい。本発明は、コントローラサポート装置において、コントローラにおける制御プログラムの実行時間をより高い精度で推定することを目的とする。本発明のある局面によれば、記憶部と演算部とを含むコントローラサポート装置を提供する。記憶部は、コントローラサポートプログラムと、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データとの格納に用いられる。第1テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第1テストプログラムの、シミュレータにおいて測定された実行時間であり、第2テスト実行時間は、テストソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第2テストプログラムの、コントローラにおいて測定された実行時間である。コントローラサポートプログラムは、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、シミュレータにおいて動作するオブジェクトプログラムである第1制御プログラムの、シミュレータにおいて測定された実行時間である第1制御実行時間を取得する処理と、第1制御実行時間を較正データを用いて変換することにより、制御ソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第2制御プログラムの、コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、推定実行時間を表すデータを出力するための処理とを、演算部に実行させる。好ましくは、記憶部は、さらに、第1制御プログラムの格納に用いられる。コントローラサポートプログラムは、さらに、コントローラサポート装置をシミュレータとして機能させるための処理と、シミュレータにおいて第1制御プログラムを実行することにより第1制御実行時間を測定する処理とを、演算部に実行させる。さらに好ましくは、コントローラサポート装置は、さらに、表示部を含む。記憶部は、さらに、第1テストプログラムと、第2テスト実行時間との格納に用いられる。コントローラサポートプログラムは、さらに、シミュレータにおいて第1テストプログラムを実行することにより第1テスト実行時間を測定する処理と、第1テスト実行時間および第2テスト実行時間から較正データを算出する処理とを、演算部に実行させる。推定実行時間を表すデータを出力するための処理は、表示部に推定実行時間を表示させるための表示用データを作成する処理である。この発明の別の局面に従えば、記憶部と演算部とを備えたコントローラサポート装置において実行されるためのコントローラサポートプログラムを提供する。記憶部は、コントローラサポートプログラムと、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データとの格納に用いられる。第1テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第1テストプログラムの、シミュレータにおいて測定された実行時間であり、第2テスト実行時間は、テストソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第2テストプログラムの、コントローラにおいて測定された実行時間である。コントローラサポートプログラムは、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、シミュレータにおいて動作するオブジェクトプログラムである第1制御プログラムの、シミュレータにおいて測定された実行時間である第1制御実行時間を取得する処理と、第1制御実行時間を較正データを用いて変換することにより、制御ソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第2制御プログラムの、コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、推定実行時間を表すデータを出力するための処理とを、演算部に実行させる。好ましくは、記憶部は、さらに、第1制御プログラムの格納に用いられる。コントローラサポートプログラムは、さらに、コントローラサポート装置をシミュレータとして機能させるための処理と、シミュレータにおいて第1制御プログラムを実行することにより第1制御実行時間を測定する処理とを、演算部に実行させる。さらに好ましくは、記憶部は、さらに、第1テストプログラムと、第2テスト実行時間との格納に用いられる。コントローラサポートプログラムは、さらに、シミュレータにおいて第1テストプログラムを実行することにより第1テスト実行時間を測定する処理と、第1テスト実行時間および第2テスト実行時間から較正データを算出する処理とを、演算部に実行させる。この発明のさらに別の局面に従えば、記憶部と演算部とを備えたコントローラサポート装置において実行されるためのコントローラサポートプログラムを格納した記録媒体を提供する。記憶部は、コントローラサポートプログラムと、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データとの格納に用いられる。第1テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第1テストプログラムの、シミュレータにおいて測定された実行時間であり、第2テスト実行時間は、テストソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第2テストプログラムの、コントローラにおいて測定された実行時間である。コントローラサポートプログラムは、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、シミュレータにおいて動作するオブジェクトプログラムである第1制御プログラムの、シミュレータにおいて測定された実行時間である第1制御実行時間を取得する処理と、第1制御実行時間を較正データを用いて変換することにより、制御ソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第2制御プログラムの、コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、推定実行時間を表すデータを出力するための処理とを、演算部に実行させる。好ましくは、記憶部は、さらに、第1制御プログラムの格納に用いられる。コントローラサポートプログラムは、さらに、コントローラサポート装置をシミュレータとして機能させるための処理と、シミュレータにおいて第1制御プログラムを実行することにより第1制御実行時間を測定する処理とを、演算部に実行させる。さらに好ましくは、記憶部は、さらに、第1テストプログラムと、第2テスト実行時間との格納に用いられる。コントローラサポートプログラムは、さらに、シミュレータにおいて第1テストプログラムを実行することにより第1テスト実行時間を測定する処理と、第1テスト実行時間および第2テスト実行時間から較正データを算出する処理とを、演算部に実行させる。この発明のさらに別の局面に従えば、制御対象を制御するコントローラにおける制御プログラムの実行時間を推定する方法を提供する。本方法は、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データを算出する較正データ算出ステップを含む。第1テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第1テストプログラムの、シミュレータにおいて測定された実行時間であり、第2テスト実行時間は、テストソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第2テストプログラムの、コントローラにおいて測定された実行時間である。本方法は、さらに、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、シミュレータにおいて動作するオブジェクトプログラムである第1制御プログラムの、シミュレータにおいて測定された実行時間である第1制御実行時間を較正データを用いて変換することにより、制御ソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第2制御プログラムの、コントローラにおける実行時間の推定値である推定実行時間を算出する推定実行時間算出ステップを含む。本発明によれば、コントローラサポート装置において、コントローラにおける制御プログラムの実行時間をより高い精度で推定することができる。本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。<A.システム構成>本実施の形態に係るコントローラサポート装置が使用を支援するコントローラの典型例としてPLCについて説明する。PLCは、機械や設備などの制御対象を制御する。PLCは、その構成要素としてCPUユニットを含む。CPUユニットは、マイクロプロセッサと、記憶手段と、通信回路とを含む。記憶手段は、制御プログラムおよびプログラムの実行を制御するシステムプログラムなどの格納に用いられる。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび制御プログラムを実行する。通信回路は、出力データを送信しおよび入力データを受信する。まず、図1を参照して、PLC1のシステム構成について説明する。図1は、本発明の実施の形態に係るコントローラPLCサポート装置が使用を支援するPLCシステムの概略構成を示す模式図である。図1を参照して、PLCシステムSYSは、PLC1と、PLC1とフィールドネットワーク2を介して接続されるサーボモータドライバ3およびリモートIOターミナル5と、フィールド機器である検出スイッチ6およびリレー7とを含む。また、PLC1には、接続ケーブル10などを介してコントローラサポート装置8が接続される。PLC1は、主たる演算処理を実行するCPUユニット13と、1つ以上のIOユニット14と、特殊ユニット15とを含む。これらのユニットは、PLCシステムバス11を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット12によって適切な電圧の電源が供給される。なお、PLC1として構成される各ユニットは、PLCメーカーが提供するものであるので、PLCシステムバス11は、一般にPLCメーカーごとに独自に開発され、使用されている。これに対して、フィールドネットワーク2については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。CPUユニット13の詳細については、図2を参照して後述する。IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット14は、検出スイッチ6などのセンサが何らかの対象物を検出している状態オンおよび何らの対象物も検出していない状態オフのいずれであるかという情報を収集する。また、IOユニット14は、リレー7やアクチュエータといった出力先に対して、活性化するための指令オンおよび不活性化するための指令オフのいずれかを出力する。特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。フィールドネットワーク2は、CPUユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット登録商標を用いることができる。産業用イーサネット登録商標としては、たとえば、EtherCAT登録商標、ProfinetIRT、MECHATROLINK登録商標-III、Powerlink、SERCOS登録商標-III、CIPMotionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット登録商標以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP登録商標などを用いてもよい。なお、図1には、PLCシステムバス11およびフィールドネットワーク2の両方を有するPLCシステムSYSを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク2ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク2を使用せずに、サーボモータドライバ3をPLCシステムバス11に直接接続してもよい。さらに、フィールドネットワーク2の通信ユニットをPLCシステムバス11に接続し、CPUユニット13から当該通信ユニット経由で、フィールドネットワーク2に接続された機器との間の通信を行うようにしてもよい。なお、PLC1は、CPUユニット13にIOユニット14の機能やサーボモータドライバ3の機能を持たせることにより、IOユニット14やサーボモータドライバ3などを介さずにCPUユニット13が直接制御対象を制御する構成でもよい。サーボモータドライバ3は、フィールドネットワーク2を介してCPUユニット13と接続されるとともに、CPUユニット13からの指令値に従ってサーボモータ4を駆動する。より具体的には、サーボモータドライバ3は、PLC1から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ3は、サーボモータ4の軸に接続されている位置センサロータリーエンコーダやトルクセンサといった検出器から、位置、速度典型的には、今回位置と前回位置との差から算出される、トルクといったサーボモータ4の動作に係る実測値を取得する。そして、サーボモータドライバ3は、CPUユニット13からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボモータドライバ3は、実測値が目標値に近づくようにサーボモータ4を駆動するための電流を調整する。なお、サーボモータドライバ3は、サーボモータアンプと称されることもある。また、図1には、サーボモータ4とサーボモータドライバ3とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。図1に示すPLCシステムSYSのフィールドネットワーク2には、さらに、リモートIOターミナル5が接続されている。リモートIOターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル5は、フィールドネットワーク2でのデータ伝送に係る処理を行うための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバス51を介して、データを互いに遣り取りできるように構成される。本発明の実施の形態に係るコントローラサポート装置8については後述する。<B.CPUユニットのハードウェア構成>次に、図2を参照して、CPUユニット13のハードウェア構成について説明する。図2は、本発明の実施の形態に係るコントローラPLCサポート装置8が使用を支援するCPUユニット13のハードウェア構成を示す模式図である。図2を参照して、CPUユニット13は、マイクロプロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、PLCシステムバスコントローラ120と、フィールドネットワークコントローラ140と、USBコネクタ110とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。マイクロプロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、マイクロプロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。CPUユニット13は、記憶手段として、メインメモリ104および不揮発性メモリ106を有する。メインメモリ104は、揮発性の記憶領域RAMであり、CPUユニット13への電源投入後にマイクロプロセッサ100で実行されるべき各種プログラムを保持する。また、メインメモリ104は、マイクロプロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAMDynamicRandomAccessMemoryやSRAMStaticRandomAccessMemoryといったデバイスが用いられる。一方、不揮発性メモリ106は、リアルタイムOSOperatingSystem、PLC1のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、DVD-RAMDigitalVersatileDiskRandomAccessMemoryのような光学記録媒体などを用いることもできる。システムタイマ108は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OSOperatingSystemやBIOSBasicInputOutputSystemなどによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ108が発生する割り込み信号を利用して、後述するような制御サイクルごとの制御動作が実現される。CPUユニット13は、通信回路として、PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140を有する。これらの通信回路は、出力データの送信および入力データの受信を行う。なお、CPUユニット13自体にIOユニット14やサーボモータドライバ3の機能を持たせる場合は、通信回路による出力データの送信および入力データの受信は、それらの機能を担う部分を通信の相手方としてCPUユニット13の内部で行われる送信および受信となる。PLCシステムバスコントローラ120は、PLCシステムバス11を介したデータの遣り取りを制御する。より具体的には、PLCシステムバスコントローラ120は、DMADynamicMemoryAccess制御回路122と、PLCシステムバス制御回路124と、バッファメモリ126とを含む。なお、PLCシステムバスコントローラ120は、PLCシステムバスコネクタ130を介してPLCシステムバス11と内部的に接続される。バッファメモリ126は、PLCシステムバス11を介して他のユニットへ出力されるデータ以下出力データとも称す。の送信バッファ、および、PLCシステムバス11を介して他のユニットから入力されるデータ以下入力データとも称す。の受信バッファとして機能する。なお、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ126に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ126に一次的に保持された後、メインメモリ104に移される。DMA制御回路122は、メインメモリ104からバッファメモリ126への出力データの転送、および、バッファメモリ126からメインメモリ104への入力データの転送を行う。PLCシステムバス制御回路124は、PLCシステムバス11に接続される他のユニットとの間で、バッファメモリ126の出力データを送信する処理および入力データを受信してバッファメモリ126に格納する処理を行う。典型的には、PLCシステムバス制御回路124は、PLCシステムバス11における物理層およびデータリンク層の機能を提供する。フィールドネットワークコントローラ140は、フィールドネットワーク2を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ140は、用いられるフィールドネットワーク2の規格に従い、出力データの送信および入力データの受信を制御する。たとえば、EtherCAT登録商標規格に従うフィールドネットワーク2が採用される場合には、通常のイーサネット登録商標通信を行うためのハードウェアを含む、フィールドネットワークコントローラ140が用いられる。EtherCAT登録商標規格では、通常のイーサネット登録商標規格に従う通信プロトコルを実現する一般的なイーサネット登録商標コントローラを利用できる。フィールドネットワーク2として採用される産業用イーサネット登録商標の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット登録商標コントローラが用いられる。また、産業用イーサネット登録商標以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。バッファメモリ146は、フィールドネットワーク2を介して他の装置などへ出力されるデータこのデータについても、以下出力データと称す。の送信バッファ、および、フィールドネットワーク2を介して他の装置などから入力されるデータこのデータについても、以下入力データとも称す。の受信バッファとして機能する。上述したように、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定の装置へ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ146に一次的に保持される。また、他の装置から転送された入力データは、バッファメモリ146に一次的に保持された後、メインメモリ104に移される。DMA制御回路142は、メインメモリ104からバッファメモリ146への出力データの転送、および、バッファメモリ146からメインメモリ104への入力データの転送を行う。フィールドネットワーク制御回路144は、フィールドネットワーク2に接続される他の装置との間で、バッファメモリ146の出力データを送信する処理および入力データを受信してバッファメモリ146に格納する処理を行う。典型的には、フィールドネットワーク制御回路144は、フィールドネットワーク2における物理層およびデータリンク層の機能を提供する。USBコネクタ110は、コントローラサポート装置8とCPUユニット13とを接続するためのインターフェイスである。典型的には、コントローラサポート装置8から転送される、CPUユニット13のマイクロプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介してPLC1に取込まれる。<C.CPUユニットのソフトウェア構成>次に、図3を参照して、コントローラPLC1が各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、CPUユニット13のマイクロプロセッサ100によって実行される。図3は、本発明の実施の形態に係るコントローラPLCサポート装置8が使用を支援するCPUユニット13で実行されるソフトウェア構成を示す模式図である。図3を参照して、CPUユニット13で実行されるソフトウェアとしては、リアルタイムOS200と、システムプログラム210と、ユーザプログラム236との3階層になっている。リアルタイムOS200は、CPUユニット13のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ100がシステムプログラム210およびユーザプログラム236を実行するための基本的な実行環境を提供する。このリアルタイムOSは、典型的には、PLCのメーカーあるいは専門のソフトウェア会社などによって提供される。システムプログラム210は、PLC1としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム210は、スケジューラプログラム212と、出力処理プログラム214と、入力処理プログラム216と、シーケンス命令演算プログラム232と、モーション演算プログラム234と、その他のシステムプログラム220とを含む。なお、一般には出力処理プログラム214および入力処理プログラム216は、連続的一体としてに実行されるので、これらのプログラムを、IO処理プログラム218と総称する場合もある。ユーザプログラム236は、ユーザにおける制御目的に応じて作成される。すなわち、PLCシステムSYSを用いて制御する対象のラインプロセスなどに応じて、任意に設計されるプログラムである。ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム236、シーケンス命令演算プログラム232、およびモーション演算プログラム234を、制御プログラム230と総称する場合もある。以下、各プログラムについてより詳細に説明する。ユーザプログラム236は、上述したように、ユーザにおける制御目的たとえば、対象のラインやプロセスに応じて作成される。ユーザプログラム236は、典型的には、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム236は、コントローラサポート装置8などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム236は、コントローラサポート装置8から接続ケーブル10を介してCPUユニット13へ転送され、不揮発性メモリ106などに格納される。スケジューラプログラム212は、出力処理プログラム214、入力処理プログラム216、および制御プログラム230について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム212は、ユーザプログラム236およびモーション演算プログラム234の実行を制御する。CPUユニット13では、モーション演算プログラム234に適した一定周期の実行サイクル制御サイクルを処理全体の共通サイクルとして採用する。そのため、1つの制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各制御サイクルにおいて実行を完了すべき処理と、複数の制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム212は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム212は、各制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。出力処理プログラム214は、ユーザプログラム236制御プログラム230の実行によって生成された出力データを、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140へ転送するのに適した形式に再配置する。PLCシステムバスコントローラ120またはフィールドネットワークコントローラ140が、マイクロプロセッサ100からの、送信を実行するための指示を必要とする場合は、出力処理プログラム214がそのような指示を発行する。入力処理プログラム216は、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140によって受信された入力データを、制御プログラム230が使用するのに適した形式に再配置する。シーケンス命令演算プログラム232は、ユーザプログラム236で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。モーション演算プログラム234は、ユーザプログラム236による指示に従って実行され、サーボモータドライバ3やパルスモータドライバといったモータドライバに対して出力する指令値を実行されるごとに算出するプログラムである。その他のシステムプログラム220は、図3に個別に示したプログラム以外の、PLC1の各種機能を実現するためのプログラム群をまとめて示したものである。リアルタイムOS200は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。PLC1においては、CPUユニット13のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力送信するためのイベント割り込みとして、制御サイクル開始の割り込みが初期設定される。リアルタイムOS200は、制御サイクル開始の割り込みが発生すると、マイクロプロセッサ100での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム212に切り替える。なお、リアルタイムOS200は、スケジューラプログラム212およびスケジューラプログラム212がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム210に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、CPUユニット13とコントローラサポート装置8との間の接続ケーブル10USBなどを介した通信処理に関するものが含まれる。なお、制御プログラム230およびスケジューラプログラム212は、記憶手段であるメインメモリ104および不揮発性メモリ106に格納される。<D.CPUユニットにおける実行動作>次に、CPUユニット13における実行動作について説明する。図4は、本発明の実施の形態に係るコントローラPLCサポート装置8が使用を支援するCPUユニット13における実行動作の一例を示すシーケンス図である。図4においては、紙面の上から下に向かって経過する時間軸に沿って、IO処理プログラム、制御プログラムA、および制御プログラムBが実行される期間が示されている。制御プログラムAおよびBのそれぞれの時間軸に沿って示した破線の角丸の矩形は、対応する制御プログラムの実行サイクルを示す。図4に示す例では、制御プログラムAは、1回分の制御サイクルを実行サイクルとしており、制御プログラムBは、4回分の制御サイクルを実行サイクルとしている。また、制御プログラムAの実行優先度は、制御プログラムBの実行優先度よりも高く設定されているものとする。制御プログラムAのシーケンスプログラムユーザプログラムは、モーション制御を実現するためのモーション命令を含んでおり、モーション命令の実行によりモーション演算プログラム234が呼び出されて実行される。一方、制御プログラムBのシーケンスプログラムは、モーション命令を含んでいない。制御サイクル1が開始すると、スケジューラプログラム212の実行制御により、IO処理プログラムが実行される。IO処理プログラムの実行による出力処理および入力処理が終了すると、スケジューラプログラム212が行う実行制御により、制御プログラムAが実行される。制御プログラムAの実行においては、まずシーケンスプログラムが実行され、引き続いて、モーション演算プログラム234が実行される。シーケンス命令演算プログラム232は、シーケンスプログラムの実行中に、呼び出される都度、実行される。制御プログラムAの全体シーケンスプログラムおよびモーション演算プログラムは1つのスレッドとして構成されており、実行途中でスケジューラプログラム212の関与なしに連続して実行される。制御プログラムAの実行が終了すると、スケジューラプログラム212が行う実行制御により、制御プログラムBが実行される。しかし、制御プログラムBの実行中に制御サイクル1が終了する制御サイクル2が開始するので、その時点で制御プログラムBの実行は中断される。制御サイクル2以降においても、IO処理プログラムおよび制御プログラムAは、制御サイクル1での実行と同様の実行を繰り返す。制御サイクル2における制御プログラムAの実行が終了すると、制御プログラムBの未実行の部分が実行される。しかし、制御サイクル2においても、制御プログラムBの実行中に制御サイクル2が終了するので、制御プログラムBの実行は、再び中断される。制御サイクル3において実行再開した制御プログラムBは、制御サイクル3が終了するまでに実行終了する。制御サイクル4においても制御サイクル1から開始した制御プログラムBの実行サイクルが継続しているが、制御プログラムBは、制御サイクル3においてすでに今回の実行サイクルにおける実行を終了しているため、制御サイクル4においては実行されない。<E.サポート装置のハードウェア構成>次に、PLC1で実行されるプログラムの作成およびPLC1のメンテナンスなどを行うためのコントローラサポート装置8について説明する。図5は、本発明の実施の形態に係るコントローラサポート装置8のハードウェア構成を示す模式図である。図5を参照して、コントローラサポート装置8は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。図5を参照して、コントローラサポート装置8は、OSを含む各種プログラムを実行するCPU81と、BIOSや各種データを格納するROMReadOnlyMemory82と、CPU81でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリRAM83と、CPU81で実行されるプログラムなどを不揮発的に格納するハードディスクHDD84とを含む。CPU81がコントローラサポート装置8の演算部に相当し、ROM82、RAM83およびハードディスク84がコントローラサポート装置8の記憶部に相当する。コントローラサポート装置8は、さらに、ユーザからの操作を受付けるキーボード85およびマウス86と、情報をユーザに提示するためのモニタ87とを含む。さらに、コントローラサポート装置8は、PLC1CPUユニット13などと通信するための通信インターフェイスIF89を含む。後述するように、コントローラサポート装置8で実行される各種プログラムは、CD-ROM9に格納されて流通する。このCD-ROM9に格納されたプログラムは、CD-ROMCompactDiskReadOnlyMemoryドライブ88によって読取られ、ハードディスクHDD84などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。上述したように、コントローラサポート装置8は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。<F.コントローラサポート装置のソフトウェア構成>次に、図6を参照して、本実施の形態に係るコントローラサポート装置8が各種機能を提供するためのソフトウェア群について説明する。図6は、本発明の実施の形態に係るコントローラサポート装置8のソフトウェア構成を示す模式図である。図6を参照して、コントローラサポート装置8ではOS310が実行され、コントローラサポートプログラム320に含まれる各種のプログラムを実行可能な環境が提供される。コントローラサポートプログラム320は、エディタプログラム321と、コンパイラプログラム322と、デバッガプログラム323と、シミュレータプログラム324と、較正データ算出プログラム325と、推定実行時間算出プログラム326と、出力プログラム327と、通信プログラム328とを含む。コントローラサポートプログラム320に含まれるそれぞれのプログラムは、典型的には、CD-ROM9に格納された状態で流通して、コントローラサポート装置8にインストールされる。エディタプログラム321は、ユーザプログラムソースプログラム330を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム321は、ユーザがキーボード85やマウス86を操作してユーザプログラム236のソースプログラム330を作成する機能に加えて、作成したソースプログラム330の保存機能および編集機能を提供する。また、エディタプログラム321は、外部からの制御プログラム230その中でも特に、ユーザプログラム236のソースプログラムを入力し、またユーザの操作により既存の制御プログラム230のソースプログラムを編集する。コンパイラプログラム322は、制御プログラムのソースプログラム330をコンパイルして、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式のユーザプログラム第2制御プログラム236を生成する機能を提供する。また、コンパイラプログラム322は、制御プログラムのソースプログラム330をコンパイルして、コントローラサポート装置8のCPU81で実行可能なオブジェクトプログラム形式のユーザプログラム第1制御プログラム340を生成する機能を提供する。このユーザプログラム340は、コントローラサポート装置8によってPLC1の動作をシミュレート模擬するために使用される、シミュレーション用のオブジェクトプログラムである。デバッガプログラム323は、ユーザプログラムソースプログラム330に対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。シミュレータプログラム324は、実行されると、コントローラサポート装置8内にPLC1のCPUユニット13コントローラのシミュレータを構築する。本シミュレータは、以下のような機能を提供する。1システムタイマの信号により制御サイクルを開始させるCPUユニット13のリアルタイムOSの機能。2制御プログラムの実行優先度と実行サイクルとに従って制御プログラム230の実行を制御する、CPUユニット13のスケジューラプログラム212の機能。3CPUユニット13の出力処理プログラム214および入力処理プログラム216の機能。4制御対象に代わって入力データを与える機能、および、可能な場合には、出力データを受けて動作する制御対象を模倣し、動作の結果を入力データに反映する機能。また、シミュレータプログラム324は、第1制御プログラムシミュレータ用オブジェクトプログラム340がシミュレータ上で動作するときに必要な、CPUユニット13におけるシーケンス命令演算プログラム232および/またはモーション演算プログラム234に相当するプログラムを提供する。第1制御プログラムシミュレータ用オブジェクトプログラム340の実行コード自体は、コントローラサポート装置8のCPU81が実行可能なコードであるので、上記の実行環境による実行制御または支援のもと、コントローラサポート装置8のCPU81によって直接実行される。あるいは、シミュレータプログラム324がCPUユニット13のマイクロプロセッサ100を仮想的に構築することにより、シミュレータ上で第2制御プログラムコントローラ用オブジェクトプログラム236を動作させてもよい。その場合は、第1制御プログラムシミュレータ用オブジェクトプログラム340と第2制御プログラムコントローラ用オブジェクトプログラム236とは同一のプログラムとなるので、これらを別々に生成する必要はない。また、コントローラサポート装置8のCPU81とCPUユニット13のマイクロプロセッサ100とが同系列のプロセッサであって、CPU81が第2制御プログラムコントローラ用オブジェクトプログラム236の実行コードを実行可能である場合も、第1制御プログラムシミュレータ用オブジェクトプログラム340と第2制御プログラムコントローラ用オブジェクトプログラム236とは同一のプログラムとなる。較正データ算出プログラム325は、実行されることにより、後述する図7の較正データ算出部325Aを構成する。推定実行時間算出プログラム326は、実行されることにより、後述する図7の推定実行時間算出部326Aを構成する。出力プログラム327は、実行されることにより、後述する図7の出力部327Aを構成する。これらのプログラムにより提供される処理については、図7を参照して後に詳述する。通信プログラム328は、PLC1のCPUユニット13へ制御プログラム230のCPUユニット13用のオブジェクトプログラム236を転送する機能を提供する。一般的には、PLC1に実装されるシステムプログラム210は、CPUユニット13の製造段階でCPUユニット13の不揮発性メモリ106へ格納される。但し、CD-ROM9にシステムプログラム210を格納しておけば、ユーザは、CD-ROM9のシステムプログラム210をコントローラサポート装置8へコピーし、通信プログラム328が提供する機能を利用してコピーしたシステムプログラム210をCPUユニット13へ転送することもできる。さらに、CD-ROM9に、PLC1のCPUユニット13で実行されるリアルタイムOS200を格納しておけば、リアルタイムOS200についてもユーザ操作によってPLC1へ再インストールできる。<G.コントローラサポート装置に関連する全体処理>g1:概要次に、図7を参照して、コントローラサポート装置8において行われる処理に加えて、制御プログラムの実行時間推定に関連する一連の処理、ならびに、各処理の間のプログラムおよびデータの流れについて説明する。図7は、本発明の実施の形態に係るコントローラサポート装置8に関連する全体処理を示す模式図である。図6にソフトウェア構成を示すコントローラサポート装置8は、図7に示すコントローラサポート装置Aに相当する。図7に示される、制御プログラムの実行時間を推定する方法は、較正データ算出処理のステップと推定実行時間算出処理のステップとを中心としている。較正データ算出処理は、較正用のテストプログラムを対象として事前に測定されるコントローラにおける実行時間とシミュレータにおける実行時間とを用いて、それらの間の関係を表す較正データを算出する処理である。推定実行時間算出処理は、シミュレータで測定された制御プログラムの実行時間を取得し、その実行時間を較正データを用いて変換することにより、その制御プログラムをコントローラで実行した場合の実行時間の推定値を算出する処理である。各処理の内容をより詳細に説明すると以下のとおりである。g2:較正データ算出処理まず、テストプログラムのソースプログラムテストソースプログラム370が用意される。テストソースプログラム370から、シミュレータ用コンパイラ380を用いて、シミュレータ用オブジェクトプログラム第1テストプログラム390が生成される。また、テストソースプログラム370から、コントローラ用コンパイラ382を用いて、コントローラ用オブジェクトプログラム第2テストプログラム392が生成される。第2テストプログラム392をコントローラAで実行することで、その実行時間が測定され、第2テストプログラム392の実行時間である第2テスト実行時間のデータが取得される。ここまでの処理は、一般にコントローラの供給者コントローラの製造業者、販売業者、技術サービス業者などにおいて行われ、第1テストプログラム390と第2テスト実行時間とがユーザに提供される。なお、ここまでの処理をユーザ自身が行ってもよい。第1テストプログラム390をシミュレータ324Aで実行し、その実行時間を測定し、第1テストプログラム390の実行時間である第1テスト実行時間のデータが取得される。そして、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データが算出される。このように、較正データ算出処理は、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データを算出する処理である。ここで、第1テスト実行時間は、テストソースプログラム370から生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第1テストプログラム390の、シミュレータにおいて測定された実行時間である。また、第2テスト実行時間は、テストソースプログラム370から生成された、コントローラにおいて動作するオブジェクトプログラムである第2テストプログラム392の、コントローラにおいて測定された実行時間である。g3:推定実行時間算出処理次に、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラム330が用意される。制御ソースプログラム330から、シミュレータ用コンパイラ322Aを用いて、シミュレータ用オブジェクトプログラム第1制御プログラム340が生成される。第1制御プログラム340をシミュレータ324Aで実行し、その実行時間を測定し、第1制御プログラムの実行時間である第1制御実行時間のデータが取得される。第1制御実行時間を較正データを用いて変換することにより、制御ソースプログラム330から生成された、コントローラにおいて動作するオブジェクトプログラムである第2制御プログラム342の、コントローラにおける実行時間の推定値である推定実行時間が算出される。第2制御プログラム342は、制御ソースプログラム330から、コントローラ用コンパイラ322Bを用いて生成される。第2制御プログラム342の実際の生成は、推定実行時間をふまえて、必要に応じて制御ソースプログラム330を修正した後に行えばよい。生成された第2制御プログラム342は、コントローラBに転送され、コントローラBにおいて実行される。なお、コントローラAとコントローラBとは、実行時間の観点で同一とみなせる機種である。このように、推定実行時間算出処理は、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラム330から生成された、シミュレータ324Aにおいて動作するオブジェクトプログラムである第1制御プログラム340の、シミュレータ324Aにおいて測定された実行時間である第1制御実行時間を較正データを用いて変換することにより、制御ソースプログラム330から生成された、コントローラにおいて動作するオブジェクトプログラムである第2制御プログラム342の、コントローラにおける実行時間の推定値である推定実行時間を算出する処理である。推定実行時間が算出されると、推定実行時間を表す出力用データが作成され、出力する処理が実行される。出力用データを作成し、出力する処理は、たとえば、推定実行時間をモニタ87の画面に表示するための表示用データを作成し、表示させる処理である。出力用データを作成し、出力する処理は、推定実行時間を他の装置に送信するための送信用データを作成し、送信する処理であってもよい。出力用データを出力する処理は、コントローラサポート装置8外からアクセス可能な記憶部に出力用データを格納する処理であってもよい。g4:変形例シミュレータコントローラサポート装置8とコントローラPLC1とが同一のオブジェクトコードを実行できる場合は、シミュレータ用コンパイラとコントローラ用コンパイラとを使い分ける必要はなく、共通のコンパイラを用いればよい。その場合は、第1テストプログラム390と第2テストプログラム392とは同一のプログラムとなり、第1制御プログラム340と第2制御プログラム342とは同一のプログラムとなる。テストソースプログラム370のコンパイルに用いるシミュレータ用コンパイラ380と制御ソースプログラム330のコンパイルに用いるシミュレータ用コンパイラ322Aとは、同じソースプログラムをコンパイルすれば同じオブジェクトプログラムを生成できるものを使用する。コントローラ用コンパイラについても同様である。g5:別形態コントローラサポート装置8は、図7にコントローラサポート装置Aとして示したように、第1テストプログラム390および第2テスト実行時間を提供された以降のすべての処理を単一の装置で実行できるようにすると便利である。しかし、実行時間推定の観点からは、オブジェクトプログラムの生成を別の装置に行わせ、コントローラサポート装置8が行う処理を図7にコントローラサポート装置Bとして示した処理に限定してもよい。あるいは、シミュレータを別の装置において構成し、コントローラサポート装置8は、別の装置であるシミュレータから第1制御実行時間を取得するようにしてもよい。あるいは、較正データ算出処理を別の装置に行わせ、コントローラサポート装置8は、算出された較正データを取得し、それを記憶して使用するようにしてもよい。そうすると、実行時間推定の観点からは、コントローラサポート装置8が行う処理を図7にコントローラサポート装置Cとして示した処理に限定してもよい。コントローラサポート装置A,B,Cは、たとえば、可搬型または机上型のパーソナルコンピュータを用いて実現するのに好適である。なお、いずれの場合も、いったん較正データを算出した後は、記憶していた第1テストプログラム390と第2テスト実行時間とについては削除してもよい。図7に示すコントローラサポート装置Cは、以下のように表現することができる。すなわち、コントローラサポート装置Cは、記憶部図5のROM82、RAM83およびハードディスク84と演算部図5のCPU81とを含む。記憶部は、コントローラサポートプログラム320と、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データとの格納に用いられる。第1テスト実行時間は、テストソースプログラム370から生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第1テストプログラム390の、シミュレータにおいて測定された実行時間である。第2テスト実行時間は、テストソースプログラム370から生成された、コントローラにおいて動作するオブジェクトプログラムである第2テストプログラム392の、コントローラにおいて測定された実行時間である。コントローラサポートプログラム320は、以下の処理を演算部CPU81に実行させる。1ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラム330から生成された、シミュレータにおいて動作するオブジェクトプログラムである第1制御プログラム340の、シミュレータにおいて測定された実行時間である第1制御実行時間を取得する処理2第1制御実行時間を較正データを用いて変換することにより、制御ソースプログラム330から生成された、コントローラにおいて動作するオブジェクトプログラムである第2制御プログラム342の、コントローラにおける実行時間の推定値である推定実行時間を算出する処理3推定実行時間を表すデータを出力するための処理また、コントローラサポート装置Bは、表示部図5のモニタ87の画面に推定実行時間を表示する装置であるとする。コントローラサポート装置Bは、コントローラサポート装置Cに次の構成を加えた装置である。すなわち、コントローラサポート装置Bは、さらに表示部を含む。記憶部は、さらに、第1制御プログラム340と、第1テストプログラム390と、第2テスト実行時間との格納に用いられる。コントローラサポートプログラム320は、さらに以下の処理を演算部CPU81に実行させる。4コントローラサポート装置をシミュレータとして機能させるための処理5シミュレータにおいて第1テストプログラム390を実行することにより第1テスト実行時間を測定する処理6第1テスト実行時間および第2テスト実行時間から較正データを算出する処理7シミュレータにおいて第1制御プログラム340を実行することにより第1制御実行時間を測定する処理上述の推定実行時間を表すデータを出力するための処理は、表示部に推定実行時間を表示させるための表示用データを作成する処理である。<H.推定実行時間の表示例>次に、上述したような処理によって算出された推定実行時間の出力例表示例について説明する。図8は、本発明の実施の形態に係るコントローラサポート装置8から出力される推定実行時間の表示画面の一例を示す図である。図8に示す推定実行時間の表示画面例では、図4に示した制御プログラムAおよびBが実行時間推定の対象となっている。本表示画面においては、制御プログラムAはTASKA、制御プログラムBはTASKBとそれぞれ表記されている。正味実行時間として表示されているのが推定実行時間である。正味実行時間は、実行休止時間を除いた、その制御プログラムが実際に実行されている時間を意味する。たとえば、図4において、制御プログラムBは、2回の実行休止期間をはさんで、3回に分けて実行されている。この3回に分かれて実際に実行されている時間の合計が正味実行時間となる。正味実行時間の表示部には、IO処理の実行時間も表示されている。IO処理はI/Oと表記されている。なお、IO処理の実行時間を求めるための処理については、図7において図示していない。IO処理の実行時間は、CPUユニット13に接続される他のユニットの数や、出力データおよび入力データの量と相関があり、それらが多いほどIO処理の実行時間が長くなる。コントローラサポート装置8は、それらの情報をコントローラに設定するために保有しているから、それらの情報を用いて、IO処理の実行時間の推定値を算出することができる。正味実行時間の表示部において500μsとあるのは、制御サイクルの周期が500μsであることを示している。シミュレータにおいて、推定実行時間正味実行時間の算出の元となる第1制御実行時間は、制御プログラムAおよびBを別々に、実行休止期間なしに実行することにより測定することができる。また、実際にコントローラにおいて実行されるときと同様に、シミュレータにおいても、図4のシーケンスのとおりに、実行優先度および実行サイクルに従ってプログラムを実行させ、実際に実行に要している時間を測定してもよい。第1制御実行時間の測定と推定実行時間の算出とは、複数回繰り返して行ってもよい。制御プログラムが繰り返し実行されると、制御プログラムにおいて使用する変数の値などの実行条件が変化し、それに応じて実行時間も変動する。正味実行時間のグラフに添えて表示しているMAX値は、繰り返し実行した場合の最大値である。これに加えて、最小値や平均値を表示してもよい。制御プログラムAの推定実行時間は、シーケンス演算部分とモーション演算部分とに分けて算出しており、グラフ表示においても分けて表示している。総計実行時間は、それぞれの制御プログラムの実行サイクルの開始からその実行サイクルにおける制御プログラムの実行終了までの時間を意味する。すなわち、制御プログラムAの総計実行時間は、図4の各制御サイクルの冒頭から、その制御サイクルにおいて制御プログラムAが実行終了するまでの時間に相当する。この時間には、制御プログラムA自体の実行時間のほか、IO処理の実行時間が加算される。同様に、制御プログラムBの総計実行時間は、図4の制御サイクル1の冒頭から制御サイクル3において制御プログラムBが実行終了するまでの時間に相当する。この時間には、制御プログラムBが実行終了するまでに実行される、3回のIO処理の実行時間と3回の制御プログラムAの実行時間とが加算される。総計実行時間の表示部において、0.5msおよび2msとあるのは、それぞれの制御プログラムについての実行サイクルの周期を示している。また、正味実行時間の場合と同様、各制御プログラムの総計実行時間の最大値が表示されている。総計実行時間の表示により、ユーザは、各制御プログラムが実行サイクルの時間内に実行終了できるのかどうかを知ることができる。図9は、本発明の実施の形態に係るコントローラサポート装置8から出力される推定実行時間の表示画面の別の一例を示す図である。図9に示す表示画面は、正味実行時間の表示部において、IO処理の実行時間をタスクAに含めて表示している点において、図8と相違する。すなわち、図9に示す表示画面においては、制御プログラムこの場合は制御プログラムAの実行サイクルの周期と同じ周期で実行されるIO処理の実行時間と、その制御プログラムの実行時間とが加算して表示されている。このように、制御プログラムの推定実行時間の表示は、その制御プログラムの実行と組み合わせて実行される他の処理の実行時間を加算して表示する場合を含む。言い換えれば、必ずしも、制御プログラムの推定実行時間自体を表示する必要はなく、制御サイクル周期や実行サイクル周期の決定、制御プログラムの分割の仕方の決定などを行うときに、ユーザにとって役立つように、制御プログラムの推定実行時間を含む時間として表示されればよい。正味実行時間のタスクAのグラフは、IO処理の実行時間と制御プログラムAの実行時間とが区別できる形態で表示されている。このグラフに添えて表示されているMAX値は、IO処理時間を含めた実行時間であり、制御プログラムの推定実行時間は、数値では表示されていない。このように、制御プログラムの推定実行時間をグラフのみによって表示してもよい。さらに、正味実行時間および総計実行時間のいずれか一方だけを表示してもよい。総計実行時間の表示も、制御プログラムの推定実行時間の表示の一形態である。<I.較正データの算出処理>次に、第1テスト実行時間と第2テスト実行時間との間の関係を表す較正データの算出処理について説明する。図10は、第1テスト実行時間と第2テスト実行時間との間の関係の一例を示す図である。図10において、X軸横軸は第1テスト時間シミュレータにおける第1テストプログラム390の実行時間の測定値を示し、Y軸縦軸は第2テスト実行時間コントローラにおける第2テストプログラム392の実行時間の測定値を示す。上述したように、第1テストプログラム390および第2テストプログラム392は、同一のテストソースプログラム370から生成されたオブジェクトプログラムである。図10のグラフ中に示される測定点P1~P5は、実行される命令の数が異なる5種類のテストソースプログラム370からそれぞれ生成された第1および第2テストプログラムの実行時間を示している。なお、測定点P1~P5は、それぞれプログラムを1回実行したときの実行時間の測定値でもよいが、実行時間は入力変数値等の実行条件によって実行ごとに変動し得ることを考慮して、同じプログラムを複数回実行したときの実行時間の平均値を採用することが好ましい。コントローラサポート装置8として汎用コンピュータを利用する場合は、通常、非リアルタイムオペレーティングシステム環境で第1テストプログラム390を実行することになるので、第1テストプログラムの実行がオペレーティングシステムにより一時中断されることが起こり得る。そのような場合の実行時間の測定値は、大きな値の異常値となるので、実行時間の平均値を求める場合には、そのような異常値を排除して計算する必要がある。同様に、推定実行時間の算出の基礎とする第1制御実行時間にも異常値は発生し得るので、そのような異常値を排除して推定実行時間を算出しなければならない。直線Lは、最小二乗法を用いて測定点P1~P5との誤差が最小になるようにして求めた直線である。この例では、直線Lは、式Y=aXによって表される。この比例係数aが較正データとなる。シミュレータにおいて測定された制御プログラムの実行時間である第1制御実行時間に、この較正データaを乗じることにより、推定実行時間を算出することができる。直線Lは、式Y=aXbによって表すこともでき、その場合には、aおよびbの値が較正データとなる。第1テスト実行時間と第2テスト実行時間とはほぼ比例関係となるため、その間の関係を直線で表現することができるが、より正確に関係を表現するために2次曲線や3次曲線といった多次関数を用いた方がよい場合もある。その場合には、多次関数を規定する各係数が較正データとなる。第1テスト実行時間と第2テスト実行時間との間の関係が直線で表せない場合があることの一つの原因としては、コントローラサポート装置8のCPU81やコントローラのマイクロプロセッサPLC1のマイクロプロセッサ100のキャッシュ機構の動作の影響が考えられる。このようなキャッシュ機構の動作により、短い実行時間の測定値が、ある程度長い実行時間の測定値によって求めた直線上に乗らない場合がある、ということが考えられる。較正データは、複数の第1テスト時間と、各第1テスト時間に対応する第2テスト時間とを表す表形式のデータとしてもよい。そのような較正データを用いる場合には、第1制御実行時間をはさむ2つの第1テスト時間、または、第1制御実行時間に値が近いいくつかの第1テスト時間、を選んで、較正データ中に存在するデータからの直線補完または曲線補完によって、第1制御実行時間に対応する推定実行時間を求めることができる。<J.サーバ-クライアント形態>上述の説明においては、制御プログラムの実行時間を推定する処理をスタンドアローンの形態で実現する場合の例を示したが、いわゆるサーバ-クライアントの形態で実現してもよい。図11は、本発明の実施の形態に係るサーバコンピュータで実現されたコントローラサポート装置に関連する全体処理を示す模式図である。図11には、サーバコンピュータでコントローラサポート装置を実現した場合の、制御プログラムの実行時間推定に関連する一連の処理、ならびに、各処理の間のプログラムおよびデータの流れを示す。図11を参照して、コントローラサポート装置として機能するサーバコンピュータは、シミュレータ用コンパイラ322A、コントローラ用コンパイラ322B、シミュレータ324A、推定実行時間算出部326A、および、出力部327Aとして機能するプログラム群を有している。サーバコンピュータは、たとえば、ユーザの事業所内に設置されてLANによってクライアントコンピュータと接続するようにしてもよいし、コントローラ供給者の事業所に設置されインターネットによってユーザの事業所にあるクライアントコンピュータと接続するようにしてもよい。図11において記憶部に格納される較正データについても、図7に示したのと同様の処理を経て算出される。別のコンピュータを用いてこのような較正データを算出する処理を行ってもよいし、サーバコンピュータ自体においてこのような較正データを算出する処理の全部または一部を行ってもよい。但し、第1テストプログラムを実行するシミュレータを別のコンピュータに設ける場合には、サーバコンピュータにおけるシミュレータと比較して、同じプログラムを同じ実行時間で実行できるシミュレータであることが必要である。サーバコンピュータにおいて較正データを求めるまでの一連の処理を行った場合であっても、サーバコンピュータがクライアントコンピュータに対してサービスを提供する段階においては、較正データを使用できれば足りる。そのため、較正データを求めるために使用したプログラムおよびデータは、サーバコンピュータから削除されていても構わない。制御ソースプログラム330は、クライアントコンピュータにおいて作成され、サーバコンピュータに送られる。サーバコンピュータは、コントローラ用コンパイラ322Bにより、クライアントコンピュータからの指示に応じて、制御ソースプログラム330から第2制御プログラム342を生成し、クライアントコンピュータに送信する。サーバコンピュータは、コントローラ用コンパイラ322Bを有さないようにして、第2制御プログラム342の生成サービスを行わないようにしてもよい。シミュレータ用コンパイラ322Aは、制御ソースプログラム330から第1制御プログラムシミュレータ用オブジェクトプログラム340を生成する。シミュレータ324Aは、第1制御プログラム340を実行して、その実行時間である第1制御実行時間を測定する。推定実行時間算出部326Aは、較正データを用いて、第1制御実行時間から推定実行時間を算出する。出力部327Aは、たとえば、図8または図9に示す形態で推定実行時間を表示するための表示用データを作成し、クライアントコンピュータに送信する。表示用データは、たとえば、ウエブブラウザを用いて表示できるHTML形式のデータである。出力部327Aは、推定実行時間を表す数値データだけをクライアントコンピュータに送信し、その表示形態はクライアントコンピュータにまかせるようにしてもよい。サーバコンピュータは、シミュレータ用コンパイラ322Aを有さないようにして、クライアントコンピュータにおいて生成された第1制御プログラム340を受信するようにしてもよい。サーバコンピュータにシミュレータおよび較正データを有して、複数のクライアントコンピュータのために推定実行時間算出処理を行うようにすると、新しい機種のコントローラに適合する新しいシミュレータおよび較正データを追加する作業が容易になる。図11に示すコントローラサポート装置は、図7に示すコントローラサポート装置Cの構成を含み、その上で、少なくとも次の構成を追加した装置である。すなわち、記憶部は、さらに、第1制御プログラム340の格納に用いられる。コントローラサポートプログラム320は、演算部に、コントローラサポート装置をシミュレータ324Aとして機能させるための処理と、シミュレータ324Aにおいて第1制御プログラム340を実行することにより第1制御実行時間を測定する処理とをさらに実行させる。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"