【発明が解決しようとする課題】
【0005】
しかしながら、単に並列計算装置を制御装置に適用するだけでは十分な性能の向上を図ることができない。従来の制御アルゴリズムの並列化は、ソフトウェアの設計段階で行われていた。ところが、制御アルゴリズムの逐次性が強い場合、ソフトウェアの設計段階、つまり、ソースコードレベルでの並列化には限界があった。アムダールの法則によると、並列化可能な部分の実行時間の割合がaのプログラムをN個のコアを用いて実行する場合、全体の性能向上率Sは、S=1/((1-a)+a/N)で表される。これから分かるように、並列化可能な部分が少ないプログラムの場合には1ステップ内における性能向上は難しい。また、各ステップにおいてセンサ入力に対するアクチュエータ出力が行われるため、マルチコアによる並列性を活かして入力データをストリーム処理することが難しい。さらに、並列化にはオーバーヘッドが伴うため、構想やモジュール単位で演算量の少ない細粒度タスクに分割することによる並列化や、ループの分割による並列化にも限界がある。分割数を増やせば増やすほど、コア間での演算の同期や演算結果の通信などのコストが増加するため、並列計算により期待される性能が出せなくなるからである。
【0006】
逐次性の強い制御アルゴリズムをソースコードレベルで並列化することが困難なことは、リアルタイム制御装置、特に、物理現象を取り扱う制御装置の制御ロジックから具体的に説明することができる。そのような制御装置の制御対象は多かれ少なかれむだ時間を有しているため、制御アルゴリズムとしては、むだ時間系を取り扱う制御理論を採用することができる。むだ時間系制御の代表的なものが、制御対象をモデル化した予測モデルを用いてフィードバック制御を行う内部モデル制御(IMC)である。以下、従来の制御装置で用いられている内部モデル制御の制御ロジックと、それの並列化における問題点について説明する。
【0007】
図3は、従来の制御装置に用いられている一般的な内部モデル制御の制御ロジックを示すブロック線図である。制御対象2はむだ時間Lを有しているので、その伝達関数はPe
-Lsで表すことができる。内部モデル制御では、制御対象2をモデル化した予測モデル102とIMCフィルタ101とを用いたフィードバック系が構築される。予測モデル102は制御対象2のむだ時間Lも含めてモデル化したものであるので、その伝達関数はMe
-Lsで表すことができる。予測モデル102の伝達関数Me
-Lsと制御対象2の真の伝達関数Pe
-Lsとは完全一致することが理想的であるが、実際には両者の間にはモデル化誤差が存在する。IMCフィルタ101の伝達関数Cimcは、予測モデル102の伝達関数の最小位相要素の逆数として構成される。IMCフィルタ101は、制御量の目標値rに基づき制御対象2のアクチュエータに対する操作量uを算出する。制御対象2には操作量uとともに外乱dが入力され、その外乱dの影響を受けた制御量のセンサ値yが制御対象2から得られる。センサ値とはセンサによって計測された制御量の計測値を意味する。予測モデル102は制御対象2と並列に配置され、操作量uは並行して予測モデル102にも入力される。そして、センサ値yと予測モデル102の出力との差が伝達関数Cdisで表記される外乱補償器103を経由して目標値rにフィードバックされる。
【0008】
図3に示す制御ロジックでは、予測モデル102、IMCフィルタ101、及び外乱補償器103の3つの制御器の演算に逐次性が存在する。演算の逐次性は、各制御器の処理を時間軸上に並べることによって明らかにすることができる。
図4は、上記の制御ロジックを従来のシングルコアタイプの計算装置に実装した場合の各制御器による演算の時間的な関係を表した図である。
図4における横軸は時間軸であり、時間軸上に1ステップの処理が並べられている。この図に示すように、予測モデル(Me
-Ls)102による演算、センサ値yとの減算、外乱補償器(Cdis)103による演算、目標値rとの減算、IMCフィルタ(Cimc)101による演算が逐次的に実行され、次のステップに対応する操作量u′が算出される。
【0009】
上記の制御ロジックはマルチコアタイプの計算装置に実装することができる。マルチコアタイプの計算装置に上記の制御ロジックを実装する場合、1ステップの処理を複数のタスクに分割して各コアに割り当てる必要がある。ここでは、3つの制御器毎に離散化を行った後、それぞれをタスクとして分割して3つのコアに割り当てる。また、センサ値yの加減算と目標値rの加減算は、前後のタスクのどちらかに含められる。
図5は、このような手法で複数のコアに処理の割り当てを行った場合の各処理の時間的な関係を示す図である。各コアは一部のタスクのみ処理すればよいので、シングルコアで全ての処理を実行する場合に比較すれば、1コア当たりの演算時間は短縮される。しかしながら、複数コアで処理する場合であっても演算の逐次性は保たれるため、ある制御器に対応するタスクが終了するまで、次の制御器に対応するタスクは開始することができない。つまり、複数のコアで同時にタスクを実行することはできず、計算装置全体では1ステップの処理を高速化することはできない。これから分かるように、上記の制御ロジックをマルチコアタイプの計算装置に実装したとしても、結局はソースコードレベルでの並列化しかできないため、並列化による演算時間の大幅な短縮を実現することは難しい。
【0010】
次に考えられることは、ソースコードレベルではなく、制御ロジックのレベルで並列化することである。ここで、内部モデル制御における操作量の更新式に注目する。次の式(1)は
図3に示す制御ロジックに対応する操作量の更新式である。更新式を構成する変数及び伝達関数は、
図3に示す制御ロジックにおける変数と各制御器の伝達関数とに対応している。
【数1】
【0011】
上記の更新式から、
図5に示すタスク間の入出力に伴う演算の逐次性は、更新式における括弧内部の加減算に起因していることが分かる。つまり、複数要素に対して行う加減算はコア間の暗黙の同期となるが、これが括弧で括られることによってタスク間に逐次的な順序が発生する。そこで、括弧に起因する逐次性を解消するため、括弧を展開して各変数r,y,uに関係する項に分割する。そのように式(1)を変形することにより、次の式(2)で表される更新式が得られる。
【数2】
【0012】
図6は、式(2)に対応する制御ロジックを示すブロック線図である。式(1)と式(2)との関係から分かるように、
図6に示す制御ロジックは
図3に示す制御ロジックを等価変換したものに相当する。この等価変換では、1つの外乱補償器(Cdis)と2つのIMCフィルタ(Cimc)とが複製される。
図6に示す制御ロジックによれば、操作量uが予測モデル(Me
-Ls)112、外乱補償器(Cdis)113、及びIMCフィルタ(Cimc)114を経由して再び操作量uにフィードバックされ、同時に、センサ値yが外乱補償器(Cdis)115、及びIMCフィルタ(Cimc)116を経由して操作量uにフィードバックされる。
【0013】
式(2)において括弧に括られていない各変数r,y,uの項の演算をそれぞれタスクとして分割し、各タスクを3つのコアに割り当てる。また、各タスクの出力から次のステップに対応する操作量u′を算出する加減算は何れかのコアに割り当てる。
図7は、このような手法で複数のコアに処理の割り当てを行った場合の各処理の時間的な関係を示す図である。
図7における横軸は時間軸であり、時間軸上に1ステップの処理が並べられている。この図においてコア1に割り当てられたタスクはタスク1であり、コア2に割り当てられたタスクはタスク2,3からなり、コア3に割り当てられたタスクはタスク4,5,6からなる。各コアにおけるタスクの入力は変数r,y,uであるので、あるタスクを開始するのに他のタスクの終了を待つ必要がない。つまり、
図6に示す制御ロジックをマルチコアタイプの計算装置に実装する場合には、各コアで同時並列に演算を開始することができる。
【0014】
しかしながら、実際には、
図7に示すフローによる1ステップ当たりの演算時間は、
図4或いは
図5に示すフローによる1ステップ当たりの演算時間に比較して短くはならない。なぜなら、操作量uの項からなるタスクには、全ての制御器に係る演算が含まれるからである。つまり、予測モデル(Me
-Ls)の演算(タスク4)、外乱補償器(Cdis)の演算(タスク5)、及びIMCフィルタ(Cimc)の演算(タスク6)が含まれている。これでは従来のシングルコアによる処理と変わることがない。それどころか、各コアにおけるタスクの演算結果を1つのコアへと集約して加減算を実行するため、その分のコストが追加されることにより1ステップ当たりの演算時間はかえって増加するおそれがある。
【0015】
以上述べたように、並列計算装置を制御装置に適用したとしても、それがソースコードレベルでの並列化である場合や、制御ロジックのレベルでの単純な並列化である場合には、並列計算による演算時間の短縮化を十分に達成することができない。フィードバック制御に係る演算の並列化によって演算時間の短縮をはかるのであれば、制御ロジックの段階でのさらなる工夫が必要である。
【0016】
本発明は、このような課題に鑑みてなされたもので、制御ロジックの段階での工夫により、演算時間の短縮が可能なようにフィードバック制御に係る演算を並列化することのできる制御装置の設計方法を提供することを目的とする。また、当該方法により設計された、フィードバック制御に係る演算を短い時間で実行することのできる制御装置を提供することを目的とする。
【課題を解決するための手段】
【0017】
本発明に係る制御装置の設計方法は、むだ時間を有する制御対象に組み合わせられ、制御量を目標値に近づけるようにフィードバック制御によって制御対象の操作量を決定する制御装置を設計する方法である。本発明におけるフィードバック制御には内部モデル制御が含まれ、さらに、内部モデル制御と等価変換可能な制御、例えばスミス法による制御も含まれる。本発明に係る制御装置の設計方法によれば、操作量に対する補正量を演算するフィードバックループを制御対象の予測モデルを含む複数の制御器を用いて設計することが行われる。次に、制御対象の予測モデルのむだ時間要素から、フィードバックループを構成する制御器の数と同数の遅延要素を取り出すことが行われる。そして、並列に動作する複数の演算装置を用いた並列計算によってフィードバックループの演算を行うように、複数の制御器のそれぞれを遅延要素と組み合わせて複数の演算装置に割り当てることが行われる。
【0018】
本発明に係る制御装置は、上記設計方法に基づき設計された制御装置である。本発明に係る制御装置は、並列に動作する複数の演算装置を備える。好ましくは、本発明に係る制御装置は複数のコアを有するマルチコアプロセッサに実装され、複数の演算装置のそれぞれに異なるコアが用いられる。しかし、複数の演算装置のそれぞれが、シングルコア或いはマルチコアのプロセッサとして構成されていてもよい。
【0019】
これらの演算装置は、演算装置間を順々に信号が伝達されるように構成されている。また、これらの演算装置は、信号の伝達の順序において最初の演算装置には制御対象の操作量が入力され、信号の伝達の順序において最後の演算装置から操作量に対する補正量が出力されるように構成される。つまり、これらの演算装置は、操作量を次ステップの操作量にフィードバックするための閉ループを構成する。制御対象はむだ時間を有しているから、この閉ループにも制御対象が有するむだ時間と同等の遅れが含まれている。
【0020】
演算装置のそれぞれは、入力を所定ステップ遅らせる遅延要素と、遅延要素で遅延された入力を処理して出力を得る制御器とを有している。各遅延要素によって遅らされるステップ数は1ステップであることが好ましい。遅延要素の全個数と制御装置の制御周期とによって演算装置間の信号の伝達における総遅延時間が定まる。本発明に係る制御装置が備える演算装置は、遅延要素による総遅延時間と制御器が有する総むだ時間との合計時間が制御対象が有するむだ時間に等しくなるよう構成されている。なお、制御対象が有するむだ時間とは、制御対象をモデル化した予測モデルのむだ時間と実質的に同意である。制御器のむだ時間は、全ての制御器が有している必要は無い。何れか1つの制御器がむだ時間を有していればよい。
【0021】
各演算装置は、演算装置間で制御機器の演算量が均等になるように構成されていることが好ましい。制御器には、例えば、むだ時間を無視した制御対象の予測モデル、制御対象が有するむだ時間と総遅延時間との差分をむだ時間とするむだ時間要素、IMCフィルタ、及び外乱補償器などの要素を含めることができる。これらの要素を適宜組み合わせて制御器を構成する。好ましくは、むだ時間が除かれた予測モデルを含む制御機器、むだ時間要素を含む制御機器、IMCフィルタを含む制御機器、外乱補償器を含む制御機器を別々に設ける。