Simullink上​で、サンプリング毎に​過去の情報を用いて現​在の入力値を計算する​場合ブロック線図をど​のように構成すれば良​いか。

12 ビュー (過去 30 日間)
riku nakano
riku nakano 2022 年 6 月 11 日
コメント済み: riku nakano 2022 年 6 月 13 日
入力にむだ時間(遅れ)を持つシステムを扱っており、Simulinkシミュレーション上で過去の入力値を用いてむだ時間分だけ未来の状態を推定し適当な入力を計算するような制御を組もうとしています(下画像ブロック線図:「むだ時間系の状態予測制御」より引用)。
私はブロック線図のu(t+a)をシミュレーション上で得たいです。つまりむだ時間aだけ過去の入力情報を保存しておき、その情報から入力u(t)を計算したいです。
Delayブロックを用いて表現しようとしましたがうまくいきませんでした(シミュレーションはサンプリング時間1msの離散時間系)。
制御の式自体は間違っていないはずなので、良い方法があれば教えて頂きたいです。
説明が下手で申し訳ないです。
  3 件のコメント
Atsushi Ueno
Atsushi Ueno 2022 年 6 月 11 日
むだ時間系の状態予測制御の冒頭を読みましたが、delayブロックでは駄目ですね。Delayブロックはu(t-a)即ち過去の信号を出力します。今@riku nakanoさんが必要としているのはu(t+a)即ち未来の信号です。以下同論文の引用です。
現時刻tからhだけ未来の状態x(t+h)が必要となる。
現実には計測出来ないが、状態予測の考え方を用いればx(t+h)を常に計算できる。
同論文にも書いてある通り状態予測制御を使えば良いのではないでしょうか?
riku nakano
riku nakano 2022 年 6 月 13 日
ご返信ありがとうございます。
ブロック線図上ではu(t+a)となっていますが、aの範囲が-h以上0未満なので実際は過去の入力値が必要となります。
この過去の入力値と現在の状態を用いて未来の状態x(t+h)を推定し制御に用いるという形になっています。
以上より理論的にはDelayブロックを用いて計算できるはずなのですが、なぜかうまくいきません。
因みに状態予測計算の際に過去の入力値の積分が出てくるので、その数値計算として台形近似をMatlabFunctionを用いて行っており、その計算値が思い通りの値になっていないという状況です。
実際に構築したシミュレーションの画像などを載せたほうが良いのでしょうか。

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeSimulink についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!