exponenta event banner

Реализация функций MATLAB с использованием блоков

Функциональные блоки MATLAB позволяют определять пользовательские функциональные возможности в моделях Simulink ® на языке MATLAB ®. Это самый простой способ ввести код MATLAB в Simulink. Функциональные блоки MATLAB поддерживают генерацию кода C/C + + от Simulink Coder™ и Embedded Coder ®.

Используйте эти блоки специально в следующих случаях:

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

  • Для модели требуется пользовательская функциональность, которая не поддерживается или не может быть зафиксирована на графическом языке Simulink.

  • С помощью функции MATLAB проще моделировать пользовательские функциональные возможности, чем с помощью блок-схемы Simulink.

  • Пользовательские функции, которые требуется моделировать, не включают непрерывные или дискретные динамические состояния. Для моделирования динамических состояний используйте S-функции. См. раздел Создание и настройка S-функций MATLAB.

Работа функциональных блоков MATLAB

При моделировании модели, содержащей функциональный блок MATLAB, программное обеспечение генерирует двоичный код или исполняемый код C/C + + MATLAB (MEX) из блока и интегрирует этот код с моделью. Функциональный блок MATLAB использует ту же инфраструктуру, что и кодер MATLAB, который используется для генерации кода C/C + + из кода MATLAB вне Simulink.

Поскольку функциональный блок MATLAB основан на технологии генерации кода, он имеет много общего с кодером MATLAB. Ограничения генерации кода C/C + + для кодера MATLAB также применяются к функциональным блокам MATLAB. Однако функциональный блок MATLAB является автономным в Simulink и не требует кодера MATLAB. Чтобы создать автономный код C/C + + из модели, содержащей функциональные блоки MATLAB, используйте Simulink Coder.

Функциональные возможности блока MATLAB

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

Интерфейс Simulink к MATLAB

Функциональные блоки MATLAB обеспечивают интуитивный интерфейс между кодом MATLAB и моделью Simulink. Входные и выходные переменные блока наследуют свои свойства от входных и выходных сигналов Simulink.

По умолчанию как размер, так и тип входных и выходных сигналов для функционального блока MATLAB наследуются из соответствующих сигналов Simulink. Можно также задать размер и тип входов и выходов явно в Диспетчере портов и данных (Ports and Data Manager) или в Обозревателе моделей (Model Explorer). См. «Диспетчер портов и данных» и «Обозреватель моделей».

Создание автономного кода C/C + +

Функциональные блоки MATLAB поддерживаются для генерации кода C/C + + с Simulink Coder и Embedded Coder. Создание кода в модели Simulink, содержащей функциональный блок MATLAB, позволяет развернуть функциональные возможности MATLAB вне среды MATLAB.

Дополнительные сведения о создании кода C/C + + из модели Simulink см. в разделе Кодер Simulink.

Поддержка языка и функций MATLAB

В блоке MATLAB Function можно использовать только подмножество языковых функций MATLAB, которые поддерживаются для генерации кода C/C + +. Список функций, поддерживаемых для генерации кода, см. в разделе Функции и объекты, поддерживаемые для генерации кода C/C + +. Для получения информации о поддерживаемых языковых функциях см. раздел Языковые функции MATLAB, поддерживаемые для генерации кода C/C + +.

Внешние функции

Для моделирования можно вызвать внешние функции из функционального блока MATLAB. Внешние функции - это функции, которые не поддерживаются для генерации кода C/C + +, но которые могут быть отправлены в среду MATLAB для выполнения во время выполнения. Внешние функции выполняются в рабочей области во время моделирования модели.

При создании кода Simulink Coder пытается скомпилировать все функции в блоке MATLAB Function, если вы явно не объявите их как внешние. Внешние вызовы функций опущены из сгенерированного автономного кода, например, автономного исходного кода C/C + + или исполняемых файлов. См. раздел Разрешение вызовов функций для генерации кода и использования конструкции coder.extrinsic.

Поддержка функциональных блоков Simulink и блоков Stateflow

Из функциональных блоков MATLAB можно вызывать функции, определенные в функциональном блоке Simulink. Функции Stateflow ® можно вызвать при установке флажков Экспортировать функции на уровне диаграммы (Сделать глобальными) и Разрешить вызов экспортированных функций с помощью Simulink в диалоговом окне Свойства диаграммы. Дополнительные сведения о вызове функций, определенных в блоках Simulink Function и Stateflow, см. в разделе Функции Simulink: блок Simulink Function, экспортированные графические функции Stateflow и функции MATLAB.

См. также

| |

Связанные темы