Станция обработки

Элемент разметки пространства Станция обработки позволяет графически отобразить станцию обработки на конвейере. Установленная станция обработки не разбивает конвейер на две части.

Станция обработки может одновременно обрабатывать несколько материальных объектов. Максимальное количество материальных объектов, которые могут находиться на станции одновременно, задается параметром Вместимость.

У станции есть два режима обработки:

Вместимость станции в ходе выполнения модели

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

Поведение станции будет отличаться в зависимости от того, какой у нее режим обработки и в какой именно момент вызывается функция setCapacity().

Ecли сделать вместимость станции равной нулю, она перестанет принимать на обработку новых агентов и заблокирует работу конвейера.

Режим обработки

Я хочу уменьшить вместимость

Я хочу увеличить вместимость

Обработка начинается при полной загрузке станции

  • Если станция обрабатывает материальные объекты, то обработка завершится в нормальном режиме. В следующий раз станция начнет обработку уже после того, как наберет нужное количество материальных объектов в соответствии с новым значением вместимости.
  • Если станция еще не успела набрать нужное количество материальных объектов в соответствии с прежним значением вместимости или их обработка еще не началась, то станция начнет обработку, а AnyLogic покажет сообщение с предупреждением. При этом, если в момент начала обработки на станции ровно столько объектов, сколько указано в новом значении вместимости, сообщение с предупреждением не появится.
  • Если на станции нет материальных объектов, она будет ждать, пока не наберется столько объектов, сколько указано в новом значении вместимости. "Лишние" материальные объекты будут ожидать у входа на станцию, пока та не освободится.
  • Если на станции меньше материальных объектов, чем указано в новом значении вместимости, станция будет ждать, пока не наберется нужное количество объектов, и только после этого начнет их обработку.
  • Если на станции меньше материальных объектов, чем указано в новом значении вместимости, и обработка уже началась, то AnyLogic покажет сообщение с предупреждением, но обработка завершится в нормальном режиме. В следующий раз станция начнет обработку уже после того, как наберет нужное количество материальных объектов в соответствии с новым значением вместимости.
  • Если на станции нет материальных объектов или их обработка еще не началась, станция будет ждать, пока не наберется столько материальных объектов, сколько указано в новом значении вместимости, и только после этого начнет их обработку.

Обработка начинается, когда агент заходит на станцию

  • Если на станции сейчас больше необработанных материальных объектов, чем указано в новом значении вместимости, то новые объекты не смогут войти на станцию, пока количество необработанных объектов не достигнет нового значения вместимости.
  • Если на станции сейчас меньше материальных объектов, чем указано в новом значении вместимости, станция будет принимать объекты до тех пор, пока не достигнет этого значения.
  • Материальные объекты, которые ожидают у входа на станцию, будут заходить на станцию до тех пор, пока количество необработанных объектов внутри не будет соответствовать новому значению вместимости.

Используйте параметр Задержка, чтобы задать время, в течение которого станция должна обработать нужное количество материальных объектов.

Примечание:
Конвейер ожидает, что объекты до и после станции обработки будут одного типа.

Чтобы создать станцию обработки

  1. Перетащите элемент Станция обработки из секции Разметка пространства палитры Библиотека производственных систем на графическую диаграмму, содержащую конвейер.

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

  2. Поместите курсор над конвейером в том месте, куда вы хотите установить элемент. Станция обработки прикрепится к конвейеру. Поместите остановку в нужном вам месте, отпустив левую кнопку мыши. Местоположение станции обработки можно позже изменить, перетаскивая ее мышью.
  3. Длину станции обработки можно изменить, перемещая квадратную метку-манипулятор на краю элемента, или указав значение в свойстве элемента Длина. Ширина станции обработки изменяется автоматически при изменении ширины конвейера.

Чтобы изменить местоположение станции обработки

  1. Щелкните левой кнопкой мыши по станции обработки, которую необходимо переместить.
  2. Перетащите станцию обработки в нужное место на текущем конвейере (станцию обработки нельзя переместить на другой конвейер). Изменить местоположение станции обработки также можно, указав необходимое значение в поле параметра Смещение от начала конвейера.

Свойства

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

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

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

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

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

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

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

Тип задержки – Определяет способ задания времени задержки:
Определенное время – Обработка агента заканчивается, когда истекает заданное время.
До вызова функции stopProcess() – Пользователь завершает обработку всех агентов и освобождает их вызовом функции stopProcess(). Если Обработка начинается, когда агент заходит на станцию, то используйте функцию stopProcess(Agent agent).

Задержка [динамический]
[Параметр виден, если Тип задержки: Определенное время] Выражение, вычисляющее время задержки для материального объекта. К этому материальному объекту можно обратиться через локальную переменную agent.

Вместимость – Максимальное количество агентов, которое может находиться на станции одновременно. Вы можете менять вместимость станции в ходе выполнения модели.

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

Загрузка – [Параметр виден, если Обработка: начинается при полной загрузке станции] Определяет режим загрузки новых материальных объектов на станцию обработки:
идет одновременно с выгрузкой – Загрузка объекта может производиться одновременно с выгрузкой другого, уже обработанного материального объекта, по мере освобождения места в станции обработки.
начинается после окончания выгрузки – Загрузка нового материального объекта начнется только после того, как закончится обработка находящихся в станции объектов и они полностью покинут пределы станции обработки.

Ресурсы
Примечание:

Если Обработка начинается, когда агент заходит на станцию, ресурсы используются для всей станции целиком, а не для отдельных материальных объектов. Таким образом все динамические параметры и обратные вызовы функций с аргументами agent и allAgents, которые имеют отношение к ресурсам, будут вызываться только для тех материальных объектов, которые выводят станцию из режима IDLE.
Если станция уже активна, т.е. на ней идет обработка материальных объектов, то функции такого вида вызываться не будут. Также в этом режиме обработки список, передаваемый в качестве аргумента allAgents, будет содержать только одного агента – первого агента, заходящего на станцию, с которого начинается процесс обработки.

Использовать ресурсы – Определяет, будет ли станция обработки использовать ресурсы.

Захватить – Здесь вы можете выбрать, требуются ли для сборки ресурсы одного типа или ресурсы разных типов ((альтернативный) набор ресурсов). Более подробное описание работы с ресурсами вы можете найти в секции Использование ресурсов.

Набор ресурсов – [Параметр виден, если Захватить: (альтернативный) набор ресурсов] Здесь вы можете задать наборы ресурсов, требуемые для обработки материальных объектов. Вы можете добавить несколько наборов с помощью кнопки Добавить список. Ресурсы набираются согласно их доступности. Более подробное описание работы с ресурсами вы можете найти в секции Использование ресурсов.

Тип ресурсов – [Параметр виден, если Захватить: ресурсы одного типа] Здесь вы можете указать блок ResourcePool, задающий ресурсы, требуемые для обработки материальных объектов. Более подробное описание работы с ресурсами вы можете найти в секции Использование ресурсов.

Количество ресурсов – [Параметр виден, если Захватить: ресурсы одного типа] Выражение, возвращающее требуемое количество ресурсов для агента.

Пересылать захваченные ресурсы – Если опция выбрана (true), захваченные ресурсы будут направлены в заданное местоположение. К материальному объекту здесь можно обратиться через локальную переменную agent.

Место назначения – [Параметр виден, если выбрана опция Пересылать захваченные ресурсы] Определяет куда будут направлены ресурсы:
Узел сети – в указанный узел сети.
Аттрактор – в указанный аттрактор.
Точка – в точку с указанными координатами.

Задать выбор ресурса – Если эта опция выбрана, вы можете указать для выполнения операции определенные ресурсы (используя параметр Условие выбора ресурса, расположенный ниже).
Синтаксис: boolean customizeResourceChoice
Значение по умолчанию: false

Условие выбора ресурса [динамический]
[Параметр виден, если выбрана опция Задать выбор ресурса] Здесь вы можете указать булево выражение, которое будет вычисляться, чтобы найти требуемые ресурсы для выполнения операции. Если нет доступных ресурсов, подходящих под условие (условие возвращает false, станция будет ожидать первый доступный ресурс, для которого выполняется условие.
Обычно вы задаете какой-либо параметр внутри типа агента (например, myAssistant, помещаете туда ссылку на ресурс, когда он начинает работать с агентом (agent.myAssistant=unit), и затем указываете здесь условие agent.myAssistant==unit, позволяющее только этому конкретному ресурсу продолжать работу с этим конкретным агентом.
Тип значения: boolean
Значение по умолчанию: true
Локальные переменные:
T agent – материальный объект.
Agent unit – ресурс.
List allAgents – список материальных объектов.

Действия

Во всех действиях к материальному объекту можно обратиться через локальную переменную agent.

При старте процесса – Здесь вы можете задать код, который будет выполняться каждый раз, когда станция начинает обработку материального объекта, если станция обрабатывает объекты по одному. Если станция накапливает какое-то заданное количество материальных объектов и потом обрабатывает их одновременно, код будет выполняться только в тот момент, когда станция начнет обработку всей партии.

При окончании процесса – Здесь вы можете задать код, который будет выполняться каждый раз, когда станция заканчивает обработку материального объекта, если станция обрабатывает объекты по одному. Если станция накапливает какое-то заданное количество материальных объектов и потом обрабатывает их одновременно, код будет выполняться только в тот момент, когда станция закончит обработку всей партии.

При входе переднего торца – Здесь вы можете задать код, который будет выполняться, когда передний торец материального объекта поступает на станцию обработки.

При входе заднего торца – Здесь вы можете задать код, который будет выполняться, когда задний торец материального объекта поступает на станцию обработки.

При выходе переднего торца – Здесь вы можете задать код, который будет выполняться, когда передний торец материального объекта покидает станцию обработки.

При выходе заднего торца – Здесь вы можете задать код, который будет выполняться, когда задний торец материального объекта покидает станцию обработки.

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

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

Внешний вид

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

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

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

Смещение от начала конвейера – Расстояние от начальной точки конвейера до конечной точки станции обработки, в пикселях.

Длина – Определяет длину станции обработки в заданных единицах измерения длины. По умолчанию длина остановки составляет 4 метра.

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

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

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

Функции

Состояние

Функция

Описание

boolean isProcessing()

Возвращает true, если станция обработки обрабатывает агентов (материальные объекты), в противном случае возвращает false.

boolean isProcessing(Agent agent)

Возвращает true, если станция обработки обрабатывает данного агента (материальный объект), в противном случае возвращает false. Также возвращает false, если станция на данный момент в состоянии поломки или ремонта и вообще не обрабатывает агентов.

Параметр:
agent – материальный объект

void stopProcess()

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

void stopProcess(Agent agent)

Останавливает обработку данного агента (материального объекта) на станции. Данный агент покидает станцию по вызову этой функции. При этом конвейер не прекращает движение, и обработка других агентов, находящихся на станции, идет в обычном режиме.
Эту функцию можно вызвать, только если Обработка начинается, когда агент заходит на станцию. Если станция работает в другом режиме обработки, пользуйтесь функцией stopProcess().

Параметр:
agent – материальный объект

boolean isFailed()

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

boolean fail()

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

boolean repair()

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


Агенты (материальные объекты)

Функция

Описание

T getAgent(int index)

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

Параметр:
index – индекс агента на станции обработки

List<t> getAgents()

Возвращает список агентов (материальных объектов), находящихся в данный момент на станции обработки, если таких нет, то возвращает null.

boolean contains(Agent agent)

Возвращает true, если заданный материальный объект agent находится в данный момент на станции обработки, в противном случае возвращает false.

Параметр:
agent – агент

boolean removeAgent(Agent agent)

Удаляет заданного агента со станции обработки.

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

Параметр:
agent – агент, который должен быть удален со станции обработки


Ресурсы

Функция

Описание

boolean isUseResources()

Возвращает true, если станция обработки использует ресурсы, в противном случае возвращает false.

boolean isSeizeFromOnePool()

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

Object getResourceDestinationType()

Возвращает место назначения, в которое направлены ресурсы.

Допустимые значения:
Seize.DestinationType.DEST_NODE – узел сети, в который направлены ресурсы.
Seize.DestinationType.DEST_ATTRACTOR – аттрактор, к которому направлены ресурсы.
Seize.DestinationType.DEST_XYZ – координаты точки, в которую направлены ресурсы.


Вместимость

Функция

Описание

int getCapacity()

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

void setCapacity(int capacity)

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

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

Параметр:
capacity – количество агентов (материальных объектов).

int size()

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


Режим загрузки

Функция

Описание

void setLoadingMode(ConveyorSimpleStationLoadingMode mode)

Задает режим загрузки материальных объектов в станцию обработки.

Параметр:
mode – новый режим загрузки
Допустимые значения:
SIMPLE_STATION_LOADING_MODE_SIMULTANEOUS_WITH_UNLOADING – новые материальные объекты будут загружаться в станцию обработки по мере освобождения в ней свободного места при выгрузке обработанных объектов
SIMPLE_STATION_LOADING_MODE_AFTER_UNLOADING – новые материальные объекты начнут загрузку только после того, как находящиеся в станции объекты будут полностью обработаны и покинут ее пределы.

ConveyorSimpleStationLoadingMode getLoadingMode()

Возвращает текущий режим загрузки материальных объектов в станцию обработки.

Допустимые значения:
SIMPLE_STATION_LOADING_MODE_SIMULTANEOUS_WITH_UNLOADING – новые материальные объекты будут загружаться в станцию обработки по мере освобождения в ней свободного места при выгрузке обработанных объектов
SIMPLE_STATION_LOADING_MODE_AFTER_UNLOADING – новые материальные объекты начнут загрузку только после того, как находящиеся в станции объекты будут полностью обработаны и покинут ее пределы.


Сеть конвейеров

Функция

Описание

int getConveyor()

Возвращает конвейер, на котором находится станция обработки.

double getOffset()

Возвращает расстояние от начальной точки конвейера.

ConveyorNetwork getNetwork()

Возвращает сеть, которой принадлежит станция обработки.


Уровень

Функция

Описание

Level getLevel()

Возвращает уровень, на котором располагается эта станция.


Видимость

Function

Описание

boolean isVisible()

Проверяет, отображается ли станция обработки на анимации во время выполнения модели.

Если функция возвращает true – значит, станция обработки отображается, если false – нет.

void setVisible(boolean v)

Задает видимость станции обработки.

Параметр:
v – видимость. Если значение v равно true, то фигура будет отображаться, если равно false – то нет.


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

Функция

Описание

double length(LengthUnits units)

Возвращает длину станции обработки, вычисленную в 3D пространстве.

Параметр:
unitsконстанта, задающая единицу измерения длины

ConveyorSimpleStationDelayType getDelayType()

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

Допустимые значения:
CONVEYOR_SIMPLE_STATION_DELAY_TYPE_MANUAL – пользователь завершает обработку агента и освобождает его вызовом функции stopProcess().
CONVEYOR_SIMPLE_STATION_DELAY_TYPE_TIMEOUT – обработка агента заканчивается, когда истекает заданное время.


Удаление

Функция

Описание

void remove()

Удаляет станцию обработки из презентации. Если станция не является частью презентации, функция не выполняет ничего. Обратите внимание, что удаление из презентации не обязательно подразумевает удаление из логики модели, поскольку логические сети и маршруты могли быть заданы еще до удаления элемента и не исчезают.


Использование ресурсов

Обработка материальных объектов может потребовать участия ресурсов. В этом случае необходимо отметить параметр Использовать ресурсы и указать ресурсы, которые стоит использовать.


См. также

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

Конвейер

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

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