このアプリケーションの一部のコンテンツは現時点では利用できません。
このような状況が続く場合は、にお問い合わせくださいフィードバック & お問い合わせ
1. (WO2018186358) 制御装置、制御方法および制御プログラム
Document

明 細 書

発明の名称 制御装置、制御方法および制御プログラム

技術分野

0001  

背景技術

0002   0003  

先行技術文献

特許文献

0004  

発明の概要

発明が解決しようとする課題

0005   0006   0007   0008   0009  

課題を解決するための手段

0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022  

発明の効果

0023  

図面の簡単な説明

0024  

発明を実施するための形態

0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152   0153   0154   0155   0156   0157   0158   0159   0160   0161   0162   0163   0164   0165   0166   0167   0168   0169   0170   0171   0172   0173   0174   0175   0176   0177   0178   0179   0180   0181   0182   0183   0184   0185   0186   0187   0188   0189   0190   0191   0192   0193   0194   0195   0196   0197   0198   0199   0200   0201   0202   0203   0204   0205   0206   0207   0208   0209   0210   0211   0212   0213   0214   0215   0216   0217   0218   0219   0220   0221   0222   0223   0224   0225   0226   0227   0228   0229   0230   0231   0232   0233   0234   0235   0236   0237   0238   0239   0240   0241   0242   0243   0244   0245   0246   0247   0248   0249  

符号の説明

0250  

請求の範囲

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15  

図面

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24  

明 細 書

発明の名称 : 制御装置、制御方法および制御プログラム

技術分野

[0001]
 本技術は、対象を制御する制御装置、制御方法および制御プログラムに関する。

背景技術

[0002]
 様々な生産現場において、PLC(プログラマブルコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。
[0003]
 PLCなどの制御装置は高性能が要求される。この要求に関して、例えば特許文献1(特表2013-506911号公報)のPLCは、PLC機能の各々に割当てられた1または複数のプロセッサを備えて、これらPLC機能のうち少なくとも2つは並列に動作させている。

先行技術文献

特許文献

[0004]
特許文献1 : 特表2013-506911号公報

発明の概要

発明が解決しようとする課題

[0005]
 PLCなどの制御装置は、生産現場に設けられた機器のシーケンス制御を実現するためのシーケンスプログラムおよびモーション制御を実現するためのモーションプログラムなどを含む機器を制御するための制御タスクを、予め定められた周期毎に実行することで、機器のリアルタイム制御を実現している。
[0006]
 ところで、PLCなどの制御装置においては、各種の機能の追加に伴い、機器の制御に直接的には関与しない非制御タスクを上記のリアルタイム制御(定周期性)を維持しながら実行させたいという要求がある。
[0007]
 この要求を実現するために、定周期内に終わらなかった非制御タスクを次周期に実行する方法も提案されている。しかし、この方法は、異常検知等の特定の非制御タスクについて適当ではない。具体的には、非制御タスクの実行結果に応じて、対象のリアルタイム制御の内容を変える等(例えば、機械を止める、異常によって不良が発生したワークを弾く、制御対象の機械が包装機であれば包装後はカッターを降ろさない等)が要求されている場合は、この方法では、制御タスクとの関係も考慮して決まった時間内に非制御タスクの実行を完了することができないとの課題が残る。
[0008]
 特許文献1は、PLC機能のうち少なくとも2つを並列に動作させているが、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能なように実行するための具体的な構成は提案していない。
[0009]
 本技術は、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能なように実行する制御装置、制御方法および制御プログラムを提供する。

課題を解決するための手段

[0010]
 本開示のある局面によれば、対象を制御する制御装置であって、対象のリアルタイム制御を実施するための制御タスクおよび、リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクを実行するプロセッサと、複数のタスクの各タスクに対応付けた優先度に基づく順序に従い複数のタスクをプロセッサにより実行させるマルチタスク実行部と、非制御タスクの優先度を可変に設定するスケジューラと、を備え、制御タスクの優先度は最優先に設定される。スケジューラは、非制御タスクの実行開始条件が成立すると第1優先度に設定するとともに、当該非制御タスクの実行開始からの時間が関連処理をリアルタイムに実行するための第1時間の間は、当該非制御タスクの優先度を第1優先度に維持し、その後、実行開始からの時間が第1時間よりも長くなると、当該非制御タスクの優先度を第2優先度に下げるよう切替える優先度切替部を含む。
[0011]
 好ましくは、上記の第1時間は、可変に設定される。
 好ましくは、優先度切替部は、さらに、第2優先度の非制御タスクの実行開始からの時間が第2時間よりも長くなると、当該非制御タスクの優先度を第1優先度に上げるよう切替える。
[0012]
 好ましくは、第2時間は、可変に設定される。
 好ましくは、関連処理は、対象に関連するデータから対象に生じる異常を検知するのに適した特徴量を生成する特徴量生成処理と、特徴量生成処理により生成される特徴量を用いて異常を検知する異常検知処理と、特徴量生成処理または異常検知処理のためのデータを、記憶装置を含む装置と通信する処理と、を含む。
[0013]
 好ましくは、関連処理は、制御装置から対象に出力される指令値と予め定められた予測制御モデルとを用いて対象の推定の制御量を算出する算出処理と、算出処理により算出された制御量に基づき補正値を算出する補正値算出処理を含み、制御タスクは、算出される補正値に従って対象に対する指令値を算出する制御演算タスクを含む。
[0014]
 好ましくは、関連処理は、制御装置から対象に出力される対象の制御量と予め定められた予測制御モデルを用いて対象の推定の制御量を算出する算出処理と、算出処理により算出された制御量に基づき補正値を算出する補正値算出処理を含み、制御タスクは、算出される補正値に従って対象に対する指令値を算出する制御演算タスクを含む。
[0015]
 好ましくは、上記の補正値算出処理は、制御量が予め定められた範囲に収まるよう補償した補正値を算出する処理を含む。
[0016]
 好ましくは、非制御タスクについて、実行時間を含む当該非制御タスクの実行に関する情報を収集する収集部を備え、収集部により収集される情報は、外部に出力される。
[0017]
 好ましくは、収集される情報は、非制御タスクの優先度の切替え回数を含む。
 好ましくは、関連処理の内容は可変に設定される。
[0018]
 好ましくは、プロセッサは、複数のプロセッサコアを含み、非制御タスクを実行するプロセッサコアを指定するコア情報を記憶するためのコア情報記憶部を、さらに備え、スケジューラは、さらに、コア情報または各プロセッサコアの利用率に基づき、非制御タスクを実行するプロセッサコアを決定するコア切替部を含む。
[0019]
 好ましくは、コア情報は、非制御タスクの優先度に基づき当該非制御タスクを実行するプロセッサコアを指定する情報を含む。
[0020]
 この技術の他の局面に従うと、対象を制御する制御装置における制御方法が提供される。制御装置は、対象のリアルタイム制御を実施するための制御タスクおよび、リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクを実行するプロセッサと、複数のタスクの各タスクに対応付けた優先度に基づく順序に従い前記複数のタスクを前記プロセッサにより実行させるマルチタスク実行部と、を備え、制御タスクの優先度は最優先に設定される。
[0021]
 制御方法は、非制御タスクの実行開始条件が成立すると第1優先度に設定するとともに、当該非制御タスクの実行開始からの時間が前記関連処理をリアルタイムに実行するための第1時間の間は、当該非制御タスクの優先度を第1優先度に維持するステップと、その後、前記実行開始からの時間が前記第1時間よりも長くなると、当該非制御タスクの優先度を第2優先度に下げるよう切替えるステップとを、含む。
[0022]
 この技術の他の局面に従うと、上記の制御方法をコンピュータに実行させるためのプログラムが提供される。

発明の効果

[0023]
 本技術によれば、対象をリアルタイム制御するための制御タスクと、非制御タスクとが、対象のリアルタイム制御を保証可能なように実行され得る。

図面の簡単な説明

[0024]
[図1] 本実施の形態に係る制御システム1の全体構成例を示す模式図である。
[図2] 本実施の形態に係る制御システム1を構成する制御装置100のハードウェア構成例を示すブロック図である。
[図3] 本実施の形態に係る制御システム1を構成するサポート装置200のハードウェア構成例を示すブロック図である。
[図4] 本実施の形態に係る概略処理のフローチャートである。
[図5] 本実施の形態に係る制御装置100が備える機能を模式的に示す図である。
[図6] 本実施の形態に係る関連処理タスク143の状態遷移を模式的に示す図である。
[図7] 本実施の形態に係る関連処理プログラム165の構成を模式的に示す図である。
[図8] 本実施の形態に係るタスクに優先度を設定するためのユーザインターフェイスを示す図である。
[図9] 本実施の形態に係るタスクにプログラムを割当てるユーザインターフェイスを示す図である。
[図10] 本実施の形態に係る関連処理タスクの実行を管理する処理を示すフローチャートである。
[図11] (A)と(B)は、本実施の形態に係る関連処理タスク143のスケジューリングモデルを示す図である。
[図12] 図11に関連付けて関連処理タスク143の優先度切替を例示する図である。
[図13] 本実施の形態に係る複数の関連処理タスクに優先度と閾値を設定する例を示す図である。
[図14] 本実施の形態に係る複数の関連処理タスクに対するプログラムの割当て方法を示す図である。
[図15] 本実施の形態に係るデバッグのための支援情報の表示例を示す図である。
[図16] 本実施の形態に係るモニタ情報153Aとログ135の一例を示す図である。
[図17] 本実施の形態に係る収集情報228の一例を示す図である。
[図18] 本実施の形態に係るコア情報136を示す図である。
[図19] 実施の形態に係るマルチコアスケジューリングにおいて1つの関連処理タスク143を実行する例を示す図である。
[図20] 本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク143を実行する例を示す図である。
[図21] 本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク143を実行する他の例を示す図である。
[図22] 本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク143を実行する更なる他の例を示す図である。
[図23] 本実施の形態に係る関連処理タスク143の変形例を説明する模式図である。
[図24] 本実施の形態に係る予測制御モデルの一例を模式的に示す図である。

発明を実施するための形態

[0025]
 本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
[0026]
 <用語の説明>
 本実施の形態での用語を説明する。
[0027]
 「タスク」は、プロセッサにより実行される処理の単位であって、タスクは1つ以上のプログラムを含む。
[0028]
 タスクの「リアルタイム性」は、タスクが実行開始されてから、予め定められた時間内に実行が終了することを示す。
[0029]
 「制御タスク」は、フィールド装置群のうちの制御すべき対象をリアルタイム制御するためのタスクである。
[0030]
 「非制御タスク」は、「制御タスク」とは異なり直接にリアルタイム制御に関与しないが、リアルタイム性が要求されるタスクであって、上記のリアルタイム制御に関連する処理を実施するためのタスクである。
[0031]
 タスクの「優先度」は、当該タスクが他のタスクよりも先にプロセッサにより実行される相対的な順序を示す。優先度が高ければ実行順序は先となり、優先度が低ければ実行順序は後となる。
[0032]
 <実施の形態の概要>
 本実施の形態では制御装置のスケジューラは、制御タスクおよび非制御タスクを含む複数のタスクの優先度を可変に設定する。本実施の形態では、複数のタスクのうち制御タスクの優先度は最も高く設定されている。スケジューラは、非制御タスクの実行開始条件が成立すると第1優先度に設定するとともに、当該非制御タスクの実行開始からの時間が関連処理をリアルタイムに実行するための第1時間の間は非制御タスクの優先度を第1優先度(高優先度)に維持し、その後、実行開始からの経過時間である実行時間が第1時間よりも長くなると、当該非制御タスクの優先度を第2優先度(低優先度)に下げるよう切替える。
[0033]
 これにより、実行時間が第1時間を超えない間は、リアルタイム性を維持しながら関連処理を実行することができて、例えば関連処理の結果を用いた対象のリアルタイム制御を実現することが可能となる。また、実行時間が第1時間を超えて長くなると非制御タスクの優先度を低くすることで他のタスクが優先的に実行可能となるので、他のタスクがリアルタイム制御に寄与する処理を実行している場合には、他のタスクの実行結果を用いた対象のリアルタイム制御が可能となる。したがって、制御タスクによる対象のリアルタイム制御の実現を保証しながら、非制御タスクによる関連処理のリアルタイムな実行も実現することが可能となる。
[0034]
 <A.制御システムの全体構成例>
 まず、本実施の形態に係る制御装置を含む制御システム1の全体構成例について説明する。
[0035]
 図1は、本実施の形態に係る制御システム1の全体構成例を示す模式図である。図1を参照して、本実施の形態に係る制御システム1は、主たる構成要素として、制御すべき対象を制御する制御装置100と、制御装置100に接続されるサポート装置200とを含む。
[0036]
 制御装置100は、PLC(プログラマブルコントローラ)などの、一種のコンピュータとして具現化されてもよい。制御装置100は、第1フィールドネットワーク2を介してフィールド装置群10と接続されるとともに、第2フィールドネットワーク4を介して1または複数の表示装置400と接続される。さらに、制御装置100は、ローカルネットワーク6を介してデータロギング装置300に接続される。制御装置100は、それぞれのネットワークを介して、接続された装置との間でデータを遣り取りする。なお、データロギング装置300および表示装置400はオプショナルな構成であり、制御システム1の必須の構成ではない。
[0037]
 制御装置100は、生産現場などの設備や機械を制御するための各種演算を実行する機能と、フィールド装置群10にて計測され、制御装置100へ転送されるデータ(以下、「入力データ」とも称す。)を収集する収集機能と、収集した入力データを監視する監視機能とを備える。これらの機能が制御装置100に実装されることで、対象に生じている現象を監視することができる。
[0038]
 具体的には、制御装置100に実装される後述する内部データベース(以下、「内部DB」とも記す。)130が上記の収集機能の一部を提供し、制御装置100に実装される異常検知プログラム(後述する)が監視機能を提供する。
[0039]
 フィールド装置群10は、制御装置100の制御すべき対象または制御に関連する製造装置や生産ラインなど(以下、「フィールド」とも総称する。)から入力データを収集する装置を含む。このような入力データを収集する装置としては、入力リレーや各種センサなどが想定される。フィールド装置群10は、さらに、制御装置100にて生成される指令(以下、「出力データ」とも称す。)に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。これらのフィールド装置群10は、第1フィールドネットワーク2を介して、制御装置100との間で、入力データおよび出力データを含むデータを遣り取りする。
[0040]
 図1に示す構成例においては、フィールド装置群10は、リモートI/O(Input/Output)装置12と、リレー群14と、画像センサ18およびカメラ20と、サーボドライバ22、サーボモータ24およびI/Oユニット16を含む。フィールド装置群10としては、これらに限られることなく、入力データを収集できるデバイス、または、出力データに基づく何らかのアクションができるデバイスであれば、どのようなものを採用してもよい。
[0041]
 リモートI/O装置12は、第1フィールドネットワーク2を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部(以下、「I/Oユニット」とも称す。)とを含む。このようなI/Oユニットを介して、制御装置100とフィールドとの間で入力データおよび出力データが遣り取りされる。図1には、リレー群14を介して、入力データおよび出力データとして、デジタル信号が遣り取りされる例が示されている。I/Oユニットは、フィールドバスに直接接続されるようにしてもよい。図1には、第1フィールドネットワーク2にI/Oユニット16が直接接続されている例を示す。
[0042]
 画像センサ18は、カメラ20によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置100へ送信する。
[0043]
 サーボドライバ22は、制御装置100からの出力データに従って、サーボモータ24を駆動する。
[0044]
 上述のように、第1フィールドネットワーク2を介して、制御装置100とフィールド装置群10との間でデータが遣り取りされることになるが、本実施の形態では、これらの遣り取りされるデータは、例えば周期(=単位時間)T毎に更新されることになる。周期Tは、フィールド装置群10をリアルタイム制御するために予め定められた単位時間を示し、例えば数百μsecオーダ~数十msecオーダを有する。なお、このような遣り取りされるデータの更新処理を、「I/Oリフレッシュ処理」と称することもある。
[0045]
 また、第2フィールドネットワーク4を介して制御装置100と接続される表示装置400は、ユーザからの操作を受けて、制御装置100に対してユーザ操作に応じたコマンドなどを送信するとともに、制御装置100での演算結果などをグラフィカルに表示する。
[0046]
 データロギング装置300は、制御装置100とローカルネットワーク6を介して接続され、制御装置100との間で必要なデータを遣り取りする。データロギング装置300は、例えば、制御装置100が発生するイベントログなどを時系列に収集する。
[0047]
 サポート装置200は、制御装置100が対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置200は、制御装置100で実行されるユーザプログラムの開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)、制御装置100および制御装置100に接続される各種デバイスのパラメータ(コンフィギュレーション)を設定するための設定環境、生成したユーザプログラムを制御装置100へ送信する機能、制御装置100上で実行されるユーザプログラムなどをオンライン(またはオフライン)で修正・変更する後述するデバッグツール227(後述する)、などを提供する。
[0048]
 <B.各装置のハードウェア構成例>
 次に、本実施の形態に係る制御システム1を構成する主要な装置のハードウェア構成例について説明する。
[0049]
 (b1:制御装置100のハードウェア構成例)
 図2は、本実施の形態に係る制御システム1を構成する制御装置100のハードウェア構成例を示すブロック図である。図2を参照して、制御装置100は、周期Tを含む各種の時間を計測するためのタイマ101と、CPU(Central Processing Unit)またはMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、主記憶装置106と、二次記憶装置108と、ローカルネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114と、内部バスコントローラ122と、フィールドバスコントローラ118,120と、I/Oユニット124-1,124-2,…とを含む。二次記憶装置108は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。主記憶装置106は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。
[0050]
 プロセッサ102は、二次記憶装置108に格納された各種プログラムを読み出して、主記憶装置106に展開して実行することで、フィールド装置群10の対象に応じた制御、および、後述するような各種処理を実現する。チップセット104は、プロセッサ102と各コンポーネントを制御することで、制御装置100全体としての処理を実現する。
[0051]
 二次記憶装置108には、プロセッサ102により実行されるユーザプログラム150等の各種のプログラムおよび内部DB130が格納される。
[0052]
 ローカルネットワークコントローラ110は、ローカルネットワーク6を介した他の装置との間のデータの遣り取りを制御する。ネットワークコントローラ110は、典型的には、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)といった専用回路を用いて実現される。USBコントローラ112は、USB接続を介してサポート装置200との間のデータの遣り取りを制御する。USBコントローラ112は、典型的には、ASICやFPGAといった専用回路を用いて実現される。
[0053]
 メモリカードインターフェイス114は、メモリカード116を着脱可能に構成されており、メモリカード116に対してデータを書込み、メモリカード116から各種データ(ユーザプログラムまたはトレースデータなど)を読出すことが可能になっている。
[0054]
 内部バスコントローラ122は、制御装置100に搭載されるI/Oユニット124-1,124-2,…との間でデータを遣り取りするインターフェイスである。内部バスコントローラ122は、典型的には、ASICやFPGAといった専用回路を用いて実現される。
[0055]
 フィールドバスコントローラ118は、第1フィールドネットワーク2を介した他の装置との間のデータの遣り取りを制御する。フィールドバスコントローラ118は、典型的には、ASICやFPGAといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、フィールドバスコントローラ118は、主として、プロセッサ102、主記憶装置106、ストレージなどで構成され、プロセッサ102がストレージに格納されたシステムプログラム(ファームウェア)などを読出して、主記憶装置106に展開して実行することで、必要な処理を実現する。同様に、フィールドバスコントローラ120は、第2フィールドネットワーク4を介した他の装置との間のデータの遣り取りを制御する。フィールドバスコントローラ120も、典型的には、ASICやFPGAといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、フィールドバスコントローラ120は、主として、プロセッサ102、主記憶装置106、ストレージなどで構成され、プロセッサ102がストレージに格納されたシステムプログラム(ファームウェア)などを読出して、主記憶装置106に展開して実行することで、必要な処理を実現する。
[0056]
 図2の制御装置100で実行される各種プログラムは、コンピュータ読取可能なメモリカード116などの記録媒体を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形で二次記憶装置108にインストールするようにしてもよい。また、本実施の形態に係る制御装置100が提供する機能は、後述するOS(Operating System)190が提供するモジュールの一部を利用する形で実現される場合もある。
[0057]
 また、図2では、プロセッサ102が上記のプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
[0058]
 (b2:サポート装置200のハードウェア構成例)
 次に、本実施の形態に係るサポート装置200は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いてプログラムを実行することで実現される。
[0059]
 図3は、本実施の形態に係る制御システム1を構成するサポート装置200のハードウェア構成例を示すブロック図である。図3を参照して、サポート装置200は、CPUまたはMPUなどのプロセッサ202と、光学ドライブ204と、主記憶装置206と、二次記憶装置208と、USB(Universal Serial Bus)コントローラ212と、ローカルネットワークコントローラ214と、入力部216と、表示部218とを含む。これらのコンポーネントはバス220を介して接続される。
[0060]
 プロセッサ202は、二次記憶装置208に格納された各種プログラムを読み出して、主記憶装置206に展開して実行することで、後述するような各種処理を実現する。
[0061]
 二次記憶装置208は、例えば、HDD(Hard Disk Drive)やSSD(Flash Solid State Drive)などで構成される。二次記憶装置208には、典型的には、ユーザプログラム150の作成、システム構成の定義、各種パラメータの設定などを行うための開発プログラム222と、各種変数を指定するためのパラメータ設定ツール224と、制御装置100で収集されるデータから目的の情報を抽出するためのデータマイニングツール226と、タスクのスケジューリングに関するデバッグツール227と、収集情報228とが格納されていてもよい。収集情報228は、デバッグのために利用可能な情報であり、制御装置100においてタスクが実行された場合に収集された情報をまとめたものである。デバッグツール227と収集情報228の詳細は後述する。また、二次記憶装置208には、OSおよび他の必要なプログラムが格納されてもよい。
[0062]
 サポート装置200は、光学ドライブ204を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体205(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)から、その中に格納されたプログラムが読取られて二次記憶装置208などにインストールされてもよい。
[0063]
 サポート装置200で実行される各種プログラムは、コンピュータ読取可能な記録媒体205を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置200が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
[0064]
 USBコントローラ212は、USB接続を介して制御装置100との間のデータの遣り取りを制御する。ローカルネットワークコントローラ214は、任意ネットワークを介した他の装置との間のデータの遣り取りを制御する。
[0065]
 入力部216は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。表示部218は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ202からの処理結果などを出力する。
[0066]
 図3には、プロセッサ202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
[0067]
 <C.全体処理と機能構成例>
 制御システム1により実施される処理の概要と、制御装置100が有する機能の概要を説明する。
[0068]
 (c1:全体の処理)
 図4は、本実施の形態に係る概略処理のフローチャートである。図4を参照して、制御システム1により実施される全体処理は、まず、制御装置100においてなされるタスクの実行処理(ステップST1)およびタスクの実行中に取得される情報を収集する処理(ステップST2)を含む。さらに、サポート装置200においてなされる収集情報228の統計処理(ステップST3)および収集情報228に基づく表示処理(ステップST4)を含む。さらに、制御システム1の処理は、デバッグツール227によるデバッグ処理(ステップST5)、およびデバッグ結果に基づきタスク(プログラム)を制御装置100において再度実行するための処理(ステップST6)を含む。
[0069]
 なお、図4では、サポート装置200が統計処理、収集情報228に基づく画像の表示処理、およびデバッグ処理(ステップST3~ST5)を実行するが、これら処理は制御装置100により実行されてもよい。
[0070]
 (c2:機能構成)
 図5は、本実施の形態に係る制御装置100が備える機能を模式的に示す図である。図5では、制御装置100のスケジューラ151が、二次記憶装置108の記憶内容と関連付けて示される。
[0071]
 主記憶装置106は、プロセッサ102がプログラムを展開して実行するための作業領域E1を含む。また、二次記憶装置108は、内部DB130、タスク実行時に収集される情報を示すログ135、およびユーザプログラム150を格納する。ユーザプログラム150は、ユーザがサポート装置200を用いて作成可能なプログラムであり、基本的には、制御装置100のプロセッサ102(図2)により実行される。
[0072]
 ユーザプログラム150は、フィールド装置群10のうちの指定された対象のリアルタイム制御を実施するために定周期T毎に実行されるプライマリ定周期プログラム(制御入力プログラム161、制御出力プログラム162および高優先制御プログラム163)を含む。さらに、ユーザプログラム150は、低優先制御プログラム164、関連処理プログラム165およびシステムサービスプログラム166を含む。
[0073]
 制御入力プログラム161および制御出力プログラム162は、I/Oリフレッシュ処理の機能に相当する。具体的には、制御入力プログラム161および制御出力プログラム162はフィールド装置群10との間で遣り取りされるデータ(入力データおよび出力データ)を内部DB130の変数として書込む、または変数を読出す命令を含む。制御装置100では、これら入力データおよび出力データの各々に対してユニークな変数名が割り当てられており、それぞれの変数名を利用して、フィールド装置群10と遣り取りされるデータが表現され得る。
[0074]
 高優先制御プログラム163は、典型的には、シーケンス/モーションプログラム(シーケンスプログラムおよび/またはモーションプログラム)を含む。シーケンス/モーションプログラムは、内部DB130の変数を読出し、変数に基づき、フィールド装置群10のうちの制御すべき対象をリアルタイム制御するための論理演算および/または数値演算を行い、その結果を変数に書込む命令を含む。高優先制御プログラム163による演算結果を示す変数は、制御出力プログラム162を介して、フィールド装置群10に出力されて、フィールド装置群10の対象の制御に用いられる。
[0075]
 低優先制御プログラム164は、フィールド装置群10の制御に関するリアルタイム性が要求されるプログラムであって、高優先制御プログラムよりも優先度は低いがリアルタイム性が要求されるプログラムを含む。低優先制御プログラム164は、例えば、上記に述べたモーションプログラムに提供する軌道データを生成するための軌道生成プログラムを含む。
[0076]
 関連処理プログラム165は、フィールド装置群10の対象のリアルタイム制御に関連した処理を実施するリアルタイム性が要求されるプログラムであって、例えば特徴量生成プログラムおよび異常検知プログラムを含む。
[0077]
 特徴量生成プログラムは、プロセッサ102で実行される。特徴量生成プログラムは、予め指定された特徴量の生成手法に従って、変数のうちの指定された変数を用いて特徴量を生成する命令を含む。例えば、特徴量生成プログラムは、フィールド装置群10のうちの対象に関連するデータから対象に生じる異常を検知するのに適した特徴量を生成し得る。
[0078]
 異常検知プログラムは、特徴量生成プログラムにより生成される特徴量を用いて異常検知の処理を実施する命令を含む。例えば、異常検知プログラムは、機械学習により設定される異常検知モデルと、特徴量生成プログラムにより生成される特徴量とに基づいて、対象における異常の有無を検出し、異常の有無を学習結果として内部DB130に格納する。また、学習結果は、外部送信されて、外部機器に出力され得る。
[0079]
 システムサービスプログラム166は、プロセッサ102で実行される。システムサービスプログラム166は、リアルタイム性は要求されず、且つフィールド装置群10の制御とは異なる処理を実施するためのプログラムを含む。システムサービスプログラム166は、例えば、制御装置100の外部機器(サポート装置200、データロギング装置300、表示装置400など)との通信、またはファイルへのデータ書き込みなどの命令を含む。システムサービスプログラム166は、例えば、周期的には実行されないプログラムであって、割込みなどのイベントに応じて実行されるようなプログラムを含み得る。
[0080]
 制御装置100には、プロセッサ102がプログラムを実行するための環境を提供するために、OS190もインストールされる。OS190は、マルチタスク実行部191を含む。マルチタスク実行部191は、ユーザプログラム150をタスク単位で、各タスクの優先度に基づく順序に従い、プロセッサ102に実行させるためのマルチタスク制御を実現する。
[0081]
 本実施の形態では、プロセッサが実行するタスクは高優先制御タスク141、低優先制御タスク142、関連処理タスク143、およびサービスタスク144を含む。なお、タスクの種類はこれらに限定されない。高優先制御タスク141と低優先制御タスク142は、フィールド装置群10の対象をリアルタイム制御するための「制御タスク」に相当する。関連処理タスク143は、対象のリアルタイム制御には直接関係しないが、上記のリアルタイム制御に関連する処理を実行する「非制御タスク」に相当する。低優先制御タスク142およびサービスタスク144は、「制御タスク」および「非制御タスク」とは異なるタスクである。
[0082]
 本実施の形態では、ユーザプログラム150のうち、例えば、制御入力プログラム161、制御出力プログラム162および高優先制御プログラム163を高優先制御タスク141に割当て、低優先制御プログラム164を低優先制御タスク142に割当てる。また、関連処理プログラム165を関連処理タスク143に割当て、システムサービスプログラム166をサービスタスク144に割当てる。
[0083]
 制御装置100は、さらに、マルチタスク実行部191がタスクを実行するために参照(読出)するタスク制御情報131、システム変数、閾値152Aおよび優先度情報152Bを有する。これら情報は、主記憶装置106に格納される。また、制御装置100は、後述するマルチコア動作モードで用いられるコア情報136を含む。コア情報136の詳細は後述する。
[0084]
 システム変数は、タスクの実行を制御するためのタスク状態変数を含む各種の変数を含む。タスク状態変数は、各タスクの後述する状態遷移に従い、当該タスクの実行状態を示す状態フラグFLを含む。状態フラグFLは、マルチタスク実行部191により書込まれる値であって、例えばタスクの状態遷移に従い、‘00’(実行前状態)、‘01’(実行状態且つ実行中)、‘10’(実行状態且つサスペンド(実行中断))および‘11’(実行完了状態)のいずれかの値が書込まれる。なお、タスクの状態遷移については、図6で後述する。
[0085]
 タスク制御情報131は、各タスクに対応してタスク名132、優先度133および当該タスクに割当てられているプログラムのプログラム名134を含む。閾値152Aは、第1時間T1と第2時間T2(>第1時間T1)を含む。第1時間T1は、関連処理タスク143の関連処理プログラム165をリアルタイムに実行するための実行時間の制限時間に相当する。優先度情報152Bは、関連処理タスク143の優先度である高優先度PHと低優先度PL(高優先度よりも低い優先度)とを含む。
[0086]
 スケジューラ151は、各タスクの優先度、すなわちプロセッサ102による当該タスクの実行順序を可変に設定する命令を含むプログラムにより実現される。スケジューラ151のプログラムは、二次記憶装置108に格納されている。プロセッサ102は二次記憶装置108からスケジューラ151のプログラムを読出し、読出したプログラムを主記憶装置106に展開し実行する。
[0087]
 <D.タスクの状態遷移>
 本実施の形態では、マルチタスク実行部191は、タスクを、実行状態、実行前状態および実行完了状態の3つの状態に遷移させながら実行する。実行状態は、タスクにプロセッサ102などの資源が割当られており、タスクが実行中の状態を示す。実行前状態は、実行状態に遷移する前のタスクの状態であって、具体的には、資源の割当てがあれば、実行を開始できる実行可能状態を示す。実行完了状態は、タスクの実行が完了した状態であって、タスクは実行可能状態に遷移するための何らかの事象を待つ状態を示す。
[0088]
 プロセッサ102が1つのプロセッサコアを有する場合に、マルチタスク実行部191により、ある時点でプロセッサ102(プロセッサコア)の資源が割当てられて実行状態となるタスクは1つである。マルチタスク実行部191は、実行前状態のタスクの中から次に資源を割当てるタスクを選択し、選択されたタスクを実行状態に遷移させる。この選択は、各タスクが有する優先度に従い実施される。
[0089]
 図5に戻り、スケジューラ151は、カウンタ153Bを含む優先度切替部153、タスク制御情報131を設定する命令を含むタスク情報設定部154、および関連処理タスク143の実行開始を指示するための実行開始指示をマルチタスク実行部191に出力する命令を含む実行指示部157を備える。カウンタ153Bは、タイマ101の出力に同期したカウント動作をすることにより、関連処理タスク143の実行時間を計測する。また、スケジューラ151は、優先度切替部153からのモニタ情報153Aに基づき、関連処理タスク143の優先度が切替えられた回数および実行時間などの情報を収集する命令を含む収集部155、および閾値152A,優先度情報152Bを設定する命令を含む設定部152を備える。さらに、スケジューラ151は、後述するマルチコア動作モードを起動するコア切替部156を含む。スケジューラ151のこれら各部はプログラムにより実現されて、プロセッサ102がこれらプログラムを実行する。
[0090]
 (d1:関連処理タスク143の優先度切替え)
 本実施の形態では、スケジューラ151の優先度切替部153は、非制御タスクについて、当該タスクの実行時間に応じた優先度の切替え(調整)を実施する。本実施の形態では、このような優先度の調整がなされる非制御タスクとして、関連処理タスク143を例示するが、関連処理タスク143に限定されない。
[0091]
 実施の形態では、「制御タスク」である高優先制御タスク141の優先度は最優先に設定される。低優先制御タスク142、「非制御タスク」およびサービスタスク144の優先度は、高優先制御タスク141の優先度よりも低く設定される。例えば、関連処理タスク143の優先度は、「第1優先度」に対応する高優先度PHまたは「第2優先度」に対応する低優先度PLのいずれか一方に設定され得る。優先度切替部153は、カウンタ153Bが計測する関連処理タスク143の実行時間を閾値152Aと比較し、比較の結果に基づき優先度を、高優先度PHまたは低優先度PLの一方に変更する(切替する)命令を含む。
[0092]
 図6は、本実施の形態に係る関連処理タスク143の状態遷移を模式的に示す図である。図6に示すように、マルチタスク実行部191は、定周期トリガ(Trigger)に同期して、関連処理タスク143を実行前状態から実行状態に遷移させることが可能である。OS190は、周期Tの開始に同期して定周期トリガ(Trigger)を出力する。
[0093]
 優先度切替部153は、関連処理タスク143が実行状態にある時間を、すなわち関連処理タスク143に対応の状態フラグFLが実行状態を示す(FL=‘01’または‘10’)時間を、カウンタ153Bにより計測する。優先度切替部153は、関連処理タスク143の優先度133が‘高優先度PH’を示す場合は、計測された実行時間を第1時間T1と比較する。比較の結果が(実行時間>第1時間T1)である場合は、優先度切替部153は、タスク制御情報131における関連処理タスク143に対応の優先度133を、高優先度PHから低優先度PLに書換える。また、優先度切替部153は、関連処理タスク143の優先度133が‘低優先度PL’を示す場合は、計測された実行時間を第2時間T2と比較する。比較の結果が(実行時間>第2時間T2)である場合は、優先度切替部153は、タスク制御情報131における関連処理タスク143に対応の優先度133を、低優先度PLから高優先度PHに書換える。
[0094]
 このように、関連処理タスク143の優先度は、前回の実行状態で関連処理タスク143の実行に要した時間(実行時間)に基づき切替えられ得る。
[0095]
 (d2:関連処理タスク143の実行状態への遷移の指示)
 図7は、本実施の形態に係る関連処理プログラム165の構成を模式的に示す図である。図7では、関連処理プログラム165の構成として、異常検知プログラムおよび特徴量生成プログラムが並列に示されて、各プログラムに対応して接点CNが示される。接点CNは、対応のプログラムの実行の有無を指定する。
[0096]
 実行指示部157は、関連処理タスク143の実行を開始するための実行開始条件が成立したと判断したとき、実行開始指示をマルチタスク実行部191に出力する。
[0097]
 図7を参照し、上記の実行開始条件を説明する。図7は、例えば、図示しない他のタスクが実行されたときに、他のタスクから出力された命令指示により、特徴量生成プログラムに対応の接点が選択された状態が示される。スケジューラ151の実行指示部157は、定周期トリガ(Trigger)を受付けた場合に、上記の命令指示を受付けると、関連処理タスク143の実行開始指示を、マルチタスク実行部191に出力する。マルチタスク実行部191は、実行指示部157から実行開始指示を受付けると、関連処理タスク143を実行前状態から実行状態に遷移させる。
[0098]
 このように、実行指示部157は、図6に示した定周期トリガ(Trigger)または、制御プログラムからの命令指示、または変数値をもとにしたイベントによる自動指示、またはこれらの組合せを含み得る指示を受付けたとき、関連処理タスク143の実行開始条件が成立したことを判断する。
[0099]
 (d3:関連処理タスク143の実行状態への遷移と状態フラグFLの設定)
 マルチタスク実行部191は、実行指示部157から実行開始指示を受付けたとき、関連処理タスク143を実行状態へ遷移させる。具体的には、マルチタスク実行部191は、タスク制御情報131から、関連処理タスク143に対応のプログラム名134を読出す。マルチタスク実行部191は、読出されたプログラム名134に基づき二次記憶装置108から関連処理プログラム165を読出し、読出された関連処理プログラム165を主記憶装置106に展開することで、関連処理プログラム165の実行を開始することが可能となる。これにより、関連処理タスク143は、実行前状態から実行状態に遷移する。
[0100]
 また、マルチタスク実行部191は、関連処理タスク143を実行前状態から実行状態に遷移させたとき、関連処理タスク143に対応の状態フラグFLをセットする。具体的には、関連処理タスク143が実行状態に遷移したときに、プロセッサ102が他のタスクを実行していなければ、マルチタスク実行部191は、プロセッサ102に関連処理タスク143をすぐに実行させて、状態フラグFLを‘00’→‘01’にセットする。
[0101]
 一方、関連処理タスク143が実行状態に遷移したときに、プロセッサ102が他のタスクを実行中であれば、すなわち同じ優先度の他のタスクが実行中であるときは、マルチタスク実行部191は、関連処理タスク143の実行を中断(サスペンド)し、状態フラグFLを‘00’→‘10’にセットする。この場合、その後、当該他のタスクの実行が中断すると、マルチタスク実行部191は、プロセッサ102に関連処理タスク143を実行させて、関連処理タスク143に対応の状態フラグFLを‘10’→‘01’にセットする。このように、関連処理タスク143の優先度と同じ優先度である他のタスクが実行状態に遷移し得る場合には、両タスクについて予め定められた時間毎に交互に実行中→実行中断が繰返される(以下、交互実行ともいう)ことにより、両タスクは実行状態を維持することが可能となる。
[0102]
 その後、関連処理タスク143の実行が完了した場合は、マルチタスク実行部191は、関連処理タスク143を実行状態から実行完了状態に遷移させるとともに、関連処理タスク143に対応の状態フラグFLを‘11’にセットする。
[0103]
 このように、関連処理タスク143の状態フラグFLの値により、関連処理タスク143が実行前状態、実行状態(実行中または実行中断)および実行完了状態のいずれに在るかを示すことができる。カウンタ153Bは、関連処理タスク143の状態フラグFLが‘01’または‘10’である時間を計測することにより、関連処理タスク143の実行時間を計測する。
[0104]
 <E.タスクに関する情報の設定>
 本実施の形態では、ユーザは、各タスクについて、優先度および当該タスクに割当てるプログラムを設定または変更することができる。
[0105]
 図8は、本実施の形態に係るタスクに優先度を設定するためのユーザインターフェイスを示す図である。図9は、本実施の形態に係るタスクにプログラムを割当てるユーザインターフェイスを示す図である。図8と図9のユーザインターフェイスは、サポート装置200の表示部218の表示画面として提供される。
[0106]
 本実施の形態では、タスクの優先度に関して、高優先制御タスク141は、ユーザプログラム150のタスクの中で最も高い優先度(最も実行順序が先である)を有し、高優先制御タスク141の優先度は固定である。ユーザプログラム150の他の各タスクの優先度は、高優先制御タスク141よりも低くなるように可変に設定することができる。ユーザは、図8のユーザインターフェイスを介して、高優先制御タスク141を除く他のタスクの優先度を設定することができる。
[0107]
 図8の画面では、各タスクについて、ユーザは、「タスクのタイプと優先度」、「タスク名」、「トリガの周期」、および「周期オーバ検知有無」の各項目を、入力部216を操作して設定することができる。なお、本実施の形態では、図8に示すように、プライマリ定周期タスクである高優先制御タスク141については、例えば、優先度‘4’で1msec毎に実行されるようデフォルト(固定値)が設定されている。
[0108]
 ユーザは、「制御タスク」を除く他のタスクについては任意に設定することができる。図8では、ユーザは、例えば、関連処理タスク143について、優先度として高優先度PHとして‘8’および低優先度PLとして‘18’を設定し、トリガ周期として‘10msec’を設定し、周期オーバ検知の欄では、第1時間T1として‘2msec’および第2時間T2として‘10msec’を設定する。なお、第1時間T1および第2時間T2は、これらの値に限定されない。例えば、ユーザは、第1時間T1および第2時間T2を、関連処理タスク143に要求されているリアルタイム性(タスクが実行開始されてから、予め定められた時間内に実行が終了する)に従い、当該予め定められた時間の許容範囲(例えば、上限の制限値と下限の制限値等)として設定することができる。
[0109]
 また、図9では、ユーザは、各タスクに割当てるプログラムを設定することができる。本実施の形態では、タスクに対して基本的に1つのプログラムを割当てるが、2つ以上のプログラムを割当ててもよい。例えば、図9では、関連処理タスク143であるタスクRTS1に、関連性のあるプログラムProgram0、Program1、Program2(特徴量生成プログラム、異常検知プログラム等)が割当てられている。
[0110]
 サポート装置200は、図8と図9のユーザインターフェィスにより設定された情報を、制御装置100に転送する。制御装置100の設定部152は、サポート装置200から受信した情報のうち、関連処理タスク143に対応の高優先度PHおよび低優先度PLの値を優先度情報152Bに設定する。また、タスク情報設定部154は、サポート装置200から受信した情報に基づき、タスク制御情報131の各タスクに対応したタスク名132、優先度133およびプログラム名134を設定する。
[0111]
 <F.タスクの管理>
 本実施の形態に係る制御装置100は、シングルコア動作モードとマルチコア動作モードを有し、各動作モードにおいてタスクの実行を管理する。具体的には、プロセッサ102は1または複数のコアプロセッサを有する。シングルコア動作モードは、1つのコアプロセッサを用いてタスクを実行するモードを示し、マルチコア動作モードは2つ以上のコアプロセッサを用いてタスクを実行するモードを示す。制御装置100の動作モードは切替え可能である。まず、シングルコア動作モードを説明する。
[0112]
 図10は、本実施の形態に係る関連処理タスクの実行を管理する処理を示すフローチャートである。図10では、スケジューラ151により関連処理タスク143の実行を管理するための管理処理PRが、マルチタスク実行部191による高優先制御タスク141と関連処理タスク143の実行を制御する処理と関連付けて示される。
[0113]
 マルチタスク実行部191による高優先制御タスク141と関連処理タスク143の実行を制御する処理は、OS190の一部を含むプログラムとして主記憶装置106に格納されている。また、スケジューラ151による管理処理PRは、プログラムとして二次記憶装置108に格納されている。プロセッサ102は、これらプログラムを主記憶装置106または二次記憶装置108から読出し実行する。なお、本実施の形態では、プロセッサ102は、管理処理PRのプログラムを定期的に実行する。
[0114]
 図10を参照して、周期Tが開始されると、プロセッサ102は、タスク制御情報131のタスクのうち、優先度133が最も高い高優先制御タスク141を実行する。具体的には、高優先制御タスク141の制御入力プログラム161はフィールド装置群10から入力するデータを内部DB130の入力変数に設定する(ステップS1、S2)。また、高優先制御プログラム163は内部DB130の入力変数のデータに基づく演算を実行し、フィールド装置群10の対象を制御するための制御データを内部DB130の出力変数に書込む(ステップS3、S2)。制御出力プログラム162は、ステップS2で設定された出力変数が示す制御データを読出し、対象を制御するために出力する(ステップS5)。
[0115]
 (f1:関連処理タスク143の高優先度に基づく管理)
 上記に述べた高優先制御タスク141の実行が終了すると、スケジューラ151は、それ以外のタスクが優先度に従い実行されるようにスケジューリングを実施する。ここでは、タスク制御情報131では、関連処理タスク143に対応の優先度133には初期値として「高優先度PH」が設定されており、この「高優先度PH」は高優先制御タスク141の優先度の次に高い優先度であるとする。
[0116]
 なお、この初期値の設定は、タスク情報設定部154により実施される。具体的には、例えばシステムが初期化(より特定的には制御装置100の初期化)された後に、実行指示部157が関連処理タスク143の実行開始条件の成立を最初に判断したとき、タスク情報設定部154は、上記の初期値の設定を実施する。
[0117]
 管理処理PRにおいて、スケジューラ151は、周期Tに同期した定周期トリガの出力(ステップS6)を受付けた場合において、実行指示を受付けたとき実行指示部157は上記の実行開始条件が成立したことを判断する(ステップ21)。実行開始条件が成立したとき、スケジューラ151は、関連処理タスク143の状態管理を開始する(ステップS23)。この実行指示は、高優先制御タスク141の処理(ステップS3)からの命令指示、または高優先制御タスク141による変数値をもとにしたイベント処理(ステップS7)からの自動指示を含む。
[0118]
 関連処理タスク143の状態管理が開始されると、スケジューラ151は、状態フラグFLに基づき関連処理タスク143が実行状態であるか否かを判断する(ステップS25)。この時点では、関連処理タスク143は実行されていないので状態フラグFLは‘00’を示す。
[0119]
 スケジューラ151は、状態フラグFLに基づき関連処理タスク143は実行状態ではないと判断すると(ステップS25でNO)、実行指示部157は実行開始指示をマルチタスク実行部191に出力する(ステップS27)。実行開始指示がマルチタスク実行部191に出力されると、カウンタ153Bは関連処理タスク143の実行時間の計測を開始する(ステップS29)。その後、スケジューラ151は管理処理PRを完了し(ステップS31)、ステップS23に戻る。
[0120]
 マルチタスク実行部191は、スケジューラ151からの実行開始指示を受付けたとき、タスク制御情報131における関連処理タスク143に対応の優先度133(この優先度は「高優先度PH」を示す)に基づき、関連処理タスク143を実行開始するべきタスクとして選択し、関連処理タスク143を実行前状態から実行状態に遷移させる。すなわち、マルチタスク実行部191は、関連処理タスク143に対応の状態フラグFLを‘00’→‘01’に変更する(ステップS41)。プロセッサ102は、スケジューラ151が選択した関連処理タスク143を実行する。具体的には、タスク制御情報131に基づき、関連処理タスク143に対応のプログラム名134が示す関連処理プログラム165を実行する(ステップS45)。
[0121]
 管理処理PRに戻り、スケジューラ151は、状態フラグFLに基づき、関連処理タスク143は実行状態であると判断すると(ステップS25でYES)、優先度切替部153は、カウンタ153Bが計測する関連処理タスク143の実行時間と、閾値152Aの時間とを比較する(ステップS33)。具体的には、優先度切替部153は、閾値152Aの第1時間T1と第2時間T2のうち、比較されるべき時間を、関連処理タスク143の優先度133に基づき決定する。ここでは、関連処理タスク143の優先度133は、高優先度PHを示す。したがって、優先度切替部153は第1時間T1を決定し、関連処理タスク143の実行時間と第1時間T1とを比較する。
[0122]
 優先度切替部153は、上記の比較の結果に基づき(実行時間>第1時間T1)の条件が成立する、すなわち実行時間が第1時間よりも長くなった(超過した)と判断したとき(ステップS33でYES)、優先度切替部153は、実行時間が第1時間T1を超えたことを示す超過通知をマルチタスク実行部191に出力するとともに、優先度切替処理を実施する(ステップS35)。優先度切替処理において、優先度切替部153は、タスク制御情報131の関連処理タスク143の優先度133を、優先度情報152Bの低優先度PLに変更する。その後、管理処理PRを完了し(ステップS31)、ステップS23に戻る。
[0123]
 また、優先度切替部153は、上述の(実行時間>第1時間T1)の条件が成立しないと判断したとき(ステップS33でNO)、すなわち実行時間は第1時間T1を超えていないと判断したときは、処理を完了し(ステップS31)、ステップS23に戻る。
[0124]
 マルチタスク実行部191は、プロセッサ102による関連処理タスク143の実行が終了すると、関連処理タスク143を実行状態から実行完了状態に遷移させる。すなわち、関連処理タスク143の状態フラグFLを‘01’→‘11’にリセットする(ステップS49)。また、関連処理タスク143は、処理結果(特徴量生成プログラムまたは異常検知プログラムの実行結果)を内部DB130の学習結果に設定する(ステップS47、S2)。
[0125]
 マルチタスク実行部191は、優先度切替部153から上述の超過通知を受付けると、超過通知対処処理を実施し(ステップS43)、ステップS45に移行する。この超過通知対処処理では、マルチタスク実行部191は、例えば、関連処理タスク143の実行を中断するか否かの判断処理を実施する。なお、超過通知対処処理の内容は、この判断処理に限定されない。
[0126]
 (f2:関連処理タスク143の低優先度に基づく管理)
 上記の高優先度に基づく処理が実施された後に、スケジューラ151が、次の定周期トリガを受付けた場合において、タスク制御情報131の関連処理タスク143に対応の優先度133が低優先度PLを示すケースを説明する。このケースは、例えば、上記に述べたステップS35において、優先度切替部153により関連処理タスク143の優先度133が低優先度PLに変更されたケースである。
[0127]
 なお、この「低優先度PL」は高優先制御タスク141の優先度の次に高い優先度であるとする。また、関連処理タスク143の優先度133(低優先度PL)は、低優先制御タスク142の優先度133と同じであるとする。
[0128]
 スケジューラ151は、関連処理タスク143の実行指示を受付けて実行開始条件が成立したことを判断する(ステップS21、S23)。次に、スケジューラ151は状態フラグFLに基づき関連処理タスク143が実行状態ではないと判断し(ステップS25でNO)、実行指示部157は、マルチタスク実行部191に実行開始指示を出力する(ステップS27)。マルチタスク実行部191は、実行開始指示を受付けると関連処理タスク143をプロセッサ102に実行させる。具体的には、マルチタスク実行部191は、タスク制御情報131の優先度133に従い、関連処理タスク143と低優先制御タスク142を選択し、両者を実行前状態から実行状態に遷移させるとともに、カウンタ153Bは関連処理タスク143の実行時間の計測を開始する(ステップS41、S45、S29)。その後、関連処理タスク143の実行が終了すると、関連処理タスク143の状態フラグFLのリセット(ステップS49)および関連処理タスク143の実行結果の処理(ステップS47)が行われる。
[0129]
 ここでは、2つのタスク(すなわち、低優先制御タスク142と関連処理タスク143)が交互実行されるが、カウンタ153Bは、関連処理タスク143の状態フラグFLの値に基づき、交互実行において、実行中断(サスペンド)の時間を含めた関連処理タスク143の実行時間を計測する。
[0130]
 ステップS33に戻る。優先度切替部153は、カウンタ153Bが計測する関連処理タスク143の実行時間を、閾値152Aの時間と比較する(ステップS33)。具体的には、優先度切替部153は、閾値152Aの第1時間T1と第2時間T2のうち、比較されるべき時間を、関連処理タスク143の優先度133に基づき決定する。ここでは、関連処理タスク143の優先度133は低優先度PLを示す。したがって、優先度切替部153は第2時間T2を決定し、関連処理タスク143の実行時間を第2時間T2と比較する。
[0131]
 優先度切替部153は、上記の比較の結果に基づき(実行時間>第2時間T2)の条件が成立する、すなわち実行時間が第2時間T2よりも長くなった(超過した)と判断したとき(ステップS33でYES)、優先度切替部153は、実行時間が第2時間T2を超えたことを示す超過通知をマルチタスク実行部191に出力するとともに、優先度切替処理を実施する(ステップS35)。優先度切替処理において、優先度切替部153は、タスク制御情報131の関連処理タスク143の優先度133を、優先度情報152Bの高優先度PHに変更する。その後、管理処理PRを完了し(ステップS31)、ステップS23に戻る。
[0132]
 なお、優先度切替処理は、図10では、実行時間が第1時間T1または第2時間T2を超えたときに実施される(ステップS35)が、実施の時期はこれに限定されない。例えば、関連処理タスク143の実行開始条件が成立したときに優先度切替処理が実施されてもよい。このケースでは、関連処理タスク143の実行時間が第1時間T1または第2時間T2を超えた場合は、その後に関連処理タスク143の実行開始条件が成立したときに、優先度切替部153は、タスク制御情報131の関連処理タスク143の優先度133を、優先度情報152Bの高優先度PHまたは低優先度PLに設定する。
[0133]
 (f3:関連処理タスク143の優先度切替えによる利点)
 図10のスケジューラ151の管理処理PRによれば、関連処理タスク143の実行時間が第1時間T1を超えない間は、高優先度PHが維持される。したがって、リアルタイム性を維持しながら関連処理を実行することができて、例えば実行時間毎に得られる関連処理(異常検知処理等)の結果を用いた対象のリアルタイム制御を実現することが可能となる。また、実行時間が第1時間T1を超えると関連処理タスク143の優先度を低くすることで他のタスク、例えば、他の制御タスクである低優先制御タスク142が優先的に実行可能となるので、低優先制御タスク142の実行結果(モーション制御の軌道データ)を用いた対象の確実なリアルタイム制御が可能となる。したがって、制御タスクによる対象のリアルタイム制御の実現を保証しながら、非制御タスクによるリアルタイムな関連処理の実行も実現することが可能となる。
[0134]
 また、同じ優先度の他のタスクと交互実行がなされた結果、関連処理タスク143の実行時間が閾値152Aを超える場合は、関連処理タスク143の優先度が変更されるので、その後は、交互実行を回避することが可能となり、閾値を超えない実行時間で、関連処理タスク143を実行完了させることが可能となる。また、交互実行が解消(回避)されることで他のタスクも実行時間が短くなる。これにより、他のタスクが例えば低優先制御タスク142であれば、その実行結果(モーション制御の軌道データ)を用いた対象のリアルタイム制御がより確実に実現可能となる。
[0135]
 また、交互実行がなされない場合であっても、関連処理タスク143の実行時間が閾値152Aを超えるときは、関連処理タスク143の実行によりプロセッサ資源が比較的、長時間にわたり占有状態となり、他のタスクの実行が妨げられる。この点に関し、関連処理タスク143の実行時間が第2時間T2を超えるときは、スケジューラ151は、関連処理タスク143の優先度を低優先度PL→高優先度PHと高くすることで、関連処理タスク143を早く実行完了させて、他のタスクである例えば低優先制御タスク142に、早い時期に資源を開放する(割当てる)ことが可能となる。また、関連処理タスク143の実行時間が第1時間T1を超えるときは、スケジューラ151は、関連処理タスク143の優先度を高優先度PH→低優先度PLと低くすることで、より優先度の高い他のタスクに資源を開放することができる。これにより、例えば、他のタスクが、モーション制御の軌道計算のための低優先制御タスク142であれば、高優先制御タスク141のモーションプログラムに速やかに軌道データを出力することが可能となり、対象のリアルタイム制御をより確実に実施することが可能となる。
[0136]
 <G.関連処理タスク143のスケジューリングモデル>
 図10の管理処理PRによる関連処理タスク143の実行の管理を、タスク実行のスケジューリングモデルを用いて、さらに説明する。図11(A)と(B)は、本実施の形態に係る関連処理タスク143のスケジューリングモデルを示す図である。図12は、図11に関連付けて関連処理タスク143の優先度切替を例示する図である。図11の縦軸は、タスクの優先度を示し、横軸はn番目の周期T、(n+1)番目の周期T、(n+2)番目の周期、(n+3)番目の周期・・・とした時間経過を示す。
[0137]
 本実施の形態では、関連処理タスク143の高優先度PHは低優先制御タスク142等の他のタスクの優先度以下となり得る。例えば、図11(A)は、関連処理タスク143の高優先度PHが低優先制御タスク142の優先度と同じケースである。また、本実施の形態では、関連処理タスク143の低優先度PLは低優先制御タスク142等の他のタスクの優先度以上となり得る。例えば、図11(B)は、関連処理タスク143の優先度が低優先度PLである場合の例(1)と例(2)のケースを示す。図11(B)の例(1)は、関連処理タスク143の低優先度PLが、低優先制御タスク142の優先度とサービスタスク144の優先度との間の値を示すケースである。例(2)は、関連処理タスク143の低優先度PLが、低優先制御タスク142の優先度よりも低く、且つサービスタスク144の優先度と同じケースである。
[0138]
 (g1:関連処理タスク143が高優先度の場合のスケジューリングモデル)
 図11(A)を参照して、各周期Tはタイマ101の出力に同期した周期開始信号に応じて開始する。このとき、タスク制御情報131には、図12(A)のように、各タスクの優先度が設定されているとする。周期Tが開始されると、まず、最も優先度の高い高優先制御タスク141(制御入力プログラム161、制御出力プログラム162および高優先制御プログラム163)が実行されて、その後に、図12(A)のタスク制御情報131の高優先度(=16)に従い、マルチタスク実行部191は、同じ優先度133である低優先制御タスク142と関連処理タスク143を交互実行する。関連処理タスク143の実行時間t(図11(A)参照)は、交互実行における実行中断の時間(すなわち、低優先制御タスク142が実行中の時間)も含んで計測されている。
[0139]
 図11(A)の実行時間tが(t≦第1時間T1)である場合は、優先度切替部153は優先度切替処理を実施しないので、関連処理タスク143の優先度133は図12(A)の高優先度のままである。一方、図11(A)の実行時間tが(t>第1時間T1)である場合は、優先度切替部153は優先度切替処理を実施する。これにより、関連処理タスク143の優先度133は、図12(A)の優先度から図12(B)または図12(C)に示される低優先度(=48)に切替わる。
[0140]
 (g2:関連処理タスク143が低優先度の場合のスケジューリングモデル)
 図11(B)の例(1)を参照して、図12(B)に示すように関連処理タスク143が低優先度PLの場合を説明する。図11(A)と同様に、まず、高優先制御タスク141が実行されて、その後に他のタスクが実行される。この場合、図12(B)のタスク制御情報131によれば、低優先制御タスク142の優先度は関連処理タスク143の優先度よりも高い。したがって、マルチタスク実行部191は、低優先制御タスク142を実行し、次に関連処理タスク143を実行する。
[0141]
 例(1)では、実行時間tは(t>第2時間T2)であるとすれば、優先度切替部153は優先度切替処理を実施する。これにより、関連処理タスク143の優先度133は、図12(A)のタスク制御情報131が示す元の高優先度に戻る。
[0142]
 図11(B)の例(2)を参照して、図12(C)に示すように関連処理タスク143が低優先度の場合を説明する。例(2)でも図11(A)と同様に、まず、高優先制御タスク141が実行されて、その後に他のタスクが実行される。この場合、図12(C)のタスク制御情報131によれば、低優先制御タスク142の優先度は関連処理タスク143の優先度よりも高く、且つ関連処理タスク143の優先度はサービスタスク144の優先度と同じである。したがって、マルチタスク実行部191は、低優先制御タスク142を実行し、次に、同じ優先度である関連処理タスク143とサービスタスク144を交互実行する。
[0143]
 例(2)では、関連処理タスク143の実行時間tは(t>第2時間T2)であるとすれば、優先度切替部153は優先度切替処理を実施する。これにより、関連処理タスク143の優先度133は図12(A)のタスク制御情報131が示す元の高優先度に戻るように切替えられる。
[0144]
 <H.関連処理タスク143の他の例>
 上記に述べた関連処理タスク143は、リアルタイム制御のための高優先制御タスク141に関連する処理として特徴量生成処理および異常検知処理が割当てられるが、関連処理タスク143に割当てられる処理は、制御装置100内において実施される通信処理も含まれる。この通信処理は、具体的には、特徴量生成処理または異常検知処理に関連するデータを、二次記憶装置108を含む各種装置と通信する処理を含み得る。
[0145]
 また、上記の特徴量生成処理または異常検知処理に関連するデータは、特徴量を生成するためにフィールド装置群10から受付ける生(raw)データ、特徴量生成処理の結果(生成された特徴量など)、異常検知の結果などを含むが、これらに限定されない。特徴量生成処理の結果および異常検知の結果の通信処理は、二次記憶装置108との通信、およびローカルネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114などを介した外部装置との通信を含み得る。また、生(raw)データおよび異常検知の結果の通信処理は、内部バスコントローラ122と、フィールドバスコントローラ118,120と、I/Oユニット124-1,124-2,…などを介した外部装置との通信を含み得る。
[0146]
 <I.タスクに関する情報の設定の他の例>
 図8と図9で述べたタスクに関する情報の設定の他の例を説明する。図13は、本実施の形態に係る複数の関連処理タスクに優先度と閾値を設定する例を示す図である。図5では、設定部152は、優先度情報152Bと閾値152Aを個別に設定したが、図13のように1つのテーブル形式で設定するとしてもよい。
[0147]
 図13では、例えば、関連処理タスク143が複数のタスクRTS1とRTS2を含む場合が示される。図13では、設定部152により、各タスクRTSiに対応して、優先度(高優先度PH、低優先度PL)と閾値(第1時間T1と第2時間T2)がテーブル形式で設定される。
[0148]
 図14は、本実施の形態に係る複数の関連処理タスクに対するプログラムの割当て方法を示す図である。図14の下段は、関連処理タスクへのプログラムの割当を実施するためのユーザインターフェイスとしての画面例を示す。画面は、サポート装置200の表示部218に表示される。開発プログラム222は、関連処理プログラム165の構造を解析し、解析の結果に基づき、関連処理プログラム165に含まれる複数のプログラム(特徴量生成プログラムおよび異常検知プログラム)を抽出して表示する。
[0149]
 ユーザは、入力部216を操作して、図14の画面から、関連処理タスク143に割当てるプログラムを設定する。図14の上段では、関連処理タスク143として3つのタスクRTS1~RTS3を設定することが可能である場合に、各タスクRTSiに対応して、ユーザが、異常検知プログラムまたは特徴量生成プログラムを割当てた(プログラム名134を設定した)状態が示される。
[0150]
 このように、図14の下段で示す関連処理プログラム165のプログラム構成情報を、ユーザが各タスクRTSiに割当てるプログラムを判断するための支援情報として提供することができる。
[0151]
 <J.収集情報とデバッグ>
 本実施の形態では、収集部155は、関連処理タスク143の実行時にスケジューリングに関する情報をログ135として記録する。デバッグツール227は、このログ135を収集して得られる収集情報228に基づき、デバッグを支援するための情報を生成し、生成した支援情報をユーザに提供する。
[0152]
 本実施の形態では、「デバッグ」とは、ユーザが設定したユーザ設定情報(第1時間T1、第2時間T2、優先度(高優先度PHおよび低優先度PL)、関連処理タスク143に割当てるプログラム内容(プログラム名、種類を含む))を、調整または変更する作業を示す。ユーザは、例えば、リアルタイム制御を確実に実施することが可能な目標に近づけるようにデバッグを行なう。
[0153]
 図15は、本実施の形態に係るデバッグのための支援情報の表示例を示す図である。図16は、本実施の形態に係るモニタ情報153Aとログ135の一例を示す図である。図17は、本実施の形態に係る収集情報228の一例を示す図である。
[0154]
 (J1:収集される情報)
 本実施の形態では、収集部155は、関連処理タスク143の実行中に優先度切替部153から出力されるモニタ情報153Aを受付けて、受付けたモニタ情報153Aをログ135として二次記憶装置108に格納する。モニタ情報153Aは、関連処理タスク143の実行のスケジューリングに関する情報であり、例えばカウンタ153Bが出力する現在の計測時間および現在の優先度(高優先度PHまたは低優先度PLのいずれか)を含む。
[0155]
 図16(A)はモニタ情報153Aの一例を示し、図16(B)はログ135の一例を示す。例えば、関連処理タスク143であるタスクRTS1について、第1時間T1=2msecおよび第2時間T2=10msecと設定されていたケースを想定する。このケースにおいて、タスクRTS1は高優先度PHで実行が開始されて、実行が終了したときに、例えば優先度切替部153からは、図16(A)のモニタ情報153Aが出力されて、且つログ135として図16(B)が記録される。
[0156]
 具体的には、図16(A)のモニタ情報153Aは、タスクRTS1の実行終了時の優先度は‘高優先度’であり、この高優先度で実行を開始してから0.2msecの経過で実行が終了したことを示す。また、図16(B)のログ135は、タスクRTS1は実行開始から完了するまでに優先度は2回の切替え(すなわち、高優先度→低優先度→高優先度)がなされて、実行時間として合計12.2msecが必要であったことを示す。
[0157]
 サポート装置200のデバッグツール227は、制御装置100からログ135を受信し、ログ135に基づき収集情報228を生成する。図17(A)を参照して収集情報228は、関連処理タスク143について、タスク名71、実行された総回数である実行回数82、実行時間の代表値(最小、平均、最大)83および優先度切替数の代表値(最小、平均、最大)84等の統計情報を含む。実行時間の代表値83は、実行回数82が示す21103回のタスク実行の実行時間のうちの最小値、平均値および最大値を示す。また、優先度切替数の代表値84は、実行回数82が示す21103回の各実行においてカウントされた優先度の切替え回数のうちの最小値、平均値および最大値を示す。
[0158]
 また、収集情報228は、図17(B)の情報を含む。図17(B)は、図17(A)の21103回の実行に関する情報の内訳を示す。具体的には、関連処理タスク143について、情報の組(すなわち高優先度PH、低優先度PL、第1時間T1および第2時間T2の組)毎に、タスク名71、優先度が‘高優先度’で実行終了した場合の統計情報96と97、および優先度が‘低優先度’で実行終了した場合の統計情報98と99を含む。
[0159]
 統計情報96は、タスクRTS1について、特定の情報の組(高優先度、低優先度、第1時間T1および第2時間T2の組)に基づきタスクRTS1の実行がなされた場合において、実行開始から終了までに4回の優先度切替えがなされて‘高優先度’で実行終了したケースは、トータル23回であることを示す。また、統計情報97は、その23回のタスク実行について実行時間の最小値、平均値および最大値は、それぞれ、0.1msec、0.8msecおよび1.9msecであることを示す。
[0160]
 同様に、統計情報98は、タスクRTS1について、上記の特定の情報の組に基づき実行がなされた場合において、実行開始から終了までに5回の優先度切替えがなされて‘低優先度’で実行終了したケースは、トータル11回であることを示す。また、統計情報99は、その11回のタスク実行について実行時間の最小値、平均値および最大値は、それぞれ、0.1msec、0.4msecおよび0.5msecであることを示す。
[0161]
 (J2:デバッグツール)
 デバッグツール227が収集情報228に基づき生成するデバッグ支援情報は、図15に示す表示部218の画面としてユーザに提供される。例えば、図15の画面の上段には、図17(B)の統計情報96および97に基づく画像が表示されて、下段には図17(B)の統計情報98および99に基づく画像が表示される。
[0162]
 ユーザは、図15の画面の収集情報228とリアルタイム制御のための目標とを比較し、比較の結果から、タスクRTS1に設定した閾値152A(第1時間T1および第2時間T2)または優先度情報152B(高優先度PH、低優先度PL)が、リアルタイム制御を確実に実施するために適当であったか否かを判断する指針を得ることができる。また、ユーザは、上記の比較の結果から、タスクRTS1に割当てたプログラムが適当であったかを判断する指針を得ることもできる。
[0163]
 ユーザは、上記の判断に基づき、例えば図8のユーザインターフェイスを介して、タスクRTS1に設定した閾値152A(第1時間T1および第2時間T2)または優先度情報152B(高優先度PH、低優先度PL)を変更する。または、例えば図13のユーザインターフェイスを介してタスクRTS1に割当てたプログラムを変更する。
[0164]
 例えば、タスクRTS1が低優先度に切替られる回数が目標よりも多い場合には、他のタスクと交互実行されて、結果として実行時間が長くなり、低優先度に切替えられていることが推定可能である。この場合は、ユーザは、第1時間T1を長くするよう変更する、または交互実行を回避できるよう元の高優先度PHの値を変更することで、低優先度に切替られる回数を減らすことができる可能性がある。
[0165]
 また、例えば、タスクRTS1が高優先度に切替られる回数が目標よりも多い場合には、他のタスクと交互実行されて、結果として実行時間が長くなり、高優先度に切替えられていることが推定可能である。この場合は、ユーザは、第2時間T2を長くするよう変更する、または交互実行を回避できるよう元の低優先度PLの値を変更することで、高優先度に切替られる回数を減らすことができる可能性がある。
[0166]
 また、タスクRTS1に特徴量生成プログラムを割当てていた場合に、タスク実行時間が目標よりも長いまたは低優先度への切替回数が目標よりも多いときは、特徴量生成プログラムの実行がプロセッサ102に高い負荷をかけていることが推定され得る。
[0167]
 具体的には、特徴量生成プログラムは、高速フーリエ変換などの演算量が多い(演算時間が長い)処理を含み得る。ユーザは、上記の負荷を軽減するために、開発プログラム222を実行して特徴量生成プログラムを変更する。例えば、生成される特徴量の種類を変更または減じて演算量が少なくなるように、特徴量生成プログラムを変更する。
[0168]
 サポート装置200は、上記の変更後の閾値152Aまたは変更後の優先度情報152Bまたは変更後の特徴量生成プログラムを、制御装置100に送信する。スケジューラ151は、これら変更後の情報に基づきタスク制御情報131を生成し、タスク制御情報131に基づき、タスクRTSを再度実行する。デバッグツール227は、再度実行される場合に取得された収集情報228に基づくモニタ画面(図15)を表示する。このモニタ画面は、閾値(第1時間T1、第2時間T2)または優先度情報(高優先度PH、低優先度PL)または特徴量生成プログラム等のデバッグによる変更内容が、リアルタイム制御を確実に実施するのに適切であったか否かを判断するための支援情報を、ユーザに提供する。
[0169]
 <K:優先度切替の他の判断条件>
 上記の実施の形態では、優先度切替処理(図10のステップS35)は、実行時間が第1時間T1または第2時間T2を超過したときに(ステップS33でYES)実施されたが、優先度切替処理を実施するための条件は、実行時間が第1時間T1または第2時間T2を超過したことに限定されない。
[0170]
 例えば、スケジューラ151は、関連処理タスクの実行時間が第1時間T1または第2時間T2を超過した回数をカウントする。スケジューラ151は、優先度切替処理を実施するための条件として、このカウント値が予め定められたN(N≧2)回以上となったときに、優先度切替処理を実施する。なお、Nは、ユーザが設定可能な値である。
[0171]
 <L:マルチコア動作モード>
 上記の実施の形態では、制御装置100がシングルコア動作モードにおいて、スケジューラ151は、プロセッサ102の1つのプロセッサコアで関連処理タスク143を実行する場合を説明したが、ここでは、プロセッサ102が有する2つ以上のプロセッサコアを利用したマルチコア動作モードを説明する。制御装置100がマルチコア動作モードに切替えられた場合は、スケジューラ151はコア切替部156を起動する。
[0172]
 プロセッサコアは、演算器、プログラムカウンタなどのタスクを実行するための機器を組合わせて構成される。したがって、マルチコア動作モードでは、複数のプロセッサコアを用いて、複数のタスクを並列に実行することができる。本実施の形態では、プロセッサ102は、例えばプロセッサコアとして4個のプロセッサコアであるCore1~Core4を備える場合を説明するが、プロセッサコアの数は2個以上であればよく、4個に限定されない。以下では、4個のプロセッサコアを、その識別子であるコア番号Core1~Core4を用いて説明する。
[0173]
 (L1:コア情報の設定)
 図18は、本実施の形態に係るコア情報136を示す図である。コア情報136は、マルチコア動作モードにおいて、関連処理タスク143を実行するコアプロセッサに関する情報を示す。サポート装置200は、入力部216からのユーザの操作内容に基づき、コア情報136を受付けて、受付けたコア情報136を制御装置100に送信する。制御装置100のプロセッサ102は、サポート装置200から受信するコア情報136を二次記憶装置108に格納する。プロセッサ102は、タスクを実行時には、コア情報136を二次記憶装置108から読出し、主記憶装置106に展開する。
[0174]
 図18を参照して、コア情報136は、関連処理タスク143の各タスクRTSiについて、動作コア指定137および割当モード138のデータを含む。動作コア指定137は、対応のタスクRTSiを実行するためのプロセッサコアを指定する情報を示す。割当モード138は、当該タスクRTSiを実行するプロセッサコアを‘動的’に切替える、または‘固定’にするかを指定するデータ139と、‘固定’と指定された場合の当該タスクRTSiを実行するべきプロセッサコアを示すデータ140を含む。
[0175]
 図17を参照して、具体的には、タスク‘RTS1’には、Core2とCore3が割当られて、割当モードは‘動的’を示す。この場合、タスク‘RTS1’を実行するプロセッサコアはCore2またはCore3のいずれかに切替え可能であることを示す。これに対してタスク‘RTS2’には、Core2とCore3が割当られて、割当モードは‘固定(高=2、低=3)’を示す。この場合、タスク‘RTS2’を実行するときに、優先度が高優先度であればCore2で実行し、優先度が低優先度であればCore3で実行することを指定する。
[0176]
 (L2:マルチコアスケジューリング)
 マルチコア動作モードにおいて、関連処理タスク143(タスクRTSi)を実行するためのスケジューリングを説明する。マルチコア動作モードでは、コア切替部156は、OS190からCPU利用率159を受け付ける。OS190は、CPU利用率159を計測する。CPU利用率159は、例えばCore1~Core4のそれぞれについて、当該プロセッサコアがタスクの実行などに使用されていないidle状態である確率(単位時間あたりのidle状態の時間の割合:空き率E)を示す。
[0177]
 スケジューラ151が、関連処理タスク143を実行状態に遷移させる場合に、コア切替部156は、コア情報136に基づき、またはCPU利用率159およびコア情報136の両方に基づき、当該関連処理タスク143を実行するべきプロセッサコアを決定する命令を含む。コア切替部156は、決定したプロセッサコアを示すコア指定命令158を、OS190に出力する。これを、スケジューラ151による「マルチコアスケジューリング」ともいう。OS190は、コア指定命令158により指定されるプロセッサコアを用いて、実行状態に遷移した当該関連処理タスク143を実行する。
[0178]
 マルチコアスケジューリングでは、以下に説明する動作モードM1~M7のいずれかが実施される。なお、動作モードM1~M7においては、上記のシングルコア動作モードと同様に、まずマルチタスク実行部191はプライマリ定周期タスクである高優先制御タスク141を、Core1~Core4のうちの1つ以上のプロセッサコアにおいて実行する。
[0179]
 (L3:関連処理タスク143が1つの場合のスケジューリングモデル)
 図19は、実施の形態に係るマルチコアスケジューリングにおいて1つの関連処理タスク143を実行する例を示す図である。図19では、まず高優先度の関連処理タスク143(以下、タスクRTSとも称する)を実行し、次に低優先度のタスクRTSを実行するケースを説明する。
[0180]
 図19(A)の動作モードM1は、コア情報136が「タスク‘RTS’には、Core2とCore3が割当られて、割当モードは‘動的’」を示すケースである。‘動的’と指示される場合、コア切替部156は、CPU利用率159およびコア情報136に基づき、より空き率Eの大きい(すなわち、関連処理タスク143に割当可能な資源が多い)プロセッサコアを、タスクRTSを実行するべきプロセッサコアとして決定する。
[0181]
 図19(A)を参照して、タスクRTSを実行開始前のCPU利用率159から、コア切替部156は(Core3の空き率E>Core2の空き率E)と判断する。したがって、コア切替部156は、判断に基づき、空き率Eの大きい方のCore3を決定し、決定されたCore3を示すコア指定命令158を出力する。これにより、マルチタスク実行部191は、高優先度のタスクRTSをCore3において実行する。
[0182]
 タスクRTSがCore3で実行されて、優先度切替部153により、高優先度から低優先度に切替えられた場合を説明する。低優先度のタスクRTSを実行する場合、コア切替部156は、CPU利用率159から(Core3の空き率E>Core2の空き率E)と判断し、判断に基づき、空き率Eの大きい方のCore3を決定し、Core3を示すコア指定命令158を出力する。これにより、低優先度のタスクRTSは、Core3において実行される。
[0183]
 これに対して、図19(B)の動作モードM2は、コア情報136が「タスク‘RTS’には、Core2とCore3が割当られて、割当モードは‘固定(高優先度の場合はCore2、低優先度の場合はCore3)’」を示すケースである。
[0184]
 したがって、コア切替部156は、CPU利用率159によらず、コア情報136に基づき、タスクRTSを実行するべきプロセッサコアを決定する。図19(B)を参照して、例えば、タスクRTSが高優先度であるときは、コア切替部156は、Core2を示すコア指定命令158を出力する。タスクRTSがCore2で実行されて、優先度切替部153により、高優先度から低優先度に切替えられた場合は、コア切替部156は、コア情報136に基づき、Core3を決定し、Core3を示すコア指定命令158を出力する。これにより、マルチタスク実行部191は、低優先度のタスクRTSを、Core3において実行する。
[0185]
 (L4:関連処理タスク143が複数の場合のスケジューリングモデル)
 図20は、本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク143を実行する例を示す図である。図19の動作モードM1とM2では、1つのタスクRTSを実行する場合であったが、図20の動作モードM3とM4では、スケジューラ151は複数のタスクRTSをスケジューリングする。図20を参照して、高優先度のタスクRTS1~RTS3を実行し、次に低優先度のタスクRTS1~RTS3を実行する場合を説明する。
[0186]
 まず、図20(A)の動作モードM3は、コア情報136が「タスク‘RTS1~RTS3’には、Core2とCore3が割当られて、割当モードは‘動的’」を示すケースである。図20(B)の動作モードM4は、コア情報136が「タスク‘RTS1~RTS3’には、Core2とCore3が割当られて、割当モードは‘固定(高優先度の場合はCore2、低優先度の場合はCore3)’」を示すケースである。
[0187]
 図20(A)の動作モードM3では、同じ優先度(高優先度)であるタスクRTS1~RTS3を実行するために、コア切替部156は、CPU利用率159に基づき、最も空き率Eの高いCore3を、タスクRTS1~RTSを実行するべきプロセッサコアとして決定し得る。
[0188]
 この場合に、1つのプロセッサコア(すなわちCore3)において、3つのタスクRTS1~RTS3の並列実行(交互実行)がなされる。そのため、各タスクの実行時間は比較的長くなり得る。したがって、実行時間を短縮するために、例えば、Core3の空き率Eが閾値以上である場合には、コア切替部156は、Core3をタスクRTS1とRTS2の2つのタスクを実行するべきプロセッサコアと決定し、タスクRTS3のために他のプロセッサコア(すなわちCore2)を決定する。これにより、複数の関連処理タスク143を実行する場合に、プロセッサコアの間で負荷を分散させて、各関連処理タスク143の実行時間を短くすることが可能となる。
[0189]
 また、タスクRTS1~RTS3が低優先度に切替えられた場合は、コア切替部156は、CPU利用率159が示す空き率Eの大きい1つのプロセッサコア(すなわちCore3)を、タスクRTS1~RTS3を実行するプロセッサコアと決定する。または、タスクRTS1とRTS2をCore3で実行しタスクRTS3を他のプロセッサコア(すなわちCore2)で実行すると決定してもよい。これにより、上記に述べたようなプロセッサコアの間の負荷分散と各タスクの実行時間の短縮が可能になる。
[0190]
 図20(B)の動作モードM4では、同じ高優先度であるタスクRTS1~RTS3を実行するために、コア切替部156は、CPU利用率159によらず、コア情報136に従いCore2を、タスクRTS1~RTSを実行するプロセッサコアとして決定する。スケジューラ151は、Core2において、タスクRTS1→タスクRTS2→タスクRTS3と順番にタスクが実行されるようスケジューリングする。
[0191]
 また、タスクRTS1~RTS3が低優先度に切替えられた場合は、コア切替部156は、CPU利用率159によらず、コア情報136に従いCore3を、タスクRTS1~RTSを実行するプロセッサコアと決定する。スケジューラ151は、Core3において、タスクRTS1→タスクRTS2→タスクRTS3と順番にタスクが実行されるようスケジューリングする。
[0192]
 (L5:関連処理タスク143が複数の場合のスケジューリングモデル-2)
 図21は、本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク143を実行する他の例を示す図である。
[0193]
 図21(A)の動作モードM5は、図20(A)と同様に、コア切替部156は、CPU利用率159とコア情報136に従い、タスクRTS1~RTS3を実行するプロセッサコアを決定する。
[0194]
 図21(B)の動作モードM6は、図20(B)の動作モードM4のスケジューリングモデルの変形例を示す。図20(B)では、スケジューラ151は、Core3(またはCore2)において、タスクRTS1→タスクRTS2→タスクRTS3と順番に実行する。そのため、最後に実行されるタスクRTS3は他のタスクの実行が終了するまで待つことになり、タスクRTS3の実行時間は長くなる。
[0195]
 これに対して、図21(B)の動作モードM6では、スケジューラ151は、Core3(またはCore2)において、タスクRTS1~RTS3を並列に実行(すなわち交互実行)するようスケジューリングする。これにより、各タスクについての実行時間を平均化することができる。
[0196]
 また、本実施の形態では、ユーザは、コア情報136に従い複数のタスクを実行するモードとして、動作モードM4(図20(B)参照)または動作モードM6(図20(B)参照)を指定することができる。
[0197]
 (L6:関連処理タスク143が複数の場合のスケジューリングモデル-3)
 図22は、本実施の形態に係るマルチコアスケジューリングにおいて複数の関連処理タスク143を実行する更なる他の例を示す図である。図22の動作モードM7は、コア情報136が「タスク‘RTS’には、Core2とCore3が割当られて、割当モードは‘固定(高優先度の場合はCore2、低優先度の場合はCore3)’」を示すケースである。
[0198]
 動作モードM7では、コア切替部156は、CPU利用率159によらず、コア情報136に基づき、高優先度であるタスクRTS1~RTS3を実行するプロセッサコアを、Core2と決定する。同様に、コア切替部156は、低優先度であるタスクRTS1~RTS3を実行するプロセッサコアを、Core3と決定する。
[0199]
 動作モードM7によれば、高優先度の複数の関連処理タスク143が実行状態に遷移する場合に、各タスクのリアルタイム性を実現することが可能となる。具体的には、図21を参照して、高優先度のタスクRTS1~RTS3を実行する場合には、スケジューラ151は、Core2において、タスクRTS1→タスクRTS2→タスクRTS3と順番に実行する(図22のケースC1→ケースC2→ケースC3を参照)。したがって、高優先度の各タスクは、当該タスクが実行される場合に、Core2の利用可能な資源を占有して実行された、当該タスクの実行時間の短縮が可能となる。
[0200]
 次に、高優先度のタスクRTS1がCore2で実行された場合に、実行時間が第1時間T1を超えたために低優先度に切替えられたときは、コア切替部156は、コア情報136に従い、タスクRTS1を実行するプロセッサコアを、Core3と決定する(ケースC2)。このケースでは、Core3における低優先度のタスクRTS1の実行と、Core2における高優先度のタスクRTS2の実行とが並行してなされる。
[0201]
 次に、高優先のタスクRTS2のCore2における実行時間が第1時間T1を超えた(ただし、タスクRTS1のCore3における実行時間は第2時間T2を超えていない)ときは、タスクRTS2は低優先度に切替えられる。この場合は、コア切替部156は、コア情報136に従い、タスクRTS2を実行するプロセッサコアをCore3と決定する。したがって、タスクRTS1とタスクRTS2のCore3における実行と、高優先のタスクRTS3のCore2における実行とが並行してなされる(ケースC3)。
[0202]
 次に、高優先のタスクRTS3のCore2における実行時間が第1時間T1を超えた(ただし、タスクRTS1とRTS2のCore3における実行時間は第2時間T2を超えていない)ときは、タスクRTS3の優先度は低優先度に切替えられる。この場合は、コア切替部156は、コア情報136に従い、タスクRTS1を実行するプロセッサコアをCore3と決定する。したがって、タスクRTS1~RTS3は、Core3において交互実行される(ケースC4)。
[0203]
 最後に、低優先のタスクRTS1のCore3における実行時間が第2時間T2を超えた(ただし、タスクRTS2とRTS3のCore3における実行時間は第2時間T2を超えていない)ときは、タスクRTS1の優先度は高優先度に切替えられる(ケースC5)。この場合は、Core2におけるタスクRTS1の実行と、Core3におけるタスクRTS2およびRTS3の交互実行とが並行してなされる。
[0204]
 本実施の形態に係るマルチコア動作モードでは、ユーザは、複数のタスクRTS1~RTS3を実行する場合に、上記に述べた動作モードM4、M6およびM7のいずれのモードで実行させるか指定することができる。
[0205]
 <M.変形例>
 図23は、本実施の形態に係る関連処理タスク143の変形例を説明する模式図である。図24は、本実施の形態に係る予測制御モデルの一例を模式的に示す図である。上記の実施の形態では、関連処理タスク143の一例として異常検知プログラムを説明したが、関連処理は異常検知プログラムに限定されない。例えば、(c2.機能構成)で述べた関連処理タスク143は、制御装置100により制御される対象(以下、対象90と呼ぶ)を、予測制御モデルを用いて制御する予測制御プログラムを含んでもよい。対象90は、例えば、図1のフィールド装置群10に備えられる機器などである。予測制御プログラムは、変数のうち対象90に与える指令値を用いて、対象90の制御量を予測して、制御パラメータの補正値を出力する命令を含む。このような命令が実行されることにより、図23の補正値算出処理1431が実現される。
[0206]
 本実施の形態では、予測制御モデルは、例えば対象90の応答を予測しながら対象90の最適化制御を実現するために適用されるプロセスのモデルである。
[0207]
 なお、指令値および制御量は、図5の内部DB130に格納されている変数により示される。これら指令値および制御量は、図5の制御入力プログラム161および制御出力プログラム162がI/Oリフレッシュ処理を実施することにより図1のフィールド装置群10との間で遣り取りされるデータ(入力データおよび出力データ)であって、内部DB130の変数に設定される。
[0208]
 図23では、制御装置100で実行される関連処理タスク143と、高優先制御タスク141の一例である制御演算タスク1411が示される。制御演算タスク1411は実行されると、予め定められたパターン1511に従って制御周期毎に指令値1516を生成し、対象90に指令値1516を出力し、また、対象90から、指令値1516に対する応答値(フィードバック値)である制御量1517を入力する。
[0209]
 関連処理タスク143は、制御演算タスク1411からの出力(すなわち、制御装置100から対象90に対して出力される現在の指令値1512)と、予測制御モデル1434とを用いて、対象90の制御量の推定値である推定制御量1513を算出する予測処理1432、および推定制御量1513を、理想制御量1518(目標制御量)との差があらかじめ決められた範囲に収まるよう補償した補正値1514を算出する算出処理1433を含む。図23では、指令値1512と制御量1515は、それぞれ指令値1516と制御量1517と同様の値である。
[0210]
 制御演算タスク1411は、算出される補正値1514に従って対象90に対する制御出力(指令値1516)を算出する。算出される指令値1516は、対象90を制御するために出力される。
[0211]
 上記の予測制御モデル1434は、対象90の特性に基づく機械学習により予め作成される、またはユーザー操作により予め作成され得る。図24には、予測制御モデル1434の一例が模式的に示される。図24を参照して、例えば、予測制御モデル1434は、指令値1512(または制御量1515)と推定制御量1513の相関関係を表すグラフとして示される。したがって、予測処理1432では、このような予測制御モデル1434に基づいて、指令値1512(または制御量1515)の値Xから推定制御量1513の値Yを推定(算出)することができる。なお、予測制御モデル1434は、このような相関関係のグラフに限定されない。
[0212]
 なお、予測制御モデル1434で推定される推定制御量1513は、現在の値(例えば、現在の制御周期に対応した値)であっても、将来の値(例えば、次の制御周期以降の制御周期に対応した値)であってもよい。
[0213]
 また、機械学習により予測制御モデル1434を作成する場合、例えばニューラルネットワークを使用する機械学習で作成されてもよい。
[0214]
 また、算出処理1433では、予測処理1432により出力される推定制御量1513と、理想制御量(目標制御量)1518との差を算出し、図示しない予測制御モデルを用いて、当該算出された制御量の差から指令値1516の修正量を推定(算出)してもよい。
[0215]
 制御演算タスク1411は、補正値1514を入力し、入力した補正値1514をフィードバックした指令値1516を生成し、対象90に出力する。
[0216]
 要約すると、図24の予測制御モデル1434は、推定制御量1513を目的変数、指令値1512を説明変数として予め作成されている。したがって、図23では、対象90に与える現在の指令値1512(指令値1516)を予測制御モデル1434に入力し、次の制御周期における対象90の推定制御量1513が出力される。次に、推定制御量1513を、理想制御量1518(目標制御量)との差があらかじめ決められた範囲に収まるよう補償した補正値1514が算出されて、算出された補正値1514を用いて指令値1516の書き換えがなされる。
[0217]
 また、図24の予測制御モデル1434は、推定制御量1513を目的変数、制御量1515を説明変数として予め作成されてもよい。この場合は、図23では、対象90に与える現在の制御量1515(制御量1517)を予測制御モデル1434に入力し、次の制御周期における対象90の推定制御量1513が出力される。次に、推定制御量1513を、理想制御量1518(目標制御量)との差があらかじめ決められた範囲に収まるよう補償した補正値1514が算出されて、算出された補正値1514を用いて指令値1516の書き換えがなされる。
[0218]
 このように、関連処理タスク143の補正値算出処理1431によれば、対象90に与える指令値1512を用いて、対象90の制御量を予測して、制御パラメータの補正値1514を出力することも可能であり、また、対象90の制御量1515を用いて、対象90に与える補正値を予測することも可能である。
[0219]
 また、図23の算出処理1433では、推定制御量1513を、理想制御量(目標制御量)1518との差が予め定められた範囲に収まるよう補償する補正値1514を算出したが、補正値1514の算出方法は、このような補償による方法に限定されない。例えば、算出処理1433は、推定制御量1513と予め定められた演算に従い補正値1514を算出する処理であってもよい。
[0220]
 また、図23では、制御周期毎に、予測制御モデル1434を用いて推定(算出)された補正値1514に基づく指令値1516が、対象90に出力されているが、指令値1516の出力周期は、制御周期に限定されない。例えば、対象90の特性によっては、制御周期よりも長い周期で指令値1516が出力されてもよい。その場合は、その場合は、対象90を、制御周期よりも長い周期毎に、予測制御モデル1434を用いて推定(算出)された補正値1514に基づく指令値1516が対象90に出力されて得る。
[0221]
 また、予め定められたパターン1511は、対象90が移動すべき軌跡を示す位置パターンを含み得る。この場合、予測制御モデル1434を用いて生成された補正値1514に基づく指令値1516により示される軌跡(対象90が移動すべきと推定された軌跡)に従い、対象90の位置を制御することが可能となる。
[0222]
 なお、図23では、制御演算タスク1411は予め定められたパターン1511に従って指令値1516を生成したが、制御演算タスク1411は当該パターン1511を用いずに、指令値1516を生成してもよい。
[0223]
 <N.本実施の形態の効果>
 本実施の形態に係る優先度切替処理では、実行時間が第1時間T1よりも長くなる(超過する)ことがない間は、高優先度PHは維持される。したがって、リアルタイム性を維持しながら関連処理を実行することができて、例えば実行時間毎に得られる関連処理の結果を用いた対象のリアルタイム制御を実現することが可能となる。また、実行時間が第1時間T1よりも長くなる(超過する)と関連処理タスク143の優先度を低くすることで他のタスクが優先的に実行可能となるので、他のタスクが低優先制御タスク142等のようにリアルタイム制御に寄与する処理(モーション制御の軌道計算処理)を実行している場合には、高優先制御タスク141は実行結果を用いた対象のリアルタイム制御が可能となる。したがって、制御タスクによる対象のリアルタイム制御の実現を保証しながら、非制御タスクによるリアルタイムな関連処理の実行も実現することが可能となる。
[0224]
 また、マルチコアスケジューリングにおいては、各プロセッサコアにおいて、対象の制御タスクを優先的に実行しながら、関連処理タスク143について、優先度切替処理を実施する。また、2つ以上のプロセッサコアを同時に用いて、制御タスクを優先的に実行しながら、複数の関連処理タスク143について、優先度切替処理を実施する。
[0225]
 これにより、マルチコアスケジューリングによっても、制御タスクによる対象のリアルタイム制御の実現を保証しながら、複数の非制御タスクによるリアルタイムな関連処理の実行を実現することができる。
[0226]
 <O.実施の形態の構成>
 上記に述べた実施の形態によれば、対象を制御する制御装置100は、対象のリアルタイム制御を実施するための制御タスク(高優先制御タスク141)および、リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクの各タスクに対応付けて、当該タスクがプロセッサにより実行される優先度を記憶するためのタスク制御情報131と、優先度に従う非制御タスクの実行順序を調整するスケジューラ151と、を備える。制御タスクの優先度は最優先に設定される(すなわち、非制御タスクの優先度は、制御タスクの優先度よりも低くなるように設定される)。スケジューラ151は、非制御タスクについて、当該非制御タスクの実行時間tが関連処理をリアルタイムに実行するための第1時間T1よりも長くなる場合に、当該非制御タスクの優先度を低くなるように切替える(高優先度PH→低優先度PL)優先度切替部を153含む。
[0227]
 上記の構成によれば、非制御タスクの実行時間がリアルタイム実行のための第1時間T1である間は高優先度PHを維持し、その後、第1時間T1を超えて長くなると、優先度が低優先度PLとなるように切替えられる。したがって、実行時間が第1時間内である間は、リアルタイム制御を維持しながら非制御タスク(関連処理タスク143)の優先度を比較的高くしてリアルタイムに実行することができて、関連処理の結果を対象のリアルタイム制御に反映することが確実となる。
[0228]
 また、実行時間がリアルタイム実行のための第1時間を超えて長くなると優先度を低くして他の制御タスク(例えば低優先制御タスク142)に対する優先的な資源の割り当てを可能にする。これにより、他の制御タスクによる処理の結果を対象のリアルタイム制御に反映することが確実となる。これにより、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能なように実行することが可能になる。
[0229]
 好ましくは、高優先度PHは他のタスク(例えば低優先制御タスク142)の優先度以上を示し、且つ低優先度PLは当該他のタスクの優先度以下を示す。これにより他のタスクの実行が優先的に実行されることが可能となり、他のタスクが制御タスクに対し軌道データ等のリアルタイム制御に関するデータを提供する場合には、対象のアルタイム制御をより確実に実施することが可能となる。
[0230]
 好ましくは、上記の第1時間T1は、可変に設定される。また、低優先度PLおよび高優先度PHは可変に設定され得る。したがって、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能なような第1時間T1と、高優先度PHまたは低優先度PLとを、調整しながら決定することができる。
[0231]
 好ましくは、優先度切替部153は、さらに、低優先度PLの非制御タスクについて、実行時間が第2時間T2よりも長くなる場合に、当該非制御タスクを高優先度PHに上げる。したがって、対象のリアルタイム制御を保証可能にするような非制御タスクの実行時間を、第1時間T1と第2時間T2を目安に調整することが可能となる。
[0232]
 好ましくは、第2時間T2は、可変に設定される。したがって、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能なように第2時間T2を、調整しながら決定することができる。
[0233]
 好ましくは、関連処理は、対象に関連するデータから対象に生じる異常を検知するのに適した特徴量を生成する特徴量生成処理と、特徴量生成処理により生成される特徴量を用いて異常を検知する異常検知処理と、特徴量生成処理または異常検知処理のためのデータを、記憶装置を含む装置と通信する処理と、を含む。
[0234]
 したがって、対象のリアルタイム制御を、非制御タスクのリアルタイム実行の結果である異常検知結果を用いて実施することが可能となる。
[0235]
 好ましくは、関連処理は、制御装置から対象に出力される指令値1512と予め定められた予測制御モデル1434とを用いて対象90の推定の制御量1513を算出する算出処理と、算出処理により算出された制御量に基づき補正値1514を算出する補正値算出処理1431を含み、制御タスク141は、算出される補正値1514に従って対象に対する制御出力(指令値1516)を算出する制御演算タスク1411を含む。
[0236]
 したがって、対象のリアルタイム制御を、非制御タスクの予測制御モデルを用いた処理結果を用いて実施することが可能となる。
[0237]
 好ましくは、関連処理は、制御装置から対象に出力される対象90の制御量1517と予め定められた予測制御モデル1434を用いて対象の推定の制御量1513を算出する算出処理と、算出処理により算出された制御量1513に基づき補正値1514を算出する補正値算出処理1431を含み、制御タスク141は、算出される補正値に従って対象に対する制御出力(指令値1516)を算出する制御演算タスク1411を含む。
[0238]
 したがって、対象のリアルタイム制御を、非制御タスクの予測制御モデルを用いた処理結果を用いて実施することが可能となる。
[0239]
 好ましくは、上記の補正値算出処理は、制御量が予め定められた範囲に収まるよう補償した補正値を算出する処理を含む。
[0240]
 したがって、制御量が予め定められた範囲に収まるよう補償により補正値を算出することができる。
[0241]
 好ましくは、非制御タスクについて、実行時間を含む当該非制御タスクの実行に関する情報を収集する収集部155を備え、収集部により収集される情報は、外部に出力される。
[0242]
 したがって、収集情報を出力することで、上記の第1時間T1または第2時間T2を設定するための支援情報として、非制御タスクの実行時間を含んだ情報を、ユーザに提供することができる。
[0243]
 好ましくは、収集される情報は、非制御タスクの優先度の切替え回数を含む。
 したがって、ユーザに、上記の支援情報として、非制御タスクの優先度の切替え回数を提供することができる。
[0244]
 好ましくは、関連処理の内容は可変に設定される。
 したがって、対象をリアルタイム制御するための制御タスクと、非制御タスクとを、対象のリアルタイム制御を保証可能となるように、関連処理の内容(関連処理プログラムの種類、演算処理等の内容)を調整することができる。
[0245]
 好ましくは、プロセッサ102は、複数のプロセッサコア(Core1~Core4)を含み、非制御タスクを実行するプロセッサコアを指定するコア情報136を記憶する。スケジューラ151は、さらに、コア情報136または各プロセッサコアの利用率159に基づき、非制御タスクを実行するプロセッサコアを決定するコア切替部156を含む。
[0246]
 したがって、空き率Eが高いことを示す利用率159を有したプロセッサコアを決定し、当該プロセッサコアに非制御タスクを実行させることができる。
[0247]
 好ましくは、コア情報136は、非制御タスクの優先度に基づき当該非制御タスクを実行するプロセッサコアを指定する情報を含む。
[0248]
 したがって、複数の非制御タスクがある場合に、優先度が高い非制御タスクから順にプロセッサコアを決定して当該プロセッサコアに当該非制御タスクを実行させることができる。
[0249]
 今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。

符号の説明

[0250]
 1 制御システム、10 フィールド装置群、100 制御装置、101 タイマ、102,202 プロセッサ、106,206 主記憶装置、108,208 二次記憶装置、131 タスク制御情報、133 優先度、134 プログラム名、135 ログ、136 コア情報、137 動作コア指定、138 割当モード、141 高優先制御タスク、142 低優先制御タスク、143 関連処理タスク、144 サービスタスク、150 ユーザプログラム、151 スケジューラ、152 設定部、152A 閾値、152B 優先度情報、153 優先度切替部、153A モニタ情報、153B カウンタ、154 タスク情報設定部、155 収集部、156 コア切替部、157 実行指示部、158 コア指定命令、159 利用率、161 制御入力プログラム、162 制御出力プログラム、163 高優先制御プログラム、164 低優先制御プログラム、165 関連処理プログラム、166 システムサービスプログラム、191 マルチタスク実行部、200 サポート装置、204 光学ドライブ、205 記録媒体、216 入力部、218 表示部、222 開発プログラム、224 パラメータ設定ツール、226 データマイニングツール、227 デバッグツール、228 収集情報、300 データロギング装置、400 表示装置、E 空き率、FL 状態フラグ、PH 高優先度、PL 低優先度、PR 管理処理、RTS,RTS1,RTS2,RTS3 タスク、T 周期、t 実行時間。

請求の範囲

[請求項1]
 対象を制御する制御装置であって、
 前記対象のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクを実行するプロセッサと、
 前記複数のタスクの各タスクに対応付けた優先度に基づく順序に従い前記複数のタスクを前記プロセッサにより実行させるマルチタスク実行部と、
 前記非制御タスクの優先度を可変に設定するスケジューラと、を備え、
 前記制御タスクの優先度は最優先に設定され、
 前記スケジューラは、
 前記非制御タスクの実行開始条件が成立すると第1優先度に設定するとともに、当該非制御タスクの実行開始からの時間が前記関連処理をリアルタイムに実行するための第1時間の間は、当該非制御タスクの優先度を第1優先度に維持し、その後、前記実行開始からの時間が前記第1時間よりも長くなると、当該非制御タスクの優先度を第2優先度に下げるよう切替える優先度切替部を含む、制御装置。
[請求項2]
 前記第1時間は、可変に設定される、請求項1に記載の制御装置。
[請求項3]
 前記優先度切替部は、さらに、
 前記第2優先度の前記非制御タスクの実行開始からの時間が第2時間よりも長くなると、当該非制御タスクの優先度を前記第1優先度に上げるよう切替える、請求項1または2に記載の制御装置。
[請求項4]
 前記第2時間は、可変に設定される、請求項3に記載の制御装置。
[請求項5]
 前記関連処理は、
 前記対象に関連するデータから前記対象に生じる異常を検知するのに適した特徴量を生成する特徴量生成処理と、
 前記特徴量生成処理により生成される特徴量を用いて前記異常を検知する異常検知処理と、
 前記特徴量生成処理または前記異常検知処理のためのデータを、記憶装置を含む装置と通信する処理と、を含む、請求項1から4のいずれか1項に記載の制御装置。
[請求項6]
 前記関連処理は、
 前記制御装置から前記対象に出力される指令値と予め定められた予測制御モデルとを用いて前記対象の推定の制御量を算出する算出処理と、
 前記算出処理により算出された制御量に基づき補正値を算出する補正値算出処理を含み、
 前記制御タスクは、算出される前記補正値に従って前記対象に対する指令値を算出する制御演算タスクを含む、請求項1から4のいずれか1項に記載の制御装置。
[請求項7]
 前記関連処理は、
 前記制御装置から前記対象に出力される前記対象の制御量と予め定められた予測制御モデルを用いて前記対象の推定の制御量を算出する算出処理と、
 前記算出処理により算出された制御量に基づき補正値を算出する補正値算出処理を含み、
 前記制御タスクは、算出される前記補正値に従って前記対象に対する指令値を算出する制御演算タスクを含む、請求項1から4のいずれか1項に記載の制御装置。
[請求項8]
 前記補正値算出処理は、前記制御量が予め定められた範囲に収まるよう補償した前記補正値を算出する処理を含む、請求項6または7に記載の制御装置。
[請求項9]
 前記非制御タスクについて、前記実行開始からの時間を含む当該非制御タスクの実行に関する情報を収集する収集部を備え、
 前記収集部により収集される情報は、外部に出力される、請求項1から8のいずれか1項に記載の制御装置。
[請求項10]
 前記収集される情報は、前記非制御タスクの前記優先度の切替え回数を含む、請求項9に記載の制御装置。
[請求項11]
 前記関連処理の内容は可変に設定される、請求項1から10のいずれか1項に記載の制御装置。
[請求項12]
 前記プロセッサは、複数のプロセッサコアを含み、
 前記非制御タスクを実行するプロセッサコアを指定するコア情報を記憶するためのコア情報記憶部を、さらに備え、
 前記スケジューラは、さらに、
 前記コア情報または各前記プロセッサコアの利用率に基づき、前記非制御タスクを実行するプロセッサコアを決定するコア切替部を含む、請求項1から11のいずれか1項に記載の制御装置。
[請求項13]
 前記コア情報は、
 前記非制御タスクの前記優先度に基づき当該非制御タスクを実行するプロセッサコアを指定する情報を含む、請求項12に記載の制御装置。
[請求項14]
 対象を制御する制御装置における制御方法であって、
 前記制御装置は、
 前記対象のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御に関連する関連処理を実施するための非制御タスクを含む複数のタスクを実行するプロセッサと、
 前記複数のタスクの各タスクに対応付けた優先度に基づく順序に従い前記複数のタスクを前記プロセッサにより実行させるマルチタスク実行部と、を備え、
 前記制御タスクの優先度は最優先に設定され、
 前記制御方法は、
 前記非制御タスクの優先度を可変に設定するステップを備え、
 前記可変に設定するステップにおいて、
 前記非制御タスクの実行開始条件が成立すると第1優先度に設定するとともに、当該非制御タスクの実行開始からの時間が前記関連処理をリアルタイムに実行するための第1時間の間は、当該非制御タスクの優先度を第1優先度に維持するステップと、その後、前記実行開始からの時間が前記第1時間よりも長くなると、当該非制御タスクの優先度を第2優先度に下げるよう切替えるステップとを、含む、制御方法。
[請求項15]
 請求項14に記載の制御方法をコンピュータに実行させるためのプログラム。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]

[ 図 10]

[ 図 11]

[ 図 12]

[ 図 13]

[ 図 14]

[ 図 15]

[ 図 16]

[ 図 17]

[ 図 18]

[ 図 19]

[ 図 20]

[ 図 21]

[ 図 22]

[ 図 23]

[ 図 24]