polyspacePackNGo

Сгенерируйте и упакуйте файлы опций, чтобы запустить анализ Polyspace на коде, сгенерированном из модели Simulink

Описание

пример

archivePath = polyspacePackNGo(mdlName) исследует Simulink® модели mdlName, извлекает Polyspace® опции файлов из него и упакует файлы параметров в zip-файл, расположенный в archivePath. Перед использованием polyspacePackNGo, сгенерируйте код из вашей модели Simulink. Затем архивируйте сгенерированный код, например, используя packNGo. Сгенерируйте файлы опций Polyspace из модели Simulink и включите их в архив кода при помощи polyspacePackNGo. В другой среде разработки, при выполнении анализа Polyspace сгенерированного кода, используйте файлы опций, включенные в архив кода, чтобы сохранить специфическую для модели информацию, такую как спецификации области значений проекта. У вас должен быть Embedded Coder® использовать slbuild.

пример

archivePath = polyspacePackNGo(mdlName,psOpt) генерирует и упакует файлы опций Polyspace, которые генерируются согласно спецификации в psOpt. Объект psOpt должен быть Объект опций Polyspace, которая генерируется при помощи pslinkoptions. Использование psOptизмените опции для анализа Polyspace.

пример

archivePath = polyspacePackNGo(mdlName,psOpt,asModelRef) генерирует и упакует файлы опций Polyspace при помощи asModelRef чтобы указать, генерировать ли файлы опций для модели-ссылки кода или автономного кода.

Примеры

свернуть все

Чтобы сгенерировать и упаковать файлы опций Polyspace для модели Simulink, используйте polyspacePacknGo.

Откройте модель Simulink rtwdemo_counter и укажите папку для хранения сгенерированного кода.

% Open the model
mdlName = 'rtwdemo_counter';
open_system(mdlName);
% Specify a folder for generated code
codegenFolder = 'rtwdemo_counter_ert_rtw';

Чтобы включить упаковку сгенерированного кода в архив, установите опцию PackageGeneratedCodeAndArtifacts на true. Укажите имя сгенерированного архива кода следующим genCodeArchive.zip.

configSet = getActiveConfigSet(mdlName);
set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true);
set_param(configSet, 'PackageName', 'genCodeArchive.zip');

Чтобы сделать модель совместимой с Polyspace, установите SystemTargetFile на etr.tlc.

set_param(configSet, 'SystemTargetFile', 'ert.tlc');

После конфигурирования модели сгенерируйте код.

if exist(fullfile(pwd,codegenFolder), 'dir') == 0
    slbuild(mdlName)
end

Потому что PackageGeneratedCodeAndArtifacts установлено в trueсгенерированный код упаковывается в архив genCodeArchive.zip.

Сгенерируйте и упакуйте файлы опций Polyspace.

zipFile = polyspacePackNGo(mdlName);
В архиве кода genCodeArchive.zipфайлы опций Polyspace упакованы в polyspace папка.

Чтобы задать опции анализа Polyspace при упаковке и генерации файлов опций, используйте pslinktoptions.

Откройте модель Simulink rtwdemo_counter и сконфигурируйте модель для генерации архива кода, который совместим с Polyspace.

% Open the model
mdlName = 'rtwdemo_counter';
open_system(mdlName);
% Specify a folder for generated code
codegenFolder = 'rtwdemo_counter_ert_rtw';
configSet = getActiveConfigSet(mdlName);
% Enable packing the generated code into an archive
set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true);
% Specify a name for the code archive
set_param(configSet, 'PackageName', 'genCodeArchive.zip');
% Configure the model to be Polyspace Compatible
set_param(configSet, 'SystemTargetFile', 'ert.tlc');

После конфигурирования модели сгенерируйте код.

if exist(fullfile(pwd,codegenFolder), 'dir') == 0
    slbuild(mdlName)
end

Потому что PackageGeneratedCodeAndArtifacts установлено в trueсгенерированный код упаковывается в архив genCodeArchive.zip.

Чтобы задать строение модели для анализа Polyspace, используйте pslinkoptions объект. Создайте этот объект с помощью функции pslinkoptions.

psOpt = pslinkoptions(mdlName);
Объект psopt - структура, в которой поля являются строениями модели, которые можно задать.

Задайте строение модели при помощи psOpt объект. Для образца задайте InputRangeMode на полную область значений. Полный список опций см. в входном параметре psOpt.

psOpt.InputRangeMode = 'FullRange';

Сгенерируйте и упакуйте файлы опций Polyspace. Используйте psOpt объект как второй аргумент в polyspacePacknGo.

zipFile = polyspacePackNGo(mdlName,psOpt);
В архиве кода genCodeArchive.zipфайлы опций Polyspace упакованы в polyspace папка. Файл optionsFile.txt содержит указанные опции анализа Polyspace.

Чтобы ускорить симуляции модели, активируйте ссылочные модели Simulink в качестве целей симуляции. Чтобы сгенерировать модель-ссылку симуляции цели из модели Simulink, сгенерируйте код из модели при помощи slbuild с процессом сборки, заданным как ModelReferenceCoderTargetOnly. Затем упакуйте сгенерированный код при помощи packNGo. Чтобы сгенерировать и упаковать файлы опций Polyspace для анализа такого кода, используйте функцию polyspacePacknGo с необязательным аргументом asModelRef установлено на true.

Откройте модель Simulink rtwdemo_counter и сконфигурируйте модель для генерации архива кода, который совместим с Polyspace.

% Load model
mdlName = 'rtwdemo_counter';
load_system(mdlName);
configSet = getActiveConfigSet(mdlName);
% Enable packing the generated code into an archive 
set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true);
set_param(configSet, 'PackageName', '');
% Configure the model to be Polyspace Compatible
set_param(configSet, 'SystemTargetFile', 'ert.tlc');

После конфигурирования модели сгенерируйте из нее модель-ссылку цель симуляции при помощи функции slbuild. Задайте опцию ModelReferenceCoderTargetOnly. Посмотрите slbuild.

slbuild(mdlName,'ModelReferenceCoderTargetOnly');
Сгенерированный код хранится в папке slprj.

Чтобы упаковать код, который генерируется как модель-ссылка, используйте функцию packNGo. Найдите файл buildinfo.mat в <working folder>/ slprj/ert/rtwdemo_counter и используйте полный путь к нему в качестве входов packNGo. Эта команда генерирует архив, содержащий сгенерированный код и объект buildinfo.mat. Посмотрите packNGo (Embedded Coder).

% Locate buildinfo and generate code archive
buildinfo = fullfile(pwd,'slprj','ert',mdlName,'buildinfo.mat');
packNGo(buildinfo)

Сгенерируйте и упакуйте файлы опций Polyspace. Опустите необязательный второй аргумент. Установите третий аргумент asModelRef на true.

zipFile = polyspacePackNGo(mdlName,[],true);
В архиве кода rtwdemo_counter.zipфайлы опций Polyspace упакованы в polyspace папка.

Входные параметры

свернуть все

Символьный массив, содержащее имя модели, для которой вы хотите сгенерировать и упаковать файлы опций Polyspace.

Пример: polyspacePackNGo('rtwdemo_roll')

Типы данных: char

Задает строение модели для анализа Polyspace при помощи pslinkoptions объект. Можно изменить определенные опции анализа путем изменения psOpt, которая является структурой, в которой отдельные поля представляют опции анализа. Список заливок опций, которые можно изменить, см. в таблице Polyspace Опций анализа Поддерживается polyspacePacknGo.

Опции анализа Polyspace, поддерживаемые polyspacePacknGo

СвойствоЗначениеОписание
EnableAdditionalFileList: Включить анализ дополнительного списка файлов, заданный как true или false. Используйте с AdditionalFileList опция. truePolyspace проверяет дополнительные файлы, указанные в AdditionalFileList опция.
false (по умолчанию)Polyspace не проверяет дополнительные файлы.
ДополнительныйFileList: Список дополнительных файлов, подлежащих анализу, заданный как массив ячеек файлов. Чтобы добавить эти файлы к анализу, используйте EnableAdditionalFileList опция.массив ячеекPolyspace рассматривает перечисленные файлы для верификации.
InputRangeMode: задает область значений входных переменных.'DesignMinMax' (по умолчанию)Polyspace использует входную область значений, заданный в рабочей области или блоке.
'Fullrange'Polyspace использует входы полной области значений.
ParamRangeMode: задает область значений постоянных параметров.'DesignMinmax'Polyspace использует постоянный параметр области значений заданный в рабочей области или в блоке.
'None' (по умолчанию)Polyspace использует значение параметров, заданных в коде.
OutputRangeMode: задает выходные значения.'DesignMinMax'Polyspace применяет утверждения к выходам с помощью области значений, заданной в блоке или рабочей области.
'None' (по умолчанию)Polyspace не применяет утверждения к переменным выходам.
ModelRefVerifDepth: Задайте глубину для анализа моделей, на которые ссылается текущая модель.'Current model Only' (по умолчанию)Polyspace анализирует только модель верхней части, не анализируя ссылку на модели. Используйте эту опцию, когда вы ссылаетесь на модели, которые не нужно анализировать, такие как модели библиотеки.
'1'|'2'|'3'Polyspace анализирует ссылки на модели до заданной глубины в иерархии ссылок. Чтобы проанализировать модели, на которые ссылается верхняя часть, задайте свойство ModelRefVerifDepth как '1'. Чтобы анализировать модели, на которые ссылается первый уровень ссылок, задайте это свойство как '2'.
'All'Polyspace проверяет все ссылочные модели.
ModelRefByModelRefVerif: Укажите, нужно ли анализировать все ссылочные модели вместе или по отдельности.truePolyspace анализирует верхнюю модель и ссылочные модели вместе. Используйте эту опцию для проверки проблем интегрирования или масштабирования.
false (по умолчанию)Polyspace анализирует верхнюю модель и ссылочные модели индивидуально.
AutoStubLUT: определяет, как используются интерполяционные таблицы.true (по умолчанию)Polyspace заглушает интерполяционные таблицы и проверяет модель, не анализируя код интерполяционной таблицы.
falsePolyspace включает код интерполяционной таблицы в анализ.
CheckConfigBeforeAnalysis: задает уровень проверки строения, выполненной до начала анализа Polyspace.'Off'Polyspace проверяет только на ошибки. Анализ останавливается, если обнаружены ошибки.
'OnWarn' (по умолчанию)Polyspace останавливает анализ при обнаружении ошибок и отображает сообщение при обнаружении предупреждений.
'OnHalt'Polyspace останавливает анализ при обнаружении ошибок или предупреждений.

Пример: polyspacePackNGo('rtwdemo_roll', psOpt), где ps_opt - объект опций, созданный вызовом pslinkoptions

Индикатор для модели-ссылки анализа, заданный как true или false.

  • Если asModelRef является false (по умолчанию), функция генерирует файлы опций, так что Polyspace анализирует сгенерированный код как автономный код.

  • Если asModelRef является true, функция генерирует файлы опций, так что Polyspace анализирует сгенерированный код как модель-ссылка код.

    Примечание

    Если вы задаете asModelRef на true, использование slbuild для генерации кода.

Пример: polyspacePackNGo('rtwdemo_roll', psOpt,true)

Типы данных: logical

Выходные аргументы

свернуть все

Символьный массив, содержащий путь к сгенерированному архиву. Файлы опций расположены в polyspace папка в архиве. The polyspace папка содержит следующие файлы опций:

  • optionsFile.txt: текстовый файл, содержащий опции Polyspace, необходимые для запуска анализа Polyspace на сгенерированном коде без потери информации о модели, такой как проект области значений спецификация.

  • model_drs.xml: Файл, содержащий проект области значений спецификацию модели.

  • linkdata.xml: Файл, который связывает сгенерированный код с компонентами модели.

Чтобы запустить анализ Polyspace на сгенерированном коде в окружении, которая отличается от окружения, где код был сгенерирован из модели Simulink, используйте эти файлы.

Типы данных: char

Введенный в R2020b