exponenta event banner

Создание кода с функциональным блоком MATLAB

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

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

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

Функциональный блок MATLAB с переопределением типа данных

При использовании блока MATLAB Function в модели Simulink, который определяет переопределение типа данных, блок определяет эквиваленты переопределения типа данных входного сигнала и типов параметров. Затем блок использует эти эквивалентные значения для выполнения моделирования. В следующей таблице показано, как функциональный блок MATLAB определяет эквивалент переопределения типа данных с помощью

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

  • Параметры переопределения типа данных в модели 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 с переопределением типа данных см. в разделе Использование переопределения типа данных с функциональным блоком MATLAB.

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

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

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

Примечание

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

Задание параметров фиксированной точки в обозревателе моделей

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

  1. Поместите функциональный блок MATLAB в новую модель. Блок можно найти в библиотеке пользовательских функций Simulink.

  2. Откройте обозреватель моделей. На вкладке Моделирование (Modeling) щелкните Обозреватель моделей (Model Explorer).

  3. Разверните узел без названия * на панели Иерархия модели (Model Hierarchy) Проводника моделей (Model Explorer). Затем выберите узел MATLAB Function. Появится обозреватель моделей, как показано на следующем рисунке.

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

Рассматривать унаследованные типы сигналов Simulink как объекты fi

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

  • При выборе Fixed-point, функциональный блок MATLAB обрабатывает все входы с фиксированной точкой как конструктор с фиксированной точкой fi объекты.

  • При выборе Fixed-point & Integer, функциональный блок MATLAB обрабатывает все вводы с фиксированной и целочисленной точками как конструктор с фиксированной точкой fi объекты.

MATLAB Функциональный блок fimath

Укажите fimath свойства блока для связи со следующими объектами:

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

  • Все fi и fimath объекты, созданные в блоке функции MATLAB.

Для fimath функционального блока MATLAB можно выбрать одну из следующих опций:

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

  • Указать другое - при выборе этого параметра можно указать собственное fimath в поле редактирования.

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

Использование объектов fimath в функциональных блоках MATLAB

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

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

  • Все fi и fimath объекты, созданные в блоке функции MATLAB.

Эти параметры можно задать в следующем диалоговом окне, доступ к которому можно получить через диспетчер портов и данных.

  • Для доступа к этой панели через обозреватель моделей:

    • На вкладке Моделирование (Modeling) щелкните Обозреватель моделей (Model Explorer).

    • Затем выберите блок Функция MATLAB (MATLAB Function) на панели Иерархия модели (Model Hierarchy) в левой части Проводника моделей (Model Explorer).

  • Чтобы получить доступ к этой панели через Диспетчер портов и данных (Ports and Data Manager), на вкладке Редактор MATLAB (MATLAB Editor) щелкните Править данные (Edit Data).

При выборе значения «Совпадает с MATLAB» для fimath функционального блока MATLAB блок MATLAB Function использует текущий fimath по умолчанию. Текущий fimath по умолчанию отображается в поле редактирования затемненным и доступным только для чтения.

При выборе параметра «Указать другое» блок позволяет задать собственный fimath в поле редактирования. Это можно сделать одним из двух способов:

  • Построение fimath объект внутри поля редактирования.

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

    Примечание

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

Конструктор фиксированных точек isfimathlocal функция поддерживает генерацию кода для MATLAB.

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

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

  1. Поместите функциональный блок MATLAB в новую модель. Блок можно найти в библиотеке пользовательских функций Simulink.

  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. Откройте обозреватель моделей. На вкладке Моделирование (Modeling) щелкните Обозреватель моделей (Model Explorer).

  4. Разверните узел без названия * на панели Иерархия модели (Model Hierarchy) Проводника моделей (Model Explorer) и выберите узел Функция MATLAB (MATLAB Function).

  5. Выберите параметр MATLAB Fimath для параметра MATLAB Function block и введите переменную. F в поле редактирования на панели «Диалоговое окно». Нажмите кнопку Применить, чтобы сохранить изменения.

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

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

  7. Вырезать переменную F из базовой рабочей области и вставьте ее в рабочую область модели, указанную в узле модели, в данном случае без названия *. Появится обозреватель моделей, как показано на следующем рисунке.

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