В примере Моделирование гибридных систем - Заполнение баков показано, что баки в очереди должны быть заполнены. В примере SimEvents® компонент моделирует поведение, основанное на событиях, в Simulink® компонент моделирует основанную на времени динамику.
Без блоков Selection Gate и Simulink Function поток баков в процессе Discrete-Event следует за их генерацией, постановкой в очередь, обслуживанием и завершением. Дополнительные сведения о построении компонента SimEvents модели см. в разделе Создание дискретной модели события. Дополнительные сведения о записи действий события для той же модели см. в разделе Управление сущностями с использованием действий события.
Модель Бака Pump является компонентом Simulink, который представляет управляемый временем процесс заполнения бака. Когда бак заполнен, она генерирует сообщение SimEvents через блок Hit Crossing, и сообщение следует аналогичному потоку генерации, постановки в очередь, обслуживания и завершения. Значок обозначает переход между основанным на времени и событии поведением.
Поступление бака в блок Entity Server запускает процесс заполнения в модели Pump-Tank. Когда бак заполнен, Hit Crossing блок с меткой Tank Full генерирует сообщение. Поступление этого сообщения в компонент Processor in Interface приводит к тому, что блок Simulink Function отпускает ворота выбора для полного отправления бака.
Далее подробно представлены SimEvents и Simulink компоненты модели.
Часть SimEvents моделирует поток баков.
Блок Entity Generator генерирует баки.
Блок Entity Queue помещает каждый бак в очередь в режиме FIFO.
Блок Entity Server вызывает startFilling
Функция Simulink для заполнения каждого бака. Одновременно могут обслуживаться несколько баки.
Блок Entity Server в Интерфейсе обрабатывает сообщение SimEvents, сгенерированное блоком Hit Crossing, и вызывает функцию Simulink, чтобы включить подсистему Selection Gate для определенного бака. Блок также вызывает функцию Simulink, чтобы повторно инициализировать блок Integrator для следующего заполнения.
Часть Simulink моделирует управляемый во времени процесс заполнения баков.
Этот компонент содержит логику заполнения баков.
Каждый бак имеет Capacity
атрибут. Непрерывная временная часть моделирует процесс заполнения бака, смоделированный блоком Integrator. Когда бак заполняется до своей емкости, подсистема Selection Gate освобождает бак, и бак отходит.
Этот компонент также содержит функцию Simulink startFilling
.
Блок Hit Crossing обнаруживает завершение процесса заполнения бака и отправляет сообщение SimEvents относительно этого события. Это сообщение обрабатывается в интерфейсе, который инициирует релиз бака с помощью селекторного затвора и повторную инициализацию блока Integrator для следующего заполнения.
Запустите пример Modeling Hybrid Systems - Bank Filling. В первых возможностях наблюдайте процесс заполнения для каждого насоса.
Во вторых возможностях следить за количеством выезжающих после заполнения грузовиков. График показывает, что есть 15
грузовики, покидающие объект после заполнения их газовых баков.
В примере «Моделирование гибридных систем - Заполнение бака» основанная на времени динамика заполнения бака сосуществует с основанной на событиях динамикой системы потока бака. Когда вы запускаете симуляцию, решатель и календарь событий играют роль. На основных временных шагах решателя, симуляция решает обыкновенные дифференциальные уравнения, которые представляют динамику системы заполнения бака. Решение динамики на основе событий предполагает планирование и обработку событий, таких как завершение обслуживания и генерация сущности, в календаре событий SimEvents. Поскольку модель использует решатель с переменным шагом, когда события происходят в системе с дискретным событием, решатель имеет большой временной шаг.
Дополнительные сведения о решателях см. в разделе Решатели для систем дискретных событий. Дополнительные сведения о создании основанных на событиях и времени моделей см. в разделе Работа с SimEvents и Simulink.
Entity Generator | Entity Queue | Entity Server