In other languages: Deutsch Español 日本語 Русский 简体中文

Tutorial:Circuit network cookbook: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
m (→‎Misc: more compact)
(Added multiple item assembler circuit diagram)
 
(35 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{cleanup|Combinator GUI and circuit network changed in 2.0}}
''This is a '''beginners''' tutorial. See also the [[Circuit network]] page for an overview over the circuit network and the [[Tutorial:Combinator tutorial]] for an advanced tutorial.''
{{Languages}}
{{Languages}}
== Foreword ==  
== Foreword ==  
This page provides examples of simple circuit network designs and some not so simple designs that others can use, combine and modify. They are designed to be as easy to understand as possible.  To see the settings of combinators without opening them, the option "Show combinator settings in "Alt-mode"" in the Interface/Alt-mode settings has to be checked and "Alt-mode" has to be turned on.
This page provides examples of simple circuit network designs and some not so simple designs that others can use, combine and modify. They are designed to be as easy to understand as possible.  To see the settings of combinators without opening them, the option "Show combinator settings in "Alt-mode"" in the Interface/Alt-mode settings has to be checked and "Alt-mode" has to be turned on.


== Lights ==
== Lights ==
[[File:LightWiredToChest.png|right]]
[[File:LightWiredToChest.png|border|left|430px]]


=== Lamp showing chest content condition ===
=== Lamp showing chest content condition ===
Line 12: Line 14:


==== Setting up circuit connection ====
==== Setting up circuit connection ====
<div style="margin-left:440px;">
* The lamp is connected to the chest.
* The lamp is connected to the chest.
* The lamp is set to light if the chest contain less than 10 empty barrels.
* The lamp is set to light if the chest contain less than 10 empty barrels.
Line 27: Line 30:


The drawback with this scenario is that the lamp has a white light , and is therefore difficult to differentiate from an ordinary lamp at night.
The drawback with this scenario is that the lamp has a white light , and is therefore difficult to differentiate from an ordinary lamp at night.
</div>
{{clear}}
{{clear}}


[[File:ConditionalLights.png|left|440px]]
[[File:ConditionalLights.png|border|left|430px]]


=== Conditional Lights ===
=== Conditional Lights ===
<div style="margin-left:440px;">
* In this circuit we connect a series of [[lamp]]s to a [[storage tank]].
* In this circuit we connect a series of [[lamp]]s to a [[storage tank]].
* By setting different conditions on each lamp we can build an indicator strip.  
* By setting different conditions on each lamp we can build an indicator strip.  
Line 38: Line 43:


In this setup you can connect the storage tank to the lamps directly.
In this setup you can connect the storage tank to the lamps directly.
</div>
{{clear}}
{{clear}}


[[File:ColoredLights.png|left|440px]]
[[File:ColoredLights.png|border|left|430px]]


=== Colored Lights ===
=== Colored Lights ===
* To light a [[lamp]] with a color rather than white, you need an intermediate device like an [[arithmetic combinator]] that can send a color signal.   
<div style="margin-left:440px;">
Instead of directly connect the the [[lamp]] and the [[Storage tank]] you need:<BR>
To light a [[lamp]] with a color rather than white, you need an intermediate device like an [[arithmetic combinator]] that can send a color signal.   
1 Add the arithmetic combinator.<BR>
Instead of directly connect the [[lamp]] and the [[Storage tank]] you need:
2 Connect the [[storage tank]] with the input of the  arithmetic combinator.<BR>
# Add the arithmetic combinator.
3 Connect the  output of the [[arithmetic combinator]] with the lamp.<BR>
# Connect the [[storage tank]] with the input of the  arithmetic combinator.
4 Set up the arithmetic combinator:<BR>
# Connect the  output of the [[arithmetic combinator]] with the lamp.
4.1 Setting the input to petroleum Gas + 0 (the constant 0 not the signal 0)<BR>
# Set up the arithmetic combinator:
4.2 Set the output to the pink signal (on the bottom row of the last tab of signals.)<BR>
## Setting the input to petroleum Gas + 0 (the constant 0 not the signal 0)
5 Set up the [[lamp]]:<BR>
## Set the output to the pink signal (on the bottom row of the last tab of signals.)
5.1 Select the "Use colors" check box on the lamp.<BR>
# Set up the [[lamp]]:
5.2 Set the condition to the pink signal, and what value you want (i.e. > 100)<BR>
## Select the "Use colors" check box on the lamp.
## Set the condition to the pink signal, and what value you want (i.e. > 100)
</div>
{{clear}}
{{clear}}


== Oil Setups ==
== Oil Setups ==
Balancing the production of petroleum gas, light oil and heavy oil is one of the most important use cases of the circuit network.
Balancing the production of petroleum gas, light oil and heavy oil is one of the most important use cases of the circuit network.
[[File:LgtOilCracking.png|left|440px]]
 
[[File:LgtOilCracking.png|border|left|430px]]


=== Light Oil Cracking ===
=== Light Oil Cracking ===
<div style="margin-left:440px;">
* This circuit provides balanced light oil and petroleum gas production by cracking excess light oil into gas.  
* This circuit provides balanced light oil and petroleum gas production by cracking excess light oil into gas.  
* The [[pump]] is connected to the [[storage tank]] by a [[red wire]].  
* The [[pump]] is connected to the [[storage tank]] by a [[red wire]].  
* The pump has an enabled condition set to '''Light Oil > 20000'''.
* The pump has an enabled condition set to '''Light Oil > 20000'''.
</div>
{{clear}}
{{clear}}


[[File:HvyOilCracking.png|left|440px]]
[[File:HvyOilCracking.png|border|left|430px]]


=== Heavy Oil Cracking ===
=== Heavy Oil Cracking ===
<div style="margin-left:440px;">
* This circuit extends on the previous circuit by adding optional heavy oil cracking to provide lubricant etc.
* This circuit extends on the previous circuit by adding optional heavy oil cracking to provide lubricant etc.
* The pump has an enabled condition set to '''Heavy oil > 20000''' .
* The pump has an enabled condition set to '''Heavy oil > 20000'''.
</div>
{{clear}}
{{clear}}


Line 76: Line 89:
This setup compares different fluid levels to each other instead of checking fixed values. It offers some guarantees such as petroleum gas being produced when you have light oil to spare, and light oil not being cracked when you have plenty of petroleum gas, and similar rules for heavy oil cracking and lubricant production.  
This setup compares different fluid levels to each other instead of checking fixed values. It offers some guarantees such as petroleum gas being produced when you have light oil to spare, and light oil not being cracked when you have plenty of petroleum gas, and similar rules for heavy oil cracking and lubricant production.  


[[File:oil-single-cct.png|left|440px]]
[[File:oil-single-cct.png|border|left|430px]]


<div style="margin-left:440px;">
It takes 4 steps:
It takes 4 steps:


1. Have a fluid tank for heavy oil, light oil, petroleum gas, and lubricant. For each fluid, make sure to connect the tank via pipes to every location where the fluid is being produced or consumed.
# Have a fluid tank for heavy oil, light oil, petroleum gas, and lubricant. For each fluid, make sure to connect the tank via pipes to every location where the fluid is being produced or consumed.
 
# For each chemical plant (or each row of them, if you use rows) add a pump to the non-water fluid input pipe to make it possible to block the flow. Note: Alternatively, the blocking pumps could be added to the chemical plant output pipes, but there is no need to add pumps to both inputs and outputs.
2. For each chemical plant (or each row of them, if you use rows) add a pump to the non-water fluid input pipe to make it possible to block the flow. Note: Alternatively, the blocking pumps could be added to the chemical plant output pipes, but there is no need to add pumps to both inputs and outputs.
# Connect every pump and every fluid tank to a single circuit network of red (or green) wire. The resulting circuit network will know about the fluid level in every storage tank and pass this information to every pump.
 
# For each connected pump set the circuit “enable condition” to "[input fluid] > [output fluid]" , for its respective chemical plant recipe. E.g. set "heavy oil > light oil" for the heavy oil cracking input pump, set "heavy oil > lubricant" for the lubricant production input pump, and set "light oil > petroleum gas" for the light oil cracking input pump.
3. Connect every pump and every fluid tank to a single circuit network of red (or green) wire. The resulting circuit network will know about the fluid level in every storage tank and pass this information to every pump.
 
4. For each connected pump set the circuit “enable condition” to "[input fluid] > [output fluid]" , for its respective chemical plant recipe. E.g. set "heavy oil > light oil" for the heavy oil cracking input pump, set "heavy oil > lubricant" for the lubricant production input pump, and set "light oil > petroleum gas" for the light oil cracking input pump.


Done! Now all the pumps will move to equalize the fluid levels to each other. This will prevent fluid system deadlocks where you have plenty of one fluid but you are unable to make any of the other.
Done! Now all the pumps will move to equalize the fluid levels to each other. This will prevent fluid system deadlocks where you have plenty of one fluid but you are unable to make any of the other.
</div>
{{clear}}
{{clear}}


Line 140: Line 152:


== Inserters ==
== Inserters ==
[[File:LimitItemsPlacedIntoAChest.png|left|400x400px]]
[[File:LimitItemsPlacedIntoAChest.png|border|left|430px]]
 
=== Limit items placed into a chest ===
=== Limit items placed into a chest ===
<div style="margin-left:440px;">
*  The [[inserter]] is connected to the [[wooden chest]] using a [[red wire]].  
*  The [[inserter]] is connected to the [[wooden chest]] using a [[red wire]].  
*  The inserter's enabled condition is '''Advanced Circuit < 10'''.  
*  The inserter's enabled condition is '''Advanced Circuit < 10'''.  
Line 147: Line 161:
*  This effect can be even greater with Stack inserters because of their large carrying capacity.  
*  This effect can be even greater with Stack inserters because of their large carrying capacity.  
*  This technique still gives far greater control than limiting the inventory on the chest.
*  This technique still gives far greater control than limiting the inventory on the chest.
</div>
{{clear}}
{{clear}}


[[File:BalancedChestInsert.png|left|400x400px]]
[[File:BalancedChestInsert.png|border|left|430px]]
 
=== Balanced chest insert ===
=== Balanced chest insert ===
Goal: Load n chests with approximately the same number of items.
<div style="margin-left:440px;">
Goal: Load n chests with approximately the same number of items. This can be used for train stations: [https://www.reddit.com/r/factorio/comments/4e03g2/madzuris_smart_loading_train_station_guide/ MadZuri's smart loading train station]
*  Place n chests and n inserters.  
*  Place n chests and n inserters.  
*  Place 1 [[arithmetic combinator]]
*  Place 1 [[arithmetic combinator]]
Line 160: Line 177:
*  Set the enable condition on each inserter to be Everything (red star) < 0.
*  Set the enable condition on each inserter to be Everything (red star) < 0.


The combinator calculates the average number of items in the chests, and makes it negative. Each inserter gets the amount in the chest it is inserting to and adds the negative average, ie it calculates how many more than the average it has in its chest. Thus if that number is negative, it has less than the average in the chest and it enables.  
The combinator calculates the average number of items in the chests, and makes it negative. Each inserter gets the amount in the chest it is inserting to and adds the negative average, i.e. it calculates how many more than the average it has in its chest. Thus if that number is negative, it has less than the average in the chest and it enables.  


Due to inserter stack bonus the count is not exact. If a precise count is needed, set the inserter stack size to 1.  
Due to inserter stack bonus the count is not exact. If a precise count is needed, set the inserter stack size to 1.
</div>
{{clear}}


{{clear}}
[[File:SmartOutpostUnloader.png|border|left|430px]]


[[File:SmartOutpostUnloader.png|left|400x400px]]
=== Keeping outpost stocked with specified items ===
=== Keeping outpost stocked with specified items ===
<div style="margin-left:440px;">
*  This circuit keeps a [[storage chest]] at an outpost stocked with customized levels of different items.  
*  This circuit keeps a [[storage chest]] at an outpost stocked with customized levels of different items.  
*  For example you could keep an outpost stocked with 50 laser turrets and 200 piercing magazine rounds but not have to worry about it being over filled.  
*  For example you could keep an outpost stocked with 50 laser turrets and 200 piercing magazine rounds but not have to worry about it being over filled.  
Line 174: Line 193:
*  The [[arithmetic combinator]] '''multiplies''' each input value (from the storage chest) by '''-1'''.  
*  The [[arithmetic combinator]] '''multiplies''' each input value (from the storage chest) by '''-1'''.  
*  Finally the filter stack inserter's mode of operation is set to '''Set filters'''.
*  Finally the filter stack inserter's mode of operation is set to '''Set filters'''.
*  So the input to the [[stack filter inserter]] is '''<constant combinator> - <storage chest contents>''' and the filter is set to filter for the first item by inventory order.  
*  So the input to the [[stack filter inserter]] is '''<constant combinator> - <storage chest contents>''' and the filter is set to filter for the first item by inventory order.
</div>
{{clear}}
{{clear}}


[[File:SolarAccumalatorBalancer.png|left|400x400px]]
[[File:SolarAccumalatorBalancer.png|border|left|430px]]


=== Balanced Solar panel / Accumulator Production ===
=== Balanced Solar panel / Accumulator Production ===
<div style="margin-left:440px;">
* This circuit balances production of [[solar panel]]s and [[accumulator]]s to a desired ratio in my case 24:20.
* This circuit balances production of [[solar panel]]s and [[accumulator]]s to a desired ratio in my case 24:20.
* The first [[arithmetic combinator]] takes the number of accumulators in the chest and '''multiplies''' it by '''24'''.  
* The first [[arithmetic combinator]] takes the number of accumulators in the chest and '''multiplies''' it by '''24'''.  
Line 186: Line 207:
* If the number of accumulators is greater we enable the Solar panels inserter, if the number of Solar panels is greater we enable the accumulators inserter.  
* If the number of accumulators is greater we enable the Solar panels inserter, if the number of Solar panels is greater we enable the accumulators inserter.  
* However, if they are equal, neither machine does anything. So we add a single accumulator to one of the inserters using a constant combinator and a wire of the other color, therefore breaking the deadlock.
* However, if they are equal, neither machine does anything. So we add a single accumulator to one of the inserters using a constant combinator and a wire of the other color, therefore breaking the deadlock.
</div>
{{clear}}
{{clear}}


== Sushi Belts ==
== Sushi Belts ==
[[File:SushiScience1.png|left|400px]]
[[File:SushiScience1.png|border|left|430px]]
 
=== Reading Belt Design ===
=== Reading Belt Design ===
<div style="margin-left:440px;">
* Six belts in a row are connected with Red wire and set to '''Read belts contents''' and '''Hold'''  
* Six belts in a row are connected with Red wire and set to '''Read belts contents''' and '''Hold'''  
* This [[red wire]] is then connected to the inserters that insert onto the belt.  
* This [[red wire]] is then connected to the inserters that insert onto the belt.  
* Read hand contents is unselected for all inserters.
* Read hand contents is unselected for all inserters.
* Mode of operation is set to '''Enable/Disable''' on all inserters.  
* Mode of operation is set to '''Enable/Disable''' on all inserters.  
* The first inserter is enabled when '''Science pack 1 = 0'''
* The first inserter is enabled when '''Automation science pack = 0'''
* The other inserters are set similarly for the other science packs.  
* The other inserters are set similarly for the other science packs.
</div>
{{clear}}
{{clear}}


[[File:SushiScience2.png|left|400px]]
[[File:SushiScience2.png|border|left|430px]]
 
=== Memory Cell Design ===
=== Memory Cell Design ===
* This circuit counts the number of items of each type on a looping belt by counting the numbers that are added and removed from the belt by inserters.
<div style="margin-left:440px;">
* Each inserter that takes items off the belt is connected together with Red wire and each of these inserters is set to '''Mode of operation none, Read hand content selected''' and '''Hand read mode pulse'''.  
* This recipe produces a rolling sum of the number of items of each type, as they added or removed from a looping conveyor belt. Inserters placing items onto the belt can use this sum to turn on or off as needed.
* These inserters are connected to the input of the left arithmetic combinator.  
* It achieves this through two networks, one red (subtraction) and one green (addition), connected to their own inserters, and two arithmetic combinators: one basic [[arithmetic combinator]] to do the subtraction, and one memory cell, to update and persist the values.
* The left [[arithmetic combinator]] multiples '''each''' input by '''-1''' and outputs it to '''each'''.  
&nbsp;
* The right [[arithmetic combinator]] is a '''memory cell''' as above.
* Each inserter that takes items '''from''' the belt is connected with Red wire. Each of these inserters is set to '''Mode of operation: None''', '''Read hand contents is checked''', and Hand read mode is set to '''Pulse''' (sends 1 each time an item is picked up).  
* The memory cell's input is connected to the inserters that are placing items on the belt and the output of the left [[arithmetic combinator]].  
* These red wire inserters are connected to the input of the subtraction arithmetic combinator, in this example, it is the one on the left.
* The inserters that place items onto the belt have an enabled condition that is based on the number of items on the belt.
* The left [[arithmetic combinator]] multiples '''each''' input by '''-1''' and outputs it to '''each'''. This subtracts 1 each time an inserter removes an item from the belt, for the specific type of item taken.
* The right [[arithmetic combinator]] is the '''memory cell'''.
* The memory cell's input is connected to: 1. A green wire network of inserters placing items onto the belt (the addition), 2. The output of the left [[arithmetic combinator]] (the subtraction).
* The memory cell's output should be connected to its input, so that each time an update is sent from either the addition network (green wire) or subtraction network (red wire), the updated value is persisted.
* When a Green wire inserter adds an item to the belt, that item's count in the memory cell is increased by 1.
* The inserters that place items onto the belt (green wire) should be set to: '''Enable/disable''', '''Read hand contents is checked''' and '''Hand read mode is set to Pulse'''.
* The '''Enable/disable''' condition is set based on the number of items you'd like picked up by the red wire inserters, e.g. Automation science pack <= 16 (one pack for each lab in the example shown here).
</div>
{{clear}}
{{clear}}


== Power ==
== Power ==
[[File:SteamBackup.png|left|400px]]
[[File:SteamBackup.png|border|left|430px]]
 
=== Backup steam power ===
=== Backup steam power ===
<div style="margin-left:440px;">
* The [[steam engine]]s are not directly connected to the power network. They are connected to the power network through a [[power switch]].  
* The [[steam engine]]s are not directly connected to the power network. They are connected to the power network through a [[power switch]].  
* The [[power switch]] is connected to one of the [[accumulator]]s in the main network.  
* The [[power switch]] is connected to one of the [[accumulator]]s in the main network.  
* The [[power switch]] turns on when A < 10. That is when the [[accumulator]]s are less than 10% full.
* The [[power switch]] turns on when A < 10. That is when the [[accumulator]]s are less than 10% full.
</div>
{{clear}}
{{clear}}
=== Optimal usage of fuel for nuclear power ===
=== Optimal usage of fuel for nuclear power ===
Unlike the normal steam power that adjusts fuel usage based on power usage, the [[Power_production#Nuclear_power|nuclear reactors]] spend fuel in fixed units of time. To be exact, the consumption of 1 fuel cell takes exactly 200 seconds.
Unlike the normal steam power that adjusts fuel usage based on power usage, the [[Power_production#Nuclear_power|nuclear reactors]] spend fuel in fixed units of time. To be exact, the consumption of 1 fuel cell takes exactly 200 seconds.
Line 222: Line 259:
Combined with the fact that creating the nuclear fuel cells are time consuming and expensive to create, it is therefore beneficial to optimize their use to match the actual consumed power.
Combined with the fact that creating the nuclear fuel cells are time consuming and expensive to create, it is therefore beneficial to optimize their use to match the actual consumed power.


[[File:NuclearCircuits.jpg|left|400px]]
[[File:NuclearCircuits.png|border|left|430px]]
==== First example ====
<div style="margin-left:440px;">
The above picture shows a setup with 4 reactors, that spend only 1 fuel cell each whenever steam runs low.<br>
This picture shows a setup with 4 reactors, that spend only 1 fuel cell each whenever steam runs low.<br>
''Note: The GUI in the image above has been altered to make sure all important info fits within the image size.''
''Note: The GUI in the image above has been altered to make sure all important info fits within the image size.''


Line 230: Line 267:
* Storage tank that provides the [[steam]] signal.  You should only read from one storage tank, and it should have pipe connections to all your other steam storage tanks.
* Storage tank that provides the [[steam]] signal.  You should only read from one storage tank, and it should have pipe connections to all your other steam storage tanks.
* Chests containing [[uranium fuel cell]]s for the reactor.
* Chests containing [[uranium fuel cell]]s for the reactor.
* Output inserters that take [[Used_up_uranium_fuel_cell|empty fuel cells]] from the reactor. This is connected to the storage tank to listen for the steam signal, and to the chests to listen for the uranium fuel cell signal. If the steam level is low and there are uranium fuel cells available, it removes the empty fuel cells from the reactor and sends an empty fuel cell signal (since "Read hand contents" is checked).
* Output inserter that takes [[Used_up_uranium_fuel_cell|empty fuel cells]] from the reactor. This is connected to the storage tank to listen for the steam signal, and to the chests to listen for the uranium fuel cell signal. If the steam level is low and there are uranium fuel cells available, it removes the empty fuel cells from the reactor and sends an empty fuel cell signal (since "Read hand contents" is checked).
* Input inserters that put uranium fuel cells into the reactor. This is connected to the output inserters and listens for the empty fuel cell signal. The "Override stack size" is set to 1, so that it only inserts 1 fuel cell at a time.
* Input inserter that put uranium fuel cells into the reactor. This is connected to the output inserter and listens for the empty fuel cell signal. The "Override stack size" is set to 1, so that it only inserts 1 fuel cell at a time.
* If you are using multiple reactors you should only wire one output inserter to one steam tank, and then connect all input inserters to the single output inserter. This will synchronize fuel insertion to maximize the reactor neighbour heat bonus. The other reactors can have "dumb" output inserters that remove [[Used_up_uranium_fuel_cell|empty fuel cells]] immediately.


Since this design uses empty fuel cells as a signal to fill the reactor, you need to manually insert 1 uranium fuel cell into the reactor to get it started.
Since this design uses empty fuel cells as a signal to fill the reactor, you need to manually insert 1 uranium fuel cell into the reactor to get it started.
</div>
{{clear}}




[[File:NuclearCircuits2.jpg|left|400px]]
=== Prioritize usage of uranium towards nuclear fuel production ===
==== Second example ====
Because a continuous supply of [[uranium fuel cell]]s is critical to maintaining a [[nuclear reactor]], the circuit network can be used to set up a system where [[uranium-235]] and [[uranium-238]] are conserved for the production of nuclear fuel before other uses.
A simpler setup can be made with inserters that drop a single [[uranium fuel cell]] in each reactor when the [[steam]] reaches a certain level.


Here, two inserters feeding two reactors are connected to a steam [[storage tank]] and are set to be turned on when it reaches 2K.<br>
[[File:Nuclear Fuel Circuit Network.png|border|left|430px]]
The only drawback is that two cells are placed in the reactor (one when the steam volume drops to 2K and another when it is back up to that level), but this does not matter, as with only two cells the temperature cannot rise to 1000°C, so no energy is wasted.
<div style="margin-left:440px;">
{{clear}}


[[File:Nuclear Fuel Circuit Network.png|left|400px]]
Using a [[splitter]], divert the two types of uranium onto two parallel conveyors, with an [[inserter]] positioned to gather uranium from each conveyor (a [[long-handed inserter]] will be needed for the far belt). Each of these inserters deposits their load into a container, from which two more inserters deliver the contents to an [[assembling machine]] making nuclear fuel. An inserter delivers the produced fuel to a third container, from which inserter(s) delivers the fuel to your nuclear reactor. Wire the two inserters gathering from the conveyors to the container each of them is delivering to, and to the tile of conveyor immediately after the tile the inserter is gathering from. Set each inserter's enable condition to "less than or equal to X amount of uranium", using the appropriate type of uranium the inserter is gathering and X being the number of reserve uranium desired (optimally, one uranium-235 and nineteen uranium-238, the amount needed to produce nuclear fuel; the amount may be increased if a greater stockpile is desired). Set each conveyor's enable condition to "greater than or equal to X amount of uranium" in the same manner. Finally, connect the inserters delivering uranium to the assembly machine up to the container the assembly machine is delivering nuclear fuel to, and set each of their enable conditions to "nuclear fuel = 0 (the enable condition can be set to "less than or equal to X amount of nuclear fuel" if a larger stockpile is desired).
=== Prioritize usage of uranium towards nuclear fuel production ===
Because a continuous supply of [[nuclear fuel]] is critical to maintaining a [[nuclear reactor]], the circuit network can be used to set up a system where [[uranium-235]] and [[uranium-238]] are conserved for the production of nuclear fuel before other uses.
 
Using a [[splitter]], divert the two types of uranium onto two parallel conveyors, with an [[inserter]] positioned to gather uranium from each conveyor (a [[long handed inserter]] will be needed for the far belt). Each of these inserters deposits their load into a container, from which two more inserters deliver the contents to an [[assembly machine]] making nuclear fuel. An inserter delivers the produced fuel to a third container, from which inserter(s) delivers the fuel to your nuclear reactor. Wire the two inserters gathering from the conveyors to the container each of them is delivering to, and to the tile of conveyor immediately after the tile the inserter is gathering from. Set each inserter's enable condition to "less than or equal to X amount of uranium", using the appropriate type of uranium the inserter is gathering and X being the number of reserve uranium desired (optimally, one uranium-235 and nineteen uranium-238, the amount needed to produce nuclear fuel; the amount may be increased if a greater stockpile is desired). Set each conveyor's enable condition to "greater than or equal to X amount of uranium" in the same manner. Finally, connect the inserters delivering uranium to the assembly machine up to the container the assembly machine is delivering nuclear fuel to, and set each of their enable conditions to "nuclear fuel = 0 (the enable condition can be set to "less than or equal to X amount of nuclear fuel" if a larger stockpile is desired).


This set-up accomplishes the following:
This set-up accomplishes the following:
Line 256: Line 290:
* When there is not enough uranium stockpiled to produce a batch of nuclear fuel, the inserters gathering uranium will activate and and resume gathering uranium until they reach their quota. The conveyors carrying uranium will stop past the inserters, cutting off other facilities from that type of uranium until its respective inserter reaches quota.
* When there is not enough uranium stockpiled to produce a batch of nuclear fuel, the inserters gathering uranium will activate and and resume gathering uranium until they reach their quota. The conveyors carrying uranium will stop past the inserters, cutting off other facilities from that type of uranium until its respective inserter reaches quota.
* The assembly machine will only be provided with uranium when the stockpile of nuclear fuel hits zero (or decreases below the desired amount), preventing over-production of nuclear fuel and thus over-consumption of uranium.
* The assembly machine will only be provided with uranium when the stockpile of nuclear fuel hits zero (or decreases below the desired amount), preventing over-production of nuclear fuel and thus over-consumption of uranium.
</div>
{{clear}}


== Railway network ==
== Railway network ==
=== Set train routing ===
=== Set train routing ===
The circuit network can be used to allow deeper micromanagement of [[train]]s by disable/enabling [[train stop]]s. By connecting the stop to the storage container(s) unloading from the train and setting the train stop to be disabled when a desired resource in them is above a certain quantity, any train with this stop on their route will ignore it and continue to their next stop. For example, a train stop where [[iron ore]] is delivered can be disabled when the total amount of iron ore in the containers is above 1,000; when the stockpiled ore drops below 1,000, the stop will be enabled and trains will be permitted to stop there. Conversely, train stops where a resource is picked up can be set to be disabled in the same manner, so that trains will ignore the stop until the stop has enough of the specified resource to be delivered.
The circuit network can be used to allow deeper micromanagement of [[train]]s. Circuits can be used to adjust train limits for [[Train stop|stops]], effectively disabling a stop when a resource is not available for loading, or if an unloading station already has more than enough of a resource. Note that adjusting train limits runs into fewer problems than fully enabling/disabling stops; see [https://factorio.com/blog/post/fff-361 Friday Facts #361 - Train stop limit, Tips and tricks] and the [[Train stop]] page for additional information about using train limits.
 
Together, these can be used to direct multiple trains to the same stops and better optimize their delivery; they will only go to a stop to pick up cargo when there is a certain amount ready, and will only unload at stops which have fallen below a certain amount in their stockpile. Further control over deliveries can be granted by integrating the inserters loading and unloading from the trains and/or the storage containers into the circuit network to enable or disable them depending on the container's contents, so that specific amounts of resources are picked up or unloaded.
 
This system also means that if no stop on a train's route requires the specified resource, the train will wait until needed. This can be useful for supplies like ammunition being delivered to defensive outposts with turrets; if the turrets have a sufficient stockpile of ammunition their stop will be disabled and the train delivering ammunition will not travel there until more ammunition is needed, preventing rail lines from being clogged and fuel from being consumed.


=== Player safety ===
=== Player safety ===
Line 274: Line 306:
== Latches ==
== Latches ==
=== RS latch - single decider version ===
=== RS latch - single decider version ===
[https://forums.factorio.com/viewtopic.php?f=193&t=14556 This discussion] on the Factorio forums starts with the common 2 decider RS latch version, but the thread [https://forums.factorio.com/viewtopic.php?p=160896#p160896 goes on to explain] why this single decider version is better. In the thread, the latch is described as an SR latch. However, when both inputs are true, the latch will reset, so it is an RS latch.
[https://forums.factorio.com/viewtopic.php?f=193&t=14556 This discussion] on the Factorio forums starts with the common 2 decider RS latch version, but later a [https://forums.factorio.com/viewtopic.php?p=111192#p111192 single decider version was proposed]. The thread [https://forums.factorio.com/viewtopic.php?p=160896#p160896 goes on to explain] why this is better. In the thread, the latch is described as an SR latch. However, when both inputs are true, the latch will reset, so it is an RS latch.
 
==== Backup steam example ====
==== Backup steam example ====
This example will turn on the steam generator when the Accumulator charge drops to 20%, but will "latch" (remember) the On state until the accumulator is charged to 90%.
This example will turn on the steam generator when the Accumulator charge drops to 20%, but will "latch" (remember) the On state until the accumulator is charged to 90%.
Line 299: Line 332:
<br clear=all>  
<br clear=all>  
----
----
[[File:SRLatch.png|border|left|430px]]


=== RS latch ===
=== RS latch ===
[[File:SRLatch.png|left|430px]]
<div style="margin-left:440px;">
* This should be familiar to anyone with any background in electronics.  
* This should be familiar to anyone with any background in electronics.  
* The signal is set and reset with the [[constant combinator]]s on the left by setting an A=1 signal.  
* The signal is set and reset with the [[constant combinator]]s on the left by setting an A=1 signal.  
* The latch "remembers" which one was last set and the light stays on until another signal is received.
* The latch "remembers" which one was last set and the light stays on until another signal is received.
</div>
{{clear}}
{{clear}}
[[File:SRlatchinaction.png|border|left|430px]]


=== Usage of RS latch ===
=== Usage of RS latch ===
[[File:SRlatchinaction.png|left|430px]]
<div style="margin-left:440px;">
* Here is an example of how you could use an RS latch.
* Here is an example of how you could use an RS latch.
* The two extra [[decider combinator]]s provide the set and reset conditions.  
* The two extra [[decider combinator]]s provide the set and reset conditions.  
* Petroleum gas < 50 and petroleum gas > 100.  
* Petroleum gas < 50 and petroleum gas > 100.
</div>
{{clear}}
{{clear}}
[[File:BeltLatch.png|border|left|430px]]


=== Belt only latch ===
=== Belt only latch ===
[[File:BeltLatch.png|left|430px]]
<div style="margin-left:440px;">
* To make it work, '''3''' pieces of raw wood must be placed on the inside lane of the belt.
* To make it work, '''3''' pieces of raw wood must be placed on the inside lane of the belt.
* It will have higher latency than the combinator version, but in most situations you will not notice the difference.  
* It will have higher latency than the combinator version, but in most situations you will not notice the difference.
</div>
{{clear}}
{{clear}}


== Displays ==
== Displays ==
[[File:5digitDisplay.png|left|400x400px]]
[[File:5digitDisplay.png|border|left|430px]]
 
=== Numerical Display ===
=== Numerical Display ===
<div style="margin-left:440px;">
* Each digit is driven by its own [[green wire]], that wire holds 15 signals, one for each lamp used in the digit.
* Each digit is driven by its own [[green wire]], that wire holds 15 signals, one for each lamp used in the digit.
* [[constant combinator]]s are used to define which lamp should light up for each value.  
* [[constant combinator]]s are used to define which lamp should light up for each value.
</div>
{{clear}}
{{clear}}


[[File:BWDisplay.png|left|400x400px]]
[[File:BWDisplay.png|border|left|430px]]


=== Black and White Grid Display ===
=== Black and White Grid Display ===
<div style="margin-left:440px;">
* Each row has its own [[red wire]] connection and within that row each light has a numbered signal 0-9.
* Each row has its own [[red wire]] connection and within that row each light has a numbered signal 0-9.
* We turn each light on by just setting or clearing the relevant signal.
* We turn each light on by just setting or clearing the relevant signal.
</div>
{{clear}}
{{clear}}


[[File:MultiColoredDisplay.png|left|400x400px]]
[[File:MultiColoredDisplay.png|border|left|430px]]
 
=== Multicolor Display by DaveMcW ===
=== Multicolor Display by DaveMcW ===
<div style="margin-left:440px;">
* To understand how this works, you first need to understand how color lights choose which color to light up when there are multiple colored signals.  
* To understand how this works, you first need to understand how color lights choose which color to light up when there are multiple colored signals.  
* The [[lamp]] will light up with the colored signal that is greater than zero and earliest in this list: red, green, blue, yellow, pink, cyan, white.   
* The [[lamp]] will light up with the colored signal that is greater than zero and earliest in this list: red, green, blue, yellow, pink, cyan, white.   
Line 342: Line 391:
* And this enables us to choose the color for each cell.  
* And this enables us to choose the color for each cell.  
* Simple!
* Simple!
</div>
{{clear}}
== Setting Recipes ==
[[File:MultipleItemAssembler.png|border|left|430px]]
=== Multiple Item Assembling Machine ===
<div style="margin-left:440px;">
* This circuit allows a user to have a single [[assembling machine]] produce several different items that all use mostly the same ingredients. This is a convenient way to avoid routing the same set of inputs to multiple assembly machines for items that need automated, but not constant production. For example, [[medium electric pole]]s and [[big electric pole]]s share the same ingredients, or the [[pumpjack]], [[oil refinery]], and [[chemical plant]] take mostly the same inputs.
* To use this, the player opens the [[constant combinator]] and selects which items and what quantities to make.
* This signal goes into the green wire input of the [[decider combinator]], where it is compared to the quantity of items in the logistics chest connected to the combinator input on the red wire.
* The decider combinator uses the "each" signal, so each signal on the green wire is compared to each signal on the red wire, and if there are fewer of any item in the chest than are set by the constant combinator, the decider combinator will output a signal on that item's channel.
* The assembling machine then is configured to set the recipe based on incoming signals and so will produce whatever items are needed to fulfill the settings on the constant combinator.
* The assembly machine outputs items to the steel chest, which then loads them into the requester chest, which feeds back into the assembly machine. This is because when a new recipe is loaded, any extra input items of the previous recipe must be unloaded from the machine, and this loop will supply those unloaded items back into the assembly machine, otherwise input materials will fill up the output storage, preventing new items from being produced.
</div>
{{clear}}
{{clear}}



Latest revision as of 15:56, 27 November 2024

Not-enough-repair-packs-icon.png
Page "Circuit network cookbook" has been recommended for clean-up. Reason: Combinator GUI and circuit network changed in 2.0
This may mean fixing grammar or broken links, providing better explanations, or removing incorrect/outdated info.
Further recommendations for this page's clean-up can be made at Tutorial talk:Circuit network cookbook.

This is a beginners tutorial. See also the Circuit network page for an overview over the circuit network and the Tutorial:Combinator tutorial for an advanced tutorial.

Foreword

This page provides examples of simple circuit network designs and some not so simple designs that others can use, combine and modify. They are designed to be as easy to understand as possible. To see the settings of combinators without opening them, the option "Show combinator settings in "Alt-mode"" in the Interface/Alt-mode settings has to be checked and "Alt-mode" has to be turned on.

Lights

LightWiredToChest.png

Lamp showing chest content condition

This is one of the simplest possible use of circuit-network. A lamp is light depending on the number of goods (in this example empty barrels) in a chest.

Setting up circuit connection

  • The lamp is connected to the chest.
  • The lamp is set to light if the chest contain less than 10 empty barrels.

To set the light condition

  • Open the lamp (left click on it).
  • Set the input to barrels.
  • Set the operator to < (less than).
  • Set the constant number:
    • Left click on the constant number
    • Move the slider until 10 is shown, or edit the value box directly.
    • Press set.

Depending on the condition you set, the lamp may light if the chest is empty, or if it contains the required quantity of items.

The drawback with this scenario is that the lamp has a white light , and is therefore difficult to differentiate from an ordinary lamp at night.

ConditionalLights.png

Conditional Lights

  • In this circuit we connect a series of lamps to a storage tank.
  • By setting different conditions on each lamp we can build an indicator strip.
  • The Enabled condition of the first lamp is Petroleum gas > 100.
  • The others light up when gas is greater than 200, 300, 400 and 500 respectively.

In this setup you can connect the storage tank to the lamps directly.

ColoredLights.png

Colored Lights

To light a lamp with a color rather than white, you need an intermediate device like an arithmetic combinator that can send a color signal. Instead of directly connect the lamp and the Storage tank you need:

  1. Add the arithmetic combinator.
  2. Connect the storage tank with the input of the arithmetic combinator.
  3. Connect the output of the arithmetic combinator with the lamp.
  4. Set up the arithmetic combinator:
    1. Setting the input to petroleum Gas + 0 (the constant 0 not the signal 0)
    2. Set the output to the pink signal (on the bottom row of the last tab of signals.)
  5. Set up the lamp:
    1. Select the "Use colors" check box on the lamp.
    2. Set the condition to the pink signal, and what value you want (i.e. > 100)

Oil Setups

Balancing the production of petroleum gas, light oil and heavy oil is one of the most important use cases of the circuit network.

LgtOilCracking.png

Light Oil Cracking

  • This circuit provides balanced light oil and petroleum gas production by cracking excess light oil into gas.
  • The pump is connected to the storage tank by a red wire.
  • The pump has an enabled condition set to Light Oil > 20000.
HvyOilCracking.png

Heavy Oil Cracking

  • This circuit extends on the previous circuit by adding optional heavy oil cracking to provide lubricant etc.
  • The pump has an enabled condition set to Heavy oil > 20000.

Alternative Setup for Cracking and Lubricant Production

This setup compares different fluid levels to each other instead of checking fixed values. It offers some guarantees such as petroleum gas being produced when you have light oil to spare, and light oil not being cracked when you have plenty of petroleum gas, and similar rules for heavy oil cracking and lubricant production.

Oil-single-cct.png

It takes 4 steps:

  1. Have a fluid tank for heavy oil, light oil, petroleum gas, and lubricant. For each fluid, make sure to connect the tank via pipes to every location where the fluid is being produced or consumed.
  2. For each chemical plant (or each row of them, if you use rows) add a pump to the non-water fluid input pipe to make it possible to block the flow. Note: Alternatively, the blocking pumps could be added to the chemical plant output pipes, but there is no need to add pumps to both inputs and outputs.
  3. Connect every pump and every fluid tank to a single circuit network of red (or green) wire. The resulting circuit network will know about the fluid level in every storage tank and pass this information to every pump.
  4. For each connected pump set the circuit “enable condition” to "[input fluid] > [output fluid]" , for its respective chemical plant recipe. E.g. set "heavy oil > light oil" for the heavy oil cracking input pump, set "heavy oil > lubricant" for the lubricant production input pump, and set "light oil > petroleum gas" for the light oil cracking input pump.

Done! Now all the pumps will move to equalize the fluid levels to each other. This will prevent fluid system deadlocks where you have plenty of one fluid but you are unable to make any of the other.

Misc

MulitipleChestsAndPoles.png

Multiple Storages

  • If you connect multiple chests to a pole, the pole displays the sum of items in all the chests.
  • This also works with storage tanks and roboports.
ConstantComb.png

Constant Combinator

  • With a constant combinator you can generate any signals you may need.
  • In this example we have generated a signal of 50 Laser turrets and 200 Piercing round magazine.
  • Constant combinators are not of much use on their own but we shall use them later.
ThisASign.png

Constant Combinator Signs (Words)

  • You can use constant combinators to make signs, just set the letter signals in the combinator, each combinator can display 2 characters side by side.
  • Note that to see these letters, Alt-mode must be on and the Interface setting “Show combinator settings in “Alt-Mode”” must also be enabled.
Constant combinator signs2.png

Constant Combinator Signs (Managing Belts)

  • Somewhat similar to the previous example, constant combinator signals can be used with belts to help indicate what items should be on which belts. This is extremely useful when sharing blueprints, as it's possible for blueprints to be shared albeit with no indication on which items are meant for which belts.
MemoryCell.png

Memory Cell / Counter

  • Basic memory cell that counts all the items moved by the inserter
  • The fast inserter is connected to BOTH ends of the arithmetic combinator.
  • If the fast inserter hasn't picked anything up this tick the input to the Arithmetic combinator is the same as and output and hence the values are persisted.
  • When the fast inserter does pick something up its value is added to the output from the previous tick thus incrementing that item.

Inserters

LimitItemsPlacedIntoAChest.png

Limit items placed into a chest

  • The inserter is connected to the wooden chest using a red wire.
  • The inserter's enabled condition is Advanced Circuit < 10.
  • In reality this means the inserter may place more than 10 Advanced circuits in the chest because it could pick up to 3 at once due to stack size bonuses.
  • This effect can be even greater with Stack inserters because of their large carrying capacity.
  • This technique still gives far greater control than limiting the inventory on the chest.
BalancedChestInsert.png

Balanced chest insert

Goal: Load n chests with approximately the same number of items. This can be used for train stations: MadZuri's smart loading train station

  • Place n chests and n inserters.
  • Place 1 arithmetic combinator
  • Set the combinator to take Each (yellow star) and divide by the negative number of chests. ie −n.
  • Connect all chests to each other and to the input of the combinator using red wire.
  • Connect all inserters to each other and to the output of the combinator using red wire.
  • Connect each inserter to the box it inserts into with green wire.
  • Set the enable condition on each inserter to be Everything (red star) < 0.

The combinator calculates the average number of items in the chests, and makes it negative. Each inserter gets the amount in the chest it is inserting to and adds the negative average, i.e. it calculates how many more than the average it has in its chest. Thus if that number is negative, it has less than the average in the chest and it enables.

Due to inserter stack bonus the count is not exact. If a precise count is needed, set the inserter stack size to 1.

SmartOutpostUnloader.png

Keeping outpost stocked with specified items

  • This circuit keeps a storage chest at an outpost stocked with customized levels of different items.
  • For example you could keep an outpost stocked with 50 laser turrets and 200 piercing magazine rounds but not have to worry about it being over filled.
  • The storage chest is attached to the input of the arithmetic combinator (left side in the picture) with a red wire.
  • Another couple of red wires join the output of the arithmetic combinator (right side) to the constant combinator and to the stack filter inserter.
  • The arithmetic combinator multiplies each input value (from the storage chest) by -1.
  • Finally the filter stack inserter's mode of operation is set to Set filters.
  • So the input to the stack filter inserter is <constant combinator> - <storage chest contents> and the filter is set to filter for the first item by inventory order.
SolarAccumalatorBalancer.png

Balanced Solar panel / Accumulator Production

  • This circuit balances production of solar panels and accumulators to a desired ratio in my case 24:20.
  • The first arithmetic combinator takes the number of accumulators in the chest and multiplies it by 24.
  • The second arithmetic combinator takes the output of the first combinator and divides it by 20.
  • This gives us the number of accumulators that we can directly compare to the number of Solar panels in both inserters.
  • If the number of accumulators is greater we enable the Solar panels inserter, if the number of Solar panels is greater we enable the accumulators inserter.
  • However, if they are equal, neither machine does anything. So we add a single accumulator to one of the inserters using a constant combinator and a wire of the other color, therefore breaking the deadlock.

Sushi Belts

SushiScience1.png

Reading Belt Design

  • Six belts in a row are connected with Red wire and set to Read belts contents and Hold
  • This red wire is then connected to the inserters that insert onto the belt.
  • Read hand contents is unselected for all inserters.
  • Mode of operation is set to Enable/Disable on all inserters.
  • The first inserter is enabled when Automation science pack = 0
  • The other inserters are set similarly for the other science packs.
SushiScience2.png

Memory Cell Design

  • This recipe produces a rolling sum of the number of items of each type, as they added or removed from a looping conveyor belt. Inserters placing items onto the belt can use this sum to turn on or off as needed.
  • It achieves this through two networks, one red (subtraction) and one green (addition), connected to their own inserters, and two arithmetic combinators: one basic arithmetic combinator to do the subtraction, and one memory cell, to update and persist the values.

 

  • Each inserter that takes items from the belt is connected with Red wire. Each of these inserters is set to Mode of operation: None, Read hand contents is checked, and Hand read mode is set to Pulse (sends 1 each time an item is picked up).
  • These red wire inserters are connected to the input of the subtraction arithmetic combinator, in this example, it is the one on the left.
  • The left arithmetic combinator multiples each input by -1 and outputs it to each. This subtracts 1 each time an inserter removes an item from the belt, for the specific type of item taken.
  • The right arithmetic combinator is the memory cell.
  • The memory cell's input is connected to: 1. A green wire network of inserters placing items onto the belt (the addition), 2. The output of the left arithmetic combinator (the subtraction).
  • The memory cell's output should be connected to its input, so that each time an update is sent from either the addition network (green wire) or subtraction network (red wire), the updated value is persisted.
  • When a Green wire inserter adds an item to the belt, that item's count in the memory cell is increased by 1.
  • The inserters that place items onto the belt (green wire) should be set to: Enable/disable, Read hand contents is checked and Hand read mode is set to Pulse.
  • The Enable/disable condition is set based on the number of items you'd like picked up by the red wire inserters, e.g. Automation science pack <= 16 (one pack for each lab in the example shown here).

Power

SteamBackup.png

Backup steam power

Optimal usage of fuel for nuclear power

Unlike the normal steam power that adjusts fuel usage based on power usage, the nuclear reactors spend fuel in fixed units of time. To be exact, the consumption of 1 fuel cell takes exactly 200 seconds.

Combined with the fact that creating the nuclear fuel cells are time consuming and expensive to create, it is therefore beneficial to optimize their use to match the actual consumed power.

NuclearCircuits.png

This picture shows a setup with 4 reactors, that spend only 1 fuel cell each whenever steam runs low.
Note: The GUI in the image above has been altered to make sure all important info fits within the image size.

There are a few elements in this setup:

  • Storage tank that provides the steam signal. You should only read from one storage tank, and it should have pipe connections to all your other steam storage tanks.
  • Chests containing uranium fuel cells for the reactor.
  • Output inserter that takes empty fuel cells from the reactor. This is connected to the storage tank to listen for the steam signal, and to the chests to listen for the uranium fuel cell signal. If the steam level is low and there are uranium fuel cells available, it removes the empty fuel cells from the reactor and sends an empty fuel cell signal (since "Read hand contents" is checked).
  • Input inserter that put uranium fuel cells into the reactor. This is connected to the output inserter and listens for the empty fuel cell signal. The "Override stack size" is set to 1, so that it only inserts 1 fuel cell at a time.
  • If you are using multiple reactors you should only wire one output inserter to one steam tank, and then connect all input inserters to the single output inserter. This will synchronize fuel insertion to maximize the reactor neighbour heat bonus. The other reactors can have "dumb" output inserters that remove empty fuel cells immediately.

Since this design uses empty fuel cells as a signal to fill the reactor, you need to manually insert 1 uranium fuel cell into the reactor to get it started.


Prioritize usage of uranium towards nuclear fuel production

Because a continuous supply of uranium fuel cells is critical to maintaining a nuclear reactor, the circuit network can be used to set up a system where uranium-235 and uranium-238 are conserved for the production of nuclear fuel before other uses.

Nuclear Fuel Circuit Network.png

Using a splitter, divert the two types of uranium onto two parallel conveyors, with an inserter positioned to gather uranium from each conveyor (a long-handed inserter will be needed for the far belt). Each of these inserters deposits their load into a container, from which two more inserters deliver the contents to an assembling machine making nuclear fuel. An inserter delivers the produced fuel to a third container, from which inserter(s) delivers the fuel to your nuclear reactor. Wire the two inserters gathering from the conveyors to the container each of them is delivering to, and to the tile of conveyor immediately after the tile the inserter is gathering from. Set each inserter's enable condition to "less than or equal to X amount of uranium", using the appropriate type of uranium the inserter is gathering and X being the number of reserve uranium desired (optimally, one uranium-235 and nineteen uranium-238, the amount needed to produce nuclear fuel; the amount may be increased if a greater stockpile is desired). Set each conveyor's enable condition to "greater than or equal to X amount of uranium" in the same manner. Finally, connect the inserters delivering uranium to the assembly machine up to the container the assembly machine is delivering nuclear fuel to, and set each of their enable conditions to "nuclear fuel = 0 (the enable condition can be set to "less than or equal to X amount of nuclear fuel" if a larger stockpile is desired).

This set-up accomplishes the following:

  • When there is sufficient nuclear fuel and uranium stockpiled, the inserters will deactivate and the conveyors activate, allowing the uranium to continue down the conveyors to other facilities.
  • When the nuclear fuel stockpile hits zero (or decreases below the desired amount), the inserters delivering to the assembly machine will activate and deliver uranium to resume production of nuclear fuel until quota is reached again.
  • When there is not enough uranium stockpiled to produce a batch of nuclear fuel, the inserters gathering uranium will activate and and resume gathering uranium until they reach their quota. The conveyors carrying uranium will stop past the inserters, cutting off other facilities from that type of uranium until its respective inserter reaches quota.
  • The assembly machine will only be provided with uranium when the stockpile of nuclear fuel hits zero (or decreases below the desired amount), preventing over-production of nuclear fuel and thus over-consumption of uranium.

Railway network

Set train routing

The circuit network can be used to allow deeper micromanagement of trains. Circuits can be used to adjust train limits for stops, effectively disabling a stop when a resource is not available for loading, or if an unloading station already has more than enough of a resource. Note that adjusting train limits runs into fewer problems than fully enabling/disabling stops; see Friday Facts #361 - Train stop limit, Tips and tricks and the Train stop page for additional information about using train limits.

Player safety

The circuit network can be used to ensure the player's safety when crossing train tracks so they do not get hit. Place gates at designated crossing areas and connect an adjacent wall to rail signals near the gate. Set the gate to "read sensor" and the signal to "close signal" with the condition being the signal the gate sends out being "1". This means that when the gate is closed, the signal will be green and trains can pass freely, but when the player approaches the gate and it opens for them, the train signal will be turned red and trains will be stopped until the player clears the area.

Alternatively, this system can be reversed - by setting the gate to "open gate" and the train signal set to "read signal", the gate will remain open normally and will close when a train is approaching, preventing the player from crossing until it is safe.

In lieu of gates, the player can connect a programmable speaker to the train signals to broadcast a warning siren when a train is approaching the area.

Latches

RS latch - single decider version

This discussion on the Factorio forums starts with the common 2 decider RS latch version, but later a single decider version was proposed. The thread goes on to explain why this is better. In the thread, the latch is described as an SR latch. However, when both inputs are true, the latch will reset, so it is an RS latch.

Backup steam example

This example will turn on the steam generator when the Accumulator charge drops to 20%, but will "latch" (remember) the On state until the accumulator is charged to 90%.

Latching is used to introduce hysteresis and avoid the power switch rapidly cycling on and off (as the accumulator falls to 19%, charges to 20%, falls to 19% and so on).

SR-01-Layout.png
Blueprint.png  Copy blueprint string

0eNrFVk1vozAQ/SuVz1ABCaRBq5WqXntKjqsKOTBJR8IGGTtpFPHfd+w0HyU0G6pVewkxnnmemfdmzI4tSgO1QqlZumOYV7Jh6Z8da3AleWnf6W0NLGVrVNrQG49JLuyLvYU/Z63HUBbwxtKw9QZ4zs48o15P1CBObgXkWIDy80osUHJdqTOAUfviMZAaNcI+A7fYZtKIBSiK7YgjoEAjfCgh1wpzv65KoFPqqiHnStrzCdAPA49t6Rm1NrYOWjQY7QrY6FQZwcvyX1jJFajxEYrnuRGmdGW6DCe+jx1KcB9TDYl1raoyW8ArXyM5kFVldG10djObj6zdI0kKHp2Mdiy0PysFIM8pwYKldHyOKjeo3TI8y8Wup93tl7Yv3fiaOC6zjt6z9uk4VqDaR+rY7CvBO2ZGewUec1qiaobVxaE3mtseiwK7EjVXLsaU/SKPobWe7zHrLYVmpM6WqhIZSsJg6ZKXDQyiYkzF9Vhk9xUU3d3kNiaSQUwEB/l9Hw+uZg1YjGzYiPpA1+/vpKuHjk7fRNf7JrJTsZf05MLwoIFbzLvtOvlEFZNjKepqQ5poNqjz10s9jA6N+fk8Ohx/FMFXNXDqxeCC20F901vCJxN07UjVG9K4+x9YQp5M2LUZfbTpq+XDKRsNnG4cuULZcz089HZWD+D0a8Pz52bnNPgPzTj76dlJAnDfNenZp5fHSr4ACp/NZ3fPnHrkDt64qN31vwbVuFIn43GUjCdxHIVt+xcL2lBp

SR-02-Accumulator.png

Accumulator outputs the current charge level as % on signal Signal-A.png

SR-03-RangeDeciders.png

First decider outputs "Set" (Signal-S.png = 1) if Accumulator is less than 20%.

Second decider outputs "Reset" (Signal-R.png = 1) once Accumulator is more than 90% full.

SR-04-SRLatch.png

RS Latch configuration

The central decider and green feedback wire is the actual RS Latch. It latches the Set signal Signal-S.png until the Reset signal Signal-R.png is received (and vice-versa).
NB: the latch expects binary inputs (Signal-S.png & Signal-R.png must be 0 or 1) - this is why the previous two deciders are required.
When both inputs are true, the reset signal takes priority and the latch resets. This means it is an RS latch instead of an SR latch.

SR-05-PowerSwitch.png

The Power switch isolates the generator from the rest of the factory until Signal-S.png = 1



SRLatch.png

RS latch

  • This should be familiar to anyone with any background in electronics.
  • The signal is set and reset with the constant combinators on the left by setting an A=1 signal.
  • The latch "remembers" which one was last set and the light stays on until another signal is received.
SRlatchinaction.png

Usage of RS latch

  • Here is an example of how you could use an RS latch.
  • The two extra decider combinators provide the set and reset conditions.
  • Petroleum gas < 50 and petroleum gas > 100.
BeltLatch.png

Belt only latch

  • To make it work, 3 pieces of raw wood must be placed on the inside lane of the belt.
  • It will have higher latency than the combinator version, but in most situations you will not notice the difference.

Displays

5digitDisplay.png

Numerical Display

  • Each digit is driven by its own green wire, that wire holds 15 signals, one for each lamp used in the digit.
  • constant combinators are used to define which lamp should light up for each value.
BWDisplay.png

Black and White Grid Display

  • Each row has its own red wire connection and within that row each light has a numbered signal 0-9.
  • We turn each light on by just setting or clearing the relevant signal.
MultiColoredDisplay.png

Multicolor Display by DaveMcW

  • To understand how this works, you first need to understand how color lights choose which color to light up when there are multiple colored signals.
  • The lamp will light up with the colored signal that is greater than zero and earliest in this list: red, green, blue, yellow, pink, cyan, white.
  • We have a red wire per column, that wire has each of the colored signals on it at different values and a numbered signal for each row.
  • There is a arithmetic combinator for each cell that subtracts the "row" value from each of the colored signals.
  • And this enables us to choose the color for each cell.
  • Simple!

Setting Recipes

MultipleItemAssembler.png

Multiple Item Assembling Machine

  • This circuit allows a user to have a single assembling machine produce several different items that all use mostly the same ingredients. This is a convenient way to avoid routing the same set of inputs to multiple assembly machines for items that need automated, but not constant production. For example, medium electric poles and big electric poles share the same ingredients, or the pumpjack, oil refinery, and chemical plant take mostly the same inputs.
  • To use this, the player opens the constant combinator and selects which items and what quantities to make.
  • This signal goes into the green wire input of the decider combinator, where it is compared to the quantity of items in the logistics chest connected to the combinator input on the red wire.
  • The decider combinator uses the "each" signal, so each signal on the green wire is compared to each signal on the red wire, and if there are fewer of any item in the chest than are set by the constant combinator, the decider combinator will output a signal on that item's channel.
  • The assembling machine then is configured to set the recipe based on incoming signals and so will produce whatever items are needed to fulfill the settings on the constant combinator.
  • The assembly machine outputs items to the steel chest, which then loads them into the requester chest, which feeds back into the assembly machine. This is because when a new recipe is loaded, any extra input items of the previous recipe must be unloaded from the machine, and this loop will supply those unloaded items back into the assembly machine, otherwise input materials will fill up the output storage, preventing new items from being produced.

See Also