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

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

Подсистема вызова функций походит на функцию на языке процедурного программирования. Вызов подсистемы вызова функций выполняет выходные методы блоков в подсистеме в отсортированном порядке. Для объяснения параметров блоков Подсистемы вызова функций смотрите Подсистему, Атомарную подсистему, Невиртуальную Подсистему, Подсистему CodeReuse

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

Образцовые примеры

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

Блоки

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

Больше о