Генерация кода с блоком 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.

Типы данных с фиксированной точкой с блоком 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. На вкладке Modeling нажмите 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:

    • На вкладке Modeling нажмите Model Explorer.

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

  • Получить доступ к этой панели через Порты и Менеджер данных, на вкладке MATLAB Editor, clickEdit Data.

Когда вы выбираете 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. На вкладке Modeling нажмите 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 теперь появляется как показано в следующем рисунке.

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