Чтобы улучшить покрытие модели модели, которую вы создали в более старом релизе, используйте рабочий процесс генерации тестов или рабочий процесс генерации кода. Можно усилить последние возможности релиза Simulink® Design Verifier™ сгенерировать тесты для Модельно-ориентированного проектирования.
Эти рабочие процессы улучшают покрытие модели.
Этот пример показывает, как обновить покрытие модели модели, созданной в R2015b. Вы используете генерацию тестов для поддерживаемых S-функций, доступных в последнем релизе.
Модель в качестве примера sldvexSFunctionHandlingExample содержит рукописную S-функцию, которая реализует алгоритм интерполяционной таблицы. Рукописная S-функция находится в файле sldvexSFunctionHandlingSFcn.c. Пользовательский исходный код для интерполяционной таблицы находится в файле sldvexSFunctionHandlingSource.c.
В MATLAB R2015b, открытом sldvexSFunctionHandlingExample модель.
open_system('sldvexSFunctionHandlingExample');
Чтобы моделировать модель и сгенерировать отчет покрытия, в Редакторе Simulink, щелкают по кнопке Run. Результаты покрытия Вида на море в Модели (Simulink Coverage).
После симуляции отчет покрытия указывает, что полный охват не достигается для модели sldvexSFunctionHandlingExample
.
В MATLAB R2018b, открытом sldvexSFunctionHandlingExample модель. Модель sldvexSFunctionHandlingExample
в качестве примера доступна в R2015b и R2018b, таким образом, можно использовать ту же модель для рабочего процесса генерации тестов.
open_system('sldvexSFunctionHandlingExample');
Чтобы избежать любых потенциальных изменений в модели, создайте копию более старой модели релиза в текущей рабочей папке, и затем откройте модель в R2018b. Чтобы обновить и улучшить модели, которые вы используете в текущем релизе, можно использовать upgradeadvisor
.
Скомпилируйте S-функцию, чтобы быть совместимыми с Simulink Design Verifier для генерации теста при помощи slcovmex
. Для получения дополнительной информации смотрите 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.
Выберите Analysis> Design Verifier> Results> Load и обзор к файлу MAT sldvData
, сгенерированному в R2018b.
Нажать ОК.
В окне 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
в качестве примера создается в R2018b, например, цель. Чтобы выполнить рабочий процесс генерации кода при помощи модели в качестве примера, экспортируйте модель sldvCrossReleaseExample
в 15b. Сохраните модель как sldvCrossReleaseExample_15b
в текущей рабочей папке. Для получения дополнительной информации смотрите Экспорт Модель к Предыдущей Версии Simulink (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 Coverage).
После симуляции отчет покрытия указывает, что 50%-е покрытие достигается для модели sldvCrossReleaseExample_15b
.
Чтобы Сгенерировать Код Используя Embedded Coder® (Embedded Coder), в Редакторе Simulink, нажимают кнопку Build Model.
Модель предварительно сконфигурирована с этими настройками генерации кода.
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, чтобы установить конфигурацию модели модели в 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, выберите Analysis> Design Verifier> Generate Tests> Code Generated as Top Model.
После анализа 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
.