(57)【特許請求の範囲】
【請求項１】
記憶部と演算部とを備えたコントローラサポート装置であって、
前記記憶部は、
コントローラサポートプログラムと、
第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データとの格納に用いられ、前記第１テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第１テストプログラムの、前記シミュレータにおいて測定された実行時間であり、前記第２テスト実行時間は、前記テストソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第２テストプログラムの、前記コントローラにおいて測定された実行時間であり、
前記コントローラサポートプログラムは、
ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、前記シミュレータにおいて動作するオブジェクトプログラムである第１制御プログラムの、前記シミュレータにおいて測定された実行時間である第１制御実行時間を取得する処理と、
前記第１制御実行時間を前記較正データを用いて変換することにより、前記制御ソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第２制御プログラムの、前記コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、
前記推定実行時間を表すデータを出力するための処理とを、前記演算部に実行させる、コントローラサポート装置。
【請求項２】
前記記憶部は、さらに、前記第１制御プログラムの格納に用いられ、
前記コントローラサポートプログラムは、さらに、
前記コントローラサポート装置を前記シミュレータとして機能させるための処理と、
前記シミュレータにおいて前記第１制御プログラムを実行することにより前記第１制御実行時間を測定する処理とを、前記演算部に実行させる、請求項１に記載のコントローラサポート装置。
【請求項３】
前記コントローラサポート装置は、さらに、表示部を備え、
前記記憶部は、さらに、前記第１テストプログラムと、前記第２テスト実行時間との格納に用いられ、
前記コントローラサポートプログラムは、さらに、
前記シミュレータにおいて前記第１テストプログラムを実行することにより前記第１テスト実行時間を測定する処理と、
前記第１テスト実行時間および前記第２テスト実行時間から前記較正データを算出する処理とを、前記演算部に実行させ、
前記推定実行時間を表すデータを出力するための処理は、前記表示部に前記推定実行時間を表示させるための表示用データを作成する処理である、請求項２に記載のコントローラサポート装置。
【請求項４】
記憶部と演算部とを備えたコントローラサポート装置において実行されるためのコントローラサポートプログラムであって、
前記記憶部は、
前記コントローラサポートプログラムと、
第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データとの格納に用いられ、前記第１テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第１テストプログラムの、前記シミュレータにおいて測定された実行時間であり、前記第２テスト実行時間は、前記テストソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第２テストプログラムの、前記コントローラにおいて測定された実行時間であり、
前記コントローラサポートプログラムは、
ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、前記シミュレータにおいて動作するオブジェクトプログラムである第１制御プログラムの、前記シミュレータにおいて測定された実行時間である第１制御実行時間を取得する処理と、
前記第１制御実行時間を前記較正データを用いて変換することにより、前記制御ソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第２制御プログラムの、前記コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、
前記推定実行時間を表すデータを出力するための処理とを、前記演算部に実行させる、コントローラサポートプログラム。
【請求項５】
前記記憶部は、さらに、前記第１制御プログラムの格納に用いられ、
前記コントローラサポートプログラムは、さらに、
前記コントローラサポート装置を前記シミュレータとして機能させるための処理と、
前記シミュレータにおいて前記第１制御プログラムを実行することにより前記第１制御実行時間を測定する処理とを、前記演算部に実行させる、請求項４に記載のコントローラサポートプログラム。
【請求項６】
前記記憶部は、さらに、前記第１テストプログラムと、前記第２テスト実行時間との格納に用いられ、
前記コントローラサポートプログラムは、さらに、
前記シミュレータにおいて前記第１テストプログラムを実行することにより前記第１テスト実行時間を測定する処理と、
前記第１テスト実行時間および前記第２テスト実行時間から前記較正データを算出する処理とを、前記演算部に実行させる、請求項５に記載のコントローラサポートプログラム。
【請求項７】
記憶部と演算部とを備えたコントローラサポート装置において実行されるためのコントローラサポートプログラムを格納した記録媒体であって、
前記記憶部は、
前記コントローラサポートプログラムと、
第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データとの格納に用いられ、前記第１テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第１テストプログラムの、前記シミュレータにおいて測定された実行時間であり、前記第２テスト実行時間は、前記テストソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第２テストプログラムの、前記コントローラにおいて測定された実行時間であり、
前記コントローラサポートプログラムは、
ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、前記シミュレータにおいて動作するオブジェクトプログラムである第１制御プログラムの、前記シミュレータにおいて測定された実行時間である第１制御実行時間を取得する処理と、
前記第１制御実行時間を前記較正データを用いて変換することにより、前記制御ソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第２制御プログラムの、前記コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、
前記推定実行時間を表すデータを出力するための処理とを、前記演算部に実行させる、コントローラサポートプログラムを格納した記録媒体。
【請求項８】
前記記憶部は、さらに、前記第１制御プログラムの格納に用いられ、
前記コントローラサポートプログラムは、さらに、
前記コントローラサポート装置を前記シミュレータとして機能させるための処理と、
前記シミュレータにおいて前記第１制御プログラムを実行することにより前記第１制御実行時間を測定する処理とを、前記演算部に実行させる、請求項７に記載のコントローラサポートプログラムを格納した記録媒体。
【請求項９】
前記記憶部は、さらに、前記第１テストプログラムと、前記第２テスト実行時間との格納に用いられ、
前記コントローラサポートプログラムは、さらに、
前記シミュレータにおいて前記第１テストプログラムを実行することにより前記第１テスト実行時間を測定する処理と、
前記第１テスト実行時間および前記第２テスト実行時間から前記較正データを算出する処理とを、前記演算部に実行させる、請求項８に記載のコントローラサポートプログラムを格納した記録媒体。
【請求項１０】
制御対象を制御するコントローラにおける制御プログラムの実行時間を推定する方法であって、
第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データを算出する較正データ算出ステップを含み、前記第１テスト実行時間は、テストソースプログラムから生成された、前記コントローラのシミュレータにおいて動作するオブジェクトプログラムである第１テストプログラムの、前記シミュレータにおいて測定された実行時間であり、前記第２テスト実行時間は、前記テストソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第２テストプログラムの、前記コントローラにおいて測定された実行時間であり、
ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、前記シミュレータにおいて動作するオブジェクトプログラムである第１制御プログラムの、前記シミュレータにおいて測定された実行時間である第１制御実行時間を前記較正データを用いて変換することにより、前記制御ソースプログラムから生成された、前記コントローラにおいて動作するオブジェクトプログラムである第２制御プログラムの、前記コントローラにおける実行時間の推定値である推定実行時間を算出する推定実行時間算出ステップを含む、制御プログラムの実行時間を推定する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械や設備などの動作を制御するために用いられるＰＬＣ（Programmable Logic Controller。プログラマブルコントローラともよばれる。）などのコントローラの使用を支援するためのコントローラサポート装置における制御プログラムの実行時間推定に関する。
【背景技術】
【０００２】
機械や設備などの動作を制御するために用いられるコントローラには、汎用のＰＬＣや、個別の機械等に専用のプログラム制御のコントローラがある。
【０００３】
ＰＬＣは、たとえば、制御プログラムを実行するマイクロプロセッサを含むＣＰＵ（Central Processing Unit）ユニット、外部のスイッチやセンサからの信号入力および外部のリレーやアクチュエータへの信号出力を担当するＩＯ（Input Output）ユニット、といった複数のユニットで構成される。それらのユニット間で、制御プログラム実行サイクルごとに、ＰＬＣシステムバスおよび／またはフィールドネットワークを経由してデータの授受をしながら、ＰＬＣは制御動作を実行する。
【０００４】
コントローラサポート装置は、コントローラに実行させる制御プログラムやコントローラに対する各種の設定情報を作成し、それらをコントローラに転送するために用いられる。コントローラサポート装置は、たとえば、汎用のコンピュータにコントローラサポートプログラムをインストールすることで構成される。コントローラサポート装置は、たとえば、制御プログラムのソースリストを作成するエディタ機能、制御プログラムのソースリストからコントローラで動作するオブジェクトプログラムを生成するコンパイラ機能、制御プログラムをコントローラサポート装置において試験実行させるためのコントローラのシミュレータ機能、および、コントローラとの通信機能などを有する。
【０００５】
制御プログラムの開発段階では、コントローラがその制御プログラムを実行するのに要する実行時間を知る必要がある。この制御プログラムの実行時間は、その制御プログラムの実行サイクルの周期を定めるときに参照される。また、コントローラに実行させる複数の制御プログラムについて、互いに異なる実行優先度と実行サイクル周期とを定めるときに、それぞれの制御プログラムの実行時間が参照される。
【０００６】
コントローラサポート装置とコントローラとでは、制御プログラムの実行に関するハードウェアやオペレーションシステムが異なることが多い。また、制御プログラムの実行コード自体もシミュレータ用とコントローラ用とでは異なる場合がある。そのため、コントローラサポート装置のシミュレータで実行した制御プログラムの実行時間は、コントローラで実行した制御プログラムの実行時間とは異なる場合がある。
【０００７】
特開２００１−２０９４１１号公報（特許文献１）には、制御プログラムをＰＬＣで実行した場合の実行時間を、ＰＬＣサポート装置において求める方法を開示する。具体的には、制御プログラムに使用される各命令のＰＬＣにおける実処理時間データを用意しておき、シミュレータにおけるプログラム模擬実行処理において、個々の命令が処理されるごとに実処理時間データを参照して、その命令に対応する実処理時間を積算する方法が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００１−２０９４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来のＰＬＣは、その演算部に、制御プログラムを実行するために開発されたＡＳＩＣ（Application Specific Integrated Circuit）を採用し、そのＡＳＩＣがＰＬＣ用のニーモニック命令に対応する実行コードを実行する構成であることが多かった。一般に、ラダー言語等のＰＬＣ用のプログラミング言語で使用される命令は、ＰＬＣ用のニーモニック命令に１対１に変換することができる。そのような場合には、特許文献１に示されるように各命令の実処理時間データを積算する方式によって、ある程度正確な制御プログラムの実行時間を求めることができた。
【００１０】
しかし、近年は、汎用マイクロプロセッサの高速化に伴い、ＰＬＣの演算部にも汎用マイクロプロセッサが採用されることが多くなりつつある。そのような場合、ラダー言語やその他のＰＬＣ用のプログラミング言語で作成された制御プログラム（ソースプログラム）は、マイクロプロセッサに実行可能なオブジェクトプログラムにコンパイルされた形でＰＬＣにおいて実行される。本願発明者らの経験によれば、ＰＬＣ用のプログラミング言語における各命令に対応する、マイクロプロセッサにおける実処理時間は、オブジェクトプログラムが最適化されることの影響などにより、必ずしも一定とはならない。そのため、上述したような実処理時間データの積算方式では、高い精度の推定実行時間を得ることができない。さらに、制御プログラムが、特殊な命令やファンクションブロックのライブラリを利用する場合には、呼び出したライブラリ要素の実行時間が実行条件によって変動するため、実処理時間データの積算方式では、実行時間の推定精度がいっそう悪化する。
【００１１】
このような状況を背景として、コントローラサポート装置において、汎用マイクロプロセッサを用いたＰＬＣ（より一般的に、コントローラ）における実行時間を、より高い精度で推定できる方式が必要である。もちろん、その方式がＡＳＩＣを用いたコントローラについての実行時間推定にも適用できることはより好ましい。
【００１２】
本発明は、コントローラサポート装置において、コントローラにおける制御プログラムの実行時間をより高い精度で推定することを目的とする。
【課題を解決するための手段】
【００１３】
本発明のある局面によれば、記憶部と演算部とを含むコントローラサポート装置を提供する。記憶部は、コントローラサポートプログラムと、第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データとの格納に用いられる。第１テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第１テストプログラムの、シミュレータにおいて測定された実行時間であり、第２テスト実行時間は、テストソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第２テストプログラムの、コントローラにおいて測定された実行時間である。コントローラサポートプログラムは、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、シミュレータにおいて動作するオブジェクトプログラムである第１制御プログラムの、シミュレータにおいて測定された実行時間である第１制御実行時間を取得する処理と、第１制御実行時間を較正データを用いて変換することにより、制御ソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第２制御プログラムの、コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、推定実行時間を表すデータを出力するための処理とを、演算部に実行させる。
【００１４】
好ましくは、記憶部は、さらに、第１制御プログラムの格納に用いられる。コントローラサポートプログラムは、さらに、コントローラサポート装置をシミュレータとして機能させるための処理と、シミュレータにおいて第１制御プログラムを実行することにより第１制御実行時間を測定する処理とを、演算部に実行させる。
【００１５】
さらに好ましくは、コントローラサポート装置は、さらに、表示部を含む。記憶部は、さらに、第１テストプログラムと、第２テスト実行時間との格納に用いられる。コントローラサポートプログラムは、さらに、シミュレータにおいて第１テストプログラムを実行することにより第１テスト実行時間を測定する処理と、第１テスト実行時間および第２テスト実行時間から較正データを算出する処理とを、演算部に実行させる。推定実行時間を表すデータを出力するための処理は、表示部に推定実行時間を表示させるための表示用データを作成する処理である。
【００１６】
この発明の別の局面に従えば、記憶部と演算部とを備えたコントローラサポート装置において実行されるためのコントローラサポートプログラムを提供する。記憶部は、コントローラサポートプログラムと、第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データとの格納に用いられる。第１テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第１テストプログラムの、シミュレータにおいて測定された実行時間であり、第２テスト実行時間は、テストソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第２テストプログラムの、コントローラにおいて測定された実行時間である。コントローラサポートプログラムは、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、シミュレータにおいて動作するオブジェクトプログラムである第１制御プログラムの、シミュレータにおいて測定された実行時間である第１制御実行時間を取得する処理と、第１制御実行時間を較正データを用いて変換することにより、制御ソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第２制御プログラムの、コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、推定実行時間を表すデータを出力するための処理とを、演算部に実行させる。
【００１７】
好ましくは、記憶部は、さらに、第１制御プログラムの格納に用いられる。コントローラサポートプログラムは、さらに、コントローラサポート装置をシミュレータとして機能させるための処理と、シミュレータにおいて第１制御プログラムを実行することにより第１制御実行時間を測定する処理とを、演算部に実行させる。
【００１８】
さらに好ましくは、記憶部は、さらに、第１テストプログラムと、第２テスト実行時間との格納に用いられる。コントローラサポートプログラムは、さらに、シミュレータにおいて第１テストプログラムを実行することにより第１テスト実行時間を測定する処理と、第１テスト実行時間および第２テスト実行時間から較正データを算出する処理とを、演算部に実行させる。
【００１９】
この発明のさらに別の局面に従えば、記憶部と演算部とを備えたコントローラサポート装置において実行されるためのコントローラサポートプログラムを格納した記録媒体を提供する。記憶部は、コントローラサポートプログラムと、第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データとの格納に用いられる。第１テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第１テストプログラムの、シミュレータにおいて測定された実行時間であり、第２テスト実行時間は、テストソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第２テストプログラムの、コントローラにおいて測定された実行時間である。コントローラサポートプログラムは、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、シミュレータにおいて動作するオブジェクトプログラムである第１制御プログラムの、シミュレータにおいて測定された実行時間である第１制御実行時間を取得する処理と、第１制御実行時間を較正データを用いて変換することにより、制御ソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第２制御プログラムの、コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、推定実行時間を表すデータを出力するための処理とを、演算部に実行させる。
【００２０】
好ましくは、記憶部は、さらに、第１制御プログラムの格納に用いられる。コントローラサポートプログラムは、さらに、コントローラサポート装置をシミュレータとして機能させるための処理と、シミュレータにおいて第１制御プログラムを実行することにより第１制御実行時間を測定する処理とを、演算部に実行させる。
【００２１】
さらに好ましくは、記憶部は、さらに、第１テストプログラムと、第２テスト実行時間との格納に用いられる。コントローラサポートプログラムは、さらに、シミュレータにおいて第１テストプログラムを実行することにより第１テスト実行時間を測定する処理と、第１テスト実行時間および第２テスト実行時間から較正データを算出する処理とを、演算部に実行させる。
【００２２】
この発明のさらに別の局面に従えば、制御対象を制御するコントローラにおける制御プログラムの実行時間を推定する方法を提供する。本方法は、第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データを算出する較正データ算出ステップを含む。第１テスト実行時間は、テストソースプログラムから生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第１テストプログラムの、シミュレータにおいて測定された実行時間であり、第２テスト実行時間は、テストソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第２テストプログラムの、コントローラにおいて測定された実行時間である。本方法は、さらに、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、シミュレータにおいて動作するオブジェクトプログラムである第１制御プログラムの、シミュレータにおいて測定された実行時間である第１制御実行時間を較正データを用いて変換することにより、制御ソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第２制御プログラムの、コントローラにおける実行時間の推定値である推定実行時間を算出する推定実行時間算出ステップを含む。
【発明の効果】
【００２３】
本発明によれば、コントローラサポート装置において、コントローラにおける制御プログラムの実行時間をより高い精度で推定することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施の形態に係るコントローラ（ＰＬＣ）サポート装置が使用を支援するＰＬＣシステムの概略構成を示す模式図である。
【図２】本発明の実施の形態に係るコントローラ（ＰＬＣ）サポート装置が使用を支援するＣＰＵユニットのハードウェア構成を示す模式図である。
【図３】本発明の実施の形態に係るコントローラ（ＰＬＣ）サポート装置が使用を支援するＣＰＵユニットで実行されるソフトウェア構成を示す模式図である。
【図４】本発明の実施の形態に係るコントローラ（ＰＬＣ）サポート装置が使用を支援するＣＰＵユニットにおける実行動作の一例を示すシーケンス図である。
【図５】本発明の実施の形態に係るコントローラサポート装置のハードウェア構成を示す模式図である。
【図６】本発明の実施の形態に係るコントローラサポート装置のソフトウェア構成を示す模式図である。
【図７】本発明の実施の形態に係るコントローラサポート装置に関連する全体処理を示す模式図である。
【図８】本発明の実施の形態に係るコントローラサポート装置から出力される推定実行時間の表示画面の一例を示す図である。
【図９】本発明の実施の形態に係るコントローラサポート装置から出力される推定実行時間の表示画面の別の一例を示す図である。
【図１０】第１テスト実行時間と第２テスト実行時間との間の関係の一例を示す図である。
【図１１】本発明の実施の形態に係るサーバコンピュータで実現されたコントローラサポート装置に関連する全体処理を示す模式図である。
【発明を実施するための形態】
【００２５】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２６】
＜Ａ．システム構成＞
本実施の形態に係るコントローラサポート装置が使用を支援するコントローラの典型例としてＰＬＣについて説明する。ＰＬＣは、機械や設備などの制御対象を制御する。ＰＬＣは、その構成要素としてＣＰＵユニットを含む。ＣＰＵユニットは、マイクロプロセッサと、記憶手段と、通信回路とを含む。記憶手段は、制御プログラムおよびプログラムの実行を制御するシステムプログラムなどの格納に用いられる。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび制御プログラムを実行する。通信回路は、出力データを送信しおよび入力データを受信する。
【００２７】
まず、図１を参照して、ＰＬＣ１のシステム構成について説明する。図１は、本発明の実施の形態に係るコントローラ（ＰＬＣ）サポート装置が使用を支援するＰＬＣシステムの概略構成を示す模式図である。
【００２８】
図１を参照して、ＰＬＣシステムＳＹＳは、ＰＬＣ１と、ＰＬＣ１とフィールドネットワーク２を介して接続されるサーボモータドライバ３およびリモートＩＯターミナル５と、フィールド機器である検出スイッチ６およびリレー７とを含む。また、ＰＬＣ１には、接続ケーブル１０などを介してコントローラサポート装置８が接続される。
【００２９】
ＰＬＣ１は、主たる演算処理を実行するＣＰＵユニット１３と、１つ以上のＩＯユニット１４と、特殊ユニット１５とを含む。これらのユニットは、ＰＬＣシステムバス１１を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１２によって適切な電圧の電源が供給される。なお、ＰＬＣ１として構成される各ユニットは、ＰＬＣメーカーが提供するものであるので、ＰＬＣシステムバス１１は、一般にＰＬＣメーカーごとに独自に開発され、使用されている。これに対して、フィールドネットワーク２については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
【００３０】
ＣＰＵユニット１３の詳細については、図２を参照して後述する。
ＩＯユニット１４は、一般的な入出力処理に関するユニットであり、オン／オフといった２値化されたデータの入出力を司る。すなわち、ＩＯユニット１４は、検出スイッチ６などのセンサが何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット１４は、リレー７やアクチュエータといった出力先に対して、活性化するための指令（オン）および不活性化するための指令（オフ）のいずれかを出力する。
【００３１】
特殊ユニット１５は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、ＩＯユニット１４ではサポートしない機能を有する。
【００３２】
フィールドネットワーク２は、ＣＰＵユニット１３と遣り取りされる各種データを伝送する。フィールドネットワーク２としては、典型的には、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）としては、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）、Ｐｒｏｆｉｎｅｔ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ／ＩＰ（登録商標）などを用いてもよい。
【００３３】
なお、図１には、ＰＬＣシステムバス１１およびフィールドネットワーク２の両方を有するＰＬＣシステムＳＹＳを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク２ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク２を使用せずに、サーボモータドライバ３をＰＬＣシステムバス１１に直接接続してもよい。さらに、フィールドネットワーク２の通信ユニットをＰＬＣシステムバス１１に接続し、ＣＰＵユニット１３から当該通信ユニット経由で、フィールドネットワーク２に接続された機器との間の通信を行うようにしてもよい。
【００３４】
なお、ＰＬＣ１は、ＣＰＵユニット１３にＩＯユニット１４の機能やサーボモータドライバ３の機能を持たせることにより、ＩＯユニット１４やサーボモータドライバ３などを介さずにＣＰＵユニット１３が直接制御対象を制御する構成でもよい。
【００３５】
サーボモータドライバ３は、フィールドネットワーク２を介してＣＰＵユニット１３と接続されるとともに、ＣＰＵユニット１３からの指令値に従ってサーボモータ４を駆動する。より具体的には、サーボモータドライバ３は、ＰＬＣ１から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ３は、サーボモータ４の軸に接続されている位置センサ（ロータリーエンコーダ）やトルクセンサといった検出器から、位置、速度（典型的には、今回位置と前回位置との差から算出される）、トルクといったサーボモータ４の動作に係る実測値を取得する。そして、サーボモータドライバ３は、ＣＰＵユニット１３からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボモータドライバ３は、実測値が目標値に近づくようにサーボモータ４を駆動するための電流を調整する。なお、サーボモータドライバ３は、サーボモータアンプと称されることもある。
【００３６】
また、図１には、サーボモータ４とサーボモータドライバ３とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【００３７】
図１に示すＰＬＣシステムＳＹＳのフィールドネットワーク２には、さらに、リモートＩＯターミナル５が接続されている。リモートＩＯターミナル５は、基本的には、ＩＯユニット１４と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートＩＯターミナル５は、フィールドネットワーク２でのデータ伝送に係る処理を行うための通信カプラ５２と、１つ以上のＩＯユニット５３とを含む。これらのユニットは、リモートＩＯターミナルバス５１を介して、データを互いに遣り取りできるように構成される。
【００３８】
本発明の実施の形態に係るコントローラサポート装置８については後述する。
＜Ｂ．ＣＰＵユニットのハードウェア構成＞
次に、図２を参照して、ＣＰＵユニット１３のハードウェア構成について説明する。図２は、本発明の実施の形態に係るコントローラ（ＰＬＣ）サポート装置８が使用を支援するＣＰＵユニット１３のハードウェア構成を示す模式図である。図２を参照して、ＣＰＵユニット１３は、マイクロプロセッサ１００と、チップセット１０２と、メインメモリ１０４と、不揮発性メモリ１０６と、システムタイマ１０８と、ＰＬＣシステムバスコントローラ１２０と、フィールドネットワークコントローラ１４０と、ＵＳＢコネクタ１１０とを含む。チップセット１０２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００３９】
マイクロプロセッサ１００およびチップセット１０２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ１００は、チップセット１０２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ１００に必要な命令コードを生成する。さらに、チップセット１０２は、マイクロプロセッサ１００での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００４０】
ＣＰＵユニット１３は、記憶手段として、メインメモリ１０４および不揮発性メモリ１０６を有する。
【００４１】
メインメモリ１０４は、揮発性の記憶領域（ＲＡＭ）であり、ＣＰＵユニット１３への電源投入後にマイクロプロセッサ１００で実行されるべき各種プログラムを保持する。また、メインメモリ１０４は、マイクロプロセッサ１００による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ１０４としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といったデバイスが用いられる。
【００４２】
一方、不揮発性メモリ１０６は、リアルタイムＯＳ（Operating System）、ＰＬＣ１のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ１００がアクセスできるようにメインメモリ１０４にコピーされる。このような不揮発性メモリ１０６としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）のような光学記録媒体などを用いることもできる。
【００４３】
システムタイマ１０８は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ１００に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、ＯＳ（Operating System）やＢＩＯＳ（Basic Input Output System）などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ１０８が発生する割り込み信号を利用して、後述するような制御サイクルごとの制御動作が実現される。
【００４４】
ＣＰＵユニット１３は、通信回路として、ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０を有する。これらの通信回路は、出力データの送信および入力データの受信を行う。
【００４５】
なお、ＣＰＵユニット１３自体にＩＯユニット１４やサーボモータドライバ３の機能を持たせる場合は、通信回路による出力データの送信および入力データの受信は、それらの機能を担う部分を通信の相手方としてＣＰＵユニット１３の内部で行われる送信および受信となる。
【００４６】
ＰＬＣシステムバスコントローラ１２０は、ＰＬＣシステムバス１１を介したデータの遣り取りを制御する。より具体的には、ＰＬＣシステムバスコントローラ１２０は、ＤＭＡ（Dynamic Memory Access）制御回路１２２と、ＰＬＣシステムバス制御回路１２４と、バッファメモリ１２６とを含む。なお、ＰＬＣシステムバスコントローラ１２０は、ＰＬＣシステムバスコネクタ１３０を介してＰＬＣシステムバス１１と内部的に接続される。
【００４７】
バッファメモリ１２６は、ＰＬＣシステムバス１１を介して他のユニットへ出力されるデータ（以下「出力データ」とも称す。）の送信バッファ、および、ＰＬＣシステムバス１１を介して他のユニットから入力されるデータ（以下「入力データ」とも称す。）の受信バッファとして機能する。なお、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１２６に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ１２６に一次的に保持された後、メインメモリ１０４に移される。
【００４８】
ＤＭＡ制御回路１２２は、メインメモリ１０４からバッファメモリ１２６への出力データの転送、および、バッファメモリ１２６からメインメモリ１０４への入力データの転送を行う。
【００４９】
ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１に接続される他のユニットとの間で、バッファメモリ１２６の出力データを送信する処理および入力データを受信してバッファメモリ１２６に格納する処理を行う。典型的には、ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１における物理層およびデータリンク層の機能を提供する。
【００５０】
フィールドネットワークコントローラ１４０は、フィールドネットワーク２を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１４０は、用いられるフィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。たとえば、ＥｔｈｅｒＣＡＴ（登録商標）規格に従うフィールドネットワーク２が採用される場合には、通常のイーサネット（登録商標）通信を行うためのハードウェアを含む、フィールドネットワークコントローラ１４０が用いられる。ＥｔｈｅｒＣＡＴ（登録商標）規格では、通常のイーサネット（登録商標）規格に従う通信プロトコルを実現する一般的なイーサネット（登録商標）コントローラを利用できる。フィールドネットワーク２として採用される産業用イーサネット（登録商標）の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット（登録商標）コントローラが用いられる。また、産業用イーサネット（登録商標）以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【００５１】
バッファメモリ１４６は、フィールドネットワーク２を介して他の装置などへ出力されるデータ（このデータについても、以下「出力データ」と称す。）の送信バッファ、および、フィールドネットワーク２を介して他の装置などから入力されるデータ（このデータについても、以下「入力データ」とも称す。）の受信バッファとして機能する。上述したように、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定の装置へ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１４６に一次的に保持される。また、他の装置から転送された入力データは、バッファメモリ１４６に一次的に保持された後、メインメモリ１０４に移される。
【００５２】
ＤＭＡ制御回路１４２は、メインメモリ１０４からバッファメモリ１４６への出力データの転送、および、バッファメモリ１４６からメインメモリ１０４への入力データの転送を行う。
【００５３】
フィールドネットワーク制御回路１４４は、フィールドネットワーク２に接続される他の装置との間で、バッファメモリ１４６の出力データを送信する処理および入力データを受信してバッファメモリ１４６に格納する処理を行う。典型的には、フィールドネットワーク制御回路１４４は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００５４】
ＵＳＢコネクタ１１０は、コントローラサポート装置８とＣＰＵユニット１３とを接続するためのインターフェイスである。典型的には、コントローラサポート装置８から転送される、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なプログラムなどは、ＵＳＢコネクタ１１０を介してＰＬＣ１に取込まれる。
【００５５】
＜Ｃ．ＣＰＵユニットのソフトウェア構成＞
次に、図３を参照して、コントローラ（ＰＬＣ１）が各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１３のマイクロプロセッサ１００によって実行される。
【００５６】
図３は、本発明の実施の形態に係るコントローラ（ＰＬＣ）サポート装置８が使用を支援するＣＰＵユニット１３で実行されるソフトウェア構成を示す模式図である。図３を参照して、ＣＰＵユニット１３で実行されるソフトウェアとしては、リアルタイムＯＳ２００と、システムプログラム２１０と、ユーザプログラム２３６との３階層になっている。
【００５７】
リアルタイムＯＳ２００は、ＣＰＵユニット１３のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ１００がシステムプログラム２１０およびユーザプログラム２３６を実行するための基本的な実行環境を提供する。このリアルタイムＯＳは、典型的には、ＰＬＣのメーカーあるいは専門のソフトウェア会社などによって提供される。
【００５８】
システムプログラム２１０は、ＰＬＣ１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム２１０は、スケジューラプログラム２１２と、出力処理プログラム２１４と、入力処理プログラム２１６と、シーケンス命令演算プログラム２３２と、モーション演算プログラム２３４と、その他のシステムプログラム２２０とを含む。なお、一般には出力処理プログラム２１４および入力処理プログラム２１６は、連続的（一体として）に実行されるので、これらのプログラムを、ＩＯ処理プログラム２１８と総称する場合もある。
【００５９】
ユーザプログラム２３６は、ユーザにおける制御目的に応じて作成される。すなわち、ＰＬＣシステムＳＹＳを用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。
【００６０】
ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム２３６、シーケンス命令演算プログラム２３２、およびモーション演算プログラム２３４を、制御プログラム２３０と総称する場合もある。
【００６１】
以下、各プログラムについてより詳細に説明する。
ユーザプログラム２３６は、上述したように、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。ユーザプログラム２３６は、典型的には、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム２３６は、コントローラサポート装置８などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム２３６は、コントローラサポート装置８から接続ケーブル１０を介してＣＰＵユニット１３へ転送され、不揮発性メモリ１０６などに格納される。
【００６２】
スケジューラプログラム２１２は、出力処理プログラム２１４、入力処理プログラム２１６、および制御プログラム２３０について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム２１２は、ユーザプログラム２３６およびモーション演算プログラム２３４の実行を制御する。
【００６３】
ＣＰＵユニット１３では、モーション演算プログラム２３４に適した一定周期の実行サイクル（制御サイクル）を処理全体の共通サイクルとして採用する。そのため、１つの制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各制御サイクルにおいて実行を完了すべき処理と、複数の制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム２１２は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム２１２は、各制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【００６４】
出力処理プログラム２１４は、ユーザプログラム２３６（制御プログラム２３０）の実行によって生成された出力データを、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０へ転送するのに適した形式に再配置する。ＰＬＣシステムバスコントローラ１２０またはフィールドネットワークコントローラ１４０が、マイクロプロセッサ１００からの、送信を実行するための指示を必要とする場合は、出力処理プログラム２１４がそのような指示を発行する。
【００６５】
入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０によって受信された入力データを、制御プログラム２３０が使用するのに適した形式に再配置する。
【００６６】
シーケンス命令演算プログラム２３２は、ユーザプログラム２３６で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【００６７】
モーション演算プログラム２３４は、ユーザプログラム２３６による指示に従って実行され、サーボモータドライバ３やパルスモータドライバといったモータドライバに対して出力する指令値を実行されるごとに算出するプログラムである。
【００６８】
その他のシステムプログラム２２０は、図３に個別に示したプログラム以外の、ＰＬＣ１の各種機能を実現するためのプログラム群をまとめて示したものである。
【００６９】
リアルタイムＯＳ２００は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。ＰＬＣ１においては、ＣＰＵユニット１３のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力（送信）するためのイベント（割り込み）として、制御サイクル開始の割り込みが初期設定される。リアルタイムＯＳ２００は、制御サイクル開始の割り込みが発生すると、マイクロプロセッサ１００での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム２１２に切り替える。なお、リアルタイムＯＳ２００は、スケジューラプログラム２１２およびスケジューラプログラム２１２がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム２１０に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、ＣＰＵユニット１３とコントローラサポート装置８との間の接続ケーブル１０（ＵＳＢ）などを介した通信処理に関するものが含まれる。
【００７０】
なお、制御プログラム２３０およびスケジューラプログラム２１２は、記憶手段であるメインメモリ１０４および不揮発性メモリ１０６に格納される。
【００７１】
＜Ｄ．ＣＰＵユニットにおける実行動作＞
次に、ＣＰＵユニット１３における実行動作について説明する。
【００７２】
図４は、本発明の実施の形態に係るコントローラ（ＰＬＣ）サポート装置８が使用を支援するＣＰＵユニット１３における実行動作の一例を示すシーケンス図である。図４においては、紙面の上から下に向かって経過する時間軸に沿って、ＩＯ処理プログラム、制御プログラムＡ、および制御プログラムＢが実行される期間が示されている。
【００７３】
制御プログラムＡおよびＢのそれぞれの時間軸に沿って示した破線の角丸の矩形は、対応する制御プログラムの実行サイクルを示す。図４に示す例では、制御プログラムＡは、１回分の制御サイクルを実行サイクルとしており、制御プログラムＢは、４回分の制御サイクルを実行サイクルとしている。また、制御プログラムＡの実行優先度は、制御プログラムＢの実行優先度よりも高く設定されているものとする。
【００７４】
制御プログラムＡのシーケンスプログラム（ユーザプログラム）は、モーション制御を実現するためのモーション命令を含んでおり、モーション命令の実行によりモーション演算プログラム２３４が呼び出されて実行される。一方、制御プログラムＢのシーケンスプログラムは、モーション命令を含んでいない。
【００７５】
制御サイクル１が開始すると、スケジューラプログラム２１２の実行制御により、ＩＯ処理プログラムが実行される。
【００７６】
ＩＯ処理プログラムの実行による出力処理および入力処理が終了すると、スケジューラプログラム２１２が行う実行制御により、制御プログラムＡが実行される。制御プログラムＡの実行においては、まずシーケンスプログラムが実行され、引き続いて、モーション演算プログラム２３４が実行される。シーケンス命令演算プログラム２３２は、シーケンスプログラムの実行中に、呼び出される都度、実行される。制御プログラムＡの全体（シーケンスプログラムおよびモーション演算プログラム）は１つのスレッドとして構成されており、実行途中でスケジューラプログラム２１２の関与なしに連続して実行される。
【００７７】
制御プログラムＡの実行が終了すると、スケジューラプログラム２１２が行う実行制御により、制御プログラムＢが実行される。しかし、制御プログラムＢの実行中に制御サイクル１が終了する（制御サイクル２が開始する）ので、その時点で制御プログラムＢの実行は中断される。
【００７８】
制御サイクル２以降においても、ＩＯ処理プログラムおよび制御プログラムＡは、制御サイクル１での実行と同様の実行を繰り返す。制御サイクル２における制御プログラムＡの実行が終了すると、制御プログラムＢの未実行の部分が実行される。しかし、制御サイクル２においても、制御プログラムＢの実行中に制御サイクル２が終了するので、制御プログラムＢの実行は、再び中断される。
【００７９】
制御サイクル３において実行再開した制御プログラムＢは、制御サイクル３が終了するまでに実行終了する。
【００８０】
制御サイクル４においても制御サイクル１から開始した制御プログラムＢの実行サイクルが継続しているが、制御プログラムＢは、制御サイクル３においてすでに今回の実行サイクルにおける実行を終了しているため、制御サイクル４においては実行されない。
【００８１】
＜Ｅ．サポート装置のハードウェア構成＞
次に、ＰＬＣ１で実行されるプログラムの作成およびＰＬＣ１のメンテナンスなどを行うためのコントローラサポート装置８について説明する。
【００８２】
図５は、本発明の実施の形態に係るコントローラサポート装置８のハードウェア構成を示す模式図である。図５を参照して、コントローラサポート装置８は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【００８３】
図５を参照して、コントローラサポート装置８は、ＯＳを含む各種プログラムを実行するＣＰＵ８１と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）８２と、ＣＰＵ８１でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ８３と、ＣＰＵ８１で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）８４とを含む。ＣＰＵ８１がコントローラサポート装置８の演算部に相当し、ＲＯＭ８２、ＲＡＭ８３およびハードディスク８４がコントローラサポート装置８の記憶部に相当する。
【００８４】
コントローラサポート装置８は、さらに、ユーザからの操作を受付けるキーボード８５およびマウス８６と、情報をユーザに提示するためのモニタ８７とを含む。さらに、コントローラサポート装置８は、ＰＬＣ１（ＣＰＵユニット１３）などと通信するための通信インターフェイス（ＩＦ）８９を含む。
【００８５】
後述するように、コントローラサポート装置８で実行される各種プログラムは、ＣＤ−ＲＯＭ９に格納されて流通する。このＣＤ−ＲＯＭ９に格納されたプログラムは、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）ドライブ８８によって読取られ、ハードディスク（ＨＤＤ）８４などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【００８６】
上述したように、コントローラサポート装置８は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。
【００８７】
＜Ｆ．コントローラサポート装置のソフトウェア構成＞
次に、図６を参照して、本実施の形態に係るコントローラサポート装置８が各種機能を提供するためのソフトウェア群について説明する。
【００８８】
図６は、本発明の実施の形態に係るコントローラサポート装置８のソフトウェア構成を示す模式図である。図６を参照して、コントローラサポート装置８ではＯＳ３１０が実行され、コントローラサポートプログラム３２０に含まれる各種のプログラムを実行可能な環境が提供される。
【００８９】
コントローラサポートプログラム３２０は、エディタプログラム３２１と、コンパイラプログラム３２２と、デバッガプログラム３２３と、シミュレータプログラム３２４と、較正データ算出プログラム３２５と、推定実行時間算出プログラム３２６と、出力プログラム３２７と、通信プログラム３２８とを含む。コントローラサポートプログラム３２０に含まれるそれぞれのプログラムは、典型的には、ＣＤ−ＲＯＭ９に格納された状態で流通して、コントローラサポート装置８にインストールされる。
【００９０】
エディタプログラム３２１は、ユーザプログラム（ソースプログラム）３３０を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム３２１は、ユーザがキーボード８５やマウス８６を操作してユーザプログラム２３６のソースプログラム３３０を作成する機能に加えて、作成したソースプログラム３３０の保存機能および編集機能を提供する。また、エディタプログラム３２１は、外部からの制御プログラム２３０（その中でも特に、ユーザプログラム２３６）のソースプログラムを入力し、またユーザの操作により既存の制御プログラム２３０のソースプログラムを編集する。
【００９１】
コンパイラプログラム３２２は、制御プログラムのソースプログラム３３０をコンパイルして、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式のユーザプログラム（第２制御プログラム）２３６を生成する機能を提供する。また、コンパイラプログラム３２２は、制御プログラムのソースプログラム３３０をコンパイルして、コントローラサポート装置８のＣＰＵ８１で実行可能なオブジェクトプログラム形式のユーザプログラム（第１制御プログラム）３４０を生成する機能を提供する。このユーザプログラム３４０は、コントローラサポート装置８によってＰＬＣ１の動作をシミュレート（模擬）するために使用される、シミュレーション用のオブジェクトプログラムである。
【００９２】
デバッガプログラム３２３は、ユーザプログラム（ソースプログラム）３３０に対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
【００９３】
シミュレータプログラム３２４は、実行されると、コントローラサポート装置８内にＰＬＣ１のＣＰＵユニット１３（コントローラ）のシミュレータを構築する。本シミュレータは、以下のような機能を提供する。
【００９４】
（１）システムタイマの信号により制御サイクルを開始させるＣＰＵユニット１３のリアルタイムＯＳの機能。
【００９５】
（２）制御プログラムの実行優先度と実行サイクルとに従って制御プログラム２３０の実行を制御する、ＣＰＵユニット１３のスケジューラプログラム２１２の機能。
【００９６】
（３）ＣＰＵユニット１３の出力処理プログラム２１４および入力処理プログラム２１６の機能。
【００９７】
（４）制御対象に代わって入力データを与える機能、および、可能な場合には、出力データを受けて動作する制御対象を模倣し、動作の結果を入力データに反映する機能。
【００９８】
また、シミュレータプログラム３２４は、第１制御プログラム（シミュレータ用オブジェクトプログラム）３４０がシミュレータ上で動作するときに必要な、ＣＰＵユニット１３におけるシーケンス命令演算プログラム２３２および／またはモーション演算プログラム２３４に相当するプログラムを提供する。
【００９９】
第１制御プログラム（シミュレータ用オブジェクトプログラム）３４０の実行コード自体は、コントローラサポート装置８のＣＰＵ８１が実行可能なコードであるので、上記の実行環境による実行制御または支援のもと、コントローラサポート装置８のＣＰＵ８１によって直接実行される。
【０１００】
あるいは、シミュレータプログラム３２４がＣＰＵユニット１３のマイクロプロセッサ１００を仮想的に構築することにより、シミュレータ上で第２制御プログラム（コントローラ用オブジェクトプログラム）２３６を動作させてもよい。その場合は、第１制御プログラム（シミュレータ用オブジェクトプログラム）３４０と第２制御プログラム（コントローラ用オブジェクトプログラム）２３６とは同一のプログラムとなるので、これらを別々に生成する必要はない。
【０１０１】
また、コントローラサポート装置８のＣＰＵ８１とＣＰＵユニット１３のマイクロプロセッサ１００とが同系列のプロセッサであって、ＣＰＵ８１が第２制御プログラム（コントローラ用オブジェクトプログラム）２３６の実行コードを実行可能である場合も、第１制御プログラム（シミュレータ用オブジェクトプログラム）３４０と第２制御プログラム（コントローラ用オブジェクトプログラム）２３６とは同一のプログラムとなる。
【０１０２】
較正データ算出プログラム３２５は、実行されることにより、後述する図７の較正データ算出部３２５Ａを構成する。推定実行時間算出プログラム３２６は、実行されることにより、後述する図７の推定実行時間算出部３２６Ａを構成する。出力プログラム３２７は、実行されることにより、後述する図７の出力部３２７Ａを構成する。これらのプログラムにより提供される処理については、図７を参照して後に詳述する。
【０１０３】
通信プログラム３２８は、ＰＬＣ１のＣＰＵユニット１３へ制御プログラム２３０のＣＰＵユニット１３用のオブジェクトプログラム２３６を転送する機能を提供する。
【０１０４】
一般的には、ＰＬＣ１に実装されるシステムプログラム２１０は、ＣＰＵユニット１３の製造段階でＣＰＵユニット１３の不揮発性メモリ１０６へ格納される。但し、ＣＤ−ＲＯＭ９にシステムプログラム２１０を格納しておけば、ユーザは、ＣＤ−ＲＯＭ９のシステムプログラム２１０をコントローラサポート装置８へコピーし、通信プログラム３２８が提供する機能を利用してコピーしたシステムプログラム２１０をＣＰＵユニット１３へ転送することもできる。さらに、ＣＤ−ＲＯＭ９に、ＰＬＣ１のＣＰＵユニット１３で実行されるリアルタイムＯＳ２００を格納しておけば、リアルタイムＯＳ２００についてもユーザ操作によってＰＬＣ１へ再インストールできる。
【０１０５】
＜Ｇ．コントローラサポート装置に関連する全体処理＞
（ｇ１：概要）
次に、図７を参照して、コントローラサポート装置８において行われる処理に加えて、制御プログラムの実行時間推定に関連する一連の処理、ならびに、各処理の間のプログラムおよびデータの流れについて説明する。
【０１０６】
図７は、本発明の実施の形態に係るコントローラサポート装置８に関連する全体処理を示す模式図である。図６にソフトウェア構成を示すコントローラサポート装置８は、図７に示すコントローラサポート装置Ａに相当する。
【０１０７】
図７に示される、制御プログラムの実行時間を推定する方法は、較正データ算出処理のステップと推定実行時間算出処理のステップとを中心としている。
【０１０８】
較正データ算出処理は、較正用のテストプログラムを対象として事前に測定されるコントローラにおける実行時間とシミュレータにおける実行時間とを用いて、それらの間の関係を表す較正データを算出する処理である。
【０１０９】
推定実行時間算出処理は、シミュレータで測定された制御プログラムの実行時間を取得し、その実行時間を較正データを用いて変換することにより、その制御プログラムをコントローラで実行した場合の実行時間の推定値を算出する処理である。
【０１１０】
各処理の内容をより詳細に説明すると以下のとおりである。
（ｇ２：較正データ算出処理）
まず、テストプログラムのソースプログラム（テストソースプログラム）３７０が用意される。
【０１１１】
テストソースプログラム３７０から、シミュレータ用コンパイラ３８０を用いて、シミュレータ用オブジェクトプログラム（第１テストプログラム）３９０が生成される。また、テストソースプログラム３７０から、コントローラ用コンパイラ３８２を用いて、コントローラ用オブジェクトプログラム（第２テストプログラム）３９２が生成される。
【０１１２】
第２テストプログラム３９２をコントローラＡで実行することで、その実行時間が測定され、第２テストプログラム３９２の実行時間である第２テスト実行時間のデータが取得される。
【０１１３】
ここまでの処理は、一般にコントローラの供給者（コントローラの製造業者、販売業者、技術サービス業者など）において行われ、第１テストプログラム３９０と第２テスト実行時間とがユーザに提供される。なお、ここまでの処理をユーザ自身が行ってもよい。
【０１１４】
第１テストプログラム３９０をシミュレータ３２４Ａで実行し、その実行時間を測定し、第１テストプログラム３９０の実行時間である第１テスト実行時間のデータが取得される。そして、第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データが算出される。
【０１１５】
このように、較正データ算出処理は、第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データを算出する処理である。ここで、第１テスト実行時間は、テストソースプログラム３７０から生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第１テストプログラム３９０の、シミュレータにおいて測定された実行時間である。また、第２テスト実行時間は、テストソースプログラム３７０から生成された、コントローラにおいて動作するオブジェクトプログラムである第２テストプログラム３９２の、コントローラにおいて測定された実行時間である。
【０１１６】
（ｇ３：推定実行時間算出処理）
次に、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラム３３０が用意される。
【０１１７】
制御ソースプログラム３３０から、シミュレータ用コンパイラ３２２Ａを用いて、シミュレータ用オブジェクトプログラム（第１制御プログラム）３４０が生成される。
【０１１８】
第１制御プログラム３４０をシミュレータ３２４Ａで実行し、その実行時間を測定し、第１制御プログラムの実行時間である第１制御実行時間のデータが取得される。
【０１１９】
第１制御実行時間を較正データを用いて変換することにより、制御ソースプログラム３３０から生成された、コントローラにおいて動作するオブジェクトプログラムである第２制御プログラム３４２の、コントローラにおける実行時間の推定値である推定実行時間が算出される。
【０１２０】
第２制御プログラム３４２は、制御ソースプログラム３３０から、コントローラ用コンパイラ３２２Ｂを用いて生成される。第２制御プログラム３４２の実際の生成は、推定実行時間をふまえて、必要に応じて制御ソースプログラム３３０を修正した後に行えばよい。生成された第２制御プログラム３４２は、コントローラＢに転送され、コントローラＢにおいて実行される。なお、コントローラＡとコントローラＢとは、実行時間の観点で同一とみなせる機種である。
【０１２１】
このように、推定実行時間算出処理は、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラム３３０から生成された、シミュレータ３２４Ａにおいて動作するオブジェクトプログラムである第１制御プログラム３４０の、シミュレータ３２４Ａにおいて測定された実行時間である第１制御実行時間を較正データを用いて変換することにより、制御ソースプログラム３３０から生成された、コントローラにおいて動作するオブジェクトプログラムである第２制御プログラム３４２の、コントローラにおける実行時間の推定値である推定実行時間を算出する処理である。
【０１２２】
推定実行時間が算出されると、推定実行時間を表す出力用データが作成され、出力する処理が実行される。出力用データを作成し、出力する処理は、たとえば、推定実行時間をモニタ８７の画面に表示するための表示用データを作成し、表示させる処理である。出力用データを作成し、出力する処理は、推定実行時間を他の装置に送信するための送信用データを作成し、送信する処理であってもよい。出力用データを出力する処理は、コントローラサポート装置８外からアクセス可能な記憶部に出力用データを格納する処理であってもよい。
【０１２３】
（ｇ４：変形例）
シミュレータ（コントローラサポート装置８）とコントローラ（ＰＬＣ１）とが同一のオブジェクトコードを実行できる場合は、シミュレータ用コンパイラとコントローラ用コンパイラとを使い分ける必要はなく、共通のコンパイラを用いればよい。その場合は、第１テストプログラム３９０と第２テストプログラム３９２とは同一のプログラムとなり、第１制御プログラム３４０と第２制御プログラム３４２とは同一のプログラムとなる。
【０１２４】
テストソースプログラム３７０のコンパイルに用いるシミュレータ用コンパイラ３８０と制御ソースプログラム３３０のコンパイルに用いるシミュレータ用コンパイラ３２２Ａとは、同じソースプログラムをコンパイルすれば同じオブジェクトプログラムを生成できるものを使用する。コントローラ用コンパイラについても同様である。
【０１２５】
（ｇ５：別形態）
コントローラサポート装置８は、図７にコントローラサポート装置Ａとして示したように、第１テストプログラム３９０および第２テスト実行時間を提供された以降のすべての処理を単一の装置で実行できるようにすると便利である。
【０１２６】
しかし、実行時間推定の観点からは、オブジェクトプログラムの生成を別の装置に行わせ、コントローラサポート装置８が行う処理を図７にコントローラサポート装置Ｂとして示した処理に限定してもよい。
【０１２７】
あるいは、シミュレータを別の装置において構成し、コントローラサポート装置８は、別の装置であるシミュレータから第１制御実行時間を取得するようにしてもよい。
【０１２８】
あるいは、較正データ算出処理を別の装置に行わせ、コントローラサポート装置８は、算出された較正データを取得し、それを記憶して使用するようにしてもよい。そうすると、実行時間推定の観点からは、コントローラサポート装置８が行う処理を図７にコントローラサポート装置Ｃとして示した処理に限定してもよい。
【０１２９】
コントローラサポート装置Ａ，Ｂ，Ｃは、たとえば、可搬型または机上型のパーソナルコンピュータを用いて実現するのに好適である。
【０１３０】
なお、いずれの場合も、いったん較正データを算出した後は、記憶していた第１テストプログラム３９０と第２テスト実行時間とについては削除してもよい。
【０１３１】
図７に示すコントローラサポート装置Ｃは、以下のように表現することができる。すなわち、コントローラサポート装置Ｃは、記憶部（図５のＲＯＭ８２、ＲＡＭ８３およびハードディスク８４）と演算部（図５のＣＰＵ８１）とを含む。記憶部は、コントローラサポートプログラム３２０と、第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データとの格納に用いられる。第１テスト実行時間は、テストソースプログラム３７０から生成された、コントローラのシミュレータにおいて動作するオブジェクトプログラムである第１テストプログラム３９０の、シミュレータにおいて測定された実行時間である。第２テスト実行時間は、テストソースプログラム３７０から生成された、コントローラにおいて動作するオブジェクトプログラムである第２テストプログラム３９２の、コントローラにおいて測定された実行時間である。
【０１３２】
コントローラサポートプログラム３２０は、以下の処理を演算部（ＣＰＵ８１）に実行させる。
【０１３３】
（１）ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラム３３０から生成された、シミュレータにおいて動作するオブジェクトプログラムである第１制御プログラム３４０の、シミュレータにおいて測定された実行時間である第１制御実行時間を取得する処理
（２）第１制御実行時間を較正データを用いて変換することにより、制御ソースプログラム３３０から生成された、コントローラにおいて動作するオブジェクトプログラムである第２制御プログラム３４２の、コントローラにおける実行時間の推定値である推定実行時間を算出する処理
（３）推定実行時間を表すデータを出力するための処理
また、コントローラサポート装置Ｂは、表示部（図５のモニタ８７の画面）に推定実行時間を表示する装置であるとする。コントローラサポート装置Ｂは、コントローラサポート装置Ｃに次の構成を加えた装置である。すなわち、コントローラサポート装置Ｂは、さらに表示部を含む。記憶部は、さらに、第１制御プログラム３４０と、第１テストプログラム３９０と、第２テスト実行時間との格納に用いられる。コントローラサポートプログラム３２０は、さらに以下の処理を演算部（ＣＰＵ８１）に実行させる。
【０１３４】
（４）コントローラサポート装置をシミュレータとして機能させるための処理
（５）シミュレータにおいて第１テストプログラム３９０を実行することにより第１テスト実行時間を測定する処理
（６）第１テスト実行時間および第２テスト実行時間から較正データを算出する処理
（７）シミュレータにおいて第１制御プログラム３４０を実行することにより第１制御実行時間を測定する処理
上述の推定実行時間を表すデータを出力するための処理は、表示部に推定実行時間を表示させるための表示用データを作成する処理である。
【０１３５】
＜Ｈ．推定実行時間の表示例＞
次に、上述したような処理によって算出された推定実行時間の出力例（表示例）について説明する。
【０１３６】
図８は、本発明の実施の形態に係るコントローラサポート装置８から出力される推定実行時間の表示画面の一例を示す図である。
【０１３７】
図８に示す推定実行時間の表示画面例では、図４に示した制御プログラムＡおよびＢが実行時間推定の対象となっている。本表示画面においては、制御プログラムＡは「ＴＡＳＫ  Ａ」、制御プログラムＢは「ＴＡＳＫ  Ｂ」とそれぞれ表記されている。
【０１３８】
正味実行時間として表示されているのが推定実行時間である。正味実行時間は、実行休止時間を除いた、その制御プログラムが実際に実行されている時間を意味する。たとえば、図４において、制御プログラムＢは、２回の実行休止期間をはさんで、３回に分けて実行されている。この３回に分かれて実際に実行されている時間の合計が正味実行時間となる。
【０１３９】
正味実行時間の表示部には、ＩＯ処理の実行時間も表示されている。ＩＯ処理は「Ｉ／Ｏ」と表記されている。なお、ＩＯ処理の実行時間を求めるための処理については、図７において図示していない。ＩＯ処理の実行時間は、ＣＰＵユニット１３に接続される他のユニットの数や、出力データおよび入力データの量と相関があり、それらが多いほどＩＯ処理の実行時間が長くなる。コントローラサポート装置８は、それらの情報をコントローラに設定するために保有しているから、それらの情報を用いて、ＩＯ処理の実行時間の推定値を算出することができる。
【０１４０】
正味実行時間の表示部において「５００μｓ」とあるのは、制御サイクルの周期が５００μｓであることを示している。
【０１４１】
シミュレータにおいて、推定実行時間（正味実行時間）の算出の元となる第１制御実行時間は、制御プログラムＡおよびＢを別々に、実行休止期間なしに実行することにより測定することができる。また、実際にコントローラにおいて実行されるときと同様に、シミュレータにおいても、図４のシーケンスのとおりに、実行優先度および実行サイクルに従ってプログラムを実行させ、実際に実行に要している時間を測定してもよい。
【０１４２】
第１制御実行時間の測定と推定実行時間の算出とは、複数回繰り返して行ってもよい。制御プログラムが繰り返し実行されると、制御プログラムにおいて使用する変数の値などの実行条件が変化し、それに応じて実行時間も変動する。正味実行時間のグラフに添えて表示しているＭＡＸ値は、繰り返し実行した場合の最大値である。これに加えて、最小値や平均値を表示してもよい。
【０１４３】
制御プログラムＡの推定実行時間は、シーケンス演算部分とモーション演算部分とに分けて算出しており、グラフ表示においても分けて表示している。
【０１４４】
総計実行時間は、それぞれの制御プログラムの実行サイクルの開始からその実行サイクルにおける制御プログラムの実行終了までの時間を意味する。すなわち、制御プログラムＡの総計実行時間は、図４の各制御サイクルの冒頭から、その制御サイクルにおいて制御プログラムＡが実行終了するまでの時間に相当する。この時間には、制御プログラムＡ自体の実行時間のほか、ＩＯ処理の実行時間が加算される。
【０１４５】
同様に、制御プログラムＢの総計実行時間は、図４の制御サイクル１の冒頭から制御サイクル３において制御プログラムＢが実行終了するまでの時間に相当する。この時間には、制御プログラムＢが実行終了するまでに実行される、３回のＩＯ処理の実行時間と３回の制御プログラムＡの実行時間とが加算される。
【０１４６】
総計実行時間の表示部において、「０．５ｍｓ」および「２ｍｓ」とあるのは、それぞれの制御プログラムについての実行サイクルの周期を示している。また、正味実行時間の場合と同様、各制御プログラムの総計実行時間の最大値が表示されている。総計実行時間の表示により、ユーザは、各制御プログラムが実行サイクルの時間内に実行終了できるのかどうかを知ることができる。
【０１４７】
図９は、本発明の実施の形態に係るコントローラサポート装置８から出力される推定実行時間の表示画面の別の一例を示す図である。
【０１４８】
図９に示す表示画面は、正味実行時間の表示部において、ＩＯ処理の実行時間をタスクＡに含めて表示している点において、図８と相違する。
【０１４９】
すなわち、図９に示す表示画面においては、制御プログラム（この場合は制御プログラムＡ）の実行サイクルの周期と同じ周期で実行されるＩＯ処理の実行時間と、その制御プログラムの実行時間とが加算して表示されている。このように、制御プログラムの推定実行時間の表示は、その制御プログラムの実行と組み合わせて実行される他の処理の実行時間を加算して表示する場合を含む。言い換えれば、必ずしも、制御プログラムの推定実行時間自体を表示する必要はなく、制御サイクル周期や実行サイクル周期の決定、制御プログラムの分割の仕方の決定などを行うときに、ユーザにとって役立つように、制御プログラムの推定実行時間を含む時間として表示されればよい。
【０１５０】
正味実行時間のタスクＡのグラフは、ＩＯ処理の実行時間と制御プログラムＡの実行時間とが区別できる形態で表示されている。このグラフに添えて表示されているＭＡＸ値は、ＩＯ処理時間を含めた実行時間であり、制御プログラムの推定実行時間は、数値では表示されていない。このように、制御プログラムの推定実行時間をグラフのみによって表示してもよい。
【０１５１】
さらに、正味実行時間および総計実行時間のいずれか一方だけを表示してもよい。総計実行時間の表示も、制御プログラムの推定実行時間の表示の一形態である。
【０１５２】
＜Ｉ．較正データの算出処理＞
次に、第１テスト実行時間と第２テスト実行時間との間の関係を表す較正データの算出処理について説明する。
【０１５３】
図１０は、第１テスト実行時間と第２テスト実行時間との間の関係の一例を示す図である。図１０において、Ｘ軸（横軸）は第１テスト時間（シミュレータにおける第１テストプログラム３９０の実行時間の測定値）を示し、Ｙ軸（縦軸）は第２テスト実行時間（コントローラにおける第２テストプログラム３９２の実行時間の測定値）を示す。
【０１５４】
上述したように、第１テストプログラム３９０および第２テストプログラム３９２は、同一のテストソースプログラム３７０から生成されたオブジェクトプログラムである。図１０のグラフ中に示される測定点Ｐ１〜Ｐ５は、実行される命令の数が異なる５種類のテストソースプログラム３７０からそれぞれ生成された第１および第２テストプログラムの実行時間を示している。
【０１５５】
なお、測定点Ｐ１〜Ｐ５は、それぞれプログラムを１回実行したときの実行時間の測定値でもよいが、実行時間は入力変数値等の実行条件によって実行ごとに変動し得ることを考慮して、同じプログラムを複数回実行したときの実行時間の平均値を採用することが好ましい。
【０１５６】
コントローラサポート装置８として汎用コンピュータを利用する場合は、通常、非リアルタイムオペレーティングシステム環境で第１テストプログラム３９０を実行することになるので、第１テストプログラムの実行がオペレーティングシステムにより一時中断されることが起こり得る。そのような場合の実行時間の測定値は、大きな値の異常値となるので、実行時間の平均値を求める場合には、そのような異常値を排除して計算する必要がある。同様に、推定実行時間の算出の基礎とする第１制御実行時間にも異常値は発生し得るので、そのような異常値を排除して推定実行時間を算出しなければならない。
【０１５７】
直線Ｌは、最小二乗法を用いて測定点Ｐ１〜Ｐ５との誤差が最小になるようにして求めた直線である。この例では、直線Ｌは、式Ｙ＝ａＸによって表される。この比例係数「ａ」が較正データとなる。
【０１５８】
シミュレータにおいて測定された制御プログラムの実行時間である第１制御実行時間に、この較正データ「ａ」を乗じることにより、推定実行時間を算出することができる。
【０１５９】
直線Ｌは、式Ｙ＝ａＸ＋ｂによって表すこともでき、その場合には、「ａ」および「ｂ」の値が較正データとなる。
【０１６０】
第１テスト実行時間と第２テスト実行時間とはほぼ比例関係となるため、その間の関係を直線で表現することができるが、より正確に関係を表現するために２次曲線や３次曲線といった多次関数を用いた方がよい場合もある。その場合には、多次関数を規定する各係数が較正データとなる。
【０１６１】
第１テスト実行時間と第２テスト実行時間との間の関係が直線で表せない場合があることの一つの原因としては、コントローラサポート装置８のＣＰＵ８１やコントローラのマイクロプロセッサ（ＰＬＣ１のマイクロプロセッサ１００）のキャッシュ機構の動作の影響が考えられる。このようなキャッシュ機構の動作により、短い実行時間の測定値が、ある程度長い実行時間の測定値によって求めた直線上に乗らない場合がある、ということが考えられる。
【０１６２】
較正データは、複数の第１テスト時間と、各第１テスト時間に対応する第２テスト時間とを表す表形式のデータとしてもよい。そのような較正データを用いる場合には、第１制御実行時間をはさむ２つの第１テスト時間、または、第１制御実行時間に値が近いいくつかの第１テスト時間、を選んで、較正データ中に存在するデータからの直線補完または曲線補完によって、第１制御実行時間に対応する推定実行時間を求めることができる。
【０１６３】
＜Ｊ．サーバ−クライアント形態＞
上述の説明においては、制御プログラムの実行時間を推定する処理をスタンドアローンの形態で実現する場合の例を示したが、いわゆるサーバ−クライアントの形態で実現してもよい。
【０１６４】
図１１は、本発明の実施の形態に係るサーバコンピュータで実現されたコントローラサポート装置に関連する全体処理を示す模式図である。図１１には、サーバコンピュータでコントローラサポート装置を実現した場合の、制御プログラムの実行時間推定に関連する一連の処理、ならびに、各処理の間のプログラムおよびデータの流れを示す。
【０１６５】
図１１を参照して、コントローラサポート装置として機能するサーバコンピュータは、シミュレータ用コンパイラ３２２Ａ、コントローラ用コンパイラ３２２Ｂ、シミュレータ３２４Ａ、推定実行時間算出部３２６Ａ、および、出力部３２７Ａとして機能するプログラム群を有している。
【０１６６】
サーバコンピュータは、たとえば、ユーザの事業所内に設置されてＬＡＮによってクライアントコンピュータと接続するようにしてもよいし、コントローラ供給者の事業所に設置されインターネットによってユーザの事業所にあるクライアントコンピュータと接続するようにしてもよい。
【０１６７】
図１１において記憶部に格納される較正データについても、図７に示したのと同様の処理を経て算出される。別のコンピュータを用いてこのような較正データを算出する処理を行ってもよいし、サーバコンピュータ自体においてこのような較正データを算出する処理の全部または一部を行ってもよい。但し、第１テストプログラムを実行するシミュレータを別のコンピュータに設ける場合には、サーバコンピュータにおけるシミュレータと比較して、同じプログラムを同じ実行時間で実行できるシミュレータであることが必要である。
【０１６８】
サーバコンピュータにおいて較正データを求めるまでの一連の処理を行った場合であっても、サーバコンピュータがクライアントコンピュータに対してサービスを提供する段階においては、較正データを使用できれば足りる。そのため、較正データを求めるために使用したプログラムおよびデータは、サーバコンピュータから削除されていても構わない。
【０１６９】
制御ソースプログラム３３０は、クライアントコンピュータにおいて作成され、サーバコンピュータに送られる。
【０１７０】
サーバコンピュータは、コントローラ用コンパイラ３２２Ｂにより、クライアントコンピュータからの指示に応じて、制御ソースプログラム３３０から第２制御プログラム３４２を生成し、クライアントコンピュータに送信する。サーバコンピュータは、コントローラ用コンパイラ３２２Ｂを有さないようにして、第２制御プログラム３４２の生成サービスを行わないようにしてもよい。
【０１７１】
シミュレータ用コンパイラ３２２Ａは、制御ソースプログラム３３０から第１制御プログラム（シミュレータ用オブジェクトプログラム）３４０を生成する。
【０１７２】
シミュレータ３２４Ａは、第１制御プログラム３４０を実行して、その実行時間である第１制御実行時間を測定する。
【０１７３】
推定実行時間算出部３２６Ａは、較正データを用いて、第１制御実行時間から推定実行時間を算出する。
【０１７４】
出力部３２７Ａは、たとえば、図８または図９に示す形態で推定実行時間を表示するための表示用データを作成し、クライアントコンピュータに送信する。表示用データは、たとえば、ウエブブラウザを用いて表示できるＨＴＭＬ形式のデータである。出力部３２７Ａは、推定実行時間を表す数値データだけをクライアントコンピュータに送信し、その表示形態はクライアントコンピュータにまかせるようにしてもよい。
【０１７５】
サーバコンピュータは、シミュレータ用コンパイラ３２２Ａを有さないようにして、クライアントコンピュータにおいて生成された第１制御プログラム３４０を受信するようにしてもよい。
【０１７６】
サーバコンピュータにシミュレータおよび較正データを有して、複数のクライアントコンピュータのために推定実行時間算出処理を行うようにすると、新しい機種のコントローラに適合する新しいシミュレータおよび較正データを追加する作業が容易になる。
【０１７７】
図１１に示すコントローラサポート装置は、図７に示すコントローラサポート装置Ｃの構成を含み、その上で、少なくとも次の構成を追加した装置である。すなわち、記憶部は、さらに、第１制御プログラム３４０の格納に用いられる。コントローラサポートプログラム３２０は、演算部に、コントローラサポート装置をシミュレータ３２４Ａとして機能させるための処理と、シミュレータ３２４Ａにおいて第１制御プログラム３４０を実行することにより第１制御実行時間を測定する処理とをさらに実行させる。
【０１７８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１７９】
１  ＰＬＣ、２  フィールドネットワーク、３  サーボモータドライバ、４  サーボモータ、５  リモートＩＯターミナル、６  検出スイッチ、７  リレー、８  コントローラサポート装置、９  ＣＤ−ＲＯＭ、１０  接続ケーブル、１１  ＰＬＣシステムバス、１２  電源ユニット、１３  ＣＰＵユニット、１４，５３  ＩＯユニット、１５  特殊ユニット、５１  リモートＩＯターミナルバス、５２  通信カプラ、８１  ＣＰＵ、８２  ＲＯＭ、８３  ＲＡＭ、８４  ハードディスク、８５  キーボード、８６  マウス、８７  モニタ、８８  ＣＤ−ＲＯＭドライブ、１００  マイクロプロセッサ、１０２  チップセット、１０４  メインメモリ、１０６  不揮発性メモリ、１０８  システムタイマ、１１０  ＵＳＢコネクタ、１２０  ＰＬＣシステムバスコントローラ、１２２  ＤＭＡ制御回路、１２４  ＰＬＣシステムバス制御回路、１２６，１４６  バッファメモリ、１３０  コネクタ、１４０  フィールドネットワークコントローラ、１４２  ＤＭＡ制御回路、１４４  フィールドネットワーク制御回路、２００  リアルタイムＯＳ、２１０  システムプログラム、２１２  スケジューラプログラム、２１４  出力処理プログラム、２１６  入力処理プログラム、２１８  ＩＯ処理プログラム、２２０  その他のシステムプログラム、２３０  ユーザプログラム、２３０  制御プログラム、２３２  シーケンス命令演算プログラム、２３４  モーション演算プログラム、２３６  ユーザプログラム、３２０  コントローラサポートプログラム、３２１  エディタプログラム、３２２  コンパイラプログラム、３２２Ａ，３８０  シミュレータ用コンパイラ、３２２Ｂ，３８２  コントローラ用コンパイラ、３２３  デバッガプログラム、３２４  シミュレータプログラム、３２４Ａ  シミュレータ、３２５  較正データ算出プログラム、３２５Ａ  較正データ算出部、３２６  推定実行時間算出プログラム、３２６Ａ  推定実行時間算出部、３２７  出力プログラム、３２７Ａ  出力部、３２８  通信プログラム、３３０  制御ソースプログラム、３４０  第１制御プログラム、３４２  第２制御プログラム、３７０  テストソースプログラム、３９０  第１テストプログラム、３９２  第２テストプログラム、ＳＹＳ  システム。
【要約】
【課題】コントローラサポート装置において、コントローラにおける制御プログラムの実行時間をより高い精度で推定する。
【解決手段】コントローラサポートプログラムは、ユーザにおける制御目的に応じて作成された制御プログラムのソースプログラムである制御ソースプログラムから生成された、シミュレータにおいて動作するオブジェクトプログラムである第１制御プログラムの、シミュレータにおいて測定された実行時間である第１制御実行時間を取得する処理と、第１制御実行時間を較正データを用いて変換することにより、制御ソースプログラムから生成された、コントローラにおいて動作するオブジェクトプログラムである第２制御プログラムの、コントローラにおける実行時間の推定値である推定実行時間を算出する処理と、推定実行時間を表すデータを出力するための処理とを、演算部に実行させる。
【選択図】図７【図１】
0004748286.tif 000002
【図２】
0004748286.tif 000003
【図３】
0004748286.tif 000004
【図４】
0004748286.tif 000005
【図５】
0004748286.tif 000006
【図６】
0004748286.tif 000007
【図７】
0004748286.tif 000008
【図８】
0004748286.tif 000009
【図９】
0004748286.tif 000010
【図１０】
0004748286.tif 000011
【図１１】
0004748286.tif 000012