Создайте S-функции автоматически

О создании S-функций автоматически

Разработчик S-функции является блоком Simulink®, который интегрирует код C/C++, чтобы создать S-функцию из спецификаций и кода С, который вы предоставляете. Разработчик S-функции также служит оберткой для сгенерированной S-функции в моделях, которые используют S-функцию. Этот раздел объясняет, как использовать Разработчика S-функции, чтобы создать простые S-функции MEX C.

Примечание

Для примеров использования Разработчика S-функции, чтобы создать S-функции, смотрите подсистему S-функций файла C примеров S-функции, которым предоставляют продукт Simulink. Чтобы отобразить примеры, введите sfundemos в командной строке MATLAB® (см. Примеры S-функции для получения дополнительной информации).

Создавать S-функцию с Разработчиком S-функции:

  1. Установите текущую папку MATLAB на папку, в которой вы хотите создать S-функцию.

    Примечание

    Эта папка должна быть на пути MATLAB.

  2. Если вы хотите соединить сигнал шины с портом Input or Output Разработчика S-функции, необходимо сначала создать объект шины. Вы выполняете эту задачу в интерактивном режиме с помощью Редактора Шины Simulink (см., Создают и Задают Объекты Шины. В качестве альтернативы можно использовать Simulink.Bus можно следующим образом.

    1. В Окне Команды MATLAB, введите:

      a = Simulink.Bus

      В результате HeaderFile для значений по умолчанию шины к пустому символьному вектору:

      a =
       
      Simulink.Bus
          Description: ''
           HeaderFile: ''
             Elements: [0x1 double]
    2. Если вы хотите задать заголовочный файл для шины, то в командной строке 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'))
  3. Создайте новую модель Simulink.

  4. Скопируйте экземпляр блока S-Function Builder из библиотеки User-Defined Functions в Браузере Библиотеки в новую модель.

  5. Дважды кликните блок, чтобы открыть диалоговое окно S-Function Builder (см. Разработчика S-функции Диалоговое окно).

  6. Используйте спецификацию и панели записи кода на диалоговом окне S-Function Builder, чтобы ввести информацию и пользовательский исходный код, требуемый адаптировать сгенерированную S-функцию в соответствии с вашим приложением (см. Разработчика S-функции Диалоговое окно).

  7. Нажмите Build on the S-Function Builder, чтобы запустить процесс сборки.

    Разработчик S-функции создает файл MEX, который реализует заданную S-функцию и сохранил файл в текущей папке (см. Как разработчик S-функции Билдс S-функция).

  8. Сохраните модель, содержащую блок S-Function Builder.

Развертывание сгенерированной S-функции

Чтобы использовать сгенерированную S-функцию в другой модели, сначала проверяйте, чтобы гарантировать, что папка, содержащая сгенерированную S-функцию, находится на пути MATLAB. Затем скопируйте блок S-Function Builder из модели, используемой, чтобы создать S-функцию в целевую модель и установить ее параметры, при необходимости, к значениям, требуемым целевой моделью.

В качестве альтернативы можно развернуть сгенерированную S-функцию, не используя блок S-Function Builder или отсоединив базовый исходный файл C. Для этого:

  1. Откройте модель Simulink, которая будет включать S-функцию.

  2. Скопируйте Блок s-function с библиотеки User-Defined Functions в Браузере Библиотеки в модель.

  3. Дважды кликните на Блоке s-function.

  4. В диалоговом окне Block Parameters, которое открывается, введите имя исполняемого файла, сгенерированного Разработчиком S-функции в поле редактирования S-function name.

  5. Введите любые параметры, необходимые S-функции в поле редактирования S-function parameters. Введите параметры в порядок, они появляются в диалоговом окне S-Function Builder.

  6. Нажмите OK на диалоговом окне S-Function Block Parameters.

Можно использовать сгенерированный исполняемый файл, например, .mexw32 файл, в любом Блоке s-function в любой модели, пока исполняемый файл находится на пути MATLAB.

Как разработчик S-функции создает S-функцию

Разработчик 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-функции из сгенерированного исходного кода и любого внешнего пользовательского исходного кода и библиотек, которые вы задали.