В следующих таблицах приведены обзоры функций, поддерживаемых различными типами 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. и Simulink. поддержка | Поддержки 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-функций.
| Внедрение | Ограничения |
|---|---|
| Level-2 S-функции MATLAB |
|
| Рукописная S-функция C MEX | Поддерживает ссылку на модель с некоторыми ограничениями. См. S-Функции в ссылочных моделях. |
| Построитель S-функций |
Примечание S-функции с одним входом и одним портом вывода могут иметь сигналы динамического размера |
| Устаревший инструмент кода |
|