計算タイミングの違うモデルを実行する

4 views (last 30 days)
simulink内でifを用いて実行タイミングを異なっているモデルを実行させ,同じ結果にしたいと考えています.
具体的には同じ伝達関数をIf action subsystem内で1[ms]で実行するものと,シミュレーション実行サンプルタイミングである0.01[ms]ごとに実行するものを同じ結果を得たいと考えています.
サンプルsimilinkを添付いたします.
よろしくお願いします.

Accepted Answer

Toshinobu Shintai
Toshinobu Shintai on 11 Dec 2020
添付ファイルのようなモデルはどうでしょうか。
まず、サブシステム内を離散で実行させるために、必ずしもIf Actionを用いる必要はありませんので、私がやりやすいようにサブシステムをアトミック化し、サンプル時間を設定しました。If Actionでなければならない場合は、そのように修正してください。
離散時間で動作するモデルでは、基本的には離散時間のブロックを使います。添付モデルでは連続の1次遅れ伝達関数と同じダイナミクスを持つ離散時間のブロックを設計しました。
「param.m」に記載しましたが、1次遅れ伝達関数と同じ特性を持つ離散時間フィルターの重みを計算する式は以下になります。
ts = 1e-5; % シミュレーションのタイムステップ[s]
tc = 1e-3; % 離散フィルターのタイムステップ[s]
wc = 5; % 1次ローパスフィルタのカットオフ周波数[rad/s]
% 1次離散ローパスフィルタの重み
r = cos(wc * tc) - 1 + sqrt((cos(wc * tc) - 1) * (cos(wc * tc) - 3));

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!