Simulink.ModelReference.protect
参照先のモデルの内容を見えなくして知的財産を隠す
構文
説明
Simulink.ModelReference.protect(
は、指定された model
)model
から保護モデルを作成します。保護モデルは、現在の作業フォルダーに配置されます。保護モデルの名前は元のモデルと同じです。拡張子 .slxp
をもちます。
Simulink.ModelReference.protect(
は、1 つ以上の名前と値のペアの引数で指定された追加のオプションを使用します。model
,Name,Value
)
[
は、保護モデルのハーネス モデルを作成します。ハーネス モデルのハンドルを harnessHandle
] = Simulink.ModelReference.protect(model
,'Harness
',true)harnessHandle
で返します。
[~ ,
は、保護モデルで使用されるベース ワークスペース変数の名前を含む cell 配列を返します。neededVars
] = Simulink.ModelReference.protect(model
)
例
参照モデルの保護
参照モデルを保護し、保護モデルを現在の作業フォルダーに配置します。
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 コードの生成
参照モデルを保護し、その 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
モデルには、モデルのルートの入力端子と出力端子のバスを指定する変数が必要です。保護モデルを出荷する際は、必要な変数の定義を含めないとモデルを使用できません。
ヒント
必要な変数の定義を保護モデルとともに自動的にプロジェクトにパッケージ化するには、Project
を true
に設定します。
保護モデルを生成し、必要な変数を調べます。
openExample('sldemo_mdlref_bus'); model= 'sldemo_mdlref_counter_bus' [~, neededVars] = Simulink.ModelReference.protect(model)
2 番目の出力の neededVars
で受信者に送信しなければならない変数が特定されます。neededVars
の値は、保護モデルに必要な変数の名前を含む cell 配列です。ただし、この cell 配列には、モデルには必要がない変数の名前も含まれる可能性があります。
保護モデルを共有する前に、neededVars
を編集して、モデルに必要がない変数を削除します。必要な変数をデータ ディクショナリに保存します。
入力引数
model
— モデル名
文字ベクトル | string スカラー
モデル名。文字ベクトルまたは string スカラーとして指定します。モデルの名前、または保護されるモデルを参照する Model ブロックのパス名が含まれます。
データ型: char
| string
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に配置しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して各名前と値を区切り、Name
を引用符で囲みます。
例: 'Mode','CodeGeneration','OutputFormat','Binaries','ObfuscateCode',true
は、保護モデルに対して生成される難読化されたコードを指定します。また、保護モデルのユーザーにはバイナリ ファイルと生成されたコード内のヘッダーのみが表示されるように指定します。
Project
— プロジェクト内の依存関係を収集するためのオプション
false
(既定値) | true
プロジェクト内の依存関係を収集するためのオプション。true
または false
として指定します。
保護モデル、その依存関係、およびハーネス モデルはプロジェクト アーカイブ (.mlproj
) に保存されます。プロジェクト アーカイブを使用することで、プロジェクトを 1 つのファイル内で共有できます。対話型のプロジェクトを作成するには、プロジェクト アーカイブを開かなければなりません。
メモ
プロジェクトを共有する前に、プロジェクトに必要なサポート ファイルが含まれているかどうか確認してください。サポート ファイルが不足している場合は、関連するハーネス モデルのコードをシミュレーションまたは生成することで、それらを特定できます。不足している依存関係をプロジェクトに追加し、必要に応じてハーネス モデルを更新します。
例: 'Project',true
データ型: logical
ProjectName
— カスタム プロジェクト名
文字ベクトル | string スカラー
カスタムのプロジェクト名。文字ベクトルまたは string スカラーとして指定します。
カスタム プロジェクト名を指定しない場合、保護モデル名の後に _protected
が付いたものがプロジェクトの既定の名前になります。
例: 'ProjectName','myname'
依存関係
ProjectName
を有効にするには、Project
を true
に設定します。
データ型: char
| string
Harness
— ハーネス モデルを作成するためのオプション
false (既定値) | true
ハーネス モデルを作成するためのオプション。ブール値として指定します。
ベース ワークスペース定義に依存する保護モデル用のハーネス モデルを作成するときに、Simulink® はベース ワークスペース定義を含む MAT ファイルを作成します。
ハーネス モデルは、ベース ワークスペース定義を含む MAT ファイルやデータ ディクショナリといったサポート ファイルにアクセスできなければなりません。
例: 'Harness',true
データ型: logical
Path
— 保護モデル用のフォルダー
現在の作業フォルダー (既定値) | 文字ベクトル | string スカラー
保護モデルのフォルダー。文字ベクトルまたは string スカラーとして指定します。
例: 'Path','C:\Work'
データ型: char
| string
Report
— レポートを生成するためのオプション
false
(既定値) | true
レポートを生成するためのオプション。ブール値として指定します。
レポートを表示するには、保護モデル バッジ アイコンを右クリックして [レポートの表示] をクリックします。または、report
オプションを使用して、関数 Simulink.ProtectedModel.open
を呼び出します。
レポートはHTML 形式で生成されます。保護モデルの環境、機能、およびインターフェイスに関する情報が含まれています。
例: 'Report',true
データ型: logical
Webview
— 保護モデルの読み取り専用 Web ビューを含めるためのオプション
false
(既定値) | true
保護モデルの読み取り専用 Web ビューを含めるオプション。ブール値として指定します。
保護モデルの Web ビューを開くには、次のいずれかの方法を使用します。
保護モデル バッジ アイコンを右クリックして、[Web ビューの表示] を選択する。
関数
Simulink.ProtectedModel.open
を使用する。たとえば、保護モデルsldemo_mdlref_counter
の Web ビューを表示するには、次のように呼び出します。Simulink.ProtectedModel.open('sldemo_mdlref_counter', 'webview');
現在のフォルダー ブラウザーで
.slxp
保護モデル ファイルをダブルクリックする。保護モデルの [ブロック パラメーター] ダイアログ ボックスで、[モデルを開く] をクリックする。
例: 'Webview',true
データ型: logical
Mode
— モデル保護モード
'Normal'
(既定値) | 'Accelerator'
| 'CodeGeneration'
| 'HDLCodeGeneration'
| 'ViewOnly'
モデル保護モード。次のいずれかの値として指定します。
'Normal'
:最上位モデルが'Normal'
モードで実行されている場合、保護モデルは最上位モデルの子として実行されます。'Accelerator'
:最上位モデルは、'Normal'
、'Accelerator'
または'Rapid Accelerator'
モードで実行することができます。'CodeGeneration'
:最上位モデルは、'Normal'
、'Accelerator'
または'Rapid Accelerator'
モードで実行し、コード生成をサポートすることができます。'HDLCodeGeneration'
:最上位モデルは、'Normal'
、'Accelerator'
または'Rapid Accelerator'
モードで実行し、HDL コード生成をサポートすることができます。HDL Coder™ のライセンスが必要です。'ViewOnly'
:この値は、コードのシミュレーションとコード生成の機能モードをオフにし、読み取り専用表示モードをオンにします。
例: 'Mode','Accelerator'
CodeInterface
— 生成コードが Model ブロックによりアクセスされる場合に経由するインターフェイス
'Model reference'
(既定値) | 'Top model'
Model ブロックが生成されたコードにアクセスするときに使用されるインターフェイス。次のいずれかの値として指定します。
'Model reference'
:モデル参照コード インターフェイスを介したコード アクセスにより、モデル参照階層内で保護モデルが使用できるようになります。保護モデルのユーザーは、保護モデルを含む親モデルからコードを生成できます。さらに、ユーザーは保護モデルを含む Model ブロックの SIL/PIL シミュレーションを実行できます。'Top model'
:スタンドアロン インターフェイスを介したコード アクセス。保護モデルのユーザーは、保護モデルを含む Model ブロックの SIL/PIL シミュレーションを実行できます。
例: 'CodeInterface','Top model'
依存関係
システム ターゲット ファイル (SystemTargetFile
) は ERT ベースのシステム ターゲット ファイル (たとえば、ert.tlc
) に設定されなければなりません。Embedded Coder® のライセンスが必要です。
hdl
— HDL コードを生成するためのオプション
false
(既定値) | true
HDL コードを生成するためのオプション。ブール値として指定します。
このオプションには HDL Coder のライセンスが必要です。このオプションを有効にするときは、[モード] を指定していることを確認します。CodeGeneration
に設定された [モード] と共にこのオプションを true
に設定し、保護モデルの C コードと HDL コードの両方のサポートを有効にできます。
シミュレーションと HDL コード生成のサポートのみを有効にし、C コード生成をサポートしない場合は、[モード] を HDLCodeGeneration
に設定します。[hdl] オプションを true
に設定する必要はありません。
例: 'hdl',true
データ型: logical
TunableParameters
— シミュレーションの調整可能なパラメーター
'None'
または {}
(既定値) | 'All'
| string 配列 | 文字ベクトルの cell 配列
シミュレーションの調整可能なパラメーター。'None'
、{}
、'All'
、string 配列、または文字ベクトルの cell 配列として指定します。
保護モデルの受信者は、シミュレーション中に指定されたパラメーターを調整できます。
調整できないパラメーターは、以下の場合を除き、必要な変数としてリストされません。
モデル インターフェイスで使用されている。
バス オブジェクト、列挙型、値の型など、データ型の一部を指定する。
データ ストア メモリで使用されている。
1 つ以上の保護モデルを参照するモデルを保護する場合は、各参照保護モデルの調整可能なパラメーターを、保護しているモデルに対して調整可能として指定する必要があります。
例: 'TunableParameters',{'param1','param2'}
例: TunableParameters=["param1","param2"]
データ型: char
| string
| cell
Callbacks
— 保護モデルのコールバックを指定するためのオプション
cell 配列
保護モデルのコールバックを指定するためのオプション。Simulink.ProtectedModel.Callback
オブジェクトの cell 配列として指定します。
例: 'Callbacks',{pmcallback_sim, pmcallback_cg}
データ型: cell
ObfuscateCode
— 生成されたコードを難読化するためのオプション
true
(既定値) | false
論理値として指定されている生成されたコードを難読化するためのオプションです。保護時のコード生成が有効になっているときのみ適用可能難読化は HDL コード生成ではサポートされていません。
例: 'ObfuscateCode',true
データ型: logical
OutputFormat
— 保護されたコードの可視性
'CompiledBinaries'
(既定値) | 'MinimalCode'
| 'AllReferencedHeaders'
保護されたコードの可視性。次のいずれかの値として指定します。
'CompiledBinaries'
:バイナリ ファイルおよびヘッダーのみが表示されます。'MinimalCode'
:選択したビルド設定でコードをビルドするために必要な最小限のヘッダー ファイルのみを含めます。ビルド フォルダーのすべてのコードが表示されます。保護モデルのレポート内のコードを検証し、目的に応じてそれを再コンパイルできます。'AllReferencedHeaders'
:インクルード パスにあるヘッダー ファイルを含めます。ビルド フォルダーのすべてのコードが表示されます。また、このコードによって参照されるすべてのヘッダーも表示されます。
この引数は、保護モデル用に生成されたコードのどの部分がユーザーに表示されるかを決定します。
例: 'OutputFormat','AllReferencedHeaders'
依存関係
この引数は、Mode
を 'Accelerator'
または 'CodeGeneration'
として指定した場合のみ出力に影響します。Mode
を 'Normal'
として指定した場合、MEX ファイルのみが出力パッケージに含まれます。
Encrypt
— 保護モデルを暗号化するためのオプション
false
(既定値) | true
保護モデルを暗号化するためのオプション。ブール値として指定します。保護に際してパスワードを指定した場合に、もしくは以下のメソッドを使用することにより適用されます。
モデルの読み取り専用表示のパスワード:
Simulink.ModelReference.ProtectedModel.setPasswordForView
シミュレーションのパスワード:
Simulink.ModelReference.ProtectedModel.setPasswordForSimulation
コード生成のパスワード:
Simulink.ModelReference.ProtectedModel.setPasswordForCodeGeneration
HDL コード生成のパスワード:
Simulink.ModelReference.ProtectedModel.setPasswordForHDLCodeGeneration
(HDL Coder)
例: 'Encrypt',true
データ型: logical
Sign
— 保護モデルにデジタル証明書で署名するためのオプション
文字ベクトル | string スカラー
保護モデルにデジタル証明書で署名するためのオプション。デジタル証明書を指定する文字ベクトルまたは string スカラーとして指定します。証明書ファイルがパスワードで保護されている場合は、証明書を使用する前に、関数 Simulink.ModelReference.ProtectedModel.setPasswordForCertificate
を使用してパスワードを指定します。
例: 'Sign','my_certificate.pfx'
データ型: char
| string
Modifiable
— 変更可能な保護モデルを作成するためのオプション
false
(既定値) | true
変更可能な保護モデルを作成するためのオプション。ブール値として指定します。このオプションを使用するには、次の手順に従います。
関数
Simulink.ModelReference.ProtectedModel.setPasswordForModify
を使用して変更用のパスワードを追加します。変更可能な保護モデルを作成するときにパスワードを追加していない場合、パスワードを作成するよう求められます。最初に関数
Simulink.ModelReference.ProtectedModel.setPasswordForModify
を使用して変更用のパスワードを指定し、保護モデルのオプションを変更します。次に、関数Simulink.ModelReference.modifyProtectedModel
を使用してオプションの変更を行います。
例: 'Modifiable',true
データ型: logical
CustomPostProcessingHook
— 保護モデル ファイル用に後処理関数を追加するオプション
関数ハンドル
関数ハンドルとして指定された保護モデル ファイル用に後処理関数を追加するオプションです。
この関数は Simulink.ModelReference.ProtectedModel.HookInfo
オブジェクトを入力変数として受け入れます。このオブジェクトはソース コード ファイルおよび保護モデルの作成中に生成されるその他のファイルについて情報を提供します。変更してはいけないエクスポート済みシンボルについても情報を提供します。保護モデルをパッケージ化する前に後処理関数が呼び出されます。
最上位モデル インターフェイスをもつ保護モデルの場合、Simulink.ModelReference.ProtectedModel.HookInfo
オブジェクトはエクスポート済みシンボルについての情報を提供できません。
例: 'CustomPostProcessingHook',@(protectedMdlInf)myHook(protectedMdlInf)
出力引数
neededVars
— ベース ワークスペース変数の名前
cell 配列
保護モデルで使用されるベース ワークスペース変数の名前。cell 配列として返されます。
cell 配列には保護モデルが使用しない変数も含めることができます。
バージョン履歴
R2012b で導入R2022a: シミュレーションの調整可能なパラメーターは、TunableParameters
引数として指定される
R2022a 以降では、名前と値の引数 TunableParameters
を使用して、シミュレーション中に調整可能にする保護モデルのパラメーターを指定する必要があります。既定では、シミュレーション中にパラメーターは調整できません。
以前は、パラメーターのコード生成ストレージ クラスが Auto
以外の値に設定されている場合に、そのパラメーターは調整可能でした。既定では、個々のデータ要素のストレージ クラスは Auto
です。
参考
Simulink.ModelReference.modifyProtectedModel
| Simulink.ModelReference.ProtectedModel.setPasswordForModify
| Simulink.ModelReference.ProtectedModel.setPasswordForCodeGeneration
| Simulink.ModelReference.ProtectedModel.setPasswordForHDLCodeGeneration
(HDL Coder) | Simulink.ModelReference.ProtectedModel.setPasswordForSimulation
| Simulink.ModelReference.ProtectedModel.setPasswordForView
| Simulink.ModelReference.ProtectedModel.clearPasswords
| Simulink.ModelReference.ProtectedModel.clearPasswordsForModel
| Simulink.ProtectedModel.getTunableParameters
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)