Jump to content

Door pumps confound me


Recommended Posts

I understand automation, but for some reason I can't grok door pump and compressor automation. So, I'm gonna outsource it to y'all.

What I want: a pump comprised of three doors. The resting state should be door 1 closed, door 2 open (with vacuum), and door 3 closed. When activated it should pump gas.

I can map out the states, but can't implement it.

  Door 1 Door 2 Door 3
Resting Closed Open Closed
  Open Open Closed
  Closed Open Closed
  Closed Open Open
  Closed Closed Open
  Closed Closed Closed
Resting Closed Open Closed

 

It's probably the time aspect of this particular application. How do you folks think about it?

Link to comment
Share on other sites

I think you needlessly complicated the problem by wanting to open door 2 before door 1.

Think of door pumps as a moving "wave" of opening doors. Your solution should be extendable for arbitrary n doors.

With this idea in mind, you can just combine buffer+filter: buffer to keep the door open for some time, filter to "pass" the signal to next door so that it finished opening before the last door finishes closing.

Then you can just pulse the wave every once in a while using memory+not+filter.

Link to comment
Share on other sites

13 minutes ago, Occam Blazer said:

To get a vacuum in door 2 it has to be the last one opened. EG: all doors shut -> door 2 open

You don't need vacuum in 2. A freshly open door effectively produces vacuum for a tick. If you really want to optimize that much, you can cause door 2 to open just as door 1 does by adjusting filter/buffer timing for door 2 and 3.

A proper vacuum would be needed if you wanted your pump to double as isolation. But this is not a part of "pumping motion" itself.

If you want to have both "pumping mode" and "isolating mode", you can do it like "If NOT [pulsing pumping], filter, open door 2". This way door 2 will have two open triggers: the "pumping wave" is at door 2, or pumping is disabled (for all doors) for at least `t` second. Just make sure to keep them separate, so that when door 2 is opened by "isolating mode", it doesn't cause door 3 to "think" door 2 is pumping.

You can implement it all as a boolean table if you really want, but understanding what is happening is generally more helpful. In case of door pumps, what is happening is that closing door pushes all its content to all adjacent, unoccupied tiles on the tick it finishes closing. Opening door isn't special in any way, it just creates vacuum and so the compressed gas/liquid quickly expands there.

Link to comment
Share on other sites

I agree that you shouldn't bother with the Closed-Opened-Closed resting state. This could only be useful if you wanted to allow for a thermal insulation between left and right, but since you are pumping one into the other, that probably doesn't make any sense here. Skip that and use Opened-Opened-Closed as your resting & state 1 pumping.

Btw here is a solution if you don't need the isolating state (source):
34JSbmb6W0.gif.b2bbe1d9eb91e4491c0ff87d6ff39a97.gif

Link to comment
Share on other sites

8 hours ago, nakomaru said:

This could only be useful if you wanted to allow for a thermal insulation between left and right

That is exactly why I want a vacuum in the middle. I'm isolating a steam vent from the lower-temperature processing chamber.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...