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