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

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

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

Нарисуйте конвейер, станции и область сборки

  1. Дважды щелкните по элементу Конвейер палитры Библиотека производственных систем.
  2. Нарисуйте конвейер в соответствии с изображением ниже.
  3. Назовите его wrappingConveyor.
    Чтобы создать скругленный поворот, поставьте точку там, где поворот должен начаться, затем поставьте точку в месте, где поворот должен снова перейти в прямую линию и, не отпуская левую клавишу мыши, двигайте мышь, пока не добьетесь нужной формы от сегмента поворота. Когда это произойдет, отпустите кнопку мыши и продолжайте рисовать прямую линию.

    Чтобы завершить рисование, дважды щелкните мышью в конечной точке конвейера.
  4. В свойствах конвейера укажите следующее:
    a. Тип материального объекта: Electrode
    b. Z: 20
    c. Ширина: 0.5 метра

    В итоге ваш конвейер должен выглядеть следующим образом:

  5. Перетащите элемент Станция обработки с палитры Библиотека производственных систем на графический редактор агента Main и разместите его на конвейере wrappingConveyor:

  6. Назовите станцию wrappingStation.
  7. В свойствах станции выберите опцию Видимость: нет.
  8. Настройте свойства wrappingStation следующим образом:
    a. Длина: 0.5 метра
    b. Время обработки: 1 секунда
    d. Не изменяйте значение свойства Вместимость: 1
    c. В параметре Загрузка выберите опцию Идет одновременно с выгрузкой.

  9. Теперь нам нужно задать области, где будет проходить процесс сборки электродов в группу. Разные этапы сборки будут происходить в разных областях. Мы воспользуемся элементом Прямоугольный узел, чтобы определить границы этих областей:

    a. wrappedElectrodeBuffer - временная область ожидания, где обернутые в конверты электроды находятся перед тем, как их начнут объединять в группы.
    Ширина: 25
    Высота: 20

    b. assembleArea - область, где происходит непосредственная сборка в группы.
    Ширина: 15
    Высота: 20

    c. assembledBlocksBuffer - временная область хранения собранных блоков электродов.
    Ширина: 20
    Высота: 20

    Размеры этих узлов нужно задавать с максимальной точностью, чтобы они не выступали из-под 3D объекта, который мы добавим на следующем этапе моделирования.

  10. В свойствах каждого из трех узлов укажите следующее:
    a. Видимость: нет
    b. Расположение внутри: Упорядоченное
    c. Z: 20

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

  1. Перетащите 3D объект Конвертировщик с палитры 3D объекты на графическую диаграмму агента Main.
  2. В диалоговом окне Автомасштабирование 3D объекта щелкните по кнопке Да.
  3. Расположите 3D объект поверх станции wrappingStation так, как указано на изображении ниже:

  4. Таким же образом используйте 3D объект Машина пайки блоков аккумулятора из палитры 3D объекты, чтобы создать анимацию для области сборки блоков.
  5. В свойствах 3D объекта задайте Доп. масштабирование: 160% для всех составных частей объекта. Чтобы выбрать составную часть, щелкайте мышью по объекту. При первом щелчке выбирается объект целиком, при втором - первая составная часть, при третьем - вторая составная часть.
  6. С помощью метки-манипулятора разверните 3D объект на 90 градусов вправо. Обратите внимание на изображение ниже: так машина для пайки блоков должна выглядеть на графическом редакторе в вашей модели:

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

Добавьте процесс обертывания электродов в диаграмму процесса

Сначала мы разберем партии электродов на отдельные электроды.

  1. Перетащите блок Unbatch с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main и разместите его в диаграмме процессов перед блоком sink.
  2. Назовите новый блок unbatchElectrodes.

  3. В параметре Тип элемента свойств блока выберите Electrode.

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

  1. Снимите флажок в свойстве Элементы возникают в том же месте, где партия.
  2. В свойстве Новое местоположение выберите опцию Точка.
  3. В свойстве Координата X введите следующий код: wrappingConveyor.getStartPoint().x.
    В этом коде мы обращаемся к конвейеру по имени. Затем мы вызываем функцию конвейера getStartPoint(), которая возвращает объект Point с координатами начальной точки конвейера, и указываем x-координату.
  4. Используйте подход, который мы только что описали выше, чтобы указать y-координату начальной точки конвейера в свойстве Координата Y. Ваш код должен выглядеть следующим образом: wrappingConveyor.getStartPoint().y.

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

  5. Добавьте блок Convey в диаграмму процесса после блока unbatchElectrodes.
  6. Назовите новый блок wrappingConvey.

  7. В свойствах блока укажите следующее:
    a. Начальный конвейер: wrappingConveyor.
    b. Конечный конвейер: wrappingConveyor.
    с. Выберите опцию Покинуть конвейер при выходе.

Цвет электродов в конвертах изменится. Чтобы это продемонстрировать, мы используем элемент wrappingStation.

  1. Откройте свойства станции wrappingStation и распахните секцию Действия.
  2. В поле При окончании процесса введите следующий код: agent.color = white;

  3. Запустите модель и посмотрите, как электроды оборачиваются в конверты.

Сборка блоков

Создадим новый тип материального объекта, который будет выполнять роль блока электродов.

Создайте новый тип материального объекта

  1. Перетащите элемент Тип материального объекта с палитры Библиотеки производственных систем на графическую диаграмму агента Main.
  2. В диалоговом окне Создание агента укажите Имя типа агента: BatteryBlock и щелкните по кнопке Готово.
  3. В графическом редакторе агента BatteryBlock выберите элемент Масштаб и задайте значение параметра Длина линейки соответствует: 1 метру.
  4. Перетащите 3D объект Группа пластин аккумулятора с палитры 3D объекты на графическую диаграмму агента BatteryBlock и разместите его в точке начала координат.
  5. В диалоговом окне Автомасштабирование 3D объекта щелкните по кнопке Да.
  6. Дважды скопируйте 3D объект (Ctrl + перетаскивание) и расположите копии в соответствии с изображением ниже:

Чтобы описать процесс сборки в диаграмме процесса, мы используем блок Assembler.

Добавьте процесс сборки блока электродов в диаграмму процесса

  1. Перетащите блок Assembler с палитры Библиотеки моделирования процессов на графический редактор агента Main и добавьте его в диаграмму процессов перед блоком sink.
  2. Убедитесь в том, что предыдущий блок соединился с самым верхним входным портом блока assembler.

  3. В свойствах блока assembler задайте следующие параметры:
    a. Количество 1: 15. Здесь мы задаем количество входящих агентов одного типа, необходимых для формирования одного нового агента.
    b. Количество 2: 0.
    c. Новый агент: BatteryBlock.
    d. Время задержки: 5 минут. Здесь задается время, необходимое для сборки одного блока электродов.
    e. Вместимость буфера на выходе: 1.
    Здесь мы создаем буфер, в котором собранный новый агент (блок электродов) будет ожидать, когда его примет следующий блок в диаграмме процесса, поскольку этому блоку нужно будет знать координаты нового собранного агента.
    f. Место нового агента: Узел сети/ГИС.
    g. Узел: assembledBlocksBuffer.
    h. Место агентов (delay): assembleArea. Здесь мы задаем место, где будет происходить непосредственно процесс сборки блока.

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

Добавьте ресурсы

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

  6. Назовите узел operatorLocation. Во время выполнения модели наш рабочий будет находиться здесь.
  7. В свойствах узла выберите опцию Видимость: нет.
  8. Перетащите блок ResourcePool с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main.
  9. Назовите новый блок operator.

  10. Перейдите в свойства блока и в параметре Новый ресурс выберите тип агента Operator.
  11. В параметре Базовое местоположение (узлы) выберите узел operatorLocation.
  12. Перейдите в свойства блока assembler и выберите оператора в параметре Набор ресурсов, щелкнув по кнопке :

  13. Запустите модель!

Демо-модель: Lead Acid Battery Production — Phase 3 Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.
Как мы можем улучшить эту статью?