exponenta event banner

Функции и ограничения S-функции

Функции S-функции

В следующих таблицах приведены обзоры функций, поддерживаемых различными типами S-функций. Первая таблица посвящена рукописным S-функциям. Во второй таблице сравниваются функции S-функций, автоматически созданные с помощью S-Function Builder или Legacy Code Tool.

Особенности написанных вручную S-функций

ОсобенностьLevel-2 S-функция MATLABРукописная S-функция C MEX
Типы данныхПоддерживает любые типы данных, поддерживаемые программным обеспечением Simulink ®, включая типы с фиксированной точкой.Поддерживает любые типы данных, поддерживаемые программным обеспечением Simulink, включая типы с фиксированной точкой.
Числовые типыПоддерживает реальные и сложные сигналы.Поддерживает реальные и сложные сигналы.
Опора рамыПоддерживает кадрированные и некадрированные сигналы.Поддерживает кадрированные и некадрированные сигналы.
Размеры портаПоддерживает скалярные, 1-D и многомерные входные и выходные сигналы.Поддерживает скалярные, 1-D и многомерные входные и выходные сигналы.
S-функциональный APIПоддерживает больший набор S-function API. Список поддерживаемых методов см. в разделе Методы обратного вызова Level-2 MATLAB S-Function.Поддерживает весь API S-функции.
Поддержка генерации кодаДля создания кода требуется рукописный файл TLC.Изначально поддерживает генерацию кода. Требуется рукописный файл TLC для встраивания функции S во время создания кода.
Режим Simulink AcceleratorПредоставляет возможность использовать TLC-файл в режиме Accelerator вместо того, чтобы работать с интерпретацией.Предоставляет возможность использования файла TLC или MEX в режиме ускорителя.
Ссылка на модельПоддержка моделирования в обычном режиме и режиме ускорителя при использовании в ссылочной модели. Требуется файл TLC для режима ускорителя.Предоставляет опции для выборки наследования времени и поддержки нормального режима при использовании в ссылочной модели. См. справочные требования к модели и ограничения
Simulink.
AliasType
и Simulink.
NumericType
поддержка
Поддержки Simulink.NumericType и Simulink.AliasType (см. раздел Настройка пользовательских типов данных).Поддерживает все эти классы (см. раздел Настройка пользовательских типов данных).
Входные и выходные сигналы шиныНе поддерживает входные или выходные сигналы шины.Поддерживает невиртуальные входные или выходные сигналы шины.
Настраиваемые параметры и параметры времени выполненияПоддерживает настраиваемые параметры и параметры времени выполнения.Поддерживает настраиваемые параметры и параметры времени выполнения.
Рабочие векторыПоддерживает векторы DWork (см. Использование векторов DWork в разделе Level-2 S-функций MATLAB).Поддерживает все типы рабочих векторов (см. Типы векторов DWork).

Особенности автоматически генерируемых S-функций

ОсобенностьПостроитель S-функцийУстаревший инструмент кода
Типы данныхПоддерживает любые типы данных, поддерживаемые программным обеспечением Simulink, включая типы с фиксированной точкой.Поддерживает все встроенные типы данных. Чтобы использовать тип данных с фиксированной точкой, необходимо указать тип данных как Simulink.NumericType. Нельзя использовать тип фиксированной точки с неопределенным масштабированием.
Числовые типыПоддерживает реальные и сложные сигналы.Поддерживает сложные сигналы только для встроенных типов данных.
Опора рамыПоддерживает кадрированные и некадрированные сигналы.Не поддерживает сигналы на основе кадров.
Размеры портаПоддерживает скалярные, 1-D и многомерные входные и выходные сигналы.Поддерживает скалярные, 1-D и многомерные входные и выходные сигналы.
S-функциональный APIПоддерживает создание пользовательских mdlInitializeSizes, mdlInitializeSampleTimes, mdlDerivatives, mdlUpdate, и mdlOutputs. Также позволяет автоматически генерировать mdlStart и mdlTerminate.Поддержки mdlInitializeSizes, mdlInitializeSampleTimes, mdlStart, mdlInitializeConditions, mdlOutputs, и mdlTerminate.
Поддержка генерации кодаИзначально поддерживает генерацию кода. Кроме того, автоматически генерирует файл TLC для встраивания функции S во время генерации кода.Изначально поддерживает создание кода, оптимизированного для встраиваемых систем. Кроме того, автоматически создает файл TLC, который поддерживает сворачивание выражений для встраивания S-функции во время создания кода.

Режим Accelerator™ Simulink

Использует файл TLC в режиме ускорителя, если файл был создан. В противном случае используется файл MEX.Предоставляет возможность использования файла TLC или MEX в режиме ускорителя.
Ссылка на модельИспользует поведение по умолчанию при использовании в ссылочной модели.Использует поведение по умолчанию при использовании в ссылочной модели.
Simulink.AliasType и Simulink.NumericTypeНе поддерживает эти классы.Поддержки Simulink.AliasType и Simulink.NumericType.
Входные и выходные сигналы шиныПоддерживает входные и выходные сигналы шины. Пример см. в разделе sfbuilder_bususage.Поддерживает входные и выходные сигналы шины. Необходимо определить Simulink.Bus объект в рабочей области MATLAB ®, эквивалентный структуре входных или выходных данных, используемых в унаследованном коде. Не поддерживает параметры шины.
Настраиваемые параметры и параметры времени выполненияПоддерживает настраиваемые параметры только во время моделирования. Поддерживает параметры времени выполнения.Поддерживает настраиваемые параметры и параметры времени выполнения.
Рабочие векторыНе обеспечивает доступ к рабочим векторам.Поддержка векторов DWork с типом использования SS_DWORK_USED_AS_DWORK. См. раздел Типы векторов DWork для обсуждения различных типов использования векторов DWork.

Ограничения функции S

В следующей таблице приведены основные ограничения различных типов S-функций.

ВнедрениеОграничения
Level-2 S-функции MATLAB
  • Не поддерживает входные и выходные сигналы шины.

  • Невозможно включить устаревший код во время моделирования, только во время создания кода через файл TLC.

Рукописная S-функция C MEXПоддерживает ссылку на модель с некоторыми ограничениями. См. S-Функции в ссылочных моделях.
Построитель S-функций
  • Генерирует код S-функции с помощью функции-оболочки, которая несет дополнительные издержки.

  • Не поддерживает следующие функции S-функции:

    • Рабочие векторы

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

    • Многократное или ненулевое время смещения

    • Входные и выходные сигналы динамического размера для S-функции с несколькими входными и выходными портами

Примечание

S-функции с одним входом и одним портом вывода могут иметь сигналы динамического размера

Устаревший инструмент кода
  • Генерирует S-функции C MEX для существующих функций, написанных только на языке C или C++. Инструмент не поддерживает преобразование функций MATLAB или Fortran.

  • Может взаимодействовать с функциями C++, но не с объектами C++.

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

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

  • Всегда устанавливает флаг S-функции для прямого прохождения (sizes.DirFeedthroughКому true.

  • Поддерживает только непрерывный, но фиксированный шаг времени, время выборки и опцию смещения.

  • Поддерживает комплексные номера, но только со встроенными типами данных Simulink.

  • Не поддерживает следующие функции S-функции:

    • Рабочие векторы, отличные от общих векторов DWork

    • Входные и выходные сигналы на основе кадров

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

    • Время выборки на основе нескольких блоков