Сконфигурируйте и запустите SIL симуляцию

Существует три способа выполнения SIL и PIL симуляций. Вы можете использовать:

  • Модель верхней части.

  • Моделируйте блоки.

  • Блоки SIL и PIL, которые вы создаете из подсистем.

Симуляция с верхней моделью

Чтобы сконфигурировать и запустить симуляцию SIL или PIL верхней модели:

  1. В Simulink® Редактор, откройте свою модель.

  2. На вкладке Apps нажмите SIL/PIL Manager.

  3. В Mode разделе выберите SIL/PIL Simulation Only.

  4. В Prepare разделе установите System Under Test равным Top model.

  5. В SIL/PIL Mode поле выберите Software-in-the-Loop (SIL) или Processor-in-the-Loop (PIL). Опция поддерживает только целевые файлы системы ERT, GRT или AUTOSAR. Смотрите Параметры конфигурации модели: Генерация кода и настройте генерацию кода AUTOSAR (AUTOSAR Blockset) для получения информации о строении.

  6. Для мониторинга сигналов компонента и данных о состоянии и сравнения значений из модели и SIL или PIL симуляций:

    1. Для каждого сигнала, который вы хотите записать:

      1. В редакторе Simulink выберите сигнал.

      2. На вкладке SIL/PIL нажмите Monitor Signals. В галерее выберите следующие опции:

        • Log Selected Signals

        • Make Selected Signals Testpoints

        • Signal Logging

    2. Для регистрации данных о состоянии из галереи Monitor Signals выберите State Logging.

    3. Если параметр конфигурации Language C++, в редакторе Code Mappings установите Data Visibility для сигналов, состояний и внутренних категорий элементов модели данных равными public.

  7. Если вы конфигурируете SIL симуляцию, задайте опцию portable word sizes. Затем можно плавно переключаться между режимами SIL и PIL. В диалоговом окне Параметры конфигурации установите флажок Enable portable word sizes.

  8. При необходимости сконфигурируйте:

  9. В разделе Run в поле Stop Time задайте время симуляции.

  10. Нажмите Run SIL/PIL.

  11. В конце симуляции в разделе Results щелкните Data Inspector, чтобы просмотреть результаты симуляции.

Примечание

В Windows® операционная система, брандмауэр Windows потенциально может блокировать симуляцию SIL или PIL. Чтобы разрешить симуляцию, используйте диалоговое окно «Предупреждение безопасности Windows». Для примера в Windows 7 нажмите Allow access.

Вы не можете:

  • Закройте модель во время симуляции. Чтобы прервать симуляцию, в Командном окне, нажмите Ctrl+C.

  • Измените модель во время симуляции. Можно перемещать блоки и линии, пока это не изменит поведение модели.

Можно запустить SIL верхней модели или PIL симуляции с помощью команды sim (model). Программное обеспечение поддерживает sim опция команды SrcWorkspace для значения 'base'.

Для PIL симуляции, вы управляете способом компиляции и выполнения кода в целевом окружении с помощью строений подключения.

Симуляция с блоками Model

Чтобы сконфигурировать блок Model для SIL или PIL симуляции:

  1. В Редактор откройте свою модель, например rtwdemo_sil_modelblock.

  2. Щелкните правой кнопкой мыши ваш Model блок, например Counter A. В контекстном меню выберите Block Parameters (ModelReference), который открывает диалоговое окно Function Параметры Блоков.

  3. Из выпадающего списка Simulation Mode выберите необходимый режим, например Software-in-the-loop (SIL).

  4. Из выпадающего списка Code interface укажите код, который вы хотите протестировать, например Model reference.

  5. Нажмите OK. Программа отображает режим симуляции как метку блока.

    Если вы выбираете Top modelпрограмма отображает метку блока (SIL: Top).

  6. Если вы конфигурируете SIL симуляцию, задайте опцию portable word sizes. Затем можно плавно переключаться между режимами SIL и PIL. В диалоговом окне Параметры конфигурации установите флажок Enable portable word sizes.

  7. На вкладке Apps нажмите SIL/PIL Manager.

  8. В Mode разделе выберите SIL/PIL Simulation Only.

  9. В Prepare разделе установите System Under Test равным Model blocks in SIL/PIL mode.

  10. В Top Model Mode поле выберите Normal или Accelerator.

  11. При необходимости сконфигурируйте:

  12. В Run разделе:

  13. В конце симуляции в разделе Results нажмите Data Inspector, чтобы просмотреть результаты симуляции.

Примечание

В операционной системе Windows брандмауэр Windows потенциально может заблокировать симуляцию SIL или PIL. Чтобы разрешить симуляцию, используйте диалоговое окно «Предупреждение безопасности Windows». Для примера в Windows 7 нажмите Allow access.

Для PIL симуляции, вы управляете способом компиляции и выполнения кода в целевом окружении с помощью строений подключения.

Симуляция с блоками Subsystem

Можно использовать один из следующих рабочих процессов:

  • Simulink Test™ жгут с SIL/PIL Manager - Если у вас есть модель, которая содержит подсистемы, можно использовать Simulink Test и SIL/PIL Manager, чтобы выполнить модульные тесты на коде, сгенерированном из подсистем. Этот рабочий процесс проверяет сгенерированный код подсистемы как часть кода, сгенерированного из родительской модели. Для получения дополнительной информации о рабочем процессе смотрите Test Atomic Subsystem Generated Code.

    Если этот процесс не поддерживает подсистему, используйте в качестве альтернативы процесс блока SIL или PIL.

  • Блок SIL или PIL - создайте блок SIL или PIL из подсистемы, а затем запустите блок в окружение или тестовую обвязку модели, которая поставляет тестовые векторы или вход стимула. Этот рабочий процесс генерирует и тестирует новый автономный код из подсистемы. Для получения дополнительной информации смотрите SIL или PIL Block Simulation.

Для PIL симуляции, вы управляете способом компиляции и выполнения кода в целевом окружении с помощью строений подключения.

Тестируйте атомарную подсистему Сгенерированного кода

Для выполнения модульных тестов кода, сгенерированного из атомарной подсистемы:

  1. Откройте модель, которая содержит атомарную подсистему. Для примера в Командном окне введите:

    rtwdemo_sil_block

  2. В новой папке сохраните модель как plant_model.

  3. Измените параметры конфигурации, которые не поддерживаются для этого рабочего процесса. В Командном окне введите:

    set_param('plant_model', ...
              'CreateSILPILBlock','None', ...
              'PreserveStaticInFcnDecls', 'Off');
    
    % For this example, use these values for block parameters.
    set_param('plant_model/Controller', ...
              'RTWSystemCode','Nonreusable function', ...
              'RTWFileNameOpts', 'Auto');
    Для получения дополнительной информации об ограничениях см. Раздел «Ограничения рабочего процесса атомарной подсистемы».

  4. Сгенерируйте код для модели, которая содержит атомарную подсистему. В Командном окне введите:

    slbuild('plant_model')

  5. Создайте тестовую обвязку для подсистемы. Щелкните правой кнопкой мыши по Controller и выберите Test Harness > Create for 'Controller'.

  6. Установите свойства обвязки:

    • Namecontroller_subsystem_harness

    • Sources and Sinks: Inport и Outport

    • Выберите Open harness after creation.

    Нажмите OK.

    Simulink Test создает тестовую обвязку для Controller подсистема.

  7. Задайте формат для сохранения данных. В Командном окне введите:

    set_param('controller_subsystem_harness', ...
              'SaveFormat','Dataset')

  8. В окне Тестовая обвязка откройте SIL/PIL Manager. На вкладке Apps нажмите SIL/PIL Manager.

  9. При необходимости сконфигурируйте покрытие кода.

  10. Выполняйте обратную модель и SIL симуляции:

    1. В Mode разделе выберите Automated Verification.

    2. В Run Automated Verification разделе нажмите Run Verification.

  11. Из Results галереи можно:

    • Используйте Данные моделирования Inspector для анализа результатов. Для примера сравните controller_model_output сигналы от модели и SIL симуляции.

    • Экспортируйте тест эквивалентности.

    Для получения дополнительной информации смотрите Анализ результатов и Экспорт тестов.

Симуляция блоков SIL или PIL

Чтобы создать блок SIL или PIL из подсистемы и использовать этот блок для тестирования кода, сгенерированного из подсистемы:

  1. От Configuration Parameters> Code Generation> Verification> Advanced Parameters> Create block выпадающий список, выберите любого SIL или PIL.

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

  3. Нажмите OK.

  4. В окне модели щелкните правой кнопкой мыши подсистему, которую вы хотите моделировать.

  5. Выберите C/C++ Code > Build This Subsystem.

  6. Щелкните Build, который запускает процесс сборки подсистемы, который создает блок SIL или PIL для сгенерированного кода подсистемы.

  7. Добавьте сгенерированный блок к окружению или тестовой обвязке модели, которая поставляет тестовые векторы или вход стимула.

  8. Запустите симуляции с окружением или тестовой обвязкой моделью.

Примечание

В операционной системе Windows брандмауэр Windows потенциально может заблокировать симуляцию SIL или PIL. Чтобы разрешить симуляцию, используйте диалоговое окно «Предупреждение безопасности Windows». Для примера в Windows 7 нажмите Allow access.

Вы не можете создать блок SIL или PIL, если вы делаете одно из следующего:

  • Отключите CreateSILPILBlock свойство.

  • Выберите инструмент покрытия кода.

Create block отображается затемненным.

Настройка параметров аппаратной реализации

Для SIL симуляции необходимо сконфигурировать параметры аппаратной реализации, что позволяет выполнить компиляцию сгенерированного кода для вашего компьютера разработчика. Эти настройки могут отличаться от настроек аппаратной реализации, которые вы используете при построении модели для вашего производственного оборудования. Используйте один из таких подходов.

ПодходПодробнее
Переносные размеры слов

Переключение между режимами SIL и PIL без регенерации кода. Вы используете те же сгенерированные файлы исходного кода для SIL симуляции на вашем компьютере разработчика и для производственного развертывания на целевой платформе.

Чтобы сконфигурировать модель для использования портативных размеров слов, установите:

  • ProdEqTarget на 'on'.

  • PortableWordSizes на 'on'.

Когда вы генерируете код для модели с заданными портативными размерами слов, генератор кода обусловливает определения типов данных в rtwtypes.h:

#ifdef PORTABLE_WORDSIZES           /* PORTABLE_WORDSIZES defined */

…

#else                               /* PORTABLE_WORDSIZES not defined */

…

#endif                              /* PORTABLE_WORDSIZES */

Шаблон make-файла, который вы используете для создания кода для вашего целевого объекта, не должен содержать PORTABLE_WORDSIZES определение.

Для шаблона make-файла и подходов набора инструментальных средств к созданию кода, программное обеспечение задает -DPORTABLE_WORDSIZES для компилятора только для узловых сборок.

Дополнительные сведения о шаблоне make-файла и подходах набора инструментальных средств к созданию кода см. в разделах Выбор подхода к сборке и Настройка процесса сборки.

Рассмотрим случай, когда ваша цель использует код, который ваш компьютер разработчика не может скомпилировать. Когда вы переходите из режима PIL в режим SIL и пытаетесь симулировать модель, вы видите ошибки компиляции. Можно попытаться обойти эту проблему, добавив файлы исходного кода к SkipForSil сгруппировать в информационном объекте сборки RTW.BuildInfo. SIL-сборка на хост-платформе не компилирует исходные файлы, существующие в SkipForSil группа. Для получения информации о том, как вы добавляете файлы исходного кода в группу в информационном объекте сборки, смотрите:

Числовые результаты могут различаться между сгенерированным кодом, выполняемым в SIL симуляции, и сгенерированным кодом, выполняемым на производственном оборудовании при одном из следующих условий:

  • Ваша модель содержит блоки, реализованные в TLC, для которых интегральное продвижение C в выражениях может вести себя по-разному между MATLAB® хост и конечный объект производственного оборудования. PIL симуляции совпадают, но результаты SIL симуляции могут отличаться.

  • Ваше производственное оборудование реализует округление до Floor для целочисленного деления со знаком и делений в вашей модели используется режим округления Ceiling, Floor, Simplest, или Zero. PIL симуляции совпадают, но результаты SIL симуляции могут отличаться.

  • Байт- упорядоченное расположение для вашего производственного оборудования Big Endian. PIL симуляции совпадают, но результаты SIL симуляции могут отличаться. Для примера, когда сгенерированный код зависит от порядка байтов, и сгенерированный производственный код реализован с целью, чтобы его поведение совпадало с нормальным поведением симуляции.

  • Вы используете пользовательский код с Stateflow® продукт. В этом случае операторы преобразования типов не вставляются в пользовательский код, чего может потребовать поведение целевого переполнения на хосте. PIL симуляции совпадают, но результаты SIL симуляции могут отличаться.

Тестирование оборудования

Используйте этот подход только, когда вы хотите работать с ограничением портативных размеров слов.

Установите:

  • PortableWordSizes на 'off'.

  • ProdEqTarget на 'off'.

  • TargetHWDeviceType на 'Custom Processor->MATLAB Host Processor'.

Производственное оборудование

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

Установите:

  • PortableWordSizes на 'off'.

  • ProdEqTarget на 'on'.

  • ProdHWDeviceType для соответствия архитектуре компьютера разработчика.

Для получения информации о тестовых и производственных платформах см. Раздел «Настройка опций окружения во время выполнения».

Журнал сигналов компонента

Выходные параметры SIL и PIL доступны для наблюдения и сравнения с другими выходами режима симуляции. Если вы хотите изучить внутренний сигнал, можно включить регистрацию внутреннего сигнала для верхней модели или Model блока SIL или PIL. С помощью логгирования сигналов можно:

  • Собирайте выходы логгирования сигналов во время симуляций, например logsout.

  • Регистрируйте внутренние сигналы и выходы корневого уровня компонента SIL/PIL.

  • Управление настройками логгирования сигналов SIL/PIL с помощью Simulink Signal Logging Selector.

  • Используйте Данные моделирования Inspector для:

    • Наблюдайте потоковые сигналы во время нормального, SIL и PIL симуляции.

    • Сравните записанные сигналы от normal, SIL и PIL симуляций.

Для включения регистрации сигналов в рабочем пространстве MATLAB и потоковой передачи сигналов в Данные моделирования Inspector во время симуляций SIL или PIL:

  1. Для каждого сигнала, который вы хотите контролировать:

    1. В редакторе Simulink выберите сигнал.

    2. На вкладке SIL/PIL нажмите Monitor Signals. В галерее выберите следующие опции:

      • Log Selected Signals

      • Make Selected Signals Testpoints

      • Signal Logging

  2. Если параметр конфигурации Language C++, в редакторе Code Mappings установите Data Visibility для сигналов, состояний и внутренних категорий элементов модели данных равными public.

Можно использовать другие методы для исследования внутренних сигналов компонента SIL или PIL:

  • Вручную направляйте сигнал на верхний уровень.

  • Используйте глобальные данные хранилища для доступа к внутренним сигналам:

    1. Внутри компонента соедините Data Store Write блок с необходимым сигналом.

    2. Вне компонента используйте блок Data Store Read для доступа к значению сигналов.

  • Используйте логгирование MAT-файлов. Обратите внимание, что:

    • Логгирование MAT-файлов не поддерживает логгирование сигналов. Если логгирование сигнала включено, logsout сгенерирован, но не сохранен в MAT-файле.

    • Для PIL целевое окружение должна поддерживать логгирование MAT-файлов.

Для получения дополнительной информации смотрите:

Предотвратите изменения кода в нескольких симуляциях

Используйте Model блок SIL/PIL или блок SIL/PIL с быстрым перезапуском, когда вы хотите запустить несколько SIL или PIL симуляций с:

  • Меняющиеся тестовые векторы (наборы параметров и входные данные).

  • Неизменный сгенерированный код, то есть ни одна из симуляций не регенерирует или не перестраивает код после первоначальной сборки. Для примера необходимо избежать инкрементальной генерации кода, к которой может привести начальное изменение значения.

Для Model блока SIL/PIL можно также использовать один из следующих методов:

  • В модели тестовой обвязки, в диалоговом окне Параметров конфигурации, установите Rebuild равным Never. Если параметр Model блока Code interface Model referenceпрограммное обеспечение не перестраивает ссылку на код модели. (Если параметр Code interface Top modelпрограмма игнорирует настройку Rebuild.)

  • Создайте защищенную модель и сгенерируйте исходный или двоичный код. Затем вставьте защищенную модель в модель тестовой обвязки. С помощью этого метода можно проверить код верхней модели (с автономным интерфейсом кода) или модель-ссылка код.

Для альтернативных методов выполнения Model блока SIL/PIL, в следующей таблице суммируется поведение генерации кода после начальной сборки.

Подход SIL и PILПоведение генерации кода после начальной сборки
Model блокRebuild параметру конфигурации тестовой обвязки задано значение Never.
  1. Код компонента (алгоритма) из начальной сборки не регенерируется.

  2. make-файл кода компонента не вызывается.

  3. Файлы приложения SIL/PIL из начальной сборки не регенерируются.

  4. Вызывается файл make-файла приложения SIL/PIL.

Model блок (защищенная модель)Исходный код из защищенной модели.Вы наблюдаете то же поведение, за исключением функции 2. В этом случае запускается make-файл кода компонента. Код компонента перекомпилирован и связан для создания нового объектного кода.
Бинарный код из защищенной модели.Вы наблюдаете функции 1-4.

Для получения дополнительной информации смотрите:

Ускорение тестирования

Если ваша модель имеет блоки SIL/PIL или блоки Model в режиме SIL/PIL, можно ускорить проверку путем:

  • Выполнение симуляции верхней модели в режиме Accelerator. Этот режим ускоряет симуляцию компонентов модели, которые не находятся в SIL или PIL режиме.

  • Включение быстрого перезапуска. После первой симуляции можно настроить параметры и перезапустить симуляции без перекомпиляции модели. SIL/PIL Manager предоставляет кнопку Fast Restart.

Примечание

Режимы симуляции SIL и PIL не предназначены для сокращения времени симуляции модели. Если вы хотите ускорить симуляцию модели, используйте быстрый режим Accelerator. Для получения дополнительной информации смотрите Что такое ускорение?.

Симуляция с вызовами функций

Используйте Simulink Function блок и Function Caller блок, когда вы хотите:

  • Сгенерируйте код, который вызывает функцию к внешнему коду, например, драйверу или унаследованному коду.

  • Обеспечьте подсистему, которая ведет себя как внешний код в нормальных, SIL или PIL симуляциях.

Пример в разделе «Настройка вызовов для авто-РСА службы NVRAM Manager (AUTOSAR Blockset)» показов, как можно настроить вызовы клиентов к сервисным интерфейсам Basic Software (BSW) NVRAM Manager (NvM) из программного компонента AUTOSAR. В симуляции Simulink реализует вызовы BSW NvM через Simulink Function и предварительно сконфигурированные блоки Function Caller. Для конечной системы вы соединяете заглушки вызова функции с кодом внешней функции BSW, который запускается в среде выполнения AUTOSAR (RTE).

Для получения дополнительной информации см. Simulink Function Блоков и Генерации кода.

Похожие темы