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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Если вы присоединяете блок Inport, открываете блок, выберите вкладку Signal Attributes, то установите флажок Output function call.

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

Блоки

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

Больше о