На этом этапе производства группы электродов помещаются в пластиковый корпус аккумулятора, корпус закрывается крышкой, а затем внутрь заливается кислота. Точное количество групп в одном корпусе зависит от планируемой мощности аккумулятора. В ходе этой фазы учебного пособия мы научимся моделировать процесс сборки аккумуляторов с помощью промышленного крана.
Сначала мы создадим новый тип материального объекта, который будет выполнять роль аккумулятора.
Добавьте новый тип материального объекта
- Перетащите элемент Тип материального объекта с палитры Библиотеки производственных систем на графическую диаграмму агента Main.
- В диалоговом окне Создание агента укажите Имя типа агента: Battery и щелкните по кнопке Далее.
- Распахните секцию Склады и контейнерные терминалы в списке 3D объектов и выберите Производственная тара 1. Щелкните по кнопке Готово.
- В графическом редакторе агента Battery выберите элемент Масштаб и задайте значение параметра Длина линейки соответствует: 1 метр.
-
Перейдите в секцию Размеры и движение свойств агента Battery укажите следующее:
a. Длина: 0.3 метра
b. Ширина: 0.2 метра
c. Высота: 0.15 метра - Теперь нужно изменить размер объекта 3D, чтобы он соответствовал заданным размерам нашего типа агента. Выберите фигуру 3D в графическом редакторе и в свойствах этой фигуры задайте Доп. масштабирование: 50%.
- В секции Цвета свойств 3D фигуры укажите Мой цвет: black.
Далее мы нарисуем необходимую разметку пространства: конвейер, где будет происходить сборка аккумуляторов и кран, который перемещает группы электродов из области ожидания на этот конвейер.
- Дважды щелкните элемент Конвейер в секции Разметка пространства на палитре Библиотека производственных систем.
- Нарисуйте конвейер в соответствии с изображением ниже.
- Назовите его batteryConveyor.
-
В свойствах конвейера укажите следующее:
a. Тип материального объекта: Battery
b. Максимальная скорость: 0.5 м/с
c. Начальная скорость: 0.5 м/с
d. Z: 20
e. Ширина: 0.5 метра - Перетащите элемент Точка конвейера из секции Разметка пространства палитры Библиотека производственных систем на графический редактор агента Main и разместите его на batteryConveyor.
-
Назовите новый элемент blockInputPosition.
С помощью этого элемента мы укажем точное место на конвейере, где группы электродов будут помещаться в корпус аккумулятора. - Перетащите элемент Прямоугольный узел с палитры Разметка пространства на графическую диаграмму агента Main и разместите его у начальной точки конвейера batteryConveyor.
- Назовите узел caseBuffer.
-
В свойствах узла укажите:
a. Видимость: нет
b. Расположение внутри: Упорядоченное - Перетащите элемент Стреловой кран из секции Разметка пространства палитры Библиотека производственных систем на графический редактор агента Main и разместите его как указано на изображении ниже.
- Назовите кран batteryBlockCrane.
-
В свойствах крана укажите следующее:
a. Тип материального объекта: BatteryBlock
b. В секции Местоположение и размер задайте значение следующих параметров: Длина плеча: 3 метра
Высота крана: 4 метра - Убедитесь в том, что рабочая зона крана полностью закрывает узел assembledBlocksBuffer и точку конвейера blockInputPosition. Перетаскивайте метку-манипулятор, расположенный на окончании плеча крана, чтобы увеличить/уменьшить размеры рабочей области.
- Выберите опцию Недоступная зона и отрегулируйте ее угол с помощью меток-манипуляторов так, чтобы эта зона выглядела, как на изображении ниже: Задавая недоступную зону, мы ограничиваем движение плеча крана в этой зоне.
Теперь давайте опишем логику этого производственного процесса.
Добавьте процесс сборки аккумулятора в диаграмму процесса
- Перетащите элемент Source с палитры Библиотеки моделирования процессов на графический редактор агента Main и разместите его над блоком assembler. Убедитесь в том, что между этими двумя блоками не установилось соединение.
-
Назовите блок source: batterySource.
С его помощью мы будем создавать агентов типа Battery. -
В свойствах блока batterySource укажите следующее:
a. Прибывают согласно: Интенсивности
b. Интенсивность прибытия: 10 в час
c. Местоположение прибытия: Узел сети / ГИС
d. Узел: caseBuffer
e. Новый агент: Battery - Уберите галочку в опции Выталкивать агентов.
-
Перетащите блок Queue с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main и разместите его после блока batterySource. Убедитесь в том, что связь между этими блоками установилась.
С помощью этого блока мы смоделируем нахождение корпусов в зоне ожидания перед конвейером. -
В свойствах блока queue укажите:
a. Вместимость: 25
b. Место агентов: caseBuffer - Чтобы промоделировать перемещение корпусов аккумуляторов из области ожидания на конвейер для сборки, перетащите блок Conveyor Enter с палитры Библиотеки производственных систем на графический редактор агента Main и разместите его после блока queue.
-
В свойствах блока conveyorEnter укажите:
a. Точка входа задается как: Точка конвейера
b. Точка конвейера: blockInputPosition - Чтобы промоделировать перемещение групп электродов из области ожидания в корпус аккумулятора, перетащите блок Move By Crane с палитры Библиотеки производственных систем на графический редактор агента Main и разместите его после блока assembler.
- Назовите новый блок toCase.
-
В свойствах блока toCase укажите следующее:
a. Место назначения: Агент
b. Кран: batteryBlockCrane
c. Время загрузки: 5 секунд
d. Время освобождения: 5 секунд -
В поле ввода параметра Агент добавьте следующую строку кода: blockInputPosition.getAgent().
Эта функция возвращает агента, который в данный момент находится в точке конвейера blockInputPosition.
Мы описали процесс создания и перемещения корпусов аккумуляторов в заданное место. Теперь нам нужно объединить эту диаграмму процесса с той, которую мы создавали на протяжении предыдущих фаз.
- Удалите соединитель между блоком toCase и блоком sink.
- Перетащите блок Combine с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main и разместите его после блока conveyorEnter. Убедитесь в том, что соединение между этими блоками установилось через верхний входной порт блока combine.
- Дважды щелкните выходной порт блока toCase и перетащите созданный соединитель к нижнему входному порту блока combine. Отпустите кнопку мыши, когда точка соединения станет голубого цвета, как показано на изображении ниже:
-
В свойствах блока combine укажите Объединенный агент: agent1.
- Разместите блок sink после блока combine.
- Запустите модель!
По прошествии некоторого времени выполнение модели прекратится из-за возникшей ошибки, когда кран попытается переместить группу электродов в отсутствующий корпус аккумулятора. Мы можем решить эту проблему с помощью Библиотеки моделирования процессов.
Синхронизируйте процесс сборки групп и процесс подготовки корпуса аккумулятора
-
Перетащите блок Hold с палитры Библиотеки моделирования процессов и разместите его в диаграмме процессов между блоком assembler и блоком toCase.
С помощью этого блока мы сможем контролировать поток групп электродов: мы будем останавливать поток, пока не появится новый корпус аккумулятора, куда можно будет поместить группы. - В свойствах блока hold укажите Режим: Блокировать после заданного количества агентов и выберите опцию Изначально заблокирован.
Теперь мы должны правильно выбрать момент вызова функции unblock(), чтобы синхронизировать два процесса.
-
В свойствах блока conveyorEnter распахните секцию Действия и введите следующую строку кода в поле При входе: hold.unblock()
Теперь функция unblock() блока hold будет вызываться каждый раз, когда корпус аккумулятора поступает на конвейер, где кран должен поместить в него группу электродов. В оставшееся время движение групп электродов будет заблокировано. - Запустите модель снова и понаблюдайте за процессом производства!
-
Как мы можем улучшить эту статью?
-