AnyLogic
Развернуть
Размер шрифта

Конвейер

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

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

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

Конвейер может служить препятствием для транспортеров, перемещающихся в режиме произвольной навигации.

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

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

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

  • Роликовый — Это аккумулирующий тип конвейера. Если остановить на нем агента, ролики продолжат крутиться, приближая все следующие за ним объекты, и образуя таким образом очередь агентов. Параметр Зазор задает допустимое расстояние между агентами, на которое конвейер может их сблизить. Если Зазор равен 0, столкновение материальных объектов неизбежно.
  • Ленточный — Это не аккумулирующий тип конвейера. Если остановить на нем агента, остановится весь конвейер, чтобы предотвратить столкновение материальных объектов. Расстояние между материальными объектами задается параметром Зазор.
  • С лотками — Это не аккумулирующий тип конвейера. Конвейер представляет собой последовательность лотков заданного размера. Агент помещается в лоток. На конвейерный лоток можно поместить только один материальный объект. Параметр Зазор задает расстояние между конвейерными лотками. Если на конвейере остановить агента, остановится весь конвейер.
Демо-модель: Cross Belt Conveyor Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

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

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

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

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

Реверсивный — Если опция выбрана, то этот конвейер сможет изменять направление движения после вызова соответствующей функции.

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

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

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

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

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

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

Приоритеты

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

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

Действия

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

Переменная agents позволяет обратиться ко всем материальным объектам, находящимся на конвейере в данный момент.

При входе переднего торца — Здесь вы можете задать Java код, который будет выполняться, когда передний торец материального объекта поступает на конвейер. runsForward — true, если конвейер движется в заданном по умолчанию направлении (от начальной точки к конечной). Иначе, возвращает false.

При входе заднего торца — Здесь вы можете задать Java код, который будет выполняться, когда задний торец материального объекта поступает на конвейер. runsForward — true, если конвейер движется в заданном по умолчанию направлении (от начальной точки к конечной). Иначе, возвращает false.

При выходе переднего торца — Здесь вы можете задать Java код, который будет выполняться, когда передний торец материального объекта покидает конвейер. runsForward — true, если конвейер движется в заданном по умолчанию направлении (от начальной точки к конечной). Иначе, возвращает false.

При выходе заднего торца — Здесь вы можете задать Java код, который будет выполняться, когда задний торец материального объекта покидает конвейер. runsForward — true, если конвейер движется в заданном по умолчанию направлении (от начальной точки к конечной). Иначе, возвращает false.

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

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

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

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

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

Внешний вид

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

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

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

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

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

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

Z — [Доступно, только если установлен флажок Отображать в: В 2D и в 3D или Только в 3D] Z-координата начальной точки конвейера. При соединении с конвейером, для которого уже задана Z-высота, данное значение автоматически сменится на значение Z-координаты этого конвейера.

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

Точки

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

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

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

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

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

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

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

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

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

AnyLogic: The reversible conveyor in the graphical editorПодсвеченные стрелки указывают на текущее направление конвейера

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

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

Вы можете динамически изменять направление движение конвейера во время «прогона» модели c помощью соответствующих функций API. Больше информации — в статье о реверсивных конвейерах.

Функции

Управление, скорость
Функция Описание
boolean isStopped() Возвращает true, если конвейер остановлен, в противном случае возвращает false.
void stop() Останавливает конвейер.
void 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) Задает новое значение замедления конвейера (в заданных единицах измерения).

deceleration — новое значение замедления
units — константа, задающая единицу измерения ускорения
Изменение направления движения
Функция Описание
void changeDirection() Изменяет направление движения конвейера. Если в момент вызова функции конвейер замедлялся с целью дальнейшего изменения направления, эта команда отменяется и конвейер начинает ускоряться в новом направлении.
ConveyorDirection getDirection() Возвращает текущее направление движения конвейера: CONVEYOR_FORWARD (вперед) или CONVEYOR_BACKWARD (назад). Если в момент вызова функции конвейер замедляется перед дальнейшим изменением направления, все равно возвращает текущее направление. Если конвейер не является реверсивным, всегда возвращает CONVEYOR_FORWARD.
void setDirection(ConveyorDirection direction) Задает направление движения конвейера. Для этого с вызовом функции передается значения аргумента direction:
CONVEYOR_FORWARD — материальные объекты перемещаются от начальной точки конвейера к конечной точке.
CONVEYOR_BACKWARD — материальные объекты перемещаются от конечной точки конвейера к начальной.
Если значение аргумента direction соответствует текущему направлению конвейера, в результате вызова функции возможны два сценария:
  • Если конвейер на момент вызова не замедляется перед изменением направления, ничего не происходит. Вызов функции игнорируется.
  • Если конвейер на момент вызова замедляется перед изменением направления, предыдущая команда замедления отменяется и конвейер начинает ускоряться в направлении, заданном аргументом direction.
boolean isChangingDirection() Возвращает true, если конвейер замедляется перед изменением направления. В других случаях возвращает false.
Всегда возвращает false, если конвейер не является реверсивным.
Уровень
Функция Описание
Level getLevel() Возвращает уровень, на котором находится этот конвейер.
Препятствие
Функция Описание
boolean isObstacle() Возвращает true, если этот конвейер служит препятствием для транспортеров, перемещающихся в режиме произвольной навигации. В противном случае возвращает false.
void setObstacle(boolean isObstacle) Задает этот конвейер в качестве препятствия для транспортеров, перемещающихся в режиме произвольной навигации.

isObstacle — если true, конвейер служит препятствием. В противном случае, конвейер не служит препятствием.
Конвейер и конвейерная сеть
Функция Описание
ConveyorType getType() Возвращает тип этого конвейера. Допустимые значения:

ConveyorType.CONVEYOR_TYPE_ROLLER
ConveyorType.CONVEYOR_TYPE_BELT
ConveyorType.CONVEYOR_TYPE_CELL
boolean isAccumulating() Возвращает true, если конвейер аккумулирующего типа, в противном случае возвращает false.
boolean isMaximumPriority() Возвращает true, если это конвейер с максимальным приоритетом.
ConveyorNode getSource() Возвращает начальный узел конвейера. Начальный узел является началом конвейера.
ConveyorNode getTarget() Возвращает конечный узел конвейера. Конечный узел является концом конвейера.
ConveyorNode getOtherNode() Возвращает второй (другой) узел конвейера.
ConveyorNetwork getNetwork() Возвращает конвейерную сеть, к которой принадлежит этот конвейер.
Сетевые порты
Функция Описание
NetworkPort createPort(PathEndType endType) Создает сетевой порт на начальной или конечной точке конвейера в зависимости от значения аргумента.

endType — Указывает, на какой из конечных точек конвейера создается порт. Допустимые значения:
PathEndType.BEGIN
PathEndType.END
NetworkPort createPort(PathEndType endType, NetworkPort pairedPort) Создает сетевой порт на начальной или конечной точке конвейера в зависимости от значения аргумента. Созданный порт будет соединен с указанным портом из другой сети.

endType — Указывает, на какой из конечных точек конвейера создается порт. Допустимые значения:
PathEndType.BEGIN
PathEndType.END

pairedPort — Сетевой порт, принадлежащий другой сети.
Сетевой порт, созданный с помощью кода, можно соединить только с другим таким же портом. Чтобы соединить порты, созданные с помощью графического редактора, задайте нужные значения в их свойствах.
Зазоры
Функция Описание
double getGap(LengthUnits units) Возвращает минимальный допустимый зазор между материальными агентами этого конвейера (в заданных единицах измерения длины).

units — константа, задающая единицу измерения длины
Агенты
Функция Описание
int size() Возвращает количество агентов (материальных объектов), находящихся в данный момент на конвейере.
List<T> getAgents() Возвращает список агентов (материальных объектов), находящихся в данный момент на конвейере, если таких нет, то возвращает null.
boolean contains(Agent agent) Возвращает true, если заданный материальный объект agent находится в данный момент на конвейере, в противном случае возвращает false.

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

index — индекс агента на конвейере

T getAgent(double offset, LengthUnits units)

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

offset — отступ (неотрицательное значение, которое равно или меньше длины конвейера)
units — константа, задающая единицу измерения длины
List<T> getAgents(double offset, double length, LengthUnits units) Возвращает список агентов (материальных объектов), находящихся на заданном отрезке конвейера. Длина отрезка рассчитывается от заданного отступа (в заданных единицах измерения длины) от начальной точки конвейера.

offset — отступ (неотрицательное значение, которое равно или меньше длины конвейера)
length — длина отрезка конвейера
units — константа, задающая единицу измерения длины
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 — квадратичная погрешность расстояния, позволяющая определить, находится ли заданная точка в непосредственной близости от линии конвейера.
Position getPositionAtOffset(double offset, Position out) Возвращает объект Position с координатами и ориентацией точки, находящейся на заданном отступе (в пикселях) от начальной точки конвейера.

offset — отступ, неотрицательное значение, которое равно или меньше длины конвейера.
Position getPositionAtOffset(double offset, LengthUnits units, Position out) Возвращает объект Position с координатами и ориентацией точки, находящейся на заданном отступе от начальной точки конвейера.

offset — отступ, неотрицательное значение, которое равно или меньше длины конвейера
units — одна из констант, задающая единицу измерения длины
out — объект out типа Position, в который будут записаны полученные координаты. Объект может быть равен 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, если на конвейере нет станций.
Удаление
Функция Описание
void remove() Удаляет конвейер из презентации. Если конвейер не является частью презентации, функция не выполняет ничего. Обратите внимание, что удаление из презентации не обязательно подразумевает удаление из логики модели, поскольку логические сети и маршруты могли быть заданы еще до удаления элемента и не исчезают.

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

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

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

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

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

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

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

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

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

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

Чтобы сделать прямой элемент стены дуговым

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