From 0500e446f2227c52a7a148f7a544c53985324ceb Mon Sep 17 00:00:00 2001 From: xzb <223@qq.com> Date: Thu, 14 Dec 2023 16:17:54 +0800 Subject: [PATCH] =?UTF-8?q?ISCS=E7=81=AB=E8=AD=A6=E7=B3=BB=E7=BB=9Fecs?= =?UTF-8?q?=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/iscs_fas.go | 114 +++++++++++++++++++++++++++++++-- component/iscs_pscada.go | 1 + consts/iscs_bas.go | 1 + entity/iscs_fas.go | 134 +++++++++++++++++++++++++++++++++++++++ fi/iscs_pscada.go | 5 ++ 5 files changed, 248 insertions(+), 7 deletions(-) diff --git a/component/iscs_fas.go b/component/iscs_fas.go index 38e0dce..69a6f28 100644 --- a/component/iscs_fas.go +++ b/component/iscs_fas.go @@ -122,6 +122,93 @@ const ( ///////////////////////////////////////// +// FasAcs 火警ACS联动 +type FasAcs struct { + Normal bool //true-正常 + Release bool //true-紧急释放 + Exception consts.DeviceExceptionEnum //具体异常-故障、异常、通信中断 +} + +// FasAfc 火警AFC联动 +type FasAfc struct { + Normal bool //true-正常 + Release bool //true-紧急释放 + Exception consts.DeviceExceptionEnum //具体异常-故障、异常、通信中断 +} + +////////////////////////////////////////// + +// NonFirePowerSource 非消防电源 +type NonFirePowerSource struct { + Normal bool //true-正常 + TurnOff bool //true-切除,关闭非消防电源,防止在救火时触电或漏电引起二次事故 + Exception consts.DeviceExceptionEnum //具体异常-故障、异常、通信中断 +} + +/////////////////////////////////////////// + +// WaterFlowIndicator 水流指示器 +// +// 水流指示器是用于自动喷水灭火系统中将水流信号转换成电信号的一种水流报警装置。水流指示器的作用是能够及时报告火灾发生的部位。 +type WaterFlowIndicator struct { + Normal bool //true-正常 + Flowing bool //true-发出有水流动信号,表示某处有火灾 + Exception consts.DeviceExceptionEnum //具体异常-故障、异常、通信中断 +} + +/////////////////////////////////////////// + +// PumpStartButton 启泵按钮 +type PumpStartButton struct { + Normal bool //true-正常 + Pressed bool //true-动作,按钮按下 + Exception consts.DeviceExceptionEnum //具体异常-故障、异常、通信中断 +} + +//////////////////////////////////////////// + +// TemperatureSensingCable 感温电缆 +type TemperatureSensingCable struct { + Normal bool //true-正常 + FireAlarm bool //true-火警 + Exception consts.DeviceExceptionEnum //具体异常-故障、异常、通信中断 +} + +// ElevatorToOriginalPosModule 电梯归首功能模块 +// +// 1、一般电梯应有的消防功能。归首的意思是指回归首层。2、该功能也就是说电梯在上行过程中,如果一旦触发了消防开关,电梯就立即返回基站(也就是归首层) +type ElevatorToOriginalPosModule struct { + Normal bool //true-正常 + Exception consts.DeviceExceptionEnum //具体异常-火警故障、故障、异常、通信中断 +} + +//////////////////////////////////////////// + +// FireDamper 防火阀 +// +// 当烟气温度达到280℃时,人已基本疏散完毕,排烟已无实际意义,而烟气中此时已带火,阀门自动关闭,以避免火势蔓延 +type FireDamper struct { + Normal bool //true-正常 + Isolate bool //true-隔离 + Exception consts.DeviceExceptionEnum //具体异常-火警故障、故障、异常、通信中断 +} + +// ElectricSmokeFireDamper 电动防烟防火阀 +type ElectricSmokeFireDamper struct { + Normal bool //true-正常 + Exception consts.DeviceExceptionEnum //具体异常-火警故障、故障、异常、通信中断 +} + +//////////////////////////////////////////// + +// FireInterconnectionSignal 火灾互联互通信号 +type FireInterconnectionSignal struct { + Normal bool //true-正常 + Exception consts.DeviceExceptionEnum //具体异常-火警故障、故障、异常、通信中断 +} + +///////////////////////////////////////////// + var ( PartitionTypeFireRollerShutterTag = ecs.NewTag() //隔断型防火卷帘 EvacuationTypeFireRollerShutterTag = ecs.NewTag() //疏散型防火卷帘 @@ -129,13 +216,26 @@ var ( FirePumpTag = ecs.NewTag() //消防泵 SprayPumpTag = ecs.NewTag() //喷淋泵 StabilizedPressurePumpTag = ecs.NewTag() //稳压泵 + + SignalButterflyValveTag = ecs.NewTag() //信号蝶阀 + PressureSwitchTag = ecs.NewTag() //压力开关是与电器开关相结合的装置,当到达预先设定的流体压力时,开关接点动作 ) var ( - NetworkHostType = ecs.NewComponentType[NetworkHost]() //主机 - SmokeDetectorType = ecs.NewComponentType[SmokeDetector]() //烟感 - TemperatureDetectorType = ecs.NewComponentType[TemperatureDetector]() //温感 - ManualFireAlarmButtonType = ecs.NewComponentType[ManualFireAlarmButton]() //手动火灾报警按钮 - GasFireExtinguisherType = ecs.NewComponentType[GasFireExtinguisher]() //气体灭火 - AlarmBellType = ecs.NewComponentType[AlarmBell]() //警铃 - FireRollerShutterType = ecs.NewComponentType[FireRollerShutter]() //防火卷帘 + NetworkHostType = ecs.NewComponentType[NetworkHost]() //主机 + SmokeDetectorType = ecs.NewComponentType[SmokeDetector]() //烟感 + TemperatureDetectorType = ecs.NewComponentType[TemperatureDetector]() //温感 + ManualFireAlarmButtonType = ecs.NewComponentType[ManualFireAlarmButton]() //手动火灾报警按钮 + GasFireExtinguisherType = ecs.NewComponentType[GasFireExtinguisher]() //气体灭火 + AlarmBellType = ecs.NewComponentType[AlarmBell]() //警铃 + FireRollerShutterType = ecs.NewComponentType[FireRollerShutter]() //防火卷帘 + FasAcsType = ecs.NewComponentType[FasAcs]() //火警ACS联动 + FasAfcType = ecs.NewComponentType[FasAfc]() //火警AFC联动 + NonFirePowerSourceType = ecs.NewComponentType[NonFirePowerSource]() //非消防电源 + WaterFlowIndicatorType = ecs.NewComponentType[WaterFlowIndicator]() //水流指示器 + PumpStartButtonType = ecs.NewComponentType[PumpStartButton]() //启泵按钮 + TemperatureSensingCableType = ecs.NewComponentType[TemperatureSensingCable]() //感温电缆 + ElevatorToOriginalPosModuleType = ecs.NewComponentType[ElevatorToOriginalPosModule]() //电梯归首 + FireDamperType = ecs.NewComponentType[FireDamper]() //防火阀 + ElectricSmokeFireDamperType = ecs.NewComponentType[ElectricSmokeFireDamper]() //电动防烟防火阀 + FireInterconnectionSignalType = ecs.NewComponentType[FireInterconnectionSignal]() //火灾互联互通信号 ) diff --git a/component/iscs_pscada.go b/component/iscs_pscada.go index 319db01..26099d7 100644 --- a/component/iscs_pscada.go +++ b/component/iscs_pscada.go @@ -166,6 +166,7 @@ var ( DeviceAlarmTag = ecs.NewTag() //报警 有事故信号产生 DeviceStartTimeoutTag = ecs.NewTag() //启动超时 DeviceModuleFaultTag = ecs.NewTag() //模块故障 + DeviceFireAlarmMalfunctionTag = ecs.NewTag() //火警故障 ) // 设备置牌标签定义 diff --git a/consts/iscs_bas.go b/consts/iscs_bas.go index 802dbe7..fdad89f 100644 --- a/consts/iscs_bas.go +++ b/consts/iscs_bas.go @@ -11,4 +11,5 @@ const ( DeviceAlarm //报警 有事故信号产生 DeviceStartTimeout //启动超时 DeviceModuleFault //模块故障 + DeviceFireAlarmMalfunction //火警故障 ) diff --git a/entity/iscs_fas.go b/entity/iscs_fas.go index a5af18f..2a98c66 100644 --- a/entity/iscs_fas.go +++ b/entity/iscs_fas.go @@ -123,3 +123,137 @@ func NewStabilizedPressurePumpEntity(w ecs.World, id string) *ecs.Entry { entry.AddComponent(component.StabilizedPressurePumpTag) return entry } + +// NewFasAcsEntity 创建火警ACS联动实体 +func NewFasAcsEntity(w ecs.World, id string) *ecs.Entry { + wd := GetWorldData(w) + e, ok := wd.EntityMap[id] + if !ok { + e := w.Entry(w.Create(component.UidType, component.FasAcsType)) + component.UidType.SetValue(e, component.Uid{Id: id}) + wd.EntityMap[id] = e + } + return e +} + +// NewFasAfcEntity 创建火警AFC联动实体 +func NewFasAfcEntity(w ecs.World, id string) *ecs.Entry { + wd := GetWorldData(w) + e, ok := wd.EntityMap[id] + if !ok { + e := w.Entry(w.Create(component.UidType, component.FasAfcType)) + component.UidType.SetValue(e, component.Uid{Id: id}) + wd.EntityMap[id] = e + } + return e +} + +// NewWaterFlowIndicatorEntity 创建水流指示器实体 +func NewWaterFlowIndicatorEntity(w ecs.World, id string) *ecs.Entry { + wd := GetWorldData(w) + e, ok := wd.EntityMap[id] + if !ok { + e := w.Entry(w.Create(component.UidType, component.WaterFlowIndicatorType)) + component.UidType.SetValue(e, component.Uid{Id: id}) + wd.EntityMap[id] = e + } + return e +} + +// NewSignalButterflyValveEntity 创建信号蝶阀实体 +func NewSignalButterflyValveEntity(w ecs.World, id string) *ecs.Entry { + entry := NewElectricControlValveEntity(w, id) + entry.AddComponent(component.SignalButterflyValveTag) + return entry +} + +// NewPressureSwitchEntity 压力开关是与电器开关相结合的装置,当到达预先设定的流体压力时,开关接点动作 +func NewPressureSwitchEntity(w ecs.World, id string) *ecs.Entry { + entry := NewElectricControlValveEntity(w, id) + entry.AddComponent(component.PressureSwitchTag) + return entry +} + +// NewNonFirePowerSourceEntity 创建非消防电源实体 +func NewNonFirePowerSourceEntity(w ecs.World, id string) *ecs.Entry { + wd := GetWorldData(w) + e, ok := wd.EntityMap[id] + if !ok { + e := w.Entry(w.Create(component.UidType, component.NonFirePowerSourceType)) + component.UidType.SetValue(e, component.Uid{Id: id}) + wd.EntityMap[id] = e + } + return e +} + +// NewPumpStartButtonEntity 创建启泵按钮实体 +func NewPumpStartButtonEntity(w ecs.World, id string) *ecs.Entry { + wd := GetWorldData(w) + e, ok := wd.EntityMap[id] + if !ok { + e := w.Entry(w.Create(component.UidType, component.PumpStartButtonType)) + component.UidType.SetValue(e, component.Uid{Id: id}) + wd.EntityMap[id] = e + } + return e +} + +// NewTemperatureSensingCableEntity 创建感温电缆实体 +func NewTemperatureSensingCableEntity(w ecs.World, id string) *ecs.Entry { + wd := GetWorldData(w) + e, ok := wd.EntityMap[id] + if !ok { + e := w.Entry(w.Create(component.UidType, component.TemperatureSensingCableType)) + component.UidType.SetValue(e, component.Uid{Id: id}) + wd.EntityMap[id] = e + } + return e +} + +// NewElevatorToOriginalPosModuleEntity 电梯归首功能模块实体 +func NewElevatorToOriginalPosModuleEntity(w ecs.World, id string) *ecs.Entry { + wd := GetWorldData(w) + e, ok := wd.EntityMap[id] + if !ok { + e := w.Entry(w.Create(component.UidType, component.ElevatorToOriginalPosModuleType)) + component.UidType.SetValue(e, component.Uid{Id: id}) + wd.EntityMap[id] = e + } + return e +} + +// NewFireDamperEntity 创建防火阀实体 +func NewFireDamperEntity(w ecs.World, id string) *ecs.Entry { + wd := GetWorldData(w) + e, ok := wd.EntityMap[id] + if !ok { + e := w.Entry(w.Create(component.UidType, component.FireDamperType)) + component.UidType.SetValue(e, component.Uid{Id: id}) + wd.EntityMap[id] = e + } + return e +} + +// NewElectricSmokeFireDamperEntity 创建电动防火防烟阀实体 +func NewElectricSmokeFireDamperEntity(w ecs.World, id string) *ecs.Entry { + wd := GetWorldData(w) + e, ok := wd.EntityMap[id] + if !ok { + e := w.Entry(w.Create(component.UidType, component.ElectricSmokeFireDamperType)) + component.UidType.SetValue(e, component.Uid{Id: id}) + wd.EntityMap[id] = e + } + return e +} + +// NewFireInterconnectionSignalEntity 创建火灾互联互通信号设备实体 +func NewFireInterconnectionSignalEntity(w ecs.World, id string) *ecs.Entry { + wd := GetWorldData(w) + e, ok := wd.EntityMap[id] + if !ok { + e := w.Entry(w.Create(component.UidType, component.FireInterconnectionSignalType)) + component.UidType.SetValue(e, component.Uid{Id: id}) + wd.EntityMap[id] = e + } + return e +} diff --git a/fi/iscs_pscada.go b/fi/iscs_pscada.go index 92ad4b7..c1e13bd 100644 --- a/fi/iscs_pscada.go +++ b/fi/iscs_pscada.go @@ -93,6 +93,7 @@ const ( DeviceExceptionAlarm //报警 有事故信号产生 DeviceExceptionStartTimeout //启动超时 DeviceExceptionModuleFault //模块故障 + DeviceExceptionFireAlarmMalfunction //火警故障 ) // DeviceExceptionOperate 设备例外操作 @@ -110,6 +111,7 @@ func DeviceExceptionOperate(w ecs.World, deviceId string, opt DeviceExceptionOpt deviceEntry.RemoveComponent(component.DeviceAlarmTag) deviceEntry.RemoveComponent(component.DeviceStartTimeoutTag) deviceEntry.RemoveComponent(component.DeviceModuleFaultTag) + deviceEntry.RemoveComponent(component.DeviceFireAlarmMalfunctionTag) } // switch opt { @@ -131,6 +133,9 @@ func DeviceExceptionOperate(w ecs.World, deviceId string, opt DeviceExceptionOpt case DeviceExceptionModuleFault: clearAllExceptions(deviceEntry) deviceEntry.AddComponent(component.DeviceModuleFaultTag) + case DeviceExceptionFireAlarmMalfunction: + clearAllExceptions(deviceEntry) + deviceEntry.AddComponent(component.DeviceFireAlarmMalfunctionTag) default: clearAllExceptions(deviceEntry) }