Сцепляет в один два "касающихся друг друга" состава. Те два состава, которые нужно сцепить вместе, должны поступить в объект TrainCouple через разные входные порты (они могут это сделать в разные моменты времени), и должны при этом "касаться" друг друга своими крайними вагонами. Чтобы удостовериться в том, что составы располагаются достаточно близко друг к другу для сцепления, вы можете, например, переместить один из составов на путь, на котором располагается другой состав, выбрав опцию Проверять свободное место на пути назначения у объекта TrainMoveTo.
Объект TrainCouple содержит две очереди, в которых составы ожидают сцепления (по одной на каждый входной порт). Когда состав поступает в один из входных портов объекта TrainCouple, объект проверяет, нет ли в очереди, соответствующей другому входному порту, другого состава, который мог бы быть сцеплен с только что поступившим. Если да, то составы сцепляются в один общий состав, который и покидает объект TrainCouple. Если нет, то состав остается в очереди порта. Как вы можете видеть, один объект TrainCouple может одновременно и независимо обрабатывать сцепление сразу нескольких составов, находящихся на различных путях.
Сцепление производится путем добавления вагонов состава, поступившего в объект через порт in2, к составу, поступившему в объект через порт in1, так что последний состав остается в модели, в то время как состав, поступивший через порт in2, удаляется. При этом у оставшегося состава сохраняется как направление, так и другие свойства, такие, как скорость и т.д. Местоположение вагонов при сцеплении не меняется.
Сцепление производится за нулевое модельное время, поэтому если вы хотите учесть в модели задержку, связанную с выполнением сцепления, то добавьте в диаграмму процесса объект задержки Delay (сразу после объекта TrainCouple).
- При входе 1
-
Здесь вы можете задать код, который будет выполняться в момент поступления состава в этот объект через порт in1.
Локальная переменная: T1 train – состав, поступивший в этот блок через порт in1
- При входе 2
-
Здесь вы можете задать код, который будет выполняться в момент поступления состава в этот объект через порт in2.
Локальная переменная: T2 train – состав, поступивший в этот блок через порт in2
- При выходе
-
Здесь вы можете задать код, который будет выполняться в тот момент, когда состав покинет объект. Это будет тот же состав, который поступил в объект через порт
in1, к которому будут добавлены вагоны из другого состава.
Локальные переменные:
T1 train1 – состав, поступивший в этот блок через порт in1
T2 train2 – состав, поступивший в этот блок через порт in2 - Специфические
- Тип поезда (1)
-
Тип поезда, поступающего в этот блок через порт in1. В свойствах этого типа агента необходимо указать, что он используется в диаграмме процессов в качестве поезда.
В данном документе на этот тип ссылаются как на: T1
- Тип поезда (2)
-
Тип поезда, поступающего в этот блок через порт in2. В свойствах этого типа агента необходимо указать, что он используется в диаграмме процессов в качестве поезда.
В данном документе на этот тип ссылаются как на: T2
Функция | Описание |
---|---|
int size1() | Возвращает количество составов, поступивших в объект через порт in1 и ожидающих в данный момент в соответствующей очереди поступления в порт in2 другого состава, необходимого для сцепки. |
int size2() | Возвращает количество составов, поступивших в объект через порт in2 и ожидающих в данный момент в соответствующей очереди поступления в порт in1 другого состава, необходимого для сцепки. |
T1 get1(int index) | Возвращает состав, находящийся в очереди первого порта in1 в позиции с заданным индексом (индекс 0 соответствует составу, находящемуся в самом начале очереди). |
T2 get2(int index) | Возвращает состав, находящийся в очереди второго порта in2 в позиции с заданным индексом (индекс 0 соответствует составу, находящемуся в самом начале очереди). |
- in1
- Входной порт 1.
- in2
- Входной порт 2.
- out
- Выходной порт.
-
Как мы можем улучшить эту статью?
-