AppDesigner で作成した GUI から Simulink モデルを実行したり、​パラメータを変更した​りするには、どうすれ​ばよいですか?

22 views (last 30 days)
Simulink モデルのパラメータを設定したり、シミュレーションを実行・停止するような、アプリ(GUI)を AppDesigner で作成したいです。作成する方法を教えてください。
 

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 13 Sep 2021
Edited: MathWorks Support Team on 13 Sep 2021
AppDesigner で作成した例を回答の冒頭に表示されているリンクからダウンロードすることができます。
動作を確認するには、以下の手順にて行ってください。
(1) 次のファイルをダウンロードします。(R2017b にて作成)
 - Simulink モデル : sim_mdl_17b.slx
 - GUI アプリ: app_runsim.mlapp
(2) 以下のコマンドを入力し、SimulinkモデルとGUIを開きます。
sim_mdl_17b % Simulink モデルのオープン
app_runsim % GUI のオープン
(3) アプリ上の "開始" ボタンをクリックし、シミュレーションを開始します。
(4)エディットボックスで値を変更すると、ゲイン の値が変更されます。同時に、スライダーバーの値も変更されます。
(5) スライダーバーの値を変更すると、ゲインの値が変更されます。同時に、エディットボックスの値も変更されます。
(6) アプリ上の "停止" ボタンをクリックし、シミュレーションを停止します。
AppDesigner の各コンポーネントでは、以下のコールバックを設定しています。
1. シミュレーションの開始・停止の動作
コンポーネントのコールバックルーチン(今回の場合、2 つの Button の ButtonPushedFcn コールバック)に、シミュレーションの開始/停止を行うコマンド、set_param コマンドを記述します。
set_param を使用した場合のコマンド例
function ButtonPushed(app, event)
% 開始ボタン
set_param('sim_mdl_17b', 'SimulationCommand','start') % シミュレーション開始
end
function Button_2Pushed(app, event)
% 停止ボタン
set_param('sim_mdl_17b','SimulationCommand','stop') % シミュレーション停止
end
2. ブロックパラメータの変更
ブロックパラメータの変更も、上記1.と同様に、コンポーネントのコールバックルーチンにコマンドを記述します。
set_param コマンドを用いて直接ブロックパラメータを変更した後、Simulink モデルのアップデートを行います。
下記は、"編集フィールド(数値)"(EDIT FIELD) のコールバック(ValueChangedFcn)の記述例です。 
        % Value changed function: GainEditField
        function GainEditFieldValueChanged(app, event)
            value = app.GainEditField.Value; 
            set_param('sim_mdl_17b/Gain','Gain',num2str(value)) % ブロックパラメータ設定
            set_param('sim_mdl_17b','SimulationCommand','update') % モデルの更新
            app.Slider.Value = value; % スライダー値の更新
        end
​このサンプルでは、EDIT FILED とスライダーを連動させるため、スライダーの値の更新も行っています。
また、同様に、スライダーのコールバック(ValueChangedFcn)も以下のように記述します。
function SliderValueChanged(app, event)
value = app.Slider.Value;
set_param('sim_mdl_17b/Gain','Gain',num2str(value))
set_param('sim_mdl_17b','SimulationCommand','update')
app.GainEditField.Value = value;
end
GUIDE を用いた GUI の作成例は、以下の内容を参考にしてください。
・GUIDE で作成した GUI 上から Simulink のシミュレーションを​スタート/ストップし​たり、シミュレーショ​ン中にブロックパラメ​ータの値を変更するに​はどうすればよいです​か?
AppDesigner の基本的な作成方法については、以下の URL をご覧ください。
・AppDesigner
Simulink モデルに対してのパラメータ設定については、以下の URLをご覧ください。
・ Simulinkヘルプドキュメント:調整可能なパラメータ

More Answers (0)

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!