Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- define Heaters 24258244
- define Coolers -739292323
- define GasSensors -1252983604
- define kelvin 273.15
- define minT 20 #min temperature
- define maxT 35 #max temperature
- define T 25 #optimal temperature
- define minP 20 #min pressure
- define maxP 120 #max pressure
- define P 105 #optimal pressure
- define maxCO2 1 #max CO2
- define minCO2 0.25 #min CO2
- define maxO2 0.27
- define minO2 0.21
- define maxN2 1
- define minN2 0
- define maxH2O 0
- define minH2O 0
- define maxPollutants 0.001
- alias depressurize d0 #emergency depressuruze lever
- alias actIn d1 #active vent input
- alias actOut d2 #active vent output
- alias In d3 #input device on/off
- alias Out d4 #output device on/off
- alias targCool r0 #target temperature for coolers
- alias targHeat r1 #target temperature for heaters
- alias t r2 #temperature
- alias p r3 #pressure
- alias tOk r4 #temperature ok
- #alias pOk r5 #pressure ok
- alias inOnOff r6 #variable for enabling in devices
- alias outOnOff r7 #variable for enabling out devices
- alias targetP r8 #target pressure
- move targCool maxT #setup target for coolers
- move targHeat minT #setup target for heaters
- move targetP minP #setup target for pressure
- start:
- jal update
- jal temperature
- jal atmos
- jal onOff
- yield
- j start
- update:
- lb p GasSensors Pressure Average
- lb t GasSensors Temperature Average
- sub t t kelvin #to celsius
- s db Setting t
- j ra
- temperature:
- sgt r12 p minP #check pressure
- sgt r10 t targCool #temperature > targetColling
- and r10 r10 r12 #work only if enough pressure
- select targCool r10 T maxT #update cooling target
- sb Coolers On r10 #enable cooling if temp too high
- slt r11 t targHeat #temperature < targetHeating
- and r11 r11 r12 #work only if enough pressure
- select targHeat r11 T minT #update targetHeating
- sb Heaters On r11 #enable heating if temp too low
- nor tOk r10 r11 #if both coolers and heaters off
- j ra
- atmos:
- brdns depressurize 6 #if no lever connected ignore
- l r13 depressurize Setting #load state of lever
- breqz r13 4 #if lever state 0 then ignore
- move outOnOff 1 #enable out devices
- move inOnOff 0 #disable in devices
- bgtz r13 ra #exit this function if lever state 1
- slt r13 p P #pressure < target pressure
- and inOnOff r13 tOk #pressure and temperature is ok
- alias gas r14 #variable for gas
- lb gas GasSensors RatioCarbonDioxide Average
- bgt gas maxCO2 refresh
- blt gas minCO2 refresh
- lb gas GasSensors RatioOxygen Average
- bgt gas maxO2 refresh
- blt gas minO2 refresh
- lb gas GasSensors RatioNitrogen Average
- bgt gas maxN2 refresh
- blt gas minN2 refresh
- lb gas GasSensors RatioWater Average
- bgt gas maxH2O refresh
- blt gas minH2O refresh
- lb gas GasSensors RatioVolatiles Average
- bgt gas maxPollutants refresh
- lb gas GasSensors RatioPollutant Average
- bgt gas maxPollutants refresh
- lb gas GasSensors RatioNitrousOxide Average
- bgt gas maxPollutants refresh
- sgt outOnOff p maxP #pressure > max pressure
- j ra #exit function
- refresh:
- s db Setting 555
- mul r13 minP 2 #Minimal pressure to enable out
- min r13 r13 P #restrict minimal pressure
- sgt r13 p r13 #pressure > min pressure
- and outOnOff r13 1 #pressure enough and temp ok
- j ra #exit function
- onOff:
- brdns actIn 5 #if no device ignore
- s actIn Mode 0 #Outward
- s actIn PressureExternal maxP #maxPressure
- s actIn Lock 1 #lock device
- s actIn On inOnOff
- brdns actOut 5 #if no device ignore
- s actOut Mode 1 #Invard
- s actOut PressureExternal 0 #minPressure
- s actOut Lock 1 #lock device
- s actOut On outOnOff
- brdns In 2 #if no device ignore
- s In On inOnOff
- brdns Out 2 #if no device ignore
- s Out On outOnOff
- j ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement