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

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

万博1manbetxSimulinkAPIで MATLABから 模拟を操る

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

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

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

このような場合に便利なのが模万博1manbetx型APIです。

万博1manbetxSimulinkAPIとは

万博1manbetxSimulinkAPIとは、MATLABから 模拟の機能を使用するためのコマンド群のことで、模拟のエディタ上で行っている操作の一部(ブロックの追加やパラメータの変更など)をMATLABからプログラム的に行うための機能です。

万博1manbetx仿真软件APIの基本的な使い方は”プログラムによるモデル化の基礎」で紹介されています。

万博1manbetxSimulinkAPIの関数一覧

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

万博1manbetx模拟を起動するコマンドからブロックを追加するコマンドまで様々なコマンドが用意されていることがわかりますが、さすがにこれらすべてを一度に解説することはできないので、今回は個人的に使用頻度の高いと思われる「パラメータの変更」について詳しく解説していきたいと思います。

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

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

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

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

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

get_param
设置参数

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

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

p=获取参数(ブロックパス, 'パラメータ名');
设置参数(ブロックパス, 'パラメータ名', パラメータ値);

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

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

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

>>增益=获取参数('myModel/gain','gain')

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

获得=
'5'

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

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

>>值=str2num(增益)
价值观=
5.

次に、ゲイン値を 10に変更してみましょう。设置参数の構文に従って、

>>设置参数('myModel/Gain','Gain','10');

を実行すると,

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

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

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

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

前述した通り、设置参数でパラメータを変更するにはパラメータ名が必要になります。
「乗算」のパラメータ名はどうやって調べればよいのでしょうか……?

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

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

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

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

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

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

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

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

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

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

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

列表= get_param(“myModel /获得”、“ObjectParameters”);

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

ブロックの検索

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

ここで登場するのが查找系统という関数です。

块=查找系统(検索対象モデル, パラメータ名, パラメータ値);

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

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

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

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

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

gainBlocks =
3×1 の 单间牢房配列
{' myModel2 /获得'}
{'myModel2/Gain1'}
{'myModel2/Gain2'}

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

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

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

とすれば大丈夫です。

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

对于i=1:长度(Gainblock)
set_param (gainBlocks{},‘得到’,‘10’);
终止

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

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

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

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

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

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

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

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

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

>> solver = get_param('myModel2',' solver ')%myModel2.slxのソルバー情報を取得

解算器=
“可变步进自动”

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

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

溶剂型=
“变步”

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

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

おわりに

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

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

普段 万博1manbetx模拟を起動するときにしか MATLABを触ってないという方も、これを機に MatlabSimulinkの連携を試してみてはいかがでしょうか?

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

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。