На этом этапе производства группы электродов помещаются в пластиковый корпус аккумулятора, корпус закрывается крышкой, а затем внутрь заливается кислота. Точное количество групп в одном корпусе зависит от планируемой мощности аккумулятора. В ходе этой фазы учебного пособия мы научимся моделировать процесс сборки аккумуляторов с помощью промышленного крана.
Сначала мы создадим новый тип материального объекта, который будет выполнять роль аккумулятора.
Добавьте новый тип материального объекта
-
Перетащите элемент
Тип материального объекта с палитры
Библиотеки производственных систем на графическую диаграмму агента
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 будет вызываться каждый раз, когда корпус аккумулятора поступает на конвейер, где кран должен поместить в него группу электродов. В оставшееся время движение групп электродов будет заблокировано. -
Запустите модель снова и понаблюдайте за процессом производства!
-
Как мы можем улучшить эту статью?
-