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

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

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

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

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

  1. Добавьте Функцию  из палитры Агент  и назовите ее sendTransport. Эта функция является просто Действием (не возвращает ничего) и имеет два аргумента, которые необходимо добавить в секции Аргументы: Transport t и ServiceRequest request. Эта функция отправляет транспорт к турбине, когда это необходимо, передавая собщение диаграмме состояний, заданной на диаграмме типа агента Transport.


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

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

  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. Нам необходимо изменить свойства лопастей турбины. Фигура анимации Ветряная турбина является группой, состоящей из двух 3D фигур: башни турбины и лопастей. Нам нужно открыть свойства лопастей.
  2. Вы можете выделить лопасти щелчком мыши в графическом редакторе, или открыть панель Проекты и раскрывать уровни дерева модели, пока не найдете группу wind_blades:

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


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

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

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

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

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

Контрольная модель: Maintenance - Phase 5

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


          Шаг 4. Настройка поведения сервисного центра

          Шаг 6. Завершение настройки логики транспорта