Ограничения SIL и PIL

Об ограничениях SIL и PIL

С Embedded Coder®можно запустить циклы» (SIL) и «цикл» (PIL) при помощи:

  • Модель верхнего уровня.

  • Model блоки.

  • Блоки из подсистем.

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

Общие ограничения SIL и PIL

Настраиваемые параметры и SIL/PIL

Для Model блоков SIL/PIL и SIL/PIL симуляций, можно настроить настраиваемые параметры рабочей области, но не настраиваемые параметры диалогового окна. Для получения информации о параметрах настройки смотрите Tune и Experiment with Параметры Блоков Values.

Для верхней части с настраиваемыми параметрами можно запустить симуляцию SIL/PIL, но вы не можете настроить параметры во время симуляции.

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

Описание параметраРеакция программного обеспечения
Верхняя модель SIL/PILМоделируйте блок SIL/PILБлок SIL/PIL
Параметры с применяемым классом памяти "static" возможности или "const" ключевое слово. Для примера, Custom, Const, или ConstVolatileПредупреждениеПредупреждениеПредупреждение
Параметры с многословными типами данных с фиксированной точкойПредупреждениеОшибкаПредупреждение
Параметры с типами данных, которые имеют различные размеры на хосте и целиПредупреждениеОшибкаПредупреждение

Для кода класса C++, SIL/PIL можно настроить настраиваемые параметры рабочей области, когда Parameter visibility public. Если Parameter visibility private или protected, настройка поддерживается только в том случае, если Parameter access Method или Inlined method.

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

  • Code Generation > Interface > Code interface packaging Reusable function.

  • Code Generation > Interface > Use dynamic memory allocation for model initialization не выбран.

  • Optimization > Default parameter behavior Tunable.

  • В редакторе соответствия кода для модели класс памяти по умолчанию для категории Global parameters или Local parameters установлен на Default, и модель содержит соответствующие параметры, которые используют классы памяти Auto или Model default.

Если компонент SIL/PIL не может динамически инициализировать настраиваемые параметры в rtP моделируйте структуру параметра, вы видите сообщение об ошибке, такое как следующее:

Parameter Dialog:InitialOutput in 'rtwdemo_sil_topmodel/CounterTypeA/count'
is part of the imported "rtP" structure in the generated code but cannot be
initialized by SIL or PIL. To avoid this error, make sure the parameter 
corresponds to a tunable workspace variable. Alternatively, set 
"Configuration Parameters > Code Generation > Interface > Code interface packaging" 
to ''Nonreusable function'', or search for ''Use dynamic memory allocation 
for model initialization'' in the Configuration Parameters dialog box 
and select the checkbox.
Если вы выбираете Code Generation > Interface > Use dynamic memory allocation for model initialization, это ограничение не применяется.

Для Model блока SIL/PIL, если вы задаете, Code interface быть Top modelможно настроить параметры во время выполнения симуляции. Если вы настраиваете параметры между последовательными запусками симуляции, программное обеспечение генерирует новый код для последующего запуска. Новый код использует ваши последние настройки как начальные значения параметров.

Для верхней модели или Model блока SIL/PIL, если вы меняете значение MATLAB® объект переменной или параметра (например Simulink.Parameter), которые вы храните в рабочей области, Simulink® Coder™ регенерирует код С

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

Глобальные и локальные хранилища данных

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

SIL/PIL не поддерживает локальные хранилища данных.

Блок Model SIL/PIL не поддерживает локальные блоки Data Store Memory, которые имеют следующие настройки параметра:

  • Share across model instances - Выбран.

  • Storage classAuto или Model default.

Вы не можете создать блоки SIL/PIL из моделей, которые используют блоки локальных Data Store Memory с выбранным параметром Share across model instances.

SIL/PIL не проверяет состояние ошибки Simulink Coder

SIL/PIL не проверяет состояние ошибки Simulink Coder сгенерированного кода. Этот статус ошибки помечает исключительные условия во время выполнения сгенерированного кода.

Блоки в модели могут также задать статус ошибки Simulink Coder, например, пользовательские блоки, которые вы создаете. SIL/PIL не проверяет это состояние ошибки и сообщает об ошибках.

Отсутствующие ошибки файла описания интерфейса кода

SIL/PIL требует файла описания интерфейса кода, который создается во время генерации кода для тестируемого компонента. Если файл описания интерфейса кода отсутствует, симуляция не может быть продолжено. Вы видите ошибку, сообщающую, что файл не существует. Если вы выберете неподдерживаемую опцию Classic call interface, может возникнуть эта ошибка. Поэтому не выбирайте опцию.

В блок рабочей области

Если вы включите логгирование MAT-файлов, блоки SIL/PIL и SIL/PIL верхней модели поддерживают блоки To Workspace.

Model SIL/PIL не поддерживает блоки To Workspace.

Невозможно соединить выходы SIL/PIL с блоком слияния

Если вы соединяете Model блок SIL/PIL или SIL/PIL выходов к блоку Merge, то видите ошибку, поскольку память S-функции не переиспользуется.

Неподдерживаемые блоки

SIL/PIL не поддерживает следующие блоки:

  • Scope блоки и все типы отображения во время выполнения. Для примера отображение значений портов и значений сигналов.

  • Остановите блоки. SIL/PIL игнорирует блок Stop Simulation и продолжает симулировать.

Многословие с фиксированной точкой ввода-вывода

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

Типы данных с фиксированной точкой шире 32 бит

SIL/PIL поддерживает типы данных с фиксированной точкой, которые шире 32 бит. Для примера:

  • 64-разрядная long и long long

  • 64-разрядный тип данных таймера профилирования выполнения

  • int64 и uint64 в выполнении MATLAB Coder SIL.

Применяются следующие ограничения:

  • Для поддержки 64-разрядного типа данных тип данных должен быть представимым следующим long или long long на хосте MATLAB и на целевом компьютере. В противном случае программное обеспечение использует многословный подход с фиксированной точкой, который SIL/PIL не поддерживает.

  • Программное обеспечение не поддерживает 40-битную long тип данных C6000™ цели TI.

    На панели Configuration > Hardware Implementation можно включить поддержку 64-разрядной long long тип данных. Для типов данных с шириной от 33 до 40 бит (включительно) программное обеспечение реализует типы данных с помощью 40-битного long тип данных, который SIL/PIL не поддерживает.

Замена типа данных

Программное обеспечение не поддерживает имена типов данных замены, которые вы задаете для встроенного типа данных boolean если эти имена сопоставлены с int или uint встроенный тип данных.

Непрерывные шаги расчета

Блоки SIL/PIL и SIL/PIL верхней модели не поддерживают непрерывные шаги расчета на контуре компонентов SIL или PIL. Однако они поддерживают непрерывные шаги расчета в компоненте.

Блок Model SIL/PIL не поддерживает непрерывные шаги расчета.

Сигналы переменного размера

Симуляции SIL/PIL блока Model поддерживают сигналы переменного размера, только если Diagnostics> Model Referencing> Propagate sizes of variable-size signals During execution.

Симуляции блоков SIL/PIL и SIL/PIL верхней модели рассматривают сигналы переменного размера на контуре ввода-вывода компонента SIL/PIL как сигналы фиксированного размера, которые могут привести к ошибкам при распространении размеров сигнала. Чтобы избежать таких ошибок, используйте только сигналы фиксированного размера на контуре ввода-вывода компонента SIL/PIL.

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

Внутреннее логгирование сигналов

Блоки SIL/PIL не поддерживают логгирование сигналов. Для решения проблемы смотрите Журнал сигналов компонента.

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

ОграничениеПрименяется к
Верхняя модель SIL/PILМоделируйте блок SIL/PIL
Блоки объединения сигналов, подающие сигналы, не поддерживаются для логгирования в нормальной симуляции, но регистрируются в режиме SIL/PIL. Зарегистрированные значения во время SIL/PIL совпадают с записанными значениями для выхода блока слияния.ДаНет

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

  • Default parameter behavior Tunable.

  • Сигнал постоянного шага расчета от блока Model регистрируется в верхней модели.

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

Чтобы избежать такого поведения и зарегистрировать с постоянной скоростью во всех режимах симуляции, установите Default parameter behavior равной Inlined.

ДаНет

Функции не поддерживаются:

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

  • Регистрация сигнала в Simulink Function блоке.

  • Виртуальные сигналы.

  • Автобусы.

  • Основанные на кадрах сигналы, которые регистрируются как основанные на дискретизации сигналы.

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

  • Логгирование Stateflow® состояния и локальные данные.

ДаДа

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

ДаНет

Сигналы порта состояния не поддерживаются. Нормальная симуляция приводит к ошибке. Симуляция SIL/PIL не выдает предупреждение.

ДаНет

Тип пользовательского класса памяти Other

Симуляции SIL/PIL поддерживают пользовательский класс памяти, где Type установлено на Other. Эти ограничения применяются:

  • Если фрагменты кода, возвращенные TLC- файла, связанным с пользовательским классом памяти, являются неполными, приложение SIL/PIL может не скомпилироваться или привести к неправильным результатам.

  • Пользовательские классы памяти с Imported возможности и Pointer доступ поддерживается, но для инициализации указателя необходимо указать код. Для примера можно изменить ответ на DataAccess(record, "define", "", "") чтобы предоставить определение реализации хранилища и инициализировать указатель на адрес переменной реализации.

  • Чтобы определить, является ли переменная const и поэтому не настраиваемый, процесс сборки для приложения SIL/PIL использует определение раздела памяти в пользовательском классе памяти. Если пользовательский класс памяти определяет переменную как const и не связана с const раздел памяти, целевое приложение может не скомпилироваться или вызвать ошибку во время симуляции. В этом случае ассоциируйте пользовательский класс памяти с разделом памяти, для которого Is const задается, например, MemConst. Кроме того, если SupportSILPIL является параметром конкретного экземпляра в классе пользовательских атрибутов, для связанного сигнала или параметра set CoderInfo.CustomAttributes.SupportSILPIL на false.

Неподдерживаемые ошибки реализации

Если вы используете хранилище данных, сигнал или реализацию параметра, которую SIL/PIL не поддерживает, можно увидеть ошибки, такие как следующие:

The following data interfaces have
implementations that are not supported by SIL or PIL.
data interfaces можно глобальные данные магазины, inports, outports, или parameters.

Выходной порт модели был оптимизирован посредством виртуальной оптимизации выходного порта. См. Раздел «Оптимизация виртуализированных выходных портов» Ошибка возникает из-за того, что свойства (для примера, типа данных, размерностей) сигнала или сигналов, входящих в виртуальный корневой порт выхода, были изменены путем маршрутизации сигналов одним из следующих способов:

  • Через блок Mux.

  • Через блок, который изменяет тип данных сигнала. Чтобы проверить согласованность типов данных в модели, отобразите Port Data Types.

  • Через блок, который изменяет размерности сигнала. Чтобы проверить согласованность типов данных в модели, отобразите Signal Dimensions.

Аппаратная реализация

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

PIL требует, чтобы вы конфигурировали правильные настройки Hardware Implementation для целевого окружения, включая упорядоченное расположение байтов для целевых объектов. Если вы не задаете правильное упорядоченное расположение байтов, PIL симуляция прекращает работать, отображая неопределенное поведение.

Элементы шины, сопоставленные с импортированными определениями битового поля

Если вы сопоставляете элементы шины Simulink с битовыми полями через импортированный файл заголовка, симуляция SIL или PIL приводит к ошибке сборки. Например, если у вашей модели есть Inport блок, соединенный с шиной, которая является Simulink.Bus объект со следующими свойствами:

  • NamemyBus

  • Bus elements - массив Simulink.BusElement объекты с этими свойствами.

    ИмяDataTypeСложностьРазмерности
    bitField0 booleanreal 1
    bitField1 boolean real 1
    bitField2 booleanreal 1
    bitField3 booleanreal 1
    bitField4 booleanreal1
    bitField5booleanreal1

  • Data scopeImported

  • Header filebusSpecification.h. Этот файл содержит myBus, который задает типы данных битового поля C для элементов шины.

    typedef struct myBus 
    {
       unsigned int bitField0 : 1;
       unsigned int bitField1 : 1;
       unsigned int bitField2 : 1;
       unsigned int bitField3 : 1;
       unsigned int bitField4 : 1;
       unsigned int bitField5 : 1;
    } myBus;

Несоответствие размера между типами данных Simulink и целевого компьютера

Когда тип данных Simulink и соответствующий тип данных целевых компьютеров различаются по размеру, SIL или PIL симуляция вызывает ошибку. Это несоответствие размеров может возникнуть, если вы сопоставите тип данных Simulink с типом данных целевых компьютеров через определения в импортированном заголовочном файле. Для примера, если вы создаете псевдоним типа данных, T_BOOL, который является Simulink.AliasType объект со следующими свойствами:

  • Base typeboolean.

  • ModeBuilt in, boolean.

  • Data scopeImported.

  • Header filemyDefinitions.h. Этот файл определяет T_BOOL как тип перечисленных данных:

    typedef enum _BOOL_TYPE
    {
      FALSE           = 0,
      TRUE            = 1
    } BOOL_TYPE;
    
    typedef BOOL_TYPE T_BOOL;
    В этом случае компилятор для целевого компьютера определяет размер T_BOOL, который может отличаться от размера типа данных Simulink, boolean.

SIL симуляции с целевым пользовательским кодом

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

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

  • Запустите PIL симуляцию.

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

Шаг расчета различия в сравнениях Данных моделирования инспекторов

Если вы используете Данные Моделирования Inspector, чтобы сравнить результаты регистрации модели из нормальных и SIL или PIL симуляций, шаги расчета выходов могут отличаться. Можно по-прежнему использовать Данные моделирования Inspector, чтобы убедиться, что выходы совпадают численно.

Верхние модели ограничений SIL/PIL

Логгирование корневого уровня верхней модели

SIL/PIL верхней модели поддерживает регистрацию сигналов, подключенных к входным и выходным портам корневого уровня. API на C не требуется. Логгирование корневого уровня имеет следующие ограничения:

  • Характеристики записанных данных, такие как тип данных, шаг расчета и размерностей, должны совпадать с характеристиками входных и выходных портов корневого уровня (а не с характеристиками подключенного сигнала).

    В некоторых случаях могут быть различия в типе данных и размерностях между регистрируемым сигналом и корневым входным или выходным портом, с которым соединяется сигнал. Рассмотрим следующие примеры.

    • Если регистрируемый сигнал имеет матричные размерности [1x5] но выходной порт, соединенный с сигналом, имеет векторные размерности (5), тогда данные, записанные во время SIL или PIL симуляции, имеют векторные размерности (5).

    • Если регистрируемый сигнал имеет скалярные размерности, но выходной порт, соединенный с сигналом, имеет матричные размерности [1x1], тогда данные, записанные во время SIL или PIL симуляции, имеют матричные размерности [1x1].

  • Сигналы, подключенные к дублированным входным портам, не регистрируются во время симуляции SIL/PIL. Предупреждение не выдается.

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

  • Селектор/ DataLoggingOverride< reservedrangesplaceholder0 логгирования сигналов механизм переопределения не поддерживается.

  • Симуляции Normal и SIL/PIL регистрируют сигналы шины с именами, которые отличаются, когда применяются все следующие условия:

    • The SaveOutput или SignalLogging параметр конфигурации on.

    • Имена элементов в сигнале шины отличаются от соответствующих имен в объекте шины. Для примера, когда InheritFromInputs параметр для блока Bus Creator установлен в 'on'.

  • Программа вставляет суффикс _wrapper для выхода логгирования, если формат сохранения Structure или Structure with time и вы запускаете sim команда не задает формат с одним выходом. Программное обеспечение добавляет _wrapper к имени блока для сигналов в yout. Если формат сохранения Arrayпрограммное обеспечение не добавляет суффикс. Для примера:

    >> yout.signals
    
    ans =
            values: [11x1 double]
        dimensions: 1
             label: 'SignalLogging'
         blockName: 'sillogging_wrapper/OutputLogging'
    

    Чтобы избежать такого поведения, запустите симуляции командной строки с sim команда, задающая формат с одним выходом. Смотрите Выполняйте Симуляции Программно.

Поддержка коллбэка

SIL/PIL не поддерживает коллбэки (модель или блок) StartFcn и StopFcn.

Примечание

SIL/PIL верхней модели поддерживает коллбэк InitFcn.

Инкрементальная сборка

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

  • The HeaderFile свойство Simulink.AliasType объект

  • Устаревшие S-функции

Если вы вносите эти изменения, создайте (Ctrl-B) свою модель снова, прежде чем начинать следующую PIL симуляцию.

Блок Model

Проверка кода верхней модели

Применяются следующие ограничения:

  • Поскольку аргументы модели не применяются к модели верхней части, когда Code interface параметров блоков установлено на Top modelпрограммное обеспечение не поддерживает Model arguments параметров блоков.

  • Условное выполнение не применяется к верхней модели. Если блок Model настроен на выполнение условно, и Code interface параметров блоков установлено на 'Top model'программное обеспечение создает ошибку при запуске SIL или PIL симуляции.

  • Для выборочных независимых от времени моделей необходимо задать Configuration Parameters > Solver > Periodic sample time constraint Ensure sample time independent.

Условно выполненная подсистема

Вы видите ошибку, если:

  • Вы помещаете свой Model блок в SIL или PIL режиме симуляции в условно выполненную подсистему, и ссылочная модель является многоразовой (то есть имеет несколько шагов расчета). Односкоростные ссылочные модели (с одним шагом расчета) не затрагиваются.

  • Ваш Model блок в режиме SIL или PIL симуляции имеет блоки, которые зависят от абсолютного времени и выполняются по условию.

Выходы с постоянным шагом расчета

Если параметры блоков Code interface Top model, Model блок SIL/PIL поддерживает выходы с постоянным шагом расчета.

Нелинейные S-функции

SIL/PIL симуляции блоков Model не поддерживают неинлинфицированные S-функции.

Ссылочные Модели, которые используют то же целевое Строение подключения

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

SIL и PIL- Образцов ссылочной модели

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

Ограничения SIL/PIL блока Subsystem

Ограничения рабочего процесса атомарной подсистемы

Рабочий процесс, описанный в Test Atomic Subsystem Generated Code, не поддерживает:

  • Эти типы подсистем:

    • Виртуальный

    • Вызов функции

    • Stateflow

    • Для каждого

    • Действие

    • Инициализация функции

    • Функция сброса

    • Оконечная функция

    • Функция Simulink

  • The 'Compact' опция для ERTFilePackagingFormat если PreserveStaticInFcnDecl установлено в 'on'.

  • AUTOSAR сгенерированного кода.

  • Подсистемы, которые генерируют встроенный код. Подсистема параметров блоков RTWSystemCode должен быть 'Nonreusable function' или 'Reusable function'.

  • Подсистемы, которые содержат:

    • Ссылка на модели.

    • Simulink Function блоки.

    • Data Store Memory, Data Store Read и Data Store Write блоки.

  • Тестирование LDRA® и инструменты BullseyeCoverage для анализа покрытия кода.

  • Сигнал и состояние логгирования данных.

  • Виртуальные шины в интерфейсе подсистемы.

Результаты от модели и SIL или PIL симуляций могут отличаться численно, если:

  • Подсистема использует не конечные числа, например NaN и Inf.

  • Подсистема и родительская модель имеют несколько частот дискретизации и переходов скорости.

Распространение исполнительных условий с вариантным источником и вариантными блоками приемника

SIL/PIL блока симуляции не поддерживают распространение вариантных условий между контурами компонентов.

PIL-блок Mux

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

Покрытие кода

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

Подсистема с унаследованными блоками Шага расчета

Когда вы создаете блок SIL/PIL из подсистемы, которая имеет блоки с унаследованными шагами расчета, сгенерированный код и оболочка SIL/PIL получают шаг расчета исходной родительской модели. Если вы используете блок SIL/PIL в контексте, который не допускает явных шагов расчета, то, пример, в пределах триггируемой подсистемы, вы видите ошибку.

Попробуйте один из следующих обходных путей:

  • Прежде чем Вы создадите блок SIL/PIL, в родительской модели, установите Configuration Parameters> Solver> Periodic sample time constraint к Ensure sample time independent.

  • Используя подсистему, создайте Model блок, который не зависит от шага расчета. С помощью этого блока запустите Model блок SIL/PIL симуляции.

Похожие темы