stationeers_ic10/filtration.ic10
2021-11-15 14:32:10 +01:00

70 lines
2.0 KiB
Plaintext

# Complete filtration circuit that controls filter-
# unit, checks filters, maintains safe temperature
# and pressure.
#
# "Mud pipe" is the shared input-pipe for all
# filtration units, where all gasses are mixed into
# a "mud" before being filtered.
alias mud_sensor d0 # Pipe Analyzer
alias tank d1 # Tank
alias purge_button d2 # Logic (Switch)
alias purge_pump d3 # Volume (Turbo) Pump
alias filter_unit d4 # Kit (Atmospherics)
alias filter_display d5 # Kit (Console)
alias mud_temp r0
alias filter1 r1
alias filter2 r2
alias tank_press r3
alias button r4
alias temp_run r5
alias press_run r6
alias filter_run r7
alias purge_run r8
define MAX_PRESS 58000 # 58MPa
define MAX_TEMP 313 # 40C
l filter1 purge_pump Maximum # borrow filter1
s purge_pump Setting filter1 # set max throughput
s filter_display Color 4 # red
start:
yield
s purge_pump On 0 # ensure pump is off
ls filter1 filter_unit 0 Quantity # check r-filter
ls filter2 filter_unit 1 Quantity # check l-filter
beqz filter1 swap_filter_1 # right filter spent
beqz filter2 swap_filter_2 # left filter spent
s filter_display On 0 # turn off filter display
l purge_run purge_button Setting # check purge
bgtz purge_run purge # run purge if triggered
j filter # or start filtering
swap_filter_1: # if right filter needs swapping
s filter_display Setting 1
s filter_display On 1
j filter # then start filtering
swap_filter_2: # if left filter needs swapping
s filter_display Setting 2
s filter_display On 1
j filter # then start filtering
filter:
l mud_temp mud_sensor Temperature # get input temp
l tank_press tank Pressure # get output pressure
slt temp_run mud_temp MAX_TEMP # is temp safe
slt press_run tank_press MAX_PRESS # is press safe
and filter_run temp_run press_run # temp and press?
s filter_unit On filter_run # run filter
j start # loop
purge: # purge button pressed
yield
s filter_unit On 0 # stop filtering
l tank_press tank Pressure # check pressure
s purge_pump On 1 # run evac-pump
bgtz tank_press purge # keep sucking until tank dry
j start # begin filtering