(57)【要約】  制御装置において、プログラムの修正が生じても装置の動作が安定している状態を続けられるようにする。制御装置（１１）は、タスクＡ，タスクＢを周期的に繰り返し実行する装置である。制御装置（１１）は、ＲＡＭ（１１３）と、タスク制御プログラム（４３）とを有している。ＲＡＭ（１１３）には、タスクＡの実行時間としてタスクＡの実際の実行時間より長く設定された固定化時間が格納されている。タスク制御プログラム（４３）は、タスクＡ，タスクＢを実行するものであり、固定化時間を適用してタスクＡを実行する。
2015136973.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２種類のタスクを周期的に繰り返し実行する制御装置であって、
前記少なくとも２種類のタスクのうち少なくとも１種類のタスクの実行時間として当該タスクの実際の実行時間より長く設定された固定化時間が格納された格納部と、
前記少なくとも２種類のタスクを実行する制御部であり、前記固定化時間を適用して前記少なくとも１種類のタスクを実行するタスク制御部と、
を備えた制御装置。
【請求項２】
前記少なくとも２種類のタスクは互いに異なる実行周期を有する、請求項１に記載の制御装置。
【請求項３】
前記タスク制御部は、前記少なくとも１種類のタスクを実行する毎に、当該タスクの実際の実行時間を前記格納部に格納する、請求項１又は２に記載の制御装置。
【請求項４】
請求項１〜３のいずれかに記載の制御装置と、
前記少なくとも１種類のタスクの実際の実行時間より長い設定実行時間の入力を受け付け可能な受付部と、当該タスクを設定するときに、受け付けられた前記設定実行時間を前記固定化時間として設定する設定部と、を有する固定化時間設定装置と、
を備えた制御システム。
【請求項５】
前記固定化時間設定装置は、
前記制御装置において実行されている前記少なくとも１種類のタスクの前記実際の実行時間及び前記固定化時間を、前記制御装置から取得する取得部と、
取得された前記少なくとも１種類のタスクの前記実際の実行時間及び前記固定化時間を表示する表示部をさらに有している、請求項４に記載の制御システム。
【請求項６】
タスクを繰り返し実行する制御装置であって、
前記タスクに割り付けられる少なくとも１種類の処理の実行時間として当該処理の実際の実行時間より長く設定された固定化時間が格納された格納部と、
前記タスクを実行する制御部であり、前記固定化時間を適用して前記少なくとも１種類の処理を実行するタスク制御部と、
を備えた制御装置。
【請求項７】
前記少なくとも１種類の処理は、プログラム部品の実行である、請求項６に記載の制御装置。
【請求項８】
前記少なくとも１種類の処理は、外部データの入力処理及び出力処理の一方又は両方である、請求項６に記載の制御装置。
【請求項９】
前記タスク制御部は、前記少なくとも１種類の処理の実行毎に、当該処理の実際の実行時間を前記格納部に格納する、請求項６〜８のいずれかに記載の制御装置。
【請求項１０】
請求項６〜９のいずれかに記載の制御装置と、
前記少なくとも１種類の処理の実際の実行時間より長い設定実行時間の入力を受け付け可能な受付部と、当該処理を設定するときに、受け付けられた前記設定実行時間を前記固定化時間として設定する設定部と、を有する固定化時間設定装置と、
を備えた制御システム。
【請求項１１】
前記固定化時間設定装置は、
前記制御装置において実行されている前記少なくとも１種類の処理の前記実際の実行時間及び前記固定化時間を、前記制御装置から取得する取得部と、
取得された前記少なくとも１種類の処理の前記実際の実行時間及び前記固定化時間を表示する表示部をさらに有している、請求項１０に記載の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置及び制御システムに関する。
【背景技術】
【０００２】
従来、工場の生産ラインに設置される産業用機械などを制御するＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ：プログラマブル・ロジック・コントローラ）が知られている。【０００３】
ＰＬＣは、ＰＬＣを制御するＣＰＵユニットと、センサからの信号が入力される入力ユニットと、産業用機械などに制御信号を出力する出力ユニットとを備えている。ＣＰＵユニットは、ユーザプログラムを記憶するメモリを有する。このユーザプログラムは、ＣＰＵユニットに接続されるツール装置により編集可能に構成されている。【０００４】
ＰＬＣでは、入力ユニットに入力された信号をＣＰＵユニットのメモリに取り込む処理と、ユーザプログラムを実行する処理と、ユーザプログラムの実行結果（演算結果）をメモリに書き込んで出力ユニットに送り出す処理と、ツール装置との間でデータの送受信を行うなどの周辺処理とが繰り返し行われる。これにより、ＰＬＣは、センサからの入力に基づいて産業用機械などを制御する。【０００５】
また、従来では、パーソナルコンピュータの高度なソフトウェア機能と、ＰＬＣの信頼性とを備えるＰＡＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ａｕｔｏｍａｔｉｏｎ  Ｃｏｎｔｒｏｌｌｅｒ：プログラマブルオートメーションコントローラ）も知られている（たとえば、特許文献１参照）。【０００６】
上記特許文献１のＰＡＣは、時分割により複数のタスクを並行して実行するとともに、各タスクを各タスクに応じた周期で実行するように構成されている。すなわち、このＰＡＣでは、マルチタスクで処理が行われる。なお、タスクには、各タスクに応じたユーザプログラムの実行が割り当てられている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−１９４６８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
一般に、ＰＬＣで用いられるプログラムは、不具合の修正及び装置のバージョンアップに伴い、修正（バージョンアップ）が行われる。そして、プログラムの修正に起因してプログラムのコード量が増えるので、修正前に比べて修正後のプログラムの実行単位の実行時間（例えば、タスクの実行時間）が延びてしまう。
その場合、前述のようなＰＬＣにおいては、当該プログラムが割り当てられたタスクの負荷が増大するのみならず、それに伴いシステム全体の負荷も増大する。以上の結果、ＣＰＵユニットと入力ユニット及び出力ユニットとの通信のタイミング及び他のタスクで動作させているプログラムの動作タイミングが変更されてしまい、それにより装置の動作に悪影響が生じることが心配される。【０００９】
本発明の課題は、制御装置において、プログラムの修正が生じても装置の動作が安定している状態を続けられるようにすることにある。
【課題を解決するための手段】
【００１０】
以下に、課題を解決するための手段として複数の態様を説明する。これら態様は、必要に応じて任意に組み合せることができる。【００１１】
本発明の一見地に係る制御装置は、少なくとも２種類のタスクを周期的に繰り返し実行する装置である。制御装置は、格納部と、タスク制御部とを有している。格納部には、少なくとも２種類のタスクのうち少なくとも１種類のタスクの実行時間として当該タスクの実際の実行時間より長く設定された固定化時間が格納されている。タスク制御部は、少なくとも２種類のタスクを実行するものであり、固定化時間を適用して少なくとも１種類のタスクを実行する。【００１２】
この装置では、タスク制御部が少なくとも１種類のタスクを実行する際には、固定化時間を適用する。したがって、最初の設定後にタスクの処理が変更されても、タスクの実際の実行時間が固定化時間を超えることはない。したがって、処理が変更された一方のタスクが他方のタスクの実行タイミングに影響を与えない。この結果、タスクに割り付けられた処理が変更されたとしても、制御装置の動作が安定している。【００１３】
少なくとも２種類のタスクは互いに異なる実行周期を有していてもよい。
この装置では、一方のタスク実行された後に他方のタスクが実行される。この場合、固定化時間が設定されたタスクは決まった時間に終了するので、後に実行されるタスクに影響を与えない。【００１４】
タスク制御部は、少なくとも１種類のタスクを実行する毎に、当該タスクの実際の実行時間を格納部に格納してもよい。
この装置では、タスクが実行される毎に、実際の実行時間がリアルタイムの情報として格納部に格納される。したがって、例えばユーザが上記の内容を他の装置等で読み出して、確認することができる。【００１５】
本発明の他の見地に係る制御システムは、上記の制御装置と、固定化時間設定装置とを有している。固定化時間設定装置は、受付部と、設定部とを有する。受付部は、少なくとも１種類のタスクの実際の実行時間より長い設定実行時間の入力を受け付け可能である。設定部は、当該タスクを設定するときに、受け付けられた設定実行時間を固定化時間として設定する。
このシステムでは、固定化時間設定装置において、設定部が、受付部が受け付けた設定実行時間をタスクを設定するときに固定化時間として設定する。【００１６】
固定化時間設定装置は、取得部と、表示部とをさらに有している。取得部は、制御装置において実行されている少なくとも１種類のタスクの実際の実行時間及び固定化時間を、制御装置から取得する。表示部は、取得された少なくとも１種類のタスクの実際の実行時間及び固定化時間を表示する。
このシステムでは、固定化時間設定装置において、取得部がタスクの実際の実行時間及び固定化時間を取得し、表示部がそれら内容を表示する。これにより、ユーザは、固定化時間設定装置を用いて、タスクの実際の実行時間と固定化時間との関係をリアルタイムで知ることができる。【００１７】
本発明のさらに他の見地に係る制御装置は、タスクを繰り返し実行する制御装置である。制御装置は、格納部と、タスク制御部とを備えている。格納部には、タスクに割り付けられる少なくとも１種類の処理の実行時間として当該処理の実際の実行時間より長く設定された固定化時間が格納されている。タスク制御部は、タスクを実行するものであり、固定化時間を適用して少なくとも１種類の処理を実行する。【００１８】
この装置では、タスク制御部がタスクを実行する際には、少なくとも１種類の処理に固定化時間を適用する。したがって、最初の設定後に変更が行われても、処理の実際の実行時間が固定化時間を超えることはない。したがって、変更された処理が含まれるタスクが他のタスクの実行タイミングに影響を与えない。この結果、処理が変更されたとしても、制御装置の動作が安定している。【００１９】
少なくとも１種類の処理は、プログラム部品の実行であってもよい。【００２０】
少なくとも１種類の処理は、外部データの入力処理及び出力処理の一方又は両方であってもよい。【００２１】
タスク制御部は、少なくとも１種類の処理の実行毎に、当該処理の実際の実行時間を格納部に格納してもよい。
この装置では、処理が実行される毎に、実際の実行時間がリアルタイムの情報として格納部に格納される。したがって、例えばユーザが上記の内容を他の装置等で読み出して、確認することができる。【００２２】
本発明のさらに他の見地に係る制御システムは、上記の制御装置と、固定化時間設定装置とを備えている。固定化時間設定装置は、受付部と、設定部とを有する。受付部は、少なくとも１種類の処理の実際の実行時間より長い設定実行時間の入力を受け付け可能である。設定部は、当該処理を設定するときに、受け付けられた設定実行時間を固定化時間として設定する。
このシステムでは、固定化時間設定装置において、受付部が受け付けた設定実行時間に基づいて、設定部が処理を設定するときに固定化時間として設定する。これにより、タスクの固定時間が設定される。【００２３】
固定化時間設定装置は、取得部と、表示部とをさらに有している。取得部は、制御装置において実行されている少なくとも１種類の処理の実際の実行時間及び固定化時間を、制御装置から取得する。表示部は、取得された少なくとも１種類の処理の実際の実行時間及び固定化時間を表示する。
このシステムでは、固定化時間設定装置において、取得部が処理の実際の実行時間及び固定化時間を取得し、表示部がそれら内容を表示する。これにより、ユーザは、固定化時間設定装置を用いて、処理の実際の実行時間と固定化時間との関係をリアルタイムで知ることができる。
【発明の効果】
【００２４】
本発明に係る制御装置及び制御システムでは、タスク又はタスクに割り付けられた処理の実行時間が実際の実行時間より長い固定化時間に設定されているので、処理の修正が生じても制御装置の動作が安定している。
【図面の簡単な説明】
【００２５】
【図１】制御システムの全体構成を示すブロック図。
【図２】制御装置及び開発支援装置の構成を示すブロック図。
【図３】制御装置及び開発支援装置の機能及びデータの配置を示すブロック図。
【図４】タスク設定データの内容を示す表。
【図５】タスク設定制御を示すフローチャート。
【図６】タスク実行のタイミングを示すタイミングチャート。
【図７】本発明の実施形態とは異なる場合のタスク実行のタイミングを示すタイミングチャート。
【図８】本発明の実施形態とは異なる場合のタスク実行のタイミングを示すタイミングチャート。
【図９】タスクの実際の実行時間を取得する制御を説明するためのフローチャート。
【図１０】タスクの実際の実行時間と固定化時間の関係を示す表。
【図１１】第２実施形態におけるタスクのタイミングチャート。
【図１２】ＰＯＵの構造を示す図。
【図１３】ＰＯＵの構造を示す図。
【図１４】第２実施形態の変形例におけるタスクのタイミングチャート。
【図１５】第３実施形態におけるタスク設定データの内容を示す表。
【発明を実施するための形態】
【００２６】
１．第１実施形態
（１）制御システムの全体構成
まず、第１実施形態に係る制御システムの全体構成について、図１を用いて説明する。図１は、制御システムの全体構成を示すブロック図である。制御システム１００は、ＰＬＣシステム１と開発支援装置３とを備える。
ＰＬＣシステム１は、例えば、センサ又はスイッチにより構成される信号入力部５から信号を入力する。また、ＰＬＣシステム１は、信号入力部５からの入力信号を必要に応じて用いプログラムを実行して、制御対象機器７を制御する出力信号を算出する。
【００２７】
開発支援装置３は、制御装置１１において実行されるユーザプログラム（後述）を作成するための各種機能を実現する。また、ＰＬＣシステム１に接続可能な開発支援装置３の数は１に限られず、例えば、開発支援装置３に割当可能なアドレス数などが許す限り、任意の数の開発支援装置３を接続できる。
【００２８】
（２）ＰＬＣシステムの構成
次に、ＰＬＣシステム１の詳細な構成について図１を用いて説明する。ＰＬＣシステム１は、制御装置１１と、入力ユニット１３と、出力ユニット１５と、電源ユニット１７と、を有する。
【００２９】
制御装置１１は、プログラマブル・ロジック・コントローラ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ、ＰＬＣ）のＣＰＵユニットである。
【００３０】
制御装置１１においては、所定のタスクが所定の周期にて繰り返し実行される。タスクは、ＰＯＵが割り当てられて実行される単位である。タスクの一例としては、入力ユニット１３からの入力信号に基づいて入力変数を更新し、出力変数に基づいて出力ユニット１５へ出力する出力信号を更新するＩ／Ｏリフレッシュ処理と、ユーザプログラム及び／又はシステムプログラムを実行する処理とを含むものがある。なお、タスクには、モーションコントロール処理などの他の処理がさらに含まれたものもある。
【００３１】
入力ユニット１３は、センサ又はスイッチといった信号入力部５から入力信号を入力し、制御装置１１に当該入力信号を出力する。入力ユニット１３としては、信号入力部５から入力される信号種類に応じた入力ユニットを使用できる。具体的には、例えば、信号入力部５が温度を測定する熱電対により構成されている場合には、熱電対において発生する電圧を入力信号とする入力ユニットを入力ユニット１３として用いることができる。また、例えば、信号入力部５が電気スイッチにより構成されている場合には、当該スイッチのＯＮ／ＯＦＦ状態を入力信号とする入力ユニットを入力ユニット１３として用いることができる。
【００３２】
出力ユニット１５は、出力信号を対応する制御対象機器７に出力する。これにより、制御装置１１は制御対象機器７を制御できる。出力ユニット１５としては、出力信号の種類に応じた出力ユニットを使用できる。例えば、制御対象機器７がモータであり、モータの位置制御などを行う場合には、モーションコントローラ機能を有した出力ユニットを用いることができる。また、例えば、制御対象機器７が電気炉である場合には、電気炉を制御するリレーを制御する信号（例えば、ＯＮ／ＯＦＦデューティ比を制御する信号）を出力する出力ユニットを用いることができる。
【００３３】
電源ユニット１７は、制御装置１１、入力ユニット１３、及び出力ユニット１５に電力を供給する。
なお、ＰＬＣシステム１は、上記の構成要素の全てを１の筐体内に組み込んだシステムであってもよいし、各構成要素を個別の筐体に組み込んで当該構成要素を接続してＰＬＣシステムとしてもよい。特に、入力ユニット１３及び出力ユニット１５を個別の構成要素とすることにより、ＰＬＣシステム１は、所望する制御対象機器及び信号入力部を所望の数接続できる。
【００３４】
（３）制御装置の構成
次に、制御装置１１の構成の詳細について、図２及び図３を用いて説明する。図２は、制御装置及び開発支援装置の構成を示すブロック図である。図３は、制御装置及び開発支援装置の機能及びデータの配置を示すブロック図である。
【００３５】
図２において、制御装置１１は、ＣＰＵ１１１と、ＲＡＭ１１３と、ＲＯＭ１１５と、通信インターフェース１１７とを有している。通信インターフェース１１７は、開発支援装置３に接続されており、制御装置１１が開発支援装置３と通信するのに用いられる。
【００３６】
制御装置１１では、システムプログラム１１５ａがＲＯＭ１１５にインストールされており、ＣＰＵ１１１は、システムプログラム１１５ａを実行することで、制御装置１１の動作を制御するように構成されている。なお、システムプログラム１１５ａには、入力ユニット１３に入力された信号をＲＡＭ１１３に取り込む処理を実行するためのプログラムや、ＣＰＵ１１１によって演算されさらにＲＡＭ１１３に格納された演算結果を出力ユニット１５に送り出す処理を実行するためのプログラムなどが含まれている。
【００３７】
ＲＡＭ１１３には、図３に示すように、ユーザプログラム４１が格納されている。ユーザプログラム４１は、複数のＰＯＵが組み合わされて構成されている。
ＰＯＵは、ＩＥＣ６１１３１−３におけるユーザプログラムの実行モデルの単位である。ＰＯＵは、プログラムと、ファンクションと、ファンクションブロックとを含んでいる。ファンクションおよびファンクションブロックは、再利用することが可能である。すなわち、ファンクションおよびファンクションブロックは、複数のユーザプログラムで共用することが可能である。なお、ファンクションは、所定の入力値が入力された場合に、所定の入力値に対応する一定の出力値を出力する関数であり、ファンクションブロックは、内部状態を持てることにより、入力値に対する出力値が一定ではない関数である。
【００３８】
また、ＲＡＭ１１３には、図３に示すように、タスク制御プログラム４３が格納されている。タスク制御プログラム４３は、タスク設定データ４５に基づいて、タスクの実行を制御するものである。なお、タスク制御プログラム４３は、次に述べるタスク設定データ４５の内容を変更することができる。
【００３９】
また、ＲＡＭ１１３には、図３に示すように、制御装置１１において実行されるタスクを指定するためのタスク設定データ４５が記憶されている。
図４を用いて、タスク設定データ４５を説明する。図４は、タスク設定データの内容を示す表である。タスク設定データ４５には、各タスクの名称、優先度と、実行周期と、固定実行時間（後述）と、タスクに割り付けられたプログラムの名称と、が記載されている。
なお、タスクは、一例として、優先度の値が小さいタスクが優先的に実行される。また、制御装置１１では、予め設定された時間間隔（たとえば、１ｍｓ）の制御サイクルを処理全体の共通サイクルとして採用している。
【００４０】
図４の例では、タスクＡは、タスクＢよりも優先的に実行されるとともに、１ｍｓの周期で実行される。すなわち、タスクＡは、１回分の制御サイクル（１ｍｓの時間間隔）を実行サイクルとしている。また、タスクＡには、ＰＯＵとしてのプログラムＰ１、プログラムＰ２、プログラムＰ３が割り付けられている。また、タスクＡには、プログラム１で利用されるファンクションブロックＦＢ１が含まれている。
【００４１】
タスクＢは、２ｍｓの周期で実行される。すなわち、タスクＢは、２回分の制御サイクル（２ｍｓの時間間隔）を実行サイクルとしている。また、タスクＢの周期は、タスクＡの周期の整数倍（２倍）に設定されている。また、タスクＢは、ＰＯＵとしてのプログラム４、プログラム５が割り付けられている。また、タスクＢには、プログラム４で利用されるファンクションブロックＦＢ２が含まれている。
【００４２】
制御装置１１は、ユーザプログラムの更新を行うことが可能なように構成されている。すなわち、制御装置１１は、オンラインエディットを行うことが可能なように構成されている。なお、オンラインエディットとは、制御装置１１の運転（タスクの実行）を停止させることなく、開発支援装置３を用いてユーザプログラム４１の一部を変更・追加することをいう。
【００４３】
オンラインエディット中には、制御装置１１は、最初に、開発支援装置３からアップロードされたユーザプログラム４１を通信インターフェース１１７により受信する。その後、制御装置１１は、実行されている複数のタスクが完了してから複数のタスクが再び実行されるまでの間に、ユーザプログラム４１を更新する。つまり、制御装置１１は、例えば、ユーザプログラムのＰＯＵ（例えば、ファンクションブロック）を通信インターフェース１１７により受信した後、ユーザプログラムのＰＯＵを受信したＰＯＵに置き換える。
【００４４】
（４）開発支援装置の構成
次に、開発支援装置３の構成の詳細について、図２及び図３を用いて説明する。
開発支援装置３は、図２に示すように、ＣＰＵ３１と、記憶部３３と、通信インターフェース３５と、入力部３７と、表示部３９とを有している。記憶部３３は、開発支援プログラム３３ａを格納している。開発支援装置３の機能は、ＣＰＵ３１において、開発支援プログラム３３ａを実行することにより実現されている。入力部３７は、キーボード、マウス、タッチパネルなどの入力手段である。表示部３９は、ＬＣＤ、有機ＥＬを用いたディスプレイからなる表示手段である。
【００４５】
表示部３９は入力内容および処理内容を表示できる。入力部３７は、タスク設定データ、及びソースプログラムとしてのユーザプログラムを入力できる。
【００４６】
通信インターフェース３５は、開発支援装置３の記憶部３３に記憶されているタスク制御プログラム、タスク設定指示及びユーザプログラムを制御装置１１にダウンロードするためのインターフェースである。
【００４７】
図３を用いて、開発支援装置３の開発支援プログラム３ａ（図２）の機能を説明する。開発支援プログラム３ａは、タスク設定データ生成部６３と、プログラム生成部６５とを有している。
【００４８】
タスク設定データ生成部６３は、入力部３７から入力されたタスク設定データを基にして、タスク設定データ４５を生成する。
【００４９】
プログラム生成部６５は、入力部３７から入力されたソースプログラムをコンパイルし、ユーザプログラム４１を生成する。
【００５０】
次に、入力部３７よりソースプログラムからなるユーザプログラムが入力されると、プログラム生成部６５が、入力されたソースプログラムのユーザプログラムをコンパイルし、オブジェクトモジュールのユーザプログラム４１を生成する。
【００５１】
続いて、入力部３７からタスク設定データが入力されると、タスク設定データ生成部６３が、入力されたタスク設定データを用いてＰＬＣ１が利用可能なタスク設定データ４５を生成する。
【００５２】
その後、開発支援装置３は、メモリ中のユーザプログラム４１及びタスク設定データ４５を、制御装置１１のＲＡＭ１１３にダウンロードする。
【００５３】
図５を用いて、開発支援装置３におけるタスク設定すなわちタスク設定データ４５の作成を説明する。図５は、タスク設定制御を示すフローチャートである。なお、以下の制御動作は、主に、入力部３７を用いた操作に従って、タスク設定データ生成部６３が実行する。
最初に、タスク構成の設計を行う。タスク構成の設計は、制御対象装置の必要な入出力応答性能に基づいて行われる（ステップＳ１）。
次に、どのデバイスを２つのタスクのどちらでＩ／Ｏリフレッシュするかを決定する（ステップＳ２）。
【００５４】
次に、各プログラムを割り付けるタスクを決定し、さらにタスクにプログラムを割り付けていく（ステップＳ３）。
次に、タスクの固定化時間を設定する（ステップＳ４）。タスクの固定化時間とは、タスクの実際の実行時間より長い時間が、タスクの固定された実行時間として設定されたものである。つまり、タスクが実行された後に、固定時間と実際の実行時間との差分である非実行時間が確保される。なお、固定化時間は、予測される実際の実行時間の最大値を超えていることが好ましい。また、タスクの固定化時間の設定は、図４のタスク設定データ４５が表示部３９に表示されることにより、ユーザは設定を容易に行うことができる。より具体的には、ユーザは入力部３７を介してタスクの固定化時間を開発支援装置３に入力し、次にタスク設定データ生成部６３が記憶部３３に格納されているタスクの固定化時間を用いて、タスク設定データ４５を更新する。以上に述べたように、タスク設定データ生成部６３が、タスクの固定化時間を設定する。なお、タスクの固定時間とは、後述する変更が行われない限りは、基本的には一定である。
【００５５】
以上に述べたように、開発支援装置３において、入力部３７及び記憶部３３が、タスクの実際の実行時間より長い設定実行時間の入力を受け付け可能な受付部として機能する。また、タスク設定データ生成部６３が、タスクを設定するときに、受け付けられた設定実行時間を固定化された固定化時間として設定する設定部として機能する。また、タスク設定データ生成部６３は、後述するように、制御装置１１においてユーザプログラム４１の実行中にタスクの固定化時間を変更可能である。
最後に、その他の設定が行われる（ステップＳ５）。
【００５６】
図４を用いて、固定化時間をさらに説明する。この実施形態では、タスクＡに固定化時間が設定されているが、タスクＢには設定されていない。タスクＡの固定化時間は具体的には５５０μｓである。固定化時間は、タスクＡにおけるプログラムの実際の実行時間より長く設定されていることが好ましい。
【００５７】
（５）制御動作
図６を用いて、タスク実行動作を説明する。図６は、タスク実行のタイミングを示すタイミングチャートである。
制御装置１１では、電源が投入されると、所定の初期処理が実行される。
【００５８】
そして、制御サイクルと同時にタスクＡ、Ｂの実行サイクルが開始される。なお、タスクＡは１ｍｓの周期で実行され、タスクＢは２ｍｓの周期で実行される。このように、本実施形態では、実行周期が異なる２種類のタスクの例を用いる。ただし、タスクの種類の数は限定されない。
また、この実施形態では、タスクＡは、実行時間として固定化時間が設定されており、実行の際には固定化時間が適用されるタスクである。タスクＢは、実行時間として固定化時間が設定されていないタスクである。
以下の説明において、タスクＡ及びタスクＢを実行するのは、タスク制御プログラム４３は、タスクＡ及びタスクＢを実行する際には、ＲＡＭ１１３に格納されたタスク設定データ４５を利用する。
【００５９】
具体的には、まず、最も優先度の高いタスクＡの処理が開始される。このとき、タスクＢは、タスクＡよりも優先度が低いことから、実際の処理が開始されることなく待機状態になる。
【００６０】
そして、タスクＡに割り付けられたプログラムＰ１、プログラムＰ２、プログラムＰ３が実行される。タスクＡの処理が完了すると、タスクＢの処理が開始される。つまり、タスクＢに割り付けられたプログラムＰ４、プログラムＰ５が実行される。
【００６１】
次に、タスクＡ、Ｂの実行サイクルが同時に開始されてから１ｍｓ経過すると、タスクＡの実行サイクルが経過することから、タスクＢに割り付けられたプログラムＰ５が中断され、タスクＡの実行が開始される。このとき、タスクＢは待機状態である。
【００６２】
そして、タスクＡに割り付けられたプログラムＰ１、プログラムＰ２、プログラムＰ３１が実行されタスクＡの処理が完了すると、タスクＢにおいて中断されていたプログラムＰ５の処理が再開される。これにより、プログラムＰ５の残りが実行される。
【００６３】
次に、タスクＡ、Ｂの実行サイクルが同時に開始されてから２ｍｓ、３ｍｓ経過すると、タスクＡの実行サイクルが経過することから、タスクＡの実行が開始される。
そして、タスクＡ、Ｂの実行サイクルが同時に開始されてから２ｍｓ経過すると、タスクＡの実行サイクルが経過することから、タスクＡの実行が開始される。このとき、タスクＢの実行サイクルも経過することから、タスクＢは待機状態である。すなわち、タスクＡ、Ｂの実行サイクルが同時に開始されてから２ｍｓ経過すると、タスクＡ、Ｂの実行サイクルが再び同時に開始される。その後、上記した動作が繰り返し行われる。
【００６４】
タスク制御プログラム４３は、タスクＡを実行する際には、タスク設定データ４５に記述された固定化時間を実行時間として適用する。図６から明らかなように、タスクＡの固定化時間は、タスクＡに割り付けられたプログラムが実際に実行される時間（実コードが実行されている時間）より長く設定されているので、実際の処理が終了してから、タスクＢに割り付けられたプログラムが開始されるまでの間には非実行時間Ｓが確保されている。非実行時間Ｓは、変化すなわち将来の修正・拡張に対応するために確保されている時間である。図６に示す例では、タスクＡの固定化時間が５５０μｓであり、タスクＡの実際の実行時間が５００μｓであるので、非実行時間Ｓは５０μｓである。非実行時間Ｓには、処理は何も行わないことが好ましく、例えば、空ループを処理したり、プログラム実行を一時休止したりする。また、非実行時間Ｓでは、タスク及びプログラムの実行順序に影響しない処理である、外部通信又はイベントとして発生する処理を実行してもよい。
この装置では、タスクＡに固定化時間が設定されるので、タスクＡに割り当てられた処理の実行時間が長くなる修正が行われたとしても、実際の実行時間が固定化時間を超えない。つまり、タスクＡの処理の変更がタスクＢの実行に影響を与えない。より具体的には、タスクＡの実際の実行時間が長くなったとしても、タスクＢの開始タイミングは変わらないので、タスクＢの実行を設定通りに正しく行うことができる。
【００６５】
次に、図７及び図８を用いて、本発明の実施形態と異なる場合に生じる問題を説明する。図７及び図８は、本発明の実施形態とは異なる場合のタスク実行のタイミングを示すタイミングチャートである。
【００６６】
この例では、本発明の実施形態とは異なり、タスクＡに固定化時間が設定されていない。したがって、図７ではタスクＡの実際の実行時間は５００μｓであるが、例えば割り当てられたＰＯＵの変更によって、長くなることがある。図７の状態から変化して、図８のようにタスクＡの実行時間が長くなると（例えば、変更後のタスクＡの実際の実行時間は５４０μｓ）であり、タスクＢの実行開始時が遅くなる。つまり、上記の場合には、タスクＢの開始タイミングが変更されてしまい、さらにはタスクＢの終了時が後ろにずれてしまう。その結果、図７の状態では２ｍｓの周期内に収まっていたタスクＢが、図８の状態では２ｍｓの周期を超えてしまい（斜線部分）、その結果、タスクＢのプログラムＰ５が実行できなくなる。
【００６７】
本発明の実施形態の説明に戻って、次に、図９を用いて、タスクＡの実際の実行時間を取得して表示する制御を説明する。図９は、タスクの実際の実行時間を取得する制御を説明するためのフローチャートである。なお、以下の制御動作は、主に、タスク制御プログラム４３によって実行される。
最初に、タスク実行が開始されるのを待つ（ステップＳ１１）。
タスク実行が開始されると（ステップＳ１１でＹｅｓ）、タスク制御プログラム４３は、タイマ（図示せず）からタスクＡの開始時刻を取得する（ステップＳ１２）。
次に、タスク制御プログラム４３は、タスクＡの実行が終了するのを待つ（ステップＳ１３）。
【００６８】
終了すると、タスク制御プログラム４３は、タイマ（図示せず）からタスクＡの実行終了時刻を取得する（ステップＳ１４）。
次に、タスク制御プログラム４３は、タスクＡの実際の実行時間を算出する（ステップＳ１５）。
【００６９】
次に、タスク制御プログラム４３は、固定化時間と実際の実行時間の差分を演算する（ステップＳ１６）。
次に、タスク制御プログラム４３は、タスクＡの実際の実行時間と、差分とをＲＡＭ１１３に格納する（ステップＳ１７）。なお、タスク制御プログラム４３は、タスクＡの実際の実行時間のみをＲＡＭ１１３に格納してもよい。このように、タスクＡが実行される毎に、実際の実行時間がリアルタイムの情報としてＲＡＭ１１３に格納される。
最後に、タスク制御プログラム４３は、差分の時間が経過して固定化時間が終了すると（ステップＳ１７でＹｅｓ）、プロセスはステップＳ１１に戻る。
【００７０】
開発支援装置３は、定期的に又はユーザからの指示によって、制御装置１１からタスクＡの実際の実行時間、固定化時間及び差分を取得する。より具体的には、タスク設定データ生成部６３が、制御装置１１のＲＡＭ１１３に格納されているタスクの実際の実行時間、固定化時間及び差分を制御装置１１に要求し、その結果制御装置１１から送られてくるタスクの実際の実行時間、固定化時間及び差分を受信する。タスク設定データ生成部６３は、上記データを記憶部３３に保存する。
その結果、開発支援装置３の表示部３９が、図１０の表５２を表示可能になる。図１０は、タスクＡの実際の実行時間と固定化時間の関係を示す表である。図１０では、実行時間（最小）、実行時間（最大）、固定化時間、差分が示されている。差分は、固定化時間と実行時間（最大）との差である。これにより、ユーザは、タスクＡの実際の実行時間と固定化時間との関係をリアルタイムで知ることができる。なお、タスクＡの実際の実行時間と固定化時間との関係の判断結果としては、固定化時間に対する実行時間（最大）の割合を表示してもよい。差分と割合はいずれか一方でもよいし、両方でもよい。上記のように、開発支援装置３のタスク設定データ生成部６３が、制御装置１１において実行されているタスクＡの実際の実行時間及び固定化時間を、制御装置１１から取得する取得部として機能している。
上記実施形態では、固定化時間と実際の実行時間との差分の演算は、制御装置１１で行われていたが、開発支援装置３で行われてもよい。
【００７１】
ユーザは、開発支援装置３の表示部３９に表示された図１０の表５２を見ながら、入力部３７から変更内容を開発支援装置３に入力する。例えば、実行時間（最大）と固定化時間を比較して、差分が充分であると判断すれば固定化時間を短くするように変更し、差分が不足であると判断すれば固定化時間を長くなるように変更する。
その結果、開発支援装置３のタスク設定データ生成部６３が、タスク設定データ４５の修正を行い、その修正内容を制御装置１１に送信する。それにより、制御装置１１のタスク制御プログラム４３がタスク設定データ４５を変更する。具体的には、図４におけるタスク設定データ４５におけるタスクＡの固定化時間の値が変更される。以上に述べたように、タスク設定データ生成部６３は、ユーザプログラム４１の実行中にタスクの固定化時間を変更する設定部として機能している。
【００７２】
この結果、固定化時間の値が変更された後に開始されるタスクＡについては、変更後の固定化時間が適用される。
以上に述べたように、タスク制御プログラム４３がタスクを実行する毎に、タスクの実際の実行時間と固定化時間との関係（具体的には、差分又は割合）が判断される。そして、その判断結果に基づいて、開発支援装置３のタスク設定データ生成部６３が固定化時間を再設定できる。
【００７３】
前記実施形態ではタスクＡのみに固定化時間が設定されていたが、タスクＢのみに固定化時間が設定されていてもよいし、タスクＡ及びタスクＢの両方に固定化時間が設定されていてもよい。
【００７４】
上記実施形態は、入力ユニット及び出力ユニットが増減するようなフレキシブルなＰＬＣにおいて、構成変更による影響を抑制する効果がある。
【００７５】
２．第２実施形態
第１実施形態では、固定化時間を設定する対象としてタスクを選んだが、本発明はそのような実施形態に限定されない。タスクに割り付けられる各種処理（例えば、プログラム、Ｉ／Ｏリフレッシュ）の実行時間に固定化時間を適用してもよい。
【００７６】
図１１を用いて、ＰＯＵに本発明を適用した実施形態を説明する。図１１は、第２実施形態におけるタスクのタイミングチャートである。なお、この実施形態では、第１実施形態の制御システム１００の構成を前提としている。ただし、本実施形態では、第１実施形態とは異なり、タスクに固定化時間を設定することは行われない。
図１１において、タスクＡに割り付けられたユーザプログラムＵＰＧ１は、ＰＯＵであるプログラムＰ１、ＰＯＵであるプログラムＰ２、ＰＯＵであるプログラムＰ３から構成されている。ここで、プログラムＰ２は、実際の実行時間が１５０μｓであるのに対して、固定化時間が２００μｓに設定されている。この場合、プログラムＰ２が実際の処理を終了しても、プログラムＰ３が実行を開始するまでには非実行時間Ｓ（この場合は５０μｓ）が確保されている。これにより、プログラムＰ２が変更されたとしても、実際の実行時間が固定化時間を超えないので、タスクＡの実行時間が延びることがなく、さらにはタスクＢの実行に影響を与えることがない。
【００７７】
この実施形態において、ＰＯＵの実際の実行時間の取得、ＰＯＵの実際の時間と固定化時間との関係の判断、ＰＯＵの実際の時間と固定化時間との表示は、第１実施形態と同様に行われる。
【００７８】
この装置では、タスクＡに割り付けられた処理であるプログラムＰ２に固定化時間が設定されるので、プログラムＰ２の実行時間が長くなる修正が行われたとしても、実際の実行時間が固定化時間を超えない。つまり、プログラムＰ１の変更がタスクＡの実行時間に影響を与えない。この結果、第１実施形態と同様に、タスクＡの処理の変更がタスクＢの実行に影響を与えない。より具体的には、タスクＡの実際の実行時間が長くなったとしても、タスクＢの開始タイミングは変わらないので、タスクＢの実行を設定通りに正しく行うことができる。
【００７９】
この実施形態では、プログラムＰ２のみに固定化時間が設定されている例を説明したが、プログラムＰ１及びプログラムＰ３にも固定化時間を設定してもよい。
【００８０】
次に、図１２を用いて、ＰＯＵの固定化時間の設定について説明する。図１２は、ＰＯＵの構造を示す図である。ＰＯＵ＿Ａ７１は、固定化時間情報７３が内部に埋め込まれている。この場合、制御装置１１のＣＰＵ１１１は、ＰＯＵ＿Ａ７１の固定化時間情報７３を読み出し、固定化時間の設定に基づいてＰＯＵＰＯＵ＿Ａ７１を実行する。
図１３を用いて、第２実施形態の変形例を説明する。図１３は、ＰＯＵの構造を示す図である。ＰＯＵ＿Ｂ７５は、固定化時間情報が埋め込まれていない。代わりに、テーブル７７にＰＯＵ＿Ｂ７５の固定化時間情報が記述されている。この場合、制御装置１１のＣＰＵ１１１は、テーブル７７の固定化時間情報を読み出し、固定化時間の設定に基づいてＰＯＵＰＯＵ＿Ａ７１を実行する。
【００８１】
ここで、ＰＯＵの中でもファンクションブロックについての固定化時間の設定を説明する。ファンクションブロックは、定義とインスタンスとから構成されている。インスタンスは、変数であり、複数の属性（例えば、定数、初期値）を有している。そこで、この実施形態では、固定化時間を変数の属性とすることで、ライブラリのユーザ側で定義の固定化時間の設定を変更できるようになる。この場合、例えば、変数名、型、固定化時間設定からなる変数テーブル使用する。その結果、制御装置１１のＣＰＵ１１１は、定義の設定ではなく、インスタンスの属性を優先することで、ファンクションブロックの実行時間を固定化する。また、別の例として、インスタンスの設定値を定義の設定値に上書きしてもよい。
【００８２】
上記のＰＯＵの固定化時間設定は、開発支援装置３のプログラム生成部６５が、ユーザプログラム４１を作成するときに実行される。また、開発支援装置３によるオンラインエディット機能（前述）によって変数の属性を書き換えることができれば、制御装置１１の動作中にユーザプログラム４１のＰＯＵの固定化時間を変更できる。
【００８３】
オンラインエディットでは、通常時の動作が行われている際に、開発支援装置３からユーザプログラム４１がアップロードされることで、ＰＯＵの固定化時間の設定を変更する。この場合、次に当該ＰＯＵが実行されるときに、変更後の固定化時間がＰＯＵの実行に適用される。
【００８４】
図１４を用いて、本実施形態の変形例を説明する。図１４は、第２実施形態の変形例におけるタスクのタイミングチャートである。
この変形例では、タスクＡのＩ／リフレッシュに固定化時間が設定されている。この場合、Ｉ／Ｏリフレッシュ全体に固定化時間が設定されていてもよいし、入力データ処理及び出力データ処理の一方に固定化時間が設定されていてもよい。
Ｉ／Ｏリフレッシュに固定化時間を設定については、設定条件、設定方法、設定による効果は前記実施形態と同様である。
【００８５】
３．第３実施形態
第１実施形態ではタスクに固定化時間が設定され、第２実施形態ではタスクに割り付けられる処理に固定化時間が設定されていたが、両方の設定が行われてもよい。
【００８６】
図１５を用いて、第３実施形態を説明する。図１５は、第３実施形態におけるタスク設定データの内容を示す表である。
本実施形態では、第１実施形態の制御システム１００の構成を前提としており、第１実施形態の機能（タスクの固定化時間設定）及び前記第２実施形態の機能（タスクに割り付けられる処理の固定化時間設定）の両方が、制御装置１１及び開発支援装置３によって実現されている。
この実施形態では、図１５に示す表５４が、開発支援装置３の表示部３９に表示される。表５４においては、プライマリタスクに固定化時間が設定され、さらに、プログラムＰ１のファンクションブロックＦＢＩ１及びプログラムＰ２のファンクションブロックＦＢＩ３に固定化時間が設定されている。
【００８７】
この結果、ユーザは開発支援装置３の表示部３９を見ることによって、実際の動作に従って変化していく実行時間（最大）と固定化時間との関係を確認することができる。また、ユーザは、開発支援装置３の入力部３７を操作することで、プライマリタスクの固定化時間、及びプログラムＰ１のファンクションブロックＦＢＩ１及びプログラムＰ２のファンクションブロックＦＢＩ３の固定化時間を変更できる。以上に述べたように、タスクの実行中に固定化時間が変更されるので、固定化時間の設定を容易に最適化できる。
【００８８】
４．他の実施形態
以上、本発明の複数の実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、発明の要旨を逸脱しない範囲で種々の変更が可能である。特に、本明細書に書かれた複数の実施形態及び変形例は必要に応じて任意に組み合せ可能である。
【産業上の利用可能性】
【００８９】
本発明は、制御装置及び制御システムに広く適用できる。
【符号の説明】
【００９０】
１        ：ＰＬＣシステム
３        ：開発支援装置
５        ：信号入力部
７        ：制御対象機器
１１      ：制御装置
１３      ：入力ユニット
１５      ：出力ユニット
１７      ：電源ユニット
３１      ：ＣＰＵ
３３      ：記憶部
３３ａ    ：開発支援プログラム
３５      ：通信インターフェース
３７      ：入力部
３９      ：表示部
４１      ：ユーザプログラム
４３      ：タスク制御プログラム
４５      ：タスク設定データ
６３      ：タスク設定データ生成部
６５      ：プログラム生成部
７１      ：ＰＯＵ＿Ａ
７３      ：固定化時間情報
７５      ：ＰＯＵ＿Ｂ
７９      ：固定化時間情報
１００    ：制御システム
１１１    ：ＣＰＵ
１１３    ：ＲＡＭ
１１５    ：ＲＯＭ
１１５ａ  ：システムプログラム
１１７    ：通信インターフェース
【図１】
2015136973.tif 000003
【図２】
2015136973.tif 000004
【図３】
2015136973.tif 000005
【図４】
2015136973.tif 000006
【図５】
2015136973.tif 000007
【図６】
2015136973.tif 000008
【図７】
2015136973.tif 000009
【図８】
2015136973.tif 000010
【図９】
2015136973.tif 000011
【図１０】
2015136973.tif 000012
【図１１】
2015136973.tif 000013
【図１２】
2015136973.tif 000014
【図１３】
2015136973.tif 000015
【図１４】
2015136973.tif 000016
【図１５】
2015136973.tif 000017
【国際調査報告】
2015136973.tif 000018
2015136973.tif 000019
2015136973.tif 000020