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

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

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

Для получения дополнительной информации о 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™. Для получения информации о том, какие функции Fixed-Point Designer поддерживаются, обратитесь к разделу Функции, поддерживаемые для ускорения кода или генерации кода C

Для получения дополнительной информации о работе с блоками 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* на панели < reservedrangesplaceholder1 > 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.

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

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

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

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

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

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

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

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

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

    Примечание

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

The 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 появится как показано на следующем рисунке.

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