Main Content

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

Simulink.ModelReference.protect

参照先のモデルの内容を見えなくして知的財産を隠す

説明

Simulink.ModelReference.protect(model) は、指定された model から保護モデルを作成します。保護モデルは、現在の作業フォルダーに配置されます。保護モデルの名前は元のモデルと同じです。拡張子 .slxp をもちます。

Simulink.ModelReference.protect(model,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加のオプションを使用します。

[harnessHandle] = Simulink.ModelReference.protect(model,'Harness',true) は、保護モデルのハーネス モデルを作成します。ハーネス モデルのハンドルを harnessHandle で返します。

[~ ,neededVars] = Simulink.ModelReference.protect(model) は、保護モデルで使用されるベース ワークスペース変数の名前を含む cell 配列を返します。

すべて折りたたむ

参照モデルを保護し、保護モデルを現在の作業フォルダーに配置します。

openExample('sldemo_mdlref_bus');
model= 'sldemo_mdlref_counter_bus'

Simulink.ModelReference.protect(model);

sldemo_mdlref_counter_bus.slxp という名前の保護モデルが作成されます。保護モデル ファイルは現在の作業フォルダーに配置されます。

参照モデルを保護し、保護モデルを指定したフォルダーに保存します。

openExample('sldemo_mdlref_bus');
model= 'sldemo_mdlref_counter_bus'

Simulink.ModelReference.protect(model,'Path','C:\Work');

sldemo_mdlref_counter_bus.slxp という名前の保護モデルが作成されます。この保護モデル ファイルは、C:\Work に配置されます。

参照モデルを保護し、ノーマル モードでモデル用のコードを生成し、コードを難読化します。

openExample('sldemo_mdlref_bus');
model= 'sldemo_mdlref_counter_bus'

Simulink.ModelReference.protect(model,'Path','C:\Work','Mode','CodeGeneration',...
'ObfuscateCode',true);

sldemo_mdlref_counter_bus.slxp という名前の保護モデルが作成されます。この保護モデル ファイルは、C:\Work フォルダーに配置されます。保護モデルは親モデルの子として実行されます。保護モデル用に生成されたコードは難読化されます。

参照モデルを保護し、その HDL コードをノーマル モードで生成します。

openExample('hdlcoder/ParentModelWithModelReferenceExample')
parent_model= 'hdlcoder_protected_model_parent_harness';
reference_model_to_protect = 'hdlcoder_referenced_model_gain';

Simulink.ModelReference.protect(reference_model_to_protect, ...
                        'Mode','HDLCodeGeneration')

hdlcoder_referenced_model_gain.slxp という名前の保護モデルが作成されます。この保護モデル ファイルは、親モデルおよび参照モデルと同じフォルダーに配置されます。保護モデルは親モデルの子として実行されます。

[モード]CodeGeneration に設定する共に [hdl] オプションを true に設定し、作成する保護モデルの C コード生成と HDL コード生成の両方のサポートを有効にします。

openExample('hdlcoder/ParentModelWithModelReferenceExample')
parent_model= 'hdlcoder_protected_model_parent_harness';
reference_model_to_protect = 'hdlcoder_referenced_model_gain';

Simulink.ModelReference.protect(reference_model_to_protect, ...
                        'Mode','CodeGeneration','hdl',true)

保護モデル用に生成されたコードで、バイナリ ファイルとヘッダーのみを表示することによってコードの可視性を制御します。

openExample('sldemo_mdlref_bus');
model= 'sldemo_mdlref_counter_bus'

Simulink.ModelReference.protect(model,'Mode','CodeGeneration','OutputFormat',...
'CompiledBinaries');

sldemo_mdlref_counter_bus.slxp という名前の保護モデルが作成されます。保護モデル ファイルは現在の作業フォルダーに配置されます。保護モデル用に生成されたコードでは、バイナリ ファイルとヘッダーのみが表示されます。

保護モデル用にハーネス モデルを作成して、HTML レポートを生成します。

openExample('sldemo_mdlref_bus');
modelPath= 'sldemo_mdlref_bus/CounterA'

[harnessHandle] = Simulink.ModelReference.protect(modelPath,'Path','C:\Work',...
'Harness',true,'Report',true);

sldemo_mdlref_counter_bus.slxp という名前の保護モデルが作成され、名称未定義のハーネス モデルも作成されます。この保護モデル ファイルは、C:\Work フォルダーに配置されます。このフォルダーには、HTML レポートも含まれます。ハーネス モデルのハンドルは、harnessHandle で返されます。

保護モデルを参照するモデルをシミュレートするには、ベース ワークスペースまたはデータ ディクショナリで変数の定義が必要になることがあります。たとえば、sldemo_mdlref_counter_bus モデルには、モデルのルートの入力端子と出力端子のバスを指定する変数が必要です。保護モデルを出荷する際は、必要な変数の定義を含めないとモデルを使用できません。

ヒント

必要な変数の定義を保護モデルとともに自動的にプロジェクトにパッケージ化するには、Projecttrue に設定します。

保護モデルを生成し、必要な変数を調べます。

openExample('sldemo_mdlref_bus');
model= 'sldemo_mdlref_counter_bus'

[~, neededVars] = Simulink.ModelReference.protect(model)

2 番目の出力の neededVars で受信者に送信しなければならない変数が特定されます。neededVars の値は、保護モデルに必要な変数の名前を含む cell 配列です。ただし、この cell 配列には、モデルには必要がない変数の名前も含まれる可能性があります。

保護モデルを共有する前に、neededVars を編集して、モデルに必要がない変数を削除します。必要な変数をデータ ディクショナリに保存します。

入力引数

すべて折りたたむ

モデル名。文字ベクトルまたは string スカラーとして指定します。モデルの名前、または保護されるモデルを参照する Model ブロックのパス名が含まれます。

データ型: char | string

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に配置しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して各名前と値を区切り、Name を引用符で囲みます。

例: 'Mode','CodeGeneration','OutputFormat','Binaries','ObfuscateCode',true は、保護モデルに対して生成される難読化されたコードを指定します。また、保護モデルのユーザーにはバイナリ ファイルと生成されたコード内のヘッダーのみが表示されるように指定します。

ファイル オプション

すべて折りたたむ

R2020b 以降

プロジェクト内の依存関係を収集するためのオプション。true または false として指定します。

保護モデルとともにハーネス モデルを含むサポート ファイルをプロジェクト アーカイブにパッケージ化するかどうかを指定します。サポート ファイルのタイプと数は保護されるモデルによって異なります。ベース ワークスペース定義を含む MAT ファイルや、関連する定義に間引きされたデータ ディクショナリはサポート ファイルの例です。サポート ファイルは保護されません。

  • true — 保護モデル、その依存関係、およびハーネス モデルが含まれるプロジェクト アーカイブ (.mlproj) を作成します。サポート ファイルは保護されません。プロジェクト アーカイブは簡単に共有できる単一ファイルです。対話型のプロジェクトを作成するには、プロジェクト アーカイブを開きます。

  • false — 保護モデルのみを作成します。保護モデルに依存関係がある場合は、それらを個別に共有しなければなりません。同様に、保護モデルのハーネス モデルを作成する場合は、ハーネス モデルを個別に共有しなければなりません。

例: 'Project',true

ヒント

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

依存関係

Projecttrue に設定するには、Mode を、シミュレーションをサポートする値に設定します。たとえば、Mode'Simulation' (既定) に設定します。

データ型: logical

R2020b 以降

カスタムのプロジェクト名。文字ベクトルまたは string スカラーとして指定します。

生成されたファイルが含まれるプロジェクト アーカイブの名前を指定します。アーカイブ内のプロジェクトは同じ名前を使用します。

カスタム名を指定しない場合、保護モデル名の後に _protected が付いたものがプロジェクトの既定の名前になります。

例: 'ProjectName','myname'

依存関係

ProjectName を有効にするには、Projecttrue に設定します。

データ型: char | string

ハーネス モデルを作成するためのオプション。ブール値として指定します。

保護モデルのハーネス モデルを作成するかどうかを指定します。ハーネス モデルは保護モデルのために Model ブロックで参照される分離された環境を提供します。

  • true — 保護モデルのハーネス モデルを作成します。

  • false — 保護モデルのハーネス モデルを作成しません。

ベース ワークスペース定義に依存する保護モデル用のハーネス モデルを作成するときに、Simulink® はベース ワークスペース定義を含む MAT ファイルを作成します。

ハーネス モデルは、ベース ワークスペース定義を含む MAT ファイルやデータ ディクショナリといったサポート ファイルにアクセスできなければなりません。

例: 'Harness',true

依存関係

  • Harnesstrue に設定するには、Mode を、シミュレーションをサポートする値に設定します。たとえば、Mode'Simulation' (既定) に設定します。

  • Projecttrue に設定すると、Harnesstrue に設定されます。

データ型: logical

保護モデルのフォルダー。文字ベクトルまたは string スカラーとして指定します。

例: 'Path','C:\Work'

依存関係

保護対象のモデルは、MATLAB® パス上になければなりません。

データ型: char | string

機能オプション

すべて折りたたむ

レポートを生成するためのオプション。ブール値として指定します。

レポートを表示するには、次のいずれかのアクションを実行します。

  • Simulink エディター:Model ブロックで、保護モデル バッジ アイコン を右クリックします。次に、[レポートの表示] を選択します。

  • MATLAB コマンド ウィンドウ:関数 Simulink.ProtectedModel.open を使用します。たとえば、sldemo_mdlref_counter という名前の保護モデルのレポートを表示するには、次のコマンドを入力します。

    Simulink.ProtectedModel.open('sldemo_mdlref_counter','report');

レポートはHTML 形式で生成されます。保護モデルの環境、機能、およびインターフェイスに関する情報が含まれています。

例: 'Report',true

依存関係

Reporttrue に設定するには、Mode を、シミュレーションをサポートする値に設定します。たとえば、Mode'Simulation' (既定) に設定します。

データ型: logical

読み取り専用 Web ビューを含めるためのオプション。ブール値として指定します。

受信者が Web ブラウザーで表示できる Simulink モデルの対話的な表現を共有するかどうかを指定します。モデルのこの読み取り専用 Web ビューには、モデルのコンテンツおよびブロック パラメーターが含まれます。

  • true — 保護するモデルの Web ビューを共有します。

  • false — 保護するモデルの Web ビューを共有しません。

保護モデルの Web ビューを開くには、次のいずれかのアクションを実行します。

  • 現在のフォルダー ブラウザー:保護モデル ファイル (.slxp) をダブルクリックします。

  • MATLAB コマンド ウィンドウ:関数 Simulink.ProtectedModel.open を使用します。たとえば、sldemo_mdlref_counter という名前の保護モデルの Web ビューを表示するには、次のコマンドを入力します。

    Simulink.ProtectedModel.open('sldemo_mdlref_counter','webview');

例: 'Webview',true

依存関係

モデルの読み取り専用 Web ビューを作成するには、Simulink Report Generator™ ライセンスが必要です。

データ型: logical

モデル保護モード。次のいずれかの値として指定します。

  • 'Simulation' (R2023b 以降):保護モデルを参照するモデルをノーマル、アクセラレータまたはラピッド アクセラレータのモードで実行できます。

    R2023b より前: 'Simulation' の代わりに 'Accelerator' を使用します。

  • 'CodeGeneration':保護モデルを参照するモデルをノーマル、アクセラレータ、ラピッド アクセラレータ、またはエクスターナル モードで実行でき、そのモデルは C および C++ コード生成をサポートできます。このオプションには Simulink Coder™ ライセンスが必要です。

  • 'HDLCodeGeneration':保護モデルを参照するモデルをノーマル、アクセラレータまたはラピッド アクセラレータのモードで実行でき、そのモデルは HDL コード生成をサポートできます。このオプションには HDL Coder™ のライセンスが必要です。

  • 'ViewOnly':保護モデルは読み取り専用 Web ビューのみをサポートします。保護モデルはシミュレーションまたはコード生成はサポートしません。このオプションには Simulink Report Generator ライセンスが必要です。

モデルの階層構造におけるシミュレーション モードについては、モデルの階層構造内のシミュレーション モードの選択を参照してください。

例: 'Mode','Simulation'

生成コードのインターフェイス。次のいずれかの値として指定します。

  • モデル参照 — モデル参照 Simulink Coder ターゲットをビルドします。このコードは、モデルの階層構造の一部として参照モデルから生成されます。コード生成では次のコマンドを使用します。

    slbuild('model','ModelReferenceCoderTarget')
  • 最上位モデル — 現在のモデル コンフィギュレーション設定を使用して、指定したモデルのスタンドアロンの Simulink Coder バイナリ実行可能ファイルをビルドします。このインターフェイスでは、参照モデルのモデル参照コーダー ターゲットもビルドします。コードはスタンドアロンのコード インターフェイスを使用して最上位モデルから生成されます。コード生成では次のコマンドを使用します。

    slbuild('model','StandaloneCoderTarget')

指定する値によって、ソフトウェアインザループ (SIL) シミュレーションとプロセッサインザループ (PIL) シミュレーションが保護モデルの生成コードを展開する方法が決まります。

  • モデル参照 — ソフトウェアは、参照モデルを使用するより大きなアプリケーションの一部として、生成コードを展開します。

  • 最上位モデル — ソフトウェアは、スタンドアロン アプリケーションとして、生成コードを展開します。

SIL/PIL シミュレーションでは、保護モデルのコードを検証できます。

保護モデルを参照するモデルのコード生成をサポートするために、[モデル参照] を指定します。

コード インターフェイスにかかわらず、保護モデルのシミュレーションをアクセラレータ モードで実行できます。

例: 'CodeInterface','Top model'

依存関係

[システム ターゲット ファイル] コンフィギュレーション パラメーターは、ERT ベースのシステム ターゲット ファイル (たとえば、ert.tlc) に設定されなければなりません。このオプションには Embedded Coder® のライセンスが必要です。

HDL コードを生成するためのオプション。ブール値として指定します。

保護モデルでシミュレーション、C および C++ コード生成、HDL コード生成をサポートするために、Mode'CodeGeneration' に、hdltrue に設定します。

例: 'hdl',true

ヒント

保護モデルでシミュレーションおよび HDL コード生成をサポートし、C および C++ コード生成はサポートしないようにするには、Mode'HDLCodeGeneration' に設定します。hdltrue に設定する必要はありません。

依存関係

  • HDL コードを生成するには、HDL Coder ライセンスが必要です。

  • この引数は、Mode'CodeGeneration' に設定した場合のみ出力に影響します。

データ型: logical

R2022a 以降

シミュレーションの調整可能なパラメーター。'None'{}'All'、string 配列、または文字ベクトルの cell 配列として指定します。

受信者によるシミュレーション中の調整を可能にするパラメーターを指定します。調整可能なパラメーターについては、ブロック パラメーター値の調整と試行を参照してください。

1 つ以上の保護モデルを参照するモデルを保護する場合は、各参照保護モデルの調整可能なパラメーターを、保護している親モデルに対しても調整可能として指定する必要があります。

保護モデルの調整可能なパラメーターのリストを取得するには、関数 Simulink.ProtectedModel.getTunableParameters を使用します。

例: 'TunableParameters',{'param1','param2'}

例: TunableParameters=["param1","param2"]

データ型: char | string | cell

保護モデルのコールバックを指定するためのオプション。Simulink.ProtectedModel.Callback オブジェクトの cell 配列として指定します。

例: 'Callbacks',{pmcallback_sim, pmcallback_cg}

データ型: cell

保護オプション

すべて折りたたむ

論理値として指定されている生成されたコードを難読化するためのオプションです。

例: 'ObfuscateCode',true

依存関係

このオプションは、Mode'CodeGeneration' に設定した場合のみ適用されます。難読化は HDL コード生成ではサポートされていません。

データ型: logical

保護されたコードの可視性。次のいずれかの値として指定します。

  • 'CompiledBinaries' — 生成されたコードのコンパイル済みバイナリのみ含みます。バイナリ ファイルおよびヘッダーが表示されます。

  • 'MinimalCode' — 選択したビルド設定でコードをビルドするために必要な最小限のヘッダー ファイルのみを含めます。ビルド フォルダーのコードが表示されます。受信者は、保護モデルのレポート内のコードを検証し、目的に応じてそれを再コンパイルできます。

  • 'AllReferencedHeaders' — インクルード パスにあるヘッダー ファイルを含めます。ビルド フォルダーのコードが表示されます。また、このコードによって参照されるヘッダーも表示されます。

この引数は、保護モデル用に生成されたコードのどの部分がユーザーに表示されるかを決定します。

例: 'OutputFormat','AllReferencedHeaders'

依存関係

この引数は、Mode'Simulation''Accelerator'、または 'CodeGeneration' に設定した場合のみ出力に影響します。

保護モデルを暗号化するためのオプション。ブール値として指定します。このオプションは、保護に際してパスワードを指定した場合に、または以下の関数を使用することにより適用されます。

例: 'Encrypt',true

データ型: logical

保護モデルにデジタル証明書で署名するためのオプション。デジタル証明書を指定する文字ベクトルまたは string スカラーとして指定します。証明書ファイルがパスワードで保護されている場合は、証明書を使用する前に、関数 Simulink.ModelReference.ProtectedModel.setPasswordForCertificate を使用してパスワードを指定します。

例: 'Sign','my_certificate.pfx'

データ型: char | string

変更可能な保護モデルを作成するためのオプション。ブール値として指定します。

このオプションを使用するには、次の手順に従います。

例: 'Modifiable',true

データ型: logical

関数ハンドルとして指定された保護モデル ファイル用に後処理関数を追加するオプションです。

この関数は Simulink.ModelReference.ProtectedModel.HookInfo オブジェクトを入力変数として受け入れます。このオブジェクトはソース コード ファイルおよび保護モデルの作成中に生成されるその他のファイルについて情報を提供します。変更してはいけないエクスポート済みシンボルについても情報を提供します。保護モデルをパッケージ化する前に後処理関数が呼び出されます。

最上位モデル インターフェイスをもつ保護モデルの場合、Simulink.ModelReference.ProtectedModel.HookInfo オブジェクトはエクスポート済みシンボルについての情報を提供できません。

例: 'CustomPostProcessingHook',@(protectedMdlInf)myHook(protectedMdlInf)

出力引数

すべて折りたたむ

ハーネス モデルのハンドル。double として返されます。モデルの保護でハーネス モデルが作成されない場合、またはハーネス モデルがプロジェクト アーカイブにパッケージ化される場合、戻り値は 0 になります。

モデルの保護の後に開いているハーネス モデルを作成するには、Harnesstrue に、Projectfalse (既定値) に設定します。

保護モデルで使用されるベース ワークスペース変数の名前。cell 配列として返されます。

cell 配列には以下が含まれます。

  • 調整可能なパラメーター

  • モデル インターフェイスで使用されるパラメーター

  • バス オブジェクト、列挙型、値の型など、データ型の一部を指定するパラメーター

  • データ ストア メモリで使用されるパラメーター

cell 配列には保護モデルが使用しない変数も含めることができます。

バージョン履歴

R2012b で導入

すべて展開する