線形化できないプラントをPID Controller​ブロックで自動調整す​るにはどうすればよい​ですか?

14 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2017 年 12 月 22 日
回答済み: MathWorks Support Team 2017 年 12 月 22 日
PID Controllerブロックでプラントの自動調整を試みたところ、プラントの線形化の段階で失敗します。
プラントの構成が線形化に対応していないようなのですが、このようなプラントに対して自動調整する方法はありますか?

採用された回答

MathWorks Support Team
MathWorks Support Team 2017 年 12 月 22 日
PID Controllerブロックによる自動調整機能は、そのプロセスにおいてプラントモデルの線形化を実行しています。
線形化を成功させるには、プラントモデルの入出力仕様がdouble型の浮動小数点で定義されている必要があります。
しかし、線形化に対応しないプラントモデルであっても、以下の手順に従うことで自動調整が可能となります。
※以下の手順を実行するには、Control System Toolbox, Simulink Control DesignおよびSystem Identification Toolboxが必要です。
以下の内容は、MATLAB R2017bで実施しています。
1.線形化できないプラントモデルを用意します。
例題として、以下のような1/(s+1)の伝達関数を定義し、入力をsingle型、出力をdouble型に定義したs-functionブロックをプラントモデルとします。
1/(s+1)の伝達関数は、以下に示すようなLPFの特性を持っています。
しかし、今回用意したプラントモデルは、入力のデータ型がsingle型であることで正確な線形化ができなくなり、線形解析の結果は以下のように、出力が0に落ちた結果となります。
このままでは、PID Controllerブロックによる自動調整を実行すると、線形化に失敗したというエラーが出て成功しません。
  2.周波数特性の推定
そこで、モデルに対して線形解析するのではなく、線形解析ツールの「推定」タブを使用し、プラントモデルの周波数特性を推定します。このとき、使用する入力信号(sinestreamなど)の周波数帯域、および振幅値がプラントモデルの特性を十分カバーできるように設定します。測定信号の設定は、プラントモデルによって適切に調整する必要があります。
※振幅値の初期値は1e-5と小さな値になっていることにご注意ください。
以下の周波数特性の推定結果から、一次LPFの特性が判読可能な結果が得られていることがわかります。所望の帯域が得られていないときは、測定信号の条件を見直して、再度推定を実行します。
 
3.伝達関数の同定
2.の結果、線形解析ツールにより、推定結果がestsys*という名前のfrdオブジェクトとして線形解析ワークスペースに出力されるので、frdオブジェクトファイルをその上側にあるMATLABワークスペースにドラッグ&ドロップして、MATLABで扱えるようにします。さらに以下のコマンドで、取得した周波数特性からs空間の伝達関数を割り出します。
itf = idfrd(estsys1);%idfrdオブジェクトに変換する
sys = n4sid(estsys1,1);%n4sid関数で状態空間を同定する
tfdummy = tf(sys);%tf関数でs空間の伝達関数に変換する
今回は状態空間の同定にn4sid関数を使用しましたが、どのシステム同定アルゴリズムが適切かはプラントモデルの特性によって変化するので、適宜調整が必要です。
システム同定アルゴリズムの選択については、
に紹介されています。
4.プラントモデルの線形化を指定する
3.の結果、プラントモデルの周波数特性を模擬したtfdummyという伝達関数が割り出せました。
s-functionブロックを右クリック>線形解析>選択したブロック線形化を指定 を選択し、以下のようにチェックボックスにチェックを入れてからMATLAB式欄にtfdummyを指定します。
tfdummyを指定したs-functionに対して改めて線形解析を実施すると、以下のように元の特性に近似した結果が得られます。
以上の方法により、プラントモデルの線形化の際にはtfdummyが使用されることになり、PID Controllerによる自動調整が実行可能となります。

その他の回答 (0 件)

製品


リリース

R2017a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!