Шаг 2. Задаем логику

Задайте логику процесса с помощью блоков Железнодорожной библиотеки
  1. Добавьте следующие блоки на диаграмму процесса: TrainSource, TrainMoveTo, TrainDecouple, TrainCouple, TrainDispose. С помощью этих блоков мы зададим логику, согласно которой будет передвигаться наш поезд.

Начните диаграмму с блока TrainSource, который создает поезда, затем добавьте блок TrainMoveTo, расположив его рядом с первым блоком таким образом, чтобы они могли автоматически соединиться. Добавьте оставшиеся блоки на диаграмму процесса, как показано на рисунке ниже.

    

  1. В свойствах блоков TrainSource и trainMoveTo укажите следующее:
                Сначала мы укажем, чтобы поезда появлялись у ж/д точки stopLineEntry каждые 15 минут.
                TrainSource:

                Время между прибытиями: 15 минут

                Кол-во вагонов (включая локомотив): 11

                Точка ж/д пути: stopLineEntry

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

                TrainMoveTo:

                Маршрут: Вычисляется автоматически от текущего пути до пути назначения

                Цель движения: Заданная точка пути

                Точка ж/д пути: stopLineArrival   

                При окончании движения: Затормозить и остановиться 

  1. Мы также добавили блок TrainDecouple, задача которого отцеплять заданное количество вагонов от поступающего поезда. В свойствах блока можно увидеть, что по умолчанию он отцепляет один вагон от поезда, а именно первый (в нашем случае - это локомотив). Локомотив будет покидать блок через нижний порт outDecoupled (мы добавим это соединение на следующем шаге).
  2. Блок TrainCouple нужен для сцепления локомотива и вагонов в один состав.

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

Блок Железнодорожной

Библиотеки

Описание

     Train Source

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

    Train Dispose

Удаляет поезда из модели.

    Train Move To

Моделирует движение поездов. Может рассчитывать маршрут и положение стрелок по ходу движения поезда по маршруту. Поддерживает функции ускорения и торможения.

    Train Couple

Сцепляет два поезда, которые �касаются� друг друга, в один.

    Train Decouple

Расцепляет вагоны поступающего в блок поезда и создает из них новый поезд.

    Train Enter

Помещает поступающего в блок агента-поезд на заданный путь ж/д сети.

    Train Exit

Извлекает поступающий в объект поезд из ж/д сети и передает агента-поезд далее в обычную диаграмму процесса.

    RailSettings

Задает специфические настройки для железнодорожной сети.

 Продолжим рисование диаграммы процесса

Добавьте три блока TrainMoveTo и соедините их, как показано на рисунке, следуя описанным ниже шагам. С помощью этих блоков мы зададим поведение поезда на железнодорожном узле, которое будет включать в себя: отцепление, ход назад, сцепление с вагонами с последующим выталкиванием их на горку.

Начните с присоединения блока TrainMoveTo к порту outDecoupled (который находится внизу) блока TrainDecouple, так как мы будем задавать логику для отсоединенного локомотива.

  1. Добавьте еще один блок TrainMoveTo на диаграмму процесса (trainMoveTo1). Задайте параметры нового блока, согласно которым локомотив направится к stopLineHump и остановится там. 
                Маршрут: Вычисляется автоматически от текущего пути до пути назначения
                Цель движения: Заданная точка пути
                Точка ж/д пути: stopLineHump
                При окончании движения: Затормозить и остановиться
Создайте еще два блока TrainMoveTo (trainMoveTo2, trainMoveTo3) путем Ctrl+перетаскивания (Mac OS: Cmd+перетаскивания) блока, который вы только что редактировали.
  1. Измените свойства блока trainMoveTo2. В данный момент локомотив отцеплен и нам нужно, чтобы он затолкал вагоны на горку, т.е. ему нужно вернуться к stopLineEntry и произвести сцепку с концом поезда. Так как мы не можем его развернуть на рельсах, локомотив поедет назад мимо пути trackArrival, на котором стоят вагоны:
                Направление движения: Назад
                Маршрут не должен содержать: trackArrival
                Точка ж/д пути: stopLineEntry
  1. Обратите внимание на количество соединений, ведущих от блока trainMoveTo3 к блоку trainCouple. Нижний порт блока TrainMoveTo, в отличие от порта out, который находится справа, используется поездами, которые сталкиваются с другими поездами. В нашем случае, сталкивание является сцеплением локомотива, прибывающего к точке ж/д пути stopLineArrival, с вагонами, которые мы предварительно отцепили от этого локомотива. 

Теперь внесите изменения в свойства блока trainMoveTo3, чтобы этот блок направлял поезд из его текущего местоположения к точке stopLineArrival

                Точка ж/д пути: stopLineArrival                                       

Теперь, когда мы смоделировали передвижение локомотив к концу состава, нужно добавить еще один блок TrainMoveTo путем Ctrl+перетаскивания (Mac OS: Cmd+перетаскивания) блока trainMoveTo1. Он будет моделировать процесс толкания вагонов локомотивом к горке, представленной в нашей модели элементом Точка ж/д пути stopLineHump.

  1. Измените свойства блока trainMoveTo4:

                Точка ж/д пути: stopLineHump
                Крейсерская скорость: м/с

  1. Добавьте блок Delay из Библиотеки моделирования процессов, чтобы смоделировать задержку. Измените свойства блока, задав время этой задержки:

           Время задержки: 15 секунд

Мы завершили Шаг 2. Можете запустить модель и посмотреть, как по ж/д путям передвигаются товарные составы.

Если вы увидите ошибку "The car being created must fully be on one track", значит на пути недостаточно места для помещения поезда перед элементом Точка ж/д пути stopLineEntry. В этом случае вам нужно будет увеличить длину пути trackEntry и отодвинуть дальше элемент Точка ж/д пути stopLineEntry от начальной точки ж/д пути.                                    

Локомотив подъезжает к составу, состоящему из вагонов, чтобы сцепиться с ним.

Мы также видим, как локомотив толкает вагоны на горку, после чего останавливается, вагоны отцепляются и сортируются.

Контрольная модель: Сортировочная горка - Шаг 2




 Шаг 1. Создание железнодорожного узла

 Шаг 3. Создаем типы вагонов