Фаза 2. Моделирование движения погрузчиков с произвольной навигацией

Собрав электроды в партии, мы перевозим эти партии в сушильные камеры, где пройдет процесс дегидратации электродов. Моделирование текущего этапа мы начнем с добавления погрузчиков в модель.

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

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

Создайте погрузчики
  1. Перетащите элемент Тип транспортера из палитры Библиотеки производственных систем на графическую диаграмму агента  Main.
  2. В диалоговом окне Создание агента укажите Имя типа агента: Forklift.
  3. Щелкните по кнопке Готово.
  4. Откройте секцию Склады и контейнерные терминалы палитры 3D объекты и перетащите элемент Погрузчик на графическую диаграмму агента  Forklift.
  5. Приведите размер 3D объекта в соответствие с масштабом агента.
  6. В секции Размеры и движение свойств агента  Forklift укажите следующее:

    a. Длина: 2 м
    b. Ширина: 1.3 м
    c. Высота: 1.5 м

  7. В поле При запуске в секции свойств агента Действия агента добавьте строку кода, которая позволит задать местоположение перевозимого объекта по отношению к центральной точке погрузчика: setCargoPosition(1, 0, 0, METER);


    Теперь во время выполнения модели на анимации груз будет отображаться точно на вилах погрузчика.

Нарисуйте базовое местоположение погрузчиков
  1. Перетащите Прямоугольный узел с палитры Разметка пространства на графическую диаграмму агента  Main.
  2. Назовите его forkliftHomeLocation.
  3. В свойствах узла выберите опцию Видимость: нет.
  4. Разместите узел в соответствии с изображением ниже:


Чтобы погрузчики всегда возвращались на одни и те же позиции в узле, необходимо задать эти позиции с помощью аттракторов.
  1. В свойствах узла щелкните кнопку Аттракторы... и задайте в диалоговом окне Аттракторы необходимое Количество аттракторов: 2.

  2. Щелкните кнопку OK, чтобы закрыть диалоговое окно.
Нарисуйте сушильную камеру
  1. Перетащите Прямоугольный узел с палитры Разметка пространства на графическую диаграмму агента  Main.
  2. Назовите curingOven.
  3. В свойствах узла выберите опцию Видимость: нет.
  4. Измените размер узла и его местоположение так, чтобы они соответствовали изображению ниже:

  5. В свойствах узла щелкните кнопку Аттракторы..., чтобы задать местоположение агентов в узле.
  6. В диалоговом окне выберите опцию Сетка и задайте значения 5 x 1. Перетащите аттракторы, чтобы изменить их местоположение.

Добавьте 3D анимацию

  1. Откройте палитру 3D объекты.
  2. Перетащите элемент Сушильная камера из секции Производство на графический редактор агента  Main и разместите его поверх аттрактора в узле curingOven.
  3. В открывшемся диалоговом окне Автомасштабирование 3D объекта щелкните кнопку Да.
  4. Расположите объект так, чтобы он находился в пределах стен нашего плана и полностью закрывал собой аттрактор.


  5. Скопируйте 3D объект (Ctrl+перетаскивание) и разместите копию на следующем аттракторе. Повторяйте процесс, пока все аттракторы в узле curingOven не будут закрыты 3D объектами.

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

Задайте управление погрузчиками в диаграмме процесса

  1. Откройте палитру Библиотеки производственных систем и перетащите блок Transporter Fleet на графическую диаграмму агента  Main.
  2. Назовите его forklifts.
  3. В свойствах блока укажите следующее:

    a. В параметре Тип навигации выберите опцию Произвольное перемещение. Теперь погрузчики в нашей модели будут перемещаться в пространстве самостоятельно и сами смогут объезжать препятствия в производственном цехе.
    b. Задайте Количество транспортеров: 2. Двух погрузчиков будет достаточно, чтобы перевозить партии электродов между областью ожидания и сушильными камерами.
    c. В параметре Базовое местоположение (узлы) выберите узел forkliftHomeLocation.
    d. Задайте Радиус поворота: 1 м.
    e. В параметре Новый транспортер выберите тип агента  Forklift.
    f. Задайте Максимальную скорость: 0.5 м/с.


  4. Перетащите блок MoveByTransporter с палитры Библиотеки производственных систем на графическую диаграмму агента Main и поместите его в диаграмму процесса после блока batch.
  5. В свойствах блока укажите следующее:

    a. Имя: toOven
    b. Место назначения: Node
    c. Узел: curingOven
    d. Автопарк: forklifts
    e. Время погрузки: 1 минуты
    f. Время разгрузки: 1 минуты


Задать процесс сушки электродов

После того, как электроды были доставлены в сушильную камеру, начнется процесс дегидратации. В реальности такие процессы занимают от 12 до 24 часов. Для целей нашего учебного пособия мы значительно сократили это время.

  1. Перетащите блок Delay с палитры Библиотеки моделирования процессов на графическую диаграмму Main и разместите ее в диаграмме процесса после блока toOven.
  2. В свойствах блока delay задайте Время задержки: 2 минуты.
  3. Укажите Место агентов: curingOven.
  4. Запустите модель и посмотрите, как погрузчики перевозят партии электродов.

Задайте перемещение электродов в область ожидания

  1. Нарисуйте прямоугольный узел на плане в соответствии с изображением ниже.
  2. Назовите его preassembleElectrodeBuffer.

    С помощью этого узла мы задаем место, куда погрузчики будут доставлять партии электродов, прошедших дегидратацию.


  3. В свойствах узла выберите опцию Видимость: нет.
  4. Задайте Расположение внутри: Упорядоченное.
  5. Добавьте в диаграмму процесса еще один блок MoveByTransporter и расположите его после блока delay.
  6. Назовите новый блок toElectrodeBuffer.
  7. В свойствах блока toElectrodeBuffer укажите следующее:

    a. Узел: preassembleElectrodeBuffer
    b. Автопарк: forklifts
    c. Время погрузки: 0.5 минуты
    d. Время разгрузки: 0.5 минуты

  8. Запустите модель и посмотрите, как погрузчики выполняют перемещение груза и двигаются среди препятствий в режиме произвольной навигации.

Контрольная модель: Lead Acid Battery Production - Phase 2


          Фаза 1. Создание партий электродов

          Фаза 3. Обертывание электродов в конверты и сборка групп