Генерация кода с блоком MATLAB function

Создание функции языка MATLAB в модели Simulink

Блок MATLAB Function позволяет вам составить функцию языка MATLAB® в модели Simulink®, которая генерирует встраиваемый код. Когда вы симулируете модель или генерируете код для целевого окружения, функция в блоке MATLAB Function генерирует эффективный код C/C++. Этот код встречает строгой памяти и требованиям типа данных сред целевого процессора. Таким образом блоки MATLAB Function приносят степень MATLAB для встроенной среды в Simulink.

Для получения дополнительной информации о блоке MATLAB Function и генерации кода, обратитесь к следующему:

Блок MATLAB Function с переопределением типа данных

Когда вы используете блок MATLAB Function в модели Simulink, которая задает переопределение типа данных, блок определяет эквиваленты переопределения типа данных типов параметра и входного сигнала. Блок затем использует эти эквивалентные стоимости, чтобы запустить симуляцию. Следующая таблица показывает, как блок MATLAB Function решает, что тип данных заменяет эквивалентное использование

  • Тип данных входного сигнала или параметра

  • Настройки переопределения типа данных в модели Simulink

Для получения дополнительной информации о переопределении типа данных, смотрите fxptdlg.

Входной сигнал или тип параметраУстановка переопределения типа данныхПереопределение типа данных применяется к установкеЗамените тип данных
Наследованный singleDoubleAll numeric types или Floating-pointВстроенный double
SingleAll numeric types или Floating-pointВстроенный single
Scaled doubleAll numeric types или Floating-pointfi scaled double
Заданный singleDoubleAll numeric types или Floating-pointВстроенный double
SingleAll numeric types или Floating-pointВстроенный single
Scaled doubleAll numeric types или Floating-pointfi scaled double
Наследованный doubleDoubleAll numeric types или Floating-pointВстроенный double
SingleAll numeric types или Floating-pointВстроенный single
Scaled doubleAll numeric types или Floating-pointfi scaled double
Заданный doubleDoubleAll numeric types или Floating-pointВстроенный double
SingleAll numeric types или Floating-pointВстроенный single
Scaled doubleAll numeric types или Floating-pointfi scaled double
Наследованный FixedDoubleAll numeric types или Fixed-pointfi double
SingleAll numeric types или Fixed-pointfi single
Scaled doubleAll numeric types или Fixed-pointfi scaled double
Заданный FixedDoubleAll numeric types или Fixed-pointfi double
SingleAll numeric types или Fixed-pointfi single
Scaled doubleAll numeric types или Fixed-pointfi scaled double

Для получения дополнительной информации об использовании блока MATLAB Function с переопределением типа данных смотрите Используя Переопределение Типа данных с блоком MATLAB function (Simulink).

Типы данных с фиксированной точкой с блоком MATLAB Function

Генерация кода из MATLAB поддерживает значительное количество функций Fixed-Point Designer™. Обратитесь к Функциям, Поддерживаемым для Ускорения Кода или генерации кода C для получения информации, о которой поддерживаются функции Fixed-Point Designer.

Для получения дополнительной информации о работе с фиксированной точкой блоки MATLAB Function см.:

Примечание

Чтобы симулировать модели с помощью типов данных с фиксированной точкой в Simulink, у вас должна быть лицензия Fixed-Point Designer.

Определение параметров фиксированной точки в Model Explorer

Можно задать параметры для блока MATLAB Function в модели фиксированной точки использование Model Explorer. Попробуйте следующее осуществление:

  1. Поместите блок MATLAB Function в новую модель. Можно найти блок в библиотеке Simulink User-Defined Functions.

  2. Откройте Model Explorer путем выбора View> Model Explorer из модели.

  3. Расширьте узел untitled* в панели Model Hierarchy Model Explorer. Затем выберите узел MATLAB Function. Model Explorer теперь появляется как показано в следующем рисунке.

Следующие параметры в панели Dialog применяются к блокам MATLAB Function в моделях, которые используют типы данных с фиксированной точкой и целочисленные типы данных:

Treat these inherited Simulink signal types as fi objects

Выберите, обработать ли наследованную фиксированную точку и целочисленные сигналы как fi объекты.

  • Когда вы выбираете Fixed-point, блок MATLAB Function обрабатывает все входные параметры фиксированной точки как Fixed-Point Designer fi объекты.

  • Когда вы выбираете Fixed-point & Integer, блок MATLAB Function обрабатывает всю фиксированную точку и целочисленные входные параметры как Fixed-Point Designer fi объекты.

MATLAB Function block fimath

Задайте fimath свойства для блока, чтобы сопоставить со следующими объектами:

  • Вся фиксированная точка и целочисленные входные сигналы с блоком MATLAB Function, который вы принимаете решение обработать как fi объекты.

  • Весь fi и fimath объекты создаются в блоке MATLAB Function.

Можно выбрать одну из следующих опций для MATLAB Function block fimath:

  • Same as MATLAB — Когда вы выбираете эту опцию, блок использует тот же fimath свойства как текущее значение по умолчанию fimath. Окно редактирования появляется, потускнел и отображает текущее значение по умолчанию fimath в форме только для чтения.

  • Specify Other — Когда вы выбираете эту опцию, можно задать собственный fimath объект в окне редактирования.

Для получения дополнительной информации об этих параметрах смотрите Используя Объекты fimath в блоках MATLAB function.

Используя Объекты fimath в блоках MATLAB function

Параметр MATLAB Function block fimath позволяет вам задать один набор fimath свойства объектов для блока MATLAB Function. Блок сопоставляет fimath свойства вы задаете со следующими объектами:

  • Вся фиксированная точка и целочисленные входные сигналы с блоком MATLAB Function, который вы принимаете решение обработать как fi объекты.

  • Весь fi и fimath объекты создаются в блоке MATLAB Function.

Можно установить эти параметры на следующем диалоговом окне, к которому можно получить доступ или через Model Explorer (Simulink) или через Порты и Менеджер данных (Simulink).

  • Получить доступ к этой панели через Model Explorer:

    • Выберите View> Model Explorer в вашем меню модели.

    • Затем выберите блок MATLAB Function из панели Иерархии модели на левой стороне Model Explorer.

  • Чтобы получить доступ к этой панели через Порты и Менеджер данных, выберите Tools> Edit Data/Ports в меню MATLAB Editor.

Когда вы выбираете Same as MATLAB для MATLAB Function block fimath, блок MATLAB Function использует текущее значение по умолчанию fimath. Текущее значение по умолчанию fimath появляется, потускнел и в форме только для чтения в окне редактирования.

Когда вы выбираете Specify other, блок позволяет вам задавать свой собственный fimath объект в окне редактирования. Можно сделать так одним из двух способов:

  • Построение fimath возразите в окне редактирования.

  • Построение fimath объект в рабочем пространстве MATLAB или рабочем пространстве модели и затем вводе его имени переменной в окне редактирования.

    Примечание

    Если вы используете эту опцию и планируете совместно использовать свою модель с другими, убедитесь, что вы задаете переменную в рабочем пространстве модели. Смотрите Совместное использование Моделей с блоками MATLAB function Фиксированной точки для получения дополнительной информации о совместном использовании моделей.

Fixed-Point Designer isfimathlocal функционируйте генерация кода поддержек для MATLAB.

Совместное использование моделей с блоками MATLAB function фиксированной точки

Когда вы сотрудничаете с коллегой, можно совместно использовать модель фиксированной точки использование блока MATLAB Function. Чтобы совместно использовать модель, убедитесь, что вы перемещаете любые переменные, которые вы задаете в рабочем пространстве MATLAB, включая fimath объекты, к рабочему пространству модели. Например, попробуйте следующее:

  1. Поместите блок MATLAB Function в новую модель. Можно найти блок в библиотеке Simulink User-Defined Functions.

  2. Задайте fimath объект в рабочем пространстве MATLAB, что вы хотите использовать в любом сигнале фиксированной точки Simulink ввод блока MATLAB Function как вход:

    F = fimath('RoundingMethod','Floor','OverflowAction','Wrap',...
        'ProductMode','KeepLSB','ProductWordLength',32,...
        'SumMode','KeepLSB','SumWordLength',32)
     
    F =
            RoundingMethod: Floor
            OverflowAction: Wrap
               ProductMode: KeepLSB
         ProductWordLength: 32
                   SumMode: KeepLSB
             SumWordLength: 32
             CastBeforeSum: true

  3. Откройте Model Explorer путем выбора View> Model Explorer из модели.

  4. Расширьте узел untitled* в панели Model Hierarchy Model Explorer и выберите узел MATLAB Function.

  5. Выберите Specify other для параметра MATLAB Function block fimath и введите переменную F в окно редактирования на панели Dialog. Нажмите Apply, чтобы сохранить ваши изменения.

    Вы теперь задали fimath свойства, которые будут сопоставлены со всеми входными сигналами фиксированной точки Simulink и всем fi и fimath объекты создаются в блоке.

  6. Выберите узел Base Workspace в панели Model Hierarchy. Вы видите переменную F то, что вы задали в рабочем пространстве MATLAB, перечисленном в панели Contents. Если вы отправляете эту модель коллеге, тот коллега должен сначала задать ту же самую переменную в рабочем пространстве MATLAB, чтобы получить те же результаты.

  7. Сократите переменную F от базового рабочего пространства и вставки это в рабочее пространство модели, перечисленное под узлом для вашей модели, в этом случае, untitled*. Model Explorer теперь появляется как показано в следующем рисунке.

    Можно теперь послать модель по электронной почте коллеге. Поскольку вы включали необходимые переменные в рабочую область самой модели, ваш коллега может просто запустить модель и получить правильные результаты. Получение и выполнение модели не требуют никаких дополнительных шагов.