Скрыть содержимое модели, на которую ссылаются, чтобы скрыть интеллектуальное свойство
Simulink.ModelReference.protect(
создает защищенную модель из заданного model
)model
. Он помещает защищенную модель в текущую рабочую папку. Защищенная модель имеет то же имя что и исходная модель. У него есть расширение .slxp
.
Simulink.ModelReference.protect(
использует дополнительные опции, заданные одним или несколькими аргументами пары "имя-значение".model
,Name,Value
)
[
создает модель тестовой обвязки для защищенной модели. Он возвращает указатель на запряженную модель в harnessHandle
] = Simulink.ModelReference.protect(model
,'Harness
',true)harnessHandle
.
[~ ,
возвращает массив ячеек, который включает имена базового рабочего пространства переменных, используемых защищенной моделью.neededVars
] = Simulink.ModelReference.protect(model
)
Защитите модель-ссылку и поместите защищенную модель в текущую рабочую папку.
sldemo_mdlref_bus;
model= 'sldemo_mdlref_counter_bus'
Simulink.ModelReference.protect(model);
Защищенная модель с именем sldemo_mdlref_counter_bus.slxp
создается. Защищенный файл модели помещается в текущую рабочую папку.
Защитите модель-ссылку и поместите защищенную модель в указанную папку.
sldemo_mdlref_bus; model= 'sldemo_mdlref_counter_bus' Simulink.ModelReference.protect(model,'Path','C:\Work');
Защищенная модель с именем sldemo_mdlref_counter_bus.slxp
создается. Защищенный файл модели помещается в C:\Work
.
Защитите ссылку на модель, сгенерируйте код для него в режиме normal mode и запутайте код.
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-код в режиме normal mode.
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
создается. Защищенный файл модели помещается в ту же папку, что и родительская модель и ссылочная модель. Защищенная модель запускается как дочерняя модель родительской модели.
Установите значение опции hdl true
с Mode установленным значением CodeGeneration
чтобы включить как генерацию кода C, так и генерацию HDL-кода для защищенной модели, которую вы создаете.
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)
Управляйте видимостью кода, позволяя пользователям просматривать только двоичные файлы и заголовки в коде, сгенерированном для защищенной модели.
sldemo_mdlref_bus; model= 'sldemo_mdlref_counter_bus' Simulink.ModelReference.protect(model,'Mode','CodeGeneration','OutputFormat',... 'CompiledBinaries');
Защищенная модель с именем sldemo_mdlref_counter_bus.slxp
создается. Защищенный файл модели помещается в текущую рабочую папку. Пользователи могут просматривать только двоичные файлы и заголовки в коде, сгенерированном для защищенной модели.
Создайте модель тестовой обвязки для защищенной модели и сгенерируйте HTML.
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
.
Сгенерируйте защищенную модель и определите необходимые переменные.
sldemo_mdlref_bus;
model= 'sldemo_mdlref_counter_bus'
[~, neededVars] = Simulink.ModelReference.protect(model)
Второй выход, neededVars
, определяет переменные, которые вы должны отправить получателю. Значение neededVars
- массив ячеек, содержащий имена переменных, требуемых защищенной моделью. Однако массив ячеек может также содержать имена переменных, которые не нужны модели.
Прежде чем делиться защищенной моделью, отредактируйте neededVars
чтобы удалить имена любых переменных, которые не нужны модели. Сохраните необходимые переменные в словаре данных.
model
- Имя моделиИмя модели, заданное как вектор символов или строковый скаляр. Он содержит имя модели или путь Model блока, который ссылается на защищаемую модель.
Типы данных: char
| string
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'Mode','CodeGeneration','OutputFormat','Binaries','ObfuscateCode',true
задает, что запутанный код должен быть сгенерирован для защищенной модели. Также указывается, что пользователям защищенной модели будут видны только двоичные файлы и заголовки в сгенерированном коде.'Project'
- Опция для сбора зависимостей в проектеfalse
(по умолчанию) | true
Опция для сбора зависимостей в проекте, заданная как разделенная разделенными запятой парами, состоящая из 'Project'
и true
или false
.
Защищенная модель, ее зависимости и ее модель тестовой обвязки сохранены в архиве проекта (.mlproj
). Архив проекта предоставляет способ совместного использования проекта в одном файле. Для создания интерактивного проекта необходимо открыть архив проекта.
Примечание
Перед совместным использованием проекта проверьте, содержит ли проект необходимые вспомогательные файлы. Если вспомогательные файлы отсутствуют, моделирование или генерация кода для связанной модели тестовой обвязки может помочь идентифицировать их. Добавьте отсутствующие зависимости к проекту и обновите модель тестовой обвязки по мере необходимости.
Пример: 'Project',true
Типы данных: logical
'ProjectName'
- Настраиваемое имя проектаПользовательское имя проекта, заданное как разделенная разделенными запятой парами, состоящая из 'ProjectName'
и вектор символов или строковый скаляр.
Если вы не задаете пользовательское имя проекта, то по умолчанию для проекта используется имя защищенной модели _protected
.
Пример: 'ProjectName','myname'
Чтобы включить ProjectName
, задать Project
на true
.
Типы данных: char
| string
'Harness'
- Опция для создания модели тестовой обвязкиОпция для создания модели тестовой обвязки, заданная как разделенная разделенными запятой парами, состоящая из 'Harness'
и логическое значение.
Когда вы создаете модель тестовой обвязки для защищенной модели, которая опирается на определения базовых рабочих пространств, Simulink® создает MAT-файл, содержащий определения базовых рабочих пространств.
Модель тестовой обвязки должна иметь доступ к вспомогательным файлам, таким как MAT-файл с определениями базовых рабочих пространств или словарь данных.
Пример: 'Harness',true
Типы данных: logical
'Mode'
- Моделирование режима защиты'Normal'
(по умолчанию) | 'Accelerator'
| 'CodeGeneration'
| 'HDLCodeGeneration'
| 'ViewOnly'
Режим защиты модели, заданный как разделенная разделенными запятой парами, состоящая из 'Mode'
и одно из следующих значений:
'Normal'
: Если верхняя модель работает 'Normal'
mode, защищенная модель запускается как дочерний элемент верхней модели.
'Accelerator'
: Верхняя часть может работать в 'Normal'
, 'Accelerator'
, или 'Rapid Accelerator'
режим.
'CodeGeneration'
: Верхняя часть может работать в 'Normal'
, 'Accelerator'
, или 'Rapid Accelerator'
mode и поддержка генерации кода.
'HDLCodeGeneration'
: Верхняя часть может работать в 'Normal'
, 'Accelerator'
, или 'Rapid Accelerator'
режим и поддержка генерации HDL-кода. Требует HDL Coder™ лицензии.
'ViewOnly'
: Это значение отключает режимы функциональности Simulate и Generate кода и включает режим просмотра только для чтения.
Пример: 'Mode','Accelerator'
'CodeInterface'
- Интерфейс, посредством которого сгенерированный код получает доступ к блоку Model'Model reference'
(по умолчанию) | 'Top model'
Интерфейс, посредством которого к сгенерированному коду обращается блок Model, заданный как разделенная разделенными запятой парами, состоящая из 'CodeInterface'
и одно из следующих значений:
'Model reference'
: Доступ к коду через интерфейс модели-ссылки кода, который позволяет использовать защищенную модель в иерархии модели-ссылки. Пользователи защищенной модели могут сгенерировать код из родительской модели, которая содержит защищенную модель. В сложение пользователи могут запускать SIL/PIL симуляции блоков Model с защищенной моделью.
'Top model'
: Доступ к коду через автономный интерфейс. Пользователи защищенной модели могут запускать SIL/PIL симуляции блоков Model с защищенной моделью.
Пример: 'CodeInterface','Top model'
Системный целевой файл (SystemTargetFile
) должен быть установлен системный целевой файл на основе ERT, например ert.tlc
). Требуется Embedded Coder® лицензия.
'ObfuscateCode'
- Опция запутывания сгенерированного кодаtrue
(по умолчанию) | false
Опция запутывания сгенерированного кода, заданная как разделенная разделенными запятой парами, состоящая из 'ObfuscateCode'
и логическое значение. Применяется только при включенной генерации кода во время защиты. Obfuscation не поддерживается для генерации HDL-кода.
Пример: 'ObfuscateCode',true
Типы данных: logical
'Path'
- Папка для защищенной моделиПапка для защищенной модели, заданная как разделенная разделенными запятой парами, состоящая из 'Path'
и вектор символов или строковый скаляр.
Пример: 'Path','C:\Work'
Типы данных: char
| string
'Report'
- Опция генерации отчетаfalse
(по умолчанию) | true
Опция для генерации отчета, заданная как разделенная разделенными запятой парами, состоящая из 'Report'
и логическое значение.
Чтобы просмотреть отчет, щелкните правой кнопкой значок защищенной модели и выберите Display Report. Или вызовите Simulink.ProtectedModel.open
функция со report
опция.
Отчет создается в формате HTML. Он включает информацию об окружении, функциональности и интерфейсе для защищенной модели.
Пример: 'Report',true
Типы данных: logical
'hdl'
- Опция генерации HDL-кодаfalse
(по умолчанию) | true
Опция для генерации HDL-кода, заданная как разделенная разделенными запятой парами, состоящая из 'hdl'
и логическое значение.
Для эта опция требуется лицензия HDL Coder. Когда вы включите эту опцию, убедитесь, что вы задаете Mode. Можно задать эту опцию следующим образом true
в сочетании с Mode, установленной на CodeGeneration
чтобы включить как Код С, так и Генерация HDL-кода поддержку защищенной модели.
Если вы хотите включить только симуляцию и поддержку генерации HDL-кода, но не генерацию кода C, задайте Mode HDLCodeGeneration
. Вы не должны устанавливать опцию hdl равной true
.
Пример: 'hdl',true
Типы данных: logical
'OutputFormat'
- Защищенная видимость кода'CompiledBinaries'
(по умолчанию) | 'MinimalCode'
| 'AllReferencedHeaders'
Защищенная видимость кода, заданная как разделенная разделенными запятой парами, состоящая из 'OutputFormat'
и одно из следующих значений:
'CompiledBinaries'
: Видны только двоичные файлы и заголовки.
'MinimalCode'
: Включает только минимальные файлы заголовков, необходимые для создания кода с выбранными настройками сборки. Весь код в папке сборки отображается. Пользователи могут просматривать код в отчете защищенной модели и повторно компилировать его в своих целях.
'AllReferencedHeaders'
: Включает файлы заголовков, найденные в пути включения. Весь код в папке сборки отображается. Все заголовки, на которые ссылается код, также видны.
Этот аргумент определяет, какая часть кода, сгенерированная для защищенной модели, видна пользователям.
Пример: 'OutputFormat','AllReferencedHeaders'
Этот аргумент влияет на выход только, когда вы задаете Mode
как 'Accelerator'
или 'CodeGeneration'
. Когда вы задаете Mode
как 'Normal'
, только Файл MEX является частью выхода пакета.
'Webview'
- Опция включения веб-представления защищенной модели только для чтенияfalse
(по умолчанию) | true
Опция включения веб-представления защищенной модели только для чтения, заданная как разделенная разделенными запятой парами, состоящая из 'Webview'
и логическое значение.
Чтобы открыть веб-представление защищенной модели, используйте один из следующих методов:
Щелкните правой кнопкой значок защищенной модели и выберите Show Web view.
Используйте Simulink.ProtectedModel.open
функция. Например, чтобы отобразить веб-представление для защищенной модели sldemo_mdlref_counter
, вызовите:
Simulink.ProtectedModel.open('sldemo_mdlref_counter', 'webview');
Дважды кликните .slxp
защищенный файл модели в браузере текущей папки.
В диалоговом окне Параметров блоков для защищенной модели нажмите Open Model.
Пример: 'Webview',true
Типы данных: logical
'Encrypt'
- Опция шифрования защищенной моделиfalse
(по умолчанию) | true
Опция шифрования защищенной модели, заданная как разделенная разделенными запятой парами, состоящая из 'Encrypt'
и логическое значение. Применимо, когда вы указали пароль во время защиты или с помощью следующих методов:
Пароль для представления модели только для чтения: Simulink.ModelReference.ProtectedModel.setPasswordForView
Пароль для симуляции: Simulink.ModelReference.ProtectedModel.setPasswordForSimulation
Пароль для генерации кода: Simulink.ModelReference.ProtectedModel.setPasswordForCodeGeneration
Пароль для генерации HDL-кода: Simulink.ModelReference.ProtectedModel.setPasswordForHDLCodeGeneration
Пример: 'Encrypt',true
Типы данных: logical
'CustomPostProcessingHook'
- Опция добавления функции постобработки для защищенных файлов моделиОпция добавления функции постобработки для защищенных файлов модели, заданная как разделенная разделенными запятой парами, состоящая из 'CustomPostProcessingHook'
и указатель на функцию.
Функция принимает Simulink.ModelReference.ProtectedModel.HookInfo
объект как переменный вход. Этот объект предоставляет информацию о файлах исходного кода и других файлах, сгенерированных во время создания защищенной модели. В нем также содержится информация об экспортированных символах, которые вы не должны изменять. Перед упаковкой защищенной модели вызывается функция постобработки.
Для защищенной модели с интерфейсом верхней модели, Simulink.ModelReference.ProtectedModel.HookInfo
объект не может предоставить информацию об экспортированных символах.
Пример: 'CustomPostProcessingHook',@(protectedMdlInf)myHook(protectedMdlInf)
'Modifiable'
- Опция для создания изменяемой защищенной моделиfalse
(по умолчанию) | true
Опция для создания изменяемой защищенной модели, заданная как разделенная разделенными запятой парами, состоящая из 'Modifiable'
и логическое значение. Чтобы использовать эту опцию:
Добавьте пароль для изменения при помощи Simulink.ModelReference.ProtectedModel.setPasswordForModify
функция. Если пароль не был добавлен в то время, когда вы создали изменяемую защищенную модель, вам будет предложено создать ее.
Измените опции вашей защищенной модели, сначала предоставив пароль модификации с помощью Simulink.ModelReference.ProtectedModel.setPasswordForModify
функция. Затем используйте Simulink.ModelReference.modifyProtectedModel
функция, чтобы внести изменения в опцию.
Пример: 'Modifiable',true
Типы данных: logical
'Callbacks'
- Опция для задания коллбэков для защищенной моделиОпция для задания коллбэков для защищенной модели, заданная как разделенная разделенными запятой парами, состоящая из 'Callbacks'
и массив ячеек Simulink.ProtectedModel.Callback
объекты.
Пример: 'Callbacks',{pmcallback_sim, pmcallback_cg}
Типы данных: cell
'Sign'
- Опция подписать защищенную модель цифровым сертификатомОпция подписи защищенной модели цифровым сертификатом, заданная как разделенная разделенными запятой парами, состоящая из 'Sign'
и вектор символов или строковый скаляр, который задает цифровой сертификат. Если файл сертификата защищен паролем, используйте Simulink.ModelReference.ProtectedModel.setPasswordForCertificate
функция для предоставления пароля перед использованием сертификата.
Пример: 'Sign','my_certificate.pfx'
Типы данных: char
| string
harnessHandle
- Указатель модели тестовой обвязкиУказатель на модель тестовой обвязки, возвращенный как double или 0
, в зависимости от значения Harness
.
Если Harness
является true
, значение является указателем на модель тестовой обвязки. В противном случае значение 0
.
neededVars
- Имена переменных базового рабочего пространстваИмена переменных базовых рабочих пространств, которые использует защищенная модель, возвращенные как массив ячеек.
Массив ячеек может также включать переменные, которые не использует защищенная модель.
Simulink.ModelReference.modifyProtectedModel
| Simulink.ModelReference.ProtectedModel.clearPasswords
| Simulink.ModelReference.ProtectedModel.clearPasswordsForModel
| Simulink.ModelReference.ProtectedModel.setPasswordForCodeGeneration
| Simulink.ModelReference.ProtectedModel.setPasswordForHDLCodeGeneration
| Simulink.ModelReference.ProtectedModel.setPasswordForModify
| Simulink.ModelReference.ProtectedModel.setPasswordForSimulation
| Simulink.ModelReference.ProtectedModel.setPasswordForView
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.