mirror of
https://github.com/metrostroi-repo/MetrostroiAddon.git
synced 2026-05-02 00:42:29 +00:00
60 lines
3.0 KiB
Lua
60 lines
3.0 KiB
Lua
--------------------------------------------------------------------------------
|
||
-- Box with relays (YaR-27)
|
||
--------------------------------------------------------------------------------
|
||
-- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o.
|
||
-- Contains proprietary code. See license.txt for additional information.
|
||
--------------------------------------------------------------------------------
|
||
Metrostroi.DefineSystem("YAR_27")
|
||
|
||
function TRAIN_SYSTEM:Initialize(parameters)
|
||
-- Реле дверей (РД)
|
||
self.Train:LoadSystem("RD","Relay","REV-821",{ close_time = 0.1, coil_res = 448, pickup_current = 0.002, hasCoil = true })
|
||
-- Реле включения освещения (РВО)
|
||
self.Train:LoadSystem("RVO","Relay","REV-814T",{ open_time = 4.0, coil_res = 21, pickup_current = 0.042, hasCoil = true })
|
||
-- Реле времени торможения (РВ3)
|
||
self.Train:LoadSystem("RV3","Relay","REV-813T",{ open_time = 2.3, coil_res = 244, pickup_current = 0.004, hasCoil = true })
|
||
-- Реле тока (РТ2)
|
||
self.Train:LoadSystem("RT2","Relay","REV-830",{ trigger_level = 130 }) -- A
|
||
self.Train:LoadSystem("RT2r","Relay","REV-830",{ close_time = 0, open_time = 0.6, hasCoil = true}) --UNREALISTIC Repeater for RT2 for MSK trains
|
||
-- Реле контроля тормозного тока (РКТТ)
|
||
self.Train:LoadSystem("RKTT","Relay","R-52B", { coil_res = 129, pickup_current = 0.008, hasCoil = true })
|
||
self.Train.RKTTsh = 1
|
||
end
|
||
|
||
function TRAIN_SYSTEM:Inputs()
|
||
return { "NoRKTT" }
|
||
end
|
||
function TRAIN_SYSTEM:Outputs()
|
||
--return { "RKTTClose" , "RKTTOpen", "RKTTCurrent"}
|
||
end
|
||
|
||
function TRAIN_SYSTEM:TriggerInput(name,value)
|
||
if name == "NoRKTT" then
|
||
self.NoRKTT = value > 0
|
||
end
|
||
end
|
||
|
||
function TRAIN_SYSTEM:Think()
|
||
local Train = self.Train
|
||
-- RT2 relay operation
|
||
Train.RT2:TriggerInput("Set",Train.Electric.IRT2)
|
||
if self.NoRKTT then return end
|
||
Train.RT2r:TriggerInput("Set",Train.RT2.Value)
|
||
--self.RUTTarget = 250 + 150*self.WeightLoadRatio
|
||
self.RKTTCurrent = Train.Electric.IRT2*Train.RKTTsh--(math.abs(Train.Electric.I13) + math.abs(Train.Electric.I24))*Train:ReadTrainWire(6)
|
||
--self.RKTTClose = 275 + 50*self.WeightLoadRatio --125
|
||
--self.RKTTOpen = 370 + 52*self.WeightLoadRatio --130
|
||
--self.RKTTClose = 240 + 100*self.Train.Pneumatic.WeightLoadRatio --125
|
||
--self.RKTTOpen = 335 + 130*self.Train.Pneumatic.WeightLoadRatio --130
|
||
|
||
--self.RKTTClose = 380 + 120*self.Train.Pneumatic.WeightLoadRatio*Train.RUTavt --125
|
||
--self.RKTTOpen = 460 + 120*self.Train.Pneumatic.WeightLoadRatio*Train.RUTavt --130
|
||
self.RKTTClose = 500 - 120*(1-self.Train.Pneumatic.WeightLoadRatio)*Train.RUTavt --125
|
||
self.RKTTOpen = 580 - 120*(1-self.Train.Pneumatic.WeightLoadRatio)*Train.RUTavt --130
|
||
if self.RKTTCurrent < self.RKTTClose then
|
||
Train.RKTT:TriggerInput("Set",false)
|
||
else
|
||
Train.RKTT:TriggerInput("Set",self.RKTTCurrent >= self.RKTTOpen)
|
||
end
|
||
end
|