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

조회 수: 7 (최근 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 CenterFile Exchange에서 プログラムによるモデル編集에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

제품

Community Treasure Hunt

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

Start Hunting!