(57)【要約】【課題】制御周期の制約を満たすとともにタスクを効率よく実行することが可能な制御アプリケーションの生成を支援する。【解決手段】制御対象装置３０を制御する一つ以上のコントローラ２０において実行される制御ＡＰ１５４の生成を支援する制御ＡＰ生成支援装置１が、実際にコントローラ２０に入力された入力データを取得し、制御ＡＰ１５４の生成元となる制御プログラム１５３を生成し、制御プログラム１５３に基づき制御ＡＰ１５４を生成する。制御ＡＰ生成支援装置１は、コントローラ２０が制御ＡＰ１５４を実行することにより生成されるタスクについて設定されている実行時間の上限値である制御周期５１４を記憶し、上記入力データを入力として与えつつ制御ＡＰ１５４を実行するシミュレーションを行ってタスクの実行時間を求め、タスクの実行時間が制御周期５１４を超えるか否かを判定する。【選択図】図３
2018010389.tif 000002
【特許請求の範囲】
【請求項１】
制御対象装置を制御する一つ以上のコントローラにおいて実行される制御アプリケーションの生成を支援する制御アプリケーション生成支援装置であって、
前記制御対象装置の制御に際して実際に前記コントローラに入力された入力データを取得する入力データ取得部と、
前記制御アプリケーションの生成元となる制御プログラムを生成する制御プログラム生成部と、
前記制御プログラムに基づき前記制御アプリケーションを生成する制御アプリケーション生成部と、
前記コントローラが前記制御アプリケーションを実行することにより生成されるタスクについて設定されている実行時間の上限値である制御周期を記憶する制御周期記憶部と、
前記入力データ取得部が取得した前記入力データを入力として与えつつ前記制御アプリケーションを実行するシミュレーションを行って前記タスクの実行時間を求め、前記タスクの実行時間が前記制御周期を超えるか否かを判定するシミュレーション実行部と、
を備える、
制御アプリケーション生成支援装置。
【請求項２】
請求項１に記載の制御アプリケーション生成支援装置であって、
前記制御周期記憶部は、前記制御アプリケーションを前記コントローラに実行させることにより生成される複数の前記タスクの夫々について設定された前記制御周期を記憶し、
前記シミュレーション実行部は、前記入力データ取得部が取得した前記入力データを入力として与えつつ前記制御アプリケーションを実行するシミュレーションを行って前記複数のタスクの夫々の実行時間を求め、前記複数のタスクの夫々の実行時間が夫々について設定された前記制御周期を超えているか否かを判定する、
制御アプリケーション生成支援装置。
【請求項３】
請求項２に記載の制御アプリケーション生成支援装置であって、
前記制御アプリケーションは、前記コントローラが備える複数のコアプロセッサにより実行され、
前記複数のタスクの夫々は、前記コアプロセッサのいずれかに割り当てられて実行され、
前記シミュレーション実行部により前記実行時間が前記制御周期を超えていると判定された前記タスクの前記コアプロセッサへの割り当てが変更されるように前記制御プログラムを変更するタスク割当部を更に備え、
前記アプリケーション生成部は、前記変更後の前記制御プログラムに基づき前記制御アプリケーションを生成し、
前記シミュレーション実行部は、前記制御アプリケーションについて前記シミュレーションを行うことにより前記複数のタスクの夫々の実行時間を求め、前記複数のタスクの夫々の実行時間が夫々について設定された前記制御周期を超えているか否かを判定する、
制御アプリケーション生成支援装置。
【請求項４】
請求項３に記載の制御アプリケーション生成支援装置であって、
前記制御プログラムの変更、前記制御アプリケーションの生成、及び前記シミュレーションの実行及び前記判定を、前記複数のタスクのいずれもが、夫々の実行時間が夫々について設定された前記制御周期を超えなくなるまで繰り返す、
制御アプリケーション生成支援装置。
【請求項５】
請求項４に記載の制御アプリケーション生成支援装置であって、
前記タスク割当部は、前記シミュレーション実行部により前記実行時間が前記制御周期
を超えていると判定された前記タスクを、余裕度（現在割り当てられているタスクについて設定されている前記制御周期−現在割り当てられているタスクの前記実行時間）が大きい前記コアプロセッサに優先的に割り当てる、
制御アプリケーション生成支援装置。
【請求項６】
請求項１乃至５のいずれか一項に記載の制御アプリケーション生成支援装置であって、
前記コントローラと通信する通信装置と、
制御アプリケーション生成部が生成した前記制御アプリケーションを前記コントローラに送信する制御アプリケーション配布部と、
を更に備える、
制御アプリケーション生成支援装置。
【請求項７】
請求項１乃至５のいずれか一項に記載の制御アプリケーション生成支援装置であって、
前記制御対象装置３０と通信する通信装置と、
制御アプリケーション生成部が生成した前記制御アプリケーションを実行して前記制御対象装置を制御する制御アプリケーション実行部と、
を更に備える、
制御アプリケーション生成支援装置。
【請求項８】
請求項１乃至５のいずれか一項に記載の制御アプリケーション生成支援装置であって、
前記タスクの実行時間が前記制御周期を超えている場合に、前記タスクの実行時間が前記制御周期を超えないように前記制御プログラムの構成を変更する構成変更部を更に備える、
制御アプリケーション生成支援装置。
【請求項９】
請求項１乃至５のいずれか一項に記載の制御アプリケーション生成支援装置であって、
前記コントローラはＰＬＣ（Programmable Logic Controller）である、
制御アプリケーション生成支援装置。
【請求項１０】
制御対象装置を制御する一つ以上のコントローラにおいて実行される制御アプリケーションの生成を支援する方法であって、
情報処理装置が、
前記制御対象装置の制御に際して実際に前記コントローラに入力された入力データを取得するステップと、
前記制御アプリケーションの生成元となる制御プログラムを生成するステップと、
前記制御プログラムに基づき前記制御アプリケーションを生成するステップと、
前記コントローラが前記制御アプリケーションを実行することにより生成されるタスクについて設定されている実行時間の上限値である制御周期を記憶するステップと、
前記入力データを入力として与えつつ前記制御アプリケーションを実行するシミュレーションを行って前記タスクの実行時間を求め、前記タスクの実行時間が前記制御周期を超えるか否かを判定するステップと、
を実行する、
制御アプリケーション生成支援方法。
【請求項１１】
請求項１０に記載の制御アプリケーション生成支援方法であって、
前記情報処理装置が、
前記制御アプリケーションを前記コントローラに実行させることにより生成される複数の前記タスクの夫々について設定された前記制御周期を記憶ステップと、
前記入力データを入力として与えつつ前記制御アプリケーションを実行するシミュレーションを行って前記複数のタスクの夫々の実行時間を求め、前記複数のタスクの夫々の実
行時間が夫々について設定された前記制御周期を超えているか否かを判定するステップと、
をさらに実行する、
制御アプリケーション生成支援方法。
【請求項１２】
請求項１１に記載の制御アプリケーション生成支援方法であって、
前記制御アプリケーションは、前記コントローラが備える複数のコアプロセッサにより実行され、
前記複数のタスクの夫々は、前記コアプロセッサのいずれかに割り当てられて実行され、
前記情報処理装置が、
前記実行時間が前記制御周期を超えていると判定された前記タスクの前記コアプロセッサへの割り当てが変更されるように前記制御プログラムを変更するステップと、
前記変更後の前記制御プログラムに基づき前記制御アプリケーションを生成するステップと、
前記制御アプリケーションについて前記シミュレーションを行うことにより前記複数のタスクの夫々の実行時間を求め、前記複数のタスクの夫々の実行時間が夫々について設定された前記制御周期を超えているか否かを判定するステップと、
をさらに実行する、
制御アプリケーション生成支援方法。
【請求項１３】
請求項１２に記載の制御アプリケーション生成支援方法であって、
前記情報処理装置が、前記制御プログラムの変更、前記制御アプリケーションの生成、及び前記シミュレーションの実行及び前記判定を、前記複数のタスクのいずれもが、夫々の実行時間が夫々について設定された前記制御周期を超えなくなるまで繰り返すステップ、
をさらに実行する、
制御アプリケーション生成支援方法。
【請求項１４】
請求項１３に記載の制御アプリケーション生成支援方法であって、
前記情報処理装置が、前記シミュレーション実行部により前記実行時間が前記制御周期を超えていると判定された前記タスクを、余裕度（現在割り当てられているタスクについて設定されている前記制御周期−現在割り当てられているタスクの前記実行時間）が大きい前記コアプロセッサに優先的に割り当てるステップ、
をさらに実行する、
制御アプリケーション生成支援方法。
【請求項１５】
請求項１０乃至１４のいずれか一項に記載の制御アプリケーション生成支援装置であって、
前記情報処理装置が、前記制御アプリケーションを前記コントローラに送信するステップ、
をさらに実行する、
制御アプリケーション生成支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御アプリケーション生成支援装置、及び制御アプリケーション生成支援方法に関する。
【背景技術】
【０００２】
特許文献１には、「コントローラサポートプログラムは、コントローラが制御プログラムを実行優先度と実行サイクルとに従って実行するときに、実行サイクルの開始からその実行サイクルにおける制御プログラムの実行終了までの間に経過する時間であって、コントローラにおいて測定された時間またはコントローラサポート装置において推定された時間である総計実行時間を取得する総計実行時間取得処理と、総計実行時間を出力するための出力処理とを、演算部に実行させる。」と記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１９４６７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＰＬＣ（Programmable Logic Controller）等のコントローラを用いて機械装置や電気
機器等の制御対象装置の制御を行うシステムにおいては、コントローラが１サイクル分の処理を繰り返し実行するように構成されていることが多い。ここでコントローラが制御アプリケーションを実行する際、上記１サイクル分の処理に相当するタスクの実行時間が制御対象装置の制御周期を超えてしまうと、短い入力の変化を取り込むことができなくなるため、制御アプリケーションはタスクの実行時間が制御周期を超えないように構成する必要がある。そこで制御アプリケーションの開発や更新に際しては、タスクの実行時間が制御周期内に終了するか否かについて、シミュレーションによる検証が行われる。
【０００５】
上記シミュレーションに際しては、実際の入力データによるタスクの実行時間の変動を考慮する必要がある。しかしシミュレーションが行われる時点ではコントローラや制御対象装置の環境が未整備であることも多く、その場合は人手で入力データを作成する必要があり、手間がかかる上、誤りも発生しやすい。またコントローラがマルチタスク方式でタスクを実行する場合は複数のタスクが全体として効率よく実行されるように制御アプリケーションを構成する必要もある。
【０００６】
本発明は、こうした背景に基づきなされたもので、制御周期の制約を満たすとともにタスクを効率よく実行することが可能な制御アプリケーションの生成を支援する、制御アプリケーション生成支援装置、及び制御アプリケーション生成支援方法を提供することを目的としている。
【課題を解決するための手段】
【０００７】
上記目的を達成するための本発明の一つは、制御対象装置を制御する一つ以上のコントローラにおいて実行される制御アプリケーションの生成を支援する制御アプリケーション生成支援装置であって、前記制御対象装置の制御に際して実際に前記コントローラに入力された入力データを取得する入力データ取得部と、前記制御アプリケーションの生成元となる制御プログラムを生成する制御プログラム生成部と、前記制御プログラムに基づき前記制御アプリケーションを生成する制御アプリケーション生成部と、前記コントローラが
前記制御アプリケーションを実行することにより生成されるタスクについて設定されている実行時間の上限値である制御周期を記憶する制御周期記憶部と、前記入力データ取得部が取得した前記入力データを入力として与えつつ前記制御アプリケーションを実行するシミュレーションを行って前記タスクの実行時間を求め、前記タスクの実行時間が前記制御周期を超えるか否かを判定するシミュレーション実行部と、を備える。
【０００８】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄、及び図面により明らかにされる。
【発明の効果】
【０００９】
本発明によれば、制御周期の制約を満たすとともにタスクを効率よく実行することが可能な制御アプリケーションの生成を支援することができる。
【図面の簡単な説明】
【００１０】
【図１】制御ＡＰ生成支援装置１並びに制御システム２の概略的な構成を示す図である。
【図２】コントローラ２０の概略的な構成を示す図である。
【図３】制御ＡＰ生成支援装置１の機能ブロック図である。
【図４】コントローラ情報１５３２の一例である。
【図５】タスク設定１５３３の一例である。
【図６】（ａ）は入力パターンデータ１５５の一例であり、（ｂ）は実行ログデータの一例である。
【図７】制御ＡＰ生成支援処理Ｓ７００を説明するフローチャートである。
【図８】実施例２における、制御ＡＰ生成支援装置１並びに制御システム２の概略的な構成を示す図である。
【図９】制御ＡＰ生成支援処理Ｓ９００を説明するフローチャートである。
【図１０】実施例３における、制御ＡＰ生成支援装置１並びに制御システム２の概略的な構成を示す図である。
【図１１】制御ＡＰ生成支援処理Ｓ１１００を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下、発明を実施するための形態について詳細に説明する。尚、以下の説明において、同一の又は類似する構成に共通の符号を付して重複する説明を省略することがある。
【００１２】
[実施例１]
図１に、実施例１として説明する、制御アプリケーション生成支援装置（以下、制御ＡＰ生成支援装置１と称する。）、及び制御システム２の概略的な構成を示している。同図に示すように、制御システム２は、コントローラ２０と、コントローラ２０によって制御される制御対象装置３０とを含む。制御ＡＰ生成支援装置１は、コントローラ２０において実行される制御アプリケーション（以下、制御ＡＰ１５４と称する。）を生成し、生成した制御ＡＰ１５４をコントローラ２０に配布（ダウンロードとも称される。）する。コントローラ２０は、制御ＡＰ１５４を実行することにより制御対象装置３０を制御する。
【００１３】
制御ＡＰ生成支援装置１は、中央演算処理装置１１、主記憶装置１２、補助記憶装置１３、入力装置１４、出力装置１５、及び通信装置１６を備え、情報処理装置（コンピュータ）として機能する。同図に示すように、制御ＡＰ生成支援装置１の各構成要素は、バス１７等の通信手段を介して通信可能に接続されている。
【００１４】
中央演算処理装置１１は、例えば、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）を用いて構成されており、主記憶装置１２に記憶されているプログ
ラムを実行する。主記憶装置１２は、例えば、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＮＶＲＡＭ（Non Volatile RAM）等の記憶素子を含む。補助記憶装置１３は、例えば、ハードディスクドライブ、ＳＳＤ（Solid State Drive）等である
。
【００１５】
入力装置１４は、ユーザから情報を取得するユーザインタフェースであり、例えば、キーボード、マウス、タッチパネル等である。出力装置１５は、情報をユーザに提供するユーザインタフェースであり、例えば、液晶モニタ等のディスプレイ、スピーカ、印字／印刷装置等である。通信装置１６は、通信線や通信ネットワークを介して他の装置と通信する装置であり、例えば、ＮＩＣ（Network Interface Card）や無線通信モジュール等を用いて構成されている。
【００１６】
図２に制御システム２を構成しているコントローラ２０の概略的な構成を示している。コントローラ２０は、例えば、ＰＬＣ（Programmable Logic Controller）として機能す
るものであり、主処理装置２１、記憶装置２２（いわゆるＩ／Ｏメモリを含む）、入力装置２３、出力装置２４、及び通信装置２５等を含む。コントローラ２０では、例えば、制御ＡＰ生成支援装置１より配布（ダウンロード）される制御ＡＰ１５４を実行し、それにより生成されるタスクを制御するソフトウェア（オペレーティングシステム等）が動作している。
【００１７】
主処理装置２１は、例えば、ＣＰＵやＭＰＵ等のプロセッサ（シングルコアタイプ、マルチコアタイプ）を用いて構成されている。尚、主処理装置２１は、例えば、ＡＳＩＣ（Application Specific LSI）として実現されるものであってもよい。
【００１８】
記憶装置２２は、例えば、ＲＯＭ、ＲＡＭ、ＮＶＲＡＭ等である。尚、主処理装置２１及び記憶装置２２は、例えば、これらが一体化されたユニット（例えば、プロセッサユニットやＣＰＵユニットなどと称されるもの。）として提供されることもある。
【００１９】
入力装置２３は、例えば、スイッチ、各種センサ、Ａ／Ｄコンバータ、エンコーダ等であり、ユーザの操作入力や各種センサの出力、制御対象装置３０の出力等を、入力データとして取り込んで主処理装置２１に入力する。
【００２０】
出力装置２４は、主処理装置２１から入力される制御信号や各種の情報を出力データとして制御対象装置３０等に入力する。尚、入力装置２３及び出力装置２４は、例えば、これらが一体化されたユニット（例えば、Ｉ／Ｏユニットなどと称されるもの。）として提供されることもある。
【００２１】
通信装置２５は、通信ネットワーク５を介して制御ＡＰ生成支援装置１と通信する。通信装置２５が上記通信に際して用いるプロトコルは、例えば、ＲＳ−４２２、ＲＳ−４８５、ＲＳ−２３２Ｃ、ＵＳＢ（Universal Serial Bus）、Ethernet（登録商標）等である。
【００２２】
図１に戻り、制御対象装置３０は、コントローラ２０の出力装置２４から出力される制御信号によって制御される機器（機械装置や電気機器等）であり、例えば、電磁開閉器、電磁バルブ、リレー、表示灯、警報器等である。
【００２３】
図３に制御ＡＰ生成支援装置１の機能ブロック図を示している。同図に示すように、制御ＡＰ生成支援装置１は、装置構成・パラメータ入力部１１１、制御プログラム生成部１１２、タスク割当部１１３、制御アプリケーション生成部（以下、制御ＡＰ生成部１１４と称する。）、入力データ取得部１１５、シミュレーション実行部１１６、及び制御アプ
リケーション配布部（以下、制御ＡＰ配布部１１７と称する。）の各機能を備える。尚、これらの機能は、制御ＡＰ生成支援装置１の中央演算処理装置１１が備えるハードウェアによって、もしくは、制御ＡＰ生成支援装置１の中央演算処理装置１１が、主記憶装置１２や補助記憶装置１３に格納されているプログラムを読み出して実行することにより実現される。
【００２４】
同図に示すように、制御ＡＰ生成支援装置１は、モジュールデータ１５１、デバイスデータ１５２、制御プログラム１５３（プロジェクト情報）、制御ＡＰ１５４、及び入力パターンデータ１５５を記憶する。これらのデータは、例えば、制御ＡＰ生成支援装置１の補助記憶装置１３に記憶されている。またこれらのデータは、例えば、制御ＡＰ生成支援装置１において動作するＤＢＭＳ（DataBase Management System）によってデータベースのテーブルとして管理されている。
【００２５】
装置構成・パラメータ入力部１１１は、制御システム２が備える各種装置の構成や、制御プログラム１５３の生成に際して用いる各種パラメータの入力を受け付け、受け付けた情報を装置構成・パラメータ情報１１０として記憶する。
【００２６】
制御プログラム生成部１１２は、装置構成・パラメータ情報１１０と、モジュールデータ１５１及びデバイスデータ１５２とに基づき制御プログラム１５３を生成する。
【００２７】
モジュールデータ１５１は、例えば、制御システム２の構成要素（コントローラ２０、Ｉ／Ｏ装置等）の制御のために用意されたモジュール群を含む。尚、モジュールとは、例えば、制御対象装置３０を制御するための所定の機能を実現するプログラムの要素である。
【００２８】
デバイスデータ１５２は、例えば、制御システム２の構成要素（コントローラ２０の主処理装置、記憶装置、入力装置、出力装置、及び通信装置、制御対象装置３０等）に関する情報（製品情報、製品仕様（スペック）、カタログ情報等）を含む。
【００２９】
制御プログラム１５３は、例えば、国際電気標準会議（International Electrotechnical Commission）が発行する国際標準規格「ＩＥＣ６１１３１−３」に規定されている構
成（ラダー・ロジック、シーケンシャル・ファンクション・チャート、ファンクション・ブロック、ストラクチャード・テキスト、インストラクション・リスト）の全部又は一部を含む。同図に示すように、本実施形態で示す制御プログラム１５３は、プログラム１５３１、タスク設定１５３３、装置構成１５３４、及びコントローラ情報１５３２を含む。
【００３０】
このうちプログラム１５３１は、例えば、装置構成・パラメータ情報１１０、モジュールデータ１５１、及びデバイスデータ１５２に基づき作成されたラダー図に対応するソースコードやデータである。コントローラ２０が制御ＡＰ１５４を実行することにより生成される１サイクル分のタスクは、例えば、入力データを読み込んでから出力データを出力するまでの完結した１つのラダー図に相当する。
【００３１】
コントローラ情報１５３２は、装置構成・パラメータ情報１１０やデバイスデータ１５２に基づくコントローラ２０の構成要素（例えば、プロセッサユニット、Ｉ／Ｏユニット、特殊機能ユニット等）に関する情報を含む。
【００３２】
図４にコントローラ情報１５３２の一例を示す。同図に示すように、コントローラ情報１５３２は、コントローラＩＤ４１１、アドレス４１２、種別４１３、及び型番４１４の各項目からなる一つ以上のレコードで構成されている。コントローラ情報１５３２の各行は、コントローラ２０の構成要素（例えば、主処理装置２１を構成しているコアプロセッ
サ）に対応している。
【００３３】
同図において、コントローラＩＤ４１１は、コントローラ２０の識別子（以下、コントローラＩＤと称する。）である。アドレス４１２は、同じ行のコントローラＩＤ４１１で特定されるコントローラ２０（以下、当該コントローラ２０と称する。）の構成要素について一意に付与されるアドレスである。アドレス４１２は、例えば、当該コントローラ２０が制御対象装置３０の構成要素にアクセスする際に参照する。尚、アドレス４１２は、例えば、コントローラ２０への各構成要素の接続順序に従って決定される。本例では、アドレス４１２を、構成要素の階層的な接続構成に対応させたドット「.」区切りの表記と
しているが、例えば、アドレス４１２として構成要素ごとに固有の値（オフセット等）を付与してもよい。種別４１３は、当該コントローラ２０の構成要素の種類を示す情報である。型番４１４は、当該コントローラ２０の構成要素の型番（製品番号、製造番号等）を示す情報である。
【００３４】
図３に戻り、タスク設定１５３３は、制御プログラム生成部１１２によって生成されるタスクに関する情報を含む。
【００３５】
図５にタスク設定１５３３の一例を示す。同図に示すように、タスク設定１５３３は、タスクＩＤ５１１、プログラムＩＤ５１２、割当コアプロセッサ５１３、制御周期５１４、及び優先度５１５の各項目を有する一つ以上のレコードで構成されている。タスク設定１５３３の各行は、コントローラ２０が制御ＡＰ１５４を実行することにより生成されるタスクの一つに対応している。
【００３６】
同図におけるタスクＩＤ５１１は、タスクごとに固有に付与される識別子（以下、タスクＩＤと称する。）である。プログラムＩＤ５１２は、同じ行のタスクＩＤ５１１で特定されるタスク（以下、当該タスクと称する。）に対応するプログラムの識別子（以下、プログラムＩＤと称する。）である。
【００３７】
割当コアプロセッサ５１３は、当該タスクに割り当てられている、コントローラ２０の主処理装置２１が備えるコアプロセッサ（以下、当該コアプロセッサと称する。）を特定する情報（以下、コアプロセッサＩＤと称する。）である。尚、主処理装置２１がマルチコアタイプのプロセッサを用いて構成されている場合、コアプロセッサＩＤは、当該プロセッサが備える各コアプロセッサを特定する情報である。
【００３８】
制御周期５１４は、当該タスクについて設定されている実行時間の上限値（制御周期）である。制御周期５１４は、例えば、ユーザが装置構成・パラメータ入力部１１１を介して設定する。
【００３９】
優先度５１５は、割当コアプロセッサ５１３の余裕度（当該コアプロセッサに現在割り当てられているタスクについて設定されている制御周期−当該コアプロセッサに現在割り当てられているタスクの実行時間（例えば、シミュレーション実行部１１６のシミュレーションにより取得された実行時間。））を示す。上記余裕度が高い程、優先度５１５は小さな値となる。
【００４０】
図３に戻り、装置構成１５３４は、コントローラ２０の制御対象となる制御対象装置３０に関する情報（装置構成、制御パラメータ等）や、コントローラ２０のＩ／Ｏメモリのアドレスへの制御対象装置３０の入出力との対応（以下、Ｉ／Ｏ割当と称する。）を示す情報を含む。Ｉ／Ｏ割当は、例えば、制御プログラム生成部１１２が、モジュールデータ１５１及びデバイスデータ１５２を参照しつつ、制御プログラム１５３で用いられる変数の入出力種別やデータ型に応じて自動的に生成する。またＩ／Ｏ割当は、例えば、装置構
成・パラメータ入力部１１１を介してユーザが設定する。
【００４１】
尚、制御プログラム１５３の生成や管理が、例えば、制御ＡＰ生成支援装置１に導入されている統合開発環境（IDE:Integrated Development Environment）等を利用して行われる場合、制御プログラム１５３は、例えば、プロジェクト情報などとして管理される。ユーザは、統合開発環境に対して、制御対象装置３０やコントローラ２０の構成要素、及び制御対象装置３０やコントローラ２０の構成要素を制御するためのパラメータ等を設定していくことにより、制御プログラム１５３を効率よく生成することができる。ユーザは、統合開発環境を利用して新規に制御プログラム１５３を作成することもできるし、統合開発環境に管理されている既存の制御プログラム１５３（プロジェクト情報）を利用して制御プログラム１５３を作成することもできる。統合開発環境は、例えば、制御プログラム生成部１１２のみならず、装置構成・パラメータ入力部１１１、タスク割当部１１３、制御ＡＰ生成部１１４、入力データ取得部１１５、シミュレーション実行部１１６、及び制御ＡＰ配布部１１７の全部又は一部の機能を包含するものであってもよい。
【００４２】
図３に示す入力データ取得部１１５は、制御システム２の既存のコントローラ２０から収集した実行ログ（ロギングデータ）を用いて入力パターンデータ１５５を生成する。実行ログは、コントローラ２０が実際にタスクを実行した際に生成する実行履歴情報であり、コントローラ２０が、制御周期ごとに制御対象装置３０から受信する入力データを時系列的に記録した内容を含む。入力データ取得部１１５は、既存の制御システム２を構成しているコントローラ２０から送信される実行ログを受信し、受信した実行ログに基づき入力パターンデータ１５５を生成する。
【００４３】
図６（ａ）に入力パターンデータ１５５の一例を示す。同図に示すように、入力パターンデータ１５５は、装置種別６１１、制御対象装置ＩＤ６１２、制御パラメータ６１３、及び実行ログデータＩＤ６１４の各項目を有する一つ以上のレコードで構成されている。入力パターンデータ１５５の各行は、制御対象装置３０の一つに対応している。
【００４４】
装置種別６１１は、制御対象装置３０の種別を示す情報である。制御対象装置ＩＤ６１２は、制御対象装置３０の識別子（以下、装置ＩＤと称する。）である。
【００４５】
制御パラメータ６１３は、コントローラ２０が実行する制御ＡＰ１５４によって参照される情報（シミュレーション実行部１１６がシミュレーションに際して制御ＡＰ１５４に与える入力データの一つ）であり、例えば、制御ＡＰ１５４が条件判断を行う際に参照する閾値等である。
【００４６】
実行ログデータＩＤ６１４は、制御ＡＰ生成支援装置１が記憶している実行ログを識別するための識別子（以下、実行ログデータＩＤと称する。）である。
【００４７】
図６（ｂ）は実行ログデータの一例である。同図に示すように、制御ＡＰ生成支援装置１は、実行ログデータＩＤ６１４２ごとサイクル６１４１ごとの実行ログデータを記憶している。
【００４８】
図３に戻り、制御ＡＰ生成部１１４は、制御プログラム１５３（プロジェクト情報）に基づき制御ＡＰ１５４を生成する。上記生成には、例えば、ソースコードやオブジェクトコードを実行コードに変換（コンパイル）する処理が含まれる。
【００４９】
図３に示すシミュレーション実行部１１６は、例えば、実際の実行環境を模擬して構成された仮想的なコントローラ２０に制御ＡＰ１５４を実行させることにより生成されるタスクの実行時間を求める。またシミュレーション実行部１１６は、各タスクについて、夫
々について求めた実行時間が、夫々について設定されている制御周期５１４を超えているか否かを判定する。
【００５０】
シミュレーションに際し、シミュレーション実行部１１６は、コントローラ情報１５３２から、制御ＡＰ１５４を実行するコントローラ２０の構成要素に関する情報を取得する。またシミュレーション実行部１１６は、装置構成１５３４から、制御ＡＰ１５４を実行するコントローラ２０の制御対象となる制御対象装置３０に関する情報やＩ／Ｏ割当を取得する。そしてシミュレーション実行部１１６は、これら取得した情報に対応する入力データを入力パターンデータ１５５から取得し、取得した入力データを制御ＡＰ１５４に与えつつシミュレーションを行う。
【００５１】
タスク割当部１１３は、シミュレーション実行部１１６により実行時間が制御周期５１４を超えていると判定されたタスクについてコアプロセッサへの割り当てが変更されるように制御プログラム１５３を変更する。尚、タスクの割り当て先の変更は、同一のコントローラ２０のコアプロセッサ間で行うこともできるし、同一のコントローラ２０の枠を超えて行うこともできる。即ち、主処理装置２１がマルチコアタイプのプロセッサで構成されている場合、タスク割当部１１３は、当該主処理装置２１のあるコアプロセッサに割り当てられているタスクを当該主処理装置２１の他のコアプロセッサに割り当てる。また例えば、タスク割当部１１３は、あるコントローラ２０のコアプロセッサに割り当てられているタスクを、他のコントローラ２０のコアプロセッサに割り当てる。またタスク割当部１１３は、制御ＡＰ１５４の実行環境におけるコアプロセッサへの可能な全てのタスクの割り当てパターンについて検証済みか否かを判定する。
【００５２】
制御ＡＰ配布部１１７は、制御ＡＰ生成部１１４によって生成された制御ＡＰ１５４をコントローラ２０に配布（ダウンロード）する。尚、制御ＡＰ１５４の該当のコントローラ２０への配布は、例えば、シミュレーション実行部１１６による上記シミュレーションの結果、実行時間が制御周期５１４を超えているタスクが一つも存在しなくなった場合に行われる。
【００５３】
続いて、図７に示すフローチャートとともに、制御ＡＰ生成支援装置１が行う処理（以下、制御ＡＰ生成支援処理Ｓ７００と称する。）について説明する。尚、制御ＡＰ生成支援処理Ｓ７００が行われる前提として、入力データ取得部１１５が、既存の制御システム２のコントローラ２０から取得した実行ログに基づき予め入力パターンデータ１５５を生成済みであるものとする。
【００５４】
同図に示すように、まず装置構成・パラメータ入力部１１１が、制御システム２の各種装置の構成や、制御プログラム１５３の生成に際して用いる各種パラメータの入力を受け付け、受け付けた情報を装置構成・パラメータ情報１１０として記憶する（Ｓ７１１）。
【００５５】
続いて、制御プログラム生成部１１２が、装置構成・パラメータ情報１１０と、モジュールデータ１５１及びデバイスデータ１５２とに基づき、制御プログラム１５３を生成する（Ｓ７１２）。
【００５６】
続いて、制御ＡＰ生成部１１４が、制御プログラム１５３に基づき制御ＡＰ１５４を生成する（Ｓ７１３）。
【００５７】
続いて、シミュレーション実行部１１６がシミュレーションを実行し、タスクごとの実行時間を出力する（Ｓ７１４）。
【００５８】
続いて、シミュレーション実行部１１６は、各タスクの実行時間と夫々について設定さ
れている制御周期５１４とを比較する（Ｓ７１５）。実行時間が制御周期５１４を超えているタスクが一つでも存在すれば（Ｓ７１５：Ｙｅｓ）、処理はＳ７１７に進む。実行時間が制御周期５１４を超えているタスクが存在しなければ（Ｓ７１５：Ｎｏ）、処理はＳ７１６に進む。
【００５９】
Ｓ７１７では、タスク割当部１１３が、制御ＡＰ１５４の実行環境におけるコアプロセッサへの可能な全てのタスクの割り当てパターンについて検証済みか否かを判定する。全てのパターンについて検証済みであれば（Ｓ７１７：Ｙｅｓ）、処理はＳ７１９に進む。全てのパターンについて検証済みでなければ（Ｓ７１７：Ｎｏ）、処理はＳ７１８に進む。
【００６０】
Ｓ７１８では、タスク割当部１１３が、実行時間が制御周期５１４を超えているタスクについて、割り当て先のコアプロセッサを変更する。尚、タスク割当部１１３は、例えば、上記タスクを、優先度５１５が高いコアプロセッサに優先的に割り当てる。
【００６１】
Ｓ７１９では、タスク割当部１１３は、出力装置１５に警告（例えば、「制御周期内にタスクを割り当てることができませんでした。」等）を出力する。
【００６２】
Ｓ７１６では、制御ＡＰ配布部１１７は、制御ＡＰ１５４を該当のコントローラ２０に配布（ダウンロード）する。
【００６３】
以上詳細に説明したように、本実施形態の制御ＡＰ生成支援装置１は、制御対象装置３０の制御に際して実際にコントローラ２０に入力された入力データ（入力パターンデータ１５５）を与えつつ、制御ＡＰ１５４のシミュレーションを行うので、タスクの実行時間が制御周期５１４を超えるか否かを精度よく判定することができる。またユーザは、上記判定結果に基づき制御プログラム１５３を調整し、タスクの実行時間が制御周期５１４の制約を満たすようにすることができる。
【００６４】
また制御ＡＰ生成支援装置１は、タスクの実行時間が制御周期５１４を超えていると判定されたタスクのコアプロセッサへの割り当てが変更されるように制御プログラム１５３を変更するので、タスクの実行時間が制御周期５１４の制約を満たすようなタスクのコアプロセッサへの割り当て方を探索することができる。
【００６５】
また制御ＡＰ生成支援装置１は、制御プログラム１５３の変更、制御ＡＰ１５４の生成、及び、シミュレーションの実行を、複数のタスクのいずれもが、夫々の実行時間が夫々について設定された制御周期５１４を超えなくなるまで繰り返すので、複数のタスクの全ての実行時間が夫々の制御周期５１４の制約を満たすようなタスクのコアプロセッサへの割り当て方を自動的に探索することができる。
【００６６】
また制御ＡＰ生成支援装置１は、実行時間が制御周期５１４を超えるタスクを、実行時間が制御周期５１４を超えないようにすることができる可能性が高い余裕度の大きなコアプロセッサに優先的に割り当てるので、複数のタスクの全ての実行時間が夫々の制御周期５１４の制約を満たすようなタスクのコアプロセッサへの割り当て方を効率よく探索することができる。
【００６７】
尚、シミュレーション実行部１１６がシミュレーションを実行する際に制御ＡＰ１５４に与える入力データとして、例えば、既存の制御システム２のコントローラ２０から収集した実行ログのうち、構成（コントローラ２０の構成、コントローラ２０が制御する制御対象装置３０の構成、コントローラ２０と制御対象装置３０の接続構成等）が類似するシステムのコントローラ２０が取得した実行ログに基づく入力データを用いることで、シミ
ュレーションの精度を高めることができる。
【００６８】
[実施例２]
実施例１では、制御ＡＰ生成支援装置１が、コントローラ２０とは独立した情報処理装置（コンピュータ）として構成されているが、実施例２における制御ＡＰ生成支援装置１は、制御システム２におけるコントローラ２０としても機能する。尚、このような構成は、例えば、制御ＡＰ生成支援装置１がいわゆるソフトウェアＰＬＣ（Software Programmable Logic Controller）として機能する場合に相当する。
【００６９】
図８は、実施例２における、制御ＡＰ生成支援装置１並びに制御システム２の概略的な構成である。実施例１の制御ＡＰ生成支援装置１と異なり、実施例２の制御ＡＰ生成支援装置１は、制御ＡＰ配布部１１７に代えて制御ＡＰ実行部８１５を備える。この制御ＡＰ実行部８１５は、制御対象装置３０を制御するコントローラ２０として機能する。中央演算処理装置１１は、例えば、複数のコアプロセッサを備えており、制御ＡＰ実行部８１５は、制御ＡＰ１５４を実行することにより生成される複数のタスクの夫々を、中央演算処理装置１１が備えるコアプロセッサの一つに割り当てる。
【００７０】
同図に示すように、制御システム２側の一部の制御対象装置３０は、コントローラ２０ではなく、リモートＩ／Ｏ４０を介して制御ＡＰ実行部８１５と通信可能に接続されている。尚、リモートＩ／Ｏ４０は、通信ネットワーク５を介して、制御ＡＰ実行部８１５と制御対象装置３０とを通信可能に接続する装置である。
【００７１】
図９は、実施例２の制御ＡＰ生成支援装置１が行う処理（以下、制御ＡＰ生成支援処理Ｓ９００と称する。）を説明するフローチャートである。同図に示すように、このフローチャートは、Ｓ７１６の処理がＳ９１６となっている点で図７に示すフローチャートと相違する。尚、図７と共通の符号を付している他の処理については図７と同様であるので説明を省略する。
【００７２】
Ｓ９１６において、制御ＡＰ実行部８１５は、リモートＩ／Ｏを介して制御対象装置３０を制御するコントローラ２０として機能し、制御ＡＰ１５４を実行する。
【００７３】
制御ＡＰ生成支援装置１を以上の構成とすることで、制御ＡＰ生成支援装置１をコントローラ２０としても機能させることができ、制御システム２の構築にかかるコストを削減することができる。
【００７４】
[実施例３]
図７に示したように、実施例１では、タスクの実行時間が制御周期５１４の制約（Ｓ７１５）を満たすようなタスクの割り当てパターンを見いだすことができない場合（Ｓ７１７：Ｙｅｓ）に警告を出力（Ｓ７１９）するのみである。しかし例えば、コントローラ２０のコアプロセッサの性能を向上する等、コントローラ２０の構成を変更することで上記制約を満たすことが可能な場合もある。そこで実施例３では、制御ＡＰ生成支援装置１が、既存のコントローラ２０の構成では上記制約（Ｓ７１５）を満たすようなタスクの割り当てパターンを見いだすことができない場合に、上記制約を満たすようなコントローラ２０の構成の変更案を生成するようにしている。
【００７５】
図１０は、実施例３として示す、制御ＡＰ生成支援装置１並びに制御システム２の概略的な構成である。実施例１の制御ＡＰ生成支援装置１の構成に加えて、制御ＡＰ生成支援装置１は、構成変更部１１９を更に備える。
【００７６】
図１１は、実施例３の制御ＡＰ生成支援装置１が行う処理（以下、制御ＡＰ生成支援処
理Ｓ１１００と称する。）を説明するフローチャートである。同図に示すように、このフローチャートはＳ７１９の処理がＳ１１１９となっている点等が図７に示すフローチャートと相違する。尚、Ｓ７１７において、全てのパターンについて検証済みの場合に（Ｓ７１７：Ｙｅｓ）、処理はＳ１１１９に進む。尚、その他の処理は図７と基本的に同様であるので説明を省略する。
【００７７】
Ｓ１１１９では、構成変更部１１９は、タスクの処理能力が高まるように制御プログラム１５３のコントローラ情報１５３２を変更する。例えば、構成変更部１１９は、主処理装置２１を構成しているコアプロセッサをより処理性能の高いコアプロセッサに変更する。また構成変更部１１９は、記憶装置２２を構成している記憶素子を、よりアクセス性能の高い記憶素子に変更する。また構成変更部１１９は変更内容を出力装置１５に出力してユーザに構成変更案等として提示する。
【００７８】
その後、処理はＳ７１８に進み、実施例１と同様に、制御ＡＰ生成支援装置１は、制御プログラム１５３の変更、制御ＡＰ１５４の生成、及びシミュレーションの実行を、複数のタスクのいずれもが、夫々の実行時間が夫々について設定された制御周期を超えなくなるまで繰り返す。
【００７９】
以上のように、実施例３の制御ＡＰ生成支援装置１によれば、構成変更部１１９は、タスクの処理能力が高まるように制御プログラム１５３のコントローラ情報１５３２を変更するので、制御タスクの制御周期５１４の制約を満たすタスク割当が見つからない場合に、ユーザにタスクの実行時間が制御周期の制約を満たすような構成変更案を提供することができる。
【００８０】
尚、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００８１】
また上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、
ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【００８２】
また制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【００８３】
また以上の説明で例示した各種のデータの形式は、例えば、ＣＳＶ（Comma-Separated Values）、ＸＭＬ（eXtensible Markup Language）、バイナリ（binary）等であるが、必ずしもこれらに限定されるものではない。
【符号の説明】
【００８４】
１  制御ＡＰ生成支援装置、１１  中央演算処理装置、１２  主記憶装置、２０  コントローラ、２１  主記憶装置、３０  制御対象装置、１１１  装置構成・パラメータ入力部、１１２  制御プログラム生成部、１１３  タスク割当部、１１４  制御ＡＰ生成部、１
１５  入力データ取得部、１１６  シミュレーション実行部、１１７  制御ＡＰ配布部、１５１  モジュールデータ、１５２  デバイスデータ、１５３  制御プログラム、１５３１  プログラム、１５３２  コントローラ情報、１５３３  タスク設定、１５３４  装置構成、１５４  制御ＡＰ、１５５  入力パターンデータ、８１５  制御ＡＰ実行部、１１９  構成変更部、Ｓ７００  制御ＡＰ生成支援処理
【図１】
2018010389.tif 000003
【図２】
2018010389.tif 000004
【図３】
2018010389.tif 000005
【図４】
2018010389.tif 000006
【図５】
2018010389.tif 000007
【図６】
2018010389.tif 000008
【図７】
2018010389.tif 000009
【図８】
2018010389.tif 000010
【図９】
2018010389.tif 000011
【図１０】
2018010389.tif 000012
【図１１】
2018010389.tif 000013