Конвейер


Конвейер является элементом разметки пространства, который графически отображает конвейер. Транспортировка материальных объектов на конвейере задается следующими блоками Библиотеки производственных систем: Convey, ConveyorEnter и ConveyorExit.

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

Конвейер начинает движение с заданной начальной скоростью и ускоряется до заданной максимальной скорости. Движение продолжается на максимальной скорости, пока конвейер не остановится.

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

Типы конвейеров

По умолчанию используется роликовый конвейер, но при необходимости можно задать любой из доступных типов конвейера:

Конвейер обладает информацией о всех объектах, которые (частично или полностью) находятся на нем. Вы можете получить список этих объектов с помощью соответствующих функций этого элемента.

Демо модель: Cross Belt Conveyor

Создание конвейера 

Чтобы нарисовать конвейер

  1. Сделайте двойной щелчок по элементу  Конвейер в секции Разметка пространства палитры Библиотека производственных и транспортных систем. Иконка элемента изменится на . Это означает, что активирован режим рисования, и теперь вы можете рисовать конвейер в графическом редакторе.
  2. Щелкните мышью в графическом редакторе, чтобы поставить первую точку конвейера. Продолжайте рисовать конвейер сегмент за сегментом.
  3. Чтобы нарисовать дуговой сегмент конвейера, зажмите левую кнопку мыши в следующей точке поворота конвейера (в начале следующего прямого сегмента) и перемещайте курсор с нажатой левой кнопкой мыши до тех пор, пока сегмент не приобретет необходимую форму. Отпустите кнопку мыши, когда этот сегмент готов и можно добавить следующий.
  4. Чтобы завершить рисование, добавьте последнюю точку конвейера двойным щелчком мыши.

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

Чтобы соединить два конвейера

  1. Нарисуйте первый конвейер, совершив двойной щелчок по элементу   Конвейер в палитре Разметка пространства, затем добавьте начальную точку дороги щелчком мыши, после чего двойным щелчком поместите конечную точку.
  2. Таким же образом начните рисовать второй конвейер. Добавьте его начальную точку в пустом месте графического редактора недалеко от первого конвейера.
  3. Поместите курсов мыши над первым конвейером. При наведении курсора на определенные места первого конвейера, можно увидеть точки зеленого цвета, которые указывают на возможность соединения конвейеров.
  4. Двойным щелчком поместите конечную точку конвейера. Конвейеры соединятся, образуя в точке соединения новый элемент разметки пространства. Тип нового элемента зависит от типа соединения конвейеров:

Свойства

Основные свойства

Имя – Имя конвейера. Имя используется для идентификации конвейера и доступа к нему из кода и свойств блоков диаграммы процесса.

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

Отображается на верхнем уровне – Если опция выбрана, то фигура будет видна на презентации типа агента, в который будет вложен данный агент.

Блокировать – Если опция выбрана, то фигура будет считаться заблокированной и не будет реагировать на щелчки мыши. Таким образом, вы не сможете выбрать заблокированную фигуру в графическом редакторе до тех пор, пока вы не снимете с нее блокировку. 

Видимость – Здесь вы можете указать, будет ли фигура видна на анимации во время выполнения модели или нет. Используя элемент управления, выберите да или нет

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

Типтип конвейера: Роликовый, Ленточный или С лотками

Максимальная скорость – Максимальная скорость конвейера. Максимальная скорость должна быть >=0. Если максимальная скорость и начальная скорость равны 0, конвейер не начнет движение. Конвейер может начать движение, если задать положительную начальную скорость, вызвав функцию setMaxSpeed(double speed, SpeedUnits units).

Начальная скорость – Начальная скорость конвейера. Начальная скорость должна быть >= 0. Если начальная скорость меньше максимальной скорости, автомобиль начнет ускоряться до максимальной скорости.

Ускорение – Ускорение конвейера.

Замедление – Замедление конвейера.

Размер ячейки – [Параметр виден, если в параметре Тип выбрана опция С лотками] Размер лотка на конвейере с лотками.

Зазор – Минимальный допустимый зазор между материальными объектами на конвейере (или лотками, если в параметре Тип указан конвейер С лотками).

Приоритеты

Магистральный конвейер – Если опция выбрана, этот конвейер магистральный, т.е. он обладает большим приоритетом над присоединенными к нему конвейерами.

Приоритет – [Параметр виден, если не выбран параметр Магистральный конвейер] Задает приоритет этого конвейера на этом соединении. Приоритет не распространяется на всю конвейерную сеть. при необходимости, приоритет следует задать отдельно для каждого соединения. 

Действия

Во всех действиях, к данному материальному объекту можно обратиться через локальную переменную agent.

При входе переднего торца
– Здесь вы можете задать код, который будет выполняться, когда передний торец материального объекта поступает на конвейер.

При входе заднего торца – Здесь вы можете задать код, который будет выполняться, когда задний торец материального объекта поступает на конвейер.

При выходе переднего торца – Здесь вы можете задать код, который будет выполняться, когда передний торец материального объекта покидает на конвейер.

При выходе заднего торца – Здесь вы можете задать код, который будет выполняться, когда задний торец материального объекта покидает на конвейер.

При запуске – Здесь вы можете задать код, который будет выполняться при запуске конвейера, который может произойти в момент вызова функции конвейера start() или при починке конвейера.

При остановке – Здесь вы можете задать код, который будет выполняться при остановке конвейера, который может произойти в момент вызова функции конвейера stop() или при поломке конвейера.

При поломке – Здесь вы можете задать код, который будет выполняться при поломке конвейера.

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

Внешний вид

Цвет линии – Цвет конвейера.

Рисовать стойки – Если опция выбрана, стойки конвейера будут нарисованы в 3D режиме. Стойки рисуются к конвейеру от уровня пола или от уровня Z.

... от уровня Z – [Параметр виден, если выбрана опция Рисовать стойки] Задает уровень Z, от которого будут нарисованы стойки, где 0 - уровень пола.

Местоположение и размер

X – х-координата начальной точки конвейера.

Y – y-координата начальной точки конвейера.

Z – [Доступно, только если установлен флажок Отображать в: В 2D и в 3D или Только в 3D] z-координата начальной точки конвейера. 

Ширина – Ширина конвейера. Новое значение приведет к изменению графического отображения элементов разметки пространства, расположенных на этом конвейере.

Точки

В секции свойств Точки расположена таблица относительных координат точек конвейера.  

Первая точка всегда имеет координаты (0,0,0), и они не редактируются

В остальных строках таблицы задаются координаты последующих точек. Координаты каждой точки представляют собой смещения этой точки от начальной по оси X, Y и Z соответственно

Специфические

Отображать в – Здесь вы можете выбрать, будет ли конвейер отображаться В 2D и в 3D, Только в 2D или Только в 3D.

Отображать имя – Если опция выбрана, то имя фигуры будет отображаться в графическом редакторе.

Функции

Управление, скорость

Функция

Описание

boolean isStopped()

Возвращает true, если конвейер остановлен, в противном случае возвращает false.

double stop()

Останавливает конвейер. 

double run()

Запускает конвейер.

double getCurrentSpeed(SpeedUnits units)

Возвращает текущую скорость конвейера (в заданных единицах измерения).

Параметр:
units
константа, задающая единицу измерения скорости

double getMaxSpeed(SpeedUnits units)

Возвращает максимальную скорость конвейера (в заданных единицах измерения).

Параметр:
units
- одна из констант, задающая единицу измерения скорости

double setMaxSpeed(double speed, SpeedUnits units)

Задает новую максимальную скорость конвейера (в заданных единицах измерения).

Параметры:
speed - новое максимальное значение скорости
unitsконстанта, задающая единицу измерения скорости

double getInitialSpeed(SpeedUnits units)

Возвращает изначальную скорость конвейера (в заданных единицах измерения).

Параметр:
units
константа, задающая единицу измерения скорости


Ускорение, замедление

Функция

Описание

double getAcceleration(AccelerationUnits units)

Возвращает ускорение конвейера (в заданных единицах измерения).

Параметр:
units
константа, задающая единицу измерения ускорения

double setAcceleration
(double acceleration, AccelerationUnits units)

Задает новое значение ускорения конвейера (в заданных единицах измерения).

Параметры:
acceleration - новое значение ускорения
unitsконстанта, задающая единицу измерения ускорения

double getDeceleration(AccelerationUnits units)

Возвращает замедление конвейера (в заданных единицах измерения)

Параметр:
units
константа, задающая единицу измерения ускорения

double setDeceleration
(double deceleration, AccelerationUnits units)

Задает новое значение замедления конвейера (в заданных единицах измерения).

Параметры:
acceleration - новое значение замедления
unitsконстанта, задающая единицу измерения ускорения


Конвейер и конвейерная сеть

Функция

Описание

ConveyorType getType()

Возвращает тип этого конвейера. Допустимые значения: CONVEYOR_TYPE_ROLLER, CONVEYOR_TYPE_BELT, CONVEYOR_TYPE_CELL.

boolean isAccumulating()

Возвращает true, если конвейер аккумулирующего типа, в противном случае возвращает false.

boolean isMainConveyor()

Возвращает true, если конвейер является магистральным.

ConveyorNode getSource()

Возвращает начальный узел конвейера. Начальный узел является началом конвейера.

ConveyorNode getTarget()

Возвращает конечный узел конвейера. Конечный узел является концом конвейера.

ConveyorNode getotherNode()

Возвращает второй (другой) узел конвейера.

ConveyorNetwork getNetwork()

Возвращает конвейерную сеть, к которой принадлежит этот конвейер.

Зазоры

Функция

Описание

double getGap(LengthUnits units)

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

Параметр:
units
константа, задающая единицу измерения длины


Агенты

Функция

Описание

int size()

Возвращает количество агентов (материальных объектов), находящихся в данный момент на конвейере.

List getAgents()

Возвращает список агентов (материальных объектов), находящихся в данный момент на конвейере, если таких нет, то возвращает null

boolean contains(Agent agent)

Возвращает true, если заданный материальный объект agent находится в данный момент на конвейере, в противном случае возвращает false.

Параметр: agent - агент

T getAgent(int index)

Возвращает агента, находящегося в заданной позиции на конвейере (отсчет начинается с нуля). 

Параметр: index - индекс агента на конвейере

boolean removeAgent(Agent agent)

Удаляет заданного агента с конвейера. 

В случае успешного удаления возвращается true, в противном случае - false.

Параметр: agent - агент, который должен быть удален с конвейере


Поломка / починка

Функция

Описание

boolean isFailed()

Возвращает true, если конвейер сломан, в противном случае возвращает false.

boolean fail()

Моделирует поломку конвейера. Конвейер выходит из строя и останавливает свою работу.

boolean repair()

Моделирует починку конвейера. Конвейера возвращается в рабочее состояние.

Размер

Функция

Описание

double length()

Возвращает длину конвейера в пикселях, вычисленную в 3D пространстве.

double getWidth(LengthUnits units)

Возвращает ширину конвейера (в заданных единицах измерения длины), вычисленную в 3D пространстве.

Параметр:
units
константа, задающая единицу измерения длины

double getCellSize(LengthUnits units)

Возвращает длину ячейки конвейера (в заданных единицах измерения длины).

Параметр:
units
константа, задающая единицу измерения длины


Точки

Функция

Описание

Point getStartPoint()

Возвращает объект Point с координатами начальной точки конвейера.

Point getEndPoint()

Возвращает объект Point с координатами конечной точки конвейера.

Point randomPointInside()

Возвращает объект Point с координатами случайной точки на этом конвейере, в которую можно поместить агента.

Position getStartPosition()

Возвращает объект Position с координатами и ориентацией начальной точки конвейера.

Position getEndPosition()

Возвращает объект Position с координатами и ориентацией конечной точки конвейера.

boolean containsSq(double px, double py, double squareDistance)

Возвращает true, если конвейер содержит точку с заданными координатами с учетом заданной погрешности square distance; в противном случае возвращает false.

Параметры:
px - X-координата точки
py - Y--координата точки
squareDistance - квадратичная погрешность расстояния, позволяющая определить, находится ли заданная точка в непосредственной близости от линии конвейера.

Возвращаетtrue, если точка с заданными координатами находится на конвейере.

Position getPositionAtOffset(double offset, Position out)

Возвращает объект Position с координатами и ориентацией точки, находящейся на заданном отступе (в пикселях) от начальной точки конвейера.

Параметры:
offset - объект Точка типа Point, в который будут записаны полученные координаты. Объект может быть равен null.

Position getPositionAtOffset(double offset,
LengthUnits units, Position out)

Возвращает объект Position с координатами и ориентацией точки, находящейся на заданном отступе от начальной точки конвейера.

Параметры:
offset - отступ, неотрицательное значение, которое равно или меньше длины конвейера
units - одна из констант, задающая единицу измерения скорости
out - объект Точка типа Point, в который будут записаны полученные координаты. Объект может быть равен null.

List getPositionsOnConveyor()

Возвращает список объектов Position этого конвейера, возвращает null, если таких нет.

Сегменты

Функция

Описание

int getSegmentCount()

Возвращает количество сегментов конвейера.

MarkupSegment getSegment
(int index)

Возвращает сегмент по его индексу.

Параметр: index - индекс сегмента (отсчет начинается с нуля)


Видимость

Функция

Описание

boolean isVisible()

Проверяет, отображается ли конвейер на анимации во время выполнения модели. 

Если функция возвращает true - значит, конвейер отображается, если false - нет.

void setVisible(boolean v)

Задает видимость конвейера.

Параметр: v - видимость. Если значение v равно true, то фигура будет отображаться, если равно false - то нет.


Цвет / текстура

Функция

Описание

Color getLineColor()

Возвращает цвет конвейера или null, если у конвейера нет цвета или если конвейер отображает текстуру (в последнем случае используйте функцию getLineTexture()).

Texture getLineTexture()

Возвращает текстуру конвейера или null, если у конвейера нет текстуры, а используется цвет (в последнем случае используйте функцию getLineColor()).

void setLineColor(Color color)

Задает новый цвет конвейера.

Параметрcolor - новый цвет

void setLineColor(Paint color)

Задает новый цвет (или текстуру) конвейера.

Параметрcolor - новый цвет (или текстура)


Внешний вид

Функция

Описание

double getLineWidth()

Возвращает ширину конвейера (в пикселях). 

double getLineWidth(LengthUnits units)

Возвращает ширину конвейера (в заданных единицах измерения длины). 

Параметрunits - одна из констант, задающая единицу измерения длины

void setLineWidth(double width)

Задает ширину конвейера; 0 соответствует минимальной ширине.

Параметр: width - новая ширина конвейера (в пикселях)

void setLineWidth(double width, LengthUnits units)

Задает ширину конвейера (в заданных единицах измерения длины); 0 соответствует минимальной ширине.

Параметры:
width - новая ширина конвейера
units - одна из констант, задающая единицу измерения длины


Специфические

Функция

Описание

List getStations()

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

Направление конвейера

Конвейер транспортирует агентов (материальные объекты) только в одном направлении, от начальной точки конвейера, до его конечной точки. Начальной точкой конвейера является толчка, которую вы нарисовали первой. 

Направление движения конвейера отображается стрелкой ан самом конвейере

 Чтобы изменить направление конвейера

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

Рисование прямых и дуговых сегментов конвейера

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

Обучающее видео: Drawing curved walls

 Чтобы добавить прямой сегмент конвейера

  1. Щелкните мышью в графическом редакторе. Каждый щелчок добавляет новый прямой сегмент.
  2. Завершите рисование двойным щелчком

 Чтобы добавить дуговой сегмент конвейера

  1. Щелкните левой кнопкой мыши в графическом редакторе и двигайте мышью, зажав клавишу. 
  2. Отпустите левую кнопку мыши, когда нарисуете отрезок требуемой формы.
  3. Завершите рисование двойным щелчком

Чтобы добавить сегмент конвейера

  1. Щелкните правой кнопкой мыши по конвейеру и выберите пункт Добавить линию из контекстного меню.
  2. Теперь нужно указать, с какого конца конвейера вы хотите продолжить рисование конвейера. Для этого щелкните мышью по соответствующей конечной точке конвейера.
  3. Вы находитесь в режиме рисования конвейера и можете добавить необходимое количество новых сегментов, как прямых, так и дуговых
  4. Чтобы завершить рисование, добавьте последнюю точку дороги двойным щелчком мыши.
Чтобы сделать дуговой сегмент конвейера прямым
  1. Щелкните мышью конвейер в графическом редакторе, чтобы выделить его. 
  2. Зажмите клавишу Ctrl на клавиатуре и, не отпуская ее, щелкните мышью точку редактирования дугового сегмента и перетащите ее.
  3. Отпустите клавишу Ctrl и кнопку мыши, когда сегмент стал прямым и принял требуемую форму.
Чтобы сделать прямой элемент стены дуговым
  1. Щелкните конвейер правой кнопкой мыши и выберите опцию Редактировать направляющие из контекстного меню. Направляющие линии появятся для каждой точки редактирования конвейера. Щелкните мышью по точке направляющей линии и перетаскивайте ее, не отпуская кнопку мыши.
  2. Щелкните конвейер правой кнопкой мыши и отключите опцию Редактировать направляющие из контекстного меню, чтобы выйти из этого режима редактирования.