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

Блок Function-Call Subsystem является условно выполняемой подсистемой, которая запускается каждый раз, когда управляющий сигнал получает событие вызова функции. График Stateflow®, блок Function-Call Generator или блок an S-function могут обеспечить события вызова функции.

Подсистема вызова функций походит на функцию на языке процедурного программирования. Вызов подсистемы вызова функций выполняет выходные методы блоков в подсистеме в порядке выполнения. Для объяснения параметров блоков Function-Call Subsystem смотрите Subsystem, Atomic Subsystem, Nonvirtual Subsystem, CodeReuse Subsystem

Создание подсистемы вызова функций

Создать подсистему вызова функций:

  1. Добавьте блок Function-Call Subsystem в свою модель.

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

  3. Установите начальные и отключенные значения для блоков Outport. Смотрите Условные Выходные значения Начальной буквы Подсистемы и Условные Выходные значения Подсистемы, Когда Отключено.

  4. Установите, как состояния подсистемы обработаны, когда подсистема выполняется.

    Откройте блок подсистемы, и затем откройте диалоговое окно параметров блоков для блока Trigger. От States when enabling выпадающий список выберите:

    • held — Состояния обеспечивают свои новые значения.

    • reset — Набор состояний к их начальным условиям.

    • inherit — Используйте сохраненный или сброс, сходящий с родительской подсистемы, инициирующей вызов функции.

    Для вложенных подсистем, блоки Function-Call Subsystem которых имеют различные установки параметров, настройки для дочерней подсистемы заменяют настройки, наследованные от родительской подсистемы.

  5. Присоедините инициатора вызова функции к входному порту вызова функции.

    Если вы присоединяете блок Inport, открываете блок, выберите панель Атрибутов Сигнала, и затем установите флажок Output function call.

Распространение шага расчета в подсистеме вызова функций

Сконфигурируйте блок Function-Call Subsystem путем установки Sample time type его блокировки порта Trigger к triggered или periodic.

  • Инициированная (апериодическая) подсистема вызова функций может выполнить нуль, один, или многократно во время временного шага.

    Если подсистема вызова функций выполняется блоком Inport вызова функции корневого уровня с дискретным шагом расчета, несколько вызовов функции во время временного шага не позволены. Чтобы позволить несколько вызовов функции, установите Sample time на -1 (наследованный), и набор шаг расчета для всех блоков в подсистеме вызова функций к -1 (наследованный).

  • Периодическая подсистема вызова функций выполняется однажды во время временного шага и должна получить периодические вызовы функции. Если вызовы функции являются апериодическими, остановки симуляции и сообщение об ошибке отображен. Установите шаг расчета для всех блоков в подсистеме вызова функций к -1 (наследованный).

Примечание

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

Предотвратить это обратное распространение:

  1. Добавьте блок Signal Conversion и блок Signal Specification после исходного порта.

  2. Установите Output блока Signal Conversion к Signal copy.

  3. Задайте минимальные и максимальные значения для блока Signal Specification вместо того, чтобы задать их на исходном порте.

Примеры модели

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

Блоки

Связанные примеры

Больше о