Advertisement
JachyHm

Vzduchotechnika 460

Aug 5th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 21.18 KB | None | 0 0
  1. ----------------------------------------Ventily povesene na brzdove potrubi---------------
  2.     if soupatkoVZ == 1 or matrosov or BS2 > 0.95 then
  3.         NastavHodnotuSID("diraDoPotrubi", 1, 460991)
  4.     else
  5.         NastavHodnotuSID("diraDoPotrubi", 0, 460991)
  6.         Call("SetControlValue","zvukSyceniVZ",0,0)
  7.     end
  8.     if Call("GetControlValue", "diraDoPotrubi", 0) > 0 then
  9.         if doplnujBrzdu then
  10.             Call("SetControlValue","VirtualMainReservoirPressureBAR",0,VirtualMainReservoirPressureBAR - ((math.sqrt(VirtualMainReservoirPressureBAR)/100)+0.01))
  11.             Call("SetControlValue","zvukSyceniVZ",0,1)
  12.         else
  13.             Call("SetControlValue","zvukSyceniVZ",0,0)
  14.         end
  15.     end
  16. ----------------------------------------DAKO BS2------------------------------------------
  17.     tlak_HP = Call("GetControlValue","VirtualBrakePipePressureBAR",0)
  18.     navoleny_tlak = Call("GetControlValue","VirtualBrakeSettedPressureBAR",0)
  19.     ridici_tlak = Call("GetControlValue","VirtualBrakeControlSystemPressureBAR",0)
  20.     plynuleValce = Call("GetControlValue","VirtualTrainBrakeCylinderPressureBAR",0)
  21.  
  22.     --netesnost brzdice
  23.         ridici_tlak = ridici_tlak-(((ridici_tlak/500)^2)*3*cas)
  24.  
  25.     --netesnost potrubi
  26.         Call("SetControlValue","VirtualBrakePipePressureBAR",0,tlak_HP-(((tlak_HP/500)^2)*3*cas*pocetJimek))
  27.    
  28.     --odvetravani regulacniho clenu pri prebiti
  29.         vychoziTlakBrzdice = math.max(vychoziTlakBrzdice-0.00333*cas,5)
  30.  
  31.     --nastaveni idealniho (ciloveho) tlaku v potrubi
  32.         BS2old = BS2
  33.         BS2 = Call("GetControlValue","VirtualBrake",0)
  34.         if BS2 ~= BS2old or doplnujBrzdu then
  35.             ventilSvihu = false
  36.             if BS2 < 0.05 then
  37.                 ventilSvihu = true
  38.                 doplnujBrzdu = true
  39.                 navoleny_tlak = VirtualMainReservoirPressureBAR
  40.             elseif BS2 < 0.14 then
  41.                 navoleny_tlak = vychoziTlakBrzdice
  42.                 doplnujBrzdu = true
  43.             elseif BS2 < 0.23 then
  44.                 doplnujBrzdu = false
  45.             elseif BS2 <= 0.82 then --0.28 - 0.78
  46.                 navoleny_tlak = vychoziTlakBrzdice - 0.3 - ((BS2 - 0.28)*3.4)
  47.                 doplnujBrzdu = true
  48.             elseif BS2 < 0.93 then
  49.                 doplnujBrzdu = false
  50.             end
  51.         end
  52.         Call("SetControlValue","VirtualBrakeSettedPressureBAR",0,navoleny_tlak)
  53.    
  54.     --tlak ridiciho ustroji brzdice
  55.         local zmena_tlaku_ridiciho_ustroji = math.sqrt(math.abs(math.min(navoleny_tlak, VirtualMainReservoirPressureBAR)-ridici_tlak))/3*cas
  56.         -- if navoleny_tlak > vychoziTlakBrzdice then
  57.         --     zmena_tlaku_ridiciho_ustroji = math.sqrt(math.abs(math.min(navoleny_tlak, VirtualMainReservoirPressureBAR)-ridici_tlak))/200
  58.         -- end
  59.         --if not ventilSvihu or tlak_HP < 5 then
  60.             if math.min(navoleny_tlak, VirtualMainReservoirPressureBAR) > ridici_tlak then
  61.                 ridici_tlak = math.min(ridici_tlak + zmena_tlaku_ridiciho_ustroji, math.min(navoleny_tlak, VirtualMainReservoirPressureBAR))
  62.             elseif ridici_tlak > navoleny_tlak then
  63.                 ridici_tlak = math.max(ridici_tlak - zmena_tlaku_ridiciho_ustroji, navoleny_tlak)
  64.             end
  65.         -- else
  66.         --     if (ridici_tlak < navoleny_tlak) then
  67.         --         ridici_tlak = math.min(ridici_tlak + math.sqrt(navoleny_tlak-ridici_tlak)*cas*0.03, navoleny_tlak)
  68.         --     else
  69.         --         ridici_tlak = ridici_tlak - math.sqrt(ridici_tlak-navoleny_tlak)*cas*0.03
  70.         --     end
  71.         -- end
  72.  
  73.     --prebijeni vychoziho tlaku brzdice
  74.         if (vychoziTlakBrzdice < ridici_tlak) then
  75.             vychoziTlakBrzdice = math.min(vychoziTlakBrzdice + math.sqrt(ridici_tlak-vychoziTlakBrzdice)*cas*0.05,ridici_tlak)
  76.         end
  77.    
  78.     --prenaseni tlaku ze soupravy - prevazne kvuli prebiti
  79.         if BS2 > 0.88 and BS2 < 0.95 then
  80.             tlak_HP = Call("GetControlValue","VirtualBrakePipePressureBAR",0)
  81.         end
  82.  
  83.     --rizeni membrany regulatoru hlavniho potrubi
  84.         idealni_membrana_ridiciho_ustroji = math.max(math.min((ridici_tlak-tlak_HP)*math.max(VirtualMainReservoirPressureBAR-tlak_HP,1),1),-1)
  85.  
  86.         if math.abs(skutecna_membrana_ridiciho_ustroji) < 0.01 and math.abs(idealni_membrana_ridiciho_ustroji - skutecna_membrana_ridiciho_ustroji) < 0.01 then
  87.             prah_hystereze_ridiciho_ustroji = math.min(prah_hystereze_ridiciho_ustroji + cas*0.01, 0.25)
  88.         elseif math.abs(idealni_membrana_ridiciho_ustroji - skutecna_membrana_ridiciho_ustroji) > 0.01 then
  89.             prah_hystereze_ridiciho_ustroji = math.max(prah_hystereze_ridiciho_ustroji - cas*math.sqrt(math.abs(idealni_membrana_ridiciho_ustroji-skutecna_membrana_ridiciho_ustroji)),0)
  90.         end
  91.        
  92.         if tlak_HP > 5 then
  93.             prah_hystereze_ridiciho_ustroji = 0
  94.         end
  95.        
  96.         if math.abs(skutecna_membrana_ridiciho_ustroji) < 0.01 and math.abs(idealni_membrana_ridiciho_ustroji) < 0.01 then
  97.             skutecna_membrana_ridiciho_ustroji = 0
  98.         elseif skutecna_membrana_ridiciho_ustroji < idealni_membrana_ridiciho_ustroji-prah_hystereze_ridiciho_ustroji then
  99.             skutecna_membrana_ridiciho_ustroji = math.min(skutecna_membrana_ridiciho_ustroji + math.sqrt(math.abs(idealni_membrana_ridiciho_ustroji-skutecna_membrana_ridiciho_ustroji))*cas,1)
  100.         elseif skutecna_membrana_ridiciho_ustroji > idealni_membrana_ridiciho_ustroji+prah_hystereze_ridiciho_ustroji then
  101.             skutecna_membrana_ridiciho_ustroji = math.max(skutecna_membrana_ridiciho_ustroji - math.sqrt(math.abs(idealni_membrana_ridiciho_ustroji-skutecna_membrana_ridiciho_ustroji))*cas,-1)
  102.         end
  103.  
  104.     --pistek regulatoru hlavniho potrubi - napousteni a vypousteni
  105.         if diraDoPotrubi == 0 then
  106.             if doplnujBrzdu then
  107.                 if tlak_HP > vychoziTlakBrzdice then
  108.                     Call("SoundBrzdice:SetParameter", "MainPipeReleasing", 0)
  109.                 else
  110.                     Call("SoundBrzdice:SetParameter", "MainPipeReleasing", math.max(math.min(skutecna_membrana_ridiciho_ustroji, tlak_HP),-1))
  111.                 end
  112.                 Call("SoundBrzdice:SetParameter", "MainPipeFilling", math.max(math.min(skutecna_membrana_ridiciho_ustroji, math.abs(tlak_HP - VirtualMainReservoirPressureBAR)),0))
  113.                 if skutecna_membrana_ridiciho_ustroji > 0 and tlak_HP < VirtualMainReservoirPressureBAR then
  114.                     tlak_HP = tlak_HP + math.abs(skutecna_membrana_ridiciho_ustroji*cas*math.max(tlak_HP-VirtualMainReservoirPressureBAR,1)/(Call("GetConsistLength")/100))
  115.                 elseif skutecna_membrana_ridiciho_ustroji < 0 then
  116.                     tlak_HP = math.max(tlak_HP - math.abs(skutecna_membrana_ridiciho_ustroji*cas/(Call("GetConsistLength")/100)),0)
  117.                 end
  118.             else
  119.                 Call("SoundBrzdice:SetParameter", "MainPipeReleasing", 0)
  120.                 Call("SoundBrzdice:SetParameter", "MainPipeFilling", 0)
  121.             end
  122.         elseif diraDoPotrubi > 0 then
  123.             Call("SoundBrzdice:SetParameter", "MainPipeReleasing", 0)
  124.             -- if doplnujBrzdu then
  125.             --     local prirustek_brzdeni = math.sqrt(math.abs(tlak_HP-math.min(ridici_tlak/2.5, VirtualMainReservoirPressureBAR/5)))/(Call("GetConsistLength")/10)
  126.             --     if tlak_HP > math.min(ridici_tlak/2.5, VirtualMainReservoirPressureBAR/5) then
  127.             --         tlak_HP = tlak_HP - prirustek_brzdeni * 15 * cas
  128.             --     else
  129.             --         tlak_HP = tlak_HP + prirustek_brzdeni * 15 * cas
  130.             --     end
  131.             -- else
  132.                 local prirustek_brzdeni = math.sqrt(tlak_HP)/(Call("GetConsistLength")/10)
  133.                 if tlak_HP > 0 then
  134.                     tlak_HP = tlak_HP - prirustek_brzdeni * 15 * cas
  135.                 else
  136.                     tlak_HP = 0
  137.                 end
  138.             -- end
  139.             if doplnujBrzdu then
  140.                 Call("SoundBrzdice:SetParameter", "MainPipeFilling", math.max(math.min(skutecna_membrana_ridiciho_ustroji, math.abs(tlak_HP - VirtualMainReservoirPressureBAR)),0))
  141.             else
  142.                 Call("SoundBrzdice:SetParameter", "MainPipeFilling", 0)
  143.             end
  144.         end
  145.  
  146.     --plneni potrubi - ubytek tlaku z hlavni jimky
  147.         if tlak_HP > PipeOld then
  148.             Call("SetControlValue","VirtualMainReservoirPressureBAR",0,VirtualMainReservoirPressureBAR - (tlak_HP - PipeOld)*Call("GetConsistLength")/(240*pocetJimek)*15*cas)
  149.         end
  150.         PipeOld = tlak_HP
  151.  
  152.     --ubytek v potrubi pri pripojeni vozu
  153.         if tlak_HP - cilovy_tlak_HP_po_zmene > math.sqrt(tlak_HP-cilovy_tlak_HP_po_zmene)*cas*3 and cilovy_tlak_HP_po_zmene > 0 then
  154.             tlak_HP = tlak_HP - math.sqrt(tlak_HP-cilovy_tlak_HP_po_zmene)*cas*3
  155.         else
  156.             cilovy_tlak_HP_po_zmene = -1
  157.         end
  158.        
  159.     --zapis hodnot
  160.         Call("SetControlValue","VirtualBrakeControlSystemPressureBAR",0,ridici_tlak)
  161.         Call("SetControlValue","VirtualBrakePipePressureBAR",0,tlak_HP)
  162. ----------------------------------------DAKO BP-------------------------------------------
  163.     valcePrimocinne = math.min(Call("GetControlValue","EngineBrakeControl",0)*3.8,VirtualMainReservoirPressureBAR)
  164. ----------------------------------------DAKO ROZVADEC-------------------------------------
  165.     VirtualDistributorReservoirPressureBAR = Call("GetControlValue","VirtualDistributorReservoirPressureBAR",0)
  166.     VirtualDistributorControlReservoirPressureBAR = Call("GetControlValue","VirtualDistributorControlReservoirPressureBAR",0)
  167.  
  168.     VirtualDistributorReservoirPressureBAR = VirtualDistributorReservoirPressureBAR-(((VirtualDistributorReservoirPressureBAR/500)^2)*5*cas)
  169.     if tlak_HP < 3 then
  170.         VirtualDistributorControlReservoirPressureBAR = VirtualDistributorControlReservoirPressureBAR-(((VirtualDistributorControlReservoirPressureBAR/200)^2)*5*cas)
  171.     end
  172.  
  173.     --plneni zasobni jimky rozvadece
  174.         if VirtualDistributorReservoirPressureBAR < tlak_HP then
  175.             Call("SetControlValue","VirtualDistributorReservoirPressureBAR",0,VirtualDistributorReservoirPressureBAR+math.sqrt(math.abs(tlak_HP - VirtualDistributorReservoirPressureBAR))/100*15*cas)
  176.             Call("SetControlValue","VirtualBrakePipePressureBAR",0,tlak_HP-math.sqrt(math.abs(tlak_HP - VirtualDistributorReservoirPressureBAR))/100*15*cas)
  177.             VirtualDistributorReservoirPressureBAR = Call("GetControlValue","VirtualDistributorReservoirPressureBAR",0)
  178.             tlak_HP = Call("GetControlValue","VirtualBrakePipePressureBAR",0)
  179.         end
  180.  
  181.     --ridici jimka
  182.         if VirtualDistributorControlReservoirPressureBAR < tlak_HP then
  183.             Call("SetControlValue","VirtualDistributorControlReservoirPressureBAR",0,VirtualDistributorControlReservoirPressureBAR+math.sqrt(math.abs(tlak_HP - VirtualDistributorControlReservoirPressureBAR))*0.03*cas)
  184.             Call("SetControlValue","VirtualBrakePipePressureBAR",0,tlak_HP-math.sqrt(math.abs(tlak_HP - VirtualDistributorControlReservoirPressureBAR))/500*15*cas)
  185.             VirtualDistributorControlReservoirPressureBAR = Call("GetControlValue","VirtualDistributorControlReservoirPressureBAR",0)
  186.             tlak_HP = Call("GetControlValue","VirtualBrakePipePressureBAR",0)
  187.         elseif math.abs(VirtualDistributorControlReservoirPressureBAR - tlak_HP) < 0.05 then
  188.             Call("SetControlValue","VirtualDistributorControlReservoirPressureBAR",0,VirtualDistributorControlReservoirPressureBAR-0.005*cas)
  189.             VirtualDistributorControlReservoirPressureBAR = Call("GetControlValue","VirtualDistributorControlReservoirPressureBAR",0)
  190.         end
  191.  
  192.     --plneni valcu
  193.         cilovy_tlak_bv = math.max(VirtualDistributorControlReservoirPressureBAR-tlak_HP,0)*2.53
  194.         rozdil_bv = math.abs(cilovy_tlak_bv-VirtualDistributorBrakeCylinderPressureBAR)
  195.         if cilovy_tlak_bv > VirtualDistributorBrakeCylinderPressureBAR then
  196.             VirtualDistributorBrakeCylinderPressureBAR = math.min(VirtualDistributorBrakeCylinderPressureBAR + 0.7*cas*rozdil_bv*math.min(math.sqrt(math.abs(VirtualDistributorBrakeCylinderPressureBAR-VirtualDistributorReservoirPressureBAR)),1),cilovy_tlak_bv)
  197.             Call("SetControlValue","VirtualDistributorReservoirPressureBAR",0,VirtualDistributorReservoirPressureBAR-math.sqrt(math.abs(VirtualDistributorBrakeCylinderPressureBAR - VirtualDistributorReservoirPressureBAR))/500*15*cas*rozdil_bv)
  198.             VirtualDistributorReservoirPressureBAR = Call("GetControlValue","VirtualDistributorReservoirPressureBAR",0)
  199.             Call("SoundBrzdice:SetParameter", "CylinderFilling", rozdil_bv)
  200.             Call("SoundBrzdice:SetParameter", "CylinderReleasing", 0)
  201.         elseif cilovy_tlak_bv < VirtualDistributorBrakeCylinderPressureBAR then
  202.             VirtualDistributorBrakeCylinderPressureBAR = math.max(VirtualDistributorBrakeCylinderPressureBAR - 0.3*cas*rozdil_bv*math.sqrt(VirtualDistributorBrakeCylinderPressureBAR),cilovy_tlak_bv)
  203.             Call("SoundBrzdice:SetParameter", "CylinderReleasing", rozdil_bv)
  204.             Call("SoundBrzdice:SetParameter", "CylinderFilling", 0)
  205.         else
  206.             Call("SoundBrzdice:SetParameter", "CylinderReleasing", 0)
  207.             Call("SoundBrzdice:SetParameter", "CylinderFilling", 0)
  208.         end
  209.  
  210.     --prevod ubytek -> tlak valcu
  211.         nastaveneValce = VirtualDistributorBrakeCylinderPressureBAR
  212.         nastaveneValce_bezBP = nastaveneValce
  213.  
  214.     --DAKO TR1
  215.         if nezobrazujValce then
  216.             nastaveneValce = math.max(math.min(valcePrimocinne,3.8),0)
  217.         else
  218.             nastaveneValce = math.max(math.min(math.max(nastaveneValce,valcePrimocinne),3.8),0)
  219.         end
  220.    
  221.     --zplynuleni prechodu valcu
  222.         if nastaveneValce_bezBP > plynuleValce_bezBP then
  223.             plynuleValce_bezBP = plynuleValce_bezBP + math.sqrt(math.abs(nastaveneValce_bezBP-plynuleValce_bezBP))/20*15*cas
  224.         elseif plynuleValce_bezBP > nastaveneValce_bezBP then
  225.             plynuleValce_bezBP = math.max(plynuleValce_bezBP - math.sqrt(math.abs(nastaveneValce_bezBP-plynuleValce_bezBP))/40*15*cas,0)
  226.         end
  227.    
  228.     --vypocet vracene hodnoty TBC
  229.         max_tbc = -math.log(0.18*rychlostKolaPodvozek1+20)+4
  230.         actual_tbc = math.max(max_tbc*math.min(plynuleValce_bezBP/3.8,1),0)
  231.  
  232. ----------------------------------------Brzdove valce-------------------------------------
  233.     if nastaveneValce > plynuleValce then
  234.         if valcePrimocinne - plynuleValce > 0.1 then
  235.             Call("SetControlValue","VirtualMainReservoirPressureBAR",0,VirtualMainReservoirPressureBAR - 0.2*cas)
  236.         end
  237.         plynuleValce = plynuleValce + math.sqrt(math.abs(nastaveneValce-plynuleValce))/20*15*cas
  238.     elseif plynuleValce > nastaveneValce then
  239.         plynuleValce = plynuleValce - math.sqrt(math.abs(nastaveneValce-plynuleValce))/40*15*cas
  240.     end
  241.     Call("SetControlValue","VirtualTrainBrakeCylinderPressureBAR",0,plynuleValce)
  242.  
  243. ----------------------------------------Manometry-----------------------------------------
  244.     manometrHP = Call("GetControlValue", "ManometrHP", 0)
  245.     if (diraDoPotrubi > 0) then
  246.         local prirustek_brzdeni = math.sqrt(math.abs(manometrHP-math.min(tlak_HP/2.5, VirtualMainReservoirPressureBAR/5)))
  247.         if manometrHP > math.min(tlak_HP/2.5, VirtualMainReservoirPressureBAR/5) then
  248.             manometrHP = math.min(math.max(manometrHP - prirustek_brzdeni * 15 * cas,math.min(tlak_HP/2.5, VirtualMainReservoirPressureBAR/5)), manometrHP)
  249.         else
  250.             manometrHP = math.max(math.min(manometrHP + prirustek_brzdeni * 15 * cas,math.min(tlak_HP/2.5, VirtualMainReservoirPressureBAR/5)), manometrHP)
  251.         end
  252.     elseif doplnujBrzdu then
  253.         if (math.min(navoleny_tlak,VirtualMainReservoirPressureBAR) < manometrHP-0.05) then
  254.             local prirustek_brzdeni = math.sqrt(math.abs(manometrHP-(math.min(tlak_HP,VirtualMainReservoirPressureBAR)-(math.min(tlak_HP,VirtualMainReservoirPressureBAR)-math.min(navoleny_tlak,VirtualMainReservoirPressureBAR))*0.3)))
  255.             manometrHP = math.max(manometrHP - prirustek_brzdeni * 3 * cas,(math.min(tlak_HP,VirtualMainReservoirPressureBAR)-(math.min(tlak_HP,VirtualMainReservoirPressureBAR)-math.min(navoleny_tlak,VirtualMainReservoirPressureBAR))*0.3))
  256.         elseif (math.min(navoleny_tlak,VirtualMainReservoirPressureBAR) > manometrHP+0.05) then
  257.             local prirustek_brzdeni = math.sqrt(math.abs(manometrHP-(math.min(tlak_HP,VirtualMainReservoirPressureBAR)+(math.min(navoleny_tlak,VirtualMainReservoirPressureBAR)-math.min(tlak_HP,VirtualMainReservoirPressureBAR))*0.3)))
  258.             manometrHP = math.min(manometrHP + prirustek_brzdeni * 3 * cas,(math.min(tlak_HP,VirtualMainReservoirPressureBAR)+(math.min(navoleny_tlak,VirtualMainReservoirPressureBAR)-math.min(tlak_HP,VirtualMainReservoirPressureBAR))*0.3))
  259.         end
  260.     else
  261.         if (tlak_HP < manometrHP-0.05) then
  262.             manometrHP = manometrHP - math.sqrt(manometrHP-tlak_HP) * 3 * cas
  263.         elseif (tlak_HP > manometrHP+0.05) then
  264.             manometrHP = manometrHP + math.sqrt(tlak_HP-manometrHP) * 3 * cas
  265.         end
  266.     end
  267.     Call("SetControlValue", "ManometrHP", 0, manometrHP)
  268.  
  269.     manometrBV = Call("GetControlValue", "ManometrBV", 0)
  270.     if (manometrBV < 0.5 and plynuleValce > 0.5) then
  271.         naskokManometruBV = true
  272.     elseif (plynuleValce < 0.5 or manometrBV >= 0.5) then
  273.         naskokManometruBV = false
  274.     end
  275.     if ((manometrBV < plynuleValce and manometrBV >= 0.5) or naskokManometruBV) then
  276.         if (naskokManometruBV) then
  277.             if (manometrBV < 0.5) then
  278.                 manometrBV = math.min(manometrBV + math.sqrt(0.5-manometrBV)*cas*5,0.5)
  279.             end
  280.         else
  281.             manometrBV = math.min(manometrBV + math.sqrt(plynuleValce-manometrBV)*cas,plynuleValce)
  282.         end
  283.     elseif (manometrBV > plynuleValce) then
  284.         manometrBV = math.max(manometrBV - math.sqrt(manometrBV-plynuleValce)*cas,plynuleValce)
  285.     end
  286.     Call("SetControlValue", "ManometrBV", 0, manometrBV)
  287.  
  288.     if Call("GetControlValue", "Odkalovani", 0) > 0.5 and baterie == 1 then
  289.         odkalovaniJimek = true
  290.     else
  291.         odkalovaniJimek = false
  292.     end
  293.     manometrHJ = Call("GetControlValue", "ManometrHJ", 0)
  294.     if ((diraDoPotrubi > 0 and doplnujBrzdu) or odkalovaniJimek) then
  295.         ubytekHJ = true
  296.         if (manometrHJ < VirtualMainReservoirPressureBAR-math.abs(tlak_HP-VirtualMainReservoirPressureBAR)/10) then
  297.             manometrHJ = math.min(manometrHJ + math.sqrt((VirtualMainReservoirPressureBAR-math.abs(tlak_HP-VirtualMainReservoirPressureBAR)/10)-manometrHJ)*cas*15,VirtualMainReservoirPressureBAR-math.abs(tlak_HP-VirtualMainReservoirPressureBAR)/10)
  298.         else
  299.             manometrHJ = math.max(manometrHJ - math.sqrt(manometrHJ-(VirtualMainReservoirPressureBAR-math.abs(tlak_HP-VirtualMainReservoirPressureBAR)/10))*cas*15,VirtualMainReservoirPressureBAR-math.abs(tlak_HP-VirtualMainReservoirPressureBAR)/10)
  300.         end
  301.     elseif (not prekmitManometrHJ and not podkmitManometrHJ) then
  302.         if (ubytekHJ) then
  303.             if (manometrHJ < VirtualMainReservoirPressureBAR) then
  304.                 manometrHJ = math.min(manometrHJ + math.sqrt(VirtualMainReservoirPressureBAR-manometrHJ)*cas*15,VirtualMainReservoirPressureBAR)
  305.             else
  306.                 manometrHJ = math.max(manometrHJ - math.sqrt(manometrHJ-VirtualMainReservoirPressureBAR)*cas*15,VirtualMainReservoirPressureBAR)
  307.             end
  308.             if (math.abs(VirtualMainReservoirPressureBAR-manometrHJ)<0.01) then
  309.                 ubytekHJ = false
  310.             end
  311.         else
  312.             if (manometrHJ < VirtualMainReservoirPressureBAR) then
  313.                 manometrHJ = math.min(manometrHJ + math.sqrt(VirtualMainReservoirPressureBAR-manometrHJ)*cas*5,VirtualMainReservoirPressureBAR)
  314.             else
  315.                 manometrHJ = math.max(manometrHJ - math.sqrt(manometrHJ-VirtualMainReservoirPressureBAR)*cas*5,VirtualMainReservoirPressureBAR)
  316.             end
  317.         end
  318.     end
  319.     if (baterie == 1 and vnitrniSit220V == 1 and PC == 3.75 and (hlkomp == -1 or (hlkomp == 1 and autoKompresor))) then
  320.         if (not podkmitManometrHJ) then
  321.             prekmitManometrHJ = true
  322.         end
  323.         local prekmit = VirtualMainReservoirPressureBAR+0.05
  324.         local podkmit = math.max(VirtualMainReservoirPressureBAR-0.05,0)
  325.         if (prekmitManometrHJ) then
  326.             if (manometrHJ < prekmit) then
  327.                 manometrHJ = math.min(manometrHJ + math.sqrt(prekmit-manometrHJ)*cas*10,prekmit)
  328.             else
  329.                 manometrHJ = math.max(manometrHJ - math.sqrt(manometrHJ-prekmit)*cas*10,prekmit)
  330.             end
  331.             if (manometrHJ >= prekmit) then
  332.                 prekmitManometrHJ = false
  333.                 podkmitManometrHJ = true
  334.             end
  335.         else
  336.             if (manometrHJ < podkmit) then
  337.                 manometrHJ = math.min(manometrHJ + math.sqrt(podkmit-manometrHJ)*cas*10,podkmit)
  338.             else
  339.                 manometrHJ = math.max(manometrHJ - math.sqrt(manometrHJ-podkmit)*cas*10,podkmit)
  340.             end
  341.             if (manometrHJ <= podkmit) then
  342.                 prekmitManometrHJ = true
  343.                 podkmitManometrHJ = false
  344.             end
  345.         end
  346.     else
  347.         prekmitManometrHJ = false
  348.         podkmitManometrHJ = false
  349.     end
  350.     Call("SetControlValue", "ManometrHJ", 0, manometrHJ)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement