JP2015210728A - プラント制御装置、プラント制御プログラム、およびプラント制御方法 - Google Patents

プラント制御装置、プラント制御プログラム、およびプラント制御方法 Download PDF

Info

Publication number
JP2015210728A
JP2015210728A JP2014092968A JP2014092968A JP2015210728A JP 2015210728 A JP2015210728 A JP 2015210728A JP 2014092968 A JP2014092968 A JP 2014092968A JP 2014092968 A JP2014092968 A JP 2014092968A JP 2015210728 A JP2015210728 A JP 2015210728A
Authority
JP
Japan
Prior art keywords
parallel processing
plant control
groups
input
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014092968A
Other languages
English (en)
Inventor
雅紀 宮川
Masanori Miyagawa
雅紀 宮川
能之 新田
Takayuki Nitta
能之 新田
智成 石坂
Tomonari Ishizaka
智成 石坂
晋 吉澤
Susumu Yoshizawa
晋 吉澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2014092968A priority Critical patent/JP2015210728A/ja
Publication of JP2015210728A publication Critical patent/JP2015210728A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Abstract

【課題】ファンクションブロックダイアグラムを複数のCPUコアで効率的に実行することが可能なプラント制御装置、プラント制御プログラム、およびプラント制御方法を提供する。【解決手段】実施形態に係るプラント制御装置は、複数のCPUコアを有するプラント制御装置であって、ファンクションブロックダイアグラムを互いに並列実行可能なグループに分割して、複数の並列処理グループを作成する並列処理グループ作成部と、前記複数の並列処理グループの各々を前記複数のCPUコアの少なくともいずれか一つでテスト実行し、前記各並列処理グループの実行時間をそれぞれ計測するテスト演算部と、前記計測された実行時間に基づいて、前記複数の並列処理グループを前記複数のCPUコアに割り当てる並列処理グループ割当て部とを備えることを特徴とする。【選択図】図2

Description

本発明の実施形態は、プラント制御装置、プラント制御プログラム、およびプラント制御方法に関する。
発電所や製造工場等のプラントを制御するプラント制御システムは、一般に、常用系と待機系からなる一組のプラント制御装置(計装制御装置とも呼ばれる。)を有している。この一組のプラント制御装置はそれぞれ、複数のPIO(プロセスI/O)入力値を外部から取得して所定の演算を行い、演算結果をPIO出力値として外部に出力する。
上記のプラント制御装置は、オペレータ等により作成されたプログラムを記憶し、当該プログラムを実行することによりPIO入力値からPIO出力値を得る。プラント制御装置のプログラムは、ファンクションブロックダイアグラムにより表現される。ファンクションブロックダイアグラムは、論理回路を視覚的な図で表したものである。ファンクションブロックダイアグラムは、単一のタスクで動作することを前提に作成され、マイクロプログラム方式で実行される。
特開2013−84169号公報
近年、複数のCPUコアを有するマルチコア型のコンピュータが、パーソナルコンピュータを含めて普及している。前述のようにファンクションブロックダイアグラムは単一のタスクで動作することを前提に作成されているため、マルチコア型のコンピュータを上記のプラント制御装置に適用しても、単一のCPUコアしかプログラムの実行に利用されず、マルチコア型のコンピュータの性能(スループット)を十分に引き出すことはできないという課題があった。
本発明が解決しようとする課題は、ファンクションブロックダイアグラムを複数のCPUコアで効率的に実行することが可能なプラント制御装置、プラント制御プログラム、およびプラント制御方法を提供することである。
実施形態に係るプラント制御装置は、複数のCPUコアを有するプラント制御装置であって、ファンクションブロックダイアグラムを互いに並列実行可能なグループに分割して、複数の並列処理グループを作成する並列処理グループ作成部と、前記複数の並列処理グループの各々を前記複数のCPUコアの少なくともいずれか一つでテスト実行し、前記各並列処理グループの実行時間をそれぞれ計測するテスト演算部と、前記計測された実行時間に基づいて、前記複数の並列処理グループを前記複数のCPUコアに割り当てる並列処理グループ割当て部とを備えることを特徴とする。
また、実施形態に係るプラント制御プログラムは、複数のCPUコアを有するプラント制御装置のコンピュータを、ファンクションブロックダイアグラムを互いに並列実行可能なグループに分割して、複数の並列処理グループを作成する並列処理グループ作成手段、前記複数の並列処理グループの各々を前記複数のCPUコアの少なくともいずれか一つでテスト実行し、前記各並列処理グループの実行時間をそれぞれ計測するテスト演算手段、および、前記計測された実行時間に基づいて、前記複数の並列処理グループを前記複数のCPUコアに割り当てる並列処理グループ割当て手段として機能させる。
また、実施形態に係るプラント制御方法は、複数のCPUコアを有するプラント制御装置の制御方法であって、ファンクションブロックダイアグラムを互いに並列実行可能なグループに分割して、複数の並列処理グループを作成し、前記複数の並列処理グループの各々を前記複数のCPUコアの少なくともいずれか一つでテスト実行し、前記各並列処理グループの実行時間をそれぞれ計測し、前記計測された実行時間に基づいて、前記複数の並列処理グループを前記複数のCPUコアに割り当てることを特徴とする。
本発明によれば、ファンクションブロックダイアグラムを複数のCPUコアで効率的に実行することができる。
本発明の実施形態に係るプラント制御装置1,2を含むプラント制御システム100の概略的な構成図である。 本発明の第1の実施形態に係るプラント制御装置1の概略的な構成図である。 プラント制御装置1の動作を説明するためのフローチャートである。 並列処理グループを作成する際に用いるテーブルの一例である。 並列処理グループAおよびBに分割されたファンクションブロックダイアグラムの一例である。 作成された並列処理グループA〜Eの、CPU_AおよびCPU_Bの各々における実行時間の計測結果を示す図である。 第1の割り当て処理後における、並列処理グループA〜Eの割り当て例を示す図である。 第2の割り当て処理後における、並列処理グループA〜Eの割り当て例を示す図である。 本発明の第2の実施形態に係るプラント制御装置1Aの概略的な構成図である。 プラント制御装置1Aの動作を説明するためのフローチャートである。 並列処理グループCおよびDに分割されたファンクションブロックダイアグラムの一例である。
以下、本発明の実施形態に係るプラント制御装置について図面を参照しながら説明する。なお、各図において同等の機能を有する構成要素には同一の符号を付し、同一符号の構成要素の詳しい説明は繰り返さない。
まず、本発明の実施形態に係るプラント制御装置について説明する前に、当該プラント制御装置を含むプラント制御システムの一例について、図1を参照して説明する。図1は、本発明の実施形態に係るプラント制御装置1,2を含むプラント制御システム100の概略的な構成を示している。
図1に示すように、プラント制御システム100は、プラント制御装置1と、プラント制御装置2と、入出力装置3と、エンジニアリング装置4とを備えている。
プラント制御装置1は常用系の制御装置であり、プラント制御装置2は待機系の制御装置である。プラント制御装置1,2は、入出力装置3およびエンジニアリング装置4に通信可能に接続されている。常用系のプラント制御装置1と待機系のプラント制御装置2は、互いに通信可能に接続されている。なお、プラント制御システム100の構成要素間の通信は、例えばTCP/IPの有線通信により行われるが、特定のプロトコルや伝送媒体に限られるものではない。
プラント制御装置1,2は、複数のCPUコアを有するマルチコア型のコンピュータを有する。例えば、プラント制御装置1,2は、マルチコアのPC型コントローラとして構成される。
エンジニアリング装置4は、プラント制御装置1,2の制御対象であり、例えば、発電所の発電機、各種製品の製造ラインの装置やベルトコンベヤ等である。
プラント制御装置1,2は、入出力装置3からPIO入力値を取得し、PIO入力値に基づいて所定の演算を行う。演算結果のPIO出力値は、プラント制御装置1,2に接続された全ての装置(図1の例では入出力装置3およびエンジニアリング装置4)に対して出力される。
より詳しくは、PIO出力値は所定のデータフレームに載せて出力される。当該データフレームには、常用系のプラント制御装置1が出力したものか、待機系のプラント制御装置2が出力したものかを示すフラグが設けられている。これにより、データフレームを受信した入出力装置3およびエンジニアリング装置4は、待機系のデータを破棄し、常用系のデータのみを利用することが可能である。
なお、プラント制御システム100は、プラント制御装置1,2に通信可能に接続されたHMI端末(図示せず)をさらに備えてもよい。このHMI端末は、各種警報や制御パラメータ値等の、PIO出力値から得られる情報を表示する。
(第1の実施形態)
第1の実施形態に係るプラント制御装置1について説明する。なお、以下に説明するプラント制御装置の構成は、待機系のプラント制御装置2についても同じである。
プラント制御装置1は、図2に示すように、制御部10と、レジスタ部20と、PIO入力部31と、PIO出力部32とを備えている。
まず、レジスタ部20、PIO入力部31、およびPIO出力部32について説明する。
レジスタ部20は、テスト演算用レジスタ21および演算用レジスタ22を有している。テスト演算用レジスタ21は、テスト演算において使用されるレジスタである。詳細は後ほど説明するが、テスト演算では、ダミーのPIO入力値(テストデータ)を用いて、並列処理グループの実行時間を計測する。一方、演算用レジスタ22は、入出力装置3から取得したPIO入力値を用いて実際の演算を行う際に使用されるレジスタである。
PIO入力部31はPIO入力値を取得し、PIO出力部32はPIO出力値を出力する。より詳しくは、PIO入力部31は、前述の入出力装置3からPIO入力値を取得し、取得したPIO入力値を演算用レジスタ22に格納する。PIO出力部32は、制御部10により演算用レジスタ22に書き込まれた演算結果であるPIO出力値(出力データ)を読み出し、読み出したPIO出力値を外部の装置(入出力装置3、エンジニアリング装置4等)に出力する。
次に、プラント制御装置1の制御部10について詳しく説明する。
制御部10は、図2に示すように、コア検出部11と、並列処理グループ作成部12と、テスト演算部13と、並列処理グループ割当て部14と、演算部15とを有する。
コア検出部11は、プラント制御装置1に実装された複数のCPUコアを検出する。なお、コア検出部11は、プラント制御装置1に実装されたCPUコアの数を検出する他、各CPUコアの特性(浮動小数点演算ユニットの有無など)を検出してもよい。
並列処理グループ作成部12は、ファンクションブロックダイアグラムを互いに並列実行可能なグループに分割して、複数の並列処理グループを作成する。ファンクションブロックダイアグラムの分割方法については、後ほど図3〜図5を参照して詳しく説明する。
テスト演算部13は、テストデータを用いて、並列処理グループ作成部12によって作成された並列処理グループの各々を各CPUコアでテスト実行(負荷検査)し、各並列処理グループの各CPUコアでの実行時間をそれぞれ計測する。なお、テストデータは、テスト演算用レジスタ21に格納されたダミーのPIO入力値である。
並列処理グループ割当て部14は、テスト演算部13によって計測された実行時間に基づいて、並列処理グループ作成部12によって作成された複数の並列処理グループを、プラント制御装置1の複数のCPUコアに割り当てる。
なお、好ましくは、並列処理グループ割当て部14は、各CPUコアの演算時間の差が可能な限り小さくなるように、並列処理グループをCPUコアに割り当てる。ここで、CPUコアの演算時間とは、割り当てられた並列処理グループの実行時間の和で与えられる時間のことである。
演算部15は、演算用レジスタ22に格納されたPIO入力値を用いて、プラント制御装置1の複数のCPUコアに割り当てられた複数の並列処理グループを並列実行する。そして、演算部15は、演算結果を演算用レジスタ22に書き込む。
次に、図3のフローチャートを参照しつつ、上記のプラント制御装置1の動作について説明する。
まず、コア検出部11は、プラント制御装置1に実装された複数のCPUコアを検出する(ステップS11)。本例では、CPU_AおよびCPU_Bが検出された。
次に、並列処理グループ作成部12は、ファンクションブロックダイアグラムを互いに並列実行可能なグループに分割して、複数の並列処理グループを作成する(ステップS12)。
より詳しくは、並列処理グループ作成部12は、次のようにして並列処理グループを作成する。まず、並列処理グループ作成部12は、ファンクションブロックダイアグラムに含まれるファンクションブロックごとに当該ファンクションブロックがアクセスする入力アドレスおよび出力アドレスを把握する。
例えば、並列処理グループ作成部12は、図4に示すようなテーブルを参照することにより、各ファンクションブロックFB1〜FB4がアクセスする入力アドレスおよび出力アドレスを把握する。図4は、ファンクションブロックダイアグラム中の各ファンクションブロックについて、入力アドレスと出力アドレスを記載したテーブルである。なお、CIから始まるアドレスは、演算用レジスタ22のアドレスを示している。
ここで、ファンクションブロックFB1は、入力アドレスCI0000に格納された値に、入力アドレスCI0001に格納された値を加え、得られた値を出力アドレスCI0006に格納する。ファンクションブロックFB2は、入力アドレスCI0002に格納された値から、入力アドレスCI0003に格納された値を引き、得られた値を出力アドレスCI0007に格納する。ファンクションブロックFB3は、入力アドレスCI0004に格納された値を、入力アドレスCI0005に格納された値で割り、得られた値を出力アドレスCI0008に格納する。ファンクションブロックFB4は、入力アドレスCI0007に格納された値に、入力アドレスCI0008に格納された値を乗じ、得られた値を出力アドレスCI0009に格納する。
並列処理グループ作成部12は、ファンクションブロックダイアグラムに含まれるファンクションブロックFB1〜FB4ごとに、そのファンクションブロックによりアクセスされる出力アドレスが他のファンクションブロックによりアクセスされる入力アドレスと同じではないことを確認する。
例えば、図4のファンクションブロックFB1の場合、ファンクションブロックFB1によりアクセスされる出力アドレスCI0006は、他のファンクションブロックFB2〜FB4によりアクセスされる入力アドレスのいずれとも異なる。このような場合、並列処理グループ作成部12は、ファンクションブロックFB1は独立して実行可能であるとみなして、図5に示すように、ファンクションブロックFB1を含む並列処理グループAを作成する。
これに対して、図4のファンクションブロックFB2の場合、出力アドレスCI0007がファンクションブロックFB4によりアクセスされる入力アドレスと同じである。このような場合、ファンクションブロックFB2はファンクションブロックFB4と並列処理できない。このため、並列処理グループ作成部12は、図5に示すように、FB2とFB4を同じ並列処理グループBに含める。ファンクションブロックFB3も同様に、出力アドレスCI0008がファンクションブロックFB4によりアクセスされる入力アドレスと同じであり、ファンクションブロックFB4と並列処理できない。このため、並列処理グループ作成部12は、ファンクションブロックFB3を並列処理グループBに含める。
上記のようにして並列処理グループ作成部12は、図5に示すように、互いに並列実行可能な2つのグループ、即ち、ファンクションブロックFB1を含む並列処理グループAと、ファンクションブロックFB2〜FB4を含む並列処理グループBとを作成する。作成された並列処理グループは、入力アドレスの値を用いて所定の演算を行い、その結果得られた値を出力アドレスに格納する。
また、上記から理解されるように、並列処理グループは、コア検出部11により検出されたCPUコアの数によらず、可能な限り多く作成される。以下の説明では、5つの並列処理グループA〜Eが作成されたものとして説明する。
次に、テスト演算部13は、テストデータを用いて並列処理グループA〜Eをテスト実行し、並列処理グループA〜Eの実行時間をそれぞれ計測する(ステップS13)。より詳しくは、テスト演算部13は、並列処理グループ作成部12により作成された並列処理グループA〜Eを、コア検出部11により検出されたCPUコアの各々で実行する。
図6は、並列処理グループA〜Eの、CPU_AおよびCPU_Bの各々における実行時間の計測結果を示している。ファンクションブロックダイアグラムは、比較的簡単な命令セットで構成されるため、実行時間はPIO入力値にあまり影響を受けない。即ち、並列処理グループA〜Eの実行時間は、各並列処理グループが含むファンクションブロックの数に依存するものの、PIO入力値にはあまり依存しない。このため、テスト演算用レジスタ21の初期値ないし現在値をPIO入力値としてそのまま使用してもよい。
なお、図6に示すように、並列処理グループの実行時間は、CPUコアにより異なる場合がある。これは、実行時間が、演算処理の内容とCPUコアの特性との関係に依存するためである。例えば、除算を行うファンクションブロックを含む並列処理グループの場合には、浮動小数点演算ユニットを有するCPUコアでの実行時間の方が短くなる。
また、特性が同じCPUコアについては、いずれか一つのCPUコアで各並列処理グループを実行すれば足りる。例えば、CPU_AとCPU_Bの特性が同じであれば、並列処理グループA〜Eは、CPU_AおよびCPU_Bのいずれか一方で実行されればよい。
次に、並列処理グループ割当て部14は、テスト演算部13により計測された実行時間に基づいて、並列処理グループA〜EをCPUコア(即ち、コア検出部11により検出されたCPU_AおよびCPU_B)に割り当てる(ステップS14)。
より詳しくは、並列処理グループ割当て部14は、各CPUコアの演算時間ができるだけ短く、且つ各CPUコアの演算ができるだけ同じタイミングで終了するように、並列処理グループを各CPUコアに割り当てる。好ましくは、並列処理グループ割当て部14は、CPU_Aの演算時間とCPU_Bの演算時間の平均値が最小となり、かつ、CPU_Aの演算時間の標準偏差とCPU_Bの演算時間の標準偏差がそれぞれ最小となるように、並列処理グループA〜EをCPU_AおよびCPU_Bに割り当てる。
具体的には、並列処理グループ割当て部14は、次のようにして並列処理グループA〜EをCPU_AおよびCPU_Bに割り当てる。
まず、並列処理グループ割当て部14は、並列処理グループA〜Eを、各CPUコアにおける実行時間に基づいて、CPUコアに割り当てる第1の割り当て処理を行う。例えば、第1の割り当て処理では、並列処理グループA〜Eを、実行時間が最も短いCPUコアに割り当てる。図7は、第1の割り当て処理後における、並列処理グループA〜Eの割り当て例を示している。この場合、並列処理グループA〜C,Eは、CPU_BよりもCPU_Aにおける実行時間の方が短いため、CPU_Aに割り当てる。並列処理グループDは、CPU_AよりもCPU_Bにおける実行時間の方が短いため、CPU_Bに割り当てる。
図7から分かるように、第1の割り当て処理後において、CPU_Aの演算時間は45ms(=10ms+5ms+20ms+10ms)であり、CPU_Bの演算時間は10msである。
第1の割り当て処理後、並列処理グループ割当て部14は、CPU_Aから、演算時間がCPU_Aよりも短いCPU_Bに、CPU_Aに割り当てられた並列処理グループのうち少なくともいずれか一つを移動する第2の割り当て処理を行う。好ましくは、CPU_AとCPU_Bとで実行時間の差が最も小さい並列処理グループを優先的に移動する。
なお、CPUコアが3つ以上の場合には、演算時間が最も長いCPUコアから、演算時間が最も短いCPUコアに、並列処理グループを移動させることが好ましい。このようにして、各CPUコアでの演算時間を可能な限り平準化する。
ここでは、図8に示すように、並列処理グループ割当て部14は、並列処理グループCをCPU_AからCPU_Bに移動した。図8は、第2の割り当て処理後における、並列処理グループA〜Eの割り当て例を示している。第2の割り当て処理後において、CPU_Aの演算時間は25ms(=10ms+5ms+10ms)であり、CPU_Bの演算時間は30ms(=20ms+10ms)であり、CPUコアの演算時間が平準化されていることが分かる。
割り当て処理が完了した後、PIO入力部31は入出力装置3からPIO入力値を取得し、演算用レジスタ22に格納する。そして、演算部15は、入出力装置3から取得されたPIO入力値を用いて、各CPUコアに割り当てられた並列処理グループを並列実行する(ステップS15)。
より詳しくは、演算部15は、ステップS14で設定された並列処理グループとCPUコアの割り当てに従って、それぞれのCPUコアにより並列処理グループの演算処理を並列実行する。その後、PIO出力部32は、演算用レジスタ22に書き込まれたPIO出力値を読み出して、入出力装置3およびエンジニアリング装置4に出力する。
なお、ステップS11からステップS14までの処理は、実際の制御を行う前に一度行うだけでよい。例えば、プラント制御装置1の入出力インタフェース(I/O)を初期化する初期化処理と平行して、ステップS11からステップS14までの処理を行ってもよい。
以上説明したように、第1の実施形態では、単一のタスクで動作することを前提に作成されたファンクションブロックダイアグラムを互いに並列実行可能な複数の並列処理グループに分割し、各並列処理グループをテスト実行して実行時間を計測し、各並列処理グループの実行時間に基づいて複数のCPUコアに各並列処理グループを割り当てる。
よって、第1の実施形態によれば、ファンクションブロックダイアグラムを複数のCPUコアで効率的に実行することができる。その結果、ファンクションブロックダイアグラムの実行時間を短縮することができる。
(第2の実施形態)
次に、第2の実施形態に係るプラント制御装置1Aについて説明する。なお、以下に説明するプラント制御装置1Aの構成は、待機系のプラント制御装置2についても同じである。
第2の実施形態と第1の実施形態との相違点の一つは、PIO入力値する入力するタスクおよびPIO出力値を出力するタスクを、並列処理グループに含めて、入出力処理をマルチタスク化する点である。
例えばPIO入力値の入力処理がマルチタスク化されていない場合、並列処理グループAおよびBを並列実行する際、入力アドレスCI0000およびCI0001にPIO入力値が格納されて並列処理グループAが実行可能な状態になったとしても、並列処理グループBによりアクセスされる入力アドレスCI0002〜CI0005にPIO入力値が格納されていない場合、並列処理グループAを実行できない。
PIO出力値の出力処理についても同様である。即ち、PIO出力値の出力処理がマルチタスク化されていない場合、並列処理グループAおよびBを並列実行する際、並列処理グループAによりアクセスされる出力アドレスCI0006にPIO出力値が格納されても、並列処理グループBによりアクセスされる出力アドレスCI0009にPIO出力値が格納されていない場合は、出力アドレスCI0006の値を外部に出力することができない。
以下、第1の実施形態との相違点を中心に第2の実施形態について説明する。
プラント制御装置1Aは、図9に示すように、制御部10と、レジスタ部20と、PIO入力部31と、PIO出力部32とを備えている。
プラント制御装置1Aの制御部10は、図9に示すように、コア検出部11と、並列処理グループ作成部12と、テスト演算部13と、並列処理グループ割当て部14と、演算部15と、入出力時間見積部16とを有する。
並列処理グループ作成部12は、各並列処理グループが、入出力装置3からPIO入力値(入力データ)を入力する入力処理タスクと、入出力装置3にPIO出力値(出力データ)を出力する出力処理タスクとを含むように、ファンクションブロックダイアグラムを分割する。
なお、並列処理グループ作成部12は、入力処理タスクおよび出力処理タスクが独立して実行可能になるように、ファンクションブロックダイアグラムを分割する。より詳しくは、並列処理グループ作成部12は、入力処理タスクがアクセスする入力アドレスが異なる並列処理グループに存在しないこと、および、出力処理タスクがアクセスする出力アドレスが異なる並列処理グループに存在しないことを確認した上で、並列処理グループを作成する。
図11は、並列処理グループCおよびDに分割されたファンクションブロックダイアグラムの一例を示している。並列処理グループCの入力処理は、入力アドレスCI0000およびCI0001にPIO入力値を格納するタスクであり、PIO入力部31によって実行される。並列処理グループCの出力処理は、出力アドレスCI0006に格納されたPIO出力値を外部に出力するタスクであり、PIO出力部32によって実行される。
同様に、並列処理グループDの入力処理は、入力アドレスCI0002〜CI0005にPIO入力値を格納するタスクであり、PIO入力部31によって実行される。並列処理グループDの出力処理は、出力アドレスCI0009に格納されたPIO出力値を外部に出力するタスクであり、PIO出力部32によって実行される。
並列処理グループをCPUコアに割り当てるためには、入力処理タスクおよび出力処理タスクについても実行時間を把握する必要がある。しかし、テスト環境において入出力装置3が存在しない場合や、あるいは、入出力装置3が存在したとしても実際のエンジニアリング装置2も接続されている場合がある。このため、入出力処理タスクをテスト実行できないおそれがある。
そこで、第2の実施形態に係るプラント制御装置1Aの制御部10は、入出力時間見積部16を備えている。この入出力時間見積部16は、作成された並列処理グループに含まれる入力処理タスクおよび出力処理タスクの実行時間を見積もる。
例えば、入出力時間見積部16は、式(1)により、入力処理タスクの実行時間を見積もる。
Figure 2015210728
ここで、Tinput:入力処理タスクの実行時間、Ain:アナログ入力点の数、tin_a:アナログ値単位入力時間、Din:デジタル入力点の数、tin_d:デジタル値単位入力時間である。AinおよびDinは、入力処理タスクによりアクセスされる入力アドレスの数である。tin_aおよびtin_dは、一つの入力アドレスからPIO入力値を読み出すのに必要な時間であり、事前のデータ読み出し試験で得られた値を用いる。
同様に、入出力時間見積部16は、式(2)により、出力処理タスクの実行時間を見積もる。
Figure 2015210728
ここで、Toutput:出力処理タスクの実行時間、Aout:アナログ出力点の数、tout_a:アナログ値単位出力時間、Dout:デジタル出力点の数、tout_d:デジタル値単位出力時間である。AoutおよびDoutは、出力処理タスクがアクセスする出力アドレスの数である。tout_aおよびtout_dは、演算結果であるPIO出力値を一つの出力アドレスに書き込むのに必要な時間であり、事前のデータ書き込み試験で得られた値を用いる。
なお、ここでいう“アナログ”は、アナログ値をA/D変換したデジタル値(例えば16ビットのデータ)であり、“デジタル”は、“0”または“1”の1ビットのデータである。
並列処理グループ割当て部14は、テスト演算部13により計測された並列処理グループの実行時間、および入出力時間見積部16により見積もられた入出力処理タスクの実行時間に基づいて、複数の並列処理グループを複数のCPUコアに割り当てる。
次に、図10のフローチャートを参照しつつ、上記のプラント制御装置1Aの動作について説明する。
まず、コア検出部11は、プラント制御装置1Aに実装された複数のCPUコアを検出する(ステップS21)。
次に、並列処理グループ作成部12は、各並列処理グループが入力処理タスクおよび出力処理タスクを含むように、ファンクションブロックダイアグラムを分割して、複数の並列処理グループを作成する(ステップS22)。
並列処理グループ作成部12は、入力処理タスクおよび出力処理タスクが独立して実行可能であることを確認する。具体的には、並列処理グループ作成部12は、ある入力処理タスクが扱う入力アドレスが、他の入力処理タスクで扱う入力アドレスと同じではないことを確認する。同様に、並列処理グループ作成部12は、ある出力処理タスクが扱う出力アドレスが、他の出力処理タスクで扱う出力アドレスと同じではないことを確認する。
次に、テスト演算部13は、テストデータを用いて並列処理グループの各々をテスト実行し、並列処理グループの実行時間をそれぞれ計測する(ステップS23)。本ステップの処理は、第1の実施形態のステップS13と同じであるため、詳しい説明は省略する。
次に、入出力時間見積部16は、各並列処理グループの入力処理タスクおよび出力処理タスクの実行時間を見積もる(ステップS24)。具体的には、前述の式(1)および式(2)を用いて、入出力時間見積部16は、各並列処理グループの入力処理タスクおよび出力処理タスクの実行時間をそれぞれ見積もる。
次に、並列処理グループ割当て部14は、テスト演算部13により計測された並列処理グループの実行時間、および入出力時間見積部16により見積もられた入出力処理タスクの実行時間に基づいて、並列処理グループをCPUコアに割り当てる(ステップS25)。
具体的には、テスト演算部13により計測された並列処理グループの実行時間に、入出力時間見積部16により見積もられた入出力処理タスクの実行時間を加えた時間を各並列処理グループの実行時間とし、その他は、第1の実施形態と同様にして各並列処理グループをCPUコアに割り当てる。
割り当て処理が完了した後、PIO入力部31は入出力装置3からPIO入力値を取得し、演算用レジスタ22に格納する。そして、演算部15は、入出力装置3から取得されたPIO入力値を用いて、各CPUコアに割り当てられた並列処理グループを並列実行する(ステップS26)。
より詳しくは、演算部15は、ステップS25で設定された並列処理グループとCPUコアの割り当てに従って、それぞれのCPUコアにより並列処理グループの演算処理を並列実行する。その後、PIO出力部32は、演算用レジスタ22に書き込まれたPIO出力値を読み出して、入出力装置3およびエンジニアリング装置4に出力する。なお、ステップS21からステップS25までの処理は、実際の制御を行う前に一度行うだけでよい。
以上説明したように、第2の実施形態によれば、入出力処理もマルチタスク化されるため、ファンクションブロックダイアグラムを複数のCPUコアでさらに効率的に実行することができる。その結果、ファンクションブロックダイアグラムの実行時間をさらに短縮することができる。
なお、上記の説明では、入力処理と出力処理の両方をマルチタスク化したが、いずれか一方のみをマルチタスク化してもよい。即ち、並列処理グループ作成部12は、入力処理と出力処理のいずれか一方のみが並列処理グループに含まれるように並列処理グループを作成してもよい。
上記の第1および第2の実施形態によれば、オペレータ(プログラマ)はマルチコアによる並列実行を意識してファンクションブロックダイアグラムを作成する必要はなく、従来のプログラミング作業に影響を与えない。
上述した実施形態で説明したプラント制御装置の少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、プラント制御装置の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
また、プラント制御装置の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1,1A,2 プラント制御装置
3 入出力装置
4 エンジニアリング装置
10 制御部
11 コア検出部
12 並列処理グループ作成部
13 テスト演算部
14 並列処理グループ割当て部
15 演算部
20 レジスタ部
21 テスト演算用レジスタ
22 演算用レジスタ
31 PIO入力部
32 PIO出力部
100 プラント制御システム
FB1,FB2,FB3,FB4 ファンクションブロック

Claims (7)

  1. 複数のCPUコアを有するプラント制御装置であって、
    ファンクションブロックダイアグラムを互いに並列実行可能なグループに分割して、複数の並列処理グループを作成する並列処理グループ作成部と、
    前記複数の並列処理グループの各々を前記複数のCPUコアの少なくともいずれか一つでテスト実行し、前記各並列処理グループの実行時間をそれぞれ計測するテスト演算部と、
    前記計測された実行時間に基づいて、前記複数の並列処理グループを前記複数のCPUコアに割り当てる並列処理グループ割当て部と、
    を備えることを特徴とするプラント制御装置。
  2. 前記並列処理グループ作成部は、前記ファンクションブロックダイアグラムに含まれるファンクションブロックごとに、当該ファンクションブロックによりアクセスされる出力アドレスが他のファンクションブロックによりアクセスされる入力アドレスと同じではないことを確認することにより、前記ファンクションブロックダイアグラムを互いに並列実行可能なグループに分割することを特徴とする請求項1に記載のプラント制御装置。
  3. 前記並列処理グループ割当て部は、前記各CPUコアにおける演算時間の平均値が最小となり、かつ前記各CPUコアにおける演算時間の標準偏差が最小となるように、前記複数の並列処理グループを前記複数のCPUコアに割り当てることを特徴とする請求項1または2に記載のプラント制御装置。
  4. 前記並列処理グループ割当て部は、
    前記各CPUコアにおける前記実行時間に基づいて、前記複数の並列処理グループを前記複数のCPUコアに割り当てる第1の割り当て処理を行い、
    前記複数のCPUコアのうちの第1のCPUコアから、前記第1のCPUコアよりも演算時間が短い第2のCPUコアに、前記第1のCPUコアに割り当てられた並列処理グループのうち少なくともいずれか一つを移動する第2の割り当て処理を行うことを特徴とする請求項3に記載のプラント制御装置。
  5. 前記並列処理グループ作成部は、前記各並列処理グループが、入力データを入力し且つ独立して実行可能な入力処理タスク、および/または、出力データを出力し且つ独立して実行可能な出力処理タスクを含むように、前記ファンクションブロックダイアグラムを分割し、
    前記入力処理タスクおよび/または前記出力処理タスクの実行時間を見積もる入出力時間見積部をさらに備え、
    前記並列処理グループ割当て部は、前記テスト演算部により計測された実行時間、および前記入出力時間見積部により見積もられた実行時間に基づいて、前記複数の並列処理グループを前記複数のCPUコアに割り当てることを特徴とする請求項1〜4のいずれかに記載のプラント制御装置。
  6. 複数のCPUコアを有するプラント制御装置のコンピュータを、
    ファンクションブロックダイアグラムを互いに並列実行可能なグループに分割して、複数の並列処理グループを作成する並列処理グループ作成手段、
    前記複数の並列処理グループの各々を前記複数のCPUコアの少なくともいずれか一つでテスト実行し、前記各並列処理グループの実行時間をそれぞれ計測するテスト演算手段、および
    前記計測された実行時間に基づいて、前記複数の並列処理グループを前記複数のCPUコアに割り当てる並列処理グループ割当て手段
    として機能させるためのプラント制御プログラム。
  7. 複数のCPUコアを有するプラント制御装置の制御方法であって、
    ファンクションブロックダイアグラムを互いに並列実行可能なグループに分割して、複数の並列処理グループを作成し、
    前記複数の並列処理グループの各々を前記複数のCPUコアの少なくともいずれか一つでテスト実行し、前記各並列処理グループの実行時間をそれぞれ計測し、
    前記計測された実行時間に基づいて、前記複数の並列処理グループを前記複数のCPUコアに割り当てる、
    ことを特徴とするプラント制御方法。
JP2014092968A 2014-04-28 2014-04-28 プラント制御装置、プラント制御プログラム、およびプラント制御方法 Pending JP2015210728A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014092968A JP2015210728A (ja) 2014-04-28 2014-04-28 プラント制御装置、プラント制御プログラム、およびプラント制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014092968A JP2015210728A (ja) 2014-04-28 2014-04-28 プラント制御装置、プラント制御プログラム、およびプラント制御方法

Publications (1)

Publication Number Publication Date
JP2015210728A true JP2015210728A (ja) 2015-11-24

Family

ID=54612842

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014092968A Pending JP2015210728A (ja) 2014-04-28 2014-04-28 プラント制御装置、プラント制御プログラム、およびプラント制御方法

Country Status (1)

Country Link
JP (1) JP2015210728A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016076236A1 (ja) * 2014-11-12 2016-05-19 株式会社東芝 分散制御システム、制御装置、制御方法及びプログラム
CN109977633A (zh) * 2019-03-28 2019-07-05 武汉斗鱼鱼乐网络科技有限公司 一种程序保护方法及相关装置
JP2019175279A (ja) * 2018-03-29 2019-10-10 株式会社東京精密 測定機管理装置及び方法
WO2020100548A1 (ja) * 2018-11-15 2020-05-22 オムロン株式会社 制御システムおよび制御装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016076236A1 (ja) * 2014-11-12 2016-05-19 株式会社東芝 分散制御システム、制御装置、制御方法及びプログラム
US10520935B2 (en) 2014-11-12 2019-12-31 Kabushiki Kaisha Toshiba Distributed control system, control device, control method, and computer program product
JP2019175279A (ja) * 2018-03-29 2019-10-10 株式会社東京精密 測定機管理装置及び方法
JP7187759B2 (ja) 2018-03-29 2022-12-13 株式会社東京精密 測定機管理装置及び方法
WO2020100548A1 (ja) * 2018-11-15 2020-05-22 オムロン株式会社 制御システムおよび制御装置
JP2020086481A (ja) * 2018-11-15 2020-06-04 オムロン株式会社 制御システムおよび制御装置
US11520302B2 (en) 2018-11-15 2022-12-06 Omron Corporation Control system and control device
CN109977633A (zh) * 2019-03-28 2019-07-05 武汉斗鱼鱼乐网络科技有限公司 一种程序保护方法及相关装置

Similar Documents

Publication Publication Date Title
US9740402B2 (en) Migrating workloads across host computing systems based on remote cache content usage characteristics
US9471386B2 (en) Allocating resources to tasks in a build process
CN111124656A (zh) 用于向专用计算资源分配任务的方法、设备和计算机程序产品
US20160357661A1 (en) Automated dynamic test case generation
US10255188B2 (en) Migrating workloads across host computing systems based on cache content usage characteristics
CN106575282B (zh) 用于先进过程控制的云计算系统和方法
US20160154681A1 (en) Distributed jobs handling
JP2015210728A (ja) プラント制御装置、プラント制御プログラム、およびプラント制御方法
US9733982B2 (en) Information processing device and method for assigning task
JP2020053013A (ja) 要求処理方法及び装置
US20150277405A1 (en) Production plan display method, production plan support method, production plan display apparatus, production plan support apparatus, and recording medium
US9208055B2 (en) Importance-based call graph construction
JP2018197906A (ja) 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム
US10091294B2 (en) Networking component management in host computing systems in a virtual computing environment
US10862803B2 (en) Repurposing a target endpoint to execute a management task
US10929177B2 (en) Managing resources for multiple trial distributed processing tasks
US11610151B2 (en) Distribution system, data management apparatus, data management method, and computer-readable recording medium
JPWO2013018376A1 (ja) システムパラメータ設定支援システム、システムパラメータ設定支援装置のデータ処理方法、およびプログラム
CN103077069B (zh) 指令解析的方法及装置
JP2017228223A (ja) 信号処理装置
US20200233671A1 (en) Parallelization of numeric optimizers
JP6452904B1 (ja) 設計支援装置、設計支援方法及びプログラム
JP2018073394A (ja) プラント設備の監視および制御のための並列処理
CN109213590B (zh) 调度处理器的方法和装置
CN110879744B (zh) 利用多线程执行计算图的方法和系统