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

Подъемник

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

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

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

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

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

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

Для каждого элемента в системе подъемников необходимо задать высоту площадки: эти значения будут использоваться, чтобы рассчитать и смоделировать время, которое необходимо подъемнику, чтобы подняться или опуститься на нужный этаж из своей текущей позиции. Высота площадки — это расстояние от той точки, где расположен данный элемент подъемника, до той горизонтальной поверхности в моделируемом пространстве, которую вы принимаете за точку отсчета. Расстояние рассчитывается по оси Z. Такой точкой отсчета, к примеру, может стать первый этаж вашей фабрики.

Демо-модель: Two Level Facility with Lift Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Чтобы создать подъемник

Сначала вам необходимо создать основной элемент подъемника.

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

Теперь вы можете добавить элементы, которые будут служить площадками подъемника.

  1. Повторите шаги 1-2 для каждого уровня моделируемого пространства (т.е. для каждой сети), где вы хотите установить подъемник.
  2. В панели Свойства задайте соответствующую Высоту площадки для каждого элемента Подъемник.
  3. Задайте элемент подъемника, который служит главной площадкой, в параметре Относится к подъемнику. Повторите это действие для всех элементов подъемника, которые используются, чтобы задать местоположение подъемника на уровнях. Если уровни моделируемого вами пространства созданы на графических диаграммах разных агентов, переключите поле Относится к подъемнику в режим динамического параметра и введите соответствующее обращение к элементу: <имя агента>.<имя подъемника>.

Свойства

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

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

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

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

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

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

Тип материального объекта — Тип материального объекта, транспортируемый этим подъемником.

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

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

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

Относится к подъемнику — [Виден, если не выбрана опция Главная площадка (задает свойства подъемника)] Здесь вы можете выбрать основной элемент подъемника, с которым будет связан данный элемент.

Скорость подъема — [Виден, если выбрана опция Главная площадка (задает свойства подъемника)] Здесь вы можете задать скорость, с которой будет двигаться подъемник.

Время загрузки — [Виден, если выбрана опция Главная площадка (задает свойства подъемника)] Здесь вы можете задать время, за которое агент должен переместиться с конечной точки сетевого пути / конвейера в центр подъемника.

Время разгрузки — [Виден, если выбрана опция Главная площадка (задает свойства подъемника)] Здесь вы можете задать время, за которое агент должен переместиться из центра подъемника в начальную точку сетевого пути / конвейера.

Агенты выбираются — [Виден, если выбрана опция Главная площадка (задает свойства подъемника)] Порядок, в котором подъемник забирает агентов с разных уровней для перемещения. Может быть FIFO (по умолчанию), Согласно приоритетам или Путем их сравнения.

Приоритет — [Виден, если Агенты выбираются: Согласно приоритетам] Приоритет поступающего агента (чем больше, тем выше).

"agent1 предпочтительнее, чем agent2" — [Виден, если Способ выбора агентов: Путем их сравнения] Здесь вы можете задать булево выражение, которое вычисляется для каждого агента, который должен перемещаться с помощью подъемника. Выражение сравнивает этого агента с агентами, которые уже находятся в ожидании подъемника, и принимает решение согласно результату. Если выражение возвращает true, новый агент помещается в подъемник раньше агентов, с которыми проводилось сравнение.

Действия

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

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

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

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

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

Внешний вид

Тип платформы — Здесь вы можете выбрать тип платформы подъемника: Плоская или Роликовая.

Цвет заливки — Задает цвет заливки фигуры. Если вы не хотите, чтобы фигура была закрашена, выберите Нет цвета.

Цвет линии — Задает цвет линии. Если вы не хотите, чтобы линия контура была видна, выберите Нет цвета.

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

Уровень — Уровень, на котором расположен этот элемент.

X — X-координата точки, где расположен подъемник.

Y — Y-координата точки, где расположен подъемник.

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

Вращение — Ориентация кабины подъемника: вы можете изменить ее по часовой стрелке и против часовой стрелки.

Ширина — Ширина кабины подъемника.

Глубина — Глубина кабины подъемника.

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

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

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

Функции

Поломка / починка
Функция Описание
boolean isFailed() Возвращает true, если подъемник сломан, в противном случае возвращает false.
void fail() Моделирует поломку подъемника. Подъемник выходит из строя и прекращает работать.
void repair() Моделирует починку подъемника. Подъемник возвращается в рабочее состояние.
Главная площадка и второстепенные площадки
Функция Описание
List<Lift> getLiftLandings() Возвращает все площадки данного подъемника, включая главную площадку.
boolean isMainLanding() Возвращает значение true, если для этого подъемника задана главная площадка. В противном случае возвращает значение false.
void setMainLanding(boolean isMain) Задает основную площадку для подъемника.

isMain — допустимые значения:
true и false.
Lift getMainLanding() Возвращает главную площадку подъемника из набора площадок, которому принадлежит данный подъемник.
void setMainLanding(Lift mainLift) Присваивает статус главной площадки заданной площадке подъемника. mainLift — новая главная площадка.
List<Networkport> ports() Возвращает все порты данного подъемника.
Уровень
Функция Описание
Level getLevel() Возвращает уровень, на котором расположен данный подъемник.
Препятствие
Функция Описание
boolean isObstacle() Возвращает true, если этот подъемник является препятствием для транспортеров, передвигающихся в режиме произвольной навигации. В противном случае возвращает false.
void setObstacle(boolean isObstacle) Задает этот подъемник в качестве препятствия для транспортеров, передвигающихся в режиме произвольной навигации.

isObstacle — если true, подъемник задается в качестве препятствия. В противном случае подъемник не служит препятствием для транспортеров.
Высота над нулевым уровнем
Функция Описание
double getFloorElevation(LengthUnits units) Возвращает расстояние от подъемника до поверхности, выбранной в качестве нулевого уровня (в заданных единицах измерения длины).

units — константа, задающая единицу измерения длины
void setFloorElevation(double floorLevel, LengthUnits units) Задает расстояние от подъемника до поверхности, выбранной в качестве нулевого уровня (в заданных единицах измерения длины).

floorLevel — новое значение расстояния
units — константа, задающая единицу измерения длины
Скорость
Функция Описание
double getLiftingSpeed(SpeedUnits units) Возвращает скорость движения подъемника (в заданных единицах измерения скорости).
units — константа, задающая единицу измерения скорости
void setLiftingSpeed(double speed, SpeedUnits units) Задает скорость движения подъемника (в заданных единицах измерения скорости).

speed — новое значение скорости
units — константа, задающая единицу измерения скорости
Время загрузки / разгрузки

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

Функция Описание
double pickingUpTime(Agent agent, TimeUnits units) Возвращает заданное время время загрузки. Это время, за которое агент должен переместиться с конечной точки сетевого пути / конвейера в центр подъемника (в заданных единицах измерения времени).

agent — агент, совершающий перемещение с помощью подъемника в данный момент
units — константа, задающая единицу измерения времени
double droppingOffTime(Agent agent, TimeUnits units) Возвращает заданное время разгрузки. Это время, за которое агент должен переместиться из центра подъемника на начальную точку сетевого пути / конвейера (в заданных единицах измерения времени).

agent — агент, совершающий перемещение с помощью подъемника в данный момент
units  — константа, задающая единицу измерения времени
Выбор агентов из очереди

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

Функция Описание
LiftSelectionMode getSelectionMode() Возвращает способ, согласно которому подъемник выбирает агентов из очереди. Допустимые значения:
LIFT_SELECTION_MODE_FIFO — согласно принципу FIFO
LIFT_SELECTION_MODE_PRIORITY — согласно приоритету поступающего агента
LIFT_SELECTION_MODE_COMPARISON — согласно результатам вычисления заданного пользователем булева выражения для каждого агента, который должен перемещаться с помощью подъемника
void setSelectionMode (LiftSelectionMode mode) Задает новый способ, согласно которому подъемник будет выбирать агентов из очереди.

mode — новый способ выбора агентов. Допустимые значения:
LIFT_SELECTION_MODE_FIFO — согласно принципу FIFO
LIFT_SELECTION_MODE_PRIORITY — согласно приоритету поступающего агента
LIFT_SELECTION_MODE_COMPARISON — согласно результатам вычисления заданного пользователем булева выражения для каждого агента, который должен перемещаться с помощью подъемника
double priority(Agent agent) Возвращает приоритет агента.

agent — агент в очереди
boolean comparison(Agent agent1, Agent agent2) Возвращает результаты вычисления булева выражения, заданного пользователем в параметре "agent1 предпочтительнее, чем agent2" свойств подъемника.

agent1 — поступающий агент
agent2 — агент в очереди, которого сравнивают с поступающим агентом
int queueSize() Возвращает количество запросов от агентов, находящихся в очереди к подъемнику. Запросы могут отправлять только те агенты, которые уже достигли подъемника (т.е. на каждом этаже в очереди может находиться только один агент).
Agent getAgentFromQueue (int index) Возвращает агента из очереди с заданным индексом.

index — индекс агента в очереди.
Местоположение
Функция Описание
double getX() Возвращает Х-координату подъемника.
void setX(double x) Задает X-координату подъемника.

x — новая Х-координата
double getY() Возвращает Y-координату подъемника.
void setY(double y) Задает Y-координату подъемника.

y — новая Y-координата
double getZ() Возвращает Z-координату подъемника.
void setZ(double z) Задает Z-координату подъемника.

z — новая Z-координата
Point getXYZ() Возвращает (X, Y, Z) координаты подъемника.
void setXYZ(double x, double y, double z) Задает (X, Y, Z) координаты подъемника.

x — новая Х-координата
y — новая Y-координата
z — новая Z-координата
double getRotation() Возвращает текущий угол поворота кабины подъемника в радианах (по часовой стрелке).
void setRotation(double rotation) Задает новый угол поворота кабины подъемника в радианах (по часовой стрелке).

rotation — новое значение поворота
Размеры
Функция Описание
double getWidth(LengthUnits units) Возвращает ширину кабины подъемника (в заданных единицах измерения длины).

units — константа, задающая единицу измерения длины
void setWidth(double width, LengthUnits units) Задает ширину кабины подъемника (в заданных единицах измерения длины).

width — новое значение ширины
units — константа, задающая единицу измерения длины
double getDepth(LengthUnits units) Возвращает глубину кабины подъемника (в заданных единицах измерения длины).

units — константа, задающая единицу измерения длины
void setDepth(double depth, LengthUnits units) Задает глубину кабины подъемника (в заданных единицах измерения длины).

depth — новое значение глубины
units — константа, задающая единицу измерения длины
Цвет / текстура
Функция Описание
LiftPlatformDrawingType getPlatformType() Возвращает тип поверхности платформы подъемника. Допустимые значения:

LIFT_PLATFORM_FLAT LIFT_PLATFORM_ROLLER
void setPlatformType(LiftPlatformDrawingType platformType) Задает тип поверхности платформы подъемника.

platformType — новый тип поверхности платформы подъемника. Допустимые значения:
LIFT_PLATFORM_FLAT LIFT_PLATFORM_ROLLER
Color getLineColor() Возвращает цвет контура фигуры или null, если у контура нет цвета или если контур отображает текстуру (в последнем случае используйте функцию getLineTexture()).
Texture getLineTexture() Возвращает текстуру контура фигуры или null, если у контура нет текстуры, а используется цвет (в последнем случае используйте функцию getLineColor()).
void setLineColor(Color lineColor) Задает цвет контура подъемника.

lineColor — новый цвет
void setLineColor(Paint lineColor) Задает цвет (или текстуру) контура подъемника.

lineColor — новый цвет (или текстура)
Color getFillColor() Возвращает цвет заливки подъемника или null, если у подъемника нет заливки или если подъемник отображает текстуру (в последнем случае используйте функцию getFillTexture()).
Texture getFillTexture() Возвращает текстуру заливки подъемника или null, если у подъемника нет текстуры заливки или если подъемник использует цвет заливки (в последнем случае используйте функцию getFillColor()).
void setFillColor(Color fillColor) Задает цвет заливки подъемника.

fillColor — новый цвет заливки; если значение равно null, то фигура не заливается
void setFillColor(Paint fillColor) Задает для подъемника новый цвет заливки (или текстуру, объект типа Texture).

fillColor — новый цвет заливки; если значение равно null, то фигура не заливается
Как мы можем улучшить эту статью?