(57)【要約】【課題】対象を制御する制御タスクと非制御タスクを、リアルタイム制御を保証可能なように実行する。【解決手段】制御装置（１００）は、リアルタイム制御のための制御タスク（１４１）および、リアルタイム制御の関連処理を実施する非制御タスク（１４２、１４３）を含む複数タスクを実行するプロセッサ（１０２）と、各タスクの優先度（１３３）に基づく順序に従いタスクをプロセッサに実行させるマルチタスク実行部（１９１）と、非制御タスクの優先度を可変に設定するスケジューラ（１５１）とを備える。制御タスクの優先度は最優先に設定される。スケジューラは、非制御タスクの実行開始条件が成立すると第１優先度に設定し、実行開始からの時間が関連処理をリアルタイムに実行するための第１時間の間は第１優先度に維持し、その後、第１時間よりも長くなると第２優先度に下げる。【選択図】図５
2018181315.tif 000002
【特許請求の範囲】
【請求項１】
対象を制御する制御装置であって、
前記対象のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクを実行するプロセッサと、
前記複数のタスクの各タスクに対応付けた優先度に基づく順序に従い前記複数のタスクを前記プロセッサにより実行させるマルチタスク実行部と、
前記非制御タスクの優先度を可変に設定するスケジューラと、を備え、
前記制御タスクの優先度は最優先に設定され、
前記スケジューラは、
前記非制御タスクの実行開始条件が成立すると第１優先度に設定するとともに、当該非制御タスクの実行開始からの時間が前記関連処理をリアルタイムに実行するための第１時間の間は、当該非制御タスクの優先度を第１優先度に維持し、その後、前記実行開始からの時間が前記第１時間よりも長くなると、当該非制御タスクの優先度を第２優先度に下げるよう切替える優先度切替部を含む、制御装置。
【請求項２】
前記第１時間は、可変に設定される、請求項１に記載の制御装置。
【請求項３】
前記優先度切替部は、さらに、
前記第２優先度の前記非制御タスクの実行開始からの時間が第２時間よりも長くなると、当該非制御タスクの優先度を前記第１優先度に上げるよう切替える、請求項１または２に記載の制御装置。
【請求項４】
前記第２時間は、可変に設定される、請求項３に記載の制御装置。
【請求項５】
前記関連処理は、
前記対象に関連するデータから前記対象に生じる異常を検知するのに適した特徴量を生成する特徴量生成処理と、
前記特徴量生成処理により生成される特徴量を用いて前記異常を検知する異常検知処理と、
前記特徴量生成処理または前記異常検知処理のためのデータを、記憶装置を含む装置と通信する処理と、を含む、請求項１から４のいずれか１項に記載の制御装置。
【請求項６】
前記関連処理は、
前記制御装置から前記対象に出力される指令値と予め定められた予測制御モデルとを用いて前記対象の推定の制御量を算出する算出処理と、
前記算出処理により算出された制御量に基づき補正値を算出する補正値算出処理を含み、
前記制御タスクは、算出される前記補正値に従って前記対象に対する指令値を算出する制御演算タスクを含む、請求項１から４のいずれか１項に記載の制御装置。
【請求項７】
前記関連処理は、
前記制御装置から前記対象に出力される前記対象の制御量と予め定められた予測制御モデルを用いて前記対象の推定の制御量を算出する算出処理と、
前記算出処理により算出された制御量に基づき補正値を算出する補正値算出処理を含み、
前記制御タスクは、算出される前記補正値に従って前記対象に対する指令値を算出する制御演算タスクを含む、請求項１から４のいずれか１項に記載の制御装置。
【請求項８】
前記補正値算出処理は、前記制御量が予め定められた範囲に収まるよう補償した前記補正値を算出する処理を含む、請求項６または７に記載の制御装置。
【請求項９】
前記非制御タスクについて、前記実行開始からの時間を含む当該非制御タスクの実行に関する情報を収集する収集部を備え、
前記収集部により収集される情報は、外部に出力される、請求項１から８のいずれか１項に記載の制御装置。
【請求項１０】
前記収集される情報は、前記非制御タスクの前記優先度の切替え回数を含む、請求項９に記載の制御装置。
【請求項１１】
前記関連処理の内容は可変に設定される、請求項１から１０のいずれか１項に記載の制御装置。
【請求項１２】
前記プロセッサは、複数のプロセッサコアを含み、
前記非制御タスクを実行するプロセッサコアを指定するコア情報を記憶するためのコア情報記憶部を、さらに備え、
前記スケジューラは、さらに、
前記コア情報または各前記プロセッサコアの利用率に基づき、前記非制御タスクを実行するプロセッサコアを決定するコア切替部を含む、請求項１から１１のいずれか１項に記載の制御装置。
【請求項１３】
前記コア情報は、
前記非制御タスクの前記優先度に基づき当該非制御タスクを実行するプロセッサコアを指定する情報を含む、請求項１２に記載の制御装置。
【請求項１４】
対象を制御する制御装置における制御方法であって、
前記制御装置は、
前記対象のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクを実行するプロセッサと、
前記複数のタスクの各タスクに対応付けた優先度に基づく順序に従い前記複数のタスクを前記プロセッサにより実行させるマルチタスク実行部と、を備え、
前記制御タスクの優先度は最優先に設定され、
前記制御方法は、
前記非制御タスクの優先度を可変に設定するステップを備え、
前記可変に設定するステップにおいて、
前記非制御タスクの実行開始条件が成立すると第１優先度に設定するとともに、当該非制御タスクの実行開始からの時間が前記関連処理をリアルタイムに実行するための第１時間の間は、当該非制御タスクの優先度を第１優先度に維持するステップと、その後、前記実行開始からの時間が前記第１時間よりも長くなると、当該非制御タスクの優先度を第２優先度に下げるよう切替えるステップとを、含む、制御方法。
【請求項１５】
請求項１４に記載の制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、対象を制御する制御装置、制御方法および制御プログラムに関する。
【背景技術】
【０００２】
様々な生産現場において、ＰＬＣ（プログラマブルコントローラ）などの制御装置を用いたＦＡ（Factory Automation）技術が広く普及している。
【０００３】
ＰＬＣなどの制御装置は高性能が要求される。この要求に関して、例えば特許文献１（特表２０１３−５０６９１１号公報）のＰＬＣは、ＰＬＣ機能の各々に割当てられた１または複数のプロセッサを備えて、これらＰＬＣ機能のうち少なくとも２つは並列に動作させている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１３−５０６９１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＰＬＣなどの制御装置は、生産現場に設けられた機器のシーケンス制御を実現するためのシーケンスプログラムおよびモーション制御を実現するためのモーションプログラムなどを含む機器を制御するための制御タスクを、予め定められた周期毎に実行することで、機器のリアルタイム制御を実現している。
【０００６】
ところで、ＰＬＣなどの制御装置においては、各種の機能の追加に伴い、機器の制御に直接的には関与しない非制御タスクを上記のリアルタイム制御（定周期性）を維持しながら実行させたいという要求がある。
【０００７】
この要求を実現するために、定周期内に終わらなかった非制御タスクを次周期に実行する方法も提案されている。しかし、この方法では、異常検知等の特定の非制御タスクについて適当ではない。具体的には、非制御タスクの実行結果に応じて、対象のリアルタイム制御の内容を変える等（例えば、機械を止める、異常によって不良が発生したワークを弾く、制御対象機械が包装機であれば包装後のカッターを降ろさない等）が要求されている場合は、この方法では、制御タスクとの関係も考慮して決まった時間内に非制御タスクの実行を完了することができないとの課題が残る。
【０００８】
特許文献１は、ＰＬＣ機能のうち少なくとも２つを並列に動作させているが、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能なように実行するための具体的な構成は提案していない。
【０００９】
本技術は、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能なように実行する制御装置、制御方法および制御プログラムを提供する。
【課題を解決するための手段】
【００１０】
本開示のある局面によれば、対象を制御する制御装置であって、対象のリアルタイム制御を実施するための制御タスクおよび、リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクを実行するプロセッサと、複数のタスクの各タスクに対応付けた優先度に基づく順序に従い複数のタスクをプロセッサにより実行させるマルチタスク実行部と、非制御タスクの優先度を可変に設定するスケジューラと、を備え、制御タスクの優先度は最優先に設定される。スケジューラは、非制御タスクの実行開始条件が成立すると第１優先度に設定するとともに、当該非制御タスクの実行開始からの時間が関連処理をリアルタイムに実行するための第１時間の間は、当該非制御タスクの優先度を第１優先度に維持し、その後、実行開始からの時間が第１時間よりも長くなると、当該非制御タスクの優先度を第２優先度に下げるよう切替える優先度切替部を含む。
【００１１】
好ましくは、上記の第１時間は、可変に設定される。
好ましくは、優先度切替部は、さらに、第２優先度の非制御タスクの実行開始からの時間が第２時間よりも長くなると、当該非制御タスクの優先度を第１優先度に上げるよう切替える。
【００１２】
好ましくは、第２時間は、可変に設定される。
好ましくは、関連処理は、対象に関連するデータから対象に生じる異常を検知するのに適した特徴量を生成する特徴量生成処理と、特徴量生成処理により生成される特徴量を用いて異常を検知する異常検知処理と、特徴量生成処理または異常検知処理のためのデータを、記憶装置を含む装置と通信する処理と、を含む。
【００１３】
好ましくは、関連処理は、制御装置から対象に出力される指令値と予め定められた予測制御モデルとを用いて対象の推定の制御量を算出する算出処理と、算出処理により算出された制御量に基づき補正値を算出する補正値算出処理を含み、制御タスクは、算出される補正値に従って対象に対する指令値を算出する制御演算タスクを含む。
【００１４】
好ましくは、関連処理は、制御装置から対象に出力される対象の制御量と予め定められた予測制御モデルを用いて対象の推定の制御量を算出する算出処理と、算出処理により算出された制御量に基づき補正値を算出する補正値算出処理を含み、制御タスクは、算出される補正値に従って対象に対する指令値を算出する制御演算タスクを含む。
【００１５】
好ましくは、上記の補正値算出処理は、制御量が予め定められた範囲に収まるよう補償した補正値を算出する処理を含む。
【００１６】
好ましくは、非制御タスクについて、実行時間を含む当該非制御タスクの実行に関する情報を収集する収集部を備え、収集部により収集される情報は、外部に出力される。
【００１７】
好ましくは、収集される情報は、非制御タスクの優先度の切替え回数を含む。
好ましくは、関連処理の内容は可変に設定される。
【００１８】
好ましくは、プロセッサは、複数のプロセッサコアを含み、非制御タスクを実行するプロセッサコアを指定するコア情報を記憶するためのコア情報記憶部を、さらに備え、スケジューラは、さらに、コア情報または各プロセッサコアの利用率に基づき、非制御タスクを実行するプロセッサコアを決定するコア切替部を含む。
【００１９】
好ましくは、コア情報は、非制御タスクの優先度に基づき当該非制御タスクを実行するプロセッサコアを指定する情報を含む。
【００２０】
この技術の他の局面に従うと、対象を制御する制御装置における制御方法が提供される。制御装置は、対象のリアルタイム制御を実施するための制御タスクおよび、リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクを実行するプロセッサと、複数のタスクの各タスクに対応付けた優先度に基づく順序に従い前記複数のタスクを前記プロセッサにより実行させるマルチタスク実行部と、を備え、制御タスクの優先度は最優先に設定される。
【００２１】
制御方法は、非制御タスクの実行開始条件が成立すると第１優先度に設定するとともに、当該非制御タスクの実行開始からの時間が前記関連処理をリアルタイムに実行するための第１時間の間は、当該非制御タスクの優先度を第１優先度に維持するステップと、その後、前記実行開始からの時間が前記第１時間よりも長くなると、当該非制御タスクの優先度を第２優先度に下げるよう切替えるステップとを、含む。
【００２２】
この技術の他の局面に従うと、上記の制御方法をコンピュータに実行させるためのプログラムが提供される。
【発明の効果】
【００２３】
本技術によれば、対象をリアルタイム制御するための制御タスクと、非制御タスクとが、対象のリアルタイム制御を保証可能なように実行され得る。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態に係る制御システム１の全体構成例を示す模式図である。
【図２】本実施の形態に係る制御システム１を構成する制御装置１００のハードウェア構成例を示すブロック図である。
【図３】本実施の形態に係る制御システム１を構成するサポート装置２００のハードウェア構成例を示すブロック図である。
【図４】本実施の形態に係る概略処理のフローチャートである。
【図５】本実施の形態に係る制御装置１００が備える機能を模式的に示す図である。
【図６】本実施の形態に係る関連処理タスク１４３の状態遷移を模式的に示す図である。
【図７】本実施の形態に係る関連処理プログラム１６５の構成を模式的に示す図である。
【図８】本実施の形態に係るタスクに優先度を設定するためのユーザインターフェイスを示す図である。
【図９】本実施の形態に係るタスクにプログラムを割当てるユーザインターフェイスを示す図である。
【図１０】本実施の形態に係る関連処理タスクの実行を管理する処理を示すフローチャートである。
【図１１】（Ａ）と（Ｂ）は、本実施の形態に係る関連処理タスク１４３のスケジューリングモデルを示す図である。
【図１２】図１１に関連付けて関連処理タスク１４３の優先度切替を例示する図である。
【図１３】本実施の形態に係る複数の関連処理タスクに優先度と閾値を設定する例を示す図である。
【図１４】本実施の形態に係る複数の関連処理タスクに対するプログラムの割当て方法を示す図である。
【図１５】本実施の形態に係るデバッグのための支援情報の表示例を示す図である。
【図１６】本実施の形態に係るモニタ情報１５３Ａとログ１３５の一例を示す図である。
【図１７】本実施の形態に係る収集情報２２８の一例を示す図である。
【図１８】本実施の形態に係るコア情報１３６を示す図である。
【図１９】実施の形態に係るマルチコアスケジューリングにおいて１つの関連処理タスク１４３を実行する例を示す図である。
【図２０】本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク１４３を実行する例を示す図である。
【図２１】本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク１４３を実行する他の例を示す図である。
【図２２】本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク１４３を実行する更なる他の例を示す図である。
【図２３】本実施の形態に係る関連処理タスク１４３の変形例を説明する模式図である。
【図２４】本実施の形態に係る予測制御モデルの一例を模式的に示す図である。
【発明を実施するための形態】
【００２５】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２６】
＜用語の説明＞
本実施の形態での用語を説明する。
【００２７】
「タスク」は、プロセッサにより実行される処理の単位であって、タスクは１つ以上のプログラムを含む。
【００２８】
タスクの「リアルタイム性」は、タスクが実行開始されてから、予め定められた時間内に実行が終了することを示す。
【００２９】
「制御タスク」は、フィールド装置群のうちの制御すべき対象をリアルタイム制御するためのタスクである。
【００３０】
「非制御タスク」は、「制御タスク」とは異なり直接にリアルタイム制御に関与しないが、リアルタイム性が要求されるタスクであって、上記のリアルタイム制御に関連する処理を実施するためのタスクである。
【００３１】
タスクの「優先度」は、当該タスクが他のタスクよりも先にプロセッサにより実行される相対的な順序を示す。優先度が高ければ実行順序は先となり、優先度が低ければ実行順序は後となる。
【００３２】
＜実施の形態の概要＞
本実施の形態では制御装置のスケジューラは、制御タスクおよび非制御タスクを含む複数のタスクの優先度を可変に設定する。本実施の形態では、複数のタスクのうち制御タスクの優先度は最も高く設定されている。スケジューラは、非制御タスクの実行開始条件が成立すると第１優先度に設定するとともに、当該非制御タスクの実行開始からの時間が関連処理をリアルタイムに実行するための第１時間の間は非制御タスクの優先度を第１優先度（高優先度）に維持し、その後、実行開始からの経過時間である実行時間が第１時間よりも長くなると、当該非制御タスクの優先度を第２優先度（低優先度）に下げるよう切替える。
【００３３】
これにより、実行時間が第１時間を超えない間は、リアルタイム性を維持しながら関連処理を実行することができて、例えば関連処理の結果を用いた対象のリアルタイム制御を実現することが可能となる。また、実行時間が第１時間を超えて長くなると非制御タスクの優先度を低くすることで他のタスクが優先的に実行可能となるので、他のタスクがリアルタイム制御に寄与する処理を実行している場合には、他のタスクの実行結果を用いた対象のリアルタイム制御が可能となる。したがって、制御タスクによる対象のリアルタイム制御の実現を保証しながら、非制御タスクによる関連処理のリアルタイムな実行も実現することが可能となる。
【００３４】
＜Ａ．制御システムの全体構成例＞
まず、本実施の形態に係る制御装置を含む制御システム１の全体構成例について説明する。
【００３５】
図１は、本実施の形態に係る制御システム１の全体構成例を示す模式図である。図１を参照して、本実施の形態に係る制御システム１は、主たる構成要素として、制御すべき対象を制御する制御装置１００と、制御装置１００に接続されるサポート装置２００とを含む。
【００３６】
制御装置１００は、ＰＬＣ（プログラマブルコントローラ）などの、一種のコンピュータとして具現化されてもよい。制御装置１００は、第１フィールドネットワーク２を介してフィールド装置群１０と接続されるとともに、第２フィールドネットワーク４を介して１または複数の表示装置４００と接続される。さらに、制御装置１００は、ローカルネットワーク６を介してデータロギング装置３００に接続される。制御装置１００は、それぞれのネットワークを介して、接続された装置との間でデータを遣り取りする。なお、データロギング装置３００および表示装置４００はオプショナルな構成であり、制御システム１の必須の構成ではない。
【００３７】
制御装置１００は、生産現場などの設備や機械を制御するための各種演算を実行する機能と、フィールド装置群１０にて計測され、制御装置１００へ転送されるデータ（以下、「入力データ」とも称す。）を収集する収集機能と、収集した入力データを監視する監視機能とを備える。これらの機能が制御装置１００に実装されることで、対象に生じている現象を監視することができる。
【００３８】
具体的には、制御装置１００に実装される後述する内部データベース（以下、「内部ＤＢ」とも記す。）１３０が上記の収集機能の一部を提供し、制御装置１００に実装される異常検知プログラム（後述する）が監視機能を提供する。
【００３９】
フィールド装置群１０は、制御装置１００の制御すべき対象または制御に関連する製造装置や生産ラインなど（以下、「フィールド」とも総称する。）から入力データを収集する装置を含む。このような入力データを収集する装置としては、入力リレーや各種センサなどが想定される。フィールド装置群１０は、さらに、制御装置１００にて生成される指令（以下、「出力データ」とも称す。）に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。これらのフィールド装置群１０は、第１フィールドネットワーク２を介して、制御装置１００との間で、入力データおよび出力データを含むデータを遣り取りする。
【００４０】
図１に示す構成例においては、フィールド装置群１０は、リモートＩ／Ｏ（Input/Output）装置１２と、リレー群１４と、画像センサ１８およびカメラ２０と、サーボドライバ２２、サーボモータ２４およびＩ／Ｏユニット１６を含む。フィールド装置群１０としては、これらに限られることなく、入力データを収集できるデバイス、または、出力データに基づく何らかのアクションができるデバイスであれば、どのようなものを採用してもよい。
【００４１】
リモートＩ／Ｏ装置１２は、第１フィールドネットワーク２を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。このようなＩ／Ｏユニットを介して、制御装置１００とフィールドとの間で入力データおよび出力データが遣り取りされる。図１には、リレー群１４を介して、入力データおよび出力データとして、デジタル信号が遣り取りされる例が示されている。Ｉ／Ｏユニットは、フィールドバスに直接接続されるようにしてもよい。図１には、第１フィールドネットワーク２にＩ／Ｏユニット１６が直接接続されている例を示す。
【００４２】
画像センサ１８は、カメラ２０によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置１００へ送信する。
【００４３】
サーボドライバ２２は、制御装置１００からの出力データに従って、サーボモータ２４を駆動する。
【００４４】
上述のように、第１フィールドネットワーク２を介して、制御装置１００とフィールド装置群１０との間でデータが遣り取りされることになるが、本実施の形態では、これらの遣り取りされるデータは、例えば周期（＝単位時間）Ｔ毎に更新されることになる。周期Ｔは、フィールド装置群１０をリアルタイム制御するために予め定められた単位時間を示し、例えば数百μｓｅｃオーダ〜数十ｍｓｅｃオーダを有する。なお、このような遣り取りされるデータの更新処理を、「Ｉ／Ｏリフレッシュ処理」と称することもある。
【００４５】
また、第２フィールドネットワーク４を介して制御装置１００と接続される表示装置４００は、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを送信するとともに、制御装置１００での演算結果などをグラフィカルに表示する。
【００４６】
データロギング装置３００は、制御装置１００とローカルネットワーク６を介して接続され、制御装置１００との間で必要なデータを遣り取りする。データロギング装置３００は、例えば、制御装置１００が発生するイベントログなどを時系列に収集する。
【００４７】
サポート装置２００は、制御装置１００が対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置２００は、制御装置１００で実行されるユーザプログラムの開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）、制御装置１００および制御装置１００に接続される各種デバイスのパラメータ（コンフィギュレーション）を設定するための設定環境、生成したユーザプログラムを制御装置１００へ送信する機能、制御装置１００上で実行されるユーザプログラムなどをオンライン（またはオフライン）で修正・変更する後述するデバッグツール２２７（後述する）、などを提供する。
【００４８】
＜Ｂ．各装置のハードウェア構成例＞
次に、本実施の形態に係る制御システム１を構成する主要な装置のハードウェア構成例について説明する。
【００４９】
（ｂ１：制御装置１００のハードウェア構成例）
図２は、本実施の形態に係る制御システム１を構成する制御装置１００のハードウェア構成例を示すブロック図である。図２を参照して、制御装置１００は、周期Ｔを含む各種の時間を計測するためのタイマ１０１と、ＣＰＵ（Central Processing Unit）またはＭＰＵ（Micro-Processing Unit）などのプロセッサ１０２と、チップセット１０４と、主記憶装置１０６と、二次記憶装置１０８と、ローカルネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４と、内部バスコントローラ１２２と、フィールドバスコントローラ１１８，１２０と、Ｉ／Ｏユニット１２４−１，１２４−２，…とを含む。二次記憶装置１０８は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。主記憶装置１０６は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。
【００５０】
プロセッサ１０２は、二次記憶装置１０８に格納された各種プログラムを読み出して、主記憶装置１０６に展開して実行することで、フィールド装置群１０の対象に応じた制御、および、後述するような各種処理を実現する。チップセット１０４は、プロセッサ１０２と各コンポーネントを制御することで、制御装置１００全体としての処理を実現する。
【００５１】
二次記憶装置１０８には、プロセッサ１０２により実行されるユーザプログラム１５０等の各種のプログラムおよび内部ＤＢ１３０が格納される。
【００５２】
ローカルネットワークコントローラ１１０は、ローカルネットワーク６を介した他の装置との間のデータの遣り取りを制御する。ネットワークコントローラ１１０は、典型的には、ＡＳＩＣやＦＰＧＡといった専用回路を用いて実現される。ＵＳＢコントローラ１１２は、ＵＳＢ接続を介してサポート装置２００との間のデータの遣り取りを制御する。ＵＳＢコントローラ１１２は、典型的には、ＡＳＩＣやＦＰＧＡといった専用回路を用いて実現される。
【００５３】
メモリカードインターフェイス１１４は、メモリカード１１６を着脱可能に構成されており、メモリカード１１６に対してデータを書込み、メモリカード１１６から各種データ（ユーザプログラムまたはトレースデータなど）を読出すことが可能になっている。
【００５４】
内部バスコントローラ１２２は、制御装置１００に搭載されるＩ／Ｏユニット１２４−１，１２４−２，…との間でデータを遣り取りするインターフェイスである。内部バスコントローラ１２２は、典型的には、ＡＳＩＣやＦＰＧＡといった専用回路を用いて実現される。
【００５５】
フィールドバスコントローラ１１８は、第１フィールドネットワーク２を介した他の装置との間のデータの遣り取りを制御する。フィールドバスコントローラ１１８は、典型的には、ＡＳＩＣやＦＰＧＡといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、フィールドバスコントローラ１１８は、主として、プロセッサ１０２、主記憶装置１０６、ストレージなどで構成され、プロセッサ１０２がストレージに格納されたシステムプログラム（ファームウェア）などを読出して、主記憶装置１０６に展開して実行することで、必要な処理を実現する。同様に、フィールドバスコントローラ１２０は、第２フィールドネットワーク４を介した他の装置との間のデータの遣り取りを制御する。フィールドバスコントローラ１２０も、典型的には、ＡＳＩＣやＦＰＧＡといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、フィールドバスコントローラ１２０は、主として、プロセッサ１０２、主記憶装置１０６、ストレージなどで構成され、プロセッサ１０２がストレージに格納されたシステムプログラム（ファームウェア）などを読出して、主記憶装置１０６に展開して実行することで、必要な処理を実現する。
【００５６】
図２の制御装置１００で実行される各種プログラムは、コンピュータ読取可能なメモリカード１１６などの記録媒体を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形で二次記憶装置１０８にインストールするようにしてもよい。また、本実施の形態に係る制御装置１００が提供する機能は、後述するＯＳ（Operating System）１９０が提供するモジュールの一部を利用する形で実現される場合もある。
【００５７】
また、図２では、プロセッサ１０２が上記のプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、制御装置１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００５８】
（ｂ２：サポート装置２００のハードウェア構成例）
次に、本実施の形態に係るサポート装置２００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いてプログラムを実行することで実現される。
【００５９】
図３は、本実施の形態に係る制御システム１を構成するサポート装置２００のハードウェア構成例を示すブロック図である。図３を参照して、サポート装置２００は、ＣＰＵまたはＭＰＵなどのプロセッサ２０２と、光学ドライブ２０４と、主記憶装置２０６と、二次記憶装置２０８と、ＵＳＢ（Universal Serial Bus）コントローラ２１２と、ローカルネットワークコントローラ２１４と、入力部２１６と、表示部２１８とを含む。これらのコンポーネントはバス２２０を介して接続される。
【００６０】
プロセッサ２０２は、二次記憶装置２０８に格納された各種プログラムを読み出して、主記憶装置２０６に展開して実行することで、後述するような各種処理を実現する。
【００６１】
二次記憶装置２０８は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Flash Solid State Drive）などで構成される。二次記憶装置２０８には、典型的には、ユーザプログラム１５０の作成、システム構成の定義、各種パラメータの設定などを行うための開発プログラム２２２と、各種変数を指定するためのパラメータ設定ツール２２４と、制御装置１００で収集されるデータから目的の情報を抽出するためのデータマイニングツール２２６と、タスクのスケジューリング関するデバッグツール２２７と、収集情報２２８とが格納されていてもよい。収集情報２２８は、デバッグのために利用可能な情報であり、制御装置１００においてタスクが実行された場合に収集された情報をまとめたものである。デバッグツール２２７と収集情報２２８の詳細は後述する。また、二次記憶装置２０８には、ＯＳおよび他の必要なプログラムが格納されてもよい。
【００６２】
サポート装置２００は、光学ドライブ２０４を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体２０５（例えば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読取られて二次記憶装置２０８などにインストールされてもよい。
【００６３】
サポート装置２００で実行される各種プログラムは、コンピュータ読取可能な記録媒体２０５を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置２００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００６４】
ＵＳＢコントローラ２１２は、ＵＳＢ接続を介して制御装置１００との間のデータの遣り取りを制御する。ローカルネットワークコントローラ２１４は、任意ネットワークを介した他の装置との間のデータの遣り取りを制御する。
【００６５】
入力部２１６は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。表示部２１８は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ２０２からの処理結果などを出力する。
【００６６】
図３には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００６７】
＜Ｃ．全体処理と機能構成例＞
制御システム１により実施される処理の概要と、制御装置１００が有する機能の概要を説明する。
【００６８】
（ｃ１：全体の処理）
図４は、本実施の形態に係る概略処理のフローチャートである。図４を参照して、制御システム１により実施される全体処理は、まず、制御装置１００においてなされるタスクの実行処理（ステップＳＴ１）およびタスクの実行中に取得される情報を収集する処理（ステップＳＴ２）を含む。さらに、サポート装置２００においてなされる収集情報２２８の統計処理（ステップＳＴ３）および収集情報２２８に基づく表示処理（ステップＳＴ４）を含む。さらに、制御システム１の処理は、デバッグツール２２７によるデバッグ処理（ステップＳＴ５）、およびデバック結果に基づきタスク（プログラム）を制御装置１００において再度実行するための処理（ステップＳＴ６）を含む。
【００６９】
なお、図４では、サポート装置２００が統計処理、収集情報２２８に基づく画像の表示処理、およびデバッグ処理（ステップＳＴ３〜ＳＴ５）を実行するが、これら処理は制御装置１００により実行されてもよい。
【００７０】
（ｃ２：機能構成）
図５は、本実施の形態に係る制御装置１００が備える機能を模式的に示す図である。図５では、制御装置１００のスケジューラ１５１が、二次記憶装置１０８の記憶内容と関連付けて示される。
【００７１】
主記憶装置１０６は、プロセッサ１０２がプログラムを展開して実行するための作業領域Ｅ１を含む。また、二次記憶装置１０８は、内部ＤＢ１３０、タスク実行時に収集される情報を示すログ１３５、およびユーザプログラム１５０を格納する。ユーザプログラム１５０は、ユーザがサポート装置２００を用いて作成可能なプログラムであり、基本的には、制御装置１００のプロセッサ１０２（図２）により実行される。
【００７２】
ユーザプログラム１５０は、フィールド装置群１０のうちの指定された対象のリアルタイム制御を実施するために定周期Ｔ毎に実行されるプライマリ定周期プログラム（制御入力プログラム１６１、制御出力プログラム１６２および高優先制御プログラム１６３）を含む。さらに、ユーザプログラム１５０は、低優先制御プログラム１６４、関連処理プログラム１６５およびシステムサービスプログラム１６６を含む。
【００７３】
制御入力プログラム１６１および制御出力プログラム１６２は、Ｉ／Ｏリフレッシュ処理の機能に相当する。具体的には、制御入力プログラム１６１および制御出力プログラム１６２はフィールド装置群１０との間で遣り取りされるデータ（入力データおよび出力データ）を内部ＤＢ１３０の変数として書込む、または変数を読出す命令を含む。制御装置１００では、これら入力データおよび出力データの各々に対してユニークな変数名が割り当てられており、それぞれの変数名を利用して、フィールド装置群１０と遣り取りされるデータが表現され得る。
【００７４】
高優先制御プログラム１６３は、典型的には、シーケンス／モーションプログラムを含む。シーケンス／モーションプログラムは、内部ＤＢ１３０の変数を読出し、変数に基づく、フィールド装置群１０のうちの制御すべき対象をリアルタイム制御するための論理演算および／または数値演算を行い、その結果を変数に書込む命令を含む。高優先制御プログラム１６３による演算結果を示す変数は、制御出力プログラム１６２を介して、フィールド装置群１０に出力されて、フィールド装置群１０の対象の制御に用いられる。
【００７５】
低優先制御プログラム１６４は、フィールド装置群１０の制御に関するリアルタイム性が要求されるプログラムであって、高優先制御プログラムよりも優先度の低いがリアルタイム性が要求されるプログラムを含む。低優先制御プログラム１６４は、例えば、上記に述べたモーションプログラムに提供する軌道データを生成するための軌道生成プログラムを含む。
【００７６】
関連処理プログラム１６５は、フィールド装置群１０の対象のリアルタイム制御に関連した処理を実施するリアルタイム性が要求されるプログラムであって、例えば特徴量生成プログラムおよび異常検知プログラムを含む。
【００７７】
特徴量生成プログラムは、プロセッサ１０２で実行される。特徴量生成プログラムは、予め指定された特徴量の生成手法に従って、変数のうちの指定された変数を用いて特徴量を生成する命令を含む。例えば、特徴量生成プログラムは、フィールド装置群１０のうちの対象に関連するデータから対象に生じる異常を検知するのに適した特徴量を生成し得る。
【００７８】
異常検知プログラムは、特徴量生成プログラムにより生成される特徴量を用いて異常検知の処理を実施する命令を含む。例えば、異常検知プログラムは、機械学習により設定される異常検知モデルと、特徴量生成プログラムにより生成される特徴量とに基づいて、対象における異常の有無を検出し、異常の有無を学習結果として内部ＤＢ１３０に格納する。また、学習結果は、外部送信されて、外部機器に出力され得る。
【００７９】
システムサービスプログラム１６６は、プロセッサ１０２で実行される。システムサービスプログラム１６６は、リアルタイム性は要求されず、且つフィールド装置群１０の制御とは異なる処理を実施するためのプログラムを含む。システムサービスプログラム１６６は、例えば、制御装置１００の外部機器（サポート装置２００、データロギング装置３００、表示装置４００など）との通信、またはファイルへのデータ書き込みなどの命令を含む。システムサービスプログラム１６６は、例えば、周期的には実行されないプログラムであって、割込みなどのイベントに応じて実行されるようなプログラムを含み得る。
【００８０】
制御装置１００には、プロセッサ１０２がプログラムを実行するための環境を提供するために、ＯＳ１９０もインストールされる。ＯＳ１９０は、マルチタスク実行部１９１を含む。マルチタスク実行部１９１は、ユーザプログラム１５０をタスク単位で、各タスクの優先度に基づく順序に従い、プロセッサ１０２に実行させるためのマルチタスク制御を実現する。
【００８１】
本実施の形態では、プロセッサが実行するタスクは高優先制御タスク１４１、低優先制御タスク１４２、関連処理タスク１４３、およびサービスタスク１４４を含む。なお、タスクの種類はこれらに限定されない。高優先制御タスク１４１と低優先制御タスク１４２は、フィールド装置群１０の対象をリアルタイム制御するための「制御タスク」に相当する。関連処理タスク１４３は、対象のリアルタイム制御には直接関係しないが、上記のリアルタイム制御に関連する処理を実行する「非制御タスク」に相当する。低優先制御タスク１４２およびサービスタスク１４４は、「制御タスク」および「非制御タスク」とは異なるタスクである。
【００８２】
本実施の形態では、ユーザプログラム１５０のうち、例えば、制御入力プログラム１６１、制御出力プログラム１６２および高優先制御プログラム１６３を高優先制御タスク１４１に割当て、低優先制御プログラム１６４を低優先制御タスク１４２に割当てる。また、関連処理プログラム１６５を関連処理タスク１４３に割当て、システムサービスプログラム１６６をサービスタスク１４４に割当てる。
【００８３】
制御装置１００は、さらに、マルチタスク実行部１９１がタスクを実行するために参照（読出）するタスク制御情報１３１、システム変数、閾値１５２Ａおよび優先度情報１５２Ｂを有する。これら情報は、主記憶装置１０６に格納される。また、制御装置１００は、後述するマルチコア動作モードで用いられるコア情報１３６を含む。コア情報１３６の詳細は後述する。
【００８４】
システム変数は、タスクの実行を制御するためのタスク状態変数を含む各種の変数を含む。タスク状態変数は、各タスクの後述する状態遷移に従い、当該タスクの実行状態を示す状態フラグＦＬを含む。状態フラグＦＬは、マルチタスク実行部１９１により書込まれる値であって、例えばタスクの状態遷移に従い、‘００’（実行前状態）、‘０１’（実行状態且つ実行中）、‘１０’（実行状態且つサスペンド（実行中断））および‘１１’（実行完了状態）のいずれかの値が書込まれる。なお、タスクの状態遷移については、図６で後述する。
【００８５】
タスク制御情報１３１は、各タスクに対応してタスク名１３２、優先度１３３および当該タスクに割当てられているプログラムのプログラム名１３４を含む。閾値１５２Ａは、第１時間Ｔ１と第２時間Ｔ２（＞第１時間Ｔ１）を含む。第１時間Ｔ１は、関連処理タスク１４３の関連処理プログラム１６５をリアルタイムに実行するための実行時間の制限時間に相当する。優先度情報１５２Ｂは、関連処理タスク１４３の優先度である高優先度ＰＨと低優先度ＰＬ（高優先度よりも低い優先度）とを含む。
【００８６】
スケジューラ１５１は、各タスクの優先度、すなわちプロセッサ１０２による当該タスクの実行順序を可変に設定する命令を含むプログラムにより実現される。スケジューラ１５１のプログラムは、二次記憶装置１０８に格納されて、プロセッサ１０２は二次記憶装置１０８からプログラムを読出し、主記憶装置１０６に展開し実行する。
【００８７】
＜Ｄ．タスクの状態遷移＞
本実施の形態では、マルチタスク実行部１９１は、タスクを、実行状態、実行前状態および実行完了状態の３つの状態を遷移させながら実行する。実行状態は、プロセッサ１０２などの資源が割当られており、実行中の状態を示す。実行前状態は、実行状態に遷移する前の状態であって、具体的には、資源の割当てがあれば、実行を開始できる実行可能状態を示す。実行完了状態は、実行が完了した状態であって、実行可能状態に遷移するための何らかの事象を待つ状態を示す。
【００８８】
プロセッサ１０２は、１つのプロセッサコアを有する場合に、マルチタスク実行部１９１により、ある時点でプロセッサ１０２（プロセッサコア）の資源が割当てられて実行状態となるタスクは１つである。マルチタスク実行部１９１は、実行前状態のタスクの中から次に資源を割当てるタスクを選択し、選択されたタスクを実行状態に遷移させる。この選択は、各タスクが有する優先度に従い実施される。
【００８９】
図５に戻り、スケジューラ１５１は、カウンタ１５３Ｂを含む優先度切替部１５３、タスク制御情報１３１を設定する命令を含むタスク情報設定部１５４、および関連処理タスク１４３の実行開始を指示するための実行開始指示をマルチタスク実行部１９１に出力する命令を含む実行指示部１５７を備える。カウンタ１５３Ｂは、タイマ１０１に出力に同期したカウント動作することにより、関連処理タスク１４３の実行時間を計測する。また、スケジューラ１５１は、優先度切替部１５３からのモニタ情報１５３Ａに基づき、関連処理タスク１４３の優先度が切替えられた回数および実行時間などの情報を収集する命令を含む収集部１５５、および閾値１５２Ａ，優先度情報１５２Ｂを設定する命令を含む設定部１５２を備える。さらに、スケジューラ１５１が、後述するマルチコア動作モードを起動されるコア切替部１５６を含む。スケジューラ１５１のこれら各部はプログラムにより実現されて、プロセッサ１０２がこれらプログラムを実行する。
【００９０】
（ｄ１：関連処理タスク１４３の優先度切替え）
本実施の形態では、スケジューラ１５１の優先度切替部１５３は、非制御タスクについて、当該タスクの実行時間に応じた優先度の切替え（調整）を実施する。本実施の形態では、このような優先度の調整がなされる非制御タスクとして、関連処理タスク１４３を例示するが、このタスクに限定されない。
【００９１】
実施の形態では、「制御タスク」である高優先制御タスク１４１の優先度は最優先に設定される。低優先制御タスク１４２、「非制御タスク」およびサービスタスク１４４の優先度は、高優先制御タスク１４１の優先度よりも低く設定される。例えば、関連処理タスク１４３の優先度は、「第１優先度」に対応する高優先度ＰＨまたは「第２優先度」に対応する低優先度ＰＬのいずれか一方に設定され得る。優先度切替部１５３は、カウンタ１５３Ｂが計測する関連処理タスク１４３の実行時間を閾値１５２Ａと比較し、比較の結果に基づき優先度を、高優先度ＰＨまたは低優先度ＰＬの一方に変更する（切替する）命令を含む。
【００９２】
図６は、本実施の形態に係る関連処理タスク１４３の状態遷移を模式的に示す図である。図６に示すように、マルチタスク実行部１９１は、定周期トリガ（Trigger）に同期して、関連処理タスク１４３を実行前状態から実行状態に遷移させることが可能である。ＯＳ１９０は、周期Ｔの開始に同期して定周期トリガ（Trigger）を出力する。
【００９３】
優先度切替部１５３は、関連処理タスク１４３が実行状態にある時間を、すなわち関連処理タスク１４３に対応の状態フラグＦＬが実行状態を示す（ＦＬ＝‘０１’または‘１０’）時間を、カウンタ１５３Ｂにより計測する。優先度切替部１５３は、関連処理タスク１４３の優先度１３３が‘高優先度ＰＨ’を示す場合は、計測された実行時間を第１時間Ｔ１と比較する。比較の結果が（実行時間＞第１時間Ｔ１）である場合は、優先度切替部１５３は、タスク制御情報１３１における関連処理タスク１４３に対応の優先度１３３を、高優先度ＰＨから低優先度ＰＬに書換える。また、優先度切替部１５３は、関連処理タスク１４３の優先度１３３が‘低優先度ＰＬ’を示す場合は、計測された実行時間を第２時間Ｔ２と比較する。比較の結果が（実行時間＞第２時間Ｔ２）である場合は、優先度切替部１５３は、タスク制御情報１３１における関連処理タスク１４３に対応の優先度１３３を、低優先度ＰＬから高優先度ＰＨに書換える。
【００９４】
このように、関連処理タスク１４３の優先度は、前回の実行状態で関連処理タスク１４３の実行に要した時間（実行時間）に基づき切替えられ得る。
【００９５】
（ｄ２：関連処理タスク１４３の実行状態への遷移の指示）
図７は、本実施の形態に係る関連処理プログラム１６５の構成を模式的に示す図である。図７では、関連処理プログラム１６５の構成として、異常検知プログラムおよび特徴量生成プログラムが並列に示されて、各プログラムに対応して符号ＣＮの接点が示される。接点ＣＮは、対応のプログラムの実行有無を指定する。
【００９６】
実行指示部１５７は、関連処理タスク１４３の実行を開始するための実行開始条件が成立したと判断したとき、実行開始指示をマルチタスク実行部１９１に出力する。
【００９７】
図７を参照し、上記の実行開始条件を説明する。図７は、例えば、図示しない他のタスクが実行されたときに、他のタスクから出力された命令指示により、特徴量生成プログラムに対応の接点が選択された状態が示される。スケジューラ１５１の実行指示部１５７は、定周期トリガ（Trigger）を受付けた場合に、上記の命令指示を受付けると、関連処理タスク１４３の実行開始指示を、マルチタスク実行部１９１に出力する。マルチタスク実行部１９１は、実行指示部１５７から実行開始指示を受付けると、関連処理タスク１４３を実行前状態から実行状態に遷移させる。
【００９８】
このように、実行指示部１５７は、図６に示した定周期トリガ（Trigger）または、制御プログラムからの命令指示、または変数値をもとにしたイベントによる自動指示、またはこれらの組合せを含み得る指示を受付けたとき、関連処理タスク１４３の実行開始条件が成立したことを判断する。
【００９９】
（ｄ３：関連処理タスク１４３の実行状態への遷移と状態フラグＦＬの設定）
マルチタスク実行部１９１は、実行指示部１５７から実行開始指示を受付けたとき、関連処理タスク１４３を実行状態へ遷移させる。具体的には、マルチタスク実行部１９１は、タスク制御情報１３１から、関連処理タスク１４３に対応のプログラム名１３４を読出す。マルチタスク実行部１９１は、読出されたプログラム名１３４に基づき二次記憶装置１０８から関連処理プログラム１６５を読出し、関連処理プログラム１６５を主記憶装置１０６に展開することで、実行開始を可能に設定する。これにより、関連処理タスク１４３は、実行前状態から実行状態に遷移する。
【０１００】
また、マルチタスク実行部１９１は、関連処理タスク１４３を実行前状態から実行状態に遷移させたとき、関連処理タスク１４３に対応の状態フラグＦＬをセットする。具体的には、関連処理タスク１４３が実行状態に遷移したときに、プロセッサ１０２が他のタスクを実行していなければ、マルチタスク実行部１９１は、プロセッサ１０２に関連処理タスク１４３をすぐに実行させて、状態フラグＦＬを‘００’→‘０１’にセットする。
【０１０１】
一方、関連処理タスク１４３が実行状態に遷移したときに、プロセッサ１０２が他のタスクを実行中であれば、すなわち同じ優先度の他のタスクが実行中であるときは、マルチタスク実行部１９１は、関連処理タスク１４３の実行を中断（サスペンド）し、状態フラグＦＬを‘００’→‘１０’にセットする。この場合、その後、他のタスクが実行中断すると、マルチタスク実行部１９１は、プロセッサ１０２に関連処理タスク１４３を実行させて、関連処理タスク１４３に対応の状態フラグＦＬを‘１０’→‘０１’にセットする。このように、関連処理タスク１４３の優先度と同じ優先度である他のタスクが実行状態に遷移し得る場合には、両タスクは予め定められた時間毎に交互に実行中→実行中断を繰返す（以下、交互実行ともいう）ことにより、実行状態を維持することが可能となる。
【０１０２】
その後、関連処理タスク１４３の実行が完了した場合は、マルチタスク実行部１９１は、関連処理タスク１４３を実行状態から実行完了状態に遷移させるとともに、関連処理タスク１４３に対応の状態フラグＦＬを‘１１’にセットする。
【０１０３】
このように、関連処理タスク１４３の状態フラグＦＬの値により、関連処理タスク１４３が実行前状態、実行状態（実行中または実行中断）および実行完了状態のいずれに在るかを示すことができる。カウンタ１５３Ｂは、関連処理タスク１４３の状態フラグＦＬが‘０１’または‘１０’である時間を計測することにより、関連処理タスク１４３の実行時間を計測する。
【０１０４】
＜Ｅ．タスクに関する情報の設定＞
実施の形態では、ユーザは、各タスクについて、優先度および当該タスクに割当てるプログラムを設定または変更することができる。
【０１０５】
図８は、本実施の形態に係るタスクに優先度を設定するためのユーザインターフェイスを示す図である。図９は、本実施の形態に係るタスクにプログラムを割当てるユーザインターフェイスを示す図である。図８と図９のユーザインターフェイスは、サポート装置２００の表示部２１８の表示画面として提供される。
【０１０６】
本実施の形態では、タスクの優先度に関して、高優先制御タスク１４１は、ユーザプログラム１５０のタスクの中で最も高い優先度（最も実行順序が先である）を有し、固定である。ユーザプログラム１５０の他の各タスクの優先度は、高優先制御タスク１４１よりも低くなるように可変に設定することができる。ユーザは、また、図８のユーザインターフェイスを介して、高優先制御タスク１４１を除く他のタスクの優先度を設定することができる。
【０１０７】
図８の画面では、各タスクについて、ユーザは、「タスクのタイプと優先度」、「タスク名」、「トリガの周期」、および「周期オーバ検知有無」の各項目を、入力部２１６を操作して設定することができる。なお、本実施の形態では、図８に示すように、プライマリ定周期タスクである高優先制御タスク１４１については、例えば、優先度‘４’で１msec毎に実行されるようデフォルト（固定値）が設定されている。
【０１０８】
ユーザは、「制御タスク」を除く他のタスクについては任意に設定することができる。図８では、ユーザは、例えば、関連処理タスク１４３について、優先度として高優先度ＰＨとして‘８’および低優先度ＰＬとして‘１８’を設定し、トリガ周期として‘１０msec’を設定し、周期オーバ検知の欄では、第１時間Ｔ１として‘２msec’および第２時間Ｔ２として‘１０ｍsec’を設定する。なお、第１時間Ｔ１および第２時間Ｔ２は、これらの値に限定されない。例えば、ユーザは、第１時間Ｔ１および第２時間Ｔ２を、関連処理タスク１４３に要求されているリアルタイム性（タスクが実行開始されてから、予め定められた時間内に実行が終了する）に従い、当該予め定められた時間の許容範囲（例えば、上限の制限値と下限の制限値等）として設定することができる。
【０１０９】
また、図９では、ユーザは、各タスクに割当てるプログラムを設定することができる。本実施の形態では、タスクに対して基本的に１つのプログラムを割当てるが、２つ以上のプログラムを割当ててもよい。例えば、図９では、関連処理タスク１４３であるタスクＲＴＳ１に、関連性のあるプログラムProgram0、Program1、Program2（特徴量生成プログラム、異常検知プログラム等）が割当てられている。
【０１１０】
サポート装置２００は、図８と図９のユーザインターフェィスにより設定された情報を、制御装置１００に転送する。制御装置１００の設定部１５２は、サポート装置２００から受信した情報のうち、関連処理タスク１４３に対応の高優先度ＰＨおよび低優先度ＰＬの値を優先度情報１５２Ｂに設定する。また、タスク情報設定部１５４は、サポート装置２００から受信した情報に基づき、タスク制御情報１３１の各タスクに対応したタスク名１３２、優先度１３３およびプログラム名１３４を設定する。
【０１１１】
＜Ｆ．タスクの管理＞
本実施の形態に係る制御装置１００は、シングルコア動作モードとマルチコア動作モードを有し、各動作モードにおいてタスクの実行を管理する。具体的には、プロセッサ１０２は１または複数のコアプロセッサを有する。シングルコア動作モードは、１つのコアプロセッサを用いてタスクを実行するモードを示し、マルチコア動作モードは２つ以上のコアプロセッサを用いてタスクを実行するモードを示す。制御装置１００の動作モードは切替え可能である。まず、シングルコア動作モードを説明する。
【０１１２】
図１０は、本実施の形態に係る関連処理タスクの実行を管理する処理を示すフローチャートである。図１０では、スケジューラ１５１により関連処理タスク１４３の実行を管理するための管理処理ＰＲが、マルチタスク実行部１９１による高優先制御タスク１４１と関連処理タスク１４３の実行を制御する処理と関連付けて示される。
【０１１３】
マルチタスク実行部１９１による高優先制御タスク１４１と関連処理タスク１４３の実行を制御する処理は、ＯＳ１９０の一部を含むプログラムとして主記憶装置１０６に格納されている。また、スケジューラ１５１による管理処理ＰＲは、プログラムとして二次記憶装置１０８に格納されている。プロセッサ１０２は、これらプログラムを主記憶装置１０６または二次記憶装置１０８から読出し実行する。なお、本実施の形態では、プロセッサ１０２は、管理処理ＰＲのプログラムを定期的に実行する。
【０１１４】
図１０を参照して、周期Ｔが開始されると、プロセッサ１０２は、タスク制御情報１３１のタスクのうち、優先度１３３が最も高い高優先制御タスク１４１を実行する。具体的には、高優先制御タスク１４１の制御入力プログラム１６１はフィールド装置群１０から入力するデータを内部ＤＢ１３０の入力変数に設定する（ステップＳ１、Ｓ２）。また、高優先制御プログラム１６３は内部ＤＢ１３０の入力変数のデータに基づく演算を実行し、フィールド装置群１０の対象を制御するための制御データを内部ＤＢ１３０の出力変数に書込む（ステップＳ３、Ｓ２）。制御出力プログラム１６２は、ステップＳ２で設定された出力変数が示す制御データを読出し、対象を制御するために出力する。
【０１１５】
（ｆ１：関連処理タスク１４３の高優先度に基づく管理）
上記に述べた高優先制御タスク１４１の実行が終了すると、スケジューラ１５１は、それ以外のタスクが優先度に従い実行されるようにスケジューリングを実施する。ここでは、タスク制御情報１３１には、関連処理タスク１４３に対応の優先度１３３は初期値として「高優先度ＰＨ」が設定されており、この「高優先度ＰＨ」は高優先制御タスク１４１の優先度の次に高い優先度であるとする。
【０１１６】
なお、この初期値の設定は、タスク情報設定部１５４により実施される。具体的には、例えばシステムが初期化（より特定的には制御装置１００の初期化）された後に、実行指示部１５７が関連処理タスク１４３の実行開始条件の成立を最初に判断したとき、タスク情報設定部１５４は、上記の初期値設定を実施する。
【０１１７】
管理処理ＰＲにおいて、スケジューラ１５１は、周期Ｔに同期した定周期トリガの出力（ステップＳ６）を受付けた場合において、実行指示を受付けたとき実行指示部１５７は上記の実行開始条件が成立したことを判断する（ステップ２１）。実行開始条件が成立したとき、スケジューラ１５１は、関連処理タスク１４３の状態管理を開始する（ステップＳ２３）。この実行指示は、高優先制御タスク１４１の処理（ステップＳ３）からの命令指示、または高優先制御タスク１４１による変数値をもとにしたイベント処理（ステップＳ７）からの自動指示を含む。
【０１１８】
関連処理タスク１４３の状態管理が開始されると、スケジューラ１５１は、状態フラグＦＬに基づき関連処理タスク１４３が実行状態であるか否かを判断する（ステップＳ２５）。この時点では、関連処理タスク１４３は実行されていないので状態フラグＦＬは‘００’を示す。
【０１１９】
スケジューラ１５１は、状態フラグＦＬに基づき関連処理タスク１４３は実行状態ではないと判断すると（ステップＳ２５でＮＯ）、実行指示部１５７は実行開始指示をマルチタスク実行部１９１に出力する（ステップＳ２７）。実行開始指示がマルチタスク実行部１９１に出力されると、カウンタ１５３Ｂは関連処理タスク１４３の実行時間の計測を開始する（ステップＳ２９）。その後、スケジューラ１５１は管理処理ＰＲを完了し（ステップＳ３１）、ステップＳ２３に戻る。
【０１２０】
マルチタスク実行部１９１は、スケジューラ１５１からの実行開始指示に基づき、タスク制御情報１３１における関連処理タスク１４３に対応の優先度１３３（この優先度は「高優先度ＰＨ」を示す）に基づき、関連処理タスク１４３を実行開始するべきタスクとして選択し、関連処理タスク１４３を実行前状態から実行状態に遷移させる。すなわち、マルチタスク実行部１９１は、関連処理タスク１４３に対応の状態フラグＦＬを‘００’→‘０１’に変更する（ステップＳ４１）。プロセッサ１０２は、スケジューラ１５１が選択した関連処理タスク１４３を実行する。具体的には、タスク制御情報１３１に基づき、関連処理タスク１４３に対応のプログラム名１３４が示す関連処理プログラム１６５を実行する（ステップＳ４５）。
【０１２１】
管理処理ＰＲに戻り、スケジューラ１５１は、状態フラグＦＬに基づき、関連処理タスク１４３は実行状態であると判断すると（ステップＳ２５でＹＥＳ）、優先度切替部１５３は、カウンタ１５３Ｂが計測する関連処理タスク１４３の実行時間と、閾値１５２Ａの時間とを比較する（ステップＳ３３）。具体的には、優先度切替部１５３は、閾値１５２Ａの第１時間Ｔ１と第２時間Ｔ２のうち、比較されるべき時間を、関連処理タスク１４３の優先度１３３に基づき決定する。ここでは、関連処理タスク１４３の優先度１３３は、高優先度ＰＨを示す。したがって、優先度切替部１５３は第１時間Ｔ１を決定し、関連処理タスク１４３の実行時間と第１時間Ｔ１とを比較する。
【０１２２】
優先度切替部１５３は、上記の比較の結果に基づき（実行時間＞第１時間Ｔ１）の条件が成立する、すなわち実行時間が第１時間よりも長くなった（超過した）と判断したとき（ステップＳ３３でＹＥＳ）、優先度切替部１５３は、実行時間が第１時間Ｔ１を超えたことを示す超過通知をマルチタスク実行部１９１に出力するとともに、優先度切替処理を実施する（ステップＳ３５）。優先度切替処理において、優先度切替部１５３は、タスク制御情報１３１の関連処理タスク１４３の優先度１３３を、優先度情報１５２Ｂの低優先度ＰＬに変更する。その後、管理処理ＰＲを完了し（ステップＳ３１）、ステップＳ２３に戻る。
【０１２３】
また、優先度切替部１５３は、上述の（実行時間＞第１時間Ｔ１）の条件が成立しないと判断したとき（ステップＳ３３でＮＯ）、すなわち実行時間は第１時間Ｔ１を超えていないと判断したときは、処理を完了し（ステップＳ３１）、ステップＳ２３に戻る。
【０１２４】
マルチタスク実行部１９１は、プロセッサ１０２による関連処理タスク１４３の実行が終了すると、関連処理タスク１４３を実行状態から実行完了状態に遷移させる。すなわち、関連処理タスク１４３の状態フラグＦＬを‘０１’→‘１１’にリセットする（ステップＳ４９）。また、関連処理タスク１４３は、処理結果（特徴量生成プログラムまたは異常検知プログラムの実行結果）を内部ＤＢ１３０の学習結果に設定する（ステップＳ４７、Ｓ２）。
【０１２５】
マルチタスク実行部１９１は、優先度切替部１５３から上述の超過通知を受付けると、超過通知対処処理を実施し（ステップＳ４３）、ステップＳ４５に移行する。この超過通知対処処理では、マルチタスク実行部１９１は、例えば、関連処理タスク１４３の実行を中断するか否かの判断処理を実施する。なお、超過通知対処処理の内容は、この判断処理に限定されない。
【０１２６】
（ｆ２：関連処理タスク１４３の低優先度に基づく管理）
上記の高優先度に基づく処理が実施された後に、スケジューラ１５１が、次の定周期トリガを受付けた場合において、タスク制御情報１３１の関連処理タスク１４３に対応の優先度１３３が低優先度ＰＬを示すケースを説明する。このケースは、例えば、上記に述べたステップＳ３５において、優先度切替部１５３により関連処理タスク１４３の優先度１３３が低優先度ＰＬに変更されたケースである。
【０１２７】
なお、この「低優先度ＰＬ」は高優先制御タスク１４１の優先度の次に高い優先度であるとする。また、関連処理タスク１４３の優先度１３３（低優先度ＰＬ）は、低優先制御タスク１４２の優先度１３３と同じであるとする。
【０１２８】
スケジューラ１５１は、関連処理タスク１４３の実行指示を受付けて実行開始条件が成立したことを判断する（ステップＳ２１、Ｓ２３）。次に、スケジューラ１５１は状態フラグＦＬに基づき関連処理タスク１４３が実行状態ではないと判断し（ステップＳ２５でＮＯ）、実行指示部１５７は、マルチタスク実行部１９１に実行開始指示を出力する（ステップＳ２７）。マルチタスク実行部１９１は、実行開始指示を受付けると関連処理タスク１４３をプロセッサ１０２に実行させる。具体的には、マルチタスク実行部１９１は、タスク制御情報１３１の優先度１３３に従い、関連処理タスク１４３と低優先制御タスク１４２を選択し、両者を実行前状態から実行状態に遷移させるとともに、カウンタ１５３Ｂは関連処理タスク１４３の実行時間の計測を開始する（ステップＳ４１、Ｓ４５、Ｓ２９）。その後、関連処理タスク１４３の実行が終了すると、関連処理タスク１４３の状態フラグＦＬのリセット（ステップＳ４９）および関連処理タスク１４３の実行結果の処理（ステップＳ４７）が行われる。
【０１２９】
ここでは、２つのタスク（すなわち、低優先制御タスク１４２と関連処理タスク１４３）が交互実行されるが、カウンタ１５３Ｂは、関連処理タスク１４３の状態フラグＦＬの値に基づき、交互実行において実行中断（サスペンド）の時間を含めて、関連処理タスク１４３の実行時間を計測する。
【０１３０】
ステップＳ３３に戻る。優先度切替部１５３は、カウンタ１５３Ｂが計測する関連処理タスク１４３の実行時間を、閾値１５２Ａの時間と比較する（ステップＳ３３）。具体的には、優先度切替部１５３は、閾値１５２Ａの第１時間Ｔ１と第２時間Ｔ２のうち、比較されるべき時間を、関連処理タスク１４３の優先度１３３に基づき決定する。ここでは、関連処理タスク１４３の優先度１３３は低優先度ＰＬを示す。したがって、優先度切替部１５３は第２時間Ｔ２を決定し、関連処理タスク１４３の実行時間を第２時間Ｔ２と比較する。
【０１３１】
優先度切替部１５３は、上記の比較の結果に基づき（実行時間＞第２時間Ｔ２）の条件が成立する、すなわち実行時間が第２時間Ｔ２よりも長くなった（超過した）と判断したとき（ステップＳ３３でＹＥＳ）、優先度切替部１５３は、実行時間が第２時間Ｔ２を超えたことを示す超過通知をマルチタスク実行部１９１に出力するとともに、優先度切替処理を実施する（ステップＳ３５）。優先度切替処理において、優先度切替部１５３は、タスク制御情報１３１の関連処理タスク１４３の優先度１３３を、優先度情報１５２Ｂの高優先度ＰＨに変更する。その後、管理処理ＰＲを完了し（ステップＳ３１）、ステップＳ２３に戻る。
【０１３２】
なお、優先度切替処理は、図１０では、実行時間が第１時間Ｔ１または第２時間Ｔ２を超えたときに実施した（ステップＳ３５）が、実施の時期はこれに限定されない。例えば、関連処理タスク１４３の実行開始条件が成立したときに優先度切替処理が実施されてもよい。このケースは、関連処理タスク１４３の実行時間が第１時間Ｔ１または第２時間Ｔ２を超えた場合は、その後に関連処理タスク１４３の実行開始条件が成立したときに、優先度切替部１５３は、タスク制御情報１３１の関連処理タスク１４３の優先度１３３を、優先度情報１５２Ｂの高優先度ＰＨまたは低優先度ＰＬに設定する。
【０１３３】
（ｆ３：関連処理タスク１４３の優先度切替えによる利点）
図１０のスケジューラ１５１の管理処理ＰＲによれば、関連処理タスク１４３の実行時間が第１時間Ｔ１を超えない間は、高優先度ＰＨが維持される。したがって、リアルタイム性を維持しながら関連処理を実行することができて、例えば実行時間毎に得られる関連処理（異常検知処理等）の結果を用いた対象のリアルタイム制御を実現することが可能となる。また、実行時間が第１時間Ｔ１を超えると関連処理タスク１４３の優先度を低くすることで他のタスク、例えば、他の制御タスクである低優先制御タスク１４２が優先的に実行可能となるので、低優先制御タスク１４２の実行結果（モーション制御の軌道データ）を用いた対象の確実なリアルタイム制御が可能となる。したがって、制御タスクによる対象のリアルタイム制御の実現を保証しながら、非制御タスクによるリアルタイムな関連処理の実行も実現することが可能となる。
【０１３４】
また、同じ優先度の他のタスクと交互実行がなされた結果、関連処理タスク１４３の実行時間が閾値１５２Ａを超える場合は、関連処理タスク１４３の優先度が変更されるので、その後は、交互実行を回避することが可能となり、閾値を超えない実行時間で、関連処理タスク１４３を実行完了させることが可能となる。また、他のタスクも交互実行が解消されることで実行時間が短くなり、他のタスクが例えば低優先制御タスク１４２であれば、その実行結果（モーション制御の軌道データ）を用いた対象のリアルタイム制御がより確実に実現可能となる。
【０１３５】
また、交互実行がなされない場合であっても、関連処理タスク１４３の実行時間が閾値１５２Ａを超えるときは、関連処理タスク１４３の実行によりプロセッサ資源が比較的に長時間にわたり占有状態となり、他のタスクの実行が妨げられる。この点に関し、関連処理タスク１４３の実行時間が第２時間Ｔ２を超えるときは、スケジューラ１５１は、低優先度ＰＬ→高優先度ＰＨと高くすることで、関連処理タスク１４３を早く実行完了させて、他のタスクである例えば低優先制御タスク１４２に、早い時期に資源を開放することが可能となる。また、関連処理タスク１４３の実行時間が第１時間Ｔ１を超えるときは、スケジューラ１５１は、高優先度ＰＨ→低優先度ＰＬと低くすることで、より優先度の高い他のタスクに資源を開放することができる。これにより、例えば、他のタスクが、モーション制御の軌道計算のための低優先制御タスク１４２であれば、高優先制御タスク１４１のモーションプログラムに速やかに軌道データを出力することが可能となり、対象のリアルタイム制御をより確実に実施することが可能となる。
【０１３６】
＜Ｇ．関連処理タスク１４３のスケジューリングモデル＞
図１０の管理処理ＰＲによる関連処理タスク１４３の実行の管理を、タスク実行のスケジューリングモデルを用いて、さらに説明する。図１１（Ａ）と（Ｂ）は、本実施の形態に係る関連処理タスク１４３のスケジューリングモデルを示す図である。図１２は、図１１に関連付けて関連処理タスク１４３の優先度切替を例示する図である。図１１の縦軸は、タスクの優先度を示し、横軸はｎ番目の周期Ｔ、（ｎ＋１）番目の周期Ｔ、（ｎ＋２）番目の周期、（ｎ＋３）番目の周期・・・とした時間経過を示す。
【０１３７】
本実施の形態では、関連処理タスク１４３の高優先度ＰＨは低優先制御タスク１４２等の他のタスクの優先度以下となり得る。例えば、図１１（Ａ）は、関連処理タスク１４３の高優先度ＰＨが低優先制御タスク１４２の優先度と同じケースである。また、本実施の形態では、関連処理タスク１４３の低優先度ＰＬは低優先制御タスク１４２等の他のタスクの優先度以上となり得る。例えば、図１１（Ｂ）は、関連処理タスク１４３の優先度が低優先度ＰＬである場合の例（１）と例（２）のケースを示す。図１１（Ｂ）の例（１）は、関連処理タスク１４３の低優先度ＰＬが、低優先制御タスク１４２の優先度とサービスタスク１４４の優先度との間の値を示すケースである。例（２）は、関連処理タスク１４３の低優先度ＰＬが、低優先制御タスク１４２の優先度よりも低く、且つサービスタスク１４４の優先度と同じケースである。
【０１３８】
（ｇ１：関連処理タスク１４３が高優先度の場合のスケジューリングモデル）
図１１（Ａ）を参照して、各周期Ｔはタイマ１０１の出力に同期した周期開始信号に応じて開始する。このとき、タスク制御情報１３１には、図１２（Ａ）のように各タスクに優先度が設定されているとする。設定周期Ｔが開始されると、まず、最も優先度の高い高優先制御タスク１４１（制御入力プログラム１６１、制御出力プログラム１６２および高優先制御プログラム１６３）が実行されて、その後に、図１２（Ａ）のタスク制御情報１３１の高優先度（＝１６）に従い、マルチタスク実行部１９１は、同じ優先度１３３である低優先制御タスク１４２と関連処理タスク１４３が交互実行する。関連処理タスク１４３の実行時間ｔ（図１１（Ａ）参照）は、交互実行における実行中断の時間（すなわち、低優先制御タスク１４２が実行中の時間）も含んで計測されている。
【０１３９】
図１１（Ａ）の実行時間ｔが（ｔ≦第１時間Ｔ１）である場合は、優先度切替部１５３は優先度切替処理を実施しないので、関連処理タスク１４３の優先度１３３は図１２（Ａ）の高優先度のままである。一方、図１１（Ａ）の実行時間ｔが（ｔ＞第１時間Ｔ１）である場合は、優先度切替部１５３は優先度切替処理を実施する。これにより、関連処理タスク１４３の優先度１３３は図１２（Ａ）から図１２（Ｂ）または図１２（Ｃ）に示される低優先度（＝４８）に切替わる。
【０１４０】
（ｇ２：関連処理タスク１４３が低優先度の場合のスケジューリングモデル）
図１１（Ｂ）の例（１）を参照して、図１２（Ｂ）に示すように関連処理タスク１４３が低優先度ＰＬの場合を説明する。図１１（Ａ）と同様に、まず、高優先制御タスク１４１が実行されて、その後に他のタスクが実行される。この場合、図１２（Ｂ）のタスク制御情報１３１によれば、低優先制御タスク１４２の優先度は関連処理タスク１４３の優先度よりも高い。したがって、マルチタスク実行部１９１は、低優先制御タスク１４２を実行し、次の優先度である関連処理タスク１４３を実行する。
【０１４１】
例（１）では、実行時間ｔは（ｔ＞第２時間Ｔ２）であるとすれば、優先度切替部１５３は優先度切替処理を実施する。これにより、関連処理タスク１４３の優先度１３３は、図１２（Ａ）のタスク制御情報１３１が示す元の高優先度に戻る。
【０１４２】
図１１（Ｂ）の例（２）を参照して、図１２（Ｃ）に示すように関連処理タスク１４３が低優先度の場合を説明する。例（２）でも図１１（Ａ）と同様に、まず、高優先制御タスク１４１が実行されて、その後に他のタスクが実行される。この場合、図１２（Ｃ）のタスク制御情報１３１によれば、低優先制御タスク１４２の優先度は関連処理タスク１４３の優先度よりも高く、且つ関連処理タスク１４３の優先度はサービスタスク１４４の優先度と同じである。したがって、マルチタスク実行部１９１は、低優先制御タスク１４２を実行し、次に同じ優先度である関連処理タスク１４３とサービスタスク１４４を交互実行する。
【０１４３】
例（２）では、関連処理タスク１４３の実行時間ｔは（ｔ＞第２時間Ｔ２）であるとすれば、優先度切替部１５３は優先度切替処理を実施する。これにより、関連処理タスク１４３の優先度１３３は図１２（Ａ）のタスク制御情報１３１が示す元の高優先度に戻るように切替えられる。
【０１４４】
＜Ｈ．関連処理タスク１４３の他の例＞
上記に述べた関連処理タスク１４３は、リアルタイム制御のための高優先制御タスク１４１に関連する処理として特徴量生成処理および異常検知処理が割当てられるが、関連処理タスク１４３に割当てられる処理は、制御装置１００内において実施される通信処理も含まれる。この通信処理は、具体的には、特徴量生成処理または異常検知処理に関連するデータを、二次記憶装置１０８を含む各種装置と通信する処理を含み得る。
【０１４５】
また、上記の特徴量生成処理または異常検知処理に関連するデータは、特徴量を生成するためにフィールド装置群１０から受付ける生（raw）データ、特徴量生成処理の結果（生成された特徴量など）、異常検知の結果などを含むが、これらに限定されない。特徴量生成処理の結果および異常検知の結果の通信処理は、二次記憶装置１０８との通信、およびローカルネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４などを介した外部装置との通信を含み得る。また、生（raw）データおよび異常検知の結果の通信処理は、内部バスコントローラ１２２と、フィールドバスコントローラ１１８，１２０と、Ｉ／Ｏユニット１２４−１，１２４−２，…などを介した外部装置との通信を含み得る。
【０１４６】
＜Ｉ．タスクに関する情報の設定の他の例＞
図８と図９で述べたタスクに関する情報の設定の他の例を説明する。図１３は、本実施の形態に係る複数の関連処理タスクに優先度と閾値を設定する例を示す図である。図５では、設定部１５２は、優先度情報１５２Ｂと閾値１５２Ａを個別に設定したが、図１３のように１つのテーブル形式で設定するとしてもよい。
【０１４７】
図１３では、例えば、関連処理タスク１４３が複数のタスクＲＴＳ１とＲＴＳ２を含む場合が示される。図１３では、設定部１５２により、各タスクＲＴＳに対応して、優先度（高優先度ＰＨ、低優先度ＰＬ）と閾値（第１時間Ｔ１と第２時間Ｔ２）がテーブル形式で設定される。
【０１４８】
図１４は、本実施の形態に係る複数の関連処理タスクに対するプログラムの割当て方法を示す図である。図１４の下段は、関連処理タスクへのプログラムの割当を実施するためのユーザインターフェイスとしての画面例を示す。画面は、サポート装置２００の表示部２１８に表示される。開発プログラム２２２は、関連処理プログラム１６５の構造を解析し、解析の結果に基づき、関連処理プログラム１６５に含まれる複数のプログラム（特徴量生成プログラムおよび異常検知プログラム）を抽出して表示する。
【０１４９】
ユーザは、入力部２１６を操作して、図１４の画面から、関連処理タスク１４３に割当てるプログラムを設定する。図１４の上段では、関連処理タスク１４３として３つのタスクＲＴＳ１〜ＲＴＳ３を設定することが可能である場合に、各タスクに対応して、ユーザが、異常検知プログラムまたは特徴量生成プログラムを割当てた（設定した）状態が示される。
【０１５０】
このように、図１４の下段で示す関連処理プログラム１６５のプログラム構成情報を、ユーザが各タスクに割当てるプログラムを判断するための支援情報として提供することができる。
【０１５１】
＜Ｊ．収集情報とデバッグ＞
本実施の形態では、収集部１５５は、関連処理タスク１４３の実行時にスケジューリングに関する情報をログ１３５として記録する。デバッグツール２２７は、このログ１３５を収集し、収集情報２２８に基づきデバッグを支援するための情報を生成し、ユーザに提供する。
【０１５２】
本実施の形態では、「デバッグ」とは、ユーザが設定したユーザ設定情報（第１時間Ｔ１、第２時間Ｔ２、優先度（高優先度ＰＨおよび低優先度ＰＬ）、関連処理タスク１４３に割当てるプログラム内容（種類を含む））を、調整または変更する作業を示す。ユーザは、例えば、リアルタイム制御を確実に実施することが可能な目標に近づけるようにデバッグを行なう。
【０１５３】
図１５は、本実施の形態に係るデバッグのための支援情報の表示例を示す図である。図１６は、本実施の形態に係るモニタ情報１５３Ａとログ１３５の一例を示す図である。図１７は、本実施の形態に係る収集情報２２８の一例を示す図である。
【０１５４】
（Ｊ１：収集される情報）
本実施の形態では、収集部１５５は、関連処理タスク１４３の実行中に優先度切替部１５３から出力されるモニタ情報１５３Ａを受付けて、受付けたモニタ情報１５３Ａをログ１３５として二次記憶装置１０８に格納する。モニタ情報１５３Ａは、関連処理タスク１４３の実行のスケジューリングに関する情報であり、例えばカウンタ１５３Ｂが出力する現在の計測時間および現在の優先度（高優先度ＰＨまたは低優先度ＰＬのいずれか）を含む。
【０１５５】
図１６（Ａ）はモニタ情報１５３Ａの一例を示し、図１６（Ｂ）はログ１３５の一例を示す。例えば、関連処理タスク１４３であるタスクＲＴＳ１について、第１時間Ｔ１＝２msecおよび第２時間Ｔ２＝１０msecと設定されていたケースを想定する。このケースにおいて、タスクＲＴＳ１は高優先度ＰＨで実行が開始されて、実行が終了したときに、例えば優先度切替部１５３からは、図１６（Ａ）のモニタ情報１５３Ａが出力されて、且つログ１３５として図１６（Ｂ）が記録される。
【０１５６】
具体的には、図１６（Ａ）のモニタ情報１５３Ａは、タスクＲＴＳ１の実行終了時の優先度は‘高優先度’であり、この高優先度で実行を開始してから０．２msecの経過で実行が終了したことを示す。また、図１６（Ｂ）のログ１３５は、タスクＲＴＳ１は実行開始から完了するまでに優先度は２回の切替え（すなわち、高優先度→低優先度→高優先度）がなされて、実行時間として合計１２．２msecが必要であったことを示す。
【０１５７】
サポート装置２００のデバッグツール２２７は、制御装置１００からログ１３５を受信し、ログ１３５に基づき収集情報２２８を生成する。図１７（Ａ）を参照して収集情報２２８は、関連処理タスク１４３について、タスク名７１、実行された総回数である実行回数８２、実行時間の代表値（最小、平均、最大）８３および優先度切替数の代表値（最小、平均、最大）８４等の統計情報を含む。実行時間の代表値８３は、実行回数８２が示す２１１０３回のタスク実行の実行時間のうちの最小値、平均値および最大値を示す。また、優先度切替数の代表値８４は、実行回数８２が示す２１１０３回の各実行においてカウントされた優先度の切替え回数のうちの最小値、平均値および最大値を示す。
【０１５８】
また、収集情報２２８は、図１７（Ｂ）の情報を含む。図１７（Ｂ）は、図１７（Ａ）の２１１０３回の実行に関する情報の内訳を示す。具体的には、関連処理タスク１４３について、情報の組（すなわち高優先度ＰＨ、低優先度ＰＬ、第１時間Ｔ１および第２時間Ｔ２の組）毎に、タスク名７１、優先度が‘高優先度’で実行終了した場合の統計情報９６と９７、および優先度が‘低優先度’で実行終了した場合の統計情報９８と９９を含む。
【０１５９】
統計情報９６は、タスクＲＴＳ１について、特定の情報の組（高優先度、低優先度、第１時間Ｔ１および第２時間Ｔ２の組）に基づきタスクＲＴＳ１の実行がなされた場合において、実行開始から終了までに４回の優先度切替えがなされて‘高優先度’で実行終了したケースは、トータル２３回であることを示す。また、統計情報９７は、その２３回のタスク実行について実行時間の最小値、平均値および最大値は、それぞれ、０．１msec、０．８msecおよび１．９msecであることを示す。
【０１６０】
同様に、統計情報９８は、タスクＲＴＳ１について、上記の特定の情報の組に基づき実行がなされた場合において、実行開始から終了までに５回の優先度切替えがなされて‘低優先度’で実行終了したケースは、トータル１１回であることを示す。また、統計情報９９は、その１１回のタスク実行について実行時間の最小値、平均値および最大値は、それぞれ、０．１ｍsec、０．４msecおよび０．５msecであることを示す。
【０１６１】
（J２：デバッグツール）
デバッグツール２２７が収集情報２２８に基づき生成するデバッグ支援情報は、図１５に示す表示部２１８の画面としてユーザに提供される。例えば、図１５の画面の上段には、図１７（Ｂ）の統計情報９６および９７に基づく画像が表示されて、下段には図１７（Ｂ）の統計情報９８および９９に基づく画像が表示される。
【０１６２】
ユーザは、図１５の画面の収集情報２２８とリアルタイム制御のための目標とを比較し、比較の結果から、タスクＲＴＳ１に設定した閾値１５２Ａ（第１時間Ｔ１および第２時間Ｔ２）または優先度情報１５２Ｂ（高優先度ＰＨ、低優先度ＰＬ）が、リアルタイム制御を確実に実施するために適当であったか否かを判断する指針を得ることができる。また、ユーザは、上記の比較の結果から、タスクＲＴＳ１に割当てたプログラムが適当であったかを判断する指針を得ることもできる。
【０１６３】
ユーザは、上記の判断に基づき、例えば図８のユーザインターフェイスを介して、タスクＲＴＳ１に設定した閾値１５２Ａ（第１時間Ｔ１および第２時間Ｔ２）または優先度情報１５２Ｂ（高優先度ＰＨ、低優先度ＰＬ）を変更する。または、例えば図１３のユーザインターフェイスを介してタスクＲＴＳ１に割当てたプログラムを変更する。
【０１６４】
例えば、タスクＲＴＳ１が低優先度に切替られる回数が目標よりも多い場合には、他のタスクと交互実行されて、結果として実行時間が長くなり、低優先度に切替えられていることが推定可能である。この場合は、ユーザは、第１時間Ｔ１を長くするよう変更する、または交互実行を回避できるよう元の高優先度ＰＨの値を変更することで、低優先度に切替られる回数を減らすことができる可能性がある。
【０１６５】
また、例えば、タスクＲＴＳ１が高優先度に切替られる回数が目標よりも多い場合には、他のタスクと交互実行されて、結果として実行時間が長くなり、高優先度に切替えられていることが推定可能である。この場合は、ユーザは、第２時間Ｔ２を長くするよう変更する、または交互実行を回避できるよう元の低優先度ＰＬの値を変更することで、高優先度に切替られる回数を減らすことができる可能性がある。
【０１６６】
また、タスクＲＴＳ１に特徴量生成プログラムを割当てていた場合に、タスク実行時間が目標よりも長いまたは低優先度への切替回数が目標よりも多いときは、特徴量生成プログラムの実行がプロセッサ１０２に高い負荷をかけていることが推定され得る。
【０１６７】
具体的には、特徴量生成プログラムは、高速フーリエ変換などの演算量が多い（演算時間が長い）処理を含み得る。ユーザは、上記の負荷を軽減するために、開発プログラム２２２を実行して特徴量生成プログラムを変更する。例えば、生成される特徴量の種類を変更または減じて演算量が少なくなるように、特徴量生成プログラムを変更する。
【０１６８】
サポート装置２００は、上記の変更後の閾値１５２Ａまたは変更後の優先度情報１５２Ｂまたは変更後の特徴量生成プログラムを、制御装置１００に送信する。スケジューラ１５１は、これら変更後の情報に基づきタスク制御情報１３１を生成し、タスク制御情報１３１に基づき、タスクＲＴＳを再度実行する。デバッグツール２２７は、再度実行される場合に取得された収集情報２２８に基づくモニタ画面（図１５）を表示する。このモニタ画面は、閾値（第１時間Ｔ１、第２時間Ｔ２）または優先度情報（高優先度ＰＨ、低優先度ＰＬ）または特徴量生成プログラム等のデバッグによる変更内容が、リアルタイム制御を確実に実施するのに適切であったか否かを判断するための支援情報を、ユーザに提供する。
【０１６９】
＜Ｋ：優先度切替の他の判断条件＞
上記の実施の形態では、優先度切替処理（図１０のステップＳ３５）は、実行時間が第１時間Ｔ１または第２時間Ｔ２を超過したときに（ステップＳ３３でＹＥＳ）実施したが、優先度切替処理を実施する条件は、実行時間が第１時間Ｔ１または第２時間Ｔ２を超過したことに限定されない。
【０１７０】
例えば、スケジューラ１５１は、関連処理タスクの実行時間が第１時間Ｔ１または第２時間Ｔ２を超過した回数をカウントする。優先度切替処理を実施するための条件として、このカウント値が予め定められたＮ（Ｎ≧２）回以上となったときに、優先度切替処理を実施する。なお、Ｎは、ユーザが設定可能な値である。
【０１７１】
＜Ｌ：マルチコア動作モード＞
上記の実施の形態では、制御装置１００がシングルコア動作モードにおいて、スケジューラ１５１は、プロセッサ１０２の１つのプロセッサコアで関連処理タスク１４３を実行する場合を説明したが、ここでは、プロセッサ１０２が有する２つ以上のプロセッサコアを利用したマルチコア動作モードを説明する。制御装置１００がマルチコア動作モードに切替えられた場合は、スケジューラ１５１はコア切替部１５６を起動する。
【０１７２】
プロセッサコアは、演算器、プログラムカウンタなどのタスクを実行するための機器を組合わせて構成される。したがって、マルチコア動作モードでは、複数のプロセッサコアを用いて、複数のタスクを並列に実行することができる。本実施の形態では、プロセッサ１０２は、例えば４個のプロセッサコアCore1〜Core4を備える場合を説明するが、プロセッサコアの数は２個以上であればよく、４個に限定されない。
【０１７３】
（Ｌ１：コア情報の設定）
図１８は、本実施の形態に係るコア情報１３６を示す図である。コア情報１３６は、マルチコア動作モードにおいて、関連処理タスク１４３を実行するコアプロセッサに関する情報を示す。サポート装置２００は、入力部２１６からのユーザの操作内容に基づき、コア情報１３６を受付けて、受付けたコア情報１３６を制御装置１００に送信する。制御装置１００のプロセッサ１０２は、サポート装置２００から受信するコア情報１３６を二次記憶装置１０８に格納する。プロセッサ１０２は、タスクを実行時には、コア情報１３６を二次記憶装置１０８から読出し、主記憶装置１０６に展開する。
【０１７４】
図１８を参照して、コア情報１３６は、各関連処理タスク１４３について、動作コア指定１３７および割当モード１３８のデータを含む。動作コア指定１３７は、対応の関連処理タスク１４３を実行するためのプロセッサコアを指定する情報を示す。割当モード１３８は、当該関連処理タスク１４３を実行するプロセッサコアを‘動的’に切替える、または‘固定’にするかを指定するデータ１３９と、‘固定’と指定された場合の関連処理タスク１４３を実行するべきプロセッサコアを示すデータ１４０を含む。
【０１７５】
図１７を参照して、具体的には、タスク‘ＲＴＳ１’には、プロセッサコアCore2とCore3が割当られて、割当モードは‘動的’を示す。この場合、タスク‘ＲＴＳ１’を実行するプロセッサコアはCore2またはCore3のいずれかに切替え可能であることを示す。これに対してタスク‘ＲＴＳ２’には、プロセッサコアCore2とCore3が割当られて、割当モードは‘固定（高＝２、低＝３）’を示す。この場合、タスク‘ＲＴＳ２’を実行するときに、優先度が高優先度であればプロセッサコアCore2で実行し、優先度が低優先度であればプロセッサコアCore3で実行することを指定する。
【０１７６】
（Ｌ２：マルチコアスケジューリング）
マルチコア動作モードにおいて、関連処理タスク１４３を実行するためのスケジューリングを説明する。マルチコア動作モードでは、コア切替部１５６は、ＯＳ１９０からＣＰＵ利用率１５９を受け付ける。ＯＳ１９０は、ＣＰＵ利用率１５９を計測する。ＣＰＵ利用率１５９は、例えば各プロセッサコアCore1〜Core4について、当該プロセッサコアがタスクの実行などに使用されていないidle状態である確率（単位時間あたりのidle状態の時間の割合：空き率Ｅ）を示す。
【０１７７】
スケジューラ１５１が、関連処理タスク１４３を実行状態に遷移させる場合に、コア切替部１５６は、コア情報１３６に基づき、またはＣＰＵ利用率１５９およびコア情報１３６の両方に基づき、当該関連処理タスク１４３を実行するべきプロセッサコアを決定する命令を含む。コア切替部１５６は、決定したプロセッサコアを示すコア指定命令１５８を、ＯＳ１９０に出力する。これを、スケジューラ１５１による「マルチコアスケジューリング」ともいう。ＯＳ１９０は、コア指定命令１５８により指定されるプロセッサコアを用いて、実行状態に遷移した当該関連処理タスク１４３を実行する。
【０１７８】
マルチコアスケジューリングでは、以下に説明する動作モードＭ１〜Ｍ７のいずれかが実施される。なお、動作モードＭ１〜Ｍ７においては、上記のシングルコア動作モードと同様に、まずマルチタスク実行部１９１はプライマリ定周期タスクである高優先制御タスク１４１を、プロセッサコアCore1〜Core4の１つ以上において実行する。
【０１７９】
（Ｌ３：関連処理タスク１４３が１つの場合のスケジューリングモデル）
図１９は、実施の形態に係るマルチコアスケジューリングにおいて１つの関連処理タスク１４３を実行する例を示す図である。図１９では、まず高優先度の関連処理タスク１４３（以下、タスクＲＴＳとも称する）を実行し、次に低優先度のタスクＲＴＳを実行するケースを説明する。
【０１８０】
図１９（Ａ）の動作モードＭ１は、コア情報１３６が「タスク‘ＲＴＳ’には、プロセッサコアCore2とCore3が割当られて、割当モードは‘動的’」を示すケースである。‘動的’と指示される場合、コア切替部１５６は、ＣＰＵ利用率１５９およびコア情報１３６に基づき、より空き率Ｅの大きい（すなわち、関連処理タスク１４３に割当可能な資源が多い）プロセッサコアを、タスクＲＴＳを実行するべきプロセッサコアとして決定する。
【０１８１】
図１９（Ａ）を参照して、タスクＲＴＳを実行開始前のＣＰＵ利用率１５９から、コア切替部１５６は（プロセッサコアCore3の空き率Ｅ＞プロセッサコアCore2の空き率Ｅ）と判断する。したがって、コア切替部１５６は、判断に基づき、空き率Ｅの大きい方のプロセッサコアCore3を決定し、決定されたプロセッサコアCore3を示すコア指定命令１５８を出力する。これにより、マルチタスク実行部１９１は、高優先度のタスクＲＴＳをプロセッサコアCore3において実行する。
【０１８２】
タスクＲＴＳがプロセッサコアCore3で実行されて、優先度切替部１５３により、高優先度から低優先度に切替えられた場合を説明する。低優先度のタスクＲＴＳを実行する場合、コア切替部１５６は、ＣＰＵ利用率１５９から（プロセッサコアCore3の空き率Ｅ＞プロセッサコアCore2の空き率Ｅ）と判断し、判断に基づき、空き率Ｅの大きい方のプロセッサコアCore3を決定し、プロセッサコアCore3を示すコア指定命令１５８を出力する。これにより、低優先度のタスクＲＴＳは、プロセッサコアCore3において実行される。
【０１８３】
これに対して、図１９（Ｂ）の動作モードＭ２は、コア情報１３６が「タスク‘ＲＴＳ’には、プロセッサコアCore2とCore3が割当られて、割当モードは‘固定（高＝２、低＝３）’」を示すケースである。
【０１８４】
したがって、コア切替部１５６は、ＣＰＵ利用率１５９によらず、コア情報１３６に基づき、タスクＲＴＳを実行するべきプロセッサコアCoreを決定する。図１９（Ｂ）を参照して、例えば、タスクＲＴＳが高優先度であるときは、コア切替部１５６は、プロセッサコアCore2を示すコア指定命令１５８を出力する。タスクＲＴＳがプロセッサコアCore2で実行されて、優先度切替部１５３により、高優先度から低優先度に切替えられた場合は、コア切替部１５６は、コア情報１３６に基づき、プロセッサコアCore3を決定し、プロセッサコアCore3を示すコア指定命令１５８を出力する。これにより、マルチタスク実行部１９１は、低優先度のタスクＲＴＳを、プロセッサコアCore3において実行する。
【０１８５】
（Ｌ４：関連処理タスク１４３が複数の場合のスケジューリングモデル）
図２０は、本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク１４３を実行する例を示す図である。図１９の動作モードＭ１とＭ２では、１つのタスクＲＴＳを実行する場合であったが、図２０の動作モードＭ３とＭ４では、スケジューラ１５１は複数のタスクＲＴＳをスケジューリングする。図２０を参照して、高優先度のタスクＲＴＳ１〜ＲＴＳ３を実行し、次に低優先度のタスクＲＴＳ１〜ＲＴＳ３を実行する場合を説明する。
【０１８６】
まず、図２０（Ａ）の動作モードＭ３は、コア情報１３６が「タスク‘ＲＴＳ１〜ＲＴＳ３’には、プロセッサコアCore2とCore3が割当られて、割当モードは‘動的’」を示すケースである。図２０（Ｂ）の動作モードＭ４は、コア情報１３６が「タスク‘ＲＴＳ１〜ＲＴＳ３’には、プロセッサコアCore2とCore3が割当られて、割当モードは‘固定（高＝２、低＝３）’」を示すケースである。
【０１８７】
図２０（Ａ）の動作モードＭ３では、同じ優先度（高優先度）であるタスクＲＴＳ１〜ＲＴＳ３を実行するために、コア切替部１５６は、ＣＰＵ利用率１５９に基づき、最も空き率Ｅの高いプロセッサコアCore3を、タスクＲＴＳ１〜ＲＴＳを実行するべきプロセッサコアとして決定し得る。
【０１８８】
この場合に、１つのプロセッサコアCore3において、３つのタスクＲＴＳ１〜ＲＴＳ３の並列実行（交互実行）がなされる。そのため、各タスクの実行時間は比較的長くなり得る。したがって、実行時間を短縮するために、例えば、プロセッサコアCore3の空き率Ｅが閾値以上である場合には、コア切替部１５６は、プロセッサコアCore3をタスクＲＴＳ１とＲＴＳ２の２つのタスクを実行するべきプロセッサコアCoreと決定し、タスクＲＴＳ３のために他のプロセッサコアCore2を決定する。これにより、複数の関連処理タスク１４３を実行する場合に、プロセッサコアCoreの間で負荷を分散させて、各関連処理タスク１４３の実行時間を短くすることが可能となる。
【０１８９】
また、タスクＲＴＳ１〜ＲＴＳ３が低優先度に切替えられた場合は、コア切替部１５６は、ＣＰＵ利用率１５９が示す空き率Ｅの大きい１つのプロセッサコアCore3を、タスクＲＴＳ１〜ＲＴＳ３を実行するプロセッサコアCoreと決定する。または、タスクＲＴＳ１とＲＴＳ２をプロセッサコアCore3で実行しタスクＲＴＳ３を他のプロセッサコアCore2で実行すると決定してもよい。これにより、上記に述べたようなプロセッサコアCoreの間の負荷分散と各タスクの実行時間の短縮が可能になる。
【０１９０】
図２０（Ｂ）の動作モードＭ４では、同じ高優先度であるタスクＲＴＳ１〜ＲＴＳ３を実行するために、コア切替部１５６は、ＣＰＵ利用率１５９によらず、コア情報１３６に従いプロセッサコアCore2を、タスクＲＴＳ１〜ＲＴＳを実行するプロセッサコアとして決定する。スケジューラ１５１は、プロセッサコアCore2において、タスクＲＴＳ１→ＲＴＳ２→ＲＴＳ３と順番にタスクが実行されるようスケジューリングする。
【０１９１】
また、タスクＲＴＳ１〜ＲＴＳ３が低優先度に切替えられた場合は、コア切替部１５６は、ＣＰＵ利用率１５９によらず、コア情報１３６に従いプロセッサコアCore3を、タスクＲＴＳ１〜ＲＴＳを実行するプロセッサコアCoreと決定する。スケジューラ１５１は、プロセッサコアCore3において、タスクＲＴＳ１→ＲＴＳ２→ＲＴＳ３と順番にタスクが実行されるようスケジューリングする。
【０１９２】
（Ｌ５：関連処理タスク１４３が複数の場合のスケジューリングモデル-2）
図２１は、本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク１４３を実行する他の例を示す図である。
【０１９３】
図２１（Ａ）の動作モードＭ５は、図２０（Ａ）と同様に、コア切替部１５６は、ＣＰＵ利用率１５９とコア情報１３６に従い、タスクＲＴＳ１〜ＲＴＳ３を実行するプロセッサコアを決定する。
【０１９４】
図２１（Ｂ）の動作モードＭ６は、図２０（Ｂ）の動作モードＭ４のスケジューリングモデルの変形例を示す。図２０（Ｂ）では、スケジューラ１５１は、プロセッサコアCore3（またはCore2）において、タスクＲＴＳ１→ＲＴＳ２→ＲＴＳ３と順番に実行する。そのため、最後に実行されるタスクＲＴＳ３は他のタスクの実行が終了するまで待つことになり、タスクＲＴＳ３の実行時間は長くなる。
【０１９５】
これに対して、図２１（Ｂ）の動作モードＭ６では、スケジューラ１５１は、プロセッサコアCore3（またはCore2）において、タスクＲＴＳ１〜ＲＴＳ３を並列に実行（すなわち交互実行）するようスケジューリングする。これにより、各タスクについての実行時間を平均化することができる。
【０１９６】
また、本実施の形態では、ユーザは、コア情報１３６に従い複数のタスクを実行するモードとして、動作モードＭ４（図２０（Ｂ）参照）または動作モードＭ６（図２０（Ｂ）参照）を指定することができる。
【０１９７】
（Ｌ６：関連処理タスク１４３が複数の場合のスケジューリングモデル-3）
図２２は、本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク１４３を実行する更なる他の例を示す図である。図２２の動作モードＭ７は、コア情報１３６が「タスク‘ＲＴＳ’には、プロセッサコアCore2とCore3が割当られて、割当モードは‘固定（高＝２、低＝３）’」を示すケースである。
【０１９８】
動作モードＭ７では、コア切替部１５６は、ＣＰＵ利用率１５９によらず、コア情報１３６に基づき、高優先度であるタスクＲＴＳ１〜ＲＴＳ３を実行するコアを、プロセッサコアCore2と決定する。同様に、コア切替部１５６は、低優先度であるタスクＲＴＳ１〜ＲＴＳ３を実行するプロセッサコアCoreを、プロセッサコアCore3と決定する。
【０１９９】
動作モードＭ７によれば、高優先度の複数の関連処理タスク１４３が実行状態に遷移する場合に、各タスクのリアルタイム性を実現することが可能となる。具体的には、図２１を参照して、高優先度のタスクＲＴＳ１〜ＲＴＳ３を実行する場合には、スケジューラ１５１は、プロセッサコアCore2において、タスクＲＴＳ１→ＲＴＳ２→ＲＴＳ３と順番に実行する（図２１のケースＣ１→Ｃ２→Ｃ３参照）。したがって、高優先度の各タスクは、当該タスクが実行される場合に、プロセッサコアCore2の利用可能な資源を占有して実行することができ、実行時間の短縮が可能となる。
【０２００】
次に、高優先度のタスクＲＴＳ１がプロセッサコアCore2で実行された場合に、実行時間が第１時間Ｔ１を超えたために低優先度に切替えられたときは、コア切替部１５６は、コア情報１３６に従い、タスクＲＴＳ１を実行するプロセッサコアを、プロセッサコアCore3と決定する（ケースＣ２）。このケースでは、プロセッサコアCore3における低優先度のタスクＲＴＳ１の実行と、プロセッサコアCore2における高優先度のタスクＲＴＳ２の実行とが並行してなされる。
【０２０１】
次に、高優先のタスクＲＴＳ２のプロセッサコアCore2における実行時間が第１時間Ｔ１を超えた（ただし、タスクＲＴＳ１のプロセッサコアCore3における実行時間は第２時間Ｔ２を超えていない）ときは、タスクＲＴＳ２は低優先度に切替えられる。この場合は、コア切替部１５６は、コア情報１３６に従い、タスクＲＴＳ２を実行するプロセッサコアをプロセッサコアCore3と決定する。したがって、タスクＲＴＳ１とＲＴＳ２のプロセッサコアCore3における実行と、高優先のタスクＲＴＳ３のプロセッサコアCore2における実行とが並行してなされる（ケースＣ３）。
【０２０２】
次に、高優先のタスクＲＴＳ３のプロセッサコアCore2における実行時間が第１時間Ｔ１を超えた（ただし、タスクＲＴＳ１とＲＴＳ２のプロセッサコアCore3における実行時間は第２時間Ｔ２を超えていない）ときは、タスクＲＴＳ３の優先度は低優先度に切替えられる。この場合は、コア切替部１５６は、コア情報１３６に従い、タスクＲＴＳ１を実行するプロセッサコアをプロセッサコアCore3と決定する。したがって、タスクＲＴＳ１〜ＲＴＳ３は、プロセッサコアCore3において交互実行される（ケースＣ４）。
【０２０３】
最後に、低優先のタスクＲＴＳ１のプロセッサコアCore3における実行時間が第２時間Ｔ２を超えた（ただし、タスクＲＴＳ２とＲＴＳ３のプロセッサコアCore3における実行時間は第２時間Ｔ２を超えていない）ときは、タスクＲＴＳ１の優先度は高優先度に切替えられる（ケースＣ５）。この場合は、プロセッサコアCore2におけるタスクＲＴＳ１の実行と、プロセッサコアCore3におけるタスクＲＴＳ２およびＲＴＳ３の交互実行が並行してなされる。
【０２０４】
本実施の形態に係るマルチコア動作モードでは、ユーザは、複数のタスクＲＴＳ１〜ＲＴＳ３を実行する場合に、上記に述べた動作モードＭ４、Ｍ６およびＭ７のいずれのモードで実行させるか指定することができる。
【０２０５】
＜Ｍ．変形例＞
図２３は、本実施の形態に係る関連処理タスク１４３の変形例を説明する模式図である。図２４は、本実施の形態に係る予測制御モデルの一例を模式的に示す図である。上記の実施の形態では、関連処理タスク１４３の一例として異常検知プログラムを説明したが、関連処理は異常検知プログラムに限定されない。例えば、（ｃ２．機能構成）で述べた関連処理タスク１４３は、制御装置１００により制御される対象（以下、対象９０と呼ぶ）を、予測制御モデルを用いて制御する予測制御プログラムを含んでもよい。対象９０は、例えば、図１のフィールド装置群１０に備えられる機器などである。予測制御プログラムは、変数のうち対象９０に与える指令値を用いて、対象９０の制御量を予測して、制御パラメータの補正値を出力する命令を含む。このような命令が実行されることにより、図２３の補正値算出処理１４３１が実現される。
【０２０６】
本実施の形態では、予測制御モデルは、例えば対象９０の応答を予測しながら対象９０の最適化制御を実現するために適用されるプロセスのモデルである。
【０２０７】
なお、指令値および制御量は、図５の内部ＤＢ１３０に格納されている変数により示される。これら指令値および制御量は、図５の制御入力プログラム１６１および制御出力プログラム１６２がＩ／Ｏリフレッシュ処理を実施することにより図１のフィールド装置群１０との間で遣り取りされるデータ（入力データおよび出力データ）であって、内部ＤＢ１３０の変数に設定される。
【０２０８】
図２３では、制御装置１００で実行される関連処理タスク１４３と、高優先制御タスク１４１の一例である制御演算タスク１４１１が示される。制御演算タスク１４１１は実行されると、予め定められたパターン１５１１に従って制御周期毎に指令値１５１６を生成し、対象９０に指令値１５１６を出力し、また、対象９０から、指令値１５１６に対する応答値（フィードバック値）である制御量１５１７を入力する。
【０２０９】
関連処理タスク１４３は、制御演算タスク１４１１からの出力（すなわち、制御装置１００から対象９０に対して出力される現在の指令値１５１２）と、予測制御モデル１４３４とを用いて、対象９０の制御量の推定値である推定制御量１５１３を算出する予測処理１４３２、および推定制御量１５１３を、理想制御量１５１８(目標制御量)との差があらかじめ決められた範囲に収まるよう補償した補正値１５１４を算出する算出処理１４３３を含む。図２３では、指令値１５１２と制御量１５１５は、それぞれ指令値１５１６と制御量１５１７と同様の値である。
【０２１０】
制御演算タスク１４１１は、算出される補正値１５１４に従って対象９０に対する制御出力（指令値１５１６）を算出する。算出される指令値１５１６は、対象９０を制御するために出力される。
【０２１１】
上記の予測制御モデル１４３４は、対象９０の特性に基づく機械学習により予め作成される、またはユーザー操作により予め作成され得る。図２４には、予測制御モデル１４３４の一例が模式的に示される。図２４を参照して、例えば、予測制御モデル１４３４は、指令値１５１２（または制御量１５１５）と推定制御量１５１３の相関関係を表すグラフとして示される。したがって、予測処理１４３２では、このような予測制御モデル１４３４に基づいて、指令値１５１２（または制御量１５１５）の値Ｘから推定制御量１５１３の値Ｙを推定（算出）することができる。なお、予測制御モデル１４３４は、このような相関関係のグラフに限定されない。
【０２１２】
なお、予測制御モデル１４３４で推定される推定制御量１５１３は、現在の値（例えば、現在の制御周期に対応した値）であっても、将来の値（例えば、次の制御周期以降の制御周期に対応した値）であってもよい。
【０２１３】
また、機械学習により予測制御モデル１４３４を作成する場合、例えばニューラルネットワークを使用する機械学習で作成されてもよい。
【０２１４】
また、算出処理１４３３では、予測処理１４３２により出力される推定制御量１５１３と、理想制御量（目標制御量）１５１８との差を算出し、図示しない予測制御モデルを用いて、当該算出された制御量の差から指令値１５１６の修正量を推定（算出）してもよい。
【０２１５】
制御演算タスク１４１１は、補正値１５１４を入力し、入力した補正値１５１４をフィードバックした指令値１５１６を生成し、対象９０に出力する。
【０２１６】
要約すると、図２４の予測制御モデル１４３４は、推定制御量１５１３を目的変数、指令値１５１２を説明変数として予め作成されている。したがって、図２３では、対象９０に与える現在の指令値１５１２（指令値１５１６）を予測制御モデル１４３４に入力し、次の制御周期における対象９０の推定制御量１５１３が出力される。次に、推定制御量１５１３を、理想制御量１５１８(目標制御量)との差があらかじめ決められた範囲に収まるよう補償した補正値１５１４が算出されて、算出された補正値１５１４を用いて指令値１５１６の書き換えがなされる。
【０２１７】
また、図２４の予測制御モデル１４３４は、推定制御量１５１３を目的変数、制御量１５１５を説明変数として予め作成されてもよい。この場合は、図２３では、対象９０に与える現在の制御量１５１５（制御量１５１７）を予測制御モデル１４３４に入力し、次の制御周期における対象９０の推定制御量１５１３が出力される。次に、推定制御量１５１３を、理想制御量１５１８(目標制御量)との差があらかじめ決められた範囲に収まるよう補償した補正値１５１４が算出されて、算出された補正値１５１４を用いて指令値１５１６の書き換えがなされる。
【０２１８】
このように、関連処理タスク１４３の補正値算出処理１４３１によれば、対象９０に与える指令値１５１２を用いて、対象９０の制御量を予測して、制御パラメータの補正値１５１４を出力することも可能であり、また、対象９０の制御量１５１５を用いて、対象９０に与える補正値を予測することも可能である。
【０２１９】
また、図２３の算出処理１４３３では、推定制御量１５１３を、理想制御量（目標制御量）１５１８との差が予め定められた範囲に収まるよう補償する補正値１５１４を算出したが、補正値１５１４の算出方法は、このような補償による方法に限定されない。例えば、算出処理１４３３は、推定制御量１５１３と予め定められた演算に従い補正値１５１４を算出する処理であってもよい。
【０２２０】
また、図２３では、制御周期毎に、予測制御モデル１４３４を用いて推定（算出）された補正値１５１４に基づく指令値１５１６が、対象９０に出力されているが、指令値１５１６の出力周期は、制御周期に限定されない。例えば、対象９０の特性によっては、制御周期よりも長い周期で指令値１５１６が出力されてもよい。その場合は、その場合は、対象９０を、制御周期よりも長い周期毎に、予測制御モデル１４３４を用いて推定（算出）された補正値１５１４に基づく指令値１５１６が対象９０に出力されて得る。
【０２２１】
また、予め定められたパターン１５１１は、対象９０が移動すべき軌跡を示す位置パターンを含み得る。この場合、予測制御モデル１４３４を用いて生成された補正値１５１４に基づく指令値１５１６により示される軌跡（対象９０が移動すべきと推定された軌跡）に従い、対象９０の位置を制御することが可能となる。
【０２２２】
なお、図２３では、制御演算タスク１４１１は予め定められたパターン１５１１に従って指令値１５１６を生成したが、制御演算タスク１４１１は当該パターン１５１１を用いずに、指令値１５１６を生成してもよい。
【０２２３】
＜Ｎ．本実施の形態の効果＞
本実施の形態に係る優先度切替処理では、実行時間が第１時間Ｔ１よりも長くなる（超過する）ことがない間は、高優先度ＰＨは維持される。したがって、リアルタイム性を維持しながら関連処理を実行することができて、例えば実行時間毎に得られる関連処理の結果を用いた対象のリアルタイム制御を実現することが可能となる。また、実行時間が第１時間Ｔ１よりも長くなる（超過する）と関連処理タスク１４３の優先度を低くすることで他のタスクが優先的に実行可能となるので、他のタスクが低優先制御タスク１４２等のようにリアルタイム制御に寄与する処理（モーション制御の軌道計算処理）を実行している場合には、高優先制御タスク１４１は実行結果を用いた対象のリアルタイム制御が可能となる。したがって、制御タスクによる対象のリアルタイム制御の実現を保証しながら、非制御タスクによるリアルタイムな関連処理の実行も実現することが可能となる。
【０２２４】
また、マルチコアスケジューリングにおいては、各プロセッサコアCoreにおいて、対象の制御タスクを優先的に実行しながら、関連処理タスク１４３について、優先度切替処理を実施する。また、２つ以上のプロセッサコアCoreを同時に用いて、制御タスクを優先的に実行しながら、複数の関連処理タスク１４３について、優先度切替処理を実施する。
【０２２５】
これにより、マルチコアスケジューリングによっても、制御タスクによる対象のリアルタイム制御の実現を保証しながら、複数の非制御タスクによるリアルタイムな関連処理の実行を実現することができる。
【０２２６】
＜Ｏ．実施の形態の構成＞
上記に述べた実施の形態によれば、対象を制御する制御装置１００は、対象のリアルタイム制御を実施するための制御タスク（高優先制御タスク１４１）および、リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクの各タスクに対応付けて、当該タスクがプロセッサにより実行される優先度を記憶するためのタスク制御情報１３１と、優先度に従う非制御タスクの実行順序を調整するスケジューラ１５１と、を備える。制御タスクの優先度は最優先に設定される（すなわち、非制御タスクの優先度は、制御タスクの優先度よりも低くなるように設定される）。スケジューラ１５１は、非制御タスクについて、当該非制御タスクの実行時間ｔが関連処理をリアルタイムに実行するための第１時間Ｔ１よりも長くなる場合に、当該非制御タスクの優先度を低くなるように切替える（高優先度ＰＨ→低優先度ＰＬ）優先度切替部を１５３含む。
【０２２７】
上記の構成によれば、非制御タスクの実行時間がリアルタイム実行のための第１時間Ｔ１である間は高優先度ＰＨを維持し、その後、第１時間Ｔ１を超えて長くなると、優先度が低優先度ＰＬとなるように切替えられる。したがって、実行時間が第１時間内である間は、リアルタイム制御を維持しながら非制御タスク（関連処理タスク１４３）の優先度を比較的高くしてリアルタイムに実行することができて、関連処理の結果を対象のリアルタイム制御に反映することが確実となる。
【０２２８】
また、実行時間がリアルタイム実行のための第１時間を超えて長くなると優先度を低くして他の制御タスク（例えば低優先制御タスク１４２）に対する優先的な資源の割り当てを可能にする。これにより、他の制御タスクによる処理の結果を対象のリアルタイム制御に反映することが確実となる。これにより、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能なように実行することが可能になる。
【０２２９】
好ましくは、高優先度ＰＨは他のタスク（例えば低優先制御タスク１４２）の優先度以上を示し、且つ低優先度ＰＬは当該他のタスクの優先度以下を示す。これにより他のタスクの実行が優先的に実行されることが可能となり、他のタスクが制御タスクに対し軌道データ等のリアルタイム制御に関するデータを提供する場合には、対象のアルタイム制御をより確実に実施することが可能となる。
【０２３０】
好ましくは、上記の第１時間Ｔ１は、可変に設定される。また、低優先度ＰＬおよび高優先度ＰＨは可変に設定され得る。したがって、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能なような第１時間Ｔ１と、高優先度ＰＨまたは低優先度ＰＬとを、調整しながら決定することができる。
【０２３１】
好ましくは、優先度切替部１５３は、さらに、低優先度ＰＬの非制御タスクについて、実行時間が第２時間Ｔ２よりも長くなる場合に、当該非制御タスクを高優先度ＰＨに上げる。したがって、対象のリアルタイム制御を保証可能にするような非制御タスクの実行時間を、第１時間Ｔ１と第２時間Ｔ２を目安に調整することが可能となる。
【０２３２】
好ましくは、第２時間Ｔ２は、可変に設定される。したがって、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能なように第２時間Ｔ２を、調整しながら決定することができる。
【０２３３】
好ましくは、関連処理は、対象に関連するデータから対象に生じる異常を検知するのに適した特徴量を生成する特徴量生成処理と、特徴量生成処理により生成される特徴量を用いて異常を検知する異常検知処理と、特徴量生成処理または異常検知処理のためのデータを、記憶装置を含む装置と通信する処理と、を含む。
【０２３４】
したがって、対象のリアルタイム制御を、非制御タスクのリアルタイム実行の結果である異常検知結果を用いて実施することが可能となる。
【０２３５】
好ましくは、関連処理は、制御装置から対象に出力される指令値１５１２と予め定められた予測制御モデル１４３４とを用いて対象９０の推定の制御量１５１３を算出する算出処理と、算出処理により算出された制御量に基づき補正値１５１４を算出する補正値算出処理１４３１を含み、制御タスク１４１は、算出される補正値１５１４に従って対象に対する制御出力（指令値１５１６）を算出する制御演算タスク１４１１を含む。
【０２３６】
したがって、対象のリアルタイム制御を、非制御タスクの予測制御モデルを用いた処理結果を用いて実施することが可能となる。
【０２３７】
好ましくは、関連処理は、制御装置から対象に出力される対象９０の制御量１５１７と予め定められた予測制御モデル１４３４を用いて対象の推定の制御量１５１３を算出する算出処理と、算出処理により算出された制御量１５１３に基づき補正値１５１４を算出する補正値算出処理１４３１を含み、制御タスク１４１は、算出される補正値に従って対象に対する制御出力（指令値１５１６）を算出する制御演算タスク１４１１を含む。
【０２３８】
したがって、対象のリアルタイム制御を、非制御タスクの予測制御モデルを用いた処理結果を用いて実施することが可能となる。
【０２３９】
好ましくは、上記の補正値算出処理は、制御量が予め定められた範囲に収まるよう補償した補正値を算出する処理を含む。
【０２４０】
したがって、制御量が予め定められた範囲に収まるよう補償により補正値を算出することができる。
【０２４１】
好ましくは、非制御タスクについて、実行時間を含む当該非制御タスクの実行に関する情報を収集する収集部１５５を備え、収集部により収集される情報は、外部に出力される。
【０２４２】
したがって、収集情報を出力することで、上記の第１時間Ｔ１または第２時間Ｔ２を設定するための支援情報として、非制御タスクの実行時間を含んだ情報を、ユーザに提供することができる。
【０２４３】
好ましくは、収集される情報は、非制御タスクの優先度の切替え回数を含む。
したがって、ユーザに、上記の支援情報として、非制御タスクの優先度の切替え回数を提供することができる。
【０２４４】
好ましくは、関連処理の内容は可変に設定される。
したがって、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能となるように、関連処理の内容（関連処理プログラムの種類、演算処理等の内容）を調整することができる。
【０２４５】
好ましくは、プロセッサ１０２は、複数のプロセッサコアCore1〜4を含み、非制御タスクを実行するプロセッサコアを指定するコア情報１３６を記憶する。スケジューラ１５１は、さらに、コア情報１３６または各プロセッサコアの利用率１５９に基づき、非制御タスクを実行するプロセッサコアを決定するコア切替部１５６を含む。
【０２４６】
したがって、空き率Ｅが高いことを示す利用率１５９を有したプロセッサコアを決定し、当該プロセッサコアに非制御タスクを実行させることができる。
【０２４７】
好ましくは、コア情報１３６は、非制御タスクの優先度に基づき当該非制御タスクを実行するプロセッサコアを指定する情報を含む。
【０２４８】
したがって、複数の非制御タスクがある場合に、優先度が高い非制御タスクから順にプロセッサコアを決定して当該プロセッサコアに当該非制御タスクを実行させることができる。
【０２４９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２５０】
１  制御システム、１０  フィールド装置群、１００  制御装置、１０１  タイマ、１０２，２０２  プロセッサ、１０６，２０６  主記憶装置、１０８，２０８  二次記憶装置、１３１  タスク制御情報、１３３  優先度、１３４  プログラム名、１３５  ログ、１３６  コア情報、１３７  動作コア指定、１３８  割当モード、１４１  高優先制御タスク、１４２  低優先制御タスク、１４３  関連処理タスク、１４４  サービスタスク、１５０  ユーザプログラム、１５１  スケジューラ、１５２  設定部、１５２Ａ  閾値、１５２Ｂ  優先度情報、１５３  優先度切替部、１５３Ａ  モニタ情報、１５３Ｂ  カウンタ、１５４  タスク情報設定部、１５５  収集部、１５６  コア切替部、１５７  実行指示部、１５８  コア指定命令、１５９  利用率、１６１  制御入力プログラム、１６２  制御出力プログラム、１６３  高優先制御プログラム、１６４  低優先制御プログラム、１６５  関連処理プログラム、１６６  システムサービスプログラム、１９１  マルチタスク実行部、２００  サポート装置、２０４  光学ドライブ、２０５  記録媒体、２１６  入力部、２１８  表示部、２２２  開発プログラム、２２４  パラメータ設定ツール、２２６  データマイニングツール、２２７  デバッグツール、２２８  収集情報、３００  データロギング装置、４００  表示装置、Ｅ  空き率、ＦＬ  状態フラグ、ＰＨ  高優先度、ＰＬ  低優先度、ＰＲ  管理処理、ＲＴＳ，ＲＴＳ１，ＲＴＳ２，ＲＴＳ３  タスク、Ｔ  周期、ｔ  実行時間。
【図１】
2018181315.tif 000003
【図２】
2018181315.tif 000004
【図３】
2018181315.tif 000005
【図４】
2018181315.tif 000006
【図５】
2018181315.tif 000007
【図６】
2018181315.tif 000008
【図７】
2018181315.tif 000009
【図８】
2018181315.tif 000010
【図９】
2018181315.tif 000011
【図１０】
2018181315.tif 000012
【図１１】
2018181315.tif 000013
【図１２】
2018181315.tif 000014
【図１３】
2018181315.tif 000015
【図１４】
2018181315.tif 000016
【図１５】
2018181315.tif 000017
【図１６】
2018181315.tif 000018
【図１７】
2018181315.tif 000019
【図１８】
2018181315.tif 000020
【図１９】
2018181315.tif 000021
【図２０】
2018181315.tif 000022
【図２１】
2018181315.tif 000023
【図２２】
2018181315.tif 000024
【図２３】
2018181315.tif 000025
【図２４】
2018181315.tif 000026
【手続補正書】
【提出日】平成30年8月6日(2018.8.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
生産現場に設けられた対象機器を制御する制御装置であって、
前記対象機器のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御がなされる対象機器に関連するデータを用いて前記リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクを実行するプロセッサと、
前記複数のタスクの各タスクに対応付けた優先度に基づく順序に従い前記複数のタスクを前記プロセッサにより実行させるマルチタスク実行部と、
前記非制御タスクの優先度を可変に設定するスケジューラと、を備え、
前記制御タスクの優先度は、前記複数のタスクの中で最も高い優先度に設定され、
前記スケジューラは、
前記非制御タスクの実行開始条件が成立すると第１優先度に設定するとともに、当該非制御タスクの実行開始からの時間が前記関連処理をリアルタイムに実行するための第１時間の間は、当該非制御タスクの優先度を第１優先度に維持し、その後、前記実行開始からの時間が前記第１時間よりも長くなると、当該非制御タスクの優先度を第２優先度に下げるよう切替える優先度切替部を含む、制御装置。
【請求項２】
前記第１時間は、可変に設定される、請求項１に記載の制御装置。
【請求項３】
前記優先度切替部は、さらに、
前記第２優先度の前記非制御タスクの実行開始からの時間が第２時間よりも長くなると、当該非制御タスクの優先度を前記第１優先度に上げるよう切替える、請求項１または２に記載の制御装置。
【請求項４】
前記第２時間は、可変に設定される、請求項３に記載の制御装置。
【請求項５】
前記関連処理は、
前記対象機器に関連するデータから前記対象機器に生じる異常を検知するのに適した特徴量を生成する特徴量生成処理と、
前記特徴量生成処理により生成される特徴量を用いて前記異常を検知する異常検知処理と、
前記特徴量生成処理または前記異常検知処理のためのデータを、記憶装置を含む装置と通信する処理と、を含む、請求項１から４のいずれか１項に記載の制御装置。
【請求項６】
前記関連処理は、
前記制御装置から前記対象機器に出力される指令値と予め定められた予測制御モデルとを用いて前記対象機器の推定の制御量を算出する算出処理と、
前記算出処理により算出された制御量に基づき補正値を算出する補正値算出処理を含み、
前記制御タスクは、算出される前記補正値に従って前記対象機器に対する指令値を算出する制御演算タスクを含む、請求項１から４のいずれか１項に記載の制御装置。
【請求項７】
前記関連処理は、
前記制御装置から前記対象機器に出力される前記対象機器の制御量と予め定められた予測制御モデルを用いて前記対象機器の推定の制御量を算出する算出処理と、
前記算出処理により算出された制御量に基づき補正値を算出する補正値算出処理を含み、
前記制御タスクは、算出される前記補正値に従って前記対象機器に対する指令値を算出する制御演算タスクを含む、請求項１から４のいずれか１項に記載の制御装置。
【請求項８】
前記補正値算出処理は、前記制御量が予め定められた範囲に収まるよう補償した前記補正値を算出する処理を含む、請求項６または７に記載の制御装置。
【請求項９】
前記非制御タスクについて、前記実行開始からの時間を含む当該非制御タスクの実行に関する情報を収集する収集部を備え、
前記収集部により収集される情報は、外部に出力される、請求項１から８のいずれか１項に記載の制御装置。
【請求項１０】
前記収集される情報は、前記非制御タスクの前記優先度の切替え回数を含む、請求項９に記載の制御装置。
【請求項１１】
前記関連処理の内容は可変に設定される、請求項１から１０のいずれか１項に記載の制御装置。
【請求項１２】
前記プロセッサは、複数のプロセッサコアを含み、
前記非制御タスクを実行するプロセッサコアを指定するコア情報を記憶するためのコア情報記憶部を、さらに備え、
前記スケジューラは、さらに、
前記コア情報または各前記プロセッサコアの利用率に基づき、前記非制御タスクを実行するプロセッサコアを決定するコア切替部を含む、請求項１から１１のいずれか１項に記載の制御装置。
【請求項１３】
前記コア情報は、
前記非制御タスクの前記優先度に基づき当該非制御タスクを実行するプロセッサコアを指定する情報を含む、請求項１２に記載の制御装置。
【請求項１４】
生産現場に設けられた対象機器を制御する制御装置における制御方法であって、
前記制御装置は、
前記対象機器のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御がなされる対象機器に関連するデータを用いて前記リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクを実行するプロセッサと、
前記複数のタスクの各タスクに対応付けた優先度に基づく順序に従い前記複数のタスクを前記プロセッサにより実行させるマルチタスク実行部と、を備え、
前記制御タスクの優先度は、前記複数のタスクの中で最も高い優先度に設定され、
前記制御方法は、
前記非制御タスクの優先度を可変に設定するステップを備え、
前記可変に設定するステップにおいて、
前記非制御タスクの実行開始条件が成立すると第１優先度に設定するとともに、当該非制御タスクの実行開始からの時間が前記関連処理をリアルタイムに実行するための第１時間の間は、当該非制御タスクの優先度を第１優先度に維持するステップと、その後、前記実行開始からの時間が前記第１時間よりも長くなると、当該非制御タスクの優先度を第２優先度に下げるよう切替えるステップとを、含む、制御方法。
【請求項１５】
請求項１４に記載の制御方法をコンピュータに実行させるためのプログラム。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2018181315.tif 000027
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２１
【補正方法】変更
【補正の内容】
【図２１】
2018181315.tif 000028