ライブラリに登録したマスクサブシステムにおいて、マスクエディタのコールバックから内部のブロックへの変更を加えようとする場合に、エラーとなるのはなぜですか?
2 views (last 30 days)
Show older comments
ライブラリに登録するサブシステムにおいて、サブシステム内部のブロックパラメータをマスクパラメータとして
設定し、ダイアログのコールバックを記述します。
サブシステム上でマウス右クリック
→ マスクの表示
→ パラメータペインでダイアログパラメータの設定
→ 一般的なオプションのダイアログのコールバックに、パラメータ変更の記述
例えば、本ページ下部からダウンロードできる lib ファイルのように、ダイアログのコールバックにて、
サブシステム内部の Product ブロックの「整数オーバーフローで飽和」のチェックをする記述をします。
flag = get_param(gcb,'SaturateOnIntegerOverflow')
products = find_system(gcb,'FollowLinks','on','LookUnderMasks','all','Name', 'Product1')
for idx = 1 : length(products)
set_param(products{idx},'SaturateOnIntegerOverflow',flag)
end
このように設定したブロックを Testmodel.mdl モデル上にインポートし、ブロックをマウスダブルクリックしてパラメータの設定を
行おうとしても、次のエラーが発生し、設定ができません。
複数の原因によるエラー
--> ライブラリリンク内にある 'Testmodel/lib/Product1' のパラメータを優先しようとしています。
--> SubSystem block (mask) 'Testmodel/lib/Product1' の 'MaskCallback' コールバックの実行中にエラーが発生しました。
ライブラリリンク内にある 'Testmodel/lib/Product1' のパラメータを優先しようとしています。
Accepted Answer
MathWorks Support Team
on 28 Dec 2009
この動作でエラーが発生することは、想定されている通りの動作です。マスクエディタの初期化ペインで、
「ライブラリブロックが内容を修正することを許可」の設定にチェックを入れることで、モデル上から内部の
ブロックのパラメータ設定変更反映をすることができます。
0 Comments
More Answers (0)
See Also
Categories
Find more on Author Block Masks in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!