Simulinkのシミュレーションを実行中に伝達関数等のパラメータを計算結果をもとに変更する方法
Show older comments
現在、Simulinkで制御モデルの設計を実施しており、伝達関数(s)を利用しています。その係数を、Matlab上で定義した変数を初期値に使っています。例えば、一次遅れ系では1/(s+t)、sはラプラス変数、tは時間遅れの定数です。このtを、最初にMatlab上で定義し、Simulinkで実行しております。係数を変えなければいけないのですが、応答の値がある閾値を超えたら時定数tを変更したい場合にシミュレーション中の変更する方法があれば教えて頂けないでしょうか。一応、Workspaceに保存、読み込みでトライしたのですが、Workspace変数は、時間を含む構造体でなければ使えないようで、今回のような定数のような形には対応していないようでした。W
Accepted Answer
More Answers (1)
MATLAB の S-Functionに関するデモに、Transfer Function ブロックのパラメータを時変で与える S-function ブロックが提供されています。 なお、デモモデルはコマンドウィンドウにてsfcndemo_stvctf(離散の場合はsfcndemo_stvdtf)を実行して起動できます。
注意点として、以下の3点があります。
1) 入力信号、分子係数ベクトル、分母係数ベクトルの順番で信号をまとめて、S-Functionブロックへ入力すること
2) S-Functionに入力する分子係数ベクトルと分母係数ベクトルのベクトルの長さを一致させること(S-Function のサンプルモデルで確認してみてください)
3) S-Functionをダブルクリックして表示されるブロックパラメータの分子係数ベクトル'num'と分母係数ベクトル'den'の長さを一致させること
2 Comments
Yoshi Minami
on 25 Jan 2018
Yoko
on 25 Jan 2018
該当 S-Function ブロックは、伝達関数の係数をポートから入力できます。なので、S-Function 以外で計算した信号から伝達関数の係数が出るようにブロックを組み、入力ポートに入れることで、伝達関数の係数がシミュレーション中に変えられます。
Categories
Find more on シミュレーション in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!