Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- dofile("/disk/common.inc")
- modem = peripheral.wrap(getsidefor("modem"))
- turbine = peripheral.wrap(getsidefor("BigReactors-Turbine"))
- config = {}
- config[1] = 0.2 -- controletimer
- config[2] = 60 -- alivetimer
- config[3] = 1 -- displaytimer
- config[4] = 800 --prefspeed1
- config[5] = 1830 -- prefspeed2
- config[6] = 500 --speedup1
- config[7] = 1500 --speedup2
- config[8] = 6969 -- modem channel
- writeup_array(config,"turbine.cfg")
- local speed = nil
- modem.open(config[8])
- controltimer = os.startTimer(0.2)
- alivetimer = os.startTimer(1)
- displaytimer = os.startTimer(1)
- specs = {}
- while true do
- event,parm1,parm2,parm3,parm4,parm5,parm6 = os.pullEvent()
- --print(event)
- if event == "modem_message" then
- --event, side, frequency, replyFrequency, message, distanceevent, side, frequency, replyFrequency, message, distance
- --print (param3)
- org = parm3
- message = parm4
- mdata = textutils.unserialise(parm4)
- print(parm4)
- if mdata[1] == "STAT" and mdata[2] == tostring(os.getComputerID()) then
- print ("sendback")
- mstr = textutils.serialise({"STAT_TURBINE",specs})
- modem.transmit(config[8],os.computerID(),mstr)
- end
- elseif event == "timer" then
- if parm1 == controltimer then
- speed = turbine.getRotorSpeed()
- specs[1] = speed
- specs[2] = turbine.getEnergyProducedLastTick ()
- specs[3] = tostring(turbine.getInductorEngaged())
- specs[4] = tostring(turbine.getActive())
- energybuffer = turbine.getEnergyStored()
- specs[5] = energybuffer
- specs[6] = turbine.getFluidFlowRate()
- specs[7] = turbine.getInputAmount()
- specs[8] = turbine.getOutputAmount()
- -- so what mode where in
- overspeed = speed - config[5]
- specs[9] = overspeed
- if energybuffer > 500000 or speed < config[7] then
- turbine.setInductorEngaged(false)
- valve = 2000
- if speed > config[5] then
- -- disengaged_limiter
- valve = 2000 - math.pow(overspeed,overspeed)
- valve = valve - overspeed
- end
- turbine.setFluidFlowRateMax(valve)
- elseif speed > config[5] then
- --need to use throthle
- -- engaged_limiter
- valve = 2000 - math.pow(overspeed,overspeed)
- turbine.setFluidFlowRateMax(valve)
- turbine.setInductorEngaged(true)
- else
- --we need to produce energy and not have full speed
- turbine.setFluidFlowRateMax(2000)
- turbine.setInductorEngaged(true)
- end
- controltimer = os.startTimer(0.1)
- elseif parm1 == displaytimer then
- term.clear()
- term.setCursorPos(1,1)
- print (textutils.serialise(specs))
- print (textutils.serialise(config))
- displaytimer = os.startTimer(config[3])
- elseif parm1 == alivetimer then
- alivetimer = os.startTimer()
- inp = {"ALIVE"}
- modem.transmit(config[8],os.getComputerID(),textutils.serialise(inp))
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement