I'm sure most of you are already aware of the various balanced train loaders on offer, notably, the eponymous "Madzuri" design. I had a need to load a number of different items in the same manner, but unfortunately, the Madzuri design doesn't directly work well in this situation.
I've come up with a novel (and updated) design (at least I've not found anything like it) using filter inserters.
The Universal Balanced Loader r2 (UBL) Design Goals:
- Distribute items evenly across all staging chests for fastest loading times [success]
- Handle multiple item types without specifying the type expressly [success]
- Stage one or more item types per wagon position [success]
- Stage multiple items in readiness for future trains [success]
- Compact layout [success] (8x7)
- Minimal initial technology requirements [success] (filter inserters, circuit network)
- Handle exact item stack sizes [success]
- Handle multiples of item stacks or any permutation of item stacks to a maximum of forty slots(cargo wagon size) [success]
- Handle small amounts of items to take one slot [success]
- Handle outpost construction requirements without additional stations/stops [success]
- Handle inserter stack size variants for exact distribution [success]
I have achieved this by taking advantage of the blacklist filter, where an inserter will load anything that is not currently in the filter. By flipping the logic of the averaged, Madzuri, design, the filter inserters will only operate if the contents of an individual chest contains fewer than the average of all staging chests.
ie zero or below == no filter, therefore insert any item type, or above zero to not insert that specific item type.
The result is that all items are evenly distributed across the staging chests ready for when the train arrives. The actual loading of the train is then controlled by filter inserters using a whitelist to make sure the right items are loaded from the staging chests for that particular train, or alternatively, standard inserters if filtering isn't required. Also, because the available space across all staging chests is much greater than that of a wagon, several loads of different items can be staged ahead of time.
I have achieved all
There is one
Updated Blueprint for revision 2
This all works surprisingly well except for... [SOLVED]
The problem:
There are a few compromises that must be made with this approach to prevent the end of the belt from stacking up with missed items and halting the whole staging process. This involves looping around the belt to the beginning of the staging sequence so those items are loaded into the chests that are under the current threshold. That works well for a single wagon, except problems arise where there multiple cargo wagons.
I would like to be able to feed specific items into specific cargo wagons, but due to the single cell interstitial spacing of cargo wagons, there is no room to both feed, and loop back the non inserted items at the end of the run within this single cell spacing. I'm currently working with chaining the wagon locations, but I find this unsatisfactory, and it breaks clause 3 of the design.
The Question:
Does anyone have a combinator solution for a filter that can satisfy both a blacklist and a whitelist at the same time?
Filters that use a blacklist will let everything except those signals that are currently present pass the test. That makes the list of signals that are passed huge (and ironically makes my design workable), so what I'd like is to be able to reduce this to a subset or single signal that I can specify.
For example:
All raw ores from the potential, total, list of signals, and iron ore alone is loaded into the first wagon's staging chests.
Workarounds:
[list]
[*]Chain all wagon positions and deal with non items being distributed across multiple wagons at the unloading end. Downsides are the complexity and space requirements for sorting areas being mandated at all unloading stations.
old workaround
[*]Sacrificing at least two of the six possible loading staging/points to make space for the feed and loopback points to exist in the interstitial zone. The downside is the loss of effectiveness in loading times.
[*]???
[/list]
The ??? came to me after posting the original I have edited this post to reflect the revisions I have now made and do in fact solve all of the problems that were encountered. I have left the majority of the original post intact, but struck through so the thought process can be read (it may be of help to someone?)
Here's the final result which is fully tileable for multiple wagon positions. Note that now only 2.5 medium power poles per wagon position are needed, or a substation will also cover the power requirements for 2.6 wagon positions.
I do hope that my creation is of use to someone else,
I'm now satisfied that this is a truly universal and balanced loader. Next task, use filter stack inserters...