Скачиваний:
20
Добавлен:
07.11.2020
Размер:
600.34 Кб
Скачать
    1. Перетащите блок Delay с палитры Библиотеки моделирования процессов на графическую диаграмму Main и разместите ее в диаграмме процесса после блока toOven.

    2. В свойствах блока delay задайте Время задержки: 2 минуты.

    3. Укажите Место агентов: curingOven.

    4. Запустите модель и посмотрите, как погрузчики перевозят партии электродов.

Задайте перемещение электродов в область ожидания

  1. Нарисуйте прямоугольный узел на плане в соответствии с изображением ниже.

  2. Назовите его preassembleElectrodeBuffer.

С помощью этого узла мы задаем место, куда погрузчики будут доставлять партии электродов, прошедших дегидратацию.

Рисунок 14 – Узел

  1. В свойствах узла выберите опцию Видимость: нет.

  2. Задайте Расположение внутри: Упорядоченное.

  3. Добавьте в диаграмму процесса еще один блок MoveByTransporter и расположите его после блока delay.

  4. Назовите новый блок toElectrodeBuffer.

  5. В свойствах блока toElectrodeBuffer укажите следующее:

  1. Узел: preassembleElectrodeBuffer

  2. Автопарк: forklifts

  3. Время погрузки: 0.5 минуты

  4. Время разгрузки: 0.5 минуты

  1. Запустите модель и посмотрите, как погрузчики выполняют перемещение груза и двигаются среди препятствий в режиме произвольной навигации.

Фаза 3. Обертывание электродов в конверты и сборка групп Нарисуйте конвейер, станции и область сборки

  1. Дважды щелкните по элементу Конвейер палитры Библиотека производственных систем.

  2. Нарисуйте конвейер в соответствии с изображением ниже.

  3. Назовите его wrappingConveyor.

Чтобы создать скругленный поворот, поставьте точку там, где поворот должен начаться, затем поставьте точку в месте, где поворот должен снова перейти в прямую линию и, не отпуская левую клавишу мыши, двигайте мышь, пока не добьетесь нужной формы от сегмента поворота. Когда это произойдет, отпустите кнопку мыши и продолжайте рисовать прямую линию.

Рисунок 15 – Конвейер

  1. В свойствах конвейера укажите следующее:

  1. Тип материального объекта: Electrode

  2. Z: 20

  3. Ширина: 0.5 м

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

Рисунок 16 - Итоговый конвейер

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

  2. Назовите станцию wrappingStation.

  3. В свойствах станции выберите опцию Видимость: нет.

  4. Настройте свойства wrappingStation следующим образом:

  1. Длина: 0.5 м.

  2. Время обработки: 1 секунда

  3. Оставьте неизменным значение параметра Вместимость: 1.

  4. В параметре Загрузка выберите опцию Идет одновременно с выгрузкой.

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

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

  2. assembleArea - область, где происходит непосредственная сборка в группы.

Ширина: 15 и Высота: 20.

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

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

Рисунок 17 - Прямоугольный узел

  1. В свойствах каждого из трех узлов укажите следующее:

  1. Видимость: нет

  2. Расположение внутри: Упорядоченное

  3. Z: 20

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

    1. Перетащите 3D объект Конвертировщик с палитры 3D объекты на графическую диаграмму агента Main.

    2. В диалоговом окне Автомасштабирование 3D объекта щелкните кнопку Да.

    3. Расположите 3D объект поверх станции wrappingStation так, как указано на изображении ниже:

Рисунок 18 - 3D объект

  1. Таким же образом используйте 3D объект Машина пайки блоков аккумулятора из палитры 3D объекты, чтобы создать анимацию для области сборки блоков.

  2. В свойствах 3D объекта задайте Доп. масштабирование: 160% для всех составных частей объекта. Чтобы выбрать составную часть, щелкайте мышью по объекту. При первом щелчке выбирается объект целиком, при втором - первая составная часть, при третьем - вторая составная часть.

  3. С помощью метки-манипулятора разверните 3D объект на 90 градусов вправо. Обратите внимание на изображение ниже: так машина для пайки блоков должна выглядеть на графическом редакторе в вашей модели:

Рисунок 19 - Машина пайки блоков аккумуляторов Добавьте процесс обертывания электродов в диаграмму процесса Сначала мы разберем партии электродов на отдельные электроды.

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

  2. Назовите новый блок unbatchElectrodes.

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

  4. Добавьте блок Convey в диаграмму процесса после блока unbatchElectrodes.

  5. Назовите новый блок wrappingConvey.

  6. В свойствах блока укажите следующее:

  1. Начальный конвейер: wrappingConveyor.

  2. Конечный конвейер: wrappingConveyor.

с. Выберите опцию Покинуть конвейер при выходе.

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

    1. Откройте свойства станции wrappingStation и распахните секцию Действия.

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

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

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

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

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

  1. Перетащите элемент Тип материального объекта с палитры Библиотеки производственных систем на графическую диаграмму агента Main.

  2. В диалоговом окне Создание агента укажите Имя типа агента:

BatteryBlock и щелкните кнопку Готово.

  1. В графическом редакторе агента BatteryBlock выберите элемент Масштаб и задайте значение параметра Длина линейки соответствует: 1 м.

  2. Перетащите 3D объект Группа пласти аккумулятора с палитры 3D объекты на графическую диаграмму агента BatteryBlock и разместите его в точке начала координат.

  3. В диалоговом окне Автомасштабирование 3D oбъекта щелкните кнопку Да.

  4. Дважды скопируйте 3D объект (Ctrl+перетаскивание) и расположите копии в соответствии с изображением ниже:

Рисунок 20 - Новый тип материального объекта

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

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

  2. Убедитесь в том, что предыдущий блок соединился с самым верхним входным портом блока assembler.

  3. В свойствах блока assembler задайте следующие параметры:

  1. Количество 1: 15. Здесь мы задаем количество входящих агентов одного типа, необходимых для формирования одного нового агента.

  2. Количество 2: 0.

  3. Новый агент: BatteryBlock.

  4. Время задержки: 5 минут. Здесь задается время, необходимое для сборки

одного блока электродов.

  1. Вместимость буфера на выходе: 1. Здесь мы создаем буфер, в котором собранный новый агент (блок электродов) будет ожидать, когда его примет следущий блок в диаграмме процесса, поскольку этому блоку нужно будет знать координаты нового собранного агента.

  2. Место нового агента: Узел сети/ГИС.

  3. Узел: assembledBlocksBuffer.

  4. Место агентов (delay): assembleArea. Здесь мы задаем место, где будет происходить непосредственно процесс сборки блока.

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

    1. Перетащите элемент Тип ресурса с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main.

    2. В диалоговом окне Создание агента укажите Имя типа агента:

Operator и щелкните кнопку Далее.

    1. В списке 3D объектов распахните секцию Люди и выберите объект Рабочий. Щелкните кнопку Готово.

    2. Перетащите элемент Точечный узел с палитры Разметка пространства на графическую диаграмму агента Main.

    3. Разместите его рядом с узлом assembleUnitLocation как указано на изображении ниже:

Рисунок 21 - Добавление ресурса

    1. Назовите узел operatorLocation. Во время выполнения модели наш рабочий будет находиться здесь.

    2. В свойствах узла выберите опцию Видимость: нет.

    3. Перетащите блок ResourcePool с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main.

    4. Назовите новый блок operator.

    5. Перейдите в свойства блока и в параметре Новый ресурс выберите тип агента Operator.

    6. В параметре Базовое местоположение (узлы) выберите узел

operatorLocation.

    1. Перейдите в свойства блока assembler и выберите оператора в параметре Набор ресурсов, щелкнув по кнопке .

Фаза 4. Сборка аккумуляторов

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

  1. Перетащите элемент Тип материального объекта с палитры Библиотеки производственных систем на графическую диаграмму агента Main.

  2. В диалоговом окне Создание агента укажите Имя типа агента:

Battery и щелкните кнопку Далее.

  1. Распахните секцию Склады и контейнерные терминалы в списке 3D объектов и выберите Промышленный контейнер 1. Щелкните кнопку Готово.

  2. В графическом редакторе агента Battery выберите элемент Масштаб и задайте значение параметра Длина линейки соответствует: 1 м.

  3. Перейдите в секцию Размеры и движение свойств агента Battery укажите следующее:

  1. Длина: 0.3 м

  2. Ширина: 0.2 м

  3. Высота: 0.15 м

  1. Теперь нужно изменить размер объекта 3D, чтобы он соответствовал заданным размерам нашего типа агента. Выберите фигуру 3D в графическом редакторе и в свойствах этой фигуры задайте Доп. масштабирование: 50%.

  2. В секции Цвета свойств 3D фигуры укажите Мой цвет: black. Создайте разметку пространства

  1. Дважды щелкните элемент Конвейер в секции Разметка пространства на палитре Библиотека производственных систем.

  2. Нарисуйте конвейер в соответствии с изображением ниже.

  3. Назовите его batteryConveyor.

  4. В свойствах конвейера укажите следущее:

  1. Тип материального объекта: Battery

  2. Максимальная скорость: 0.5 м/с

  3. Начальная скорость: 0.5 м/с

  4. Z: 20

  5. Ширина: 0.5 м

  1. Перетащите элемент Точка конвейера из секции Разметка пространства палитры Библиотека производственных систем на графический редактор агента Main и разместите его на batteryConveyor.

  2. Назовите новый элемент blockInputPosition.

С помощью этого элемента мы укажем точное место на конвейере, где группы электродов будут помещаться в корпус аккумулятора.

  1. Перетащите элемент Прямоугольный узел с палитры Разметка пространства на графическую диаграмму агента Main и разместите его у начальной точки конвейера batteryConveyor.

  2. Назовите узел caseBuffer.

  3. В свойствах узла укажите:

  1. Видимость: нет

  2. Расположение внутри: Упорядоченное

  1. Перетащите элемент Стреловой кран из секции Разметка пространства палитры Библиотека производственных систем на графический редактор агента Main и разместите его как указано на изображении ниже.

  2. Назовите кран batteryBlockCrane.

  3. В свойствах крана укажите следующее:

  1. Тип материального объекта: BatteryBlock

  2. В секции Местоположение и размер задайте значение параметра Длина плеча: 3 м и Высота крана: 4 м

  1. Убедитесь в том, что рабочая зона крана полностью закрывает узел assembledBlocksBuffer и точку конвейера blockInputPosition. Перетаскивайте метку-манипулятор, расположенный на окончании плеча крана, чтобы увеличить/уменьшить размеры рабочей области.

  2. Выберите опцию Недоступная зона и отрегулируйте ее угол с помощью меток-манипуляторов так, чтобы эта зона выглядела, как на изображении ниже:

Рисунок 22 - Недоступная зона

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

  1. Перетащите элемент Source с палитры Библиотеки моделирования процессов на графический редактор агента Main и

разместите его над блоком assembler. Убедитесь в том, что между этими двумя блоками не установилось соединение.

  1. Назовите блок source: batterySource.

С его помощью мы будем создавать агентов типа Battery.

  1. В свойствах блока batterySource укажите следующее:

  1. Прибывают согласно: Интенсивности

  2. Интенсивность прибытия: 10 в час

  3. Местоположение прибытия: Узел сети / ГИС

  4. Узел: caseBuffer

  5. Новый агент: Battery

  1. Уберите галочку в опции Выталкивать агентов.

  2. Перетащите блок Queue с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main и разместите его после блока batterySource. Убедитесь в том, что связь между этими блоками установилась.

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

  1. В свойствах блока queue укажите:

  1. Вместимость: 25

  2. Место агентов: caseBuffer.

  1. Чтобы промоделировать перемещение корпусов аккумуляторов из области ожидания на конвейер для сборки, перетащите блок Conveyor Enter с палитры Библиотеки производственных систем на графический редактор агента Main и разместите его после блока queue.

  2. В свойствах блока conveyorEnter укажите:

  1. Точка входа задается как: Точка конвейера

  2. Точка конвейера: blockInputPosition

  1. Чтобы промоделировать перемещение групп электродов из области ожидания в корпус аккумулятора, перетащите блок Move By Crane

с палитры Библиотеки производственных систем на графический редактор агента Main и разместите его после блока assembler.

  1. Назовите новый блок toCase.

  2. В свойствах блока toCase укажите следующее:

  1. Кран: batteryBlockCrane

  2. Место назначения: Агент

  3. Время захвата: 5 секунд

  4. Время освобождения: 5 секунд

  1. В поле ввода параметра Агент добавьте следующую строку кода: blockInputPosition.getAgent().

Эта функция возвращает агента, который в данный момент находится в точке конвейера blockInputPosition.

Рисунок 23 – Свойства

  1. Удалите соединитель между блоком toCase и блоком sink.

  2. Перетащите блок Combine с палитры Библиотеки моделирования процессов на графическую диаграмму агента Main и разместите его после блока conveyorEnter. Убедитесь в том, что соединение между этими блоками установилось через верхний входной порт блока combine.

  3. Дважды щелкните выходной порт блока toCase и перетащите созданный соединитель к нижнему входному порту блока combine. Отпустите кнопку мыши, когда точка соединения станет голубого цвета, как показано на изображении ниже:

Рисунок 24 – Соединения

  1. В свойствах блока combine укажите Объединенный агент: agent1.

  2. Разместите блок sink после блока combine.

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

Синхронизируйте процесс сборки групп и процесс подготовки корпуса аккумулятор

  1. Перетащите блок Hold с палитры Библиотеки моделирования процессов и разместите его в диаграмме процессов между блоком assembler и блоком toCase.

С помощью этого блока мы сможем контролировать поток групп электродов: мы будем останавливать поток, пока не появится новый корпус аккумулятора, куда можно будет поместить группы.

  1. В свойствах блока hold укажите Режим: Блокировать после заданного количества агентов и выберите опцию Изначально заблокирован.

Теперь мы должны правильно выбрать момент вызова функции unblock(), чтобы синхронизировать два процесса.

  1. В свойствах блока conveyorEnter распахните секцию Действия и введите следующую строку кода в поле При входе: hold.unblock()

Теперь функция unblock() блока hold будет вызываться каждый раз, когда корпус аккумулятора поступает на конвейер, где кран должен поместить в него группу электродов. В оставшееся время движение групп электродов будет заблокировано.

  1. Запустите модель снова и понаблюдайте за процессом производства!

Фаза 5. Формировка аккумуляторов и проверка качества Подготовьте разметку пространства

  1. Перетащите элемент Станция обработки из секции Разметка пространства палитры Библиотеки производственных систем на графическую диаграмму агента Main и разместите его на конвейере batteryConveyor.

  2. Назовите станцию addCapAndTerminalsStation.

  3. В свойствах станции укажите следующее:

  1. Видимость: нет

  2. Время обработки: 1 минута

  3. Длина: 1 м

  1. Добавьте на конвейер batteryConveyor еще одну станцию и назовите ее qaStation.

  2. В свойствах станции укажите:

  1. Видимость: нет

  2. Время обработки: uniform( 20, 30 ) секунд

  3. Длина: 1 м

  1. Измените местоположение станций на конвейере в соответствии с изображением ниже:

Рисунок 25 - Изменение местоположения станции

  1. Перетащите элемент Поворотный стол из секции Разметка пространства палитры Библиотеки производственных систем и разместите его на конвейере batteryConveyor.

  2. Дважды щелкните элемент Конвейер в палитре, чтобы переключиться в режим рисования, и нарисуйте еще одно ответвление конвейера от элемента turntable в соответствии с планом пространства.

  3. Назовите новый конвейер defectiveBatteryConveyor и укажите его Ширину: 0.5 м.

  4. Разместите еще одну станцию на конвейере batteryConveyor и назовите ее electrolyteFillingStation.

  5. В свойствах станции укажите следующее:

  1. Видимость: нет

  2. Время обработки: 2 минуты

  1. Количество: 3

  2. Длина: 2.5 м

Рисунок 26 – Станция

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

    1. Перетащите 3D объект Машина термосварки крышки с палитры 3D объекты на графическую диаграмму агента Main и разместите его поверх станции addCapAndTerminalsStation.

    2. В диалоговом окне Автомасштабирование 3D объекта щелкните кнопку Да.

    3. Таким же образом используйте 3D объект Машина проверки герметичности, чтобы создать 3D анимацию для станции qaStation и объект Машина заливки электролита для станции electrolyteFillingStation.

    4. Сверяйте местоположение 3D объектов с изображением ниже:

Рисунок 27 - Добавление 3D объекта

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

блоками. Все эти действия происходят на станции addCapAndTerminalsStation.

  1. Перейдите в панель Проекты и дважды щелкните по агенту Battery в модельном дереве.

  2. Перетащите 3D объект Аккумулятор с панели 3D объекты на графическую диаграмму агента Battery и разместите ее поверх ранее созданной фигуры анимации.

  3. В диалоговом окне Автомасштабирование 3D объекта щелкните кнопку Да.

  4. В свойствах 3D объекта Аккумулятор укажите Видимость: нет.

  5. Перейдите в свойства станции addCapAndTerminalStation, распахните секцию Действия и введите следующий код в поле При окончании процесса:

agent.industrial_container_1.setVisible(false); agent.object3d.setVisible(true);

Теперь каждый раз, когда аккумулятор будет выходить из этой станции, одна 3D фигура будет становиться невидимой, а вторая - наоборот.

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

Задайте логику процесса в диаграмме процесса

  1. Добавьте блок Convey в диаграмму процесса после блока combine.

  2. Назовите новый блок conveyBattery.

  3. В свойствах нового блока укажите Перемещать с / из: Текущей позиции и Конечный конвейер: batteryConveyor1.

Этот блок будет управлять основным потоком материальных объектов на конвейере.

  1. Перетащите еще один блок Convey на графическую диаграмму агента Main и соедините его с выходным портом внизу блока conveyBattery.

  2. Назовите блок conveyDefective и укажите в его свойствах следующее:

  1. Перемещать с / из: Current position

  2. Конечный конвейер: defectiveBatteryConveyor

Этот блок будет управлять перемещением аккумуляторов, которые не прошли проверку качества, на второстепенный конвейер.

  1. Добавьте блок Sink в диаграмму процесса после блока conveyDefective.

Фаза 6. Доставка в зарядное помещение Нарисуйте разметку пространства

  1. Дважды щелкните элемент Прямоугольный узел на палитре Разметка пространства, чтобы переключиться в режим рисования, и нарисуйте область, где аккумуляторы будут заряжаться, в соответствии с изображением ниже:

  2. Назовите узел store.

  3. Нарисуйте еще один Прямоугольный узел на графической диаграмме агента Main в соответствии с изображением ниже.

  4. Назовите узел agvHomeLocation. Сюда погрузчик будет возвращаться в промежутках между заданиями.

  5. Создайте в узле один аттрактор.

  6. Перетащите Точечный узел на графическую диаграмму агента Main и разместите его в соответствии с изображением ниже.

  7. Назовите узел agvUnloadingPoint. Здесь погрузчик будет выгружать аккумуляторы.

  8. Дважды щелкните элемент Путь в палитре, чтобы переключиться в режим рисования.

  9. Нарисуйте путь от узла agvUnloadingPoint к узлу store. По этому пути аккумуляторы будут перемещаться из точки разгрузки в область зарядки.

  10. Таким же образом нарисуйте еще два пути, связывающих узел agvUnloadingPoint и узел agvHomeLocation. Следите за тем, чтобы направление каждого пути соответствовало указанному на рисунке ниже. По этим путям погрузчик будет двигаться между узлами.

  1. Добавьте область, где погрузчик будет забирать аккумуляторы для перевозки, нарисовав еще один Прямоугольный узел в соответствии с изображением ниже.

  2. Назовите узел agvLoadingArea.

  3. Выберите все пути и узлы, зажав кнопку Ctrl и щелкнув по каждому элементу кнопкой мыши.

  4. В панели Свойства укажите Отображать в: Только в 2D.

  5. Добавьте кран, который будет перемещать аккумуляторы с конвейера в зону погрузки, в соответствии с изображением ниже.

  6. Назовите его batteryCrane.

Соседние файлы в предмете Имитационное моделирование экономических процессов