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