例題を用いて説明します。
■例題
Simulinkモデル
GUI
(1)次の3つのファイルをダウンロードしてください。
・Simulinkモデルファイル:simmodel.mdl
・MATLABファイル:gui2sim.m
・figファイル:gui2sim.fig
サンプルファイルは、回答上部のリンクよりダウンロードすることが可能です。
(注意)ファイルのダウンロードはダウンロード対象のリンクを右クリックし、「対象をファイルに保存を選択して行ってください。
(2)次のコマンドを入力しSimulinkモデルと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)
set_param('simmodel','SimulationCommand','update')
(例2) assigin を使用した場合(予めモデル中の変更したいパラメータを"a"として定義)
val = str2num(get(hObject,'String'))
assignin('base','a',val)
set_param('simmodel','SimulationCommand','update')
下記URLに本件に関する情報が記載されています。
・ Simulinkヘルプドキュメント:調整可能なパラメータ