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 は、保護モデルに対して生成される難読化されたコードを指定します。また、保護モデルのユーザーにはバイナリ ファイルと生成されたコード内のヘッダーのみが表示されるように指定します。

ファイル オプション

すべて折りたたむ

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

保護モデル、その依存関係、およびハーネス モデルはプロジェクト アーカイブ (.mlproj) に保存されます。プロジェクト アーカイブを使用することで、プロジェクトを 1 つのファイル内で共有できます。対話型のプロジェクトを作成するには、プロジェクト アーカイブを開かなければなりません。

メモ

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

例: 'Project',true

データ型: logical

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

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

例: 'ProjectName','myname'

依存関係

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

データ型: char | string

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

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

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

例: 'Harness',true

データ型: logical

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

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

データ型: char | string

機能オプション

すべて折りたたむ

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

レポートを表示するには、保護モデル バッジ アイコンを右クリックして [レポートの表示] をクリックします。または、report オプションを使用して、関数 Simulink.ProtectedModel.open を呼び出します。

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

例: 'Report',true

データ型: logical

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

保護モデルの Web ビューを開くには、次のいずれかの方法を使用します。

  • 保護モデル バッジ アイコンを右クリックして、[Web ビューの表示] を選択する。

  • 関数 Simulink.ProtectedModel.open を使用する。たとえば、保護モデル sldemo_mdlref_counter の Web ビューを表示するには、次のように呼び出します。

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

  • 現在のフォルダー ブラウザーで .slxp 保護モデル ファイルをダブルクリックする。

  • 保護モデルの [ブロック パラメーター] ダイアログ ボックスで、[モデルを開く] をクリックする。

例: 'Webview',true

データ型: logical

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

  • 'Normal': 最上位モデルが 'Normal' モードで実行されている場合、保護モデルは最上位モデルの子として実行されます。

  • 'Accelerator': 最上位モデルは、'Normal''Accelerator' または 'Rapid Accelerator' モードで実行することができます。

  • 'CodeGeneration': 最上位モデルは、'Normal''Accelerator' または 'Rapid Accelerator' モードで実行し、コード生成をサポートすることができます。

  • 'HDLCodeGeneration':最上位モデルは、'Normal''Accelerator' または 'Rapid Accelerator' モードで実行し、HDL コード生成をサポートすることができます。HDL Coder™ のライセンスが必要です。

  • 'ViewOnly': この値は、コードのシミュレーションとコード生成の機能モードをオフにし、読み取り専用表示モードをオンにします。

例: 'Mode','Accelerator'

Model ブロックが生成されたコードにアクセスするときに使用されるインターフェイス。次のいずれかの値として指定します。

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

  • 'Top model':スタンドアロン インターフェイスを介したコード アクセス。保護モデルのユーザーは、保護モデルを含む Model ブロックの SIL/PIL シミュレーションを実行できます。

例: 'CodeInterface','Top model'

依存関係

システム ターゲット ファイル (SystemTargetFile) は ERT ベースのシステム ターゲット ファイル (たとえば、ert.tlc) に設定されなければなりません。Embedded Coder® のライセンスが必要です。

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

このオプションには HDL Coder のライセンスが必要です。このオプションを有効にするときは、[モード] を指定していることを確認します。CodeGeneration に設定された [モード] と共にこのオプションを true に設定し、保護モデルの C コードと HDL コードの両方のサポートを有効にできます。

シミュレーションと HDL コード生成のサポートのみを有効にし、C コード生成をサポートしない場合は、[モード]HDLCodeGeneration に設定します。[hdl] オプションを true に設定する必要はありません。

例: 'hdl',true

データ型: logical

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

保護モデルの受信者は、シミュレーション中に指定されたパラメーターを調整できます。

調整できないパラメーターは、以下の場合を除き、必要な変数としてリストされません。

  • モデル インターフェイスで使用されている。

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

  • データ ストア メモリで使用されている。

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

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

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

データ型: char | string | cell

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

例: 'Callbacks',{pmcallback_sim, pmcallback_cg}

データ型: cell

保護オプション

すべて折りたたむ

論理値として指定されている生成されたコードを難読化するためのオプションです。保護時のコード生成が有効になっているときのみ適用可能難読化は HDL コード生成ではサポートされていません。

例: 'ObfuscateCode',true

データ型: logical

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

  • 'CompiledBinaries': バイナリ ファイルおよびヘッダーのみが表示されます。

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

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

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

例: 'OutputFormat','AllReferencedHeaders'

依存関係

この引数は、Mode'Accelerator' または 'CodeGeneration' として指定した場合のみ出力に影響します。Mode'Normal' として指定した場合、MEX ファイルのみが出力パッケージに含まれます。

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

例: '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)

出力引数

すべて折りたたむ

ハーネス モデルのハンドル。Harness の値によって、double または 0 として返されます。

Harnesstrue の場合、この値はハーネス モデルのハンドルとなります。それ以外の場合は、値は 0 です。

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

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

バージョン履歴

R2012b で導入

すべて展開する