События и действия события

В дискретно-событийной симуляции событие является наблюдением за мгновенным инцидентом, который может заменить переменную состояния, вывод и/или вхождение других событий. Можно создать действия события, чтобы произойти, когда сущности изменяют состояние, например, когда сущность выходит из блока. Для списка блоков и действий они могут иметь, видеть Действия Устройства хранения данных.

Календарь событий отслеживает предстоящие события для модели во время дискретно-событийной симуляции. Для получения дополнительной информации о календаре событий смотрите Календарь событий.

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

Создайте действия события

Действия события Define с вкладкой Event actions блока. Это возможные действия, для которых можно создать события.

Генератор сущностиОчередь сущностиСервер сущностиТерминатор сущностиПолучатель ресурсаСоздатель пакета сущности

Генерация сущности

Запись сущности в блок очереди

Запись сущности в блок сервера

Запись сущности в блок терминатора строки

Запись сущности в блок получателя

Запись сущности, чтобы обработать блок в пакетном режиме

Выход сущности из блока

Выход сущности из блока

Сервисное завершение сущности

Нет данных

Выход сущности из блока получателя

Генерация пакета сущности

Нет данных

Сущность блокируется

Выход сущности из блока

Нет данных

Сущность блокируется

Выход сущности из блока

Нет данных

Нет данных

Сущность блокируется

Нет данных

Нет данных

Сущность блокируется

Нет данных

Нет данных

Сущность вытесняется

Нет данных

Нет данных

Нет данных

В действиях события можно также изменить атрибуты сущности (entityName.attributeName), приоритеты сущности (sys.entity.priority) и идентификаторы сущности (sys.entity.id). Однако вы не можете изменить эти атрибуты сущности или ее системные свойства (entitySys) для выходных действий ни в каком блоке. Попытка изменить эти значения вызывает ошибку при симуляции.

Пример seExampleTankFilling имеет два заданные действия события в блоках Сервера Генератора и Сущности Сущности. Этот пример воссоздает действие события в блоке Entity Server.

  1. В новой модели, от библиотеки SimEvents®, перетаскивают Сервер Сущности и Функциональные блоки Simulink.

  2. В блоке Entity Server:

    • Кликните по вкладке Entity actions.

    • Чтобы создать действие с записью сущности, нажмите Entry.

    • В разделе Entry action введите:

      startFilling(entity.Capacity);

      Эта команда вызывает функцию, startFilling.

      Входящая строка к значку блока Entity Server обновляет со значком действия события ({...}), указывающий, что блок задает действие события.

  3. В Функциональном блоке Simulink:

    1. В Триггерном Порте введите startFilling в параметр Function name.

    2. Притяните блок Inport и переименуйте его к прописной букве.

    3. Переименуйте вход u к capacity и соедините его с прописной буквой.

    4. Удалите y вывод.

    5. Притяните блок MATLAB function и блок Outport.

    6. В функции MATLAB введите код:

      function y = toggle()
      %#codegen
      persistent u
      
      if isempty(u)
          u = -1;
      end
      
      if u == -1
          u = 1;
      else
          u = -1;
      end
      
      y = u;
    7. Соедините y вывод блока MATLAB function к блоку Outport и переименуйте блок Outport, чтобы сбросить.

    Вы теперь задали функцию startFilling для действия события. Чтобы опционально визуализировать связь между блоком Entity Server и Функциональным блоком Simulink, в Редакторе, выбирают Display> Function Connectors.

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

| | | | | | | | | | | | | | | |

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

Больше о