matlabユーザーコミュニティー

MATLAB&Si万博1manbetxmulink的ユーザーコミュニティー向け日本语ブログ

应用设计师でSimulink的万博1manbetxモデルのシミュレーションアプリを作る

こんにちは,テクニカルサポートエンジニアの远藤と申します。
前回の投稿は2月19日ということで,约3か月ぶりの投稿となります。

前回の记事では万博1manbetxSimulink的APIを用いてMATLABからSimulink中のモデルを编集する方法について书かせていただきました。今回はそれに关连して,MATLABのApp Designer.机能を用いてS万博1manbetximulink的モデルのシミュレーションや编集を行うアプリケーションを作成する方法について书いていきたいと思います。

普段业务で万博1manbetxSimulink的しか使っていないという方も,应用设计师でシミュレーションアプリを自作することで业务效率アップにつながるかも......?

应用设计师とは

应用设计师とは,MATLABで対话型アプリケーションを简単に作成するためのアプリケーションです。

应用设计师で作成したアプリの例

アプリの设计やプログラムの作成を直感的な操作で简単に行うことができるツールとなっています。

应用设计师でシミュレーションアプリを作成するメリット

应用设计师でシミュレーションアプリを作成すると,アプリ上の操作でSimulink的万博1manbetxモデルのパラメータ设定やシミュレーション実行を行えるようになります。

シミュレーションアプリの例

このようなシミュレーションアプリを作成するメリットとしては,

  • 特定のパラメータ値の変更など决められたタスクを频繁に行う场合に操作を简略化できる(业务效率の向上)
  • アプリ上で自由にシミュレーション结果を可视化できる(可视性の向上)
  • 万博1manbetxSimulink的モデルをよく知らない人でもアプリ上の操作のみでパラメータの设定やシミュレーションの実行ができる(使用性の向上)

などが挙げられます。特に3つ目のメリットは,Si万博1manbetxmulink中を普段あまり使っていない人にモデルを使ってもらう时などにとても役立ちます。

应用设计师の使い方

万博1manbetxSimulink的モデルとの连携方法の前に,应用设计师の基本的な使い方について简単に解说します。こちらのビデオもご参照ください。

まず,应用设计师を起动します.MATLABのコマンドウィンドウで

>> appdesigner

と実行する,あるいはホームタブの「新规作成」 - >「アプリ」から起动することができます。

スタートページが起动します。このスタートページからは,新规アプリの作成や既存のアプリの编集,チュートリアルなどを行うことができます。今回は「空のアプリ」を选択します。

アプリの编集画面が开きます。今开いているのが「设计ビュー」となっており,ボタンやスライダーなどのコンポーネントをアプリ上に配置することができます。右上のボタンから「コードビュー」に切り替えてみます。

今度はアプリのコードが开きます。ここでは実际のアプリの处理をコーディングすることができます。上部のツールバーからアプリにプロパティ(アプリが持つ変数),关数(アプリが持つ关数),コールバック(ユーザーの操作に反応して実行される关数)を追加することができます。

シミュレーションアプリの作成

それではS万博1manbetximulink的モデルと连携したシミュレーションアプリを作っていきましょう。今回は例として下のような“myModel.slx”というモデルに対してアプリを作っていきます。

①シミュレーション実行ボタンの作成

最初にアプリからシミュレーションを実行するためのボタンを作成します。まず,设计ビューでアプリ上にボタンを配置し,ボタンのテキストを“运行”に変更します。

つぎに,このボタンが押されたときの处理をプログラムしますボタンを右クリックして「コールバック」 - >「ButtonPushedFcnコールバックの追加」を选ぶと,自动的にコードビューに切り替わります。

新しく“RunButtonPushed”という关数が作成されたことがわかります。この关数は先ほど配置した运行ボタンを押したときに実行されます。このように,コンポーネントを配置してコールバックを追加することで,コンポーネントに対してユーザーが操作を行ったときの处理を実装することができます。
さっそくこの关数内にシミュレーションを実行するコードを记述します。シミュレーションを実行するにはSIM卡という关数を用います。

功能RunButtonPushed(应用程序,事件)
SIM('基于myModel');
结尾

これで运行ボタンを押すとシミュレーションが実行されるようになります。

実际にアプリを起动して确认してみます.APP设计师の実行ボタンからアプリを実行します。初回は保存ダイアログが表示されるので,ここでは“myApp.mlapp”という名前で保存します。アプリのウィンドウが起动するので追加した「运行」ボタンを押してみると......

シミュレーションが実行されました!

②シミュレーション结果をプロットする

シミュレーションが実行できたので,その结果をアプリ上にプロットしてみます。そのために,まず范围ブロックのログを设定します。

これでSIM关数の戻り値に范围のログデータが保存されるようになりました。

つぎに,アプリ上に「座标轴」コンポーネントを配置します。シミュレーション结果のプロットなので,Title.Stringを“模拟结果”,XLabel.Stringを“时代”,Ylabel.Stringを“值”に设定します。

つぎに,先ほど作成した“RunButtonPushed”关数にプロットするコードを追加します。

功能RunButtonPushed(应用程序,事件)
OUT = SIM('基于myModel');
数据= out.ScopeData;
情节(app.UIAxes,数据(:,1),数据(:,2));
结尾

注意点として,情节关数の第一引数には追加した座标轴(app.UIAxes)を指定してあげる必要があります(これを指定しないと新しく图が作成され,そこにプロットされてしまいます)。详しくはこのドキュメントをご参照ください。

これで运行ボタンを押すとシミュレーション実行后にシミュレーション结果がプロットされるようになりました。

③モデルのパラメータを変更する

つぎは,「スライダー」コンポーネントを使ってゲインの値を変更できるようにしてみましょう。设计ビューでスライダーを追加し,ラベルを“增益”,初期値を1,范囲を0,5に设定します。

设定が终わったら,ボタンの时と同じようにコールバックを追加します。スライダーの场合はValueChangedFcnとValueChangingFcnの2つがありますが,ここではスライダーの値が変化したときに実行されるコールバックであるValueChangedFcnを追加します。

功能GainSliderValueChanged(应用程序,事件)
值= app.GainSlider.Value;
结尾

コードビューに上记のような关数が追加されます。あらかじめスライダーの値を“值”という変数に格纳する处理が用意されているので,これを使ってゲインの値を変更する处理を実装します。使うのはもちろん前回の记事でも绍介したset_param.关数です。

功能GainSliderValueChanged(应用程序,事件)
值= app.GainSlider.Value;
set_param('基于myModel /增益', '增益',num2str(值));
结尾

增益パラメータにはゲイン値を文字列で设定する必要があるので,num2str关数でスライダーの値を文字列に変换しなければならない点に注意です。

これでスライダーによってゲインの値を変更できるようになりました。

④モデル起动时にアプリも同时に起动する

最后に,モデルとシミュレーションアプリを别々に起动するのは面倒なので,モデルコールバック机能を用いてモデル起动时にアプリも同时に起动するように设定してみましょう。モデルコールバックは,モデルや読み込まれたときやシミュレーション実行时などに特定の处理を行うための机能で,モデルプロパティから设定することができます。

今回はモデル読み込み时にアプリを起动したいので,PreLoadFcnにアプリを起动するコマンドを记述します。アプリの起动には,アプリ名(今回は对myApp)をそのまま実行します。

これでモデルを开くときに同时にアプリも起动するようになりました。

その他の参考情报

この记事では基本的な应用设计とSimulink中の连万博1manbetx携方法をご绍介しましたが,MATLAB解答にも应用设计とSimulink的モデルの连携方法が解说されている投稿がいくつかあります。独自のアプリを作成する际にはこれらもご参考ください。

set_paramを用いてモデルのスタートとストップをアプリから制御する例(ファイルつき)

実行中のモデルからデータを取得しアプリ上に表示する例

モデルへのパラメータの受け渡し方法まとめ

注意事项

MATLAB编译という制品のアプリケーションコンパイラー机能を使用すると,应用设计师で作成したアプリからスタンドアローンのアプリケーションを生成することができます。しかし,MATLAB编译はSimulink的モデルをサポート万博1manbetxしていないため,MATLAB编译だけではSimulink的モデルを実行するアプリケーションをスタンドアローン化することはできません。

MATLAB R2020aからリリースされた万博1manbetxsimulink编译器という制品を使用するとS万博1manbetximulink的モデルを実行するためのスタンドアローンアプリを作成することができますが,その际にはSimulink的编译器に适した形でアプリケーションを设计する必要があります。详しくは万博1manbetxSimulink的编译器のドキュメントページをご确认ください。

おわりに

今回は应用设计とSimulink的モデ万博1manbetxルの基本的な连携方法についてご绍介しました。

日々の业务で的万博1manbetxSimulinkでの设定変更を面倒に感じている方,モデルを他チームに渡す际に说明事项が多くてお困りの方は
独自のシミュレーションアプリを开発することで业务效率が一気に上がるかもしれませんよ!

|

注释

要发表评论,请点击这里在您的帐户MathWorks公司签署或创建一个新的。