3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MATLAB/SimulinkAdvent Calendar 2024

Day 8

ブロックパラメーター表示を自動化しよう(Simulink)

Last updated at Posted at 2024-12-07

はじめに

JMAABモデリングガイドラインver6.1のルールにこんなのがあります。

「db_0140 : ブロックパラメーターの表示」
ブロック注釈には、プロジェクトで定めたブロックパラメーターを表示します。

Simulinkにおいて、ブロックパラメーターを表示することは、モデル可読性にとって非常に重要な要素だと思っていますが、表示すべきブロックパラメーターは、このブロックの場合は、このパラメーターを表示!など一意に言えないと思います。
(明確にブロックパラメーターの表示を定めているプロジェクトってあるんだろうか……?)

例えば、図のようなOutportブロックでは、条件付きサブシステムの中と外とでは機能が違うため、条件付きサブシステムの中では表示させたいし、外では表示させたくありません。
enabledOutput (小) (1).png

そこで、ブロックパラメーターの既定値と異なれば表示させて、同じならば表示させないといったことや、設定したパラメータ値の変数名ではなく、その変数の値を表示したい。MATLABが日本語設定であればパラメーターは日本語、英語であれば英語表記などといったことなど、いろいろ対応してみたので、その実装に役立つパラメーターなどをいろいろ発見したので、紹介したいと思います。

ブロックパラメーター表示に役立つパラメーター

プロンプト

Outportでいえば、[ディセーブル時の出力:]や[初期出力:]といった文字列です。これは、ブロックパラメーターの「IntrinsicDialogParameters」から拾えます。
スクリーンショット 2024-11-17 183220 (小).png

値の名前

[ディセーブル時の出力:]の「保持」や「リセット」といった文字列です。
このデータは、下記フォルダの.xmlファイルから引っ張ってこれます。

% get(0,'lang')は、現在のMATLABの言語設定値
fullfile(matlabroot, 'resources', 'Simulink', get(0,'lang'), 'dialog.xml')

「パラメーター値 + _CB」という形でリスト化されてます。
スクリーンショット 2024-11-17 183829 (小).png

値の評価

例えば下図の値、モデルワークスペースとベースワークスペースのパラメーターを使用して演算しています。
スクリーンショット 2024-11-17 184254 (小).png

これは、「slResolve」という関数を使うと演算してくれます。
指定したブロックパス(モデル名などでも可)が使用可能なパラメーター(モデルワークスペース、ベースワークスペース、データディクショナリ、マスクワークスペース)を使用して評価してくれます。便利。

output = slResolve('評価する文字列', ブロックパスやブロックハンドル)

表示されるパラメーターの判定

ブロックパラメーターは、条件によって、表示されたり、されなかったりするものがあります。下記図のOutportブロックは、条件付きサブシステムの内側と外側で、表示されているパラメーターが違います。
図1 (小).png

表示されていないパラメーターは、機能しないものと考えていいはずなので、今表示されているかされてないのか判定したいはずです。これは、ブロックオブジェクトのisValidPropertyを使用して判定できます。

% Outportブロックの[ディセーブル時の出力]設定が表示されているか判定
blkobj = get_param('testModel/Outport','Object');
isvalidprop = blkobj.isValidProperty('OutputWhenDisable'); % logical値がリターン

おわりに

ここらへんの知見は、公式ドキュメントにも載っていなかったりするので、まとめてみました。これらを使用したスクリプトをマスクの初期化に入れ込んで、パラメーター表示させると、結構いい感じに機能してくれるんではないでしょうか?誰かにささってくれるといいなぁ。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?