Simulinkのシ​ミュレーションを実行​中に伝達関数等のパラ​メータを計算結果をも​とに変更する方法

32 visualizzazioni (ultimi 30 giorni)
Yoshi Minami
Yoshi Minami il 24 Gen 2018
Commentato: Yoko il 25 Gen 2018
現在、Simulinkで制御モデルの設計を実施しており、伝達関数(s)を利用しています。その係数を、Matlab上で定義した変数を初期値に使っています。例えば、一次遅れ系では1/(s+t)、sはラプラス変数、tは時間遅れの定数です。このtを、最初にMatlab上で定義し、Simulinkで実行しております。係数を変えなければいけないのですが、応答の値がある閾値を超えたら時定数tを変更したい場合にシミュレーション中の変更する方法があれば教えて頂けないでしょうか。一応、Workspaceに保存、読み込みでトライしたのですが、Workspace変数は、時間を含む構造体でなければ使えないようで、今回のような定数のような形には対応していないようでした。W

Risposta accettata

Hiroumi Mita
Hiroumi Mita il 24 Gen 2018
Modificato: Hiroumi Mita il 24 Gen 2018
伝達関数に限らず、以下のような用途ではsimulinkのsimstateという機能が使えます。 詳細はマニュアルをご参照ください。
#1. シミュレーションモデルのパラメータ変更後、シミュレーション継続
#2. 状態量の継続
また、伝達関数のパラメータを時変にしたいということであれば、 伝達関数を元の微分方程式に変換して、係数(パラメータ)を条件で切り替えるように モデル化する手もあります。
  2 Commenti
Yoshi Minami
Yoshi Minami il 25 Gen 2018
返答ありがとうございました。伝達関数に拘っておりましたが、微分方程式に戻せば直接扱えることが分かりました。参考になりました。まだ、Simstateを使ったことがないのですが、具体的にSimulinkのモデル上で利用する場合にどのようにするのでしょうか。また、特別なToolboxがなくてもSimulinkがあれば使えるということでしょうか。MathworksのFAQを見ていても実例がないので良く分かりませんでした。何か良い資料をご存じでしょうか。
Hiroumi Mita
Hiroumi Mita il 25 Gen 2018
simstateは、Simulinkの標準機能です。特別なoptionは必要ありません。
特別な資料は特にありませんが、documentの中の標準デモや、マニュアルを参照していただければだいじょうぶかと思います。
シミュレーション入力、ログおよび信号の表示
SimState を使用したシミュレーション状態の保存と復元
多少、Simulinkのモデルの外部からの制御(set_param,get_param)コマンドの 知識が必要になるかもしれません。
簡単なモデルで練習してから、複雑なモデルに適用するとよいかと思います。

Accedi per commentare.

Più risposte (1)

Yoko
Yoko il 24 Gen 2018
Modificato: Yoko il 24 Gen 2018
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 Commenti
Yoshi Minami
Yoshi Minami il 25 Gen 2018
早速、ご回答を頂きありがとうございました。このS-functionは、時間で変数が変わることは確認できました。実際に、シミュレーション中に、同じモデル内の当該S-function以外からの信号(数値)を参照して伝達関数の変数を変えることができるのでしょうか。
Yoko
Yoko il 25 Gen 2018
該当 S-Function ブロックは、伝達関数の係数をポートから入力できます。なので、S-Function 以外で計算した信号から伝達関数の係数が出るようにブロックを組み、入力ポートに入れることで、伝達関数の係数がシミュレーション中に変えられます。

Accedi per commentare.

Categorie

Scopri di più su シミュレーション in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!