Генерация кода с блоком 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 теперь появляется как показано в следующей фигуре.

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