В течение всех предыдущих фаз учебного пособия мы моделировали процесс производства аккумуляторов с одним типом электродов. В реальности аккумулятор состоит из электродов двух типов: анодов (с отрицательным зарядом) и катодов (с положительным зарядом). Процессы производства и обработки этих двух типов достаточно схожи, и поэтому их оба можно описать с помощью уже созданной диаграммы процесса. Чтобы не дублировать последовательность блоков, мы создадим две копии своего нестандартного блока, в который войдет эта последовательность, и с помощью параметров опишем в одном блоке процесс создания и обработки анодов, а в другом - катодов.
Но для начала мы нарисуем нужные нам элементы разметки пространства для зоны создания и обработки второго типа электродов.
Подготовьте разметку пространства
- Нарисуйте конвейер в соответствии с изображением ниже и назовите его cathodeConveyor.
- В его свойствах укажите следующее:
a. Тип материального объекта: Electrode
b. Z: 20
c. Ширина: 0.5 метра - Разместите поверх нового конвейера Станцию обработки.
- Назовите ее cathodeCoatingStation.
- В свойствах станции укажите следующее:
a. Видимость: нет
b. Время обработки: 1 секунда
c. Длина: 0.5 метра - В свойствах станции распахните секцию Действия и введите следующий код в поле При окончании процесса: agent.color = silver;
С помощью этого кода мы зададим цвет катодов на выходе из пастонамазочной станции.
- Используйте Прямоугольный узел, чтобы нарисовать область возле конечной точки конвейера cathodeConveyor. В этой области катоды, прошедшие обработку на конвейере, будут ожидать доставки в сушильную камеру.
- Назовите новый узел cathodePlatesBuffer.
- В свойствах узла укажите следующее:
a. Видимость: нет
b. Расположение внутри: Упорядоченное - Теперь, используя тот же элемент, нарисуйте область сушильных камер для катодов в соответствии с изображением ниже.
- Назовите ее cathodeCuringOven.
- В свойствах узла cathodeCuringOven укажите Видимость: нет.
- Щелкните по кнопке Аттракторы... и в диалоговом окне укажите режим создания аттракторов в узле: сетка 5 x 1.
- Нарисуйте еще один Прямоугольный узел возле установки пайки блоков аккумулятора.
- Назовите его preassembleCathodesBuffer.
- Задайте параметр Видимость: нет и Расположение внутри: Упорядоченное.
В этой области катоды, которые прошли дегидратацию, будут ожидать сборки в группы.
Добавьте 3D анимацию
- Перейдите в палитру 3D объекты и перетащите 3D объект Сушильная камера с палитры на графическую диаграмму агента Main.
- В диалоговом окне Автомасштабирование 3D объекта щелкните по кнопке Да.
- Разместите его поверх аттрактора в узле cathodeCuringOven.
- Убедитесь в том, что объект не выступает за стены и полностью закрывает собой аттрактор.
- Поверните фигуру с помощью метки-манипулятора так, чтобы вход в сушильную камеру был расположен напротив конвейера cathodeConveyor.
-
Создайте еще четыре копии 3D объекта, перетаскивая его с зажатой клавишей Ctrl. Разместите 3D объекты в соответствии с изображением ниже. Не забывайте о том, что размещение аттракторов также можно менять, перетаскивая их внутри узла.
Мы закончили создавать разметку пространства и 3D анимацию. Теперь можно заняться логикой процессов.
Создайте нестандартный блок
- Выберите первые семь блоков диаграммы процесса (начиная с блока source по блок unbatchElectrodes включительно) и щелкните правой кнопкой мыши по выделенной области.
- Из контекстного меню выберите опцию Создать блок диаграммы процесса.
- В диалоговом окне Создание агента укажите Имя нового блока: PrepareElectrode.
- На месте выделенных блоков в диаграмме процесса появится новый блок prepareElectrode со стандартной иконкой.
- В модельном дереве в панели Проекты появится агент PrepareElectrode.
Выберите блок prepareElectrode в графическом редакторе. В свойствах блока вы увидите параметры тех блоков, которые мы объединили для создания prepareElectrodes. Метки параметров генерируются автоматически и не очень удобны для чтения. Далее мы отредактируем эти метки и настроим сами параметры.
Измените метки параметров нестандартного блока
- Дважды щелкните по агенту PrepareElectrode в панели Проекты, чтобы открыть его в графическом редакторе. Вы увидите все параметры блока на графической диаграмме агента.
- Чтобы изменить метку параметра, выберите параметр и перейдите в секцию Редактор значения его свойств. Введите в поле Метка новое название параметра.
- Таким же образом измените метки параметров в соответствии с таблицей, приведенной ниже.
В таблице приведены не все параметры. Не волнуйтесь и пропускайте те, которые не указаны в таблице: мы займемся их редактированием позже.
Название параметра Новая метка batch_batchSize
Размер партии batch_EntityLocation
Местоположение пластин перед созданием партии batch_LocationNode Местоположение партии convey_sourceConveyor
Конвейер подающий электроды convey_targetConveyor
Конвейер принимающий электроды delay_delayTime
Время обработки пластин source_entitiesPerArrival Кол-во электродов за 1 прибытие source_interarrivalTime Время между прибытиями электродов toElectrodeBuffer_destinationNode Буфер для электродов toElectrodeBuffer_loadingTime Время погрузки в сушильную камеру toElectrodeBuffer_unloadingTime Время разгрузки в буфере toOven_destinationNode Сушильная камера toOven_fleet Автопарк погрузчиков toOven_loadingTime Время погрузки партии на конвейер toOven_unloadingTime Время разгрузки партии в сушильной камере unbatchElectrodes_locationX Местоположение электродов после извлечения из партии, X unbatchElectrodes_locationY Местоположение электродов после извлечения из партии, Y
Теперь перейдем к настройке оставшихся параметров.
Настройте параметры нестандартного блока
- Поскольку в этой модели и аноды, и катоды заданы агентом Electrode, перейдите в свойства блока source, выбрав его на графической диаграмме агента PrepareElectrode, переключите поле Новый агент в режим редактора значения и выберите агента Electrode из выпадающего списка.
- Удалите параметр source_newEntity с графической диаграммы агента PrepareElectrode.
- Партии анодов и катодов также задаются с помощью одного агента PlatesBatch. В свойствах блока batch переключите поле Новая партия в режим редактора значения и выберите из выпадающего списка агента PlatesBatch.
- Удалите параметр batch_newBatch с графической диаграммы агента PrepareElectrode.
- Партии анодов и катодов будут перевозить погрузчики одного автопарка, поэтому перейдите в свойства блока toElectrodeBuffer и укажите Автопарк: toOven_fleet(agent)
- Удалите параметр toElectrodeBuffer_fleet.
Теперь давайте заменим стандартный значок блока на следующее изображение: .
Создайте свой значок блока
- Щелкните по изображению правой кнопкой мыши и сохраните его в папку модели.
- Удалите голубой прямоугольник стандартного значка с графического редактора агента PrepareElectrode.
- Перетащите элемент Изображение с палитры Презентация на графическую диаграмму агента PrepareElectrode и разместите его приблизительно в той области, где находился голубой прямоугольник.
- В открывшемся диалоговом окне перейдите в папку модели, где вы сохранили изображение для значка и выберите его.
- В свойствах изображения выберите опцию Значок.
- Отрегулируйте местоположение изображения так, чтобы порт соединителя находился точно на краю изображения:
-
Перейдите в свойства изображения и распахните секцию Специфические. В поле Действие по щелчку введите следующий код: return true;
Этот код позволит нам попасть внутрь нестандартного блока, выполнив двойной щелчок мышью по этому блоку во время выполнения модели. - Теперь следует добавить счетчик агентов на выходе из блока. Перетащите элемент Текст с палитры Presentation и разместите его рядом с нижним правым углом нового значка.
-
В свойствах текста задайте следующее:
a. Выберите опцию Значок.
b. В поле Текст введите любое значение, например, 0. Переключите поле в режим редактора динамического значения и введите следующее выражение: source.out.count()Это выражение возвращает количество агентов, прошедших через выходной порт блока source, который является частью нашего нестандартного блока.
c. В параметре Цвет выберите значение blue.
Добавьте процесс создания катодов в диаграмму процесса
- Перейдите на графическую диаграмму агента Main и переименуйте блок prepareElectrode в prepareAnode.
- Перетащите элемент PrepareElectrode из дерева модели на графическую диаграмму агента Main и соедините его со вторым входным портом блока assembler, как указано на изображении ниже.
- Назовите новый блок prepareCathode.
-
В свойствах нового блока укажите следующее:
a. Размер партии: 100
b. Местоположение пластин перед созданием партии: cathodePlatesBuffer
c. Местоположение партии: cathodePlatesBuffer
d. Конвейер подающий электроды: cathodeConveyor
e. Конвейер принимающий электроды: cathodeConveyor
f. Время обработки пластин: 2 минуты
g. Кол-во электродов за 1 прибытие: 200
h. Время между прибытиями электродов: 1.5 часа
i. Буфер для электродов: preassembleCathodesBuffer
j. Время погрузки в сушильную камеру: 0.5 минуты
k. Время разгрузки в буфере: 0.5 минуты
l. Сушильная камера: cathodeCuringOven
m. Автопарк погрузчиков: forklifts
n. Время погрузки партии на конвейер: 0.5 минуты
o. Время разгрузки партии в сушильной камере: 0.5 минуты
p. Местоположение электродов после извлечения из партии, X: wrappingConveyor.getEndPoint().x
q. Местоположение электродов после извлечения из партии, Y: wrappingConveyor.getEndPoint().yИзвлеченные из партии катоды должны появиться на том же конвейере wrappingConveyor, что и аноды, но точное местоположение для них - конечная точка конвейера. Чтобы получить x- и y-координату этой точки, мы используем функцию конвейера getEndPoint(). - Теперь перейдите в свойства блока assembler и укажите Количество 2: 15.
- Запустите модель!
Вы увидите, как электроды обоих типов создаются, проходят пастонамазочную станцию и процесс дегидратации в сушильных камерах, а затем перемещаются на второй конвейер, где на станции сборки формируются в блоки, после чего помещаются в пластиковые корпусы аккумуляторов. Обратите внимание, что одиночные электроды меняют цвет, когда проходят пастонамазочную станцию из white (по умолчанию) в peru для анодов и silver для катодов. При этом цвет партий остается одинаковым для обоих типов электродов. Давайте это исправим!
Партии анодов и катодов моделируются с помощью одного агента — PlatesBatch. Нам нужно добавить в агента параметр, с помощью которого блоки диаграммы процессов смогут различать, какие именно электроды входят в состав партии. Поскольку этот параметр будет содержать ограниченное количество свойств агента (анод и катод), в качестве типа параметра мы используем список вариантов.
Создайте список вариантов
- В панели Проекты щелкните правой кнопкой мыши по имени модели и выберите из контекстного меню опцию Создать > Список вариантов.
- В диалоговом окне Новый список вариантов укажите Имя: ElectrodeType.
- В таблице Задайте элементы укажите имена свойств агента: ANODE и CATHODE.
- Список вариантов появится в дереве модели в группе Списки вариантов.
Добавьте параметр в свойства агента PlatesBatch
- Перетащите элемент Параметр с палитры Агент на графическую диаграмму агента PlatesBatch.
- Назовите его electrodeType.
- В свойствах параметра выберите его Тип: ElectrodeType.
На следующем этапе мы настроим динамическую смену цвета в фигуре анимации для партии электродов в зависимости от типа электрода.
Задайте динамическую смену цвета
- Выберите фигуру rectangle на графической диаграмме агента PlatesBatch.
-
Переключите поле Цвет заливки в режим редактора динамического значения и введите следующий код: electrodeType == ANODE ? peru : silver
С его помощью мы проверяем значение параметра electrodeType и задаем цвет фигуры анимации rectangle в зависимости от полученного результата. Если значение равно ANODE, задается цвет peru. В противном случае задается цвет silver.
Теперь давайте научим наш нестандартный блок узнавать разные типы электродов.
Укажите тип электрода в агенте prepareElectrode
- Добавьте параметр на графическую диаграмму агента prepareElectrode.
- Назовите его electrodeType.
- В свойствах параметра выберите его Тип: ElectrodeType и задайте Метку: Тип электрода.
- В свойствах блока batch переключите поле Новая партия в режим редактора динамического значения и укажите следующее: new PlatesBatch(electrodeType)
- Перейдите на графическую диаграмму агента Main. В свойствах блока prepareAnode укажите Тип электрода: ANODE.
- В свойствах блока prepareCathode укажите Тип электрода: CATHODE.
- Запустите модель! Теперь нестандартный блок будет передавать тип электрода партиям и цвет партий будет меняться соответствующим образом.
-
Как мы можем улучшить эту статью?
-