Чтобы улучшить покрытие модели модели, которую вы создали в более старом релизе, используйте рабочий процесс генерации тестов или рабочий процесс генерации кода. Можно усилить последние возможности релиза Simulink® Design Verifier™, чтобы сгенерировать тесты для Модельно-ориентированного проектирования.
Эти рабочие процессы улучшают покрытие модели.
В этом примере показано, как обновить покрытие модели модели, созданной в R2015b. Вы используете генерацию тестов для поддерживаемых S-функций, доступных в последнем релизе.
Модель в качестве примера sldvexSFunctionHandlingExample содержит рукописную S-функцию, которая реализует алгоритм интерполяционной таблицы. Рукописная S-функция находится в файле sldvexSFunctionHandlingSFcn.c. Пользовательский исходный код для интерполяционной таблицы находится в файле sldvexSFunctionHandlingSource.c.
В MATLAB R2015b, открытом sldvexSFunctionHandlingExample модель.
open_system('sldvexSFunctionHandlingExample');
Чтобы симулировать модель и сгенерировать отчет покрытия, в Редакторе Simulink, щелкают по кнопке Run. Результаты покрытия Вида на море в Холсте Simulink (Simulink Coverage).
После симуляции отчет покрытия указывает, что полный охват не достигается для sldvexSFunctionHandlingExample
модель.
В MATLAB R2018b или более поздних релизах, откройте sldvexSFunctionHandlingExample модель. Модель sldvexSFunctionHandlingExample
в качестве примера доступно в R2015b и более поздних релизах, таким образом, можно использовать ту же модель для рабочего процесса генерации тестов.
open_system('sldvexSFunctionHandlingExample');
Чтобы избежать любых потенциальных изменений в модели, создайте копию более старой модели релиза в текущей рабочей папке, и затем откройте модель в R2018b или более поздних релизах. Чтобы обновить и улучшить модели, которые вы используете в текущем релизе, можно использовать upgradeadvisor
.
Скомпилируйте S-функцию, чтобы быть совместимыми с Simulink Design Verifier для генерации теста при помощи slcovmex
(Simulink Coverage). Для получения дополнительной информации смотрите S-функцию Конфигурирования для Генерации Теста.
slcovmex('-sldv', ... '-output', 'sldvexSFunctionHandlingSFcn',... ['-I', fullfile(matlabroot, 'toolbox', 'sldv', 'sldvdemos', 'src')], ... fullfile(matlabroot, 'toolbox', 'sldv', 'sldvdemos', 'src',... 'sldvexSFunctionHandlingSource.c'),... fullfile(matlabroot, 'toolbox', 'sldv', 'sldvdemos', 'src',... 'sldvexSFunctionHandlingSFcn.c'));
Создайте opts
опция для sldvexSFunctionHandlingExample
модель.
opts = sldvoptions; opts.Mode = 'TestGeneration'; opts.ModelCoverageObjectives = 'Condition'; opts.SaveHarnessModel = 'off'; opts.SaveReport = 'off'; opts.SFcnSupport = 'on';
Сгенерировать тесты при помощи заданного opts
опции, используйте sldvrun
анализировать модель.
[status, fileNames] = sldvrun('sldvexSFunctionHandlingExample', opts);
После анализа программное обеспечение генерирует файл данных Simulink Design Verifier и хранит его в месте по умолчанию <current_folder>\sldv_output\sldvexSFunctionHandlingExample_sldvdata.mat
В R2015b, открытом модель.
open_system('sldvexSFunctionHandlingExample');
Загрузите sldvData
файл создается в R2018b или более поздних релизах.
На вкладке Design Verifier нажмите Load Earlier Results и обзор к sldvData
MAT-файл сгенерирован в R2018b или более поздних релизах.
Нажмите Open.
В окне Simulink Design Verifier Results Summary нажмите Simulate tests and produce a model coverage report. Отчет указывает, что 100%-е покрытие достигается для sldvexSFunctionHandlingExample
модель.
Для получения дополнительной информации смотрите Файлы данных Simulink Design Verifier и Симулируйте Тесты и Представьте Отчет Покрытия модели.
В этом примере показано, как обновить покрытие модели модели, созданной в R2015b при помощи рабочего процесса генерации кода.
Для этого рабочего процесса у вас должны быть Simulink Coder™ и Embedded Coder®.
Модель в качестве примера sldvCrossReleaseExample содержит рукописную S-функцию, которая реализует реляционный граничный алгоритм. Рукописная S-функция находится в файле rel_sfcn.c. Пользовательский исходный код находится в файле rel_comp.c.
Чтобы встроить S-функцию, используйте rel_sfcn.tlc файл. Для получения дополнительной информации смотрите Встроенные S-функции с TLC (Embedded Coder).
Скопируйте модель в качестве примера sldvCrossReleaseExample и S-файлы-функции, rel_sfcn.c, rel_comp.c, и rel_sfcn.tlc в текущей рабочей папке. Скопируйте заголовочные файлы rel_comp.h в текущую рабочую папку. Вы используете модель в качестве примера и вспомогательные файлы в R2015b для Интеграции кода перекрестного Релиза (Embedded Coder) рабочий процесс.
Примечание
Модель sldvCrossReleaseExample
в качестве примера создается, например, цель. Чтобы выполнить рабочий процесс генерации кода при помощи модели в качестве примера, экспортируйте
sldvCrossReleaseExample
модель к 15b. Сохраните модель как sldvCrossReleaseExample_15b
в текущей рабочей папке. Для получения дополнительной информации см. Модель Экспорта к Предыдущей Версии Simulink.
В MATLAB R2015b, открытом sldvCrossReleaseExample_15b
модель от текущей рабочей папки.
open_system('sldvCrossReleaseExample_15b');
Скомпилируйте S-функцию при помощи функционального legacy_code
.
def = legacy_code('initialize'); def.SFunctionName = 'rel_sfcn'; def.OutputFcnSpec = 'uint8 y1 = relational_bound(uint8 u1)'; def.HeaderFiles = {'rel_comp.h'}; def.SourceFiles = {'rel_comp.c'}; def.IncPaths = {pwd}; def.SrcPaths = {pwd}; def.Options.supportCoverageAndDesignVerifier = true; legacy_code('sfcn_cmex_generate', def); legacy_code('compile', def);
Чтобы симулировать модель и сгенерировать отчет покрытия, в Редакторе Simulink, нажимают кнопку Run. Результаты покрытия Вида на море в Холсте Simulink (Simulink Coverage).
После симуляции отчет покрытия указывает, что 50%-е покрытие достигается для sldvCrossReleaseExample_15b
модель.
Чтобы сгенерировать код с помощью Embedded Coder, от вкладки Apps, выбирают Embedded Coder. Для получения дополнительной информации смотрите, Генерируют Код Используя Embedded Coder® (Embedded Coder).
Во вкладке C Code нажмите Generate Code.
Модель предварительно сконфигурирована с этими настройками генерации кода.
set_param(sldvCrossReleaseExample_15b,'SystemTargetFile','ert.tlc'); set_param(sldvCrossReleaseExample_15b,'PortableWordSizes','on'); set_param(sldvCrossReleaseExample_15b,'SupportNonFinite','off'); set_param(sldvCrossReleaseExample_15b,'GenCodeOnly','on'); set_param(sldvCrossReleaseExample_15b,'SolverMode','SingleTasking'); set_param(sldvCrossReleaseExample_15b,'ProdEqTarget','on');
Программное обеспечение генерирует код С для модели и сохранило файлы в месте папки по умолчанию <current_folder>\sldvCrossReleaseExample_15b_ert_rtw
.
Сохраните конфигурацию модели модели sldvCrossReleaseExample_15b
к MAT-файлу. Этот ConfigSet
используется, чтобы установить конфигурацию модели модели в R2018b и более поздних релизах.
config_set = getActiveConfigSet('sldvCrossReleaseExample_15b'); copiedConfig = config_set.copy; save('copiedConfig.mat','copiedConfig');
В MATLAB R2018b или более поздних релизах, импортируйте компоненты, экспортируемые из R2015b.
Прежде чем вы импортируете компоненты в текущем релизе, переименуйте или удалите rtwtypes.h
файл, доступный в папке <current_folder>\sldvCrossReleaseExample_15b_ert_rtw
. Во время импорта перекрестного релиза MATLAB пытается регенерировать файл с тем же именем. Если вы не удаляете или переименовываете файл rtwtypes.h
, MATLAB отображает ошибку.
Импортируйте сгенерированный код компонента из R2015b как программное обеспечение в блоке (SIL) цикла.
crossReleaseImport('sldvCrossReleaseExample_15b_ert_rtw',... 'sldvCrossReleaseExample_15b', 'SimulationMode','SIL');
crossReleaseImport
функция создает неназванную модель, которая содержит программное обеспечение в блоке (SIL) цикла sldvCrossReleaseExample_15b_R2015b_sil
.
Добавьте порты Inport и Outport в sldvCrossReleaseExample_15b_R2015b_sil
блокируйте и сохраните модель как sldvCrossReleaseExample_sil_18b
.
Примените набор конфигурации модели, похожий на модель R2015b.
load('copiedConfig.mat'); attachConfigSet('sldvCrossReleaseExample_sil_18b', copiedConfig, true); setActiveConfigSet('sldvCrossReleaseExample_sil_18b', copiedConfig.Name);
Установите режим симуляции на Software-in-the-Loop (SIL)
. Чтобы симулировать модель, в Редакторе Simulink, нажимают кнопку Run.
Чтобы сгенерировать тесты для сгенерированного кода Embedded Coder, на вкладке Design Verifier, выбирают Target> Code Generated as Top Model и нажимают Generate Tests. Для получения дополнительной информации смотрите, Генерируют Тесты для Сгенерированного кода Embedded Coder.
После анализа Simulink Design Verifier программное обеспечение генерирует тесты и сохраняет sldvData
в папке в местоположении по умолчанию <current_folder>\sldv_output\sldvCrossReleaseExample_sil_18b
.
В R2015b, открытом модель.
open_system('sldvCrossReleaseExample_15b');
Обновите sldvData.ModelInfomation.Name
поле в sldvData
то же самое как имя модели в более старом релизе. Например, sldvCrossReleaseExample_15b.slx
.
Создайте модель тестовой обвязки при помощи sldvData
созданный в R2018b или более поздних релизах. Эти данные состоят из тестов, сгенерированных от сгенерированного кода Embedded Coder. В dataFile
, введите местоположение sldvData
сгенерированный для sldvCrossReleaseExample_sil_18b
модель.
sldvmakeharness('sldvCrossReleaseExample_15b.slx','dataFile')
Чтобы симулировать модель при помощи всех тестов, нажмите кнопку Run all .
Программное обеспечение симулирует все тесты и генерирует отчет покрытия. Отчет указывает, что 100%-е покрытие достигается для sldvCrossReleaseExample_15b
модель.