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

Блок 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 - Используйте настройку hold или reset из родительской подсистемы, инициирующей вызов функции.

    Для вложенных подсистем, блоки 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 вместо того, чтобы указывать их на исходном порту.

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

См. также

Блоки

Похожие примеры

Подробнее о