Определите, сколько времени занимает каждый объект для перехода от одного блока к другому или сколько времени каждый объект проводит в определенной области модели. Чтобы вычислить эти длительности, можно измерить длительности времени для каждого объекта, достигающего определенной точки в модели. Общий рабочий процесс:
Создайте атрибут для объекта, который может содержать значение времени.
Когда объект достигает определенной точки в модели, задайте текущее значение времени для атрибута. Вызовите функцию Simulink ®, содержащую блок цифровых часов.
Когда объект достигает места назначения, вычислите интервал времени, передав значение атрибута другой функции Simulink, которая сравнивает его с текущим временем моделирования.
В этом примере показано, приводит ли заказ FIFO или приоритетная очередь для клиентов к более короткому времени ожидания. startTimer и readTimer Функции симулятора совместно выполняют вычисление синхронизации. В этом примере для вычисления среднего времени используется средний блок из системного Toolbox™ DSP.

В этом примере имеется четыре функциональных блока Simulink. Две функции определяют функции таймера, startTimTimer и readTimer. Другие функции рассчитывают среднее время.
В новой модели перетащите блоки, показанные в примере, и повторно промаркируйте и соедините их, как показано на рисунке.
Для блока startTimer определите:

Для блока readTimer определите:

Для avg_time_fifo(t) и avg_time_priorityБлоки функции Simulink, вставьте блок Mean, например:

Для блока «Генератор объектов»:
На вкладке Тип объекта (Entity type) добавьте два атрибута, ServiceTime и Timer.
На вкладке Действия объекта (Entity actions) задайте два значения атрибута:
entity.ServiceTime = exprnd(3); entitySys.priority = randi(2);
В очереди сущностей:
На вкладке Главная установите тип очереди FIFO.
На вкладке Действия с событиями вызовите startTimer для действия Ввод:
entity.Timer = startTimer();
В Queue1 сущности:
На вкладке «Главная» настройте блок как приоритетную очередь с источником приоритета entitySys.priority:

На вкладке Действия с событиями вызовите startTimer для действия Ввод:
entity.Timer = startTimer();
Для обоих блоков сервера сущностей:
Установить для источника времени обслуживания значение Attribute.
Задать для имени атрибута времени обслуживания значение ServiceTime.
Для параметра Entity Terminator вызовите readTimer и avg_time_fifo функции для события Entry:
% Read timer elapsedTime = readTimer(entity.Timer); % Compute average avg_time_fifo(elapsedTime);
Для Terminator1 объекта вызовите readTimer и avg_time_priority функции для события Entry:
% Read timer elapsedTime = readTimer(entity.Timer); % Compute average avg_time_priority(elapsedTime);
Сохраните и запустите модель.

Генератор объектов | Репликатор сущностей | Функция симулятора