1
0
mirror of https://github.com/metrostroi-repo/MetrostroiAddon.git synced 2026-05-02 00:42:29 +00:00
This commit is contained in:
g_brzhezinskiy
2021-01-02 12:51:45 +03:00
commit 1d05caf866
613 changed files with 337020 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
--------------------------------------------------------------------------------
-- 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 })
-- Реле включения освещения (РВО)
self.Train:LoadSystem("RVO","Relay","REV-814T",{ open_time = 4.0 })
-- Реле времени торможения (РВ3)
self.Train:LoadSystem("RV3","Relay","REV-813T",{ open_time = 2.3 })
-- Реле тока (РТ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.2 }) --UNREALISTIC Repeater for RT2 for MSK trains
-- Реле контроля тормозного тока (РКТТ)
self.Train:LoadSystem("RKTT","Relay","R-52B")
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