exponenta event banner

Расширение охвата моделей старых версий

Чтобы расширить охват модели, созданной в более ранней версии, используйте рабочий процесс создания теста или рабочий процесс создания кода. Вы можете использовать новейшие возможности выпуска Simulink ® Design Verifier™ для создания тестовых примеров для конструкции на основе модели.

Эти рабочие процессы расширяют охват модели.

Расширение охвата модели путем создания тестовых примеров для старой модели выпуска

В этом примере показано, как обновить охват модели, созданной в R2015b. Генерация тестов используется для поддерживаемых S-функций, доступных в последней версии.

Пример модели sldvexSFuncityHandlingExample содержит рукописную S-функцию, которая реализует алгоритм таблицы подстановки. Рукописная S-функция находится в файле sldvexSFuntsHandlingSFcn.c. Исходный код пользователя для таблицы подстановки находится в файле sldvexSFuncterHandlingSource.c.

  1. В R2015b MATLAB откройте модель sldvexSFunterHandlingExample.

    open_system('sldvexSFunctionHandlingExample');
    

  2. Чтобы смоделировать модель и создать отчет о покрытии, в редакторе Simulink нажмите кнопку Run. См. раздел Просмотр результатов покрытия в модели (Simulink Coverage).

    После моделирования отчет о покрытии указывает, что полное покрытие не достигнуто для sldvexSFunctionHandlingExample модель.

  3. В R2018b или более поздних версиях MATLAB откройте модель sldvexSFuncityHandlingExample. Пример модели sldvexSFunctionHandlingExample доступна в R2015b и более поздних версиях, поэтому можно использовать одну и ту же модель для рабочего процесса создания тестов.

    open_system('sldvexSFunctionHandlingExample');

    Чтобы избежать возможных изменений в модели, создайте копию старой модели выпуска в текущей рабочей папке, а затем откройте модель в R2018b или более поздних версиях. Чтобы обновить и улучшить модели, используемые в текущей версии, можно использовать upgradeadvisor.

  4. Скомпилировать S-функцию так, чтобы она была совместима с Simulink Design Verifier для создания тестового примера с помощью slcovmex (Покрытие Simulink). Дополнительные сведения см. в разделе Настройка 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'));
  5. Создание opts для опции sldvexSFunctionHandlingExample модель.

    opts = sldvoptions;
    opts.Mode = 'TestGeneration';
    opts.ModelCoverageObjectives = 'Condition';
    opts.SaveHarnessModel = 'off';
    opts.SaveReport = 'off';
    opts.SFcnSupport = 'on';
    
  6. Создание тестовых примеров с использованием указанного opts опции, использование sldvrun для анализа модели.

    [status, fileNames] = sldvrun('sldvexSFunctionHandlingExample', opts);

    После анализа программа создает файл данных Simulink Design Verifier и сохраняет его в расположении по умолчанию. <current_folder>\sldv_output\sldvexSFunctionHandlingExample_sldvdata.mat

  7. В R2015b откройте модель.

    open_system('sldvexSFunctionHandlingExample');
  8. Загрузить sldvData файл, созданный в R2018b или более поздних версиях.

    1. На вкладке Design Verifier щелкните Загрузить более ранние результаты и перейдите к sldvData MAT-файл, созданный в R2018b или более поздних версиях.

    2. Щелкните Открыть (Open).

  9. В окне Simulink Design Verifier Results Summary щелкните Simulate tests и создайте отчет об охвате модели. В отчете указывается, что 100% покрытие достигается для sldvexSFunctionHandlingExample модель.

Дополнительные сведения см. в разделах Файлы данных Simulink Design Verifier и Simulate Tests and Product Model Coverage Report.

Расширение охвата модели с помощью кода, созданного в более старой версии

В этом примере показано, как обновить охват модели, созданной в R2015b, с помощью рабочего процесса создания кода.

Для этого рабочего процесса необходимо использовать Simulink Coder™ и Embedded Coder ®.

Пример модели sldvCrossReleaseExample содержит рукописную S-функцию, которая реализует алгоритм реляционной границы. Рукописная S-функция находится в rel_sfcn.c файла. Исходный код пользователя находится в rel_comp.c файла.

Чтобы встроить S-функцию, используйте файл rel_sfcn.tlc. Дополнительные сведения см. в разделе Встроенные S-функции с TLC (встроенный кодер).

  1. Скопируйте файлы примера модели sldvCrossReleaseExample и S-Function, rel_sfcn.c, rel_comp.c и rel_sfcn.tlc в текущую рабочую папку. Скопируйте файлы заголовков rel_comp.h в текущую рабочую папку. Модель примера и вспомогательные файлы используются в R2015b для рабочего процесса интеграции кода между версиями (Embedded Coder).

    Примечание

    Пример модели sldvCrossReleaseExample создается для примера. Для выполнения рабочего процесса создания кода с использованием модели-примера выполните экспорт sldvCrossReleaseExample модель до 15b. Сохранить модель как sldvCrossReleaseExample_15b в текущей рабочей папке. Дополнительные сведения см. в разделе Экспорт модели в предыдущую версию Simulink.

  2. В R2015b MATLAB откройте sldvCrossReleaseExample_15b модель из текущей рабочей папки.

    open_system('sldvCrossReleaseExample_15b');
    

  3. Скомпилировать 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);
  4. Чтобы смоделировать модель и создать отчет о покрытии, в редакторе Simulink нажмите кнопку Run. См. раздел Просмотр результатов покрытия в модели (Simulink Coverage).

    После моделирования отчет о покрытии указывает, что 50% покрытия достигнуто для sldvCrossReleaseExample_15b модель.

  5. Чтобы создать код с помощью встроенного кодера, на вкладке Приложения выберите Встроенный кодер. Дополнительные сведения см. в разделе Создание кода с помощью встроенного кодера ® (Embedded Coder).

    На вкладке Код C (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');
    

    Программа генерирует код C для модели и сохраняет файлы в папке по умолчанию. <current_folder>\sldvCrossReleaseExample_15b_ert_rtw.

  6. Сохранение набора конфигурации модели sldvCrossReleaseExample_15b в MAT-файл. Это ConfigSet используется для установки набора конфигурации модели в R2018b и более поздних версиях.

    config_set = getActiveConfigSet('sldvCrossReleaseExample_15b');
    copiedConfig = config_set.copy;
    save('copiedConfig.mat','copiedConfig');
            
  7. В MATLAB R2018b или более поздних версиях импортируйте компоненты, экспортированные из R2015b.

    1. Перед импортом компонентов в текущей версии переименуйте или удалите rtwtypes.h файл доступен в папке <current_folder>\sldvCrossReleaseExample_15b_ert_rtw. Во время перекрестного импорта MATLAB пытается регенерировать файл с тем же именем. Если файл не удаляется или не переименовывается rtwtypes.h, MATLAB отображает ошибку.

    2. Импортируйте сгенерированный код компонента из R2015b как блок программного обеспечения в цикле (SIL).

       crossReleaseImport('sldvCrossReleaseExample_15b_ert_rtw',...
      'sldvCrossReleaseExample_15b', 'SimulationMode','SIL');

      crossReleaseImport функция создает модель без названия, которая содержит блок программного обеспечения в цикле (SIL) sldvCrossReleaseExample_15b_R2015b_sil.

  8. Добавление портов Inport и Outport в sldvCrossReleaseExample_15b_R2015b_sil блокировать и сохранить модель как sldvCrossReleaseExample_sil_18b.

  9. Примените набор конфигурации модели, аналогичный R2015b модели.

    load('copiedConfig.mat');
    attachConfigSet('sldvCrossReleaseExample_sil_18b', copiedConfig, true);
    setActiveConfigSet('sldvCrossReleaseExample_sil_18b', copiedConfig.Name);
  10. Установите режим моделирования в значение Software-in-the-Loop (SIL). Для моделирования модели в редакторе Simulink Editor нажмите кнопку Выполнить (Run).

  11. Чтобы создать тестовые примеры для кода, созданного Embedded Coder, на вкладке Design Verifier выберите Target > Code Generated as Top Model и нажмите Generate Tests. Дополнительные сведения см. в разделе Создание тестовых примеров для кода, созданного встроенным кодером.

    После анализа Simulink Design Verifier программа генерирует тестовые примеры и сохраняет sldvData в папке в расположении по умолчанию <current_folder>\sldv_output\sldvCrossReleaseExample_sil_18b.

  12. В R2015b откройте модель.

    open_system('sldvCrossReleaseExample_15b');
  13. Обновить sldvData.ModelInfomation.Name поле в sldvData совпадает с именем модели в более ранней версии. Например, sldvCrossReleaseExample_15b.slx.

  14. Создание модели кабельных трасс с помощью sldvData создана в R2018b или более поздних версиях. Эти данные состоят из тестовых примеров, созданных с помощью кода, созданного встроенным кодером. В dataFile, введите местоположение sldvData сгенерировано для sldvCrossReleaseExample_sil_18b модель.

    sldvmakeharness('sldvCrossReleaseExample_15b.slx','dataFile')

  15. Для моделирования модели с использованием всех тестовых примеров нажмите кнопку Run all.

    Программное обеспечение моделирует все тестовые случаи и генерирует отчет о покрытии. В отчете указывается, что 100% покрытие достигается для sldvCrossReleaseExample_15b модель.

Связанные темы