Блок Function-Call Subsystem является условно выполненной подсистемой, которая запускается каждый раз, когда порт управления получает событие вызова функции. Stateflow® график, Function-Call Generator блок, S-Function блок или Hit Crossing блок могут обеспечить события вызова функции.
Подсистема вызова функций аналогична функции на языке процедурного программирования. Вызов подсистемы вызова функций выполняет методы выхода блоков в подсистеме в порядке выполнения. Объяснение Function-Call Subsystem параметров блоков см. в Subsystem.
Чтобы создать подсистему вызова функций:
Добавьте блок Function-Call Subsystem к модели.
Откройте блок подсистемы. Добавьте блок, определяющую алгоритм, который выполняется, когда подсистема получает событие вызова функции.
Установите начальные и отключенные значения для блоков Outport. См. «Исходные выходные значения условной подсистемы» и «Выходные значения условной подсистемы при отключении».
Установите режим обработки состояний подсистемы при выполнении подсистемы:
Откройте блок подсистемы, затем откройте диалоговое окно параметров блоков для блока Trigger. В раскрывающемся списке States when enabling выберите опцию:
held
- государства сохраняют свои последние значения.
reset
- государства устанавливают свои начальные условия.
inherit
- Используйте настройку hold или reset из родительской подсистемы, инициирующей вызов функции.
Для вложенных подсистем, блоки Function-Call Subsystem которых имеют различные настройки параметров, настройки дочерней подсистемы переопределяют параметры, унаследованные от родительской подсистемы. См. Trigger.
Присоедините инициатор вызова функции к входному порту вызова функции.
Если вы прикрепили блок Inport, откройте блок, выберите вкладку Signal Attributes, а затем установите флажок Output function call.
Сконфигурируйте Function-Call Subsystem блок путем установки Sample time type его Trigger Port блока равной triggered
или periodic
.
Триггерная (апериодическая) подсистема вызова функций может выполняться нуль, один или несколько раз в течение временного шага.
Если подсистема вызова функций выполняется блоком Inport вызова функции корневого уровня с дискретным шагом расчета, несколько вызовов функции в течение временного шага не допускаются. Чтобы разрешить несколько вызовов функций, установите Sample time равным -1
(унаследовано) и установите значение шага расчета для всех блоков подсистемы вызова функции -1
(унаследовано).
Периодическая подсистема вызова функций выполняется один раз в течение временного шага и должна принимать периодические вызовы функции. Если вызовы функций являются апериодическими, симуляция останавливается, и выводится сообщение об ошибке. Установите шаг расчета для всех блоков в подсистеме вызова функций равным -1
(унаследовано).
Примечание
Во время проверки области значений минимальная и максимальная настройки параметров передаются назад на фактический исходный порт подсистемы вызова функций, даже когда подсистема вызова функций не включена.
Чтобы предотвратить это распространение назад:
Добавьте Signal Conversion блок и Signal Specification блок после исходного порта.
Установите Output блока Signal Conversion равной Signal copy
.
Задайте минимальное и максимальное значения для блока Signal Specification вместо того, чтобы указывать их на исходном порту.