Подъемник является элементом разметки пространства, с помощью которого можно графически задать вертикальный возвратно-поступательный конвейер. Только два типа сетей поддерживают данный элемент: сети Библиотеки моделирования процессов (для транспортеров, перемещающихся по заданным путям) и конвейерные сети Библиотеки производственных систем (для материальных объектов). В отличие от сетевого порта подъемник можно использовать для связи сетей разного типа: например, агент может поступить в подъемник из стандартной сети и выйти из него на конвейерную сеть (или наоборот). При этом необходимо учитывать, что агенты в подобных сетях могут перемещаться только по совместимым с ними элементам сети. Например, материальные объекты не могут двигаться по сетевым путям, а транспортеры не могут перемещаться с помощью конвейеров.
Подъемник также может являться препятствием на пути транспортеров, перемещающихся в режиме произвольной навигации.
Транспортеры в режиме произвольной навигации могут заезжать в подъемник с любой из четырех сторон. Чтобы ограничить зоны въезда для транспортеров, используйте стены, которые послужат для них препятствиями. Например:
Вы можете использовать Прямоугольную стену, чтобы нарисовать препятствие вплотную к границам подъемника. Вы также можете использовать простую Стену, но в таком случае необходимо либо рисовать замкнутую стену, либо следить за тем, чтобы расстояние между границами подъемника и стеной было меньше ширины транспортеров.
Чтобы смоделировать подъемник, вам понадобится несколько данных элементов, по одному для каждого уровня моделируемого пространства. Один из элементов считается главной площадкой: для него можно задать все параметры, описывающие работу подъемника (например, скорость подъема, время загрузки и т.д.). Остальные элементы используются, чтобы задать местоположение подъемника на каждом уровне. Все настройки они наследуют от главной площадки подъемника.
Для каждого элемента в системе подъемников необходимо задать высоту площадки: эти значения будут использоваться, чтобы рассчитать и смоделировать время, которое необходимо подъемнику, чтобы подняться или опуститься на нужный этаж из своей текущей позиции. Высота площадки — это расстояние от той точки, где расположен данный элемент подъемника, до той горизонтальной поверхности в моделируемом пространстве, которую вы принимаете за точку отсчета. Расстояние рассчитывается по оси Z. Такой точкой отсчета, к примеру, может стать первый этаж вашей фабрики.
Демо-модель: Two Level Facility with Lift Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.Чтобы создать подъемник
Сначала вам необходимо создать основной элемент подъемника.
- Перетащите элемент Подъемник из секции Разметка пространства палитры Библиотека производственных систем на графическую диаграмму и разместите его как можно ближе к нужной точке сетевого пути или конвейера. Следите за тем, чтобы конечная точка пути/конвейера находилась точно напротив того порта подъемника, с которым выходите установить соединение.
- Щелкните точку сетевого пути или конвейера и, зажав левую клавишу мыши, перетащите ее к тому порту подъемника, где вы хотите установить соединение. Когда соединение будет успешно установлено, точка будет подсвечена зеленым ивы сможете отпустить клавишу мыши.
- В панели Свойства элемента выберите опцию Главная площадка (задает свойства подъемника).
- Настройте свойства подъемника.
Теперь вы можете добавить элементы, которые будут служить площадками подъемника.
- Повторите шаги 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, то фигура не заливается
-
Как мы можем улучшить эту статью?
-