mirror of
https://github.com/metrostroi-repo/MetrostroiAddon.git
synced 2026-05-02 00:42:29 +00:00
init
This commit is contained in:
73
lua/metrostroi/systems/sys_81_502_bps.lua
Normal file
73
lua/metrostroi/systems/sys_81_502_bps.lua
Normal file
@@ -0,0 +1,73 @@
|
||||
--------------------------------------------------------------------------------
|
||||
-- SPB Anti rolling unit
|
||||
--------------------------------------------------------------------------------
|
||||
-- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o.
|
||||
-- Contains proprietary code. See license.txt for additional information.
|
||||
--------------------------------------------------------------------------------
|
||||
Metrostroi.DefineSystem("81_502_BPS")
|
||||
|
||||
function TRAIN_SYSTEM:Initialize()
|
||||
self.Power = 0
|
||||
|
||||
self.KRR = 0
|
||||
self.KRH = 0
|
||||
|
||||
self[8] = 0
|
||||
self[39] = 0
|
||||
|
||||
self.PowerLamp = 0
|
||||
self.ErrorLamp = 0
|
||||
self.FailLamp = 0
|
||||
self.Rolling = false
|
||||
self.Rolled = false
|
||||
end
|
||||
|
||||
function TRAIN_SYSTEM:Inputs()
|
||||
return {}
|
||||
end
|
||||
function TRAIN_SYSTEM:Outputs()
|
||||
return { "PowerLamp","ErrorLamp","FailLamp" }
|
||||
end
|
||||
|
||||
function TRAIN_SYSTEM:Think(dT)
|
||||
local Train = self.Train
|
||||
if Train.Electric.Type ~= 1 then return end
|
||||
local ALS = Train.ALSCoil
|
||||
local speed = ALS.Speed*ALS.SpeedSign
|
||||
|
||||
|
||||
local Work = self.Power*(1-self.KRR)
|
||||
self.FailLamp = 0
|
||||
|
||||
if Work > 0 then
|
||||
if speed < -0.05 and not self.Rolling then self.Rolling = 0 end
|
||||
if self.Rolling and self.Rolling < 0 then self.Rolling = false end
|
||||
if self.Rolling then
|
||||
local rolled = -speed/3600*1000*dT
|
||||
if math.abs(rolled) >0.001 then
|
||||
self.Rolling = self.Rolling + rolled
|
||||
end
|
||||
end
|
||||
|
||||
if not self.Rolled and self.Rolling and self.Rolling > 0.5+self.KRH*2.5 then
|
||||
self.Rolled = self.KRH
|
||||
end
|
||||
if self.Rolled then
|
||||
if self.Rolled == 0 and self.KRH > 0 then
|
||||
self.Rolled = false
|
||||
self.Rolling = false
|
||||
end
|
||||
if self.KRH == 0 then self.Rolled = 0 end
|
||||
end
|
||||
self.ErrorLamp = (self.Rolling and self.Rolling > 0.1 or self.KRH > 0 and speed <= 0.05) and 1 or 0
|
||||
self.PowerLamp = 1-self.ErrorLamp
|
||||
else
|
||||
self.PowerLamp = 0
|
||||
self.ErrorLamp = 0
|
||||
self.Rolling = false
|
||||
self.Rolled = false
|
||||
end
|
||||
|
||||
self[8] = self.Rolled and 1 or 0
|
||||
self[39] = self.Rolled and 1 or 0
|
||||
end
|
||||
Reference in New Issue
Block a user