mirror of
https://github.com/metrostroi-repo/MetrostroiAddon.git
synced 2026-05-02 00:42:29 +00:00
207 lines
7.7 KiB
Lua
207 lines
7.7 KiB
Lua
--------------------------------------------------------------------------------
|
|
-- Resistor arrays calculations
|
|
--------------------------------------------------------------------------------
|
|
-- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o.
|
|
-- Contains proprietary code. See license.txt for additional information.
|
|
--------------------------------------------------------------------------------
|
|
--[[
|
|
Rxx S P T P1 P2 S1 S2 S(XT) P(T) M(X)
|
|
R01 = 4.639 0.000 4.639 0.000 0.000 0.188 0.188 1.000 1.000 0.000
|
|
R02 = 4.639 0.000 4.639 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R03 = 2.434 0.000 3.205 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R04 = 1.662 0.000 2.433 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R05 = 1.329 0.000 2.100 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R06 = 1.066 0.000 1.837 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R07 = 0.816 0.000 1.587 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R08 = 0.608 0.000 1.379 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R09 = 0.387 0.000 1.158 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R10 = 0.190 0.000 0.961 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R11 = 0.000 0.000 0.771 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R12 = 0.000 0.000 0.771 0.000 0.000 0.188 0.188 1.000 1.000 0.000
|
|
R13 = 0.000 0.000 0.771 0.000 0.000 0.019 0.019 1.000 0.000 0.000
|
|
|
|
R14 = 0.000 1.993 0.593 0.994 0.999 0.019 0.019 0.000 0.000 0.000
|
|
R15 = 0.000 1.329 0.548 0.661 0.668 0.188 0.188 0.000 0.000 0.000
|
|
R16 = 0.000 0.816 0.495 0.411 0.405 0.188 0.188 0.000 0.000 0.000
|
|
R17 = 0.000 0.387 0.427 0.190 0.197 0.188 0.188 0.000 0.000 0.000
|
|
R18 = 0.000 0.000 0.328 0.000 0.000 0.188 0.188 0.000 0.000 0.000
|
|
R19 = 0.000 0.000 0.328 0.000 0.000 0.188 0.188 1.000 0.000 0.000
|
|
R20 = 0.000 0.000 0.328 0.000 0.000 0.019 0.019 1.000 0.000 0.000
|
|
]]--
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Resistor arrays calculations - auto-generated by gen.lua
|
|
--------------------------------------------------------------------------------
|
|
Metrostroi.DefineSystem("Gen_Res_702c")
|
|
|
|
local R = {}
|
|
|
|
local P14_1
|
|
local P1_2
|
|
local P2_3
|
|
local P3_4
|
|
local P4_11
|
|
local P13_11
|
|
local P12_11
|
|
local P9_10
|
|
local P8_9
|
|
local P7_8
|
|
local P6_7
|
|
local P10_13
|
|
|
|
local P20_21
|
|
local P21_22
|
|
local P23_24
|
|
local P24_25
|
|
|
|
function TRAIN_SYSTEM.InitializeResistances_81_702(Train)
|
|
P14_1 = Train.KF_6A["P14-P1"]
|
|
P1_2 = Train.KF_6A["P1-P2"]
|
|
P2_3 = Train.KF_6A["P2-P3"]
|
|
P3_4 = Train.KF_6A["P3-P4"]
|
|
P4_11 = Train.KF_6A["P4-P11"]
|
|
P13_11 = Train.KF_6A["P13-P11"]
|
|
P10_13 = Train.KF_6A["P10-P13"]
|
|
P12_11 = Train.KF_6A["P12-P11"]
|
|
P9_10 = Train.KF_6A["P9-P10"]
|
|
P8_9 = Train.KF_6A["P8-P9"]
|
|
P7_8 = Train.KF_6A["P7-P8"]
|
|
P6_7 = Train.KF_6A["P6-P7"]
|
|
|
|
P20_21 = Train.KF_7A["P20-P21"]
|
|
P21_22 = Train.KF_7A["P21-P22"]
|
|
P23_24 = Train.KF_7A["P23-P24"]
|
|
P24_25 = Train.KF_7A["P24-P25"]
|
|
end
|
|
|
|
|
|
function TRAIN_SYSTEM.R1(Train)
|
|
local RK = Train.RheostatController
|
|
local T = Train.PositionSwitch
|
|
local Poff = 1e-9+1e9*(1-RK.P1)
|
|
local Moff = 1e-9+1e9*(1-Train.M.Value)
|
|
local Pon = 1e-9+1e9*(RK.P1)
|
|
local Sh = 1e-9+1e9*(1-Train.SH1.Value)
|
|
|
|
R[1] = ((RK[2])^-1 + (P1_2)^-1)^-1
|
|
R[2] = ((RK[4])^-1 + (P2_3+R[1])^-1)^-1
|
|
R[3] = ((RK[6])^-1 + (P3_4+R[2])^-1)^-1
|
|
R[4] = ((RK[10]+Pon+Moff)^-1 + (RK[8])^-1)^-1
|
|
R[5] = ((P12_11)^-1 + (T[12])^-1)^-1
|
|
R[6] = ((P13_11)^-1 + (RK[11]+R[5])^-1)^-1
|
|
R[7] = ((RK[13])^-1 + (P10_13)^-1)^-1
|
|
R[8] = ((RK[7])^-1 + (RK[9]+Pon+Moff)^-1)^-1
|
|
R[9] = ((RK[1])^-1 + (P6_7)^-1)^-1
|
|
R[10] = ((RK[3])^-1 + (P7_8+R[9])^-1)^-1
|
|
R[11] = ((P8_9+R[10])^-1 + (RK[5])^-1)^-1
|
|
R[12] = ((P9_10+R[11])^-1 + (R[8])^-1)^-1
|
|
R[13] = ((P4_11+R[3])^-1 + (R[4])^-1)^-1
|
|
R[14] = ((Pon)*(R[13])+(Pon)*(Poff+T[10]+P14_1)+(R[13])*(Poff+T[10]+P14_1))/(Pon)
|
|
R[15] = ((Pon)*(R[13])+(Pon)*(Poff+T[10]+P14_1)+(R[13])*(Poff+T[10]+P14_1))/(R[13])
|
|
R[16] = ((Pon)*(R[13])+(Pon)*(Poff+T[10]+P14_1)+(R[13])*(Poff+T[10]+P14_1))/(Poff+T[10]+P14_1)
|
|
R[17] = ((Poff)^-1 + (R[16])^-1)^-1
|
|
R[18] = ((R[12])*(Poff)+(R[12])*(R[7]+R[6])+(Poff)*(R[7]+R[6]))/(R[12])
|
|
R[19] = ((R[12])*(Poff)+(R[12])*(R[7]+R[6])+(Poff)*(R[7]+R[6]))/(Poff)
|
|
R[20] = ((R[12])*(Poff)+(R[12])*(R[7]+R[6])+(Poff)*(R[7]+R[6]))/(R[7]+R[6])
|
|
R[21] = ((R[20])^-1 + (Pon)^-1)^-1
|
|
R[22] = ((R[19])^-1 + (R[14])^-1)^-1
|
|
R[23] = ((R[21])*(R[22])+(R[21])*(R[15])+(R[22])*(R[15]))/(R[21])
|
|
R[24] = ((R[21])*(R[22])+(R[21])*(R[15])+(R[22])*(R[15]))/(R[22])
|
|
R[25] = ((R[21])*(R[22])+(R[21])*(R[15])+(R[22])*(R[15]))/(R[15])
|
|
R[26] = ((R[17])^-1 + (R[23])^-1)^-1
|
|
R[27] = ((R[25])^-1 + (R[18])^-1)^-1
|
|
R[28] = ((R[27])*(R[26])+(R[27])*(Moff)+(R[26])*(Moff))/(R[27])
|
|
R[29] = ((R[27])*(R[26])+(R[27])*(Moff)+(R[26])*(Moff))/(R[26])
|
|
R[30] = ((R[27])*(R[26])+(R[27])*(Moff)+(R[26])*(Moff))/(Moff)
|
|
R[31] = ((R[30])^-1 + (R[24])^-1)^-1
|
|
R[32] = ((R[31])^-1 + (R[29]+R[28])^-1)^-1
|
|
return R[32]
|
|
end
|
|
|
|
function TRAIN_SYSTEM.R2C1(Train)
|
|
local RK = Train.RheostatController
|
|
local T = Train.PositionSwitch
|
|
local Poff = 1e-9+1e9*(1-RK.P1)
|
|
local Moff = 1e-9+1e9*(1-Train.M.Value)
|
|
local Pon = 1e-9+1e9*(RK.P1)
|
|
local Sh = 1e-9+1e9*(1-Train.SH1.Value)
|
|
|
|
R[1] = ((RK[2])^-1 + (P1_2)^-1)^-1
|
|
R[2] = ((RK[4])^-1 + (P2_3+R[1])^-1)^-1
|
|
R[3] = ((RK[6])^-1 + (P3_4+R[2])^-1)^-1
|
|
R[4] = ((RK[10]+Pon+Moff)^-1 + (RK[8])^-1)^-1
|
|
R[5] = ((P12_11)^-1 + (T[12])^-1)^-1
|
|
R[6] = ((P13_11)^-1 + (RK[11]+R[5])^-1)^-1
|
|
R[7] = ((RK[13])^-1 + (P10_13)^-1)^-1
|
|
R[8] = ((RK[7])^-1 + (RK[9]+Pon+Moff)^-1)^-1
|
|
R[9] = ((RK[1])^-1 + (P6_7)^-1)^-1
|
|
R[10] = ((Poff+Pon)^-1 + (P4_11+R[3])^-1)^-1
|
|
R[11] = ((R[10])^-1 + (R[4])^-1)^-1
|
|
R[12] = ((Pon+Poff)^-1 + (R[8])^-1)^-1
|
|
R[13] = ((R[9]+P7_8)^-1 + (RK[3])^-1)^-1
|
|
R[14] = ((P8_9+R[13])^-1 + (RK[5])^-1)^-1
|
|
R[15] = ((R[12])^-1 + (R[14]+P9_10)^-1)^-1
|
|
R[16] = ((R[11])*(R[6])+(R[11])*(Moff)+(R[6])*(Moff))/(R[11])
|
|
R[17] = ((R[11])*(R[6])+(R[11])*(Moff)+(R[6])*(Moff))/(R[6])
|
|
R[18] = ((R[11])*(R[6])+(R[11])*(Moff)+(R[6])*(Moff))/(Moff)
|
|
R[19] = ((R[18])^-1 + (R[7]+R[15]+Poff+T[10]+P14_1)^-1)^-1
|
|
R[20] = ((R[19])^-1 + (R[17]+R[16])^-1)^-1
|
|
return R[20]
|
|
end
|
|
|
|
function TRAIN_SYSTEM.R2C2(Train)
|
|
local RK = Train.RheostatController
|
|
local T = Train.PositionSwitch
|
|
local Poff = 1e-9+1e9*(1-RK.P1)
|
|
local Moff = 1e-9+1e9*(1-Train.M.Value)
|
|
local Pon = 1e-9+1e9*(RK.P1)
|
|
local Sh = 1e-9+1e9*(1-Train.SH1.Value)
|
|
|
|
R[1] = ((RK[2])^-1 + (P1_2)^-1)^-1
|
|
R[2] = ((RK[4])^-1 + (P2_3+R[1])^-1)^-1
|
|
R[3] = ((RK[6])^-1 + (P3_4+R[2])^-1)^-1
|
|
R[4] = ((RK[10]+Pon+Moff)^-1 + (RK[8])^-1)^-1
|
|
R[5] = ((P12_11)^-1 + (T[12])^-1)^-1
|
|
R[6] = ((P13_11)^-1 + (RK[11]+R[5])^-1)^-1
|
|
R[7] = ((RK[13])^-1 + (P10_13)^-1)^-1
|
|
R[8] = ((R[4])^-1 + (P4_11+R[3])^-1)^-1
|
|
R[9] = ((RK[7])^-1 + (Pon+Poff)^-1)^-1
|
|
R[10] = ((R[9])^-1 + (RK[9]+Pon+Moff)^-1)^-1
|
|
R[11] = ((RK[1])^-1 + (P6_7)^-1)^-1
|
|
R[12] = ((R[11]+P7_8)^-1 + (RK[3])^-1)^-1
|
|
R[13] = ((R[12]+P8_9)^-1 + (RK[5])^-1)^-1
|
|
R[14] = ((R[10])^-1 + (R[13]+P9_10)^-1)^-1
|
|
R[15] = ((R[8])^-1 + (Poff+Pon)^-1)^-1
|
|
R[16] = ((Poff+T[10]+P14_1+R[15])*(Moff)+(Poff+T[10]+P14_1+R[15])*(R[6]+R[7])+(Moff)*(R[6]+R[7]))/(Poff+T[10]+P14_1+R[15])
|
|
R[17] = ((Poff+T[10]+P14_1+R[15])*(Moff)+(Poff+T[10]+P14_1+R[15])*(R[6]+R[7])+(Moff)*(R[6]+R[7]))/(Moff)
|
|
R[18] = ((Poff+T[10]+P14_1+R[15])*(Moff)+(Poff+T[10]+P14_1+R[15])*(R[6]+R[7])+(Moff)*(R[6]+R[7]))/(R[6]+R[7])
|
|
R[19] = ((R[17])^-1 + (R[16]+R[18])^-1)^-1
|
|
R[20] = ((R[19])^-1 + (R[14])^-1)^-1
|
|
return R[20]
|
|
end
|
|
|
|
function TRAIN_SYSTEM.S1(Train)
|
|
local RK = Train.RheostatController
|
|
local T = Train.PositionSwitch
|
|
local Poff = 1e-9+1e9*(1-RK.P1)
|
|
local Moff = 1e-9+1e9*(1-Train.M.Value)
|
|
local Pon = 1e-9+1e9*(RK.P1)
|
|
local Sh = 1e-9+1e9*(1-Train.SH1.Value)
|
|
|
|
R[1] = ((P21_22)^-1 + (RK[12])^-1)^-1
|
|
return R[1]+Sh+P20_21
|
|
end
|
|
|
|
function TRAIN_SYSTEM.S2(Train)
|
|
local RK = Train.RheostatController
|
|
local T = Train.PositionSwitch
|
|
local Poff = 1e-9+1e9*(1-RK.P1)
|
|
local Moff = 1e-9+1e9*(1-Train.M.Value)
|
|
local Pon = 1e-9+1e9*(RK.P1)
|
|
local Sh = 1e-9+1e9*(1-Train.SH1.Value)
|
|
|
|
R[1] = ((P24_25)^-1 + (RK[12])^-1)^-1
|
|
return R[1]+Sh+P23_24
|
|
end
|
|
|