Вы используете S-функции, чтобы расширить Simulink® поддержка симуляции и генерации кода. Например, можно использовать их для:
Представляйте пользовательские алгоритмы
Соедините интерфейсом с существующим внешним кодом с моделью Simulink и сгенерированным кодом
Представляйте драйверы устройств для взаимодействия через интерфейс с оборудованием
Сгенерируйте очень оптимизированный код для встраиваемых систем
Проверьте код, сгенерированный для подсистемы как часть симуляции Simulink
Прикладной программный интерфейс (API) для записи S-функций позволяет вам реализовывать типовые алгоритмы в окружении Simulink с большой гибкостью. Если вы намереваетесь использовать S-функции в модели для генерации кода, уровень гибкости может варьироваться. Например, не возможно получить доступ к MATLAB® рабочая область от S-функции, которую вы используете с генератором кода. Эта тема объясняет условия знать для использования S-функций. Однако использование методов представило в этой теме, можно создать S-функции для большинства приложений, которые работают со сгенерированным кодом.
Несмотря на то, что S-функции предоставляют типовое и гибкое решение для реализации комплексных алгоритмов в модели, базовый API подвергается наверху в терминах ресурсов расчета и памяти. Чаще всего дополнительные ресурсы приемлемы для систем быстрого прототипирования в реальном времени. Часто, тем не менее, дополнительные ресурсы недоступны в режиме реального времени встраиваемые приложения. Можно минимизировать память и вычислительные требования при помощи технологии Компилятора Выходного языка, которой предоставляют генератор кода, чтобы встроить S-функции. Если вы производите S-функцию для существующего внешнего кода, рассматриваете использование Legacy Code Tool, чтобы сгенерировать вашу S-функцию и соответствующий файл TLC.
Эта тема принимает, что вы изучаете следующие концепции:
Уровень 2 S-функции
Сценарии Компилятора выходного языка (TLC)
Как генератор кода производит и создает код C/C++
Примечания
Эта информация для пользователей генератора кода. Даже если вы в настоящее время не используете генератор кода, применяете эти методы при записи S-функций, особенно если вы создаете S-функции общего назначения.
Примеры, для которых вы можете принять решение реализовать S-функцию для симуляции и генерации кода, включают:
“I не обеспокоена КПД. Я хочу записать, что одна версия моего алгоритма и иметь его работает в Simulink и продуктах генератора кода автоматически”.
“Я хочу реализовать высоко оптимизированный алгоритм в Simulink и продуктах генератора кода, который похож на встроенный блок и генерирует эффективный код”.
“У меня есть много рукописного кода, с которым я должен соединить интерфейсом. Я хочу вызвать свою функцию от Simulink и продуктов генератора кода эффективно”.
Соответственно, предыдущие ситуации сопоставляют со следующим MathWorks® терминология:
Невстроенная S-функция
Встроенная S-функция
Автоматически сгенерированная S-функция для внешнего кода
Невстроенная S-функция является C или S-функцией C++ MEX, которая обработана тождественно кодом двигателя Simulink и сгенерированным кодом. В общем случае вы реализуете свой алгоритм однажды согласно API S-функции. Код двигателя Simulink и сгенерированный код вызывают стандартные программы S-функции (например, mdlOutputs
) во время выполнения модели.
Дополнительная память и ресурсы расчета требуются для каждого экземпляра невстроенного Блока s-function. Однако эта стандартная программа соединяющихся алгоритмов в модели и приложения генерации кода типична во время фазы прототипирования проекта, где КПД не важен. Преимуществом, полученным путем воздержания от КПД, является способность изменить параметры модели и структуры быстро.
Запись невстроенной S-функции не включает кодирование TLC. Невстроенные S-функции являются случаем по умолчанию для процесса сборки в том смысле, что, если вы создаете S-функцию MEX в своей модели, нет никакой дополнительной подготовки перед нажатием Ctrl+B, чтобы создать вашу модель.
Некоторые ограничения существуют относительно названий и местоположения невстроенных S-файлов-функции при генерации make-файлов. Смотрите Запись Невстроенная S-функция.
Для S-функций, чтобы работать в окружении Simulink, сгенерирован некоторый служебный код. Когда генератор кода производит код из моделей, которые содержат S-функции (без
файлы), это встраивает часть этого служебного кода в сгенерированном коде. Если вы хотите оптимизировать свой код в реальном времени и устранить часть служебного кода, необходимо встроить (или встроить) S-функции. Это включает запись TLC (sfunction
.tlc
) файл, который устраняет служебный код из сгенерированного кода. Процессы Компилятора Выходного языка sfunction
.tlc
файлы, чтобы задать, как встроить ваш алгоритм S-функции в сгенерированном коде.sfunction
.tlc
Примечание
Не путайте термин, встроенный с C++ встроенное ключевое слово. Встроенный означает задавать текст вместо вызова общих стандартных программ API S-функции (например, mdlOutputs
). Например, когда файл TLC используется, чтобы встроить S-функцию, сгенерированный код содержит Код С++ C/, который обычно появляется в стандартных программах S-функции и самой S-функции, которая была удалена из процесса сборки.
Полностью встроенная S-функция создает ваш алгоритм (блок) в сгенерированный код способом, который неотличим от встроенного блока. Как правило, полностью встроенная S-функция требует, чтобы вы реализовали свой алгоритм дважды: однажды для модели Simulink (S-функция MEX C/C++) и однажды для генерации кода (файл TLC). Сложность файла TLC зависит от сложности вашего алгоритма и уровня КПД, которого вы пытаетесь достигнуть в сгенерированном коде. Файлы TLC варьируются от простого, чтобы объединить в структуре. Смотрите S-функции Встраивания.
Если необходимо вызвать рукописный код C/C++ в модели, рассмотрите использование Legacy Code Tool Simulink. Legacy Code Tool может автоматизировать генерацию полностью встроенной S-функции и соответствующего файла TLC на основе информации, которую вы указываете в структуре данных Legacy Code Tool.
Для получения дополнительной информации смотрите, Интегрируйте Функции C Используя Legacy Code Tool и смотрите Вызовы Импорта Внешнего Кода в Сгенерированный код с Legacy Code Tool.
Эта тема кратко описывает что файлы и необходимые функции, чтобы создать невстроенные и встроенные S-функции.
Невстроенные S-функции требуют C или исходного кода S-функции C++ MEX (
или sfunction
C
). sfunction
.cpp
Полностью встроенные S-функции требуют
файл. Полностью встроенные S-функции производят оптимальный код для параметрированной S-функции. Это - S-функция, которая действует в определенном режиме, зависящем от фиксированных S-параметров-функции, которые не изменяются во время выполнения модели. Для данного рабочего режима, sfunction
.tlc
файл задает точный код, который сгенерирован, чтобы реализовать алгоритм для того режима. Например, S-функция интерполяционной таблицы прямого индекса в Записи Полностью Встроенные S-функции с mdlRTW Стандартной программой содержит два рабочих режима — один для равномерно расположенного с интервалами sfunction
.tlcx-data
и один для неравномерно расположенного с интервалами x-data
.
Примечание
Полностью встроенные S-функции, которые сгенерированы, чтобы вызвать устаревший или пользовательский код C/C++ также, требуют
файл, который сгенерирован Legacy Code Tool.sfunction
.tlc
Полностью встроенные S-функции могут потребовать размещения mdlRTW
стандартная программа в вашем файле MEX S-функции
или sfunction
C
. sfunction
.cppmdlRTW
стандартная программа позволяет вам поместить информацию в
. model
.rtw
файл записи, который задает модель, и который генератор кода вызывает Target Language Compiler к процессу прежде, чем выполнить model
.rtw
при генерации кода.sfunction
.tlc
Включая a mdlRTW
стандартная программа полезна, когда это необходимо, чтобы ввести ненастраиваемые параметры в ваш файл TLC. Такие параметры используются, чтобы определить, какой рабочий режим активен в приведенном примере S-функции. На основе этой информации файл TLC для S-функции может сгенерировать высокоэффективный, оптимальный код для того рабочего режима.
Можно использовать MEX C/C++, язык MATLAB и S-функции Фортрана MEX с генерацией кода.
Можно встроить S-функции для генерации кода путем обеспечения встраиванию файла TLC. Смотрите, что S-функция Встраивает в Компиляторе Выходного языка. MATLAB и S-функции Фортрана MEX должны быть встроены. S-функции MEX C/C++ могут быть встроены для КПД кода или не встроены.
Чтобы автоматически сгенерировать полностью встроенную S-функцию MEX C для вызова наследия или пользовательского кода, используйте Legacy Code Tool. Для получения дополнительной информации смотрите, Интегрируйте Функции C Используя Legacy Code Tool и смотрите Вызовы Импорта Внешнего Кода в Сгенерированный код с Legacy Code Tool.
Если КПД кода не является переопределяющим фактором, например, если вы - быстрое прототипирование, можно выбрать not to inline a C/C ++ MEX S-function. Для получения дополнительной информации смотрите Запись Невстроенная S-функция.