積分プロセスのPredictive Functional Control
目次
はじめに
これまでにモデル予測制御の一種であるPredictive Functional Control(PFC)の基礎原理と,多入力多出力システムへの拡張について述べました.
PFCではシステムの状態方程式さえ立てることができれば以下のような補償器を個別に設計しなくても良いため,比較的使い勝手の良いコントローラであると思っています.
- アンチワインドアップ補償器(積分器ワインドアップ回避)
- スミス予測器(むだ時間補償)
- ZPETCやPTCなど(目標値への追従性能向上)
また,詳細については述べませんが,不安定プロセスに対しても同様のアプローチで適用することが可能です.
一方で,このような不安定プロセスに適用した際に目標値へのオフセットフリー特性が失われるといった課題もあります.
(定位性プロセスとか非定位性プロセスと呼ぶほうが正しいかも)
この課題がメカトロニクス分野へ応用する際の難しさとなっています.
メカトロニクス分野の制御対象の代表的なものはDCモータなどのモータ類ですが,この電流から位置までのシステムが不安定プロセスであるためです.
また,空気圧または油圧シリンダも同様に不安定プロセスに分類されます.
これらのシステムに対して,PFCはオフセットフリー特性を持たず定常偏差が残ってしまうため実用上の大きな課題となっています.
上記のようなシステムではある一定の入力を与えた際に位置が時間とともに無限に増加していくシステムです.
反対に,DCモータであっても速度はいずれ一定値に収束するため,速度制御は安定プロセスに分類されます.
これらは極にゼロを持つシステムであり,このようなシステムを積分プロセスと呼びます.
今回は,積分プロセスを含む不安定プロセスでオフセットフリーを達成する方法のひとつであるTransparent Controlについて考えます.
積分プロセスのPredictive Functional Control
積分プロセスの制御手法
積分プロセスに対してオフセットフリー特性を実現する方法としては主に3つのアプローチがあります.
- 安定部分と不安定部分にDecompositionする
- 外乱オブザーバにより外乱を除去する
- 内部ループを設け,拡大システムを構成する
Decomposition
Decompositionは,下図の積分器のように不安定システムを安定なシステムの和に分解する方法です.
実際に変形してみると,以下のように等価であることがわかります.
\begin{align}
S_{M} &= \frac{KT}{sT+1} MV - \frac{-1}{sT+1} S_{M} \\
\\
\frac{sT}{sT+1} S_{M} &= \frac{KT}{sT+1} MV \\
\\
S_{M} &= \frac{1}{s}
\end{align}
Decompositionの手法では,このうち入力に関わる項のみに対してPFCコントローラを設計し,出力に関する項は既知の外乱として扱います.
これによって安定なプロセスに対してコントローラを設計したことになり,オフセットフリー特性が得られます.
不安定なシステムはこのように安定なシステムに分解できることが知られており,適用できる対象が広いところが特長です.
しかし,Decompositionを探すことが困難であったり,見つかったとしてもパラメータ(上記でいうところの時定数)を設計する必要があります.
外乱オブザーバ
PFCが積分プロセスに対してオフセットフリー特性を喪失する要因は主に入力側外乱にあります.
実際にシミュレーションすると明らかですが,プラントとコントローラ内部のノミナルモデル(Nominal model)が一致しており,出力側外乱のみが加わる場合には,積分プロセスであってもPFCはオフセットフリーです.
プラントとノミナルモデルの間にモデル化誤差が存在したり,入力側に外乱が生じる場合にPFCはオフセットフリー特性を失います.
外乱オブザーバ(Disturbance observer; DOB)はモデル化誤差や入力側外乱をまとめて入力側外乱として推定するため,外乱の推定が上手くできていればオフセットフリーを実現できます.
外乱オブザーバの概念は以下で述べています.
秋田県立大の佐藤先生のところではPFCにDOBを適用しています.
(PDFへの直リンクです)
http://www.sice.jp/ia-j/papers/15_11IA008.pdf
また,MIMO MPCへの適用例もいくつかあります.
DOBは産業界でもよく利用されているため設計手法が確立されているところや,外乱の除去速度が比較的速いところが特長です.
DOBはプラントの直前に配置されるため,そのまま利用すると実際の操作量がMPC側で設定した入力制約を破る可能性があります.
そこで,DOBの出力をMPCの入力制約に反映することでDOB出力を考慮した最適化を行うようにしています.
このように制約条件を内部コントローラの出力によって可変する手法をTransparent Controlと呼びます.
Transparent Controlについては後述します.
弱点としては,DOBは不安定寄りの補償器であるため,設計によってはシステム全体としての安定性を損なう可能性があるところです.
内部ループを設ける手法
PFCがオフセットフリー特性を持たないのはシステムが不安定なことが要因なため,内部ループを設けてシステムを安定化しようという発想が内部ループを設ける方法です.
いわゆるカスケード制御です.
通常,MPCはかなり上位のコントローラに位置するため,実際の適用例としてはこれが一番多いのではと思っています.
たとえば産業用モータの多くはPIDなどによって実装されたサーボコントローラがセットであるため,位置に対して安定なシステムです.
これに対してMPCを構成する場合,オフセットフリー特性は内部ループで確保されているため,MPCの指令値に対してもオフセットフリーとなります.
ただし,内部コントローラが入力制約を保つ場合にはMPCコントローラが内部コントローラの制約を破るように「最適でない」指令値を与えてしまう可能性があります.
このとき,内部コントローラの出力をMPC側の制約に反映することで内部コントローラの出力を考慮した最適化を行うことができます.
先に述べたDOBの場合と同様,これもTransparent Controlと呼びます.
DOBも一種の内部コントローラであるため,当然とも言えますが.
この手法は内部のコントローラのみで安定性が確保できるところが特長です.
一方で内部コントローラを設計する必要があるところが弱点です.
以下では,2と3のPFCにおけるTransparent Controlについて述べます.
Transparent Control
Transparent controlは内部ループによる操作量を,上位のコントローラであるPFCコントローラに伝達させる手法を指します.
具体的には以下のようにコントローラを構成します.
PFCでは前回の操作量をコントローラにフィードバックするという手法で入力制約を考慮するため,構成がシンプルです.
内部コントローラによる操作量に入力制約が入らない理由は,を上位コントローラであるPFCの入力制約に組み込んでいるためです.
もちろん安全のため,明示的に入れても問題はありません.
この組み込み方として,DOBと内部コントローラで少し違うため,分けて説明します.
DOBでのTransparent Control
DOBの場合には,補償器が動特性を持たないと考えることができます.
システムへの入力制約が以下のように定義されているとします.
\begin{align}
u_{min} \leq u(k) \leq u_{max}
\end{align}
DOBによる操作量を,PFCによる操作量をとすると上式は以下のように書き換えられます.
\begin{align}
u_{min} \leq u_{PFC}(k) - u_{DOB}(k) \leq u_{max} \\
\\
u_{min} + u_{DOB}(k) \leq u_{PFC}(k) \leq u_{max} + u_{DOB}(k)
\end{align}
PFCより先にDOBの操作量を計算し,PFCの操作量をその分だけ差し引いているだけです.
内部コントローラでのTransparent Control
内部コントローラの場合,内部のコントローラを含めたシステムをPFCで利用する内部モデルとして利用します.
SISOシステムの場合はPIDを使うことが多いかと思いますが,内部コントローラにはシステムの安定化のみが求められているため,積分器は特に必要ありません.
今回はMIMOシステムへの拡張も容易であることから状態フィードバックを内部コントローラとして利用します.
対象とするシステムが以下の線形状態方程式で表されるものとします.
\begin{align}
x(k+1) &= Ax(k) + B \left\{ u_{FB}(k) + u_{PFC}(k) \right\} \\
\\
y(k) &= Cx(k)
\end{align}
状態フィードバックの操作量はで与えられることから,状態フィードバックを含めたシステムは以下のようになります.
\begin{align}
x(k+1) &= (A-BK) x(k) + Bu_{PFC}(k) \\
\\
y(k) &= Cx(k)
\end{align}
つまり,元のシステム係数行列がに置き換わっただけです.
この新しいシステム係数行列をPFCの内部モデルとして利用します.
また,このときのPFCの入力制約はDOBの場合と同様に,以下のようになります.
\begin{align}
u_{min} + u_{FB}(k) \leq u_{PFC}(k) \leq u_{max} + u_{FB}(k)
\end{align}
シミュレーション(MATLAB/Simulink)
対象とするシステム
対象とするシステムは2自由度のMass-damperシステムです.
下図においてばね定数としたものに相当します.
両質量の位置が測定できるものとしています.
状態方程式
\begin{align}
\frac{d}{dt} \left[ \begin{array}{c}
x_{1} \\
x_{2} \\
\dot{x_{1}} \\
\dot{x_{2}}
\end{array} \right] = \left[ \begin{array}{cccc}
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1 \\
0 & 0 & -\frac{D_{1}+D_{2}}{M_{1}} & \frac{D_{2}}{M_{1}} \\
0 & 0 & \frac{D_{2}}{M_{2}} & -\frac{D_{2}}{M_{2}}
\end{array} \right] \left[ \begin{array}{c}
x_{1} \\
x_{2} \\
\dot{x_{1}} \\
\dot{x_{2}}
\end{array} \right] + \left[ \begin{array}{cc}
0 & 0 \\
0 & 0 \\
\frac{1}{M_{1}} & 0 \\
0 & \frac{1}{M_{2}}
\end{array} \right] \left[ \begin{array}{c}
f_{1} \\
f_{2}
\end{array} \right]
\end{align}
観測方程式
\begin{align}
\left[ \begin{array}{c}
x_{1} \\
x_{2}
\end{array} \right] = \left[ \begin{array}{c}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0
\end{array} \right] \left[ \begin{array}{c}
x_{1} \\
x_{2} \\
\dot{x_{1}} \\
\dot{x_{2}}
\end{array} \right]
\end{align}
ここでは,およびはとしています.
ブロック図
Plantが制御対象を,controlPFC_MatFuncがPFCのコントローラを表します.
また,StateFeedbackが状態フィードバックコントローラ(出力から状態への変換器含む)を表します.
操作量はSaturationによって制限されます.
制御対象にはdisturbanceより,入力側と出力側それぞれにステップ状の外乱が与えられます.
シミュレーション結果
サンプリング周期を(s),希望する閉ループ応答時間を(s),basis functionの次数を3としたときの応答が下図です.
内部コントローラを用いたPFCのTransparent Control
上から,操作量,外乱,質量位置の応答となっています.
両質量の応答が,ともに目標値に収束していることがわかります.
このとき,内部コントローラは状態フィードバックを線形2次レギュレータ(Linear Quadratic Regulator; LQR)にて設計し,重み係数行列およびとしています.
通常のPFC
比較のため,内部にコントローラを設けない場合が下図になります.
入力外乱を与えた(s)の時点でオフセットが発生しており,時間が経過しても目標値に収束しないことがわかります.
LQRで設計したサーボ系に対する利点
状態方程式が立っており,内部コントローラをLQRで設計しているため,当然サーボ系もLQRで設計すればよいのではという疑問が出てくることと思います.
個人的な意見ですが,PFCで上位のサーボコントローラを構成することは,LQRに比べて以下の利点があると考えています.
- 積分器ワインドアップを回避することが容易
- むだ時間や遅れ補償器を構成することが容易
積分器ワインドアップについて,SISOシステムでは上記の利点はあまりないように思いますが,クロスカップリングの大きいMIMOシステムでは「操作量1が飽和したときに積分器1を停止すべきか積分器2を停止すべきか」の判断が容易ではありません.
PFCを上位コントローラとして利用すると,飽和したあとの操作量をコントローラにフィードバックするだけでよいため,新たにアンチワインドアップ補償器を設計する必要がありません.
むだ時間の補償についても同様の理由があるため,PFCに利点があると考えています.
内部コントローラをどう設計すべきか
この手法で課題となるのが内部コントローラの設計指標についてです.
内部フィードバックを含めたシステムとして制御対象を定義するため,基本的に操作量はPFC側で決定され,内部コントローラの設計によらず希望する応答が得られます.
外乱が入力されていない(s)までの範囲で内部コントローラ有無での応答を比較しても,ほとんど差がないことがわかるかと思います.
内部コントローラの設計で最も影響が大きいのは入力外乱への応答で,内部ループのゲインを大きくすると外乱からの影響は小さくなり,反対にゲインを小さくすると外乱からの影響は大きくなります.
このような特徴は(MIMOという意味ではない)2自由度PID制御系と似た特徴であると言えます.
理論的な解析は未だできていませんが,PFCではオンラインの最適化を行わないことから解析解の導出も容易なため,目標値応答や外乱応答についても議論できるのではないかと考えています.
(そこまでやるなら論文化もできそうな気はしますが)
内部コントローラ設計の結論としては,とりあえず内部ループが安定になっていればよいくらいかなと思います.
この結果はSimulink project形式でGithubにアップロードしています.
PFCコントローラ内部のコードはすべてmファイルで記述しているため,主要な計算はテキストエディタでも確認することができます.
(以前のリポジトリに追加する形です.ほとんどアップローダとして利用しています.)