(57)【要約】【課題】制御装置で優先度の異なる複数のプログラムを実行させるにあたって、相対的に優先度の低いプログラムの実行状況も適切に評価できる仕組みを提供する。【解決手段】制御装置は、プロセッサと、定周期で繰り返し実行される第１のプログラムと、第１のプログラムより実行の優先度が低い第２のプログラムとを含む。スケジューラプログラムは、第１のプログラムの実行を妨げないように、プロセッサの空き時間に、第２のプログラムをプロセッサに実行させるための命令と、第２のプログラムの実行状況を監視するための命令とを含む。制御システムは、スケジューラプログラムによって監視された実行状況から得られる状況情報を表示させる。【選択図】図２
2020061055.tif 000002
【特許請求の範囲】
【請求項１】
制御システムであって、
制御対象を制御するための制御装置を備え、
前記制御装置は、
プロセッサと、
前記プロセッサによって定周期で繰り返し実行される第１のプログラムと、
前記第１のプログラムより実行の優先度が低い第２のプログラムと、
前記第２のプログラムより実行の優先度が低い第３のプログラムと、
前記プロセッサに実行させるプログラムを管理するスケジューラプログラムとを含み、
前記スケジューラプログラムは、前記第１のプログラムの実行を妨げないように、前記プロセッサの空き時間に、前記第２のプログラムおよび前記第３のプログラムを前記プロセッサに実行させるための命令と、
前記第２のプログラムの実行状況を監視するための命令とを含み、
前記制御システムは、さらに、
前記スケジューラプログラムによって監視された前記実行状況から得られる状況情報を表示させるための表示手段を備える、制御システム。
【請求項２】
前記スケジューラプログラムは、予め設定された周期ごとに、前記第２のプログラムを実行させるための時間として、予め設定された割合の時間を確保するための命令を含み、
前記状況情報は、前記予め設定された周期において前記プロセッサが前記第２のプログラムを実行した時間を示す実行時間情報を含む、請求項１に記載の制御システム。
【請求項３】
前記状況情報は、前記予め設定された周期において前記プロセッサが前記第２のプログラムを実行した回数を示す回数情報をさらに含む、請求項２に記載の制御システム。
【請求項４】
前記第２のプログラムは複数のプログラムを含み、
前記実行周期は、前記複数のプログラムの各々に対して予め設定され、
前記状況情報は、前記複数のプログラムの各々に対応する前記実行時間情報を含む、請求項２に記載の制御システム。
【請求項５】
前記状況情報は、前記制御装置の予め定められた動作時間に対する、前記第１のプログラムおよび前記第２のプログラムの少なくとも一方が実行されていない時間の割合を示す余裕度情報をさらに含む、請求項２から４のいずれか１項に記載の制御システム。
【請求項６】
前記第２のプログラムは複数のプログラムを含み、
前記スケジューラプログラムは、
前記複数のプログラムの各々について、予め設定された周期ごとに、当該プログラムを実行させるための時間として、予め設定された割合の時間を確保するための命令と、
予め設定された位相差だけ、前記複数のプログラムに対応する前記予め設定された周期の位相をずらす命令とを含み、
前記状況情報は、前記複数のプログラムの各々が実行されたタイミングを示すタイミング情報を含む、請求項１に記載の制御システム。
【請求項７】
表示装置に接続された、制御対象を制御するための制御装置であって、
プロセッサと、
前記プロセッサによって定周期で繰り返し実行される第１のプログラムと、
前記第１のプログラムより実行の優先度が低い第２のプログラムと、
前記第２のプログラムより実行の優先度が低い第３のプログラムと、
前記プロセッサに実行させるプログラムを管理するスケジューラプログラムとを備え、
前記スケジューラプログラムは、前記第１のプログラムの実行を妨げないように、前記プロセッサの空き時間に、前記第２のプログラムおよび前記第３のプログラムを前記プロセッサに実行させるための命令と、
前記第２のプログラムの実行状況を監視するための命令とを含み、
前記スケジューラプログラムによって監視された前記実行状況から得られる状況情報が前記表示装置に表示される、制御装置。
【請求項８】
制御対象を制御するための制御装置を備える制御システムの制御方法であって、
前記制御装置は、
プロセッサと、
前記プロセッサによって定周期で繰り返し実行される第１のプログラムと、
前記第１のプログラムより実行の優先度が低い第２のプログラムと、
前記第２のプログラムより実行の優先度が低い第３のプログラムとを含み、
前記制御方法は、
前記第１のプログラムの実行を妨げないように、前記プロセッサの空き時間に応じて、前記第２のプログラムおよび前記第３のプログラムを前記プロセッサに実行させるステップと、
前記第２のプログラムの実行状況を監視するステップと、
監視された前記実行状況から得られる状況情報を表示させるステップとを備える、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、優先度の異なる複数のプログラムを実行する制御システム、制御装置および制御方法に関する。
【背景技術】
【０００２】
様々な生産現場において、ＰＬＣ（プログラマブルコントローラ）などの制御装置を用いたＦＡ（Factory Automation）技術が広く普及している。近年の情報通信技術（ＩＣＴ：Information and Communication Technology）の発展に伴って、このようなＦＡ分野における制御装置においても、従来のシーケンスプログラムだけではなく、各種のアプリケーションプログラムが実行されるようになっている。
【０００３】
例えば、特開２０１２−１９４６６２号公報（特許文献１）は、第１のユーザプログラム実行サイクルで、ユーザプログラムおよびモーション演算プロセッサを繰返し実行する構成を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１９４６６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特開２０１２−１９４６６２号公報（特許文献１）では、ユーザプログラムは、モーション制御サイクルで繰返し実行される高優先ユーザプログラムと、モーション制御サイクルの周期の整数倍で繰返し実行される低優先ユーザプログラムとに分類される。低優先ユーザプログラムとしては、複数のプログラムが含まれることがあり、これらのプログラムが予め定められた順序で実行されることになる。
【０００６】
しかしながら、低優先ユーザプログラムよりもさらに優先度の低いシステムサービスとして実行されるプログラムの高度化および複雑化に伴って、ロボット言語やＧ言語などのインタプリタ処理やデータベースにデータを送信する処理などを実行するための時間を十分に確保できないという新たな課題が生じるようになってきた。
【０００７】
本技術は、制御装置で優先度の異なる複数のプログラムを実行させるにあたって、相対的に優先度の低いプログラムの実行状況も適切に評価できる仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本開示の一例の制御システムは、制御対象を制御するための制御装置を備える。制御装置は、プロセッサと、プロセッサによって定周期で繰り返し実行される第１のプログラムと、第１のプログラムより実行の優先度が低い第２のプログラムと、第２のプログラムより実行の優先度が低い第３のプログラムと、プロセッサに実行させるプログラムを管理するスケジューラプログラムとを含む。スケジューラプログラムは、第１のプログラムの実行を妨げないように、プロセッサの空き時間に、第２のプログラムおよび第３のプログラムをプロセッサに実行させるための命令と、第２のプログラムの実行状況を監視するための命令とを含む。制御システムは、さらに、スケジューラプログラムによって監視された実行状況から得られる状況情報を表示させるための表示手段を備える。
【０００９】
この開示によれば、ユーザは、表示された状況情報を確認することにより、第１のプログラムよりも優先度の低い第２のプログラムの実行状況を適切に評価できる。すなわち、制御装置で優先度の異なる複数のプログラムを実行させるにあたって、相対的に優先度の低い第２のプログラムの実行状況も適切に評価できる。
【００１０】
上述の開示において、スケジューラプログラムは、予め設定された周期ごとに、第２のプログラムを実行させるための時間として、予め設定された割合の時間を確保するための命令を含む。状況情報は、予め設定された周期においてプロセッサが第２のプログラムを実行した時間を示す実行時間情報を含む。
【００１１】
この開示によれば、ユーザは、実行時間情報を確認することにより、第２のプログラムに対して予め設定された周期および予め設定された割合を適宜見直すことができる。
【００１２】
上述の開示において、状況情報は、予め設定された周期においてプロセッサが第２のプログラムを実行した回数を示す回数情報をさらに含む。
【００１３】
この開示によれば、ユーザは、回数情報を確認することにより、第２のプログラムに対して予め設定された周期を適宜見直すことができる。
【００１４】
上述の開示において、第２のプログラムは複数のプログラムを含む。実行周期は、複数のプログラムの各々に対して予め設定される。状況情報は、複数のプログラムの各々に対応する実行時間情報を含む。
【００１５】
この開示によれば、ユーザは、第２のプログラムに含まれる複数のプログラムの各々について、実行時間情報を確認することにより、当該プログラムに対して予め設定された周期および予め設定された割合を適宜見直すことができる。
【００１６】
上述の開示において、状況情報は、制御装置の予め定められた動作時間に対する、第１のプログラムおよび第２のプログラムの少なくとも一方が実行されていない時間の割合を示す余裕度情報をさらに含む。
【００１７】
この開示によれば、ユーザは、余裕度情報を確認することにより、プロセッサの余裕度を把握できる。ユーザは、当該余裕度に基づいて、第３のプログラムを適宜見直したり、第２のプログラムについて設定した周期および割合を適宜見直したりできる。
【００１８】
上述の開示において、第２のプログラムは複数のプログラムを含む。スケジューラプログラムは、複数のプログラムの各々について、予め設定された周期ごとに、当該プログラムを実行させるための時間として、予め設定された割合の時間を確保するための命令と、予め設定された位相差だけ、複数のプログラムに対応する予め設定された周期の位相をずらす命令とを含む。状況情報は、複数のプログラムの各々が実行されたタイミングを示すタイミング情報を含む。
【００１９】
この開示によれば、ユーザは、タイミング情報を確認することにより、第２のプログラムに含まれる複数のプログラムの各々について設定した周期および位相差を適宜見直すことができる。
【００２０】
本開示の一例によれば、表示装置に接続された、制御対象を制御するための制御装置は、プロセッサと、プロセッサによって定周期で繰り返し実行される第１のプログラムと、第１のプログラムより実行の優先度が低い第２のプログラムと、第２のプログラムより実行の優先度が低い第３のプログラムと、プロセッサに実行させるプログラムを管理するスケジューラプログラムとを備える。スケジューラプログラムは、第１のプログラムの実行を妨げないように、プロセッサの空き時間に、第２のプログラムおよび第３のプログラムをプロセッサに実行させるための命令と、第２のプログラムの実行状況を監視するための命令とを含む。スケジューラプログラムによって監視された実行状況から得られる状況情報が表示装置に表示される。
【００２１】
本開示の一例によれば、制御対象を制御するための制御装置は、プロセッサと、プロセッサによって定周期で繰り返し実行される第１のプログラムと、第１のプログラムより実行の優先度が低い第２のプログラムと、第２のプログラムより実行の優先度が低い第３のプログラムとを含む。制御装置を備える制御システムの制御方法は、第１のプログラムの実行を妨げないように、プロセッサの空き時間に応じて、第２のプログラムおよび第３のプログラムをプロセッサに実行させるステップと、第２のプログラムの実行状況を監視するステップと、監視された実行状況から得られる状況情報を表示させるステップとを備える。
【００２２】
これらの開示によっても、制御装置で優先度の異なる複数のプログラムを実行させるにあたって、第１のプログラムよりも優先度の低い第２のプログラムの実行状況も適切に評価できる。
【発明の効果】
【００２３】
本開示によれば、制御装置で優先度の異なる複数のプログラムを実行させるにあたって、相対的に優先度の低いプログラムの実行状況も適切に評価できる。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態に係る制御装置１におけるプログラムの実行スケジュールの一例を示す模式図である。
【図２】状況情報を含むモニタ画面の一例を示す図である。
【図３】本実施の形態に係る制御システムＳＹＳの構成例を示す模式図である。
【図４】本実施の形態に係る制御装置１を構成する演算ユニット１３のハードウェア構成の一例を示す模式図である。
【図５】本実施の形態に係る制御システムＳＹＳを構成するサポート装置８のハードウェア構成例を示すブロック図である。
【図６】本実施の形態に係る制御装置１を構成する演算ユニット１３のソフトウェア構成の一例を示す模式図である。
【図７】本実施の形態に係る制御システムの概略処理のフローチャートである。
【図８】本実施の形態に係るシステムサービスの実行周期と実行時間割合とを設定するためのユーザインターフェイスを示す図である。
【図９】本実施の形態に係る演算ユニット１３における通知機能３６および監視機能２１２２を説明するための図である。
【図１０】タスクの実行状況の一例を示す図である。
【図１１】状況情報を含むモニタ画面の別の例を示す図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照しつつ、本発明に従う実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
【００２６】
§１  適用例
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係る制御装置１におけるプログラムの実行スケジュールの一例を示す模式図である。図１を参照して、制御装置１は、任意の制御対象を制御するためのコンピュータであり、１または複数のプロセッサを有している。
【００２７】
図１に示す例の制御装置１では、定周期タスク２０と、定周期タスク２０以外のシステムサービスタスク３０とがシーケンシャルに実行される。
【００２８】
本明細書において、「タスク」は、コンピューティング資源を割当てる制御の対象となる基本単位であり、各タスクに、実行させるべき１または複数のプログラムが設定される。すなわち、いずれかのタスクに対してコンピューティング資源が割当てられ、当該タスクが実行できる状態になると、当該タスクに設定されている１または複数のプログラムの実行が開始または再開されることになる。
【００２９】
定周期タスク２０は、定周期で繰り返し実行すべきタスクであり、実行周期が保証される。定周期タスク２０には、制御装置１のプロセッサで繰返し実行される最も実行の優先度（以下、単に「優先度」とも称す。）の高いプログラムが設定される。定周期タスク２０は、例えば、入出力データの更新処理（以下、「ＩＯリフレッシュ」とも称す。）および最優先で実行されるべきシーケンス演算処理などを含む。定周期タスク２０が定周期実行されるように、定周期タスク２０の処理完了に要する時間は、実行周期の長さ以下になるように保証される。
【００３０】
図１に示す例では、定周期タスク２０は、制御周期ごとに繰り返し実行されるプライマリ定周期タスク２２と、それ以外の定周期タスク２４とを含む。定周期タスク２４は、一般に制御周期の２以上の整数倍ごとに繰り返し実行される。
【００３１】
一方、システムサービスタスク３０は、定周期タスク２０より実行の優先度が低いタスクであり、要求があった場合に実行される。本実施の形態においては、システムサービスタスク３０は、定周期タスク２０より実行の優先度が低い高優先度システムサービス３２と、高優先度システムサービス３２よりさらに実行の優先度が低い低優先度システムサービス３４とを含む。すなわち、高優先度システムサービス３２には、定周期タスク２０に設定されるプログラムより優先度が低いプログラムが設定され、低優先度システムサービス３４には、高優先度システムサービス３２に設定されるプログラムより優先度が低いプログラムが設定される。
【００３２】
制御装置１は、スケジューラプログラムに従って、これらのタスクに設定される各プログラムの実行タイミングを管理する。スケジューラプログラムによるプログラムの実行管理は、適時のタイミングおよび期間で、コンピューティング資源を各プログラムに割当てることで実現できる。
【００３３】
スケジューラプログラムは、定周期タスク２０に設定されるプログラムを予め設定された実行周期で繰返し実行させる。
【００３４】
スケジューラプログラムは、定周期タスク２０に設定されたプログラムの実行を妨げないように、定周期タスク２０を実行していないプロセッサの空き時間に、システムサービスタスク３０に設定されるプログラム（高優先度システムサービス３２および低優先度システムサービス３４にそれぞれ設定されているプログラム）を実行させる。スケジューラプログラムは、予め設定された実行周期（「実行時間間隔」ともいう）ごとに、システムサービスタスク３０を実行させるための時間として、予め設定された実行時間割合の時間を確保しておく。これにより、システムサービスタスク３０の実行要求があった場合に、スケジューラプログラムは、確保した時間にシステムサービスタスク３０を実行させることができる。実行周期および実行時間割合は、システムサービス毎に設定される。
【００３５】
システムサービスタスク３０は、定周期タスク２０を実行するために使用されるコンピューティング資源を用いて実行される。そのため、定周期タスク２０に設定されたプログラムを実行している間、システムサービスタスク３０に設定されたプログラムを実行できない。その結果、システムサービスタスク３０の実行周期は必ずしも保証されない。また、予め設定された実行周期および実行時間割合に基づいて確保された時間よりも空き時間が長い場合には、当該空き時間に他のシステムサービスタスクに対してコンピュータ資源が割り当てられる。
【００３６】
本実施の形態に係る制御装置１は、システムサービスタスク３０の高優先度システムサービス３２に設定されているプログラムの実行状況を監視する。当該実行状況から得られる状況情報は、制御装置１に接続されたサポート装置などに表示される。これにより、ユーザは、高優先度システムサービス３２に設定されたプログラムの実行状況を確認することにより、当該高優先度システムサービス３２に対して設定した実行周期および実行時間割合を適宜見直すことができる。
【００３７】
図２は、状況情報を含むモニタ画面の一例を示す図である。図２に示すモニタ画面例では、高優先度システムサービス３２に設定されたプログラムについて、設定された実行周期（図中では「設定周期」と記載）および実行時間割合（図中では「設定割合」と記載）とともに、実行周期における実行時間の平均値および最大値とが表示されている。
【００３８】
§２  構成例
＜２−１．制御システムの構成＞
まず、本実施の形態に係る制御システムＳＹＳの構成について説明する。
【００３９】
図３は、本実施の形態に係る制御システムＳＹＳの構成例を示す模式図である。図３を参照して、制御システムＳＹＳは、制御装置１と、制御装置１とフィールドネットワーク２を介して接続されるサーボモータドライバ３およびリモートＩＯターミナル５と、フィールド機器である検出スイッチ６およびリレー７とを含む。制御装置１には、接続ケーブル１０などを介してサポート装置８が接続される。
【００４０】
制御装置１は、ＰＬＣなどの、一種のコンピュータとして具現化されてもよい。制御装置１は、主たる演算処理を実行する演算ユニット１３と、１つ以上のＩＯユニット１４と、特殊ユニット１５とを含む。これらのユニットは、ＰＬＣシステムバス１１を介して、データを互いに遣り取りできるように構成される。これらのユニットには、電源ユニット１２によって適切な電圧の電源が供給される。
【００４１】
ＩＯユニット１４は、一般的な入出力処理に関するユニットであり、オン／オフといった２値化されたデータの入出力を司る。具体的には、ＩＯユニット１４は、検出スイッチ６などのセンサが何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット１４は、リレー７やアクチュエータといった出力先に対して、活性化するための指令（オン）および不活性化するための指令（オフ）のいずれかを出力することもある。
【００４２】
特殊ユニット１５は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、ＩＯユニット１４ではサポートしない機能を有する。
【００４３】
フィールドネットワーク２は、演算ユニット１３と遣り取りされる各種データを伝送する。フィールドネットワーク２としては、典型的には、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）としては、例えば、ＥｔｈｅｒＣＡＴ（登録商標）、Ｐｒｏｆｉｎｅｔ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。例えば、モーション制御を行わない場合であれば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ／ＩＰ（登録商標）などを用いてもよい。
【００４４】
図３には、ＰＬＣシステムバス１１およびフィールドネットワーク２の両方を有する制御装置１を例示するが、一方のみを搭載するシステム構成を採用することもできる。
【００４５】
サーボモータドライバ３は、フィールドネットワーク２を介して演算ユニット１３と接続されるとともに、演算ユニット１３からの指令値に従ってサーボモータ４を駆動する。具体的には、サーボモータドライバ３は、制御装置１から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ３は、サーボモータ４の軸に接続されている位置センサ（ロータリーエンコーダ）やトルクセンサといった検出器から、位置、速度、トルクといったサーボモータ４の動作に係る実測値を取得してサーボモータ４を駆動するための電流を調整する。なお、サーボモータドライバ３は、サーボモータアンプと称されることもある。
【００４６】
図３に示す制御システムＳＹＳのフィールドネットワーク２には、さらに、リモートＩＯターミナル５が接続されている。リモートＩＯターミナル５は、基本的には、ＩＯユニット１４と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートＩＯターミナル５は、フィールドネットワーク２でのデータ伝送に係る処理を行うための通信カプラ５２と、１つ以上のＩＯユニット５３とを含む。これらのユニットは、リモートＩＯターミナルバス５１を介して、データを互いに遣り取りできるように構成される。
【００４７】
サポート装置８は、制御装置１が対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置８は、制御装置１で実行されるタスクに関する設定環境、制御装置１におけるタスクの実行状況のモニタ画面、などを提供する。
【００４８】
＜２−２．演算ユニットのハードウェア構成＞
次に、図３に示す制御装置１を構成する演算ユニット１３のハードウェア構成について説明する。図４は、本実施の形態に係る制御装置１を構成する演算ユニット１３のハードウェア構成の一例を示す模式図である。
【００４９】
図４を参照して、演算ユニット１３は、プロセッサ１００と、チップセット１０２と、メインメモリ１０４と、不揮発性メモリ１０６と、システムタイマ１０８と、ＰＬＣシステムバスコントローラ１２０と、フィールドネットワークコントローラ１４０と、ＵＳＢコネクタ１１０とを含む。チップセット１０２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００５０】
プロセッサ１００およびチップセット１０２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ１００は、チップセット１０２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ１００に必要な命令コードを生成する。さらに、チップセット１０２は、プロセッサ１００での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００５１】
図４には、説明の便宜上、１つのプロセッサ１００が描かれているが、複数のプロセッサ１００を配置してもよいし、１つのプロセッサ１００に複数のコアが実装されていてもよい。プロセッサ１００の性能や構成は、要求されるコンピューティング資源に応じて決定されてもよい。
【００５２】
演算ユニット１３は、記憶手段として、メインメモリ１０４および不揮発性メモリ１０６を有する。
【００５３】
メインメモリ１０４は、揮発性の記憶領域（ＲＡＭ）であり、演算ユニット１３への電源投入後にプロセッサ１００で実行されるべき各種プログラムを保持する。また、メインメモリ１０４は、プロセッサ１００による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ１０４としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といったデバイスが用いられる。
【００５４】
不揮発性メモリ１０６は、リアルタイムＯＳ（Operating System）、制御装置１のシステムプログラム、ユーザプログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、プロセッサ１００がアクセスできるようにメインメモリ１０４にコピーされる。このような不揮発性メモリ１０６としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体などを用いてもよい。
【００５５】
システムタイマ１０８は、一定周期毎に割り込み信号を発生してプロセッサ１００に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、ＯＳ（Operating System）やＢＩＯＳ（Basic Input Output System）などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ１０８が発生する割り込み信号を利用して、制御周期毎の制御動作が実現される。
【００５６】
演算ユニット１３は、通信回路として、ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０を有する。これらの通信回路は、任意の指令値といった出力データを送信するとともに、任意のセンサから得られた検出値といった入力データを受信する。
【００５７】
ＰＬＣシステムバスコントローラ１２０は、ＰＬＣシステムバス１１を介したデータの遣り取りを制御する。より具体的には、ＰＬＣシステムバスコントローラ１２０は、ＤＭＡ（Dynamic Memory Access）制御回路１２２と、ＰＬＣシステムバス制御回路１２４と、バッファメモリ１２６とを含む。ＰＬＣシステムバスコントローラ１２０は、ＰＬＣシステムバスコネクタ１３０を介してＰＬＣシステムバス１１と内部的に接続される。
【００５８】
バッファメモリ１２６は、ＰＬＣシステムバス１１を介して他のユニットへ出力されるデータ（出力データ）用の送信バッファ、および、ＰＬＣシステムバス１１を介して他のユニットから入力されるデータ（入力データ）用の受信バッファとして機能する。ＤＭＡ制御回路１２２は、メインメモリ１０４からバッファメモリ１２６への出力データの転送、および、バッファメモリ１２６からメインメモリ１０４への入力データの転送を行う。ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１に接続される他のユニットとの間で、バッファメモリ１２６の出力データを送信する処理および入力データを受信してバッファメモリ１２６に格納する処理を行う。
【００５９】
フィールドネットワークコントローラ１４０は、フィールドネットワーク２を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１４０は、用いられるフィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。より具体的には、フィールドネットワークコントローラ１４０は、ＤＭＡ制御回路１４２と、フィールドネットワーク制御回路１４４と、バッファメモリ１４６とを含む。
【００６０】
バッファメモリ１４６は、フィールドネットワーク２を介して他の装置などへ出力されるデータ（出力データ）用の送信バッファ、および、フィールドネットワーク２を介して他の装置などから入力されるデータ（入力データ）用の受信バッファとして機能する。ＤＭＡ制御回路１４２は、メインメモリ１０４からバッファメモリ１４６への出力データの転送、および、バッファメモリ１４６からメインメモリ１０４への入力データの転送を行う。フィールドネットワーク制御回路１４４は、フィールドネットワーク２に接続される他の装置との間で、バッファメモリ１４６の出力データを送信する処理および入力データを受信してバッファメモリ１４６に格納する処理を行う。
【００６１】
ＵＳＢコネクタ１１０は、サポート装置８と演算ユニット１３とを接続するためのインターフェイスである。典型的には、サポート装置８から転送される、演算ユニット１３のプロセッサ１００で実行可能なプログラムなどは、ＵＳＢコネクタ１１０を介して制御装置１に取込まれる。
【００６２】
＜２−３．サポート装置のハードウェア構成＞
本実施の形態に係るサポート装置８は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いてプログラムを実行することで実現される。
【００６３】
図５は、本実施の形態に係る制御システムＳＹＳを構成するサポート装置８のハードウェア構成例を示すブロック図である。図５を参照して、サポート装置８は、ＣＰＵまたはＭＰＵなどのプロセッサ８０２と、光学ドライブ８０４と、主記憶装置８０６と、二次記憶装置８０８と、ＵＳＢ（Universal Serial Bus）コントローラ８１２と、入力部８１６と、表示部８１８とを含む。これらのコンポーネントはバス８２０を介して接続される。
【００６４】
プロセッサ８０２は、二次記憶装置８０８に格納された各種プログラムを読み出して、主記憶装置８０６に展開して実行することで、後述するような各種処理を実現する。
【００６５】
二次記憶装置８０８は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Flash Solid State Drive）などで構成される。二次記憶装置８０８には、典型的には、ユーザプログラムの作成、タスクに関する設定などを行うための開発プログラム８２２と、タスクの実行状況を解析する解析ツール８２７と、監視データ８２８とが格納される。監視データ８２８は、タスクの実行状況を解析するために利用可能な情報であり、制御装置１においてタスクが実行された場合に収集される。また、二次記憶装置８０８には、ＯＳおよび他の必要なプログラムが格納されてもよい。
【００６６】
サポート装置８は、光学ドライブ８０４を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体８０５（例えば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読取られて二次記憶装置８０８などにインストールされてもよい。
【００６７】
サポート装置８で実行される各種プログラムは、コンピュータ読取可能な記録媒体８０５を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置８が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００６８】
ＵＳＢコントローラ８１２は、ＵＳＢ接続を介して制御装置１との間のデータの遣り取りを制御する。
【００６９】
入力部８１６は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。表示部８１８は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ８０２からの処理結果などを出力する。
【００７０】
図５には、プロセッサ８０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００７１】
＜２−４．演算ユニットのソフトウェア構成＞
次に、図３に示す制御装置１を構成する演算ユニット１３のソフトウェア構成について説明する。図６は、本実施の形態に係る制御装置１を構成する演算ユニット１３のソフトウェア構成の一例を示す模式図である。図６には、本実施の形態に係る各種機能を提供するためのソフトウェア群の一例を示す。これらのソフトウェア群に含まれる命令コードは、適切なタイミングで読み出され、演算ユニット１３のプロセッサ１００によって実行される。
【００７２】
図６を参照して、演算ユニット１３で実行されるソフトウェアとしては、基本的には、リアルタイムＯＳ２００と、システムプログラム２１０と、ユーザプログラム２３４とを含む。
【００７３】
リアルタイムＯＳ２００は、演算ユニット１３のコンピュータアーキテクチャに応じて設計されており、プロセッサ１００がシステムプログラム２１０およびユーザプログラム２３４を実行するための基本的な実行環境を提供する。このリアルタイムＯＳは、典型的には、制御装置のメーカあるいは専門のソフトウェア会社などによって提供される。
【００７４】
システムプログラム２１０は、制御装置１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム２１０は、スケジューラプログラム２１２と、ＩＯ処理プログラム２１４（入力処理プログラム２１６および出力処理プログラム２１８を含む）と、シーケンス命令実行部２３２と、システムサービスプログラム２２０とを含む。
【００７５】
ユーザプログラム２３４は、ユーザにおける制御目的に応じて作成される。すなわち、制御システムＳＹＳを用いて制御する制御対象に応じて、任意に作成されるプログラムである。
【００７６】
ユーザプログラム２３４は、例えばサポート装置８において生成される。ユーザプログラム２３４は、サポート装置８から接続ケーブル１０を介して演算ユニット１３へ転送され、不揮発性メモリ１０６などに格納される。
【００７７】
ユーザプログラム２３４は、シーケンス命令およびモーション命令などの命令コードからなるＩＥＣ（International Electrotechnical Commission：国際電気標準会議）プログラム２３６と、モータなどの駆動装置を制御する制御アプリケーションの手順を表現するアプリケーションプログラム２３８とを含む。
【００７８】
ＩＥＣプログラム２３６は、ＩＥＣによって規定された国際規格ＩＥＣ６１１３１−３に従って記述された１または複数の命令からなるプログラムを包含する。
【００７９】
アプリケーションプログラム２３８は、目標軌跡を定義する１または複数のコマンドを含む。アプリケーションプログラム２３８は、ロボット言語やＧ言語などのインタプリタ型の言語で書かれたプログラムであってもよい。
【００８０】
シーケンス命令実行部２３２は、ＩＥＣプログラム２３６を実行して指令値を出力する。シーケンス命令実行部２３２は、ＩＥＣプログラム２３６に含まれるシーケンス命令を解釈し、指定されたシーケンス演算（論理演算）を実行する。さらに、シーケンス命令実行部２３２は、ＩＥＣプログラム２３６に含まれるモーション命令に従って指令値を算出する。モーション命令は、１つのコマンドによって複数の制御周期に亘って指令値の算出を定義しており、シーケンス命令実行部２３２は、このようなモーション命令を解釈して、モーション指令値を制御周期毎に更新する。
【００８１】
システムサービスプログラム２２０は、図６に個別に示したプログラム以外の、制御装置１の各種機能を実現するためのプログラム群をまとめて示すものである。システムサービスプログラム２２０は、例えば、外部装置との間でファイルやデータを送受信する処理を実現するプログラム（すなわち、通信処理に係るプログラム）や、異常監視処理や各種解析処理などを実現するプログラムなどが想定される。
【００８２】
本実施の形態に係る演算ユニット１３においては、システムサービスプログラム２２０に含まれるプログラムは、少なくとも２つに優先度が区別されている。図６には、一例として、システムサービスプログラム２２０は、高優先度システムサービス３２に設定される高優先度サービスプログラム２２２と、低優先度システムサービス３４に設定される低優先度サービスプログラム２２６とを含む。高優先度サービスプログラム２２２は、低優先度サービスプログラム２２６に比較して、高い優先度が設定されている。
【００８３】
高優先度サービスプログラム２２２は、アプリケーションプログラム実行部２２８を含む。アプリケーションプログラム実行部２２８は、例えば、アプリケーションプログラム２３８をインタプリタ方式で実行して、各モータに対する指令値を出力する。
【００８４】
スケジューラプログラム２１２は、タスク毎に設置された優先度に応じて、各タスクに設定されるプログラムをプロセッサ１００に実行させる。すなわち、スケジューラプログラム２１２は、ＩＯ処理プログラム２１４、制御プログラム２３０、およびシステムサービスプログラム２２０について、各実行周期での処理開始および処理中断後の処理再開を制御する。
【００８５】
具体的には、スケジューラプログラム２１２は、制御機能２１２０と、監視機能２１２２とを含む。制御機能２１２０は、各処理に対してコンピューティング資源を割当てるための制御を司る。監視機能２１２２は、システムサービスプログラム２２０に含まれる各プログラムの実行状況を監視する。監視機能２１２２は、システムサービスプログラム２２０に含まれる高優先度サービスプログラム２２２の通知機能プログラム２２４による通知などに基づいて、各サービスの実行状況を把握する。システムサービスプログラム２２０に含まれる各プログラムの実行状況の監視については、後に詳述する。
【００８６】
ＩＯ処理プログラム２１４は、演算ユニット１３において利用可能なデータ（入力データおよび出力データ）を更新する処理を司る。ＩＯ処理プログラム２１４の入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０によって受信された入力データを、制御プログラム２３０が使用するのに適した形式に再配置する。
【００８７】
出力処理プログラム２１８は、ユーザプログラム２３４（制御プログラム２３０）の実行によって生成された出力データを、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０へ転送するのに適した形式に再配置する。ＰＬＣシステムバスコントローラ１２０またはフィールドネットワークコントローラ１４０が、プロセッサ１００からの、送信を実行するための指令を必要とする場合は、出力処理プログラム２１８がそのような指令を発行する。
【００８８】
なお、プロセッサ１００が図６に示されるプログラムを実行することで後述するような機能および処理を実現する実装形態に代えて、その一部または全部を、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field-Programmable Gate Array）などのハードワイヤードな回路を用いて実装してもよい。
【００８９】
＜２−５．制御システムにより実施される処理の概要＞
図７は、本実施の形態に係る制御システムの概略処理のフローチャートである。図７を参照して、制御システムＳＹＳにより実施される全体処理は、まず、サポート装置８においてなされる各種設定処理（ステップＳ１）を含む。当該各種設定の処理は、タスク（定周期タスク２０およびシステムサービスタスク３０）に関する設定処理を含む。さらに、全体処理は、制御装置１においてなされるタスクの実行処理（ステップＳ２）およびタスクの実行状況を監視する処理（ステップＳ３）を含む。さらに、全体処理は、サポート装置８においてなされる、タスクの実行状況から得られる状況情報の表示処理（ステップＳ４）およびタスクに関する再設定処理（ステップＳ５）を含む。
【００９０】
なお、図７では、サポート装置８が表示処理および再設定処理（ステップＳ４，Ｓ５）を実行するが、これら処理は制御装置１により実行されてもよい。
【００９１】
＜２−６．タスクに関する設定＞
ユーザは、サポート装置８によって提供されるユーザインターフェイスを用いて、各タスクに割当てるプログラムを設定または変更することができる。さらに、ユーザは、システムサービスタスクについて、実行周期と実行時間割合とを設定することができる。
【００９２】
図８は、本実施の形態に係るシステムサービスの実行周期と実行時間割合とを設定するためのユーザインターフェイスを示す図である。図８のユーザインターフェイスは、サポート装置８の表示部８１８の表示画面として提供される。図８には、高優先度システムサービス３２の実行周期と実行時間割合とを設定するための画面が示される。
【００９３】
ユーザは、高優先度システムサービス３２として複数のタスクを登録することができる。図８に示す例では、「タスクＡ」と「タスクＢ」とが高優先度システムサービス３２として登録される。高優先度システムサービス３２として複数のタスクが登録された場合、当該複数のタスクの各々について、実行周期と実行時間割合とが設定される。さらに，ユーザは、当該複数のタスク間の実行周期の位相差を設定する。実行周期の位相差とは、実行周期の開始タイミングの時間差を示す。ユーザは、当該複数のタスクの任意の１つを基準のタスクとし、当該基準のタスクの実行周期の開始タイミングと、残りのタスクの各々の実行周期の開始タイミングとの時間差を設定する。位相差は、制御周期の整数倍の時間である。
【００９４】
＜２−７．優先度に応じた処理＞
次に、図１を参照して、本実施の形態に係る演算ユニット１３における優先度に応じた処理の一例について説明する。図１を参照して、演算ユニット１３においては、実行周期が保証されるプライマリ定周期タスク２２および定周期タスク２４に加えて、実行周期が必ずしも保証されない高優先度システムサービス３２および低優先度システムサービス３４とが実行される。
【００９５】
このような定周期実行を実現するにあたって、プロセッサ１００が提供可能なコンピューティング資源は、まず、プライマリ定周期タスク２２に割当てられ、その後、定周期タスク２４に割当てられる。その上で、残ったコンピューティング資源が高優先度システムサービス３２および低優先度システムサービス３４に割当てられる。なお、コンピューティング資源の割当ては、スケジューラプログラム２１２により提供されるスケジューラによって管理される。
【００９６】
プライマリ定周期タスク２２には、ＩＯ処理プログラム２１４（図６）およびユーザプログラム２３４（図６）の全部または一部が設定されており、予め設定された制御周期毎に対応する処理が実行される。制御周期は、演算ユニット１３において管理される最も短い周期であり、例えば、数１００μｓから数ｍｓの範囲で設定される。すなわち、プライマリ定周期タスク２２の実行周期は制御周期と一致しており、制御周期毎にプライマリ定周期タスク２２に含まれるプログラム全体が実行される。
【００９７】
一方、定周期タスク２４の優先度は、プライマリ定周期タスク２２の優先度より低く設定されており、実行周期は保証されるものの、一般的にその実行周期は制御周期の複数倍になっている。例えば、定周期タスク２４の実行周期が制御周期の２倍に設定されている場合には、２回分の制御周期の間に、定周期タスク２４に設定されたプログラムが一回実行される。
【００９８】
また、システムサービスタスク３０には、定時実行性の要求が相対的に低いプログラムが設定される。図１に示す処理例においては、システムサービスタスク３０は、高優先度システムサービス３２および低優先度システムサービス３４を含む。低優先度システムサービス３４の優先度は、高優先度システムサービス３２の優先度より低い。
【００９９】
例えば、図１に示すような異なる優先度が設定された複数のタスクをシングルコアのプロセッサ１００を用いて実行させる場合には、スケジューラプログラム２１２は、プライマリ定周期タスク２２に設定されたプログラムを制御周期毎に繰返し実行させる。さらに、スケジューラプログラム２１２は、プライマリ定周期タスク２２に設定されたプログラムが実行されていない空き時間において、制御周期の複数倍の実行周期毎に定周期タスク２４を繰り返し実行させる。
【０１００】
さらに、スケジューラプログラム２１２は、プライマリ定周期タスク２２および定周期タスク２４に設定されたプログラムが実行されていない空き時間に、システムサービスタスク３０（高優先度システムサービス３２および低優先度システムサービス３４）を実行させる。
【０１０１】
高優先度システムサービス３２として登録されるタスクとしては、制御装置１からロボットを制御するためのロボット言語をインタプリタ処理するタスク、加工装置などを制御するためのＧ言語のインタプリタ処理するタスク、制御装置１からデータベースへデータ送信するタスク、制御装置１における制御動作を視覚化するシミュレータ用のデータを生成するタスクなどが想定される。低優先度システムサービス３４として登録されるタスクとしては、ＨＭＩ（Human Machine Interface）の画面更新を行うためのデータ生成タスクなどが想定される。
【０１０２】
スケジューラプログラム２１２は、定周期タスク２０に設定されたプログラムが実行されていない空き時間において、コンピューティング資源を高優先度システムサービス３２に割当てるように制御する。スケジューラプログラム２１２は、設定された実行周期毎に、高優先度システムサービス３２を実行させるための時間として、設定された実行時間割合の時間を確保する。
【０１０３】
スケジューラプログラム２１２は、高優先度システムサービス３２として複数のタスクが登録された場合、当該複数のタスクの実行周期の位相を設定された位相差だけずらす。すなわち、スケジューラプログラム２１２は、高優先度システムサービス３２として登録された複数のタスクの各々に設定されるプログラムの実行のために確保する時間を、設定された位相差だけずらす。これにより、高優先度システムサービス３２として登録された複数のタスクの実行開始タイミングが重なることを防ぐことができる。
【０１０４】
さらに、スケジューラプログラム２１２は、定周期タスク２０および高優先度システムサービス３２に設定されたプログラムが実行されていない空き時間において、コンピューティング資源を低優先度システムサービス３４に割当てるように制御する。スケジューラプログラム２１２は、設定された実行周期毎に、低優先度システムサービス３４を実行させるための時間として、設定された実行時間割合の時間を確保する。
【０１０５】
このように、本実施の形態に係る演算ユニット１３は、システムサービスタスク３０に対するコンピューティング資源割当ての管理機能を有している。
【０１０６】
＜２−８．高優先度システムサービスの実行状況の監視＞
次に、本実施の形態に係る演算ユニット１３における、高優先度システムサービス３２の実行状況の監視機能について説明する。
【０１０７】
図９は、本実施の形態に係る演算ユニット１３における通知機能３６および監視機能２１２２を説明するための図である。図９を参照して、高優先度システムサービス３２は、通知機能３６を有しており、高優先度システムサービス３２に含まれる処理の実行開始を監視機能２１２２へ通知する（開始通知２７０）とともに、当該処理が完了するとそれを通知する（終了通知２７２）。このように、高優先度システムサービス３２の通知機能３６は、自身の処理開始および処理終了を監視機能２１２２へ通知する。
【０１０８】
高優先度システムサービス３２として複数のタスクが登録されることもあるので、各タスクを特定するための識別情報を開始通知２７０および／または終了通知２７２に組込む。
【０１０９】
コンピューティング資源割当ての監視対象とすべき高優先度システムサービス３２に含まれる処理に対して、通知機能３６を実現するためのＡＰＩ（Application Programming Interface）を組込むことで実現してもよい。すなわち、通知機能３６を実現するための命令コードは、ＡＰＩを利用して、高優先度サービスプログラム２２２の通知機能プログラム２２４に組込まれてもよい。あるいは、高優先度システムサービス３２に含まれる処理の命令コード自体に、通知機能３６を実現するための命令コードを直接埋込むようにしてもよい。
【０１１０】
監視機能２１２２は、スケジューラプログラム２１２の一部またはスケジューラプログラム２１２の付加機能として実装される。監視機能２１２２は、通知機能３６からの開始通知２７０および終了通知２７２に基づいて、高優先度システムサービス３２の実行状況（開始時刻および終了時刻）を監視する。スケジューラプログラム２１２は、プライマリ定周期タスク２２および定周期タスク２４の実行状況（開始時刻および終了時刻）も管理している。監視機能２１２２は、これらの実行状況を示すデータを監視データ８２８として収集し保存する。保存された監視データ８２８は、サポート装置８に送信され、サポート装置８の二次記憶装置８０８に格納される。
【０１１１】
＜２−９．状況情報の表示処理＞
図１０は、タスクの実行状況の一例を示す図である。図１０において、符号「Ｔ＿ｋ」は、ｋ番目の制御周期を示している。制御周期は１ｍｓである。
【０１１２】
高優先度システムサービス３２として登録された「タスクＡ」に対して実行周期「３ｍｓ」が予め設定されており、実行周期３ｍｓごとに、タスクＡを実行させるための時間が確保される。図１０に示す例では、ｎ番目の制御周期Ｔ＿ｎからｎ＋２番目の制御周期Ｔ＿ｎ＋２までの長さ３ｍｓの実行周期において、プロセッサ１００は、タスクＡの実行要求を１回だけ受け、予めタスクＡ用に確保しておいた時間（制御周期Ｔ＿ｎの空き時間）に、タスクＡに設定されたプログラムを実行完了している。
【０１１３】
次の長さ３ｍｓの実行周期（ｎ＋３番目の制御周期Ｔ＿ｎ＋３からｎ＋５番目の制御周期Ｔ＿ｎ＋５）では、プロセッサ１００は、予めタスクＡ用に確保しておいた時間（制御周期Ｔ＿ｎ＋３の空き時間）に加えて、制御周期Ｔ＿ｎ＋４の空き時間にも、タスクＡに設定されたプログラムを実行している。これは、制御周期Ｔ＿ｎ＋３の空き時間だけではタスクＡに設定されたプログラムの実行を完了できないため、当該プログラムの実行が一旦中断され、次の制御周期Ｔ＿ｎ＋４の空き時間に当該プログラムの実行が再開されているためである。なお、タスクＡの実行要求を２回受け、制御周期Ｔ＿ｎ＋３，Ｔ＿ｎ＋４の各々の空き時間で、タスクＡに設定されたプログラムが実行完了されている場合もあり得る。
【０１１４】
高優先度システムサービス３２として登録された「タスクＢ」に対して実行周期「４ｍｓ」が予め設定されており、長さ４ｍｓの実行周期ごとに、タスクＢを実行させるための時間が確保される。図１０に示す例では、各実行周期において、プロセッサ１００は、タスクＢの実行要求を１回だけ受け、予めタスクＢ用に確保しておいた時間に、タスクＢに設定されたプログラムを実行完了している。
【０１１５】
低優先度システムサービス３４は、プライマリ定周期タスク２２、定周期タスク２４および高優先度システムサービス３２が実行されていない空き時間に実行される。
【０１１６】
上述したように、制御装置１のスケジューラプログラム２１２によって収集された監視データ８２８がサポート装置８の二次記憶装置８０８に格納される。監視データ８２８は、プライマリ定周期タスク２２、定周期タスク２４および高優先度システムサービス３２の実行状況（開始時刻および終了時刻）を示す。
【０１１７】
サポート装置８のプロセッサ８０２は、解析ツール８２７を実行することにより、監視データ８２８から得られる状況情報を含むモニタ画面を表示部８１８に表示させる。
【０１１８】
状況情報は、例えば、高優先度システムサービス３２として登録された各タスクについて、実行周期においてプロセッサ１００が当該タスクに設定されたプログラムを実行した時間を示す実行時間情報を含む。図１０に示す例では、プロセッサ８０２は、「（１）実績」で示されるように、タスクＡについて、設定された実行周期内にタスクＡに設定されたプログラムが実行された時間を実行時間情報として算出する。
【０１１９】
状況情報は、例えば、高優先度システムサービス３２に登録された各タスクについて、実行周期において当該タスクに設定されたプログラムの実行回数を示す回数情報（頻度情報）を含んでもよい。プロセッサ８０２は、タスクに設定されたプログラムの実行の開始時刻から終了時刻までを１回として、当該プログラムの実行回数をカウントすることにより、回数情報を算出すればよい。
【０１２０】
状況情報は、例えば、制御装置１の予め定められた動作時間に対する、定周期タスク２０および高優先度システムサービス３２の少なくとも一方が実行されていない時間の割合を示す情報（以下、「余裕度情報」という）を含んでもよい。動作時間として、システムサービスタスク３０に対して設定される最も長い実行周期以上の時間が設定される。プロセッサ８０２は、動作時間から、定周期タスク２０および高優先度システムサービス３２の少なくとも一方が実行された合計時間を差し引いた空き時間を算出する。プロセッサ８０２は、算出した空き時間を動作時間で除算することにより余裕度情報を生成すればよい。図１０の「（２）余裕度」に示されるように、余裕度情報は、低優先度システムサービス３４にコンピュータ資源を割り当て可能な時間の割合を示す。
【０１２１】
図１１は、状況情報を含むモニタ画面の別の例を示す図である。図１１に示す例のモニタ画面８０は、プライマリ定周期タスク２２の実行状況を示す領域８１と、定周期タスク２４の実行状況を示す領域８２と、高優先度システムサービス３２の実行状況を示す領域８３と、余裕度情報を示す領域８４とを含む。
【０１２２】
領域８１には、プライマリ定周期タスク２２の実行時間の代表値（平均、最大）、プライマリ定周期タスク２２の実行周期（図では「設定周期」と記載）、プライマリ定周期タスク２２の実行回数、プライマリ定周期タスク２２の処理の内訳などの情報が表示される。これらの情報は、監視データ８２８から生成される。
【０１２３】
領域８２には、定周期タスク２４の実行時間の代表値（平均、最大）、定周期タスク２４の実行周期（図では「設定周期」と記載）、定周期タスク２４の実行回数、定周期タスク２４の処理の内訳が表示される。これらの情報は、監視データ８２８から生成される。
【０１２４】
領域８３には、高優先度システムサービス３２として登録されたタスク（タスクＡおよびタスクＢ）ごとの実行状況を示す状況情報が表示される。図１１に示す例では、領域８３は、タスクＡの実行状況を示すサブ領域８５と、タスクＢの実行状況を示すサブ領域８６とを含む。
【０１２５】
サブ領域８５には、タスクＡの実行時間情報である、タスクＡに対して設定された実行周期におけるタスクＡの実行時間の代表値（平均、最大）が表示される。さらに、サブ領域８５には、タスクＡに対して設定された実行周期（図では「設定周期」と記載）およびタスクＡの実行回数（累積）も表示される。これらの情報は、監視データ８２８から生成される。
【０１２６】
サブ領域８６には、タスクＢの実行時間情報である、タスクＢに対して設定された実行周期におけるタスクＢの実行時間の代表値（平均、最大）が表示される。さらに、サブ領域８６には、タスクＢに対して設定された実行周期（図では「設定周期」と記載）およびタスクＢの実行回数（累積）も表示される。これらの情報は、監視データ８２８から生成される。
【０１２７】
領域８４には、余裕度情報が表示される。余裕度情報は、特定の周期幅（例えば１０ｍｓ）における余裕度を示す。特定の周期幅が１０ｍｓである場合、制御装置１の動作時間１０ｍｓにおけるプライマリ定周期タスク２２の１０回分の実行時間と、定周期タスク２４の５回分の実行時間と、高優先度システムサービス３２（タスクＡおよびタスクＢ）の実行時間との総和を１０ｍｓから差し引いた分が余裕度として表示される。図１１に示す例のモニタ画面は、当該総和が「４３％」であり、余裕度が「５７％」であることを示している。さらに、領域８４には、周期幅において、プライマリ定周期タスク２２、定周期タスク２４および高優先度システムサービス３２の各々の実行時間が示す割合を視覚的に示すゲージが表示される。これにより、ユーザは、各タスクの割合および余裕度を認識しやすくなる。周期幅は、ユーザによって設定されてもよいし、高優先度システムサービス３２として登録された各タスクの実行周期の最小公倍数でもよい。余裕度情報は、監視データ８２８から生成される。
【０１２８】
ユーザは、領域８３に表示された状況情報（実行時間情報）を参考にして、高優先度システムサービス３２として登録した各タスクについて設定した実行周期および実行時間割合を適宜見直すことができる。
【０１２９】
なお、サブ領域８５，８６の各々には、対応するタスクの回数情報である、実行周期において当該タスクに設定されたプログラムの実行回数の代表値（平均、最大）が表示されてもよい。ユーザは、当該回数情報を参考にして、高優先度システムサービス３２として登録した各タスクについて設定した実行周期を適宜見直すことができる。
【０１３０】
さらに、ユーザは、領域８４に表示された余裕度情報を確認することにより、プロセッサ１００の余裕度を把握できる。ユーザは、余裕度に基づいて、低優先度システムサービス３４として登録するタスクを適宜見直すことができる。もしくは、ユーザは、余裕度を調整するために、高優先度システムサービス３２として登録した各タスクについて設定した実行周期および実行時間割合を見直してもよい。
【０１３１】
モニタ画面８０は、実行時間をリセットするためのリセットボタン８７を含む。リセットボタン８７が操作されると、プロセッサ８０２は、二次記憶装置８０８に格納されている監視データ８２８をリセットする。
【０１３２】
図１０に戻って、高優先度システムサービス３２として複数のタスクが登録されると、スケジューラプログラム２１２は、当該複数のタスクに対して設定される実行周期の位相を設定された位相差だけずらす。図１０に示す例では、タスクＢとタスクＡとの位相差として１ｍｓが設定されている。そのため、スケジューラプログラム２１２は、タスクＢに設定されたプログラムを実行するために確保する時間を、タスクＡに設定されたプログラムを実行するために確保する時間から位相差１ｍｓだけずらしている。その結果、図１０の「（３）オフセット（時間差）」に示されるように、タスクＢに設定されたプログラムが実際に実行されたタイミングと、タスクＡに設定されたプログラムが実際に実行されたタイミングとがずれている。
【０１３３】
プロセッサ８０２は、高優先度システムサービス３２として登録された複数のタスクの各々に設定されたプログラムが実行されたタイミングを示すタイミング情報を状況情報として生成し、当該タイミング情報を含むモニタ画面を表示部８１８に表示させてもよい。タイミング情報は、例えば、図１０の領域Ａのように、高優先度システムサービス３２として登録された複数のタスクの実行タイミングを時間軸に沿って配置したタイミングチャートと、複数のタスクの実行タイミングの時間差とを示す。
【０１３４】
ユーザは、タイミング情報で示されるタイミングチャートおよび実行タイミングの時間差を確認することにより、高優先度システムサービス３２として登録された複数のタスクの各々に対して設定した実行周期および位相差を適宜見直すことができる。例えば、ユーザは、高優先度システムサービス３２として登録された１つのタスクの実行周期を別のタスクの実行周期の１以上の整数倍に設定する。さらに、ユーザは、当該１つのタスクと当該別のタスクとの実行周期の位相差を当該別のタスクの実行周期よりも短い時間に設定する。これにより、スケジューラプログラム２１２は、当該１つのタスク用に確保される時間と当該別のタスク用に確保される時間とが重ならないようにスケジュール管理しやすくなる。
【０１３５】
＜２−１０．変形例＞
サポート装置８が備える解析ツール８２７は、制御装置１に備えられていてもよい。制御装置１は、プライマリ定周期タスク２２、定周期タスク２４および高優先度システムサービス３２の実行状況を示す監視データ８２８を収集し、当該監視データ８２８を解析することにより得られたモニタ画面（図１１参照）を表示装置に表示すればよい。
【０１３６】
＜２−１１．付記＞
以上のように、本実施の形態は以下のような開示を含む。
【０１３７】
（構成１）
制御システム（ＳＹＳ）であって、
制御対象を制御するための制御装置（１）を備え、
前記制御装置（１）は、
プロセッサ（１００）と、
前記プロセッサ（１００）によって定周期で繰り返し実行される第１のプログラム（と、
前記第１のプログラムより実行の優先度が低い第２のプログラムと、
前記第２のプログラムより実行の優先度が低い第３のプログラムと、
前記プロセッサ（１００）に実行させるプログラムを管理するスケジューラプログラム（２１２）とを含み、
前記スケジューラプログラム（２１２）は、前記第１のプログラムの実行を妨げないように、前記プロセッサ（１００）の空き時間に、前記第２のプログラムおよび前記第３のプログラムを前記プロセッサに実行させるための命令と、
前記第２のプログラムの実行状況を監視するための命令とを含み、
前記制御システム（ＳＹＳ）は、さらに、
前記スケジューラプログラム（２１２）によって監視された前記実行状況から得られる状況情報を表示させるための表示手段（８０２，８１８，８２７）を備える、制御システム（ＳＹＳ）。
【０１３８】
（構成２）
前記スケジューラプログラム（２１２）は、予め設定された周期ごとに、前記第２のプログラムを実行させるための時間として、予め設定された割合の時間を確保するための命令を含み、
前記状況情報は、前記予め設定された周期において前記プロセッサ（１００）が前記第２のプログラムを実行した時間を示す実行時間情報を含む、構成１に記載の制御システム（ＳＹＳ）。
【０１３９】
（構成３）
前記状況情報は、前記予め設定された周期において前記プロセッサ（１００）が前記第２のプログラムを実行した回数を示す回数情報をさらに含む、構成２に記載の制御システム（ＳＹＳ）。
【０１４０】
（構成４）
前記第２のプログラムは複数のプログラムを含み、
前記実行周期は、前記複数のプログラムの各々に対して予め設定され、
前記状況情報は、前記複数のプログラムの各々に対応する前記実行時間情報を含む、構成２に記載の制御システム（ＳＹＳ）。
【０１４１】
（構成５）
前記状況情報は、前記制御装置の予め定められた動作時間に対する、前記第１のプログラムおよび前記第２のプログラムの少なくとも一方が実行されていない時間の割合を示す余裕度情報をさらに含む、構成２から４のいずれかに記載の制御システム（ＳＹＳ）。
【０１４２】
（構成６）
前記第２のプログラムは複数のプログラムを含み、
前記スケジューラプログラム（２１２）は、
前記複数のプログラムの各々について、予め設定された周期ごとに、当該プログラムを実行させるための時間として、予め設定された割合の時間を確保するための命令と、
予め設定された位相差だけ、前記複数のプログラムに対応する前記予め設定された周期の位相をずらす命令とを含み、
前記状況情報は、前記複数のプログラムの各々が実行されたタイミングを示すタイミング情報を含む、構成１に記載の制御システム（ＳＹＳ）。
【０１４３】
（構成７）
表示装置（８）に接続された、制御対象を制御するための制御装置（１）であって、
プロセッサ（１００）と、
前記プロセッサ（１００）によって定周期で繰り返し実行される第１のプログラムと、
前記第１のプログラムより実行の優先度が低い第２のプログラムと、
前記第２のプログラムより実行の優先度が低い第３のプログラムと、
前記プロセッサ（１００）に実行させるプログラムを管理するスケジューラプログラム（２１２）とを備え、
前記スケジューラプログラム（２１２）は、前記第１のプログラムの実行を妨げないように、前記プロセッサ（１００）の空き時間に、前記第２のプログラムおよび前記第３のプログラムを前記プロセッサに実行させるための命令と、
前記第２のプログラムの実行状況を監視するための命令とを含み、
前記スケジューラプログラム（２１２）によって監視された前記実行状況から得られる状況情報が前記表示装置（８）に表示される、制御装置（１）。
【０１４４】
（構成８）
制御対象を制御するための制御装置（１）を備える制御システム（ＳＹＳ）の制御方法であって、
前記制御装置（１）は、
プロセッサ（１００）と、
前記プロセッサ（１００）によって定周期で繰り返し実行される第１のプログラムと、
前記第１のプログラムより実行の優先度が低い第２のプログラムと、
前記第２のプログラムより実行の優先度が低い第３のプログラムとを含み、
前記制御方法は、
前記第１のプログラムの実行を妨げないように、前記プロセッサ（１００）の空き時間に応じて、前記第２のプログラムおよび前記第３のプログラムを前記プロセッサ（１００）に実行させるステップと、
前記第２のプログラムの実行状況を監視するステップと、
監視された前記実行状況から得られる状況情報を表示させるステップとを備える、制御方法。
【０１４５】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４６】
１  制御装置、２  フィールドネットワーク、３  サーボモータドライバ、４  サーボモータ、５  ＩＯターミナル、６  検出スイッチ、７  リレー、８  サポート装置、１０  接続ケーブル、１１  ＰＬＣシステムバス、１２  電源ユニット、１３  演算ユニット、１４，５３  ＩＯユニット、１５  特殊ユニット、２０，２４  定周期タスク、２２  プライマリ定周期タスク、３０  システムサービスタスク、３２  高優先度システムサービス、３４  低優先度システムサービス、３６  通知機能、５１  リモートＩＯターミナルバス、５２  通信カプラ、８０  モニタ画面、８１，８２，８３，８４，Ａ  領域、８５，８６  サブ領域、８７  リセットボタン、１００，８０２  プロセッサ、１０２  チップセット、１０４  メインメモリ、１０６  不揮発性メモリ、１０８  システムタイマ、１１０  ＵＳＢコネクタ、１２０  ＰＬＣシステムバスコントローラ、１２２，１４２  ＤＭＡ制御回路、１２４  ＰＬＣシステムバス制御回路、１２６，１４６  バッファメモリ、１３０  ＰＬＣシステムバスコネクタ、１４０  フィールドネットワークコントローラ、１４４  フィールドネットワーク制御回路、２００  リアルタイムＯＳ、２１０  システムプログラム、２１２  スケジューラプログラム、２１４  ＩＯ処理プログラム、２１６  入力処理プログラム、２１８  出力処理プログラム、２２０  システムサービスプログラム、２２２  高優先度サービスプログラム、２２４  通知機能プログラム、２２６  低優先度サービスプログラム、２２８  アプリケーションプログラム実行部、２３０  制御プログラム、２３２  シーケンス命令実行部、２３４  ユーザプログラム、２３６  ＩＥＣプログラム、２３８  アプリケーションプログラム、２７０  開始通知、２７２  終了通知、８０４  光学ドライブ、８０５  記録媒体、８０６  主記憶装置、８０８  二次記憶装置、８１２  ＵＳＢコントローラ、８１６  入力部、８１８  表示部、８２０  バス、８２２  開発プログラム、８２７  解析ツール、８２８  監視データ、２１２０  制御機能、２１２２  監視機能、ＳＹＳ  制御システム。
【図１】
2020061055.tif 000003
【図２】
2020061055.tif 000004
【図３】
2020061055.tif 000005
【図４】
2020061055.tif 000006
【図５】
2020061055.tif 000007
【図６】
2020061055.tif 000008
【図７】
2020061055.tif 000009
【図８】
2020061055.tif 000010
【図９】
2020061055.tif 000011
【図１０】
2020061055.tif 000012
【図１１】
2020061055.tif 000013