AnyLogic
Развернуть
Размер шрифта

Шаг 5. Настройка поведения турбин

На этом этапе мы зададим поведение турбин с помощью диаграммы состояний: когда и как турбины выходят из строя или требуют планового техобслуживания. Также мы настроим анимацию турбин: пусть лопасти турбины перестают крутиться при экстренной поломке. К тому же, мы хотели бы видеть цветовую индикацию состояния турбины.

Задайте временные интервалы работы турбин

  1. Двойным щелчком откройте тип агента Turbine из дерева элементов модели. Начните с добавления двух элементов Параметр из палитры Агент в графический редактор.
  2. Параметр с именем MTTF (среднее время до аварии) имеет тип Время и его Значение по умолчанию равняется 50 дням. Дни вы можете выбрать в свойстве Единица измерения.

  3. Второй параметр, serviceTimeout, также имеет тип Время; его Значение по умолчанию равняется 2 неделям.

Добавьте функции, управляющие запросами на транспорт

  1. Добавьте Функцию из палитры Агент и назовите ее sendRequest.
  2. Задайте ее свойства, как указано на рисунке ниже. В секции свойств Аргументы добавьте аргумент type типа TransportType. Тело функции ссылается на функцию findTransport(), которую мы ранее создали на диаграмме Main. Когда турбина отправляет запрос на обслуживание, сервисный центр должен отправлять соответствующий тип транспорта: AUTO или AVIA.

    ServiceRequest req = new ServiceRequest(type, this);
    Transport t = main.findTransport(req);
    if (t != null)
    {
      t.request = req;
      send(req, t);
    }
    else if (type == AUTO)
      main.autoRequests.addLast(req);
    else
      main.aviaRequests.addLast(req);

Задайте состояния турбины

  1. Теперь мы готовы приступить к созданию диаграммы состояний турбины. Откройте палитры Диаграмма состояний и перетащите на диаграмму Turbine элемент Начало диаграммы состояний.
  2. Добавьте состояния и переходы , как показано на рисунке. Внутри сложного состояния Operating используйте Указатель начального состояния, ведущий в состояние Normal:

  3. Для каждого состояния турбины задается свое Действие при входе. Когда происходит авария, турбина находится в состоянии Failure (авария) и отправляет запрос на обслуживание AVIA транспортом (вертолетом). Когда подходит время планового обслуживания, турбина отправляет запрос на AUTO транспорт — грузовик.
    Состояние Действие при входе
    Failure sendRequest(AVIA);
    ScheduledService sendRequest(AUTO);
  4. Переход от состояния Operating (работает) к состоянию Failure происходит С заданной интенсивностью , которая равняется 1/MTTF в день - один раз за среднее время до аварии. Переход обратно из состояния Failure в состояние Operating происходит При получении заданного сообщения  "repaired" (исправлено).

  5. Иногда работающая турбина получает сообщение "scheduled" (запланировано), и это означает, что ей требуется плановое обслуживание - при этом происходит переход в соответствующее состояние ScheduledService. Когда турбина получает сообщение  "repaired", обслуживание завершено, и она снова может вернуться в рабочее состояние Operating.

  6. Добавьте циклическое Событие по таймауту и назовите его scheduledRepair. Это событие будет запускаться, когда турбине требуется плановое обслуживание (согласно переменной serviceTimeout), и оно будет запускать переход от состояния Operating в состояние ScheduledService.

Настройте анимацию лопастей турбины

  1. Нам необходимо изменить свойства лопастей турбины. Откройте панель Проекты и выберите группу wind_blades:

  2. Перейдите в свойства этой группы. Разверните секцию Местоположение и размер и введите inState(Operating) ? time() : 0 в поле свойства Поворот Y. Теперь лопасти будут вращаться, когда турбина находится в рабочем состоянии, а при поломке турбины будут останавливаться.

Добавьте индикацию состояния турбины

  1. Откройте палитру Презентация и сделайте двойной щелчок по элементу Овал, чтобы перейти в режим рисования для этого элемента.
  2. Нарисуйте круг вокруг фигуры турбины радиусом 10.
  3. Щелкните по фигуре круга правой кнопкой мыши и выберите Порядок > На задний план в контекстном меню.
  4. Перейдите в секцию Внешний вид свойств круга. Введите выражение, которое будет вычисляться во время прогона модели в поле свойства Цвет заливки, чтобы цвет менялся в зависимости от состояния турбины.
  5. Чтобы иметь возможность задать динамическое значение в поле свойства, щелкните его значок .

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

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

Запустите модель. Вы увидите, что некоторые турбины работают, некоторые ожидают планового обслуживания, а некоторые - вышли из строя.

Демо-модель: Maintenance — Phase 5 Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Теперь мы можем вернуться к настройке транспорта.

Как мы можем улучшить эту статью?