После обработки в сушильных камерах электроды оборачиваются в специальные изоляционные конверты. Затем происходит спайка нескольких электродов в группу. Мы начнем моделировать эти процессы с добавления необходимых элементов разметки пространства: конвейера, станций и областей сборки.
Нарисуйте конвейер, станции и область сборки
- Дважды щелкните по элементу Конвейер палитры Библиотека производственных систем.
- Нарисуйте конвейер в соответствии с изображением ниже.
-
Назовите его wrappingConveyor.
Чтобы создать скругленный поворот, поставьте точку там, где поворот должен начаться, затем поставьте точку в месте, где поворот должен снова перейти в прямую линию и, не отпуская левую клавишу мыши, двигайте мышь, пока не добьетесь нужной формы от сегмента поворота. Когда это произойдет, отпустите кнопку мыши и продолжайте рисовать прямую линию. Чтобы завершить рисование, дважды щелкните мышью в конечной точке конвейера. - В свойствах конвейера укажите следующее:
a. Тип материального объекта: Electrode
b. Z: 20
c. Ширина: 0.5 метраВ итоге ваш конвейер должен выглядеть следующим образом:
- Перетащите элемент Станция обработки с палитры Библиотека производственных систем на графический редактор агента Main и разместите его на конвейере wrappingConveyor:
- Назовите станцию wrappingStation.
- В свойствах станции выберите опцию Видимость: нет.
-
Настройте свойства wrappingStation следующим образом:
a. Длина: 0.5 метра
b. Время обработки: 1 секунда
d. Не изменяйте значение свойства Вместимость: 1
c. В параметре Загрузка выберите опцию Идет одновременно с выгрузкой. -
Теперь нам нужно задать области, где будет проходить процесс сборки электродов в группу. Разные этапы сборки будут происходить в разных областях. Мы воспользуемся элементом Прямоугольный узел, чтобы определить границы этих областей:
a. wrappedElectrodeBuffer - временная область ожидания, где обернутые в конверты электроды находятся перед тем, как их начнут объединять в группы.
Ширина: 25
Высота: 20
b. assembleArea - область, где происходит непосредственная сборка в группы.
Ширина: 15
Высота: 20
c. assembledBlocksBuffer - временная область хранения собранных блоков электродов.
Ширина: 20
Высота: 20Размеры этих узлов нужно задавать с максимальной точностью, чтобы они не выступали из-под 3D объекта, который мы добавим на следующем этапе моделирования.
-
В свойствах каждого из трех узлов укажите следующее:
a. Видимость: нет
b. Расположение внутри: Упорядоченное
c. Z: 20
Добавьте 3D анимацию
- Перетащите 3D объект Конвертировщик с палитры 3D объекты на графическую диаграмму агента Main.
- В диалоговом окне Автомасштабирование 3D объекта щелкните по кнопке Да.
- Расположите 3D объект поверх станции wrappingStation так, как указано на изображении ниже:
- Таким же образом используйте 3D объект Машина пайки блоков аккумулятора из палитры 3D объекты, чтобы создать анимацию для области сборки блоков.
- В свойствах 3D объекта задайте Доп. масштабирование: 160% для всех составных частей объекта. Чтобы выбрать составную часть, щелкайте мышью по объекту. При первом щелчке выбирается объект целиком, при втором - первая составная часть, при третьем - вторая составная часть.
- С помощью метки-манипулятора разверните 3D объект на 90 градусов вправо. Обратите внимание на изображение ниже: так машина для пайки блоков должна выглядеть на графическом редакторе в вашей модели:
Теперь нам необходимо описать логику процесса обертывания электродов в конверты.
Добавьте процесс обертывания электродов в диаграмму процесса
Сначала мы разберем партии электродов на отдельные электроды.
- Перетащите блок Unbatch с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main и разместите его в диаграмме процессов перед блоком sink.
- Назовите новый блок unbatchElectrodes.
- В параметре Тип элемента свойств блока выберите Electrode.
Мы хотим, чтобы все извлеченные из партии электроды появлялись прямо на конвейере wrappingConveyor, по которому электроды будут перемещаться к станции, где их обернут в конверты. Местом появления электродов должна быть начальная точка конвейера. Мы воспользуемся API конвейера, чтобы получить координаты этой точки.
- Снимите флажок в свойстве Элементы возникают в том же месте, где партия.
- В свойстве Новое местоположение выберите опцию Точка.
-
В свойстве Координата X введите следующий код: wrappingConveyor.getStartPoint().x.
В этом коде мы обращаемся к конвейеру по имени. Затем мы вызываем функцию конвейера getStartPoint(), которая возвращает объект Point с координатами начальной точки конвейера, и указываем x-координату. -
Используйте подход, который мы только что описали выше, чтобы указать y-координату начальной точки конвейера в свойстве Координата Y. Ваш код должен выглядеть следующим образом: wrappingConveyor.getStartPoint().y.
Обертывание будет происходить на конвейере wrappingConveyor, поэтому необходимо добавить еще один блок, с помощью которого мы сможем задать движение электродов по конвейеру.
- Добавьте блок Convey в диаграмму процесса после блока unbatchElectrodes.
- Назовите новый блок wrappingConvey.
-
В свойствах блока укажите следующее:
a. Начальный конвейер: wrappingConveyor.
b. Конечный конвейер: wrappingConveyor.
с. Выберите опцию Покинуть конвейер при выходе.
Цвет электродов в конвертах изменится. Чтобы это продемонстрировать, мы используем элемент wrappingStation.
- Откройте свойства станции wrappingStation и распахните секцию Действия.
-
В поле При окончании процесса введите следующий код: agent.color = white;
- Запустите модель и посмотрите, как электроды оборачиваются в конверты.
Создадим новый тип материального объекта, который будет выполнять роль блока электродов.
Создайте новый тип материального объекта
- Перетащите элемент Тип материального объекта с палитры Библиотеки производственных систем на графическую диаграмму агента Main.
- В диалоговом окне Создание агента укажите Имя типа агента: BatteryBlock и щелкните по кнопке Готово.
- В графическом редакторе агента BatteryBlock выберите элемент Масштаб и задайте значение параметра Длина линейки соответствует: 1 метру.
- Перетащите 3D объект Группа пластин аккумулятора с палитры 3D объекты на графическую диаграмму агента BatteryBlock и разместите его в точке начала координат.
- В диалоговом окне Автомасштабирование 3D объекта щелкните по кнопке Да.
- Дважды скопируйте 3D объект (Ctrl + перетаскивание) и расположите копии в соответствии с изображением ниже:
Чтобы описать процесс сборки в диаграмме процесса, мы используем блок Assembler.
Добавьте процесс сборки блока электродов в диаграмму процесса
- Перетащите блок Assembler с палитры Библиотеки моделирования процессов на графический редактор агента Main и добавьте его в диаграмму процессов перед блоком sink.
- Убедитесь в том, что предыдущий блок соединился с самым верхним входным портом блока assembler.
-
В свойствах блока assembler задайте следующие параметры:
a. Количество 1: 15. Здесь мы задаем количество входящих агентов одного типа, необходимых для формирования одного нового агента.
b. Количество 2: 0.
c. Новый агент: BatteryBlock.
d. Время задержки: 5 минут. Здесь задается время, необходимое для сборки одного блока электродов.
e. Вместимость буфера на выходе: 1.
Здесь мы создаем буфер, в котором собранный новый агент (блок электродов) будет ожидать, когда его примет следующий блок в диаграмме процесса, поскольку этому блоку нужно будет знать координаты нового собранного агента.
f. Место нового агента: Узел сети/ГИС.
g. Узел: assembledBlocksBuffer.
h. Место агентов (delay): assembleArea. Здесь мы задаем место, где будет происходить непосредственно процесс сборки блока.
Если запустить модель сейчас, AnyLogic предупредит вас о том, что агенты проходят через блок assembler без задержки, поскольку вы не задали необходимые ресурсы.
Добавьте ресурсы
- Перетащите элемент Тип ресурса с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main.
- В диалоговом окне Создание агента укажите Имя типа агента: Operator и щелкните по кнопке Далее.
- В списке 3D объектов распахните секцию Люди и выберите объект Рабочий. Щелкните по кнопке Готово.
- Перетащите элемент Точечный узел с палитры Разметка пространства на графическую диаграмму агента Main.
- Разместите его рядом с узлом assembleUnitLocation как указано на изображении ниже:
- Назовите узел operatorLocation. Во время выполнения модели наш рабочий будет находиться здесь.
- В свойствах узла выберите опцию Видимость: нет.
- Перетащите блок ResourcePool с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main.
- Назовите новый блок operator.
- Перейдите в свойства блока и в параметре Новый ресурс выберите тип агента Operator.
- В параметре Базовое местоположение (узлы) выберите узел operatorLocation.
-
Перейдите в свойства блока assembler и выберите оператора в параметре Набор ресурсов, щелкнув по кнопке :
- Запустите модель!
-
Как мы можем улучшить эту статью?
-