Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

コンテンツを隠すためのモデルの保護

サードパーティに知的所有権を開示せずにモデルを共有する場合は、モデルを保護してください。保護モデルの作成時に、元のモデルの実装の詳細を参照モデルにコンパイルすることで隠します。保護モデルには、指定するオプション機能をサポートするための派生ファイルが含まれます。

モデルを保護すると、保護モデルのユーザーに以下を許可できます。

  • モデルの内容およびブロック パラメーターを含む、モデルの読み取り専用 Web ビューを開く。

  • モデルのシミュレーションをアクセラレータ (既定)、ラピッド アクセラレータおよびノーマル モードで実行する。

  • 保護モデルを含むモデルのコードを生成する。

  • 保護モデルを含むモデルの HDL コードを生成する。HDL コード生成サポートを使用した保護モデル作成の詳細については、保護モデルを作成し内容を隠して HDL コードを生成する (HDL Coder)を参照してください。

  • Embedded Coder® があり、モデルの ERT ベースのシステム ターゲット ファイルを指定する場合、スタンドアロン インターフェイスを介して保護モデルのコードを生成する。

任意で各オプションをパスワード保護できます。これらのいずれかのオプションのパスワード保護を選択する場合、ソフトウェアでは AES-256 暗号化を使用してサポート ファイルが保護されます。

保護モデルを作成するときは、次の点に留意してください。

  • Simulink® は、モデルの保護バージョンを作成し、拡張子が .slxp で、ソース モデルと同じ名前のファイルで保存します。

  • 拡張子が .slx の元のモデル ファイルは変更されません。Model ブロックを介してモデルを保護する場合、Model ブロックは変更されません。

  • 必要に応じて、Simulink は、保護モデルを含むプロジェクト アーカイブ (.mlproj)、保護モデルのハーネス モデル、および追加のサポート ファイルを作成します。

参照モデルから保護モデルを作成するには、そのモデルを参照する Model ブロックを選択し、次のいずれかのオプションを使用します。

  • Simulink ツールストリップの [Model ブロック] タブで [保護] ボタンをクリックします。

  • Simulink ツールストリップの [C コード] タブで [共有] ボタンの矢印をクリックし、[選択したモデル ブロックから保護されたモデルを生成] を選択します。

現在のモデルから保護モデルを作成するには、次のいずれかのオプションを使用します。

  • Simulink ツールストリップの [シミュレーション] タブで [保存] ボタンの矢印をクリックし、[保護されたモデル] を選択します。

  • Simulink ツールストリップの [C コード] タブで [共有] ボタンの矢印をクリックし、[保護されたモデルの生成] を選択します。

保護モデルをプログラムで作成するには、関数 Simulink.ModelReference.protect を使用します。

保護モデルにベース ワークスペース定義またはデータ ディクショナリなどの追加のサポート ファイルが必要である場合、共有する際にそれらのファイルをモデルに含めます。詳細については、保護モデルのパッケージ化と共有を参照してください。

この例では、読み取り専用表示、シミュレーションまたはコード生成用に保護モデルを参照モデルから作成する方法を示します。

親モデルの準備

元の参照モデルを参照するために、Model ブロックを親モデルで設定します。この手順により、Model ブロックが保護モデルの作成時に保護参照になりません。

  1. 保護するモデルを参照する親モデルを開きます。この例では、モデル sldemo_mdlref_basic を開きます。

  2. ワークフローを実行するには、保護するモデル sldemo_mdlref_counter のローカル コピーを作成します。次に、親モデル sldemo_mdlref_basic のローカル コピーを作成します。親モデルは、参照モデルと同じフォルダーに保存しなければなりません。

  3. ローカルに保存した sldemo_mdlref_basic モデルを開きます。Model ブロックである CounterACounterB および CounterC が、ローカルに保存した sldemo_mdlref_counter モデルを参照していることを確認します。

  4. Model ブロックについて、[ブロック パラメーター] ダイアログ ボックスを開き、[モデル名] フィールドで拡張子 .slx を指定します。モデルと保護モデルの両方が同じフォルダーに存在するときは、.slxp.slx に優先されます。拡張子を指定しないと、モデルの元の Model ブロックは元のモデルではなく保護モデルを参照します。[OK] をクリックします。

参照されるモデルの保護

  1. 3 つの Model ブロックのいずれかをクリックします。Simulink ツールストリップの [Model ブロック] タブで、[保護] をクリックします。

  2. [保護されたモデルを作成] ダイアログ ボックスで、[シミュレーション] チェック ボックスと [生成されたコードを使用] チェック ボックスをオンにします。これらのオプションにより、保護モデルのユーザーは、保護モデルを参照するモデルのコードをシミュレーションして生成できます。保護されたモデルの機能をパスワード保護する場合は、4 文字以上のパスワードを入力します。各オプションには、一意なパスワードを指定できます。

  3. Embedded Coder があり、モデルに対して ERT ベースのシステムのターゲット ファイル (たとえば、ert.tlc) を指定している場合、[コード インターフェイス] フィールドが表示されます。

    この例では、sldemo_mdlref_basic が ERT ベースのシステム ターゲット ファイルを指定しないため、[保護モデルの作成] ダイアログ ボックスの [コード インターフェイス] オプションを使用できません。

    [コード インターフェイス] ドロップダウン リストから、次のオプションのいずれかを選択します。

    • モデル参照 — モデル参照コード インターフェイスを介してコード アクセスを指定します。これにより、モデル参照階層内の保護されたモデルが使用できるようになります。保護モデルのユーザーは、保護モデルを含む親モデルからコードを生成できます。ユーザーは保護モデルを含む Model ブロックの SIL/PIL シミュレーションを実行できます。

    • 最上位モデル — スタンドアロン インターフェイスを介してコード アクセスを指定します。保護モデルのユーザーは、保護モデルを含む Model ブロックの SIL/PIL シミュレーションを実行できます。

  4. [コンテンツ タイプ] リストから [難読化されたソース コード] を選択し、保護モデルのソース コードの目的とロジックを隠します。モデルの保護オプションの詳細については、コンテンツ タイプを参照してください。

  5. HDL Coder™ がある場合、[生成された HDL コードを使用] チェック ボックスをオンにすると、保護モデルを参照するモデルの HDL コードを生成できます。保護モデルのこの機能をパスワード保護する場合、8 文字以上を指定しなければなりません。保護モデルの HDL ソース コードを難読化することはできません。

    この例では、参照モデル sldemo_mdlref_counterdouble データ型を使用します。[HDL コード生成][浮動小数点] タブで、[ライブラリ]Native Floating Point に、[レイテンシ手法]ZERO に設定します。保護モデルを作成し内容を隠して HDL コードを生成する (HDL Coder)も参照してください。

  6. [保存先フォルダー] ボックスで、保護モデルのフォルダー パスを指定します。既定値は、現在の作業フォルダーです。

  7. 保護モデルを使用してサポート ファイルを自動的に収集、作成、およびパッケージ化するには、[コンテンツ][保護されたモデル (.slxp) とプロジェクト内の依存関係] に設定します。

    メモ

    プロジェクトを共有する前に、プロジェクトに必要なサポート ファイルが含まれているかどうか確認してください。サポート ファイルが不足している場合は、関連するハーネス モデルのコードをシミュレーションまたは生成することで、それらを特定できます。不足している依存関係をプロジェクトに追加し、必要に応じてハーネス モデルを更新します。

  8. [コンテンツ][保護されたモデル (.slxp) とプロジェクト内の依存関係] に設定すると、[保護されたモデル用にハーネス モデルを作成する] チェック ボックスがオンになります。ハーネス モデルがプロジェクトに含まれており、保護モデルを参照する Model ブロックに対して分離された環境を提供します。

  9. 保護モデルをさらにカスタマイズするには、以下を行います。

  10. [作成] をクリックします。

    保護モデル、ハーネス モデル、サポート ファイルを含むプロジェクト アーカイブ (.mlproj) が、指定された保存先フォルダーに表示されます。保護モデルをテストするには、現在のフォルダー ブラウザーでプロジェクト アーカイブをダブルクリックし、保存先フォルダーを指定してその内容を抽出します。または、プロジェクト アーカイブを右クリックして [ここに抽出] をクリックします。プロジェクトが開き、抽出されたファイルが、プロジェクト アーカイブに従って名前が付けられた新しいフォルダーに入ります。

  11. Simulink エディターで保護モデルを作成する場合、保護モデルのレポートが生成され、保護モデルの一部として含まれます。この例で、保護モデルのレポートを表示するには、保護モデルをダブルクリックするか、ハーネス モデルのブロック上の保護モデルのバッジ アイコンを右クリックし、[レポートの表示] を選択します。

    このレポートには以下のものが含まれています。

    • [Summary]。次のテーブルが含まれます。

      • [環境]。保護モデルの作成に使用された Simulink のバージョン、その他の製品のバージョンおよびプラットフォームなどが記載されます。

      • [Supported functionality]。保護モデルがサポートする機能ごとに、[オン][オフ]、または [パスワード保護でオン] を報告します。複数のターゲットに対して保護モデルを設定する場合、この表にはサポートされているターゲットのリストが含まれます。

    • [Interface Report]。入出力仕様、エクスポート関数の情報、インターフェイス パラメーターおよびデータ ストアなど、モデル インターフェイス情報が記載されます。

    関数 Simulink.ModelReference.protect を使用するときにレポートを生成するには、'Report'true に設定します。

  12. 保護モデルをテストし、それを元のモデルと比較できます。詳細については、保護モデルのテストを参照してください。

  13. モデルの階層構造内の保護モデルを使用するには、ハーネス モデルに含まれるような Model ブロックを介して保護モデルを参照します。保護モデルを参照する Model ブロックの [シミュレーション モード] は、[アクセラレータ] に設定されます。このモードは変更できません。詳細については、サードパーティからの保護モデルの参照を参照してください。

保護モデルの要件と制限

保護モデルを作成するときは、次の要件を考慮してください。

  • 保護モデルを作成するには、Simulink Coder™ または HDL Coder のライセンスを所有していなければなりません。

  • モデルは MATLAB® パス上で使用可能でなければなりません。

  • モデルは保存されていない変更をもつことはできません。

  • モデルは直接的にも間接的にもインラインでない S-Function は使用できません。

  • モデルは保護時にアクティブなコンフィギュレーションを使用します。保護モデルのコンフィギュレーションを変更することはできません。

  • モデルにバリアントが含まれている場合、保護モデルには保護時にアクティブなバリアントのみが含まれます。

  • モデル保護プロセスではコールバックは保存されません。保護モデルで使用するコールバックの作成の詳細については、保護モデルのコールバックの定義を参照してください。

  • 保護モデルの名前を変更したり、サフィックスを変更したりしないでください。そのようにすると、元の名前やサフィックスに戻すまで、モデルは使用できなくなります。

  • モデルおよびそれが参照するモデルには、一意の名前を使用します。ある保護モデルが、異なる保護モデルまたは別の保護モデルの階層内にある異なるモデルと同じ名前のモデルを参照する場合、保護モデルの使用に制限事項があります。最上位モデルが、そのような名前の競合がある 2 つの保護モデルを参照している場合、最上位モデルを保護したり、最上位モデルのコードを生成したり、最上位モデルのシミュレーションをソフトウェアインザループ (SIL)、プロセッサインザループ (PIL) またはラピッド アクセラレータ モードで実行したりすることはできません。

モデルは、モデル参照の要件と制限に記載されている要件も満たしていなければなりません。

コード生成の要件と制限

コード生成をサポートする保護モデルを作成するには、モデルは以下の要件を満たしていなければなりません。

  • 保護モデルは、ノーマル モード、アクセラレータ モード、ソフトウェアインザループ (SIL) モード、またはプロセッサインザループ (PIL) モードと単一のターゲットを使用しなければなりません。

  • [コード生成]、[検証]、[関数の実行時間を計測する] チェック ボックスを選択しないでください。モデルを保護しているときにこのオプションを選択すると、ソフトウェアによってこのパラメーターはオフになり、警告が表示されます。

  • 保護された参照モデルは、パスワード保護を使用しないコード生成をサポートしなければなりません。

  • 保護されたモデルは、保護された各参照モデルの [コンテンツ タイプ] と互換性がなければなりません。次の表に、互換性に関する情報を示します。

    コード生成のコンテンツ タイプの互換性

    保護された親モデルのコンテンツ タイプ互換する保護された参照モデルのコンテンツ タイプ
    バイナリ
    • バイナリ

    • 難読化されたソース コード

    'ObfuscateCode''false' に設定されたバイナリ
    • バイナリ

    • 'ObfuscateCode''false' に設定されたバイナリ

    • 難読化されたソース コード

    • 読み取り可能なソース コード

    難読化されたソース コード
    • 難読化されたソース コード

    読み取り可能なソース コード
    • 難読化されたソース コード

    • 読み取り可能なソース コード

    保護された親モデルと保護された参照モデルの [コンテンツ タイプ] が一致しない場合、コード生成ではさらに高いレベルの保護を提供する [コンテンツ タイプ] が適用されます。たとえば、[バイナリ] に設定された保護された親モデルは、[難読化されたソース コード] に設定されている保護された参照モデルに対して [バイナリ] を生成します。[読み取り可能なソース コード] に設定された保護された親モデルは、[難読化されたソース コード] に設定された保護された参照モデルに対して [難読化されたソース コード] を生成します。

保護モデルを含むモデルのコードの生成時のエラーを防ぐには、以下を実行します。

  • 保護モデル名は、同じモデル参照階層内の他のモデル名から一意でなければなりません。

  • インターフェイスが一致しなければなりません。

  • パラメーターが互換しなければなりません。

入れ子にされた保護モデルの要件と制限

ご使用の保護モデルが保護されている別のモデルによって参照されている場合、ご使用のモデルは次を満たさなければなりません。

  • アクセラレータ モードをサポートする。ユーザーは、[保護モデルの作成] ダイアログ ボックスで [シミュレーション] を選択するか、関数 Simulink.ModelReference.protect を使用して 'Mode''Accelerator' または 'CodeGeneration' に設定しなければなりません。

  • 既定の 'CodeInterface' 設定 'Model reference' を使用する。

  • シミュレーションにはパスワード保護を使用しない。

  • コールバックがない。

  • 保護された親モデルがパスワード保護を使用せずにサポートする操作をサポートする。

  • 保護されている親モデルがコード生成をサポートしている場合、保護されている親モデルの [コンテンツ タイプ] と互換性のある [コンテンツ タイプ] を使用する。互換性のある [コンテンツ タイプ] のオプションのリストについては、前の節の表を参照してください。

  • 異なる保護モデルまたは別の保護モデルの階層内にある異なるモデルと同じ名前のモデルを参照しない。

保護するモデルが保護モデルを参照している場合、保護参照モデルは前述の要件を満たさなければなりません。

メモ

[生成された HDL コードを使用] オプションが選択された状態で作成する保護モデルにより、暗号化およびシミュレーションと保護モデルを参照するモデルからの HDL コード生成のサポートが可能です。HDL ソース コードを難読化したり、コールバックを指定したり、このオプションが有効になっている入れ子にされた保護モデルを使用したりすることはできません。HDL コード生成の制限事項の詳細については、HDL コード生成のための保護モデルの制限事項 (HDL Coder)を参照してください。

関連するトピック