Matlabユザコミュニティ

MATLAB & 金宝appSimulinkユ,ザ,コミュニティ,向け日本語ブログ

金宝appSimulink APIでMATLABからSimulinkを操る

こんには,テクニカルサポトエンジニアの遠藤と申します。
このブログでは以闪电前讨论の発表者として制作物について語らせていただきました。

今回はゲストブログとしての投稿ということで何について書こうか色々迷ったのですが,私は仕事では仿金宝app真软件,趣味ではMATLABをよく使っているので,その間を取った金宝app仿真软件APIにいて書いていきたいと思います。

金宝app仿真软件は基本的に仿真软件エディタ上でマウス操作によってモデルを編集していきますが,何度も同じような操作を行う場合や大規模モデルで特定の種類のブロックの設定を一度に変更するような場合など,マウス操作よりもプログラムから操作してしまった方が楽なことがあります。

このような場合に便利なのがS金宝appimulink APIです。

金宝appSimulink APIとは

金宝appMATLAB仿真软件APIとは,から仿真软件の機能を使用するためのコマンド群のことで,仿真软件のエディタ上で行っている操作の一部(ブロックの追加やパラメータの変更など)をMATLABからプログラム的に行うための機能です。

金宝appSimulink APIの基本的な使い方は”プログラムによるモデル化の基礎で紹介されています。

金宝appSimulink APIの関数一覧

プログラムによるモデル編集に,用意されている関数の一覧がまとめられています。

金宝app仿真软件を起動するコマンドからブロックを追加するコマンドまで様々なコマンドが用意されていることがわかりますが,さすがにこれらすべてを一度に解説することはできないので,今回は個人的に使用頻度の高いと思われる“パラメ,タの変更”にいて詳しく解説していきたいと思います。

ブロックのパラメ,タの変更

モデルを編集していく中で,

  • 条件によってモデル上のブロックのパラメタをmスクリプトから変更したい
  • 特定のブロックの設定を一括して変更するようなmスクリプトが欲しい

というような需要は一定数あるかと思います。

このようなスクリプトを作成するときに便利なのが

get_param
set_param

という2の関数になります。

get_param, set_paramは,ブロックやモデルのパラメータの取得および変更をするための関数です。
使うときは,

P = get_param(ブロックパス,'パラメ.タ名');
Set_param(ブロックパス,'パラメ,タ名',パラメ,タ値);

という構文を使用します。第一引数のブロックオブジェクトには,基本的に階層を含んだブロック名(模型/范围的など)を文字列で指定します。

例えば,以下のような' myModel。Slx 'というモデルがあったとします。

このモデルの获得ブロックのゲ勋章ン値を取得してみましょう。上記の構文に従うと,

>>增益= get_param('myModel/增益','增益')

によってゲ@ @ン値が取得できるはずです。実際に実行すると......

获得=
“5”

ゲ@ @ン値が文字列として取得できました。

間違いやすいポイントとして,获得ブロックのゲイン値などブロックダイアログ上で入力するパラメータは基本的に文字列となります。
そのため,取得したパラメ,タを数値に直すためにはstr2num関数などをセットで使用しましょう。

>>值= str2num(增益)
值=
5

次に,ゲaaplン値を10に変更してみましょう。Set_paramの構文に従って,

> > set_param(“myModel /增益”,“获得”,“10”);

を実行すると,

ゲ@ @ン値が変更されました。

get_paramの時と同様に,set_paramでもゲイン値は文字列として与える必要があります。
例えば次のようなコ,ドだとエラ,になってしまうので注意です。

> > set_param (myModel /增益,增益,10);%数値を直接与えるのは間違い!
パラメ,タ,'Gain'に対する增益块'Gain'内の設定が無効です

それでは,今度は获得ブロックの“乗算“の部分を”要素単位(K . * u)“から”行列(K * u)”にコマンドで変更してみましょう。

前述した通り,set_paramでパラメ,タを変更するにはパラメ,タ名が必要になります。
“乗算”のパラメ,タ名はどうやって調べればよいのでしょうか......?

このようなときに便利なのがこれはなに?」機能です。「乗算」の部分を右クリックすると、「これはなに?」というポップアップが出てきます。

これをクリックすると......

このように,パラメータの説明に加えて,パラメータ名,データ型,取り得る値などを確認することができます。
“乗算“は“乘法”というパラメータ名のようなので,以下のようなコマンドを実行してみます。

set_param(“myModel /获得”、“乘法”,“矩阵(K * u)”);

“乗算”を変更することができました!

なみに,タ名などの情報は各ブロックのヘルプドキュメントから確認することもできます。
複数のパラメ,タをまとめて確認するときなどはヘルプを見た方が楽ですね
(各ブロックのヘルプはダaapl . aapl .アログの"ヘルプ"ボタンからチェックできます)。

ダ▪▪アログにないブロックパラメ▪▪タ

前述した通り,ブロックのダアログにあるパラメタは”これはなに?」機能やヘルプドキュメントでパラメータ名や取りうる値を調べることができます。

しかし,ブロックの位置や背景色などの一般的なパラメータについてはこの方法では確認することができません。
ここで役立のが,”共通のブロックプロパティドキュメントです。

このドキュメントを見れば,設定できるパラメ,タおよびその名前を確認することができます。
例えば,先ほど例に挙げたブロックの位置は“位置”,背景色は”写成BackgroundColorであることがわかります。

ちなみに,上記の共有のブロックプロパティの中に“ObjectParametersというプロパティがあるのですが,これをget_paramすることでそのブロックのパラメータ名をすべて構造体として取得することができます。

lists = get_param('myModel/Gain','ObjectParameters');

また,各ブロックが固有で持っているパラメ,タに,いては”ブロック固有のパラメタに一覧があります。

ブロックの検索

さて,set_paramやget_paramではブロックパスを指定してパラメータを取得,変更しますが,例えば”モデル上の特定の条件を満たすブロックすべてのパラメータを変更したい”というような場合,複数のブロックを手動で指定するのは非常に手間がかかってしまいます。
せっかくプログラム的にパラメータを設定できるのですから,ブロックパスの取得も自動でやりたいですよね。

ここで登場するのがfind_systemという関数です。

Blocks = find_system(検索対象モデル,パラメ,タ名,パラメ,タ値);

という構文で,パラメ,タが特定の値となっているブロックを検索することができます。

よく検索で使うパラメータとしては,ブロックの種類が設定されている“BlockTypeパラメータがあげられます。
例えば,增益ブロックが3あるモデル" myModel2。Slx "を考えます。

このモデル上のすべてのゲインブロックを取得したい場合は,“BlockTypeパラメータが“增益”になっているブロックを検索すればよいので,

>> gainBlocks = find_system('myModel2','BlockType','Gain')

となります。実行結果は,

gainBlocks =
3×1のcell配列
{' myModel2 /获得'}
{' myModel2 / Gain1 '}
{' myModel2 / Gain2 '}

セル配列で全てのブロックパスを取得できました。

また,検索条件は複数指定できるので,乗算が“矩阵(K * u)”に設定されているゲインブロックを取得したければ,

>> gainBlocks = find_system('myModel','BlockType','增益','乘法','矩阵(K*u)');

とすれば大丈夫です。

ただし,set_paramやget_paramはブロック1に対してのみ使用可能です。
そのため,もし複数取得したブロックのパラメ,タを変えたい場合は,

i = 1:length(gainBlocks)
set_param (gainBlocks{},‘得到’,‘10’);
结束

のように,对应ル,プなどで1ず設定しなければなりません。
この部分はグラフィックスオブジェクトのsetやgetと異なるので,注意が必要です。

その他,検索オプションもいろいろあるので,詳しくは”find_systemをチェックしてみてください。

なみに,直近でクリックしたブロックはわざわざfind_systemを使用しなくても华东桐柏というコマンドで取得することができます。

>> type = get_param(gcb,'BlockType');%直近にクリックしたブロックのタescプを取得

コマンドウィンドウ上で動作を確かめる際などに便利なので,覚えておきましょう。

コンフィギュレ,ションパラメ,タ,の変更

ここまではブロックのパラメータ変更の話でしたが,get_paramやset_paramはブロックだけでなくモデルにも使うことができます。
よく使うのは,モデルのコンフィギュレ,ションパラメ,タ,の設定を変更する時です。

コンフィギュレーションパラメーターはソルバーやログ,コード生成などモデルに関する様々な設定を行うためのものです。
エディタ上では”モデル化”タブの”モデル設定“を押す,またはCtrl + Eで開くことができます。

モデルのパラメ,タにアクセスする場合はブロックパスではなくモデル名を指定します。

>>求解器= get_param('myModel2','求解器')% myModel2。SLXのソルバ,情報を取得

解算器=
“VariableStepAuto”

現在アクティブになっているモデル名はgcsというコマンドで取得できます。

>> solverType = get_param(gcs,' solverType ');%現在のモデルのソルバタプを取得

solverType =
“变步”

また,コンフィギュレ,ションパラメ,タ,でも"これはなに?機能が使用できます。
コンフィギュレ,ションパラメ,タ,は複雑なパラメ,タ名が多いので,積極的に活用していきましょう。

“コード生成“の”コードとアーティファクトのパッケージ化”は“PackageGeneratedCodeAndArtifactsというパラメータ名みたいです
(長い......)

おわりに

今回はset_param, get_paramの使い方にいて解説しました。

本当は应用设计师との連携などについても書こうかと思っていたのですが,APIの使い方だけで結構な量になってしまったのでまた別の機会にしようと思います。

普段仿金宝app真软件を起動するときにしかMATLABを触ってないという方も,これを機にMATLAB仿真软件の連携を試してみてはいかがでしょうか吗?

(おまけ)
コマンドでオブジェクトの位置を変更するって見るといこんなものを作りたくなります。

|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。