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