Существует три способа выполнения SIL и PIL симуляций. Вы можете использовать:
Модель верхней части.
Моделируйте блоки.
Блоки SIL и PIL, которые вы создаете из подсистем.
Чтобы сконфигурировать и запустить симуляцию SIL или PIL верхней модели:
В Simulink® Редактор, откройте свою модель.
На вкладке Apps нажмите SIL/PIL Manager.
В Mode разделе выберите SIL/PIL Simulation Only.
В Prepare разделе установите System Under Test равным Top model
.
В SIL/PIL Mode поле выберите Software-in-the-Loop (SIL)
или Processor-in-the-Loop (PIL)
. Опция поддерживает только целевые файлы системы ERT, GRT или AUTOSAR. Смотрите Параметры конфигурации модели: Генерация кода и настройте генерацию кода AUTOSAR (AUTOSAR Blockset) для получения информации о строении.
Для мониторинга сигналов компонента и данных о состоянии и сравнения значений из модели и SIL или PIL симуляций:
Для каждого сигнала, который вы хотите записать:
В редакторе Simulink выберите сигнал.
На вкладке SIL/PIL нажмите Monitor Signals. В галерее выберите следующие опции:
Log Selected Signals
Make Selected Signals Testpoints
Signal Logging
Для регистрации данных о состоянии из галереи Monitor Signals выберите State Logging.
Если параметр конфигурации Language C++
, в редакторе Code Mappings установите Data Visibility для сигналов, состояний и внутренних категорий элементов модели данных равными public
.
Если вы конфигурируете SIL симуляцию, задайте опцию portable word sizes. Затем можно плавно переключаться между режимами SIL и PIL. В диалоговом окне Параметры конфигурации установите флажок Enable portable word sizes.
При необходимости сконфигурируйте:
В разделе Run в поле Stop Time задайте время симуляции.
Нажмите Run SIL/PIL.
В конце симуляции в разделе Results щелкните Data Inspector, чтобы просмотреть результаты симуляции.
Примечание
В Windows® операционная система, брандмауэр Windows потенциально может блокировать симуляцию SIL или PIL. Чтобы разрешить симуляцию, используйте диалоговое окно «Предупреждение безопасности Windows». Для примера в Windows 7 нажмите Allow access.
Вы не можете:
Закройте модель во время симуляции. Чтобы прервать симуляцию, в Командном окне, нажмите Ctrl+C.
Измените модель во время симуляции. Можно перемещать блоки и линии, пока это не изменит поведение модели.
Можно запустить SIL верхней модели или PIL симуляции с помощью команды sim
. Программное обеспечение поддерживает (model
)sim
опция команды SrcWorkspace
для значения 'base'
.
Для PIL симуляции, вы управляете способом компиляции и выполнения кода в целевом окружении с помощью строений подключения.
Чтобы сконфигурировать блок Model для SIL или PIL симуляции:
В Редактор откройте свою модель, например rtwdemo_sil_modelblock
.
Щелкните правой кнопкой мыши ваш Model блок, например Counter A
. В контекстном меню выберите Block Parameters (ModelReference), который открывает диалоговое окно Function Параметры Блоков.
Из выпадающего списка Simulation Mode выберите необходимый режим, например Software-in-the-loop (SIL)
.
Из выпадающего списка Code interface укажите код, который вы хотите протестировать, например Model reference
.
Нажмите OK. Программа отображает режим симуляции как метку блока.
Если вы выбираете Top model
программа отображает метку блока (SIL: Top)
.
Если вы конфигурируете SIL симуляцию, задайте опцию portable word sizes. Затем можно плавно переключаться между режимами SIL и PIL. В диалоговом окне Параметры конфигурации установите флажок Enable portable word sizes.
На вкладке Apps нажмите SIL/PIL Manager.
В Mode разделе выберите SIL/PIL Simulation Only.
В Prepare разделе установите System Under Test равным Model blocks in SIL/PIL mode
.
В Top Model Mode поле выберите Normal
или Accelerator
.
При необходимости сконфигурируйте:
Профилирование выполнения кода для вашего Model блока путем конфигурирования профилирования выполнения для верхней модели.
В Run разделе:
В поле Stop Time задайте время симуляции.
Если вы хотите избежать перестроения кода после первоначальной сборки, нажмите Fast Restart. См. «Предотвращение изменений кода в нескольких симуляциях».
Нажмите Run SIL/PIL.
В конце симуляции в разделе Results нажмите Data Inspector, чтобы просмотреть результаты симуляции.
Примечание
В операционной системе Windows брандмауэр Windows потенциально может заблокировать симуляцию SIL или PIL. Чтобы разрешить симуляцию, используйте диалоговое окно «Предупреждение безопасности Windows». Для примера в Windows 7 нажмите Allow access.
Для PIL симуляции, вы управляете способом компиляции и выполнения кода в целевом окружении с помощью строений подключения.
Можно использовать один из следующих рабочих процессов:
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 симуляции, вы управляете способом компиляции и выполнения кода в целевом окружении с помощью строений подключения.
Для выполнения модульных тестов кода, сгенерированного из атомарной подсистемы:
Откройте модель, которая содержит атомарную подсистему. Для примера в Командном окне введите:
rtwdemo_sil_block
В новой папке сохраните модель как plant_model
.
Измените параметры конфигурации, которые не поддерживаются для этого рабочего процесса. В Командном окне введите:
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');
Сгенерируйте код для модели, которая содержит атомарную подсистему. В Командном окне введите:
slbuild('plant_model')
Создайте тестовую обвязку для подсистемы. Щелкните правой кнопкой мыши по Controller
и выберите Test Harness > Create for 'Controller'.
Установите свойства обвязки:
Name – controller_subsystem_harness
Sources and Sinks: Inport
и Outport
Выберите Open harness after creation.
Нажмите OK.
Simulink Test создает тестовую обвязку для Controller
подсистема.
Задайте формат для сохранения данных. В Командном окне введите:
set_param('controller_subsystem_harness', ... 'SaveFormat','Dataset')
В окне Тестовая обвязка откройте SIL/PIL Manager. На вкладке Apps нажмите SIL/PIL Manager.
При необходимости сконфигурируйте покрытие кода.
Выполняйте обратную модель и SIL симуляции:
В Mode разделе выберите Automated Verification.
В Run Automated Verification разделе нажмите Run Verification.
Из Results галереи можно:
Используйте Данные моделирования Inspector для анализа результатов. Для примера сравните controller_model_output
сигналы от модели и SIL симуляции.
Экспортируйте тест эквивалентности.
Для получения дополнительной информации смотрите Анализ результатов и Экспорт тестов.
Чтобы создать блок SIL или PIL из подсистемы и использовать этот блок для тестирования кода, сгенерированного из подсистемы:
От Configuration Parameters> Code Generation> Verification> Advanced Parameters> Create block выпадающий список, выберите любого SIL
или PIL
.
При необходимости сконфигурируйте профилирование выполнения кода.
Нажмите OK.
В окне модели щелкните правой кнопкой мыши подсистему, которую вы хотите моделировать.
Выберите C/C++ Code > Build This Subsystem.
Щелкните Build, который запускает процесс сборки подсистемы, который создает блок SIL или PIL для сгенерированного кода подсистемы.
Добавьте сгенерированный блок к окружению или тестовой обвязке модели, которая поставляет тестовые векторы или вход стимула.
Запустите симуляции с окружением или тестовой обвязкой моделью.
Примечание
В операционной системе Windows брандмауэр Windows потенциально может заблокировать симуляцию SIL или PIL. Чтобы разрешить симуляцию, используйте диалоговое окно «Предупреждение безопасности Windows». Для примера в Windows 7 нажмите Allow access.
Вы не можете создать блок SIL или PIL, если вы делаете одно из следующего:
Отключите CreateSILPILBlock
свойство.
Выберите инструмент покрытия кода.
Create block отображается затемненным.
Для SIL симуляции необходимо сконфигурировать параметры аппаратной реализации, что позволяет выполнить компиляцию сгенерированного кода для вашего компьютера разработчика. Эти настройки могут отличаться от настроек аппаратной реализации, которые вы используете при построении модели для вашего производственного оборудования. Используйте один из таких подходов.
Подход | Подробнее |
---|---|
Переносные размеры слов |
Переключение между режимами SIL и PIL без регенерации кода. Вы используете те же сгенерированные файлы исходного кода для SIL симуляции на вашем компьютере разработчика и для производственного развертывания на целевой платформе. Чтобы сконфигурировать модель для использования портативных размеров слов, установите:
|
Когда вы генерируете код для модели с заданными портативными размерами слов, генератор кода обусловливает определения типов данных в #ifdef PORTABLE_WORDSIZES /* PORTABLE_WORDSIZES defined */ … #else /* PORTABLE_WORDSIZES not defined */ … #endif /* PORTABLE_WORDSIZES */ Шаблон make-файла, который вы используете для создания кода для вашего целевого объекта, не должен содержать Для шаблона make-файла и подходов набора инструментальных средств к созданию кода, программное обеспечение задает Дополнительные сведения о шаблоне make-файла и подходах набора инструментальных средств к созданию кода см. в разделах Выбор подхода к сборке и Настройка процесса сборки. | |
Рассмотрим случай, когда ваша цель использует код, который ваш компьютер разработчика не может скомпилировать. Когда вы переходите из режима PIL в режим SIL и пытаетесь симулировать модель, вы видите ошибки компиляции. Можно попытаться обойти эту проблему, добавив файлы исходного кода к
| |
Числовые результаты могут различаться между сгенерированным кодом, выполняемым в SIL симуляции, и сгенерированным кодом, выполняемым на производственном оборудовании при одном из следующих условий:
| |
Тестирование оборудования |
Используйте этот подход только, когда вы хотите работать с ограничением портативных размеров слов. Установите:
|
Производственное оборудование |
Используйте этот подход только, когда настройки производственного оборудования соответствуют архитектуре компьютера разработчика. Установите:
|
Для получения информации о тестовых и производственных платформах см. Раздел «Настройка опций окружения во время выполнения».
Выходные параметры SIL и PIL доступны для наблюдения и сравнения с другими выходами режима симуляции. Если вы хотите изучить внутренний сигнал, можно включить регистрацию внутреннего сигнала для верхней модели или Model блока SIL или PIL. С помощью логгирования сигналов можно:
Собирайте выходы логгирования сигналов во время симуляций, например logsout
.
Регистрируйте внутренние сигналы и выходы корневого уровня компонента SIL/PIL.
Управление настройками логгирования сигналов SIL/PIL с помощью Simulink Signal Logging Selector.
Используйте Данные моделирования Inspector для:
Наблюдайте потоковые сигналы во время нормального, SIL и PIL симуляции.
Сравните записанные сигналы от normal, SIL и PIL симуляций.
Для включения регистрации сигналов в рабочем пространстве MATLAB и потоковой передачи сигналов в Данные моделирования Inspector во время симуляций SIL или PIL:
Для каждого сигнала, который вы хотите контролировать:
В редакторе Simulink выберите сигнал.
На вкладке SIL/PIL нажмите Monitor Signals. В галерее выберите следующие опции:
Log Selected Signals
Make Selected Signals Testpoints
Signal Logging
Если параметр конфигурации Language C++
, в редакторе Code Mappings установите Data Visibility для сигналов, состояний и внутренних категорий элементов модели данных равными public
.
Можно использовать другие методы для исследования внутренних сигналов компонента SIL или PIL:
Вручную направляйте сигнал на верхний уровень.
Используйте глобальные данные хранилища для доступа к внутренним сигналам:
Внутри компонента соедините Data Store Write блок с необходимым сигналом.
Вне компонента используйте блок 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 . |
|
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 Блоков и Генерации кода.