Лифт является элементом разметки пространства, с помощью которого можно графически задать вертикальный возвратно-поступательный конвейер. Только два типа сетей поддерживают данный элемент: сети Библиотеки моделирования процессов (для транспортеров, перемещающихся по заданным путям) и конвейерные сети Библиотеки производственных систем (для материальных объектов). В отличие от сетевого порта лифт можно использовать для связи сетей разного типа: например, агент может поступить в лифт из стандартной сети и выйти из него на конвейерную сеть (или наоборот). При этом необходимо учитывать, что агенты в подобных сетях могут перемещаться только по совместимым с ними элементам сети. Например, материальные объекты не могут двигаться по сетевым путям, а транспортеры не могут перемещаться с помощью конвейеров.
Лифт также может являться препятствием на пути транспортеров, перемещающихся в режиме произвольной навигации.
Транспортеры в режиме произвольной навигации могут заезжать в лифт с любой из четырех сторон. Чтобы ограничить зоны въезда для транспортеров, используйте стены, которые послужат для них препятствиями. Например:
Вы можете использовать Прямоугольную стену, чтобы нарисовать препятствие вплотную к границам лифта. Вы также можете использовать простую Стену, но в таком случае необходимо либо рисовать замкнутую стену, либо следить за тем, чтобы расстояние между границами лифта и стеной было меньше ширины транспортеров.
Чтобы смоделировать лифт, вам понадобится несколько данных элементов, по одному для каждого уровня моделируемого пространства. Один из элементов считается главной площадкой: для него можно задать все параметры, описывающие работу лифта (например, скорость подъема, время загрузки и т.д.). Остальные элементы используются, чтобы задать местоположение лифта на каждом уровне. Все настройки они наследуют от главной площадки лифта.
Для каждого элемента в системе лифтов необходимо задать высоту площадки: эти значения будут использоваться, чтобы рассчитать и смоделировать время, которое необходимо лифту, чтобы подняться или опуститься на нужный этаж из своей текущей позиции. Высота площадки — это расстояние от той точки, где расположен данный элемент лифта, до той горизонтальной поверхности в моделируемом пространстве, которую вы принимаете за точку отсчета. Расстояние рассчитывается по оси Z. Такой точкой отсчета, к примеру, может стать первый этаж вашей фабрики.
Демо-модель: Two Level Facility with LiftЧтобы создать лифт
Сначала вам необходимо создать основной элемент лифта.
-
Перетащите элемент
Лифт из секции Разметка пространства палитры
Библиотека производственных систем на графическую диаграмму и разместите его как можно ближе к нужной точке сетевого пути или конвейера. Следите за тем, чтобы конечная точка пути/конвейера находилась точно напротив того порта лифта, с которым выходите установить соединение.
- Щелкните точку сетевого пути или конвейера и, зажав левую клавишу мыши, перетащите ее к тому порту лифта, где вы хотите установить соединение. Когда соединение будет успешно установлено, точка будет подсвечена зеленым ивы сможете отпустить клавишу мыши.
- В панели Свойства элемента выберите опцию Главная площадка (задает свойства лифта).
- Настройте свойства лифта.
Теперь вы можете добавить элементы, которые будут служить площадками лифта.
- Повторите шаги 1-2 для каждого уровня моделируемого пространства (т.е. для каждой сети), где вы хотите установить лифт.
- В панели Свойства задайте соответствующую Высоту площадки для каждого элемента Лифт.
- Задайте элемент лифта, который служит главной площадкой, в параметре Относится к лифту. Повторите это действие для всех элементов лифта, которые используются, чтобы задать местоположение лифта на уровнях. Если уровни моделируемого вами пространства созданы на графических диаграммах разных агентов, переключите поле Относится к лифту в режим динамического параметра и введите соответствующее обращение к элементу: <имя агента="агента">.<имя лифта="лифта">.
- Основные свойства
-
Имя — Имя лифта. Имя используется для идентификации лифта и доступа к нему из кода и свойств блоков диаграммы процесса.
Исключить — Если опция выбрана, то лифт будет исключен из модели.
Отображается на верхнем агенте — Если опция выбрана, то фигура лифта будет видна на презентации типа агента, в который будет вложен данный агент.
Блокировать — Если опция выбрана, то фигура лифта будет считаться заблокированной и не будет реагировать на щелчки мыши. Вы не сможете выбрать заблокированную фигуру в графическом редакторе до тех пор, пока не снимете с нее блокировку.
Видимость — Здесь вы можете указать, будет ли этот лифт виден на анимации во время выполнения модели. Используя элемент управления, выберите да или нет.
Тип материального объекта — Тип материального объекта, транспортируемый этим лифтом.
Является препятствием — Если опция выбрана, то лифт будет являться препятствием для транспортеров, перемещающихся в режиме произвольной навигации.
Высота площадки — Здесь вы можете задать расстояние между этажом, на котором расположен элемент лифта, и горизонтальной поверхностью в моделируемом пространстве, которую вы принимаете за точку отсчета.
Главная площадка (задает свойства лифта) — Выберите эту опцию, чтобы использовать данный элемент лифта в качестве главной площадки.
Относится к лифту — [Виден, если не выбрана опция Главная площадка (задает свойства лифта)] Здесь вы можете выбрать основной элемент лифта, с которым будет связан данный элемент.
Скорость подъема — [Виден, если выбрана опция Главная площадка (задает свойства лифта)] Здесь вы можете задать скорость, с которой будет двигаться лифт.
Время загрузки — [Виден, если выбрана опция Главная площадка (задает свойства лифта)] Здесь вы можете задать время, за которое агент должен переместиться с конечной точки сетевого пути / конвейера в центр лифта.
Время разгрузки — [Виден, если выбрана опция Главная площадка (задает свойства лифта)] Здесь вы можете задать время, за которое агент должен переместиться из центра лифта в начальную точку сетевого пути / конвейера.
Агенты выбираются — [Виден, если выбрана опция Главная площадка (задает свойства лифта)] Порядок, в котором лифт забирает агентов с разных уровней для перемещения. Может быть 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_ROLLERvoid setPlatformType(LiftPlatformDrawingType platformType) Задает тип поверхности платформы лифта.
platformType — новый тип поверхности платформы лифта. Допустимые значения:
LIFT_PLATFORM_FLAT LIFT_PLATFORM_ROLLERColor 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, то фигура не заливается
-
Как мы можем улучшить эту статью?
-