Лифт


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

Пешеходы не могут использовать лифт. С его помощью могут перемещаться только транспортеры и материальные объекты.

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

Чтобы смоделировать лифт, вам необходимо разместить несколько данных элементов, по одному для каждого уровня моделируемого пространства. Уровни могут быть смоделированы как части единой сети или как отдельные, независимые сети. Если вы моделируете уровни в виде отдельных сетей, для эффективной 2D-анимации рекомендуется располагать эти сети в графической диаграмме одного агента. Если в приоритете 3D-анимация с вертикально расположенными уровнями, вы можете создать каждый уровень в графических диаграммах различных агентов, а затем совместить их презентации на графической диаграмме одного агента. Чтобы обеспечить корректное вертикальное расположение уровней, задайте для каждого уровня соответствующее значение Z-высоты.

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Действия

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

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

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

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

Внешний вид

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

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

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

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

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

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

Z - Z-координата точки, где расположен лифт.

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

Ширина - Ширина кабины лифта.

Глубина - Глубина кабины лифта.

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

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

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

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

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

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

Функции

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

Функция

Описание

boolean isFailed()

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

void fail()

Моделирует поломку лифта. Лифт выходит из строя и прекращает работать.

void repair()

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


Главная площадка и второстепенные площадки

Функция

Описание

List<NetworkPort> ports()

Возвращает все порты данного лифта.

List<Lift<?>> getLiftLandings()

Возвращает все площадки данного лифта, включая главную площадку.

boolean isMainLanding()

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

void setMainLanding(boolean isMain)

Задает основную площадку для лифта.

Параметр:
isMain - допустимые значения: true и false.

Lift<?> getMainLanding()

Возвращает главную площадку лифта из коллекции элементов типа "лифт", связанных друг с другом.

void setMainLanding(Lift<?> mainLift)

Задает главную площадку для лифта из коллекции элементов типа "лифт", связанных друг с другом.

Параметр:
mainLift - новая главная площадка.


Этаж

Функция

Описание

Ground getGround()

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

void setGround(Ground ground)

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

Параметр:
ground - новый этаж.


Препятствие

Функция

Описание

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 - константа, задающая единицу измерения скорости


Время загрузки / разгрузки

Функция

Описание

double pickingUpTime(A agent, TimeUnits units)

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

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

double droppingOffTime(A agent, TimeUnits units)

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

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


Выбор агентов из очереди

Функция

Описание

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

Возвращает приоритет агента.

Параметр:
agent - агент в очереди

boolean comparison(A agent1, A 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