exponenta event banner

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

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

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

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

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

  1. Добавьте в модель блок подсистемы Function-Call.

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

  3. Установка начальных и отключенных значений для блоков Outport. См. Исходные выходные значения условной подсистемы и Выходные значения условной подсистемы при отключении.

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

    Откройте блок подсистемы, а затем диалоговое окно параметров блока триггера. В раскрывающемся списке Состояния при включении выберите параметр:

    • held - государства сохраняют свои самые последние ценности.

    • reset - государства, настроенные на свои первоначальные условия.

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

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

  5. Подключите инициатор вызова функции к порту ввода вызова функции.

    При подключении блока Inport откройте блок, перейдите на закладку Signal Attributes и установите флажок Output function call.

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

Конфигурирование блока Function-Call Subsystem путем установки типа времени Sample для его блока Trigger Port в значение triggered или periodic.

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

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

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

Примечание

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

Чтобы предотвратить обратное распространение:

  1. Добавьте блок преобразования сигнала и блок спецификации сигнала после порта источника.

  2. Установите выходной сигнал блока преобразования сигнала в значение Signal copy.

  3. Укажите минимальное и максимальное значения для блока «Спецификация сигнала» вместо их указания в исходном порту.

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

См. также

Блоки

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

Подробнее