exponenta event banner

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

Сведения об ограничениях SIL и PIL

Embedded Coder ® позволяет выполнять моделирование ПО в цикле (SIL) и процессора в цикле (PIL) с помощью:

  • Модель сверху.

  • Блоки модели.

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

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

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

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

Для моделирования блоков SIL/PIL и SIL/PIL можно настроить настраиваемые параметры рабочего пространства, но не настраиваемые параметры диалогового окна. Сведения о настройке параметров см. в разделе Настройка и эксперимент со значениями параметров блока.

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

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

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

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

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

  • Создание кода > Интерфейс > Упаковка интерфейса кода Reusable function.

  • Создание кода > Интерфейс > Не выбрано использование динамического выделения памяти для инициализации модели.

  • Оптимизация > Поведение параметров по умолчанию: 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.
Если выбрать «Создание кода» > «Интерфейс» > «Использовать динамическое выделение памяти для инициализации модели», это ограничение не применяется.

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

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

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

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

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

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

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

  • Общий доступ к экземплярам модели - выбрано.

  • Класс хранения - Auto или Model default.

Нельзя создавать блоки SIL/PIL из моделей, которые используют локальные блоки памяти хранилища данных с выбранным параметром Общий доступ для экземпляров модели.

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

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

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

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

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

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

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

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

Невозможно подключить выходы SIL/PIL к блоку объединения

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

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

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

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

  • Стоп-блоки. SIL/PIL игнорирует блок моделирования остановки и продолжает моделирование.

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

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

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

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

  • 64-разрядная версия long и long long

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

  • int64 и uint64 при выполнении SIL кодера MATLAB.

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

  • Для поддержки 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. Однако они поддерживают непрерывное время выборки внутри компонента.

Блок модели SIL/PIL не поддерживает непрерывное время выборки.

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

Моделирование SIL/PIL блока модели поддерживает сигналы переменного размера, только если Диагностика > Привязка модели > Распространить размеры сигналов переменного размера During execution.

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

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

Регистрация внутреннего сигнала

Блоки SIL/PIL не поддерживают регистрацию сигналов. Обходной путь см. в разделе Регистрация сигналов компонента.

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

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

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

  • Поведение параметра по умолчанию: Tunable.

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

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

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

ДаНет

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

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

  • Регистрация сигналов в функциональном блоке Simulink.

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

  • Автобусы.

  • Сигналы на основе кадров, которые регистрируются как сигналы на основе выборок.

  • Непрерывное, асинхронное и запускаемое время выборки. На верхнем уровне моделей export-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.

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

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

Внедрение аппаратных средств

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

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

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

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

  • Имя myBus

  • Элементы шины - массив Simulink.BusElement объекты с этими свойствами.

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

  • Объем данных - Imported

  • Файл заголовка - busSpecification.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 объект со следующими свойствами:

  • Базовый тип - boolean.

  • Режим - Built in, boolean.

  • Объем данных - Imported.

  • Файл заголовка - myDefinitions.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-разрядного двоичного приложения.

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

При использовании инспектора данных моделирования для сравнения зарегистрированных выходных данных модели из нормального моделирования и моделирования SIL или PIL время выборки выходных данных может отличаться. Инспектор расчетных данных по-прежнему можно использовать для проверки численного соответствия выходных данных.

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

Протоколирование верхнего корневого уровня модели

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

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

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

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

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

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

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

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

  • Нормальное моделирование и моделирование SIL/PIL регистрируют сигналы шины с различными именами при соблюдении всех следующих условий:

    • 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 верхней модели программа восстанавливает код, если обнаруживает изменения в модели. Программа обнаруживает изменения, используя контрольную сумму для модели. Программа не обнаруживает изменений, вносимых в:

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

  • Унаследованные S-функции

При внесении этих изменений создайте (Ctrl-B) модель еще раз перед началом следующего моделирования PIL.

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

Тестирование кода верхней модели

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

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

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

  • Для моделей, не зависящих от времени выборки, необходимо задать для параметров конфигурации > Решатель > Периодическое ограничение времени выборки значение Ensure sample time independent.

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

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

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

  • Блок модели в режиме моделирования SIL или PIL имеет блоки, зависящие от абсолютного времени и выполняемые условно.

Выходные данные с постоянным временем выборки

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

Неинлинированные S-функции

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

Ссылочные модели, использующие одну и ту же конфигурацию целевого подключения

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

Экземпляры SIL и PIL ссылочной модели

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

Ограничения SIL/PIL блока подсистемы

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

Рабочий процесс, описанный в документе «Код, сгенерированный для тестовой атомной подсистемы», не поддерживает:

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

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

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

    • Stateflow

    • Для каждого

    • Действие

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

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

    • Завершить функцию

    • Функция симулятора

  • 'Compact' опция для ERTFilePackagingFormat если PreserveStaticInFcnDecl имеет значение 'on'.

  • Сгенерированный код AUTOSAR.

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

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

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

    • Функциональные блоки Simulink.

    • Блоки памяти хранилища данных, чтения хранилища данных и записи хранилища данных.

  • Средства LDRA Testbed ® и BullseyCoverage для анализа покрытия кода.

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

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

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

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

  • Подсистема и родительская модель имеют несколько скоростей выборки и переходов скоростей.

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

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

Мультиплексор блока PIL

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

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

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

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

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

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

  • Перед созданием блока SIL/PIL в родительской модели задайте для параметра «Параметры конфигурации» > «Решатель» > «Временное ограничение периодической выборки» значение Ensure sample time independent.

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

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