Разработчик S-функции является блоком Simulink®, который интегрирует код C/C++, чтобы создать S-функцию из спецификаций и кода С, который вы предоставляете. Разработчик S-функции также служит оберткой для сгенерированной S-функции в моделях, которые используют S-функцию. Этот раздел объясняет, как использовать Разработчика S-функции, чтобы создать простые S-функции MEX C.
Для примеров использования Разработчика S-функции, чтобы создать S-функции, смотрите подсистему S-функций файла C примеров S-функции, которым предоставляют продукт Simulink. Чтобы отобразить примеры, введите sfundemos
в командной строке MATLAB® (см. Примеры S-функции для получения дополнительной информации).
Создавать S-функцию с Разработчиком S-функции:
Установите текущую папку MATLAB на папку, в которой вы хотите создать S-функцию.
Эта папка должна быть на пути MATLAB.
Если вы хотите соединить сигнал шины с портом Input or Output Разработчика S-функции, необходимо сначала создать объект шины. Вы выполняете эту задачу в интерактивном режиме с помощью Редактора Шины Simulink (см., Создают Объекты Шины с Редактором Шины. Также можно использовать Simulink.Bus
можно следующим образом.
В Окне Команды MATLAB, введите:
a = Simulink.Bus
В результате HeaderFile
для значений по умолчанию шины к пустому символьному вектору:
a = Simulink.Bus Description: '' HeaderFile: '' Elements: [0x1 double]
Если вы хотите задать заголовочный файл для шины, то в командной строке MATLAB:
a.Headerfile = 'Busdef.h'
Если вы не задаете заголовочный файл, Simulink автоматически генерирует Sfunctionname_bus.h
Для демонстрации о том, как использовать Разработчика S-функции с шиной, смотрите пример S-Function Builder with buses
путем ввода следующей команды в командной строке MATLAB:
open_system(fullfile(matlabroot,'/toolbox/simulink/simdemos/simfeatures/',... 'sfbuilder_bususage'))
Создайте новую модель Simulink.
Скопируйте экземпляр блока S-Function Builder от библиотеки User-Defined Functions в Браузере Библиотеки в новую модель.
Дважды кликните блок, чтобы открыть диалоговое окно S-Function Builder (см. Разработчика S-функции Диалоговое окно).
Используйте спецификацию и панели записи кода на диалоговом окне S-Function Builder, чтобы ввести информацию и пользовательский исходный код, требуемый адаптировать сгенерированную S-функцию в соответствии с вашим приложением (см. Разработчика S-функции Диалоговое окно).
Нажмите Build on the S-Function Builder, чтобы запустить процесс сборки.
Разработчик S-функции создает файл MEX, который реализует заданную S-функцию и сохранил файл в текущей папке (см. Как разработчик S-функции Билдс S-функция).
Сохраните модель, содержащую блок S-Function Builder.
Чтобы использовать сгенерированную S-функцию в другой модели, сначала проверяйте, чтобы гарантировать, что папка, содержащая сгенерированную S-функцию, находится на пути MATLAB. Затем скопируйте блок S-Function Builder от модели, используемой, чтобы создать S-функцию в целевую модель и установить ее параметры, при необходимости, к значениям, требуемым целевой моделью.
Также можно развернуть сгенерированную S-функцию, не используя блок S-Function Builder или представив базовый исходный файл C. Для этого:
Откройте модель Simulink, которая будет включать S-функцию.
Скопируйте Блок s-function с библиотеки User-Defined Functions в Браузере Библиотеки в модель.
Дважды кликните на Блоке s-function.
В диалоговом окне Block Parameters, которое открывается, введите имя исполняемого файла, сгенерированного Разработчиком S-функции в поле редактирования S-function name.
Введите любые параметры, необходимые S-функции в поле редактирования S-function parameters. Введите параметры в порядок, они появляются в диалоговом окне S-Function Builder.
Нажмите OK на диалоговом окне S-Function Block Parameters.
Можно использовать сгенерированный исполняемый файл, например, файл .mexw32
, в любом Блоке s-function в любой модели, пока исполняемый файл находится на пути MATLAB.
Разработчик S-функции создает S-функцию можно следующим образом. Во-первых, это генерирует следующие исходные файлы в текущей папке:
sfun.c
где sfun
является именем S-функции, которую вы задаете в поле S-function name диалогового окна S-Function Builder. Этот файл содержит представление исходного кода C стандартных фрагментов сгенерированной S-функции.
sfun_wrapper.c
Этот файл содержит пользовательский код, который вы ввели в диалоговое окно S-Function Builder.
sfun.tlc
Этот файл разрешает сгенерированной S-функции запускать в Simulink Быстрый Режим Accelerator и допускает встраивание S-функции во время генерации кода. Кроме того, этот файл генерирует код для S-функции в Режиме Accelerator, таким образом позволяя модели запуститься быстрее.
sfun_bus.h
Если вы задаете какой-либо Input port
или Output port
как шина в панели Свойств данных диалогового окна S-Function Builder, но не задаете заголовочный файл, то Разработчик S-функции автоматически генерирует этот заголовочный файл.
После генерации исходного кода S-функции Разработчик S-функции использует команду mex
, чтобы создать представление файла MEX из S-функции из сгенерированного исходного кода и любого внешнего пользовательского исходного кода и библиотек, которые вы задали.