Функция Simulink® является графическим объектом, который позволяет вам вызвать Подсистему Simulink в действиях состояний и переходах. Функции Simulink поддерживаются только в графиках Stateflow® в моделях Simulink.
Функции Simulink могут повысить эффективность вашего проекта и увеличить удобочитаемость вашей модели. Типовые приложения включают:
Определение функции, которая требует блоков Simulink
Планирование выполнения нескольких контроллеров
Функция Simulink может находиться где угодно в графике, состоянии или субдиаграмме. Местоположение функции определяет набор состояний и переходов, которые могут вызвать функцию.
Если вы хотите вызвать функцию в одном состоянии или субдиаграмме и ее подсостояниях, поместите свою функцию Simulink в то состояние или субдиаграмму. Эта функция заменяет любые другие функции того же имени в родительских элементах и предках того состояния или субдиаграммы.
Если вы хотите вызвать функцию где-нибудь в графике, поместите свою функцию Simulink в уровень графика.
Если вы хотите вызвать функцию из какого-либо графика в вашей модели, используйте блок Simulink Function (Simulink), чтобы задать функцию непосредственно в холсте Simulink. Для получения дополнительной информации см. Обзор Функций Simulink (Simulink).
Примечание
Функция Simulink не может получить доступ к графику или утвердить данные в иерархии Stateflow.
Например, эта функция Simulink имеет имя sim_fcn
. Требуется три аргумента (a
B
, и c
) и возвращает два выходных значения (x
и y
).
Функция содержит Подсистему Simulink, которая умножает первые разы аргумента усиление 25 и комбинирует другие два аргумента в сигнал комплексного выхода.
В палитре объектов кликните по значку функции Simulink. Переместите указатель в местоположение для новой функции Simulink в вашем графике.
Введите метку подписи для функции.
Функциональная метка подписи задает имя для вашей функции и официальные имена для ее аргументов и возвращаемых значений. Метка подписи имеет этот синтаксис:
[return_val1,return_val2,...] = function_name(arg1,arg2,...)
Необходимо использовать уникальные имена переменных для всех аргументов и возвращаемых значений.
Чтобы программировать функцию, откройте редактор Simulink путем двойного клика по функциональному полю. Первоначально, редактор содержит блок Trigger (Simulink) вызова функции и Inport (Simulink) и Outport (Simulink) блоки, которые совпадают с функциональной подписью. Вы не можете удалить блок Trigger.
В редакторе Simulink добавьте блоки и соедините их с блоками Outport и Inport.
Сконфигурируйте блоки Outport и Inport.
Дважды кликните каждый блок, чтобы открыть диалоговое окно Block Parameters.
Во вкладке Signal Attributes введите Data type и Port dimensions входного значения параметров или возвращаемого значения.
Нажмите OK.
Примечание
Блок Inport в функции Simulink не может наследовать itsData type и Port dimensions. Для получения дополнительной информации смотрите Явным образом Набор Свойства Блоков Inport.
Можно вызвать функции Simulink от действий любого состояния или перехода. Можно также вызвать функции Simulink от других функций.
Чтобы вызвать функцию Simulink, используйте функциональную подпись и включайте значение действительного аргумента для каждого формального аргумента в функциональной подписи. Если типы данных фактических и формальных аргументов отличаются, функция бросает действительный аргумент к типу формального аргумента.
Можно задать свойства для функции Simulink в Model Explorer или диалоговом окне Block Parameters.
Использовать Model Explorer:
Чтобы открыть Model Explorer, во вкладке Modeling, выбирают Model Explorer.
В панели Model Hierarchy выберите функцию Simulink.
В панели Block Parameters отредактируйте свойства функции Simulink.
Использовать диалоговое окно Block Parameters:
В редакторе Stateflow щелкните правой кнопкой по функции Simulink.
Выберите Properties.
Отредактируйте свойства функции Simulink.
Для описания свойств функции Simulink смотрите Subsystem, Atomic Subsystem, CodeReuse Subsystem (Simulink).
Можно указать, что дополнительные свойства Simulink функционируют программно при помощи Stateflow.SLFunction
объекты. Для получения дополнительной информации о Stateflow программируемый интерфейс, см. Обзор API Stateflow.
Эта инструкция гарантирует, что имена Inport и блоков Output совместимы с правилами именования идентификатора диаграмм Stateflow.
Блоки Inport в функции Simulink не могут наследовать свои типы данных и размеры. Поэтому необходимо установить Data type и Port dimensions каждого блока Inport, который не является скаляром типа double
.
Блоки Outport в функции Simulink могут наследовать размеры и типы данных на основе связей в подсистеме. Поэтому можно задать Data type и Port dimensions этих блоков, как наследовано.
Совет
Чтобы облегчить обновлять свойства блоков Inport, можно задать типы данных и размеры как параметры.
Блоки Outport в функциях Simulink не поддерживают несмежные сигналы. Если ваша функция содержит блок, который выводит несмежный сигнал, вставьте блок Signal Conversion (Simulink) между несмежным выходом и блок Outport. Это действие гарантирует, что выходной сигнал непрерывен.
Блоки, которые могут вывести несмежный сигнал, включают блок Bus Creator (Simulink) и блок Mux (Simulink). Для блока Bus Creator выход является несмежным, когда блок выводит виртуальную шину. Если вы выбираете Output as nonvirtual bus, выходной сигнал непрерывен, и никакое преобразование не необходимо.
Экспорт Simulink функционирует результаты в ошибке времени выполнения в процессе моделирования. Чтобы избежать этой ошибки, откройте диалоговое окно Свойств диаграммы и снимите флажок Export Chart Level Functions.
Вы не можете использовать функции Simulink в графиках Мура. Это ограничение предотвращает нарушения семантики Мура во время выполнения графика.
Если вы выбираете свойство диаграммы Execute (enter) Chart At Initialization, вы не можете вызвать функции Simulink в переходах по умолчанию, которые выполняются в первый раз, когда график просыпается. В противном случае график генерирует ошибку времени выполнения в процессе моделирования.
During
состояния
Действия или условия перехода графиков непрерывного времениВ графиках непрерывного времени вы не можете вызвать функции Simulink во время незначительных временных шагов. Вместо этого вызовите функции Simulink в действиях, которые происходят во время главных временных шагов: entry
состояния или
exit
действия и действия перехода. Вызывание функций Simulink в during
состояния условия действий или перехода приводят к ошибке времени выполнения в процессе моделирования.
Функции Simulink не поддерживают генерацию HDL-кода. Генерация HDL-кода для графиков, которые содержат результаты функций Simulink в ошибке времени выполнения в процессе моделирования.
Передача аргумента к Simulink функционирует ссылочными результатами в ошибке времени выполнения в процессе моделирования.
Bus Creator (Simulink) | Inport (Simulink) | Mux (Simulink) | Outport (Simulink) | Signal Conversion (Simulink) | Simulink Function (Simulink) | Trigger (Simulink)