В имитационном моделировании существует множество применений для конвейеров, которые могут изменить направление движения по запросу. Вот некоторые из них:
- Если станции обработки располагаются вне основной конвейерной сети, боковые ветви реверсивных конвейеров могут перемещать материальные объекты между основной сетью и этими станциями и обратно.
- «Промежуточные» реверсивные конвейеры собирают материальные объекты разных типов с магистральных конвейеров, а затем направляют их на дальнейшую обработку.
Реверсивные конвейеры являются составной частью конвейерной сети. Вы можете включить их в процесс обработки агента (материального объекта) с помощью блоков Convey, аналогично обычным однонаправленным конвейерам.
Чтобы сделать конвейер реверсивным
- Выберите конвейер, который хотите сделать реверсивным.
- Выберите опцию Реверсивный в свойствах этого конвейера.
В графическом редакторе реверсивные конвейеры отмечаются точкой, по бокам которой — две разнонаправленных стрелки. Подсвеченная стрелка и точка указывают на начальное направление движения конвейера. В ходе «прогона» модели подсвечивается стрелка, соответствующая текущему направлению движения конвейера.
Демо-модель: Reversible Conveyors Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.Давайте посмотрим, как именно производится изменение направления движения конвейера после вызова функций setDirection() или changeDirection().
- Если в момент вызова осуществляется замедление конвейера со скоростью выше 0, конвейер начинает постепенно замедляться, пока скорость движения не станет равна 0. Если скорость замедления равна 0, конвейер останавливается немедленно.
- Направление движения конвейера изменяется. Передний торец каждого агента (материального объекта) на конвейере становится задним торцом этого агента.
- Выполняется код действия При изменении направления.
-
AnyLogic отменяет задачи движения агентов (материальных объектов) на этом конвейере. Агенты покидают активный блок Convey через порт outRedirect.
Вот несколько вариантов того, куда могут отправиться эти агенты:- в другой блок Convey с другой конечной точкой;
- вернуться в активный блок Convey для вычисления нового маршрута;
- в блок ConveyorExit, который изымает агентов с конвейера для дальнейшей обработки в другом месте
- Если скорость ускорения конвейера выше 0, конвейер начинает постепенно ускоряться в новом направлении, пока не достигнет максимальной скорости. Если скорость ускорения равна 0, конвейер немедленно начинает движение с максимальной скоростью.
После включения или починки конвейер продолжает движение в новом направлении.
Когда агент (материальный объект) входит в блок Convey, он помещается на указанный конвейер. Его положение зависит от направления конвейера.
Предположим, агент помещается на реверсивный конвейер, который изначально двигается слева направо. Положение переднего торца агента остается неизменным, тогда как задний торец находится:
- слева от переднего, если конвейер двигается в изначальном направлении;
- справа от переднего, если конвейер двигается в обратном направлении.
Предположим, что передний торец материального объекта находится на расстоянии 10 метров от начала конвейера, при этом длина самого объекта составляет 2 метра. Таким образом при движении конвейера в изначальном направлении смещение заднего торца от начала конвейера составит 10 - 2 = 8 метров. При измененном направлении движения конвейера смещение заднего торца составит 10 + 2 = 12 метров.
Ориентация (FRONT или REAR) материального объекта изменяется на противоположную при изменении направления движения конвейера.
Если направление движения конвейера, на который помещается агент (материальный объект), противоположно маршруту агента, то агент ожидает изменения направления движения конвейера на желаемое в предыдущем блоке. Как только направление изменяется, агент направляется в блок Convey.
В настоящий момент блоки Convey используют реверсивные конвейеры только при автоматическом вычислении маршрутов. Использование реверсивных конвейеров при составлении маршрута через Последовательность конвейеров не поддерживается.
Наличие реверсивных конвейеров в конвейерной сети может влиять на маршрут агента. Рассмотрим возможные сценарии.
Маршрут не включает реверсивный конвейер явно |
|
Реверсивный конвейер указан в свойстве Пройти через конвейеры блока Convey |
|
Начальный конвейер агента — реверсивный |
|
Конечный конвейер агента — реверсивный |
|
Когда агенту необходимо дождаться изменения направления движения конвейера для соответствия маршруту агента, место его ожидания зависит от двух факторов:
- какой элемент соединяет конвейеры
- местоположение агента в момент изменения направления
- Если агент находится на другом конвейере, он будет ожидать перед соединяющим элементом.
- Если агент находится внутри соединяющего элемента, он будет ожидать на внутреннем конвейере элемента.
- Если агент находится на другом конвейере, он будет ожидать перед соединяющим элементом.
-
Если агент находится внутри соединяющего элемента, то фактически он уже находится на реверсивном конвейере: его дальнейшее поведение будет соответствовать правилам движения по таким конвейерам.
Если конвейер изменяет направление в тот момент, когда агент (материальный объект) находится в узле конвейерной сети между однонаправленным и реверсивным конвейерами, агент изменяет ориентацию на противоположную. Это значит, что передний торец агента становится его задним торцом и оказывается на конвейере, направление которого противоположно маршруту агента. В этом случае появляется сообщение об ошибке.
Аналогичное сообщение об ошибке появляется, когда длина агента приводит к тому, что его передний и задний торцы оказываются на разных конвейерах — и конвейеры при этом двигаются в противоположных направлениях.
- Если агент находится на боковом конвейере, он будет ожидать перед элементом Ветвление конвейера.
- Если агент находится на магистральном конвейере, он будет ожидать в той точке, в которой конвейер соединяется с ветвлением.
- Если агент находится внутри ветвления, появляется сообщение об ошибке.
- Изменение направления движения
-
Функция Описание void changeDirection() Изменяет направление движения конвейера. Если в момент вызова функции конвейер замедлялся с целью дальнейшего изменения направления, эта команда отменяется и конвейер начинает ускоряться в новом направлении. ConveyorDirection getDirection() Возвращает текущее направление движения конвейера: CONVEYOR_FORWARD (вперед) или CONVEYOR_BACKWARD (назад). Если в момент вызова функции конвейер замедляется перед дальнейшим изменением направления, все равно возвращает текущее направление. Если конвейер не является реверсивным, всегда возвращает CONVEYOR_FORWARD. void setDirection(ConveyorDirection direction) Задает направление движения конвейера. Для этого с вызовом функции передается значения аргумента direction: CONVEYOR_FORWARD — материальные объекты перемещаются от начальной точки конвейера к конечной точке.
Если значение аргумента direction соответствует текущему направлению конвейера, в результате вызова функции возможны два сценария:
CONVEYOR_BACKWARD — материальные объекты перемещаются от конечной точки конвейера к начальной.- Если конвейер на момент вызова не замедляется перед изменением направления, ничего не происходит. Вызов функции игнорируется.
- Если конвейер на момент вызова замедляется перед изменением направления, предыдущая команда замедления отменяется и конвейер начинает ускоряться в направлении, заданном аргументом direction.
boolean isChangingDirection() Возвращает true, если конвейер замедляется перед изменением направления. В других случаях возвращает false.
Всегда возвращает false, если конвейер не является реверсивным.
Следующая модель демонстрирует, как использовать функциональность реверсивных конвейеров для создания буферного хранилища внутри конвейерной сети:
Демо-модель: Reversible Conveyor Buffer Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.Следующая модель демонстрирует, как создать нестандартную логику управления движением материальных объектов на пересечении конвейеров с помощью реверсивного конвейера:
Демо-модель: Item Flow Control on a Reversible Conveyor Spur Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.-
Как мы можем улучшить эту статью?
-