このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
保護モデルのコールバックの定義
保護モデルを作成する場合、コールバックを定義してその動作をカスタマイズできます。コールバックは、保護モデルのコードを表示、シミュレーションまたは生成するときに実行されるコードを指定します。HDL コード生成サポートが有効になっている保護モデルで保護モデルのコールバックを指定することはできません。HDL コード生成の制限事項の詳細については、HDL コード生成のための保護モデルの制限事項 (HDL Coder)を参照してください。
保護モデル ユーザーはコールバックを表示または変更できません。モデルがコールバックを使用する保護モデルを参照している場合、モデルを保護できません。
コールバックを使用する保護モデルを作成するには、以下を行います。
各コールバックの
Simulink.ProtectedModel.Callback
オブジェクトを定義します。保護モデルを作成するには、関数
Simulink.ModelReference.protect
を呼び出します。'Callbacks'
オプションを使用して、保護モデルに含めるコールバックの cell 配列を指定します。
コールバックの作成
保護モデルのコールバックを作成し、定義するには、Simulink.ProtectedModel.Callback
オブジェクトを作成します。コールバック オブジェクトは次を指定します。
コールバックに対して実行するコード。コードは、MATLAB® コマンドの文字ベクトルまたは MATLAB パス上のスクリプトになります。
コールバックをトリガーするイベント。イベントは、
'PreAccess'
または'Build'
のいずれかになります。イベントが適用される保護モデル機能。機能は、
'CODEGEN'
、'SIM'
、'VIEW'
または'AUTO'
になります。'AUTO'
を選択し、イベントが'PreAccess'
の場合、コールバックは各機能に適用されます。'AUTO'
を選択し、イベントが'Build'
の場合、コールバックは'CODEGEN'
機能にのみ適用されます。機能を選択しない場合、既定の動作は'AUTO'
になります。保護モデルのビルド プロセスをオーバーライドするオプション。このオプションは
'CODEGEN'
機能にのみ適用されます。
イベントごとおよび機能ごとに 1 つのコールバックのみ作成できます。
コールバック コードの定義
MATLAB コマンドの文字ベクトルまたは MATLAB パス上のスクリプトを使用してコールバックのコードを定義できます。コールバック コードを作成する場合、以下のガイドラインに従います。
コールバックは MATLAB コード (
.m
または.p
) を使用しなければならない。コードには保護モデル関数またはモデルの読み込みが不要な MATLAB コマンドを含めることができる。
コールバック コードは、外部ユーティリティが保護モデルが使用される環境で使用できない場合、それらのユーティリティを呼び出すことはできない。
コールバック コードは、保護モデル関数を使用しない場合、ソースの保護モデルを参照できません。
コールバック コードの関数 Simulink.ProtectedModel.getCallbackInfo
を使用して、保護モデルに関する情報を取得できます。この関数は、保護モデルの名前とサブモデルの名前を提供する Simulink.ProtectedModel.CallbackInfo
オブジェクトを返します。'CODEGEN'
機能と 'Build'
イベントに対してコールバックが指定された場合、オブジェクトはターゲット識別子とモデル コード インターフェイス タイプ ('Top model'
または 'Model reference'
) を提供します。
コールバックを使用する保護モデルの作成
この例では、コード生成のコールバックを使用する保護モデルを作成します。
MATLAB パス上に、次を含むコールバック スクリプト
pm_callback.m
を作成します。s1 = 'Code interface is: '; cbinfobj = Simulink.ProtectedModel.getCallbackInfo(... 'sldemo_mdlref_counter','Build','CODEGEN'); disp([s1 cbinfobj.CodeInterface]);
スクリプトを使用するコールバックを作成します。
openExample('sldemo_mdlref_basic'); pmCallback = Simulink.ProtectedModel.Callback('Build',... 'CODEGEN', 'pm_callback.m');
保護モデルを作成し、コール生成コールバックを指定します。
Simulink.ModelReference.protect('sldemo_mdlref_counter',... 'Mode', 'CodeGeneration','Callbacks',{pmCallback})
保護モデルをビルドします。ビルドする前に、コールバックはコード インターフェイスを表示します。
slbuild('sldemo_mdlref_basic')
参考
Simulink.ProtectedModel.Callback
| Simulink.ProtectedModel.getCallbackInfo
| Simulink.ModelReference.protect