TrainCouple


Сцепляет в один два "касающихся друг друга" состава. Те два состава, которые нужно сцепить вместе, должны поступить в объект 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

Выходной порт.