v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Editing User:Gnidan

Jump to navigation Jump to search

Warning: You are not logged in.
Your IP address will be recorded in this page's edit history.


The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
 
== Minecart Routing ==
 
== Minecart Routing ==
 
[[File:Minecart-routing.gif]]
 
 
===Overview===
 
 
I've come up with a scheme for getting minecarts to travel from a source to destination automatically using shared track. The scheme ultimately keeps careful control of individual sections of shared track so that only one minecart can be on a single piece of shared track at a given time. Through carefully timed access, a signaling scheme, and stateful record-keeping of how far each minecart is along its way to its destination, I have been able to create a fully automated minecart router.
 
 
'''Ref:''' [http://www.bay12forums.com/smf/index.php?topic=155397.0 ''Original forum thread'']
 
 
===Shared Track===
 
 
The design for a segment of shared track comprises two inbound tracks, each with a pressure plate, roller, and door, joining into a single outbound track.
 
 
 
{{diagram|spaces=yes|\
 
 
...══[#F0F]^[#FFF]╟+╗ ╔+[#FFF]╢[#F0F]^══...
 
        ╔═╝
 
        ║
 
        ║
 
        .
 
        .
 
        .
 
        (to either a pressure plate or another shared track)
 
}}
 
 
The pressure plates are used to trigger arrival signals, and the doors should be linked to open when the shared track becomes available for that minecart (release). The following track circuit design controls this behavior.
 
 
  
 
===Track Circuit for dual wait/release setups.===
 
===Track Circuit for dual wait/release setups.===
 
The track circuit here is set up to make each arriving minecart wait until the track is empty (and possibly wait until the other side has released and cleared the track, should both carts start waiting at the same time.)
 
 
====Design====
 
 
The track circuit is designed to use signals for input/output. Internally, the circuit comprises 5 "Newton's Cradle" bits. The pressure plates for these bits are linked to internal gear assemblies, which function as logic gates to emit signals as output. Three of the bits get set one way from an input signal, and unset via internal mechanisms. Two of the bits are entirely controlled internally and used for timing.
 
 
To clarify the design of the track circuit, there are four logic conditions that can cause the circuit to change/emit signals:
 
 
; The track is not in use and the left entrance is "waiting"
 
: Sets ''waiting<sub>left</sub>'' to false, sets ''releasing<sub>left</sub>'' to true, sets ''track in use'', and signals ''release<sub>left</sub>''
 
; The track is not in use and the right entrance is "waiting" and the left entrance is not
 
: Sets ''waiting<sub>right</left>'' to false, sets ''releasing<sub>right</left>'' to true, sets ''track in use'', and signals ''release<sub>right</sub>''
 
;The ''releasing<sub>left</sub>'' bit is finished being set
 
: Unset ''releasing<sub>left</sub>'' and signal ''clear<sub>left</sub>''
 
; The ''releasing<sub>right</sub>'' bit is finished being set
 
: Unset ''releasing<sub>right</sub>'' and signal ''clear<sub>right</sub>''
 
 
  
 
====Track====
 
====Track====
Line 53: Line 7:
 
   O            O
 
   O            O
 
   ╥☼O╞═╡O O╞═╡O☼╥
 
   ╥☼O╞═╡O O╞═╡O☼╥
   ║│ ☼─☼  ☼─☼ │║
+
   ║│           │║
   ╨☼O │  │  O☼╨
+
   ╨☼O         O☼╨
 
   O│╥──☼─☼─☼──╥│O
 
   O│╥──☼─☼─☼──╥│O
 
   │║    │    ║│
 
   │║    │    ║│
Line 68: Line 22:
 
   O            O
 
   O            O
 
   ╤☼O╟^╢O O╟^╢O☼╤
 
   ╤☼O╟^╢O O╟^╢O☼╤
   ^[#8B4513]│ ☼[#8B4513]─☼  ☼[#8B4513]─☼ [#8B4513]│^
+
   ^[#8B4513]│           [#8B4513]│^
   ╨☼O  [#8B4513]│  [#8B4513]│  O☼╨
+
   ╧☼O        O☼╧
 
   O[#8B4513]│╤[#8B4513]─[#8B4513]─[#0FF]☼[#8B4513]─[#FFF]☼[#8B4513]─[#FF0]☼[#8B4513]─[#8B4513]─╤[#8B4513]│O
 
   O[#8B4513]│╤[#8B4513]─[#8B4513]─[#0FF]☼[#8B4513]─[#FFF]☼[#8B4513]─[#FF0]☼[#8B4513]─[#8B4513]─╤[#8B4513]│O
 
   [#8B4513]│[#0FF]^    [#8B4513]│    [#FF0]^[#8B4513]│
 
   [#8B4513]│[#0FF]^    [#8B4513]│    [#FF0]^[#8B4513]│
Line 81: Line 35:
 
- Right-hand side [#F0F]☼ should be disengaged.
 
- Right-hand side [#F0F]☼ should be disengaged.
 
}}
 
}}
 
This diagram shows the linkages from the 5 bits to the internal gear assemblies that use them as logic gates. The pressure plates with a given color should be linked to the gear assembly/assemblies with matching color. Note that a temporary lever will have to be hooked up to the right-most purple bit, and pulled, so that the gear assembly starts disengaged.
 
 
These linkages should be done before the minecarts are placed.
 
  
 
====Minecarts====
 
====Minecarts====
Line 148: Line 98:
  
  
''The basic idea is that an arriving cart sends a signal; this sets the waiting bit. If the waiting bit is set, and the track is not in use, the release signal is sent, and the release bit is set. When the release bit is finished being set, a circuit trips, the release bit is unset, and the clear signal goes out.''
 
  
 
====Hookup====
 
====Hookup====
Line 158: Line 107:
 
* Link some signal to ''empty''. This can either be a pressure plate at the far end of the track, or,
 
* Link some signal to ''empty''. This can either be a pressure plate at the far end of the track, or,
 
* If a shared track segment leads into another shared track segment as either the left or right arrival point, use either the ''clear<sub>left</sub>'' or ''clear<sub>right</sub>'' output signal to notify the preceding track that it is ''empty''
 
* If a shared track segment leads into another shared track segment as either the left or right arrival point, use either the ''clear<sub>left</sub>'' or ''clear<sub>right</sub>'' output signal to notify the preceding track that it is ''empty''
 
===Route Circuit===
 
 
A route represents a single minecart that travels one way from source to destination. Route circuits have ''n'' bits, where ''n'' is the number of shared track segments the route travels on between its source and destination.
 
 
The following diagram is for an example a two-track route circuit. For routes that cover more than two shared tracks, simply add more middle layers.
 
{{diagram|spaces=yes|\
 
P──☼    <-- Initial release (sets first track bit)
 
  O■[#FF0]^■╢O
 
    ☼☼
 
P─☼[#FF0]☼─☼  <-- Second track release triggers if and only if first track bit is active
 
  O■^■╢O
 
      │
 
P─☼───☼  <-- Reset signal from pressure plate at destination clears last track bit
 
}}
 
 
The idea is that the track circuit ''release<sub>dir</sub>'' signals notify all appropriate routes via linkages. Each route keeps track of where it is, so that ''release'' signals are ignored unless the minecart released is on the route in question. Appropriate bit pressure plates are then linked to gear assemblies controlling rollers. Route bits turn on the rollers that get the minecart to the correct destination!
 

Please note that all contributions to Dwarf Fortress Wiki are considered to be released under the GFDL & MIT (see Dwarf Fortress Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel Editing help (opens in new window)

Templates used on this page: