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

6 vues (au cours des 30 derniers jours)
MathWorks Support Team
MathWorks Support Team le 23 Oct 2012
GUIDE で作成した GUI 上から Simulink のシミュレーションをスタート/ストップしたり、シミュレーション中にブロックパラメータの値を変更する方法を教えてください。

Réponse acceptée

MathWorks Support Team
MathWorks Support Team le 10 Nov 2022
Modifié(e) : MathWorks Support Team le 22 Nov 2022
例題を用いて説明します。
■例題
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ヘルプドキュメント:調整可能なパラメータ

Plus de réponses (0)

Catégories

En savoir plus sur プログラムによるモデル編集 dans Help Center et File Exchange

Tags

Aucun tag saisi pour le moment.

Produits

Community Treasure Hunt

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

Start Hunting!