Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

保護モデルのコールバックの定義

保護モデルを作成する場合、コールバックを定義してその動作をカスタマイズできます。コールバックは、保護モデルのコードを表示、シミュレーションまたは生成するときに実行されるコードを指定します。HDL コード生成サポートが有効になっている保護モデルで保護モデルのコールバックを指定することはできません。HDL コード生成の制限事項の詳細については、HDL コード生成のための保護モデルの制限事項 (HDL Coder)を参照してください。

保護モデル ユーザーはコールバックを表示または変更できません。モデルがコールバックを使用する保護モデルを参照している場合、モデルを保護できません。

コールバックを使用する保護モデルを作成するには、以下を行います。

  1. 各コールバックの Simulink.ProtectedModel.Callback オブジェクトを定義します。

  2. 保護モデルを作成するには、関数 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') を提供します。

コールバックを使用する保護モデルの作成

この例では、コード生成のコールバックを使用する保護モデルを作成します。

  1. MATLAB パス上に、次を含むコールバック スクリプト pm_callback.m を作成します。

    s1 = 'Code interface is: ';
    cbinfobj = Simulink.ProtectedModel.getCallbackInfo(...
    'sldemo_mdlref_counter','Build','CODEGEN');
    disp([s1 cbinfobj.CodeInterface]);
    
  2. スクリプトを使用するコールバックを作成します。

    pmCallback = Simulink.ProtectedModel.Callback('Build',...
    'CODEGEN', 'pm_callback.m');
    
  3. 保護モデルを作成し、コール生成コールバックを指定します。

    Simulink.ModelReference.protect('sldemo_mdlref_counter',...
    'Mode', 'CodeGeneration','Callbacks',{pmCallback})
  4. 保護モデルをビルドします。ビルドする前に、コールバックはコード インターフェイスを表示します。

    slbuild('sldemo_mdlref_basic')

参考

| |

関連するトピック