Повторное использование функции Simulink в диаграммах Stateflow

Simulink® функция является графическим объектом, который позволяет вам вызвать Подсистему Simulink в действиях состояний и переходах. Функции Simulink не поддерживаются в автономном Stateflow® графики в MATLAB®.

Функции Simulink могут повысить эффективность вашего проекта и увеличить удобочитаемость вашей модели. Типовые приложения включают:

  • Определение функции, которая требует блоков Simulink

  • Планирование выполнения нескольких контроллеров

Функции Simulink в диаграмме Stateflow обеспечивают эти преимущества:

  • Никакие блоки подсистемы вызова функций

  • Никакие выходные события

  • Никакие сигнальные линии

Функция Simulink может находиться где угодно в графике, состоянии или субдиаграмме. Местоположение функции определяет, какие состояния и переходы могут вызвать функцию.

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

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

  • Если вы хотите вызвать функцию из какого-либо графика в вашей модели, используйте блок Simulink Function (Simulink), чтобы задать функцию непосредственно в холсте Simulink. Для получения дополнительной информации см. Обзор Функций Simulink (Simulink).

Чтобы получить доступ к данным Stateflow из вашей функции Simulink, необходимо включать те данные как вход к функции Simulink.

Эта функция Simulink имеет имя sim_fcn. Требуется три аргумента (aB, и c) и возвращает два выходных значения (x и y).

Функция содержит Подсистему Simulink, которая умножает первые разы аргумента усиление 25 и комбинирует другие два аргумента в сигнал комплексного выхода.

Если у вас есть своя функция, определяемая Simulink, можно поместить ее куда угодно в модель диаграмма Stateflow или Simulink. Кроме того, можно снова использовать эту функцию как много раз по мере необходимости в тех же или различных моделях.

Задайте функцию Simulink

  1. В палитре объектов кликните по значку функции Simulink.

  2. На холсте графика кликните по местоположению для новой функции Simulink.

  3. Введите метку подписи для функции.

    Метка подписи функции задает имя для вашей функции и официальные имена для ее аргументов и возвращаемых значений. Метка подписи имеет этот синтаксис:

    [return_val1,return_val2,...] = function_name(arg1,arg2,...)
    Можно задать несколько возвращаемых значений и несколько входных параметров. Каждое возвращаемое значение и входной параметр могут быть скаляром, вектором или матрицей значений. Для функций только с одним возвращаемым значением не используйте скобки в метке подписи.

    Необходимо использовать уникальные имена переменных для всех аргументов и возвращаемых значений.

  4. Чтобы программировать функцию, откройте Редактор Simulink путем двойного клика по функциональному полю. Первоначально, редактор содержит блок Trigger (Simulink) вызова функции и Inport (Simulink) и Outport (Simulink) блоки, которые совпадают с функциональной подписью. Вы не можете удалить блок Trigger.

  5. В Редакторе Simulink добавьте блоки, чтобы создать вашу Подсистему Simulink и соединить их с блоками Outport и Inport.

  6. Сконфигурируйте блоки Outport и Inport.

    1. Дважды кликните каждый блок, чтобы открыть диалоговое окно Block Parameters.

    2. Во вкладке Signal Attributes введите Data type и Port dimensions входного значения параметров или возвращаемого значения.

    3. Нажмите OK.

    Примечание

    Блок Inport в функции Simulink не может наследовать свой Data type и Port dimensions. Для получения дополнительной информации смотрите Явным образом Набор Свойства Inport блоков.

Вызовите функции Simulink в состояниях и переходах

Можно вызвать функции Simulink от действий любого состояния или перехода или от других функций.

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

[return_val1,return_val2,...] = function_name(arg1,arg2,...)

Если типы данных этих двух аргументов отличаются, функция бросает аргумент к типу формального аргумента.

Задайте свойства функций Simulink

Можно задать свойства для функции Simulink в диалоговом окне Block Parameters.

  1. В редакторе Stateflow щелкните правой кнопкой по функции Simulink.

  2. Выберите Properties.

  3. Отредактируйте свойства функции Simulink.

Можно также отредактировать свойства функции Simulink от Model Explorer. Для получения дополнительной информации смотрите Model Explorer (Simulink).

Для описания свойств функции Simulink смотрите Subsystem, Atomic Subsystem, CodeReuse Subsystem (Simulink).

Можно указать, что дополнительные свойства Simulink функционируют программно при помощи Stateflow.SLFunction объекты. Для получения дополнительной информации о Stateflow программируемый интерфейс, см. Обзор API Stateflow.

Используйте функцию Simulink для доступа к блокам Simulink

В этом примере можно сравнить моделирование логики сдвига автомобильной системы. Первая модель не использует функции Simulink, в то время как второе делает.

Модель без функции Simulink

Эта модель использует подсистему вызова функций, run(), Модель Simulink, чтобы вычислить порог для того, чтобы переключить скорости. Диаграмма Stateflow затем использует выходное событие, CALC_TH(), вызывать подсистему.

Для получения дополнительной информации о подсистемах вызова функций, смотрите Используя Подсистемы вызова функций (Simulink).

Модель с функцией Simulink

Эта та же функциональность может быть достигнута с функцией Simulink. В этой диаграмме Stateflow Simulink функционирует calc_th используется, чтобы вычислить порог.

during действие в selection_state содержит вызов функции к calc_th, который содержит блоки Simulink.

Этот метод моделирования минимизирует объекты в вашей модели.

Используйте функцию Simulink, чтобы запланировать выполнение нескольких контроллеров

В этом примере можно сравнить два способа запланировать выполнение нескольких контроллеров. Первая модель не использует функции Simulink, в то время как второе делает.

Модель без функций Simulink

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

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

Метод модели с функциями Simulink

Каждый контроллер может также быть смоделирован с функцией Simulink в диаграмме Stateflow. Эта модель использует вызовы функции запланировать выполнение подсистем.

Этот метод моделирования минимизирует объекты в вашей модели.

Смотрите также

(Simulink) | (Simulink) | (Simulink) | (Simulink) | (Simulink) | (Simulink) | (Simulink)

Похожие темы