Een uitgebreide gids voor het maken van op bot gebaseerde logistieke treinnetwerken in vanilla Factorio.
Introductie
Wat zijn logistieke treinen?
Logistieke treinen bevatten een slim planningssysteem dat elke trein vertelt om materialen naar stations te brengen die hier alleen om vragen als dat nodig is. Dit maakt een bevoorradingsstation beschikbaar om efficiënt en zonder de noodzaak van meerdere treinen te leveren aan een van de meerdere verzoekende stations.
Dit is in tegenstelling tot eenvoudige planning waarbij een trein op een vast pad wordt geplaatst om alleen op bepaalde haltes te leveren. Reguliere treinen die op een station zijn ingesteld om inhoud te ledigen, blijven ook op het station tot het helemaal leeg is. Dit verlaagt de algehele doorvoer en maakt soms het toevoegen van wachtrijen voor een station noodzakelijk. Reguliere treinen hebben ook last van lange laadtijden op een bevoorradingsstation als het station het tempo niet kan bijhouden. Natuurlijk kan een tijdslimiet worden ingesteld, maar dit leidt er weer toe dat de trein continu rijdt, wat extra problemen veroorzaakt.
Met logistieke treinen worden ze automatisch naar een aanvragend station gestuurd met weinig materiaal, leeg hun inhoud zo snel mogelijk en keren onmiddellijk terug naar een beschikbaar bevoorradingsstation.
Toepassingen voor logistieke treinen
Het gebruik van logistieke treinen maakt het uitbreiden van een basis eenvoudiger en kan u op de lange termijn hoofdpijn besparen. Nieuwe mijnbouwposten worden automatisch op het netwerk aangesloten en kunnen overal in het netwerk worden aangevraagd. Reparaties kunnen worden aangevraagd door een afgelegen station, zoals artillerie-buitenposten, en er kan automatisch een trein met materialen worden verzonden.
Waarom bots?
Bots elimineren de behoefte aan riemen, wat op zijn beurt de behoefte aan riemplanning wegneemt en compactere builds mogelijk maakt. Wat nog belangrijker is, is dat bots, in tegenstelling tot riemen, een in wezen onbeperkte doorvoer hebben door middel van snelheidsupgrades en door er meer aan een netwerk toe te voegen.
Kan ik riemen gebruiken?
Helaas zijn sommige kernontwerpmechanismen in deze handleiding afhankelijk van de functie van logistieke kisten die niet werken met riemen.
Disclaimer en vereisten
Deze handleiding bevat geen blauwdrukken. Het doel is om de basisprincipes aan te leren, zodat u die kennis kunt uitbreiden en uw eigen builds kunt maken die aan uw behoeften voldoen. Een zeer basiskennis van logische circuits en hoe ze werken in Factorio is noodzakelijk. Aangenomen wordt dat alle treinen in één richting rijden met dubbele sporen. Ook de spoorsignalisatie wordt niet toegelicht; onthoud gewoon dit basisprincipe voor elk kruispunt: keten ervoor, signaal na. De ontwerpen in deze handleiding zijn mogelijk ook niet de meest efficiënte, of er kunnen fouten in zitten; als er iets is dat beter kan, laat dan hieronder een reactie achter!
Basisuitvoerstation (laadstation).
- In dit voorbeeld wordt een station gebruikt dat alleen ijzeren platen laadt die afkomstig zijn van een smelterij.
- Laten we het station "Iron – Out" noemen. Alle volgende stations die ijzeren platen uitvoeren, krijgen dezelfde naam. We willen een signaal zodra alle kisten van de aanvrager zijn gevuld, waardoor de trein kan stoppen met de optie Stel treinlimiet in. Dit signaaltype kan van alles zijn; we zullen een treinstoppictogram gebruiken om het treinlimietsein weer te geven.
- Dit station maakt gebruik van een 1:4 locomotief:goedwagen configuratie.
- Elke wagon heeft een capaciteit van 40 slots en elke wagon is geladen met 12 verzoekkisten.
- Aangezien ijzeren platen stapelen tot 100, moet elke kist minimaal (40*100)/12 = 334 gevraagde ijzeren platen hebben om een wagen te vullen. Laten we, om het eenvoudig te houden, dit afronden tot 400. Elk van de 48 kisten zou 400 ijzeren platen moeten vragen.
- Alle 48 kisten zijn aangesloten op de ingang van een beslissercombinator. De combinator voert a uit Signaal van 1 if Alles is groter dan of gelijk aan 400*12*4= 19200, of met andere woorden zodra alle aanvragerskisten gevuld zijn. Onthoud dat het seintype hetzelfde moet zijn als het type dat door de treinhalte wordt gedetecteerd.
- Voordat de uitgang van de beslisser-combinator wordt aangesloten op de treinhalte, kunnen 2 optionele functies worden toegevoegd. Ten eerste kan het sein worden vermenigvuldigd met een rekenkundige combinator, die op zijn beurt de totale treinlimiet vermenigvuldigt. Dit wordt zelden gebruikt en voegt de noodzaak toe om een wachtrij te maken voor de stop, dus het wordt op de standaardwaarde gelaten Signaal*1.
- De tweede, meer handige functie is een reeks lichten die groen worden zodra het station klaar is om een trein te accepteren. Beide lichten zijn ingesteld om kleuren te gebruiken en worden alleen ingeschakeld als de Treinlimietsignaal is groter dan of gelijk aan 1. Dit is natuurlijk verbonden met de hoofdsignaaldraad, samen met een constante combinator die a uitvoert Groen Signaal van 1. Het doel van de 4 zwarte signalen voor het kleursignaal is om te voorkomen dat de kleur zichtbaar wordt op de Alt-Mode info op de combinator, wat voor verwarring kan zorgen.
- Ten slotte wordt de dienstregeling van de trein ingesteld op een eenvoudige toestand van volle lading voor het uitgangslaadstation en een lege toestand voor het invoerlosstation.
- Vergeet niet dat het belangrijk is om voldoende roboports naast het station te plaatsen, aangezien het na het laden een drukke verkeerszone zal zijn.
- Hieronder vindt u een referentietabel voor het instellen van de borstverzoeken en beslissercombinator voor 1:4 treinen.
Artikel stapelgrootte | Verzoeken per kist | Beslisser combinator |
---|---|---|
50 | 200 | 9600 |
100 | 400 | 19200 |
200 | 700 | 33600 |
Basisinvoer (los) station
- Dit voorbeeld is een aanvulling op het vorige als een station dat de ijzeren platen aan de ingang van een fabrieksblok uitlaadt voor gebruik
- Laten we het station een naam geven "IJzer - In“. Onthoud dat alle andere stations die om ijzeren platen vragen dezelfde naam moeten krijgen. De treinhalte zal ook de Treinlimiet instellen optie ingeschakeld.
- We willen binnenkomende treinen hun volle lading laten lossen en laten vertrekken. Dit betekent echter dat er een buffer moet zijn voordat het station een andere trein gaat aanvragen. Dit wordt gedaan door een mix van actieve en passieve providerkisten te gebruiken in een 2a:2p:2a ratio, waarbij de items die in actieve kisten worden gelost, onmiddellijk worden gebruikt. Hierdoor blijft een deel van de ijzeren platen achter in de passieve kisten totdat de actieve kisten zijn uitgeput. Alleen wanneer de actieve kisten leeg raken, worden items uit de passieve kisten gehaald, waardoor een nieuw treinverzoek wordt geactiveerd nadat een drempel is overschreden.
-
- Waarom een 2a:2p:2a verhouding van actieve en passieve kisten gebruiken bij het uitladen? Dit voorkomt een onevenwichtigheid van items die in kisten zijn achtergebleven en die problemen veroorzaken bij het uitladen. Dit wordt uitgebreid uitgelegd in Deze video door Nilaus.
- Het hebben van ongefilterde opslagkisten waar dan ook in het netwerk zorgt ervoor dat de ijzeren platen in de actieve kisten erin worden overgeheveld. Als dit het geval is, zal het hebben van meerdere opslagkisten naast het station die voor ijzeren platen filteren ze in plaats daarvan in die kisten consolideren, waarbij 4 kisten meer dan genoeg zijn. Deze kisten worden als eerste gebruikt vanwege de prioriteit van opslagkisten.
- 4000 ijzeren platen zullen relatief gelijkmatig worden gelost in 12 kisten per wagen, waardoor er ongeveer 1333 platen overblijven in de 4 passieve kisten. Met 4 wagons komt de totale buffer op 5333 items.
- Alle 48 kisten zijn aangesloten op de ingang van een beslissercombinator. We willen dat het station een andere trein oproept wanneer de passieve kisten de resterende items beginnen te leveren. De voorwaarde stelt dat a Signaal van 1 wordt verzonden als Alles is kleiner dan of gelijk aan 5000. Merk op dat de Alles-voorwaarde een signaal blijft sturen, zelfs als alle kisten leeg zijn.
- Net als bij het uitvoerstation kan een rekenkundige combinator worden toegevoegd om de treinlimiet te vermenigvuldigen, evenals lichten die aangaan wanneer het station actief is en om een trein vraagt, in dit geval geel.
- Vergeet niet brandstof voor de trein aan te vragen. Omdat het lossen meestal op meer centraal gelegen fabrieksblokken gebeurt, geef ik er de voorkeur aan tankaanvragen alleen bij invoerstations te plaatsen in plaats van bij uitvoerstations.
- Het losstation is een gebied met veel verkeer en het plaatsen van meerdere rijen robotpoorten kan nodig zijn voor grotere fabrieken
- Hieronder vindt u een referentietabel voor het instellen van de beslissercombinator voor 1:4 treinen.
Artikel stapelgrootte Beslisser combinator 50 2500 100 5000 200 10000 - Hieronder vindt u een overzicht van het gehele systeem. Mijnbouw en smelten gebeurt boven het uitvoerstation bovenaan. Eenmaal aangevraagd, worden de ijzeren platen naar het invoerstation gebracht, waar ze worden gebruikt bij de productie van tandwielen
Vloeistofuitvoer- en invoerstations
- Stations voor het transporteren van vloeistoffen volgen dezelfde principes als vaste stoffen, maar zijn relatief eenvoudiger en er zijn geen bots bij betrokken.
- Voor een 1:4 trein kan elke vloeistofwagon 25000*4 = 100000 eenheden vervoeren. De 8 laadtanks kunnen elk ook 25000 eenheden opslaan, met een totale opslag van 200000.
- Elke tank is aangesloten op de beslissercombinator die is ingesteld op 100000, genoeg voor 1 trein. Merk op dat de opslagtanks zich blijven vullen, zelfs als aan de voorwaarde is voldaan, tot een maximum van 2 treinen aan vloeistof, wat als een mooie buffer dient.
- Bij het losstation wordt de beslisser-combinator ingesteld op 50000. Deze zal een trein aanvragen nadat de helft van de geloste vloeistof is gebruikt.
Geavanceerd uitvoerstation
- Dit voorbeeld gebruikt een station dat verschillende items van de hoofdbasis laadt die naar buitenposten worden gebracht die om hervulling vragen.
- We noemen het station "Bevoorrading - Uit“. Het station ondersteunt een 1: 4 trein: de 1e wagon vervoert alleen splijtstof; de 2e heeft alleen logistieke bots; de 3e heeft een mix van constructiebots, reparatiesets, enz. en de 4e is leeg om terugkerende artikelen te ontvangen. Merk op dat het belangrijk is om filters in te stellen op stukgoedwagons zoals de 3e door middel van middelklik.
- Aangezien de 4e wagon leeg is, kan de dienstregeling van de trein niet worden ingesteld om te wachten op volle lading. In plaats daarvan heeft elk item een voorwaardenset.
- De beslissercombinator is ingesteld op Alles = 2. De constante combinator voert a uit Signaal van 1 voor elk type item dat kan worden geladen, en het wordt ingevoerd in de beslissercombinator. Het doel is om te testen of AL deze signalen een output van 2 hebben.
- We kunnen voor elk type item zien dat een beslisser-combinator aan het testen is of er genoeg van dat item klaar is in de kisten. Elk item dat zijn ingestelde hoeveelheid bereikt, zal een uitvoer uitvoeren Signaal van 1, die wordt verzonden naar de Alles = 2 beslissercombinator. Dit signaal van 1 samen met het signaal van 1 voor dat specifieke item geproduceerd door de constante combinator zal optellen tot 2.
- De 1e wagen kan bijvoorbeeld 40 splijtstof bevatten. 6 aanvragerskisten elk verzoek 7 splijtstof, in totaal 42, genoeg om de wagon te vullen. Deze kisten zijn allemaal verbonden met de invoer van de beslissercombinator van het item om te testen of ze klaar zijn. De combiner is ingesteld op geeft een Nuclear Fuel-signaal van 1 af als Nuclear Fuel groter is dan of gelijk is aan 40, anders zal het 0 uitvoeren.
Geavanceerd invoerstation
- In dit voorbeeld wordt het bevoorradingsnetwerk uit de vorige sectie voortgezet.
- Dit station en alle andere heten "Bevoorrading - In“. Merk op dat de treinhalte een extra voorwaarde heeft van Circuitnetwerk verzenden informatie. Dit stuurt het treinlimietsignaal naar de trein, wat in dit geval 0 of 1 is.
- Als we naar de dienstregeling van de trein kijken, willen we dat de trein vertrekt als Treinlimietsignaal = 0 (station vraagt niet meer om) EN 15 seconden inactiviteit. Deze buffer van 15 seconden is bedoeld om fluctuaties in de beschikbare logistieke bots in het netwerk te compenseren, wat later wordt uitgelegd. Een toegevoegd OF 30 seconden inactiviteit toestand dwingt de trein om te vertrekken om gevallen van overtrekken te voorkomen.
- De beslissercombinator is ingesteld op Alles!= 1. De constante combinator voert a uit Signaal van 1 of elk type item dat opnieuw kan worden geleverd, en het wordt ingevoerd in de beslisser-combinator. Het doel is om te testen of EEN van deze signalen een output van 2 heeft.
- We kunnen voor elk type item zien dat een beslisser-combinator test op de drempel van dat item. Elk item dat onder de drempel valt, zal een uitvoeren Signaal van 1, die wordt verzonden naar de Anything != 1 beslissercombinator. Dit signaal van 1 samen met het signaal van 1 voor dat specifieke item geproduceerd door de constante combinator zal optellen tot 2.
- De 1e wagen bevat alleen splijtstof. De conditie van de inserter is ingesteld op inschakelen als <6. De overeenkomstige beslissercombinatie is ingesteld op als Nucleaire Brandstof <1, output Nucleaire Brandstof Signaal van 1. Met andere woorden, bij elke bevoorrading worden ongeveer 6 items gelost en bij minder dan 1 item wordt een nieuwe bevoorrading geactiveerd.
- De 3e wagen bevat een mix van verschillende items die opnieuw moeten worden bevoorraad, dus er worden filterinvoegers gebruikt om ze allemaal uit te laden. Elke invoeger en de bijbehorende beslisser heeft zijn eigen conditie, zoals hierboven uitgelegd. Merk op dat elke opbergkist wordt gefilterd op exclusiviteit. De stapelgrootte van de inserter kan ook worden overschreven voor gelijkmatiger laden. De extra inserter die reparatiesets naar de roboport verplaatst, is volledig optioneel.
- In deze geïsoleerde weergave van het circuit dat alle items behandelt, behalve bots, merk op dat geen van de inserters en combinators is verbonden met hun overeenkomstige kisten. Hoe wordt het aantal items gelezen? In het robotpoortmenu, de Lees de inhoud van het logistieke netwerk optie is ingeschakeld (zie afbeelding in volgende sectie). Deze roboport leest dus de artikelen in het hele logistieke netwerk. Met behulp van deze roboport sturen we de uitvoer naar alle invoegers en de beslisser-combinators voor elk item. Bij deze methode moeten de kisten niet op het circuit zijn aangesloten, anders wordt het aantal items verdubbeld.
- De 4e wagen accepteert verschillende items die klaar zijn om teruggebracht te worden. In dit voorbeeld worden de 2 kisten gefilterd op elektrische mijnwerkers en snelheidsmodules die niet langer nodig zijn bij een mijnbuitenpost.
Geavanceerd invoerstation - Bots
- Een uitleg over hoe bots worden beheerd, verdient een eigen sectie. De complexiteit ligt in het automatisch bepalen van het aantal benodigde logistieke bots in een bepaald netwerk, wat wordt gedaan door het fluctuerende aantal resterende beschikbare logistieke bots te bufferen.
- In de robothaven Robotstatistieken lezen is ingeschakeld. We hebben aangewezen signalen L en C voor respectievelijk de TOTAL logistieke en constructiebots in het systeem. X en Y zal worden aangewezen voor respectievelijk de BESCHIKBARE logistieke en constructiebots.
- Het beheer van de bouwbots is eenvoudig. Hierboven is een weergave van het geïsoleerde circuit. In dit netwerk willen we in totaal 50 bots leveren, met een drempel voor hervullingen op 25. Dit wordt gedaan zoals uitgelegd in de vorige sectie. Merk op dat de plaatsing van de roboport een ketting van 2 stapelfilterinserters vereist, aangezien het gebruik van een lange inserter te traag is. De stapelgrootte wordt overschreven voor gelijkmatig laden.
- Laten we voor logistieke bots zeggen dat we een bereik van 50-100 beschikbare bots in het netwerk willen behouden als buffer. In een typisch netwerk heeft het aantal beschikbare logistieke bots de neiging te fluctueren en kan tijdens piekactiviteit dalen tot 0. Omdat we niet elke keer een nieuwe trein willen aanvragen als beschikbare bots een fractie van een seconde onder de drempelwaarde komen, moeten we de detectietijd bufferen. 30 seconden zou een goede hoeveelheid moeten zijn om te bepalen of er meer bots nodig zijn.
- Hierboven ziet u een uitgebreide weergave van het geïsoleerde circuit om het gemakkelijker te kunnen bekijken. Omdat we een bovengrens van 100 beschikbare bots willen, zijn de inserters ingesteld op inschakelen als X<100. Merk op dat in dit geval de invoegers geen filterinvoegers zijn aangezien de 2e wagon van de trein alleen logistieke bots vervoerde.
- Wanneer de beschikbare bots onder de 50 komen, willen we een signaal afgeven. We zullen dit benoemen Signaal A, die naar de invoer van een rekenkundige combinator wordt gestuurd met de voorwaarde van A*1, uitgang A die als klok zal dienen. Belangrijk om op te merken is dat de uitvoer van deze rekenkundige combinator weer is aangesloten op de invoer.
- Hier is een uitleg van hoe het klokcircuit werkt: Signaal A is aanvankelijk een waarde van 1, dus 1*1 = 1. Signaal A wordt uitgevoerd en teruggelust in de combinator naast het origineel Signaal A van 1, resulterend in 2*1 = 2. Daarom zal signaal A voor elke speltik met 1 toenemen.
- Een veelgemaakte fout is om A+1 te gebruiken in plaats van A*1. Het gebruik van A+1 zal resulteren in 1+1 = 2. En in de volgende lus zal het 3+1 = 4 zijn. Zoals we kunnen zien, wordt dit signaal verhoogd met 2 in plaats van 1 per speltik.
- Signaal A begint op te tellen zodra beschikbare bots onder de drempel komen. We voltooien het circuit door te testen of Signaal A is groter dan 1800, dan uitvoer Logistiek Bot Signaal van 1. Aangezien een game die draait op 60 UPS 60 tikken per IRL-seconde heeft, is 1800 het equivalent van 30 seconden, wat de buffer is die we hebben gekozen.
- Vergeet ten slotte niet om het signaal van het logistieke botitem uit te voeren naar de treinlimietcombinator.
Preventie van deadlock
Logistieke treinen rijden op deze manier:
- Een lege trein zoekt en gaat naar het dichtstbijzijnde beschikbare uitvoerstation van het materiaaltype waarvoor het bestemd is.
- De trein wordt geladen op het uitvoerstation en parkeert op het station omdat geen invoerstation erom vraagt, of zoekt en gaat naar het dichtstbijzijnde beschikbare invoerstation.
- De trein lost bij het invoerstation en zoekt en gaat weer naar het dichtstbijzijnde beschikbare uitvoerstation OF kan geen beschikbaar uitvoerstation vinden en stopt bij het invoerstation.
- We kunnen hier meteen het probleem zien dat tot een impasse zal leiden. Als er niet genoeg beschikbare uitvoerstations zijn die het aangewezen materiaal leveren, kunnen de treinen er niet naar terugkeren.
- De oplossing voor dit probleem is eenvoudig: zorg altijd voor meer aanbod dan vraag! Zorg er bijvoorbeeld voor dat uw mijnbouwactiviteiten gelijke tred houden met het verbruik. Het toevoegen van een extra buitenpost voor ruwe olie kan voldoende zijn om een enkele trein tussen de twee te laten wisselen als er nog geen enkele beschikbaar is. Denk er ook aan om nooit meer treinen te hebben dan uitvoerstations voor een bepaald type materiaal.
Dat is alles wat we hiervoor vandaag delen Factorio gids. Deze handleiding is oorspronkelijk gemaakt en geschreven door Mozartisjok. Als we deze handleiding niet kunnen bijwerken, kunt u de laatste update vinden door deze te volgen link.