mirror of
https://github.com/metrostroi-repo/MetrostroiAddon.git
synced 2026-05-04 00:52:33 +00:00
Added OtklAVU 703, UKS Em509
This commit is contained in:
@@ -1,41 +0,0 @@
|
||||
--------------------------------------------------------------------------------
|
||||
-- 81-508 UKS system
|
||||
--------------------------------------------------------------------------------
|
||||
-- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o.
|
||||
-- Contains proprietary code. See license.txt for additional information.
|
||||
--------------------------------------------------------------------------------
|
||||
Metrostroi.DefineSystem("81_509_UKS")
|
||||
|
||||
function TRAIN_SYSTEM:Initialize(parameters)
|
||||
self.UKSEngaged = 0
|
||||
self.UKSTriggered = 0
|
||||
self.UKSEmerTriggered = 0
|
||||
self.Train:LoadSystem("UKSDisconnect","Relay","Switch", {bass = true,normally_closed = true})
|
||||
end
|
||||
|
||||
function TRAIN_SYSTEM:Outputs()
|
||||
return { "UKSEngaged", "UKSTriggered", "UKSEmerTriggered" }
|
||||
end
|
||||
|
||||
function TRAIN_SYSTEM:Think(dT)
|
||||
local Train = self.Train
|
||||
self.UKSEngaged = Train.UAVA.Value*Train.UKSDisconnect.Value
|
||||
if self.UKSEngaged > 0 then
|
||||
local speed = Train.ALSCoil.Speed*Train.ALSCoil.SpeedSign
|
||||
if speed > 34 then
|
||||
self.UKSTriggered = 1
|
||||
if speed > 40 then
|
||||
self.UKSEmerTriggered = 1
|
||||
end
|
||||
elseif speed < 31 and self.UKSEmerTriggered == 0 then
|
||||
self.UKSTriggered = 0
|
||||
self.UKSEmerTriggered = 0
|
||||
elseif speed < 1 then
|
||||
self.UKSTriggered = 0
|
||||
self.UKSEmerTriggered = 0
|
||||
end
|
||||
else
|
||||
self.UKSTriggered = 0
|
||||
self.UKSEmerTriggered = 0
|
||||
end
|
||||
end
|
||||
@@ -103,8 +103,8 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train)
|
||||
Train:WriteTrainWire(4,S["10AK"]*KV["U2-4"])
|
||||
Train:WriteTrainWire(5,S["10AK"]*KV["U2-5"]+KRU["5/3-ZM31"]*-10*(1-Train.KRR.Value)+BO*KRU["14/1-B3"]*Train.KRR.Value)
|
||||
--Panel.Sequence = T[2]
|
||||
Panel.UKS = BO*Train.UKS.UKSEngaged
|
||||
Panel.UKSb = BO*Train.UKS.UKSTriggered
|
||||
Panel.UKS = Train.UKS.UKSLamp
|
||||
Panel.UKSb = Train.UKS.UKSTriggered
|
||||
if self.RRI> 0 then
|
||||
local RRI_VV = Train.RRI_VV
|
||||
RRI_VV.Power = BO*Train["50V"].Value*Train.RRIEnable.Value
|
||||
@@ -132,18 +132,18 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train)
|
||||
Panel.AnnouncerPlaying = T[13]
|
||||
Train:WriteTrainWire(24,S["U2"]*Train.KU8.Value)
|
||||
if isE then
|
||||
Train:WriteTrainWire(14,BO*KV["10-14B"]*KV["14-14B"])
|
||||
Train:WriteTrainWire(14,BO*KV["10-14B"]*KV["14-14B"]*(1-Train.UKS.UKSEmerTriggered))
|
||||
Train:WriteTrainWire(1,S["10AK"]*Train.R1_5.Value)
|
||||
Train:WriteTrainWire(2,S["U2"]*KV["U2-2"])
|
||||
Train:WriteTrainWire(3,S["U2"]*KV["U2-3"])
|
||||
Train:WriteTrainWire(25,S["U2"]*KV["U2-25"])
|
||||
Train:WriteTrainWire(20,S["U2"]*KV["U2-20"])
|
||||
Train:WriteTrainWire(6,S["U2"]*KV["U2-6"])
|
||||
Train.RV2:TriggerInput("Set",S["10AK"]*KV["10AK-7A"])
|
||||
Train.RV2:TriggerInput("Set",S["10AK"]*KV["10AK-7A"]*(Train.AVU.Value+Train.OtklAVU.Value)*(1-Train.UKS.UKSTriggered))
|
||||
Train.R1_5:TriggerInput("Set",S["10AK"]*Train.RV2.Value)
|
||||
Train:WriteTrainWire(17,S["10AK"]*Train.KU9.Value)
|
||||
|
||||
Train:WriteTrainWire(8,BO*KV["10-8"])
|
||||
Train:WriteTrainWire(8,BO*(KV["10-8"]+KV["10-14B"]*Train.UKS.UKSEmerTriggered))
|
||||
elseif isEzh then
|
||||
S["10a"] = BO*KV["10a-8"]
|
||||
ARS.ALS = S["10a"]*Train.ALS.Value*RC
|
||||
@@ -199,7 +199,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train)
|
||||
Train.RV2:TriggerInput("Set",S["10AK"]*KV["33-10AK"]*(Train.AVU.Value+Train.OtklAVU.Value)*Train.UAVAC.Value*(1-Train.UKS.UKSTriggered))
|
||||
Train.R1_5:TriggerInput("Set",S["10AK"]*Train.RV2.Value)
|
||||
Train:WriteTrainWire(17,S["10AK"]*Train.KU9.Value)
|
||||
Train:WriteTrainWire(8,BO*KV["10-8"])
|
||||
Train:WriteTrainWire(8,BO*(KV["10-8"]+KV["10a-8"]*Train.UKS.UKSEmerTriggered))
|
||||
Train:WriteTrainWire(44,S["10AK"]*Train.UV1.Value)
|
||||
end
|
||||
|
||||
|
||||
@@ -37,6 +37,8 @@ function TRAIN_SYSTEM:Initialize()
|
||||
|
||||
self.Train:LoadSystem("RCU","Relay","Switch", {bass = true})
|
||||
|
||||
self.Train:LoadSystem("OtklAVU","Relay","Switch", {bass = true})
|
||||
|
||||
self.Train:LoadSystem("R_UNch","Relay","Switch", {bass = true})
|
||||
self.Train:LoadSystem("R_ZS","Relay","Switch", {bass = true})
|
||||
self.Train:LoadSystem("R_G","Relay","Switch", {bass = true})
|
||||
@@ -67,6 +69,7 @@ function TRAIN_SYSTEM:Initialize()
|
||||
self.PanelLights = 0
|
||||
|
||||
self.Ring = 0
|
||||
self.AVU = 0
|
||||
|
||||
self.VPR = 0
|
||||
|
||||
@@ -81,5 +84,5 @@ function TRAIN_SYSTEM:ClientInitialize()
|
||||
end
|
||||
|
||||
function TRAIN_SYSTEM:Outputs()
|
||||
return { "V1","GRP","RRP","TW18","SD","PP1","PP6","SDW","BrY","Headlights1","Headlights2","RedLights","EmergencyLights2","EmergencyLights1","MainLights1","MainLights2","PanelLights","AnnouncerPlaying","VPR","Ring","CBKIPower","PCBKPower"}
|
||||
return { "V1","GRP","RRP","TW18","SD","PP1","PP6","SDW","BrY","Headlights1","Headlights2","RedLights","EmergencyLights2","EmergencyLights1","MainLights1","MainLights2","PanelLights","AnnouncerPlaying","VPR","Ring","AVU","CBKIPower","PCBKPower"}
|
||||
end
|
||||
@@ -383,9 +383,6 @@ function TRAIN_SYSTEM:Think(dT)
|
||||
self.EmergencyValveDisable=false
|
||||
self.EmergencyValve=false
|
||||
end
|
||||
if Train.UKS and Train.UKS.UKSEmerTriggered > 0 and Train.UKSDisconnect.Value > 0 then
|
||||
self.EmergencyValve=true
|
||||
end
|
||||
|
||||
self.OldBrakeLinePressure = self.BrakeLinePressure
|
||||
if self.EmergencyValve then
|
||||
|
||||
88
lua/metrostroi/systems/sys_uks_20m.lua
Normal file
88
lua/metrostroi/systems/sys_uks_20m.lua
Normal file
@@ -0,0 +1,88 @@
|
||||
--------------------------------------------------------------------------------
|
||||
-- UKS system
|
||||
--------------------------------------------------------------------------------
|
||||
-- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o.
|
||||
-- Contains proprietary code. See license.txt for additional information.
|
||||
--------------------------------------------------------------------------------
|
||||
Metrostroi.DefineSystem("UKS_20M")
|
||||
|
||||
function TRAIN_SYSTEM:Initialize(parameters)
|
||||
self.UKSLamp = 0
|
||||
self.UKSTriggered = 0
|
||||
self.UKSEmerTriggered = 0
|
||||
self.UKSEmerTriggeredX = false
|
||||
self.UKSEmerTriggeredT = false
|
||||
self.UKSEmerTriggeredV = false
|
||||
self.UKSEmerTriggeredReal = false
|
||||
self.Train:LoadSystem("UKSDisconnect","Relay","Switch", {bass = true,normally_closed = true})
|
||||
end
|
||||
|
||||
function TRAIN_SYSTEM:Outputs()
|
||||
return { "UKSLamp", "UKSTriggered", "UKSEmerTriggered" }
|
||||
end
|
||||
|
||||
function TRAIN_SYSTEM:Think(dT)
|
||||
local Train = self.Train
|
||||
local KV = Train.KV
|
||||
if Train.Panel.V1*(KV["10a-8"] or KV["10-14B"])*Train.UAVA.Value*Train.UKSDisconnect.Value > 0 then
|
||||
local speed = Train.ALSCoil.Speed*Train.ALSCoil.SpeedSign
|
||||
local KVX = KV["33-10AK"] or KV["10AK-7A"]
|
||||
local KVTr = KV["U2-6"]
|
||||
if speed <= -1 or KV["U2-4"] == 1 then
|
||||
self.UKSEmerTriggered = 1
|
||||
self.UKSTriggered = 1
|
||||
self.UKSLamp = 1
|
||||
elseif speed > 18 then
|
||||
self.UKSLamp = 1
|
||||
self.UKSTriggered = 1
|
||||
if speed > 20 and self.UKSEmerTriggered ~= 1 then
|
||||
self.UKSEmerTriggered = 1
|
||||
self.UKSEmerTriggeredReal = true
|
||||
self.UKSEmerTriggeredX = KVX > 0
|
||||
self.UKSEmerTriggeredT = KVTr > 0
|
||||
self.UKSEmerTriggeredV = false
|
||||
end
|
||||
elseif speed <= 1 then
|
||||
if self.UKSEmerTriggered > 0 and KVX > 0 then
|
||||
if not self.Starting then self.Starting = CurTime() end
|
||||
elseif KVX == 0 and self.UKSEmerTriggered == 0 then
|
||||
self.Starting = nil
|
||||
end
|
||||
if self.Starting then
|
||||
if CurTime()-self.Starting > 5 then self.UKSEmerTriggered = 1 self.UKSTriggered = 1 end
|
||||
end
|
||||
if self.UKSTriggered > 0 then
|
||||
self.UKSTriggered = KVX
|
||||
self.UKSEmerTriggered = KVX
|
||||
else
|
||||
self.UKSEmerTriggered = 1-KVX
|
||||
self.UKSEmerTriggeredReal = false
|
||||
end
|
||||
self.UKSLamp = self.UKSEmerTriggered
|
||||
elseif speed <= 18 and self.UKSEmerTriggered > 0 and self.UKSEmerTriggeredReal and not self.UKSEmerTriggeredX then
|
||||
self.UKSLamp = 0
|
||||
if KVTr+KVX == 0 then self.UKSEmerTriggeredV = true end
|
||||
if self.UKSEmerTriggeredV then
|
||||
if self.UKSEmerTriggeredT then
|
||||
self.UKSEmerTriggered = 1-KVTr
|
||||
else
|
||||
self.UKSEmerTriggered = 1-KVX
|
||||
end
|
||||
self.UKSEmerTriggeredReal = self.UKSEmerTriggered > 0
|
||||
self.UKSTriggered = self.UKSEmerTriggered
|
||||
end
|
||||
elseif speed <= 16 and self.UKSTriggered > 0 and self.UKSEmerTriggered == 0 then
|
||||
self.UKSTriggered = KVX
|
||||
self.UKSEmerTriggered = KVX
|
||||
self.UKSLamp = KVX
|
||||
else
|
||||
if self.Starting then
|
||||
if CurTime()-self.Starting > 5 then self.UKSEmerTriggered = 1 self.UKSTriggered = 1 self.Starting = nil elseif speed > 3 then self.Starting = nil end
|
||||
end
|
||||
end
|
||||
else
|
||||
self.UKSTriggered = 0
|
||||
self.UKSEmerTriggered = 0
|
||||
self.UKSLamp = 0
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user