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

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

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

Функции написанных вручную S-функций

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

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

ФункцияПостроитель S-функцийLegacy Code Tool
Типы данныхПоддерживает любой тип данных, поддерживаемый программным обеспечением 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 в режиме Accelerator, если файл был сгенерирован. В противном случае используется файл MEX.Предоставляет опцию использовать TLC или Файл MEX в режиме Accelerator.
Модель-ссылкаИспользует поведение по умолчанию при использовании в ссылочной модели.Использует поведение по умолчанию при использовании в ссылочной модели.
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.

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

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

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

    • Основанные на порте шаги расчета

    • Несколько шагов расчета или ненулевое время смещения

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

    • Основанные на порте шаги расчета

    • Несколько шагов расчета на основе блоков