このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
マスクの初期化
マスク エディターの [初期化] ペインで、マスク ブロックを初期化する MATLAB® コードを追加できます。これらの初期化コマンドは、モデルの読み込み時やシミュレーションの開始時などの重要なタイミングでマスク サブシステムを初期化するために Simulink® で実行されます。詳細については、初期化コマンドの実行を参照してください。
次のような場合にマスク初期化コードを追加できます。
マスク パラメーターの初期値を指定する。たとえば、パラメーター
a
の初期値を指定するには、[初期化] ペインで「a = 5
」のように入力します。子ブロックの値を指定する。以下に例を示します。
set_param('Child block Name','Parameter name','Parameter Value')
自己修正可能なマスクを作成する。詳細については、動的なマスク サブシステムを参照してください。
マスク サブシステムの初期化コードで参照できるのは、対応するローカル ワークスペース内の変数だけです。
ブロックをモデルで参照する場合やモデルにコピーする場合は、マスク ダイアログ ボックスに、指定した既定値が表示されます。マスク初期化コードは、ライブラリ ブロックまたはその他のブロック内でマスク パラメーターの既定値を変更するためには使用できません。
マスク初期化コードで使用されているマスク パラメーターが定義されていることを確認します。マスク初期化コマンドの編集時にマスク初期化のエラーが表示されますが、これはすべてのマスク パラメーター値がエラーなしで評価された場合にのみ可能です。
メモ
マスク初期化コードからサブシステムの内容を無条件で変更しないでください。このような無条件の変更は、モデル参照を使用した場合は適切に機能しません。
Subsystem ブロックのマスク初期化コードで
set_param
を使用する場合、すべての子ブロックも評価されます。Simulink.Parameter
オブジェクトをマスク パラメーターの値として使用すると、オブジェクトの値が数値の場合、マスク初期化コードでマスク パラメーターを MATLAB 変数として扱うことができます。
マスク エディターの [コード] ペインを使用して、マスク ブロックを初期化する MATLAB コマンドを追加します。
[コード] ペインには次のセクションがあります。
初期化とコールバック
パラメーター
ダイアログ変数
[ダイアログ変数] セクションには、[パラメーター] ペインで定義されたマスク ブロックのマスク パラメーターに関連付けられた変数の名前が表示されます。
このリストからパラメーター名をコピーして [初期化コード] セクションに貼り付けることができます。
このリストでダブルクリックして編集することで、マスク パラメーターの変数の名前を変更できます。
初期化コード
このセクションで初期化コマンドを追加できます。初期化コードは、MATLAB 関数およびスクリプト、演算子、マスク ワークスペースで定義済みの変数で構成された有効な MATLAB 式でなければなりません。初期化コマンドは、ベース ワークスペース変数にはアクセスできません。
結果が MATLAB コマンド ウィンドウにエコーされないように、初期化コマンドの最後にはセミコロンを付けてください。
関連する例については、次を参照してください。
マスクの初期化のベスト プラクティス
マスク初期化コマンドには、以下の規則があります。
初期化コードは、動的なマスク ダイアログ ボックス (他のコントロールの設定に行った変更によって外観やコントロールの設定が変化するダイアログ ボックス) の作成には使用しないでください。代わりに、この目的のために用意されているマスク コールバックを使用してください。詳細については、動的なマスク ダイアログ ボックスを参照してください。
モデルの読み込み時に初期化コードを使用してブロックを追加または削除しないでください。
入れ子にされたマスク サブシステムの場合、子ブロックから親ブロックに対して
set_param
を使用しないでください。子ブロックのマスクと親ブロックのマスクの両方がブロックの同じパラメーターを初期化し、予期しない結果になる可能性があります。詳細については、Unsafe Mask Callback Errorを参照してください。set_param
コマンドは、初期化している別のマスク サブシステム内のブロックで使用しないでください。子レベルのマスク サブシステムが親レベルのマスク サブシステムによって定義される記号を参照する場合に、子レベルのマスク サブシステムにあるブロックのパラメーターの設定を試みると未解決の記号によるエラーを引き起こす可能性があります。たとえば、マスク サブシステム
A
がマスク サブシステムB
を含み、このサブシステムが Gain ブロックC
を含み、そのGain
パラメーターがB
で定義されている変数を参照していると仮定します。また、サブシステムA
には次のコマンドを含む初期化コードがあると仮定します。set_param([gcb '/B/C'], 'SampleTime', '-1');
A を含むモデルのシミュレーションまたは更新を実行すると、未解決の記号によるエラーが発生します。
マスク初期化コードを使用してデータ オブジェクトを作成することはできません。データ オブジェクトは次のクラスのオブジェクトです。
Simulink.Parameter
とサブクラスSimulink.Signal
とサブクラス
同じマスク ブロックを削除する初期化コードは追加しないでください。
マスク初期化コードを使用して制御するのは、直接の子ブロックだけにしてください。
メモ
マスク初期化コードは、ブロックのコメント化やコメント解除には使用しないでください。