(57)【特許請求の範囲】
【請求項１】
タスクの優先度の情報を含むタスク情報が登録されるタスク実行管理テーブルと、
前記タスク実行管理テーブルに追加する新たなタスク情報を取得する新規タスク取得部と、
前記新たなタスク情報に含まれる優先度を仮優先度に変更して前記新たなタスク情報を前記タスク実行管理テーブルに仮登録する仮優先度設定部と、
前記仮登録した前記新たなタスク情報に対応するタスクである追加タスクの実行が既存のタスクの実行に与える影響を監視するタスク実行監視部と、
を備え、
前記仮優先度設定部は、前記追加タスクの実行が既存のタスクの実行に影響を与えない場合、前記仮登録したタスク情報に含まれる優先度を、前記仮優先度に変更する前の本来の優先度に変更し、変更後のタスク情報を前記タスク実行管理テーブルに正式に登録する、
ことを特徴とするコントローラ。
【請求項２】
タスクの優先度の情報を含むタスク情報が登録されるタスク実行管理テーブルと、
前記タスク実行管理テーブルに追加する新たなタスク情報を取得する新規タスク取得部と、
前記新たなタスク情報を前記タスク実行管理テーブルに仮登録し、さらに、仮登録したタスク情報に含まれる優先度を仮優先度に変更する仮優先度設定部と、
前記優先度を前記仮優先度に変更した後の前記仮登録した前記新たなタスク情報に対応するタスクである追加タスクの実行が既存のタスクの実行に与える影響を監視するタスク実行監視部と、
を備え、
前記仮優先度設定部は、前記追加タスクの実行が既存のタスクの実行に影響を与えない場合、前記仮登録したタスク情報に含まれる優先度を、前記仮優先度に変更する前の本来の優先度に変更し、変更後のタスク情報を前記タスク実行管理テーブルに正式に登録する、
ことを特徴とするコントローラ。
【請求項３】
前記タスク実行監視部は、前記追加タスクが予め設定されたタスクの実行周期内に完了できた場合、既存のタスクの実行に影響を与えないと判断する、
ことを特徴とする請求項１または２に記載のコントローラ。
【請求項４】
前記仮優先度設定部は、前記仮優先度を、前記タスク実行管理テーブルに登録された既存のタスク情報に含まれるいずれの優先度よりも低い優先度に決定する、
ことを特徴とする請求項１から３のいずれか一つに記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対象機器を制御するコントローラに関する。
【背景技術】
【０００２】
特許文献１には、ユーザの利便性を向上させることが可能なコントローラ、具体的には、タスクの優先度および実行周期といったプログラムの実行条件をユーザプログラムの実行中に変更可能としたコントローラが開示されている。特許文献１に記載のコントローラが実行するユーザプログラムには、プログラムの実行条件を変更するための命令を含めることができる。すなわち、特許文献１に記載のコントローラは、実行するユーザプログラムにプログラムの実行条件を変更するための命令が含まれている場合、タスクの優先度および実行周期の少なくとも一方を修正し、ユーザプログラムを実行する。コントローラは、タスクごとに規定された実行周期内で各タスクを完了させる必要がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−１７６１９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
生産現場において機器を制御するコントローラは、ユーザプログラムの実行中、すなわちタスクを実行している最中に、実行中の既存のタスクとは別のタスクを新たに実行するように設定が変更される場合がある。しかしながら、既存のタスクが、追加されたタスク、すなわち新たに実行するように設定されたタスクの影響を受けて不具合が生じる可能性がある。例えば、コントローラが優先度に基づいてタスクをスケジューリングする場合、新たに実行するように追加されるタスクよりも優先度が低い既存のタスクの実行タイミングが遅くなり、規定された実行周期内でタスクを完了させることができなくなる可能性がある。既存のタスクを規定された実行周期内で完了させることができなくなると、生産が停止する、生産効率が下がる、切削加工を行う装置を制御する場合に加工精度が下がる、といった問題が生じる。そのため、実行するタスクを追加する場合には、既存のタスクに影響を与えないか否かを事前に確認し、影響を与えないことが分かった場合に追加を実施するのが望ましい。この場合の既存のタスクに影響を与えるとは、実行するタスクの追加によって１以上の既存のタスクが正常に実行できなくなること、具体的には、規定された実行周期内にタスクを終了させることができなくなることをいう。なお、以下の説明においては、タスクの実行を終了させる期限をデッドラインと称する場合がある。【０００５】
本発明は、上記に鑑みてなされたものであって、既存のタスクへの影響を事前に確認してから新しいタスクを実行するように設定を変更することが可能なコントローラを得ることを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明にかかるコントローラは、タスクの優先度の情報を含むタスク情報が登録されるタスク実行管理テーブルと、タスク実行管理テーブルに追加する新たなタスク情報を取得する新規タスク取得部とを備える。また、コントローラは、新たなタスク情報に含まれる優先度を仮優先度に変更して新たなタスク情報をタスク実行管理テーブルに仮登録する仮優先度設定部と、仮登録した新たなタスク情報に対応するタスクである追加タスクの実行が既存のタスクの実行に与える影響を監視するタスク実行監視部とを備える。仮優先度設定部は、追加タスクの実行が既存のタスクの実行に影響を与えない場合、仮登録したタスク情報に含まれる優先度を、仮優先度に変更する前の本来の優先度に変更し、変更後のタスク情報をタスク実行管理テーブルに正式に登録する。
【発明の効果】
【０００７】
本発明によれば、既存のタスクへの影響を事前に確認してから新しいタスクを実行するように設定を変更することが可能なコントローラを得ることができる、という効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態にかかるコントローラのハードウェア構成を示す図
【図２】コントローラの機能ブロック構成の一例を示す図
【図３】タスク実行管理テーブルの一例を示す図
【図４】新規タスク追加ウインドウの一例を示す図
【図５】コントローラの動作の一例を示すフローチャート
【図６】仮優先度設定部の動作の一例を示すフローチャート
【図７】タスク実行監視部の動作の一例を示すフローチャート
【図８】タスクを追加する前のコントローラの動作の一例を示す図
【図９】タスクを追加する動作を実行中のコントローラの動作の一例を示す図
【図１０】タスクを追加した後のコントローラの動作の一例を示す図
【発明を実施するための形態】
【０００９】
以下に、本発明の実施の形態にかかるコントローラを図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１０】
実施の形態．
図１は、本発明の実施の形態にかかるコントローラのハードウェア構成を示す図である。コントローラ１は、ＣＰＵ（Central  Processing  Unit）１０１、メモリ１０２、入出力インタフェース１０３およびフィールド通信インタフェース１０４で構成される。ＣＰＵ１０１にはメモリ１０２が接続されている。また、ＣＰＵ１０１と、入出力インタフェース１０３およびフィールド通信インタフェース１０４とはバス１０５で接続されている。
【００１１】
ＣＰＵ１０１は、メモリ１０２に記憶したＯＳ（Operating  System）およびユーザプログラムといったプログラムを実行する。入出力インタフェース１０３は、図示を省略した制御対象の装置を接続するインタフェースである。入出力インタフェース１０３は、ＣＰＵ１０１が実行するプログラムに応じてＩ／Ｏ（Input/Output）制御用の入出力を行うことにより、接続された装置の制御を行う。また、フィールド通信インタフェース１０４は、ＣＰＵ１０１が実行するプログラムに応じて、他のコントローラや情報システムとの通信を行う。
【００１２】
図２は、コントローラ１の機能ブロック構成の一例を示す図である。コントローラ１は、スケジューラ１１を含んだタスク実行部１０、タスク実行管理テーブル１２、仮優先度設定部１３、タスク実行監視部１４、タスク実行状態記憶部１５および新規タスク取得部１６を備える。これらの機能ブロックは、リアルタイムＯＳなどであるＯＳ１７により実現される。すなわち、コントローラ１として動作するためのプログラムがリアルタイムＯＳなどであるＯＳ１７上で実行されることにより、上記の各機能ブロックが実現される。図２に示したタスク１９は、上記の各機能ブロックの上位で動作するユーザプログラムなどのタスクである。タスクとは、コントローラ１上のプログラム実行単位であり、次に実行するプログラムをタスク実行部１０のスケジューラ１１が選択する際の単位である。タスクは、一般にはシステム処理を行うタスクと、コントローラ１のユーザが独自に作成するタスクとがあり、１つまたは複数実行される。実行すべきタスクの構成は、コントローラ１の仕様および用途によってさまざまであり、特に限定されない。
【００１３】
タスク実行部１０は、タスク実行管理テーブル１２に登録されたタスク情報に基づいて、スケジューラ１１でタスクの実行順序を決定し、タスクを実行する。図３は、タスク実行管理テーブル１２の一例を示す図である。図３に示したように、タスク実行管理テーブル１２に登録されるタスク情報は、タスクの名称、優先度および実行周期で構成される。図３は、タスクＡのタスク情報、タスクＢのタスク情報およびタスクＣのタスク情報が登録されたタスク実行管理テーブル１２の例を示している。タスク実行管理テーブル１２に登録されたタスク情報は、タスクの停止中だけでなく実行中でも外部からの書き換えが可能であり、これにより、ユーザはタスクの実行順序を変更することができる。また、タスク実行管理テーブル１２にタスク情報を登録することで、登録したタスク情報に対応するタスクがスケジューリングされ、スケジューリングに従って実行されるようにできる。また、タスク実行管理テーブル１２に登録されたタスク情報を削除することで、削除したタスク情報に対応するタスクが実行されないようにできる。
【００１４】
タスクの優先度は、実行するタスクをスケジューラ１１が選択するための指標であり、スケジューラ１１は、実行可能なタスクの中で最も優先度が高いタスクを選択する。タスクの優先度は、例えば０から２５５までなどの複数の段階があり、この値が小さいタスクほど優先度が高く、優先してスケジューリングされる。スケジューラ１１が行うスケジューリングは、プリエンプティブ可能なスケジューリング、すなわち、タスクの実行中に、より優先度の高いタスクが実行可能な状態になると、実行中のタスクよりも優先度の高いタスクの実行に即座に切換える方式のスケジューリングを想定する。タスク実行管理テーブル１２が図３に示したものである場合、タスクＡが最も優先度が高く、次にタスクＢの優先度が高い。また、タスクＡ〜Ｃの中ではタスクＣの優先度が最も低い。
【００１５】
コントローラ１のタスクは、例えば一定間隔でフィードバック制御を行うタスクのように、繰り返して実行されなければならない。この実行の時間間隔、すなわち当該タスクを実行可能としてから、次に同じタスクを実行可能とするまでの時間が、図３に示した実行周期である。タスクの実行周期は、当該タスクに要求される制御の精度などを鑑みて、ユーザによって設定される。タスク実行管理テーブル１２が図３に示したものである場合、タスクＡは１ｓごとに実行可能な状態となる。同様に、タスクＢは４ｓごとに実行可能な状態となり、タスクＣは８ｓごとに実行可能な状態となる。
【００１６】
なお、本実施の形態ではタスク実行部１０がスケジューラ１１を備えた構成としているが、スケジューラ１１とタスク実行部１０とを別構成としてもよい。
【００１７】
つづいて、コントローラ１の動作例、具体的には、複数のタスクが動作している状態で、コントローラ１のユーザが新たにタスクを追加する場合の動作について説明する。追加するタスクには、ユーザによって、設定すべき優先度である目標優先度が予め定められる。ユーザは、追加するタスクの処理の内容を鑑みて、タスクが必要なタイミングに動作するよう、目標優先度を定める。目標優先度を定める方法は本発明の範囲外である。
【００１８】
コントローラ１が実行するタスクを追加する場合、ユーザは、コントローラ１の設定を行うためのアプリケーションソフトウェアであるエンジニアリングツールを使用する。このアプリケーションソフトウェアは、図１に示したフィールド通信インタフェース１０４を介してコントローラ１に接続されたパーソナルコンピュータで実行される。
【００１９】
コントローラ１の設定を行うためのエンジニアリングツールは、コントローラ１にタスク情報を追加する動作の開始を指示する操作が行われたことを検出すると、図４に示した新規タスク追加ウインドウ１０００を表示する。新規タスク追加ウインドウ１０００は、追加タスクの設定領域１００１と、優先度の設定領域１００２と、実行周期の指定領域１００３と、タスクの追加動作の開始指示を受け付ける実行ボタン１００４と、追加結果を表示する表示領域１００５とを含む。追加タスクの設定領域１００１は、ユーザが追加しようとするタスクを、例えば当該タスクのエントリポイント名または実行ファイル名の入力によりユーザが指定する領域である。優先度の設定領域１００２は、追加するタスクの本来の優先度をユーザが指定する領域である。実行周期の指定領域１００３は、設定すべき実行周期をユーザが指定する領域である。
【００２０】
ユーザは、追加タスクの設定領域１００１、優先度の設定領域１００２および実行周期の指定領域１００３に対して必要な情報を入力する。情報の入力は、各設定領域に含まれる指定ボタンを押下することにより終了となる。このとき、エンジニアリングツールは、入力された情報が正しいか否かを判定し、情報が正しくない場合にはその旨を表示するなどして再入力を促してもよい。入力された情報が正しくない場合とは、例えば、指定可能な範囲に含まれない値の優先度が入力された場合が該当する。ユーザは、優先度の設定領域１００２および実行周期の指定領域１００３に対して必要な情報の入力が完了すると、実行ボタン１００４を押下する。この操作を受け付けたエンジニアリングツールは、入力された情報、すなわち、追加するタスクの名称、優先度および実行周期を含んだタスク情報を生成し、コントローラ１に向けて送信する。この結果、コントローラ１では、後述する処理を実行してタスクの追加、すなわちエンジニアリングツールから受信したタスク情報のタスク実行管理テーブル１２への追加が行われる。なお、コントローラ１では、新規タスク取得部１６が、エンジニアリングツールから送信されたタスク情報を受信する。エンジニアリングツールは、タスクの追加処理の結果がコントローラ１から送信されてくると、追加処理の結果を新規タスク追加ウインドウ１０００の表示領域１００５に表示する。
【００２１】
コントローラ１の説明に戻り、コントローラ１は、追加するタスクのタスク情報をエンジニアリングツールから受け取ると、図５に示した手順を実行する。図５は、コントローラ１の動作の一例を示すフローチャートである。より詳細には、図５は、コントローラ１が、エンジニアリングツールから受け取ったタスク情報をタスク実行管理テーブル１２に追加登録することが可能かどうかを判定し、追加登録が可能な場合にタスク情報を登録する動作を示すフローチャートである。なお、「タスク情報をタスク実行管理テーブル１２に追加登録することが可能」とは、タスク情報を追加登録することにより新たなタスクを実行することになっても、全てのタスクを正常に実行できる場合をいう。「全てのタスク」とは、タスク情報を追加登録することにより新たに実行することになるタスク、および、それまで実行されていた既存のタスクを合わせたものである。「タスクを正常に実行できる」とは、タスクを開始してから終了するまでの動作を、タスクに対応するタスク情報に含まれる実行周期内で完了できることをいう。例えば、図３に示したタスクＡの場合、タスクＡが実行可能な状態となってからタスクＡが終了するまでの時間が１ｓ以内であれば、タスクＡを正常に実行できたことになる。
【００２２】
追加するタスクのタスク情報をコントローラ１が受け取ると、まず、仮優先度設定部１３が、追加するタスクの仮優先度を決定する（ステップＳ１）。仮優先度とは、エンジニアリングツールから受け取ったタスク情報に対応するタスクの追加が可能か否かを判別する処理で使用する優先度であり、仮優先度設定部１３は、既存のタスクの実行タイミングに影響を与えない値を仮優先度に決定する。以下、追加するタスクを追加タスクと称し、追加するタスクのタスク情報を追加タスク情報と称する。このステップＳ１において、仮優先度設定部１３は、図６に示した手順で仮優先度を決定する。
【００２３】
図６は、仮優先度設定部１３の動作の一例を示すフローチャートである。仮優先度設定部１３は、新規タスク取得部１６を介してエンジニアリングツールから追加タスク情報を受け取ると、まず、タスク実行管理テーブル１２から全てのタスクの優先度を取得する（ステップＳ１１）。すなわち、仮優先度設定部１３は、タスク実行管理テーブル１２に登録されている全てのタスク情報から、タスク情報に含まれている優先度を取得する。仮優先度設定部１３は、次に、取得した全てのタスクの優先度の中の最も低い優先度よりも低くなるよう、追加タスクの仮優先度を決定する（ステップＳ１２）。仮優先度設定部１３は、取得した優先度の中の最も低い優先度よりも１だけ低くなるよう、追加タスクの仮優先度を決定すればよい。すなわち、仮優先度設定部１３は、取得した優先度の中の最も低い優先度に１を加算したものを追加タスクの仮優先度に決定する。仮優先度設定部１３は、取得した優先度の中の最も低い優先度よりも追加タスクの優先度が低い場合、追加タスクの優先度をそのまま仮優先度に決定してもよい。
【００２４】
図５に示したフローチャートの説明に戻り、仮優先度設定部１３は、次に、追加タスク情報に含まれる優先度をステップＳ１で算出した仮優先度に変更し、変更後の追加タスク情報をタスク実行管理テーブル１２に仮登録する（ステップＳ２）。
【００２５】
次に、スケジューラ１１が、タスク実行管理テーブル１２に仮登録された追加タスク情報に対応する追加タスクをスケジューリングする（ステップＳ３）。なお、スケジューラ１１は、追加タスク以外の既存のタスクについてもスケジューリングを行う。その後、追加タスクは、スケジューリング結果に従って周期的に実行される。
【００２６】
タスク実行監視部１４は、追加タスクの実行完了タイミングを監視し、監視結果、すなわち追加タスクの実行完了タイミングの情報を、タスク実行状態記憶部１５に登録する。また、タスク実行監視部１４は、登録した情報を分析する（ステップＳ４）。このステップＳ４において、タスク実行監視部１４は、図７に示した各ステップの処理を実行し、タスク実行管理テーブル１２に仮登録した追加タスク情報を正式に登録することが可能か否かを判定する。
【００２７】
図７は、タスク実行監視部１４の動作の一例を示すフローチャートである。タスク実行監視部１４は、まず、タスク実行管理テーブル１２に仮登録された追加タスク情報に基づいて、追加タスクのデッドラインを算出する（ステップＳ２１）。タスク実行監視部１４は、追加タスクが実行可能となるタイミングに実行周期を加算してデッドラインを算出する。仮登録された追加タスク情報に含まれる優先度は他のタスク情報に含まれるいずれの優先度よりも低いため、タスク実行監視部１４は、タスク実行管理テーブル１２に登録されたタスク情報のうち、どのタスク情報が仮登録された追加タスク情報であるかを判別できる。なお、タスク実行監視部１４は、タスク実行管理テーブル１２に仮登録された追加タスク情報に基づいて追加タスクのデッドラインを算出するのではなく、仮優先度設定部１３から出力される追加タスク情報に基づいて追加タスクのデッドラインを算出してもよい。
【００２８】
タスク実行監視部１４は、次に、追加タスクのデッドライン達成を判断するまでに必要な検証回数、すなわち追加タスクの実行回数（Ｌ）と、満たすべきデッドライン達成回数の基準値（Ｍ）とを決定する（ステップＳ２２）。これは、追加タスクの実行時間の変動を考慮して、デッドライン達成を統計的に適切に判断するためである。実行回数Ｌおよび基準値Ｍの決定方法としては、例えば追加タスクの実行時間が正規分布に基づいて分布すると仮定し、ユーザが求める信頼度に基づいて、追加タスクの実行回数Ｌおよびデッドライン達成回数の基準値Ｍを算出する方法がある。この方法で必要な実行回数およびデッドライン達成回数を決定する場合、タスク実行監視部１４は、ユーザが求める信頼度の情報を予め保持しているものとする。
【００２９】
タスク実行監視部１４は、次に、タスク実行部１０から、追加タスクの実行完了タイミングの情報を取得する。また、取得した情報を、分析に利用できるよう、タスク実行状態記憶部１５に登録する（ステップＳ２３）。
【００３０】
タスク実行監視部１４は、次に、タスク実行状態記憶部１５に登録した情報の数、すなわち、追加タスクの実行完了タイミングの情報の数（Ｎ）が、上記のステップＳ２２で決定した追加タスクの実行回数Ｌと同じになったか否かを確認する（ステップＳ２４）。タスク実行監視部１４は、Ｎ＝Ｌではない場合（ステップＳ２４：Ｎｏ）、ステップＳ２３に戻り、追加タスクの実行完了タイミングの情報を取得してタスク実行状態記憶部１５に登録する処理を再度実行する。タスク実行監視部１４は、Ｎ＝Ｌの場合（ステップＳ２４：Ｙｅｓ）、追加タスクのデッドライン達成回数を算出する（ステップＳ２５）。タスク実行監視部１４は、ステップＳ２５において、タスク実行状態記憶部１５に登録されているＮ個の情報を分析し、追加タスクが実行可能となってから追加タスクが完了するまでの長さがデッドライン未満の情報の数を算出し、それをデッドライン達成回数とする。なお、タスク実行監視部１４は、タスク実行管理テーブル１２に仮登録されている追加タスクの実行周期に基づいて追加タスクが実行可能となるタイミングを求める。
【００３１】
タスク実行監視部１４は、次に、ステップＳ２５で算出したデッドライン達成回数がステップＳ２２で決定したデッドライン達成回数の基準値Ｍ以上か否かを確認する（ステップＳ２６）。タスク実行監視部１４は、Ｍ≦デッドライン達成回数の場合（ステップＳ２６：Ｙｅｓ）、追加タスクがデッドラインを満たすと判断する（ステップＳ２７）。追加タスクがデッドラインを満たす場合、追加タスクを正式に追加したとしても全てのタスクを正常に実行できる、すなわち、全てのタスクがタスクごとのデッドラインを満たすことになる。一方、デッドライン達成回数＜Ｍの場合（ステップＳ２６：Ｎｏ）、タスク実行監視部１４は、追加タスクがデッドラインを満たさないと判断する（ステップＳ２８）。追加タスクがデッドラインを満たさない場合、追加タスクを正式に追加すると、正常に実行できないタスクが発生する、すなわち、デッドラインを満たさないタスクが発生することになる。追加タスクがデッドラインを満たさない場合は追加タスクを正式に追加すると不具合が生じるため、追加タスクを正式に追加することはできない。
【００３２】
図５に示したフローチャートの説明に戻り、ステップＳ４におけるタスク実行監視部１４の分析結果が、追加タスクがデッドラインを満たすことを示している場合（ステップＳ５：Ｙｅｓ）、仮優先度設定部１３が、追加タスクの本来の優先度をタスク実行管理テーブル１２に登録する（ステップＳ６）。すなわち、仮優先度設定部１３は、上記のステップＳ２で仮登録した追加タスク情報に含まれている仮優先度を、仮優先度に変更する前の本来の優先度に変更し、追加タスク情報をタスク実行管理テーブル１２に正式に登録する。また、仮優先度設定部１３は、タスクを追加したことをユーザに通知し（ステップＳ７）、動作を終了する。ステップＳ７において、仮優先度設定部１３は、エンジニアリングツールから受け取ったタスク情報に対応するタスクを追加したことを、新規タスク取得部１６を介してエンジニアリングツールに通知し、エンジニアリングツールの図４に示した新規タスク追加ウインドウ１０００に表示させる。なお、エンジニアリングツールは、新規タスク追加ウインドウ１０００の表示領域１００５に、タスクを追加したことを表示する。なお、仮優先度設定部１３は、ステップＳ６とステップＳ７とを同時に実行してもよいしステップＳ７をステップＳ６よりも先に実行してもよい。また、ステップＳ７のユーザへの通知は仮優先度設定部１３ではなくタスク実行監視部１４が行うようにしてもよい。
【００３３】
これに対して、ステップＳ４におけるタスク実行監視部１４の分析結果が、追加タスクがデッドラインを満たさないことを示している場合（ステップＳ５：Ｎｏ）、仮優先度設定部１３は、タスクを追加できないことをユーザに通知する（ステップＳ８）。ステップＳ８において、仮優先度設定部１３は、エンジニアリングツールから受け取ったタスク情報に対応するタスクを追加できないことを、新規タスク取得部１６を介してエンジニアリングツールに通知し、エンジニアリングツールの図４に示した新規タスク追加ウインドウ１０００に表示させる。また、仮優先度設定部１３は、ステップＳ２で仮登録した追加タスク情報をタスク実行管理テーブル１２から削除し（ステップＳ９）、動作を終了する。なお、仮優先度設定部１３は、ステップＳ８とステップＳ９とを同時に実行してもよいしステップＳ９をステップＳ８よりも先に実行してもよい。また、ステップＳ８のユーザへの通知は仮優先度設定部１３ではなくタスク実行監視部１４が行うようにしてもよい。
【００３４】
つづいて、コントローラ１が図５に示した動作を実行してタスクを追加する場合の具体例について、図８〜図１０を用いて説明する。図８は、タスクを追加する前のコントローラ１の動作の一例を示す図である。図９は、図５に示したタスクを追加する動作を実行中のコントローラ１の動作の一例を示す図である。図１０は、タスクを追加した後のコントローラ１の動作の一例を示す図である。なお、説明を簡単化するため、追加タスクがデッドラインを満たすか否かを検証する回数は１とする。
【００３５】
図８に示した動作例では、図３に示した内容のタスク実行管理テーブル１２に従ってタスクＡ、ＢおよびＣを実行している状況を想定し、横軸を時間軸として、各時点で動作しているタスクを表している。よって、タスクＡの優先度が最も高く、次にタスクＢの優先度が高く、タスクＣの優先度が最も低い。また、各タスクのデッドラインは、タスクが実行可能な状態になってから、実行周期が経過するまでとする。よって、タスクＡのデッドラインは１ｓ、タスクＢのデッドラインは４ｓ、タスクＣのデッドラインは８ｓとなる。図８の最上段に記載したＡ〜Ｃは、タスクＡ〜Ｃが実行可能となるタイミングを表している。図８の例では、時刻ｔ＝０および８のタイミングでタスクＡ〜Ｃのすべてが実行可能となる。また、図３に示したように、タスクＡの実行周期は１ｓであるため、１ｓが経過するごとにタスクＡが実行可能となる。また、タスクＢは４ｓが経過するごとに実行可能となり、タスクＣは８ｓが経過するごとに実行可能となる。なお、図８の下段に示した時刻は、タスクＡ〜Ｃの全てが実行可能となる時刻を基準とした経過時刻を表している。なお、時刻ｔ＝０で実行可能となったタスクＡのデッドラインは時刻ｔ＝１であり、時刻ｔ＝０で実行可能となったタスクＢのデッドラインは時刻ｔ＝４であり、時刻ｔ＝０で実行可能となったタスクＣのデッドラインは時刻ｔ＝８である。また、図８の左側に示したタスクＡ〜Ｃの右隣の括弧の中に記載している数値は、各タスクの実行周期および優先度を表している。また、図８では、白塗りの四角形と黒塗の四角形とを組み合わせて１つのタスクを表しており、黒塗の四角形はタスクの完了を表す。また、四角形の隣または中に記載した数値は、タスクを開始してから終了するまでの時間を表す。図９および図１０も同様である。
【００３６】
図８に示した状態では、タスクＡ〜Ｃの全てがタスクごとのデッドラインまでに実行できており、問題ない。すなわち、タスクＡは、実行可能な状態になるとすぐに開始され、２００ｍｓが経過した時点で終了するため、デッドラインの１ｓを満たしている。タスクＢは、実行可能な状態になると、優先度が高いタスクＡが終了する２００ｍｓが経過すると開始される。その後、タスクＢは、実行可能な状態になってから１０００ｍｓが経過した時点で終了するため、デッドラインの４ｓを満たしている。また、タスクＣは、実行可能な状態になると、優先度が高いタスクＡおよびＢが終了する１０００ｍｓが経過し、１０００ｍｓが経過した時点で再度実行可能な状態となったタスクＡが終了する２００ｍｓがさらに経過すると開始される。その後、タスクＣは、実行可能な状態になってから１６００ｍｓが経過した時点で終了するため、デッドラインの８ｓを満たしている。
【００３７】
図９は、実行周期が２ｓのタスクＸを追加タスクとし、追加タスク情報をタスク実行管理テーブル１２に仮登録した後のコントローラ１の動作状態を示している。これは、図５に示したステップＳ１〜Ｓ３を実行した後の動作状態に相当する。なお、追加タスクＸの本来の優先度は、タスクＡの優先度とタスクＢの優先度の間の５１であるものとする。既存のタスクＡ〜Ｃのうち、タスクＣの優先度が最も低い１０１であるため、追加タスクＸの仮登録された追加タスク情報に含まれる仮優先度は１０２となっている。この場合、追加タスクＸはタスクＣが完了した後に実行されるが、追加タスクＸが実行可能となってから追加タスクＸが完了するまでの所要時間は実行周期２ｓ未満となっており、デッドラインを満たしている。すなわち、図５に示したステップＳ４における分析結果が、追加タスクＸがデッドラインを満たしていることを示す。この場合、既存の全てのタスク（タスクＡ、ＢおよびＣ）はタスクＸを追加したとしてもデッドラインを満たすことになる。したがって、コントローラ１は、タスクＸの追加による既存タスクへの影響はないと判断する。ここでの「タスクＸの追加による既存タスクへの影響」とは、タスクＸの追加に伴い既存タスクの少なくとも１つがデッドラインを満たせなくなることである。タスクＸを追加したとしても全ての既存タスクがデッドラインを満たす場合は「タスクＸの追加による既存タスクへの影響」がない場合に該当する。一方、タスクＸを追加すると１つ以上の既存タスクがデッドラインを満たさなくなる場合は「タスクＸの追加による既存タスクへの影響」がある場合に該当する。タスクＸの追加による既存タスクへの影響がない場合、コントローラ１は、図５に示したステップＳ６において、追加タスクＸのタスク情報に含まれる優先度を仮優先度１０２から本来の優先度５１に変更し、タスク実行管理テーブル１２に正式に登録する。この結果、コントローラ１の動作は、図１０に示したものとなる。
【００３８】
図１０に示した例では、追加されたタスクＸに続いてタスクＢを開始した後、６００ｍｓが経過した時点で、優先度が高いタスクＡが実行可能になる。そのため、コントローラ１は、タスクＢを一旦中断するとともにタスクＡを実行し、タスクＡが完了した後、中断したタスクＢの残りを実行する。タスクＢは２回に分けて実行されることになるが、実行可能な状態となってから完了するまでの所要時間はデッドラインである４ｓよりも短く、デッドラインを満たしているため問題はない。また、タスクＢに続いて実行するタスクＣもデッドライン８ｓを満たしている。
【００３９】
以上のように、本実施の形態にかかるコントローラ１は、タスクのスケジューリングに使用するタスク情報が登録されたタスク実行管理テーブル１２を保持し、タスク実行管理テーブル１２に登録する新たなタスク情報を外部、具体的にはエンジニアリングツールから受け取った場合、受け取ったタスク情報である追加タスク情報に含まれる優先度を、タスク実行管理テーブル１２に登録済みの既存のタスク情報に含まれるいずれの優先度よりも低い仮優先度に変更し、変更後の追加タスク情報をタスク実行管理テーブル１２に仮登録する。そして、コントローラ１は、タスク実行管理テーブル１２に従って既存のタスクおよび追加するタスクを実行し、追加するタスクを正常に完了させることができた場合、タスクの追加が既存のタスクに影響を与えない、すなわち、タスクを追加した後も全てのタスクを正常に完了させることができると判断する。なお、全てのタスクとは、追加したタスクおよび既存のタスクである。コントローラ１は、追加するタスクを正常に完了させることができた場合、追加タスク情報に含まれる優先度を仮優先度から元の優先度である本来の優先度に変更し、タスク実行管理テーブル１２に正式に登録する。一方、コントローラ１は、追加するタスクを正常に完了させることができない場合、仮登録した追加タスク情報をタスク実行管理テーブル１２から削除する。これにより、コントローラ１は、既存のタスクに大きな影響を与えないことを確認してから新しいタスクを実行するように設定を変更することができる。よって、生産現場などでコントローラ１が機器を制御している状態において、既存の機器を正常に制御する状態を維持しつつ新しいタスクを追加して実行することができる。
【００４０】
なお、上述した実施の形態では、コントローラ１は、新たなタスク情報を受け取ると、受け取ったタスク情報である追加タスク情報に含まれる優先度を仮優先度に変更してタスク実行管理テーブル１２に仮登録することとしたが、この手順に限定されない。コントローラ１は、新たなタスク情報を受け取ると、まず、受け取ったタスク情報である追加タスク情報をタスク実行管理テーブル１２に仮登録し、さらに、仮登録した追加タスク情報に含まれる優先度を仮優先度に変更するようにしても構わない。
【００４１】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００４２】
１  コントローラ、１０  タスク実行部、１１  スケジューラ、１２  タスク実行管理テーブル、１３  仮優先度設定部、１４  タスク実行監視部、１５  タスク実行状態記憶部、１６  新規タスク取得部、１７  ＯＳ、１９  タスク、１０１  ＣＰＵ、１０２  メモリ、１０３  入出力インタフェース、１０４  フィールド通信インタフェース、１０５  バス。
【要約】
コントローラ（１）は、タスクの優先度の情報を含むタスク情報が登録されるタスク実行管理テーブル（１２）と、タスク実行管理テーブル（１２）に追加する新たなタスク情報を取得する新規タスク取得部（１６）と、新たなタスク情報に含まれる優先度を仮優先度に変更して新たなタスク情報をタスク実行管理テーブル（１２）に仮登録する仮優先度設定部（１３）と、仮登録した新たなタスク情報に対応するタスクである追加タスクの実行が既存のタスクの実行に与える影響を監視するタスク実行監視部（１４）と、を備える。【図１】
0006469323.tif 000002
【図２】
0006469323.tif 000003
【図３】
0006469323.tif 000004
【図４】
0006469323.tif 000005
【図５】
0006469323.tif 000006
【図６】
0006469323.tif 000007
【図７】
0006469323.tif 000008
【図８】
0006469323.tif 000009
【図９】
0006469323.tif 000010
【図１０】
0006469323.tif 000011