
Сцепляет в один два "касающихся друг друга" состава. Те два состава, которые нужно сцепить вместе, должны поступить в объект TrainCouple через разные входные порты (они могут это сделать в разные моменты времени), и должны при этом "касаться" друг друга своими крайними вагонами. Чтобы удостовериться в том, что составы располагаются достаточно близко друг к другу для сцепления, Вы можете, например, переместить один из составов на путь, на котором располагается другой состав, выбрав опцию Проверять свободное место на пути назначения у объекта TrainMoveTo.
Объект TrainCouple содержит две очереди, в которых составы ожидают сцепления (по одной на каждый входной порт). Когда состав поступает в один из входных портов объекта TrainCouple, объект проверяет, нет ли в очереди, соответствующей другому входному порту, другого состава, который мог бы быть сцеплен с только что поступившим. Если да, то составы сцепляются в один общий состав, который и покидает объект TrainCouple. Если нет, то состав остается в очереди порта. Как Вы можете видеть, один объект TrainCouple может одновременно и независимо обрабатывать сцепление сразу нескольких составов, находящихся на различных путях.
Сцепление производится путем добавления вагонов состава, поступившего в объект через порт in2, к составу, поступившему в объект через порт in1, так что последний состав остается в модели, в то время как состав, поступивший через порт in2, удаляется. При этом у оставшегося состава сохраняется как направление, так и другие свойства, такие, как скорость и т.д. Местоположение вагонов при сцеплении не меняется.
Сцепление производится за нулевое модельное время, поэтому если Вы хотите учесть в модели задержку, связанную с выполнением сцепления, то добавьте в диаграмму процесса объект задержки Delay (сразу после объекта TrainCouple).
Входной порт 1.
Входной порт 2.
Выходной порт.
int size1() - Возвращает количество составов, поступивших в объект через порт in1 и ожидающих в данный момент в соответствующей очереди поступления в порт in2 другого состава, необходимого для сцепки.
int size2() - Возвращает количество составов, поступивших в объект через порт in2 и ожидающих в данный момент в соответствующей очереди поступления в порт in1 другого состава, необходимого для сцепки.
T get1( int index ) - Возвращает состав, находящийся в очереди первого порта in1 в позиции с заданным индексом (индекс 0 соответствует составу, находящемуся в самом начале очереди).
T get2( int index ) - Возвращает состав, находящийся в очереди второго порта in2 в позиции с заданным индексом (индекс 0 соответствует составу, находящемуся в самом начале очереди).