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