Логистическая сеть поездов на основе прерываний
Вступление
- Станции погрузки
- Станции разгрузки
- Депо для твердого груза
- Депо для жидкого груза
- N ко-во поездов
Благодаря новой системе прерываний, разработчики дали нам возможность создавать расписания поездов динамически, по некоторым правилам настраивая условия для запуска поездов. Таким образом наши поезда становятся универсальными и у нас отпадает необходимость настраивать каждый поезд на определенный тип ресурса.
Все станции и депо обмениваются между собой сигналами для корректной работы сети с помощью радаров. Если вы не хотите пускать по всей фабрике ЛЭП с логическими проводами
Поезда
По поездам у нас две логистические сети:
- Поезда с твердым грузом
- Поезда с жидким грузом
У нас тут ванильная игра, а не LTN, соответственно поезда не знают какого типа груз они перевозят и какой длины являются.
И депо не расчитано на настройки длины поезда и тип груза.
Поэтому у нас должно быть как минимум два депо под разные типы груза и поезда одинаковой длины
Ниже представлены настройки прерываний для поездаПо условиям прерывания:
- Поезд должен стоять в депо для получения запроса
- На станцию, где располагается поезд (ДЕПО) должен поступить сигнал с запросом
- Поезд должен быть пустой, иначе он не поедет
- Запрошенная станция погрузки может принять к себе поезд
- Запрошенная станция разгрузки может принять к себе поезд
Если все условия выполняются, поезду назначается временное расписание и он выезжает на запрошенные станции. Для справки:
Для нас он создает название запрашиваемой станции в расписании поезда.
Подробнее про сигналы и прерывание вы можете почитать в других руководствах. Например тут: https://steamcommunity.com/sharedfiles/filedetails/?id=3362592267
Станции запроса
По умолчанию в данном чертеже 6 стальных сундуков, и станция может вызвать максимум 7 поездов, но если мы ограничиваем лимит поездов, то станция отправит запрос ориентируясь на этот лимит.
Данная станция является параметризируемой для любой длины поезда и количества стальных сундуков
Станции снабжения
Станция Погрузки уменьшает сигнал запроса, если к ней едет поезд. Для чего это было сделано можно почитать в разделе работа с сигналами запроса
По умолчанию в данном чертеже 6 стальных сундуков, но на лимит поездов тут влияет заполненность сундуков, а не их количество. Так что ставьте сколько хотите, соедините проводом только.
Лимит поездов выставляется в зависимости от количества груза в сундуках и пользовательского лимита.
Данная станция является универсальной для любой длины поезда. Чертеж параметризированный
Депо
На каждое депо выделяется одна радарная установка, которая обрабатывает и фильтрует запросы.
Важное уточнение: запросы на твердые грузы хранятся в зеленой сети, а запросы на жидкость хранятся в красной. Соответственно чертежи радарных станций отличаются в зависимости от того, какие поезда сидят в депо.
- На каждый радар мы отправляем 1 сигнал "D", чтобы система понимала сколько депо раскидано по фабрике
- Сигналы из общей сети делятся на количество депо и отправляются на поезда через выбирающий комбинатор
- Далее мы считаем остаток от деления на количество депо и одновременно:
- Отправляем этот сигнал на поезда через выбирающий комбинатор
- Запрещаем использовать остаток от деления на других депо
- Отправляем этот сигнал на поезда через выбирающий комбинатор
- Два депо на фабрике и сигнал запроса на доставку 3 медной руды
- По схеме делим 3 медной руды на 2 депо и получаем по 1 сигналу медной руды на каждое депо в системе.
- Нам надо как-то распределить оставшийся 1 сигнал медной руды между депо. На этот случай мы и используем остаток от деления, который по схеме будет попадать на случайное депо и не будет дублироваться.
Пример распределения запросов между двумя депо:
- Арифметический комбинатор отнимает единицу от сигнала запроса, если на станции стоит поезд
- Сигнал из арифметического комбинатора поступает на выбирающий и сравнивающий комбинаторы
- Выбирающий комбинатор играет роль таймера, для того чтобы все поезда в депо не брали лишний запрос. Это предотвращает ошибку, если на запрос выехало больше поездов, чем требуется
- Сравнивающий комбинатор позволяет быстрее обновлять сигнал запроса, так как выбирающий комбинатор убирает сигнал выхода с задержкой. Выход сравнивающего комбинатора идет на станцию с поездом.
- На первую станцию депо подается чистый запрос -> 2 руды;
- Проверяем по светофору, стоит ли сейчас на этой станции поезд, если стоит, то на следующую станцию депо мы отправим -> 2 - 1 руды = 1 руды;
- Если на след. станции нет поезда, то пропускаем сигнал дальше -> 1 руды;
- Таким образом два поезда получат свой сигнал запроса и покинут станцию вне зависимости от их расположения в депо.
- Следующие поезда сигнал запроса не получают, так как он равен 0, соответственно лишние поезда стоят на месте.
В моем варианте в депо поезда еще и заправляются. Если у вас отдельная заправочная станция, то смотрите руководства по прерываниям.
https://steamcommunity.com/sharedfiles/filedetails/?id=3353212873
Работа с сигналами запросов
Также на каждой станции стоит арифметический комбинатор, который умножает сигнал С на -1 и отправляет на выходе ресурс нашего запроса с отрицательным знаком.
Выходной сигнал арифметического комбинатора отправляем в сеть для того, чтобы сигнал нашего запроса уменьшился на то количество поездов, которые этот запрос выполняют.
Или попроще, когда поезд поехал выполнять запрос, он будет удерживать за собой свой сигнал запроса, пока не покинет станцию разгрузки.
В совокупности с обработкой сигналов в депо это устраняет проблему, когда на 1 запрос могло приехать 2 или более поездов на станцию погрузки.
Прочее
- На станции погрузки высчитывается минимальный заполненный сегмент сундуков и я разрешаю отправить поезд только тогда, когда во всех 4 сегментах есть ресурсы хотя бы на 1 поезд
- На станции разгрузки высчитывается максимально заполненный сегмент сундуков и я разрешаю отправить поезд только тогда, когда во всех 4 сегментах есть место для разгрузки хотя бы для 1 поезда
Чертежи
- https://factorioprints.com/view/-OBohahKeCm-VvhBlK59 (новая версия, меньше комбинаторов)
- https://factorioprints.com/view/-OBfkr0mcvPPv0iF7-dz (старая версия)
- У меня тут кастомные параметризированные станции для сухих и жидких грузов и отдельные станции для разной длины поезда с подчетом кол-во предметов по сегментам.
- Чертежи поездов, депо и радарных установок для разных типов грузов.
Конец
Вот и все. Нет не все! Вот еще небольшая информация: все комбинаторы в чертежах подписаны, и если вам трудно разобраться, обращайтесь к описанию комбинаторов.
ТЕПЕРЬ КОНЕЦ. Это было мое первое руководство, поэтому если вам что то не понятно или чертежи работают неправильно, то пишите в комментарии, постараюсь помочь.
Скинуть на пиво: Бусти[boosty.to]
This guide was created by its original author on the Steam Community. Are you the author and want it removed? Request removal.