1
0
mirror of https://github.com/metrostroi-repo/MetrostroiAddon.git synced 2026-05-02 00:42:29 +00:00
Files
MetrostroiAddon/lua/metrostroi/systems/sys_81_722_panel.lua
kosmik641 c06ccbe776 81-722.
Перенос логики кнопок дверей в Panel для электрики
Триггеры для БМЦИКа от БУКП
Поправлена логика 15 провода
Фикс работы дверей от резервного управления
2025-05-30 12:57:31 +03:00

270 lines
12 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
--------------------------------------------------------------------------------
-- 81-722 controller panel
--------------------------------------------------------------------------------
-- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o.
-- Contains proprietary code. See license.txt for additional information.
--------------------------------------------------------------------------------
Metrostroi.DefineSystem("81_722_Panel")
TRAIN_SYSTEM.DontAccelerateSimulation = false
function TRAIN_SYSTEM:Initialize()
--Автоматы ПЗ
self.Train:LoadSystem("SF1","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF2","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF3","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF4","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF5","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF6","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF7","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF8","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF9","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF00","Relay","Switch",{bass=true})
self.Train:LoadSystem("SF01","Relay","Switch",{bass=true})
self.Train:LoadSystem("SF10","Relay","Switch",{bass=true})
self.Train:LoadSystem("SF11","Relay","Switch",{bass=true})
self.Train:LoadSystem("SF12","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF13","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF02","Relay","Switch",{bass=true})
self.Train:LoadSystem("SF14","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF15","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF16","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF17","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF18","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF19","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF20","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF21","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF22","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF23","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF24","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF25","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF26","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF27","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF03","Relay","Switch",{bass=true})
self.Train:LoadSystem("SF04","Relay","Switch",{bass=true})
--Автоматы ВЗ
self.Train:LoadSystem("SF31","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF32","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF33","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF34","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF35","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF36","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF37","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF38","Relay","Switch",{bass=true})
self.Train:LoadSystem("SF41","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF42","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF43","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF44","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF45","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF46","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF47","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF48","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF49","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF51","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF52","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF53","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF54","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF55","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF56","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF57","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF58","Relay","Switch",{normally_closed = true,bass=true})
self.Train:LoadSystem("SF59","Relay","Switch",{normally_closed = true,bass=true})
--Задняя панель кнопок
self.Train:LoadSystem("PSNToggle","Relay","Switch",{bass=true})
self.Train:LoadSystem("BattOn","Relay","Switch",{bass=true})
self.Train:LoadSystem("BattOff","Relay","Switch",{bass=true})
self.Train:LoadSystem("TorecDoorUnlock","Relay","Switch",{bass=true})
--
self.Train:LoadSystem("PassLight","Relay","Switch",{bass=true})
self.Train:LoadSystem("PassVent","Relay","Switch",{maxvalue=4,defaultvalue=1,bass=true})
self.Train:LoadSystem("VKF","Relay","Switch",{bass=true})
self.Train:LoadSystem("ParkingBrake","Relay","Switch",{bass=true})
self.Train:LoadSystem("VRD","Relay","Switch",{bass=true})
self.Train:LoadSystem("SOSDEnable","Relay","Switch",{bass=true})
--
self.Train:LoadSystem("VRU","Relay","Switch",{maxvalue=2,defaultvalue=1,bass=true})
self.Train:LoadSystem("VAD","Relay","Switch",{bass=true})
self.Train:LoadSystem("VAH","Relay","Switch",{bass=true})
self.Train:LoadSystem("EmergencyRadioPower","Relay","Switch",{bass=true})
self.Train:LoadSystem("BARSMode","Relay","Switch",{maxvalue=2,defaultvalue=1,bass=true})
self.Train:LoadSystem("PantSC","Relay","Switch",{maxvalue=4,defaultvalue=1,bass=true})
self.Train:LoadSystem("RCARS","Relay","Switch",{defaultvalue=1,bass=true})
--Пульт управления 1
self.Train:LoadSystem("MirrorHeating","Relay","Switch",{bass=true})
self.Train:LoadSystem("DoorLeft2","Relay","Switch",{bass=true})
--
self.Train:LoadSystem("DoorBack","Relay","Switch",{bass=true})
self.Train:LoadSystem("EmergencyDrive","Relay","Switch",{bass=true})
self.Train:LoadSystem("Microphone","Relay","Switch",{bass=true})
self.Train:LoadSystem("DoorLeft1","Relay","Switch",{bass=true})
self.Train:LoadSystem("ARS","Relay","Switch",{bass=true})
self.Train:LoadSystem("ALS","Relay","Switch",{bass=true})
self.Train:LoadSystem("GlassWasher","Relay","Switch",{bass=true})
self.Train:LoadSystem("GlassCleaner","Relay","Switch",{maxvalue = 2,bass=true})
self.Train:LoadSystem("EmergencyBrakeTPlus","Relay","Switch",{bass=true})
self.Train:LoadSystem("EmergencyBrakeTPlusK","Relay","Switch",{defaultvalue=1})
self.Train:LoadSystem("EmergencyBrake","Relay","Switch",{bass=true})
self.Train:LoadSystem("Vigilance","Relay","Switch",{bass=true})
self.Train:LoadSystem("Headlights","Relay","Switch",{maxvalue = 2,bass=true})
self.Train:LoadSystem("DoorSelect","Relay","Switch",{bass=true})
self.Train:LoadSystem("DoorClose","Relay","Switch",{maxvalue = 2,defaultvalue=1,bass=true})
self.Train:LoadSystem("DoorRight","Relay","Switch",{bass=true})
self.Train:LoadSystem("KRO","Relay","Switch",{maxvalue = 2,defaultvalue=1,bass=true})
self.Train:LoadSystem("Compressor","Relay","Switch",{maxvalue=4,defaultvalue=0,bass=true})
self.Train:LoadSystem("Ring","Relay","Switch",{bass=true})
--Освещение
self.Train:LoadSystem("CabinLight","Relay","Switch",{maxvalue=2,defaultvalue=0,bass=true})
self.Train:LoadSystem("PanelLight","Relay","Switch",{bass=true})
self.Train:LoadSystem("PB","Relay","Switch",{bass=true})
self.Controller = 0
self.TargetController = 0
self.BattOn = 0
self.BattOff = 0
self.SOSDL = 0
self.RS = 0
self.AVS = 0
self.LRU = 0
self.EmergencyDriveL = 0
self.EmergencyBrakeTPlusL = 0
self.DoorLeft1 = 0
self.DoorLeft2 = 0
self.DoorRight = 0
self.DoorClose = 0
self.DoorCloseAVT = 0
self.DoorSelect = 0
self.DoorBack = 0
self.CabLights = 0
self.PanelLights = 0
self.Headlights1 = 0
self.Headlights2 = 0
self.RedLights = 0
self.EmergencyLights = 0
self.MainLights = 0
self.V4 = 0
self.UPOPower = 0
self.AnnouncerPlaying = 0
self.SOSD = 0
self.PassSchemePowerL = 0
self.PassSchemePowerR = 0
self.DoorsW = 0
self.BrW = 0
self.GRP = 0
self.RC = 0
self.VPR1 = 0
self.VPR2 = 0
self.BARSPower = 0
self.ARSPower = 0
self.ALSPower = 0
end
function TRAIN_SYSTEM:Inputs()
return { "KVUp", "KVDown", "KV1", "KV2", "KV4", "KV5", "KV6", "KV7", }
end
function TRAIN_SYSTEM:Outputs()
return { "Controller","BattOn","BattOff","SOSDL","RS","AVS","LRU","EmergencyDriveL","EmergencyBrakeTPlusL","DoorLeft1","DoorLeft2","DoorRight","DoorClose","DoorCloseAVT","DoorSelect","DoorBack","CabLights","PanelLights","Headlights1","Headlights2","RedLights","EmergencyLights","MainLights", "V4","SOSD","UPOPower","AnnouncerPlaying", "PassSchemePowerL", "PassSchemePowerR","DoorsW","BrW","GRP","RC","VPR1","VPR2","BARSPower","ARSPower","ALSPower"}
end
--if not TURBOSTROI then return end
function TRAIN_SYSTEM:TriggerInput(name,value)
if name == "KVUp" and value > 0 and self.Controller < 2 then
self.TargetController = self.TargetController + 1
if self.TargetController <= -2 then
self.TargetController = -1
end
end
if name == "KVUp" and value == 0 and self.TargetController == 2 then
self.TargetController = self.TargetController - 1
end
if name == "KVDown" and value > 0 and self.TargetController > -2 then
self.TargetController = self.TargetController - 1
end
if name == "KVDown" and value == 0 and self.TargetController == -2 then
self.TargetController = self.TargetController + 1
end
if name == "KV1" then
self.KV1Pressed = value > 0
if value then
self.TargetController = 1
end
end
if name == "KV2" then
if value > 0 then
self.TargetController = 2
elseif self.TargetController == 2 then
self.TargetController = 1
end
end
if name == "KV4" and value > 0 then
self.TargetController = 0
end
if name == "KV5" then
self.KV5Pressed = value > 0
if value then
self.TargetController = -1
end
end
if name == "KV6" then
if value > 0 then
self.TargetController = -2
elseif self.TargetController == -2 then
self.TargetController = -1
end
end
if name == "KV7" then
self.TargetController = -3
end
self.ControllerTimer = CurTime()-1
end
function TRAIN_SYSTEM:Think()
if self.Controller ~= self.TargetController and not self.ControllerTimer then
self.ControllerTimer = CurTime()-1
end
if self.KV1Pressed then
if self.Train.BUKP.PowerPrecent > 25 then
self.TargetController = 0
else
self.TargetController = 1
end
end
if self.KV5Pressed then
if self.Train.BUKP.PowerPrecent < -25 then
self.TargetController = 0
else
self.TargetController = -1
end
end
if self.ControllerTimer and CurTime() - self.ControllerTimer > 0.1 and self.Controller ~= self.TargetController then
local previousPosition = self.Controller
self.ControllerTimer = CurTime()
if self.TargetController > self.Controller then
self.Controller = self.Controller + 1
else
self.Controller = self.Controller - 1
end
self.Train:PlayOnce("KU_"..previousPosition.."_"..self.Controller, "cabin",0.5)
end
if self.Controller == self.TargetController then
self.ControllerTimer = nil
end
end