Лифт


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

Пешеходы не могут использовать лифт.

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

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

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

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

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

Демонстрационная модель: Three Level Facility with Lift

Чтобы создать лифт

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

  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()

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

void setLevel(Level level)

Задает новый уровень, где будет расположен данный лифт.

Параметр:
level - новый уровень.


Препятствие

Функция

Описание

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 - новый способ выбора агентов.
Valid values: 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, то фигура не заливается



См. также

 Элементы разметки Библиотеки производственных систем

 Библиотека производственных систем

 Java документация (англ.): Класс Lift