mirror of
https://github.com/metrostroi-repo/MetrostroiAddon.git
synced 2026-05-02 00:42:29 +00:00
204 lines
7.7 KiB
Lua
204 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 = 3.851 0.000 3.851 0.000 0.000 0.188 0.188 1.000 1.000 0.000
|
|
R02 = 3.091 0.000 3.851 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R03 = 2.211 0.000 2.971 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R04 = 1.770 0.000 2.530 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R05 = 1.329 0.000 2.089 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R06 = 1.066 0.000 1.826 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R07 = 0.816 0.000 1.576 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R08 = 0.608 0.000 1.368 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R09 = 0.387 0.000 1.147 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R10 = 0.190 0.000 0.950 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R11 = 0.000 0.000 0.760 0.000 0.000 0.188 0.188 0.000 1.000 0.000
|
|
R12 = 0.000 0.000 0.760 0.000 0.000 0.188 0.188 1.000 1.000 0.000
|
|
R13 = 0.000 0.000 0.760 0.000 0.000 0.019 0.019 1.000 0.000 0.000
|
|
|
|
R14 = 0.000 2.211 0.597 1.102 1.109 0.019 0.019 0.000 0.000 0.000
|
|
R15 = 0.000 1.329 0.543 0.661 0.668 0.188 0.188 0.000 0.000 0.000
|
|
R16 = 0.000 0.816 0.491 0.411 0.405 0.188 0.188 0.000 0.000 0.000
|
|
R17 = 0.000 0.387 0.424 0.190 0.197 0.188 0.188 0.000 0.000 0.000
|
|
R18 = 0.000 0.000 0.326 0.000 0.000 0.188 0.188 0.000 0.000 0.000
|
|
R19 = 0.000 0.000 0.326 0.000 0.000 0.188 0.188 1.000 0.000 0.000
|
|
R20 = 0.000 0.000 0.326 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_702o")
|
|
|
|
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] = ((P13_11)^-1 + (RK[11]+T[12])^-1)^-1
|
|
R[6] = ((RK[13])^-1 + (P10_13)^-1)^-1
|
|
R[7] = ((P4_11+R[3])^-1 + (R[4])^-1)^-1
|
|
R[8] = ((RK[7])^-1 + (RK[9]+Pon+Moff)^-1)^-1
|
|
R[9] = ((RK[1])^-1 + (P6_7)^-1)^-1
|
|
R[10] = ((R[9]+P7_8)^-1 + (RK[3])^-1)^-1
|
|
R[11] = ((P8_9+R[10])^-1 + (RK[5])^-1)^-1
|
|
R[12] = ((R[8])^-1 + (P9_10+R[11])^-1)^-1
|
|
R[13] = ((Pon)*(Poff+T[10]+P14_1)+(Pon)*(R[7])+(Poff+T[10]+P14_1)*(R[7]))/(Pon)
|
|
R[14] = ((Pon)*(Poff+T[10]+P14_1)+(Pon)*(R[7])+(Poff+T[10]+P14_1)*(R[7]))/(Poff+T[10]+P14_1)
|
|
R[15] = ((Pon)*(Poff+T[10]+P14_1)+(Pon)*(R[7])+(Poff+T[10]+P14_1)*(R[7]))/(R[7])
|
|
R[16] = ((Poff)^-1 + (R[14])^-1)^-1
|
|
R[17] = ((R[5]+R[6])*(Poff)+(R[5]+R[6])*(R[12])+(Poff)*(R[12]))/(R[5]+R[6])
|
|
R[18] = ((R[5]+R[6])*(Poff)+(R[5]+R[6])*(R[12])+(Poff)*(R[12]))/(Poff)
|
|
R[19] = ((R[5]+R[6])*(Poff)+(R[5]+R[6])*(R[12])+(Poff)*(R[12]))/(R[12])
|
|
R[20] = ((R[17])^-1 + (Pon)^-1)^-1
|
|
R[21] = ((R[13])^-1 + (R[18])^-1)^-1
|
|
R[22] = ((R[15])*(R[20])+(R[15])*(R[21])+(R[20])*(R[21]))/(R[15])
|
|
R[23] = ((R[15])*(R[20])+(R[15])*(R[21])+(R[20])*(R[21]))/(R[20])
|
|
R[24] = ((R[15])*(R[20])+(R[15])*(R[21])+(R[20])*(R[21]))/(R[21])
|
|
R[25] = ((R[23])^-1 + (R[16])^-1)^-1
|
|
R[26] = ((R[19])^-1 + (R[22])^-1)^-1
|
|
R[27] = ((R[25])*(R[26])+(R[25])*(Moff)+(R[26])*(Moff))/(R[25])
|
|
R[28] = ((R[25])*(R[26])+(R[25])*(Moff)+(R[26])*(Moff))/(R[26])
|
|
R[29] = ((R[25])*(R[26])+(R[25])*(Moff)+(R[26])*(Moff))/(Moff)
|
|
R[30] = ((R[24])^-1 + (R[29])^-1)^-1
|
|
R[31] = ((R[30])^-1 + (R[28]+R[27])^-1)^-1
|
|
return R[31]
|
|
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] = ((P13_11)^-1 + (RK[11]+T[12])^-1)^-1
|
|
R[6] = ((RK[13])^-1 + (P10_13)^-1)^-1
|
|
R[7] = ((Poff+Pon)^-1 + (R[4])^-1)^-1
|
|
R[8] = ((RK[7])^-1 + (Pon+Poff)^-1)^-1
|
|
R[9] = ((R[8])^-1 + (RK[9]+Pon+Moff)^-1)^-1
|
|
R[10] = ((RK[1])^-1 + (P6_7)^-1)^-1
|
|
R[11] = ((R[10]+P7_8)^-1 + (RK[3])^-1)^-1
|
|
R[12] = ((R[11]+P8_9)^-1 + (RK[5])^-1)^-1
|
|
R[13] = ((R[9])^-1 + (R[12]+P9_10)^-1)^-1
|
|
R[14] = ((R[7])^-1 + (P4_11+R[3])^-1)^-1
|
|
R[15] = ((Moff)*(R[5])+(Moff)*(R[14])+(R[5])*(R[14]))/(Moff)
|
|
R[16] = ((Moff)*(R[5])+(Moff)*(R[14])+(R[5])*(R[14]))/(R[5])
|
|
R[17] = ((Moff)*(R[5])+(Moff)*(R[14])+(R[5])*(R[14]))/(R[14])
|
|
R[18] = ((R[15])^-1 + (R[16]+R[17])^-1)^-1
|
|
R[19] = ((R[18])^-1 + (Poff+T[10]+P14_1+R[13]+R[6])^-1)^-1
|
|
return R[19]
|
|
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] = ((P13_11)^-1 + (RK[11]+T[12])^-1)^-1
|
|
R[6] = ((RK[13])^-1 + (P10_13)^-1)^-1
|
|
R[7] = ((Poff+Pon)^-1 + (R[4])^-1)^-1
|
|
R[8] = ((RK[7])^-1 + (Pon+Poff)^-1)^-1
|
|
R[9] = ((R[8])^-1 + (RK[9]+Pon+Moff)^-1)^-1
|
|
R[10] = ((R[7])^-1 + (P4_11+R[3])^-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[9])^-1 + (R[13]+P9_10)^-1)^-1
|
|
R[15] = ((Moff)*(Poff+T[10]+P14_1+R[10])+(Moff)*(R[5]+R[6])+(Poff+T[10]+P14_1+R[10])*(R[5]+R[6]))/(Moff)
|
|
R[16] = ((Moff)*(Poff+T[10]+P14_1+R[10])+(Moff)*(R[5]+R[6])+(Poff+T[10]+P14_1+R[10])*(R[5]+R[6]))/(Poff+T[10]+P14_1+R[10])
|
|
R[17] = ((Moff)*(Poff+T[10]+P14_1+R[10])+(Moff)*(R[5]+R[6])+(Poff+T[10]+P14_1+R[10])*(R[5]+R[6]))/(R[5]+R[6])
|
|
R[18] = ((R[15])^-1 + (R[16]+R[17])^-1)^-1
|
|
R[19] = ((R[18])^-1 + (R[14])^-1)^-1
|
|
return R[19]
|
|
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
|
|
|