GUIDE で作成した GUI 上から Simulink のシミュレーションを​スタート/ストップし​たり、シミュレーショ​ン中にブロックパラメ​ータの値を変更するに​はどうすればよいです​か?

3 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2012 年 10 月 23 日
編集済み: MathWorks Support Team 2022 年 11 月 22 日
GUIDE で作成した GUI 上から Simulink のシミュレーションをスタート/ストップしたり、シミュレーション中にブロックパラメータの値を変更する方法を教えてください。

採用された回答

MathWorks Support Team
MathWorks Support Team 2022 年 11 月 10 日
編集済み: MathWorks Support Team 2022 年 11 月 22 日
例題を用いて説明します。
■例題
Simulinkモデル
GUI
(1)次の3つのファイルをダウンロードしてください。
 ・Simulinkモデルファイル:simmodel.mdl
 ・MATLABファイル:gui2sim.m
 ・figファイル:gui2sim.fig
サンプルファイルは、回答上部のリンクよりダウンロードすることが可能です。
(注意)ファイルのダウンロードはダウンロード対象のリンクを右クリックし、「対象をファイルに保存を選択して行ってください。
(2)次のコマンドを入力しSimulinkモデルとGUIを開きます。
simmodel %simmodelモデルのオープン
gui2sim %gui2sim GUIのオープン
(3)GUIの"Start"ボタンをクリックするとシミュレーションが開始されます。
(4)エディットボックスに値を入力し、Enterキーを押すと、ゲインの値が変更されます。
■解説
1. シミュレーションをスタート/ストップする方法
GUIオブジェクトのコールバックルーチンに、シミュレーションの開始/停止を行うコマンド、set_param コマンドを記述することで可能です。
set_param を使用した場合のコマンド例
set_param('simmodel','SimulationCommand','start') % シミュレーション開始
set_param('simmodel','SimulationCommand','stop') % シミュレーション停止
2. ブロックパラメータを変更する方法
ブロックパラメータの変更も、上記1.と同様に、GUIオブジェクトのコールバックルーチンにコマンドを記述します。set_param コマンドを用いて直接ブロックパラメータを変更する方法と、予めSimulinkモデル中の変更したいパラメータを変数で設定し、assigin コマンドを用いて、GUIオブジェクトのコールバック関数のローカルワークスペースに存在する変数をSimulinkのデフォルトのワークスペースのベースワークスペースに割り当てる方法などがあります。どちらの場合も、シミュレーション中にブロックパラメータを変更するためには、最後にSimulinkモデルのアップデートを行わなければなりません。アップデートをして初めて新しい値に更新されます。
下記は、GUIのエディタブルテキストに入力された値を使った場合の各コマンド例です。
(例1) set_param を使用した場合
val = get(hObject,'String')) % 入力値(文字列)の取得
set_param('simmodel/Gain','Gain',val) % ゲインパラメータに値valを設定
set_param('simmodel','SimulationCommand','update') % モデルのアップデート
(例2) assigin を使用した場合(予めモデル中の変更したいパラメータを"a"として定義)
val = str2num(get(hObject,'String')) % 入力値(文字列)を取得し、数値に変換
assignin('base','a',val) % ベースワークスペースの変数aに数値を割り当て
set_param('simmodel','SimulationCommand','update') % モデルのアップデート
下記URLに本件に関する情報が記載されています。
・ Simulinkヘルプドキュメント:調整可能なパラメータ

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeプログラムによるモデル編集 についてさらに検索

タグ

タグが未入力です。

製品

Community Treasure Hunt

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

Start Hunting!