Simulink® функция является графическим объектом, который позволяет вам вызвать Подсистему Simulink в действиях состояний и переходах. Функции Simulink не поддерживаются в автономном Stateflow® графики в MATLAB®.
Функции Simulink могут повысить эффективность вашего проекта и увеличить удобочитаемость вашей модели. Типовые приложения включают:
Определение функции, которая требует блоков Simulink
Планирование выполнения нескольких контроллеров
Функции Simulink в диаграмме Stateflow обеспечивают эти преимущества:
Никакие блоки подсистемы вызова функций
Никакие выходные события
Никакие сигнальные линии
Функция Simulink может находиться где угодно в графике, состоянии или субдиаграмме. Местоположение функции определяет, какие состояния и переходы могут вызвать функцию.
Если вы хотите вызвать функцию только в одном состоянии или субдиаграмме и ее подсостояниях, поместите свою функцию Simulink в то состояние или субдиаграмму. Эта функция заменяет любые другие функции того же имени в родительских элементах того состояния или субдиаграммы.
Если вы хотите вызвать функцию откуда-либо в графике, поместите свою функцию Simulink в уровень графика.
Если вы хотите вызвать функцию из какого-либо графика в вашей модели, используйте блок Simulink Function (Simulink), чтобы задать функцию непосредственно в холсте Simulink. Для получения дополнительной информации см. Обзор Функций Simulink (Simulink).
Чтобы получить доступ к данным Stateflow из вашей функции Simulink, необходимо включать те данные как вход к функции Simulink.
Эта функция Simulink имеет имя sim_fcn
. Требуется три аргумента (a
B
, и c
) и возвращает два выходных значения (x
и y
).
Функция содержит Подсистему Simulink, которая умножает первые разы аргумента усиление 25 и комбинирует другие два аргумента в сигнал комплексного выхода.
Если у вас есть своя функция, определяемая Simulink, можно поместить ее куда угодно в модель диаграмма Stateflow или Simulink. Кроме того, можно снова использовать эту функцию как много раз по мере необходимости в тех же или различных моделях.
В палитре объектов кликните по значку функции Simulink.
На холсте графика кликните по местоположению для новой функции Simulink.
Введите метку подписи для функции.
Метка подписи функции задает имя для вашей функции и официальные имена для ее аргументов и возвращаемых значений. Метка подписи имеет этот синтаксис:
[return_val1,return_val2,...] = function_name(arg1,arg2,...)
Необходимо использовать уникальные имена переменных для всех аргументов и возвращаемых значений.
Чтобы программировать функцию, откройте Редактор Simulink путем двойного клика по функциональному полю. Первоначально, редактор содержит блок Trigger (Simulink) вызова функции и Inport (Simulink) и Outport (Simulink) блоки, которые совпадают с функциональной подписью. Вы не можете удалить блок Trigger.
В Редакторе Simulink добавьте блоки, чтобы создать вашу Подсистему Simulink и соединить их с блоками Outport и Inport.
Сконфигурируйте блоки Outport и Inport.
Дважды кликните каждый блок, чтобы открыть диалоговое окно Block Parameters.
Во вкладке Signal Attributes введите Data type и Port dimensions входного значения параметров или возвращаемого значения.
Нажмите OK.
Примечание
Блок Inport в функции Simulink не может наследовать свой Data type и Port dimensions. Для получения дополнительной информации смотрите Явным образом Набор Свойства Inport блоков.
Можно вызвать функции Simulink от действий любого состояния или перехода или от других функций.
Чтобы вызвать функцию Simulink, используйте функциональную подпись и включайте значение аргумента для каждого формального аргумента в функциональной подписи.
[return_val1,return_val2,...] = function_name(arg1,arg2,...)
Если типы данных этих двух аргументов отличаются, функция бросает аргумент к типу формального аргумента.
Можно задать свойства для функции Simulink в диалоговом окне Block Parameters.
В редакторе Stateflow щелкните правой кнопкой по функции Simulink.
Выберите Properties.
Отредактируйте свойства функции Simulink.
Можно также отредактировать свойства функции Simulink от Model Explorer. Для получения дополнительной информации смотрите Model Explorer (Simulink).
Для описания свойств функции Simulink смотрите Subsystem, Atomic Subsystem, CodeReuse Subsystem (Simulink).
Можно указать, что дополнительные свойства Simulink функционируют программно при помощи Stateflow.SLFunction
объекты. Для получения дополнительной информации о Stateflow программируемый интерфейс, см. Обзор API Stateflow.
В этом примере можно сравнить моделирование логики сдвига автомобильной системы. Первая модель не использует функции Simulink, в то время как второе делает.
Эта модель использует подсистему вызова функций, run()
, Модель Simulink, чтобы вычислить порог для того, чтобы переключить скорости. Диаграмма Stateflow затем использует выходное событие, CALC_TH()
, вызывать подсистему.
Для получения дополнительной информации о подсистемах вызова функций, смотрите Используя Подсистемы вызова функций (Simulink).
Эта та же функциональность может быть достигнута с функцией Simulink. В этой диаграмме Stateflow Simulink функционирует calc_th
используется, чтобы вычислить порог.
during
действие в selection_state
содержит вызов функции к calc_th
, который содержит блоки Simulink.
Этот метод моделирования минимизирует объекты в вашей модели.
В этом примере можно сравнить два способа запланировать выполнение нескольких контроллеров. Первая модель не использует функции Simulink, в то время как второе делает.
Эта модель использует подсистемы вызова функций, чтобы смоделировать каждый контроллер. Модель включает выходные события в диаграмму Stateflow, чтобы запланировать выполнение подсистем.
Для каждого выходного события сигнальная линия необходима, чтобы соединить диаграмму Stateflow с соответствующей подсистемой вызова функций.
Каждый контроллер может также быть смоделирован с функцией Simulink в диаграмме Stateflow. Эта модель использует вызовы функции запланировать выполнение подсистем.
Этот метод моделирования минимизирует объекты в вашей модели.
Simulink Function (Simulink) | Trigger (Simulink) | Inport (Simulink) | Outport (Simulink) | Signal Conversion (Simulink) | Bus Creator (Simulink) | Mux (Simulink)