exponenta event banner

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

Функция 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

  1. В палитре объектов щелкните значок функции «Симуляция». Переместите указатель в расположение новой функции Simulink на диаграмме.

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

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

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

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

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

  4. В редакторе Simulink добавьте блоки и подключите их к блокам Inport и Outport.

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

    1. Дважды щелкните каждый блок, чтобы открыть диалоговое окно «Параметры блока».

    2. На вкладке Signal Attributes введите тип данных и размеры порта входного параметра или возвращаемого значения.

    3. Нажмите кнопку ОК.

    Примечание

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

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

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

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

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

Свойства функции Simulink можно задать в Обозревателе моделей или в диалоговом окне Параметры блока (Block Parameters).

  • Чтобы использовать Обозреватель моделей (Model Explorer):

    1. Чтобы открыть Обозреватель моделей (Model Explorer), на вкладке Моделирование (Modeling) выберите Обозреватель моделей (Model Explorer).

    2. На панели Иерархия модели (Model Hierarchy) выберите функцию Simulink.

    3. На панели «Параметры блока» измените свойства функции Simulink.

  • Для использования диалогового окна «Параметры блока»:

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

    2. Выберите Свойства.

    3. Измените свойства функции Simulink.

Описание свойств функции Simulink см. в разделах Подсистема, Атомная подсистема, CodeReuse Подсистема (Simulink).

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

Рекомендации по использованию функций Simulink

Использование буквенно-цифровых символов и знаков подчеркивания в именах аргументов

Это руководство обеспечивает совместимость имен блоков Inport и Output с правилами именования идентификаторов диаграмм Stateflow.

Явно задать свойства блоков ввода

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

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

Совет

Чтобы упростить обновление свойств блоков Inport, в качестве параметров можно указать типы и размеры данных.

Преобразование несмежных сигналов в непрерывные сигналы

Блоки аутпорта в функциях Simulink не поддерживают несмежные сигналы. Если функция содержит блок, выводящий несмежный сигнал, вставьте блок преобразования сигнала (Simulink) между несмежным выходом и блоком исходящего сигнала. Это действие обеспечивает непрерывность выходного сигнала.

Блоки, которые могут выводить несмежный сигнал, включают в себя блок Bus Creator (Simulink) и блок Mux (Simulink). Для блока Bus Creator выходной сигнал является несмежным, когда блок выводит виртуальную шину. Если выбрать Output в качестве невиртуальной шины, выходной сигнал является непрерывным и преобразование не требуется.

Не экспортировать функции Simulink

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

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

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

Не вызывать функции Simulink при переходах по умолчанию, выполняемых во время инициализации диаграммы

При выборе свойства диаграммы Execute (enter) Chart At Initialization нельзя вызывать функции Simulink в переходах по умолчанию, которые выполняются при первом пробуждении диаграммы. В противном случае при моделировании на диаграмме генерируется ошибка времени выполнения.

Не вызывать функции Simulink в состоянии During Действия или условия перехода графиков непрерывного времени

В диаграммах непрерывного времени нельзя вызывать функции Simulink во время второстепенных временных шагов. Вместо этого вызовите функции Simulink в действиях, которые происходят во время основных временных шагов: entry или exit действия и переходные действия. Вызов функций Simulink в состоянии during действия или условия перехода приводят к ошибке времени выполнения во время моделирования.

Не создавать код HDL для функций Simulink

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

Передать аргументы по значению

Передача аргумента функции Simulink по ссылке приводит к ошибке времени выполнения во время моделирования.

См. также

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

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