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