Advertisement
UnitedMi

Turbine Control v1.3

Dec 11th, 2019
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. write("Init Turbine ... ")
  2. local turbine
  3. turbine = peripheral.find("BigReactors-Turbine")
  4. print("Done")
  5.  
  6. write("Init Monitor ... ")
  7. local mon
  8. mon = peripheral.wrap("back")
  9. print("Done")
  10.  
  11. write("Init Modem ... ")
  12. rednet.open("bottom")
  13. print("Done")
  14.  
  15. write("Init Values ... ")
  16. TankTimeout = 1
  17.  
  18. NumTanks = 7
  19. Tanks = {"tk01", "tk02", "tk03", "tk04", "tkA1", "tkA2", "tkA3"}
  20. Fluid = {"oil", "oil", "oil", "oil", "stm", "gas", "dsl"}
  21. MxAmt = {6400, 6400, 6400, 6400, 6400, 6400, 6400}
  22. CrStp = {0, 0, 0, 0, 0, 0, 0}
  23. MxStp = {4, 4, 4, 4, 4, 4, 4}
  24.  
  25. MxOil = 0
  26. CrOil = 0
  27. MxStm = 0
  28. CrStm = 0
  29. MxGas = 0
  30. CrGas = 0
  31. MxDsl = 0
  32. CrDsl = 0
  33. print("Done")
  34.  
  35. function UpdateTurbine()
  36. print("Printing Rotor Speed")
  37. mon.setCursorPos(1,1)
  38. mon.write("Rotor Speed")
  39. speed = turbine.getRotorSpeed()
  40. speed = math.floor(speed)
  41. mon.setCursorPos(1,2)
  42. mon.write(tostring(speed).." RPM")
  43.  
  44. print("Printing Fluid Flow Rate")
  45. mon.setCursorPos(1,4)
  46. mon.write("Steam Flow")
  47. flow = turbine.getFluidFlowRate()
  48. mon.setCursorPos(1,5)
  49. mon.write(tostring(flow).." mb/t")
  50.  
  51. print("Printing Power Output")
  52. mon.setCursorPos(1,7)
  53. mon.write("Power Output")
  54. powerOut = turbine.getEnergyProducedLastTick()
  55. mon.setCursorPos(1,8)
  56. mon.write(tostring(math.floor(powerOut)).." RF/t")
  57. end
  58.  
  59. function UpdateFluids()
  60. print("Printing Oil Stat")
  61. mon.setCursorPos(16,1)
  62. mon.write("Oil")
  63. mon.setCursorPos(16,2)
  64. mon.write(tostring(math.floor(CrOil / MxOil * 100)).."%")
  65. mon.setCursorPos(21,2)
  66. mon.write("~"..CrOil.." B")
  67.  
  68. print("Printing Gasoline Stat")
  69. mon.setCursorPos(16,4)
  70. mon.write("Gasoline")
  71. mon.setCursorPos(16,5)
  72. mon.write(tostring(math.floor(CrGas / MxGas * 100)).."%")
  73. mon.setCursorPos(21,5)
  74. mon.write("~"..CrGas.." B")
  75.  
  76. print("Printing Diesel Stat")
  77. mon.setCursorPos(16,7)
  78. mon.write("Diesel")
  79. mon.setCursorPos(16,8)
  80. mon.write(tostring(math.floor(CrDsl / MxDsl * 100)).."%")
  81. mon.setCursorPos(21,8)
  82. mon.write("~"..CrDsl.." B")
  83.  
  84. print("Printing Stem Stat")
  85. mon.setCursorPos(16,10)
  86. mon.write("Steam")
  87. mon.setCursorPos(16,11)
  88. mon.write(tostring(math.floor(CrStm / MxStm * 100)).."%")
  89. mon.setCursorPos(21,11)
  90. mon.write("~"..CrStm.." B")
  91. end
  92.  
  93. write("Init Tank Max Vals ... ")
  94. for i = 1, NumTanks do
  95. if (Fluid[i] == "oil") then
  96. MxOil = MxOil + MxAmt[i]
  97. elseif (Fluid[i] == "stm") then
  98. MxStm = MxStm + MxAmt[i]
  99. elseif (Fluid[i] == "gas") then
  100. MxGas = MxGas + MxAmt[i]
  101. elseif (Fluid[i] == "dsl") then
  102. MxDsl = MxDsl + MxAmt[i]
  103. end
  104. end
  105. print("Done")
  106.  
  107. print("Begining Loop")
  108. while (true) do
  109. print("Clearing Values")
  110. CrOil = 0
  111. CrStm = 0
  112. CrGas = 0
  113. CrDsl = 0
  114.  
  115. for i = 1, NumTanks do
  116. print("Checking Tank "..Tanks[i])
  117. rednet.broadcast(Tanks[i], "tanks")
  118. print("Awaiting Response")
  119. senderID, msg, protocol = rednet.receive("tanks", TankTimeout)
  120. CrStp[i] = tonumber(msg) or 0
  121. print("Received: "..CrStp[i])
  122. if (Fluid[i] == "oil") then
  123. CrOil = CrOil + (CrStp[i] / MxStp[i] * MxAmt[i])
  124. elseif (Fluid[i] == "stm") then
  125. CrStm = CrStm + (CrStp[i] / MxStp[i] * MxAmt[i])
  126. elseif (Fluid[i] == "gas") then
  127. CrGas = CrGas + (CrStp[i] / MxStp[i] * MxAmt[i])
  128. elseif (Fluid[i] == "dsl") then
  129. CrDsl = CrDsl + (CrStp[i] / MxStp[i] * MxAmt[i])
  130. end
  131. end
  132.  
  133. mon.clear()
  134. UpdateTurbine()
  135. UpdateFluids()
  136. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement