rts-sim-module/repository/iscs_bas_dxt.go

340 lines
8.3 KiB
Go
Raw Normal View History

2023-12-25 10:07:59 +08:00
package repository
import "joylink.club/rtsssimulation/repository/model/proto"
//ISCS BAS 大系统相关
2023-12-25 13:40:00 +08:00
// AirPavilion 风亭(排、送)
type AirPavilion struct {
2023-12-25 10:07:59 +08:00
Identity
2023-12-25 13:40:00 +08:00
Code string
PavilionType proto.AirPavilion_Type //风亭子类型
PortA DevicePort //风亭A端口连接的设备
2023-12-25 10:07:59 +08:00
}
2023-12-25 13:40:00 +08:00
func NewAirPavilion(id string, code string, pavilionType proto.AirPavilion_Type) *AirPavilion {
return &AirPavilion{
Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_AirPavilion},
Code: code,
PavilionType: pavilionType,
2023-12-25 10:07:59 +08:00
}
}
2023-12-25 13:40:00 +08:00
func (p *AirPavilion) PortNum() int {
return 1
}
2023-12-25 10:07:59 +08:00
2023-12-25 13:40:00 +08:00
// AirPavilionPort 风亭端口
//
// implement DevicePort
type AirPavilionPort struct {
port proto.Port
2023-12-25 14:40:15 +08:00
device *AirPavilion
2023-12-25 10:07:59 +08:00
}
2023-12-25 13:40:00 +08:00
func (p *AirPavilionPort) Port() proto.Port {
return p.port
}
func (p *AirPavilionPort) Device() PortedDevice {
return p.device
2023-12-25 10:07:59 +08:00
}
2023-12-25 13:40:00 +08:00
///////////////////////////////////////////////////////////
// Valve 阀门(电动调节阀、电动风阀)
type Valve struct {
2023-12-25 10:07:59 +08:00
Identity
2023-12-25 13:40:00 +08:00
Code string
ValveType proto.Valve_Type //阀门子类型
PortA DevicePort //阀门A端口连接的设备
PortB DevicePort //阀门B端口连接的设备
2023-12-25 10:07:59 +08:00
}
2023-12-25 13:40:00 +08:00
func NewValve(id string, code string, valveType proto.Valve_Type) *Valve {
return &Valve{
Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_Valve},
Code: code,
ValveType: valveType,
2023-12-25 10:07:59 +08:00
}
}
2023-12-25 13:40:00 +08:00
func (p *Valve) PortNum() int {
return 2
}
2023-12-25 10:07:59 +08:00
2023-12-25 14:09:29 +08:00
// ValvePort 阀门端口
2023-12-25 13:40:00 +08:00
//
// implement DevicePort
type ValvePort struct {
port proto.Port
device *Valve
2023-12-25 10:07:59 +08:00
}
2023-12-25 13:40:00 +08:00
func (p *ValvePort) Port() proto.Port {
return p.port
}
func (p *ValvePort) Device() PortedDevice {
return p.device
2023-12-25 10:07:59 +08:00
}
2023-12-25 13:40:00 +08:00
//////////////////////////////////////////////////
2023-12-25 10:07:59 +08:00
// GasMixingChamber 混合室静压箱(气体)
// 有四个端口ABC三个端口为输入口D端口为输出口
type GasMixingChamber struct {
Identity
2023-12-25 13:40:00 +08:00
Code string
PortA DevicePort //A端口连接的设备
PortB DevicePort //B端口连接的设备
PortC DevicePort //C端口连接的设备
PortD DevicePort //D端口连接的设备
2023-12-25 10:07:59 +08:00
}
func NewGasMixingChamber(id string, code string) *GasMixingChamber {
return &GasMixingChamber{
Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_GasMixingChamber},
Code: code,
}
}
2023-12-25 13:40:00 +08:00
func (p *GasMixingChamber) PortNum() int {
return 4
}
// GasMixingChamberPort 混合室静压箱端口
//
// implement DevicePort
type GasMixingChamberPort struct {
port proto.Port
device *GasMixingChamber
}
func (p *GasMixingChamberPort) Port() proto.Port {
return p.port
}
func (p *GasMixingChamberPort) Device() PortedDevice {
return p.device
}
////////////////////////////////////////////////
2023-12-25 10:07:59 +08:00
// CombinationAirConditioner 组合式空调
// 有四个端口新风输入端口A,工作风输出端口B
// 端口C输出风再通过端口D输入通过C->D实现对风再处理。
type CombinationAirConditioner struct {
Identity
2023-12-25 13:40:00 +08:00
Code string
PortA DevicePort //新风输入A端口连接的设备
PortB DevicePort //工作风输出B端口连接的设备
PortC DevicePort //C端口连接的设备
PortD DevicePort //D端口连接的设备
2023-12-25 10:07:59 +08:00
}
func NewCombinationAirConditioner(id string, code string) *CombinationAirConditioner {
return &CombinationAirConditioner{
Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_CombinationAirConditioner},
Code: code,
}
}
2023-12-25 13:40:00 +08:00
func (p *CombinationAirConditioner) PortNum() int {
return 4
}
2023-12-27 18:11:27 +08:00
func (p *CombinationAirConditioner) Outputs() []DevicePort {
var out []DevicePort
if p.PortB != nil {
out = append(out, p.PortB)
}
if p.PortC != nil {
out = append(out, p.PortC)
}
return out
}
func (p *CombinationAirConditioner) Inputs() []DevicePort {
var in []DevicePort
if p.PortA != nil {
in = append(in, p.PortA)
}
if p.PortD != nil {
in = append(in, p.PortD)
}
return in
}
2023-12-25 13:40:00 +08:00
// CombinationAirConditionerPort 组合式空调端口
//
// implement DevicePort
type CombinationAirConditionerPort struct {
port proto.Port
device *CombinationAirConditioner
}
func (p *CombinationAirConditionerPort) Port() proto.Port {
return p.port
}
func (p *CombinationAirConditionerPort) Device() PortedDevice {
return p.device
}
/////////////////////////////////////////////////////////////////
2023-12-25 10:07:59 +08:00
// AirPurificationDevice 净化装置(对组合式空调B端口输出的工作风进行净化)
// 有两个端口端口A输入端口B输出
type AirPurificationDevice struct {
Identity
2023-12-25 13:40:00 +08:00
Code string
PortA DevicePort //A端口连接的设备
PortB DevicePort //B端口连接的设备
2023-12-25 10:07:59 +08:00
}
func NewAirPurificationDevice(id string, code string) *AirPurificationDevice {
return &AirPurificationDevice{
Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_AirPurificationDevice},
Code: code,
}
}
2023-12-25 13:40:00 +08:00
func (p *AirPurificationDevice) PortNum() int {
return 2
}
// AirPurificationDevicePort 净化装置端口
//
// implement DevicePort
type AirPurificationDevicePort struct {
port proto.Port
device *AirPurificationDevice
}
func (p *AirPurificationDevicePort) Port() proto.Port {
return p.port
}
func (p *AirPurificationDevicePort) Device() PortedDevice {
return p.device
}
/////////////////////////////////////////////////////////
2023-12-25 10:07:59 +08:00
// AirCurtain 空气幕
type AirCurtain struct {
Identity
Code string
}
func NewAirCurtain(id string, code string) *AirCurtain {
return &AirCurtain{
Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_AirCurtain},
Code: code,
}
}
2023-12-25 13:40:00 +08:00
//////////////////////////////////////////////////////////
2023-12-25 10:07:59 +08:00
// Fan 风机
type Fan struct {
Identity
2023-12-25 17:31:35 +08:00
Code string
FanType proto.Fan_Type
2023-12-26 17:52:28 +08:00
*fanRunningModel
2023-12-27 18:11:27 +08:00
PortA DevicePort //A端口连接的设备风机出风口即排风口,输出端口
PortB DevicePort //B端口连接的设备风机进风口输入端口
2023-12-25 10:07:59 +08:00
}
2023-12-25 17:31:35 +08:00
func NewFan(id string, code string, fanType proto.Fan_Type) *Fan {
2023-12-25 10:07:59 +08:00
return &Fan{
2023-12-26 17:52:28 +08:00
Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_Fan},
Code: code,
FanType: fanType,
fanRunningModel: newFanRunningModel(fanType),
2023-12-25 10:07:59 +08:00
}
}
2023-12-25 13:40:00 +08:00
func (p *Fan) PortNum() int {
return 2
}
2023-12-27 18:11:27 +08:00
func (p *Fan) Outputs() []DevicePort {
if p.PortA == nil {
return nil
}
return []DevicePort{p.PortA}
}
func (p *Fan) Inputs() []DevicePort {
if p.PortB == nil {
return nil
}
return []DevicePort{p.PortB}
}
2023-12-25 13:40:00 +08:00
// FanPort 风机端口
//
// implement DevicePort
type FanPort struct {
port proto.Port
device *Fan
}
func (p *FanPort) Port() proto.Port {
return p.port
}
func (p *FanPort) Device() PortedDevice {
return p.device
}
2023-12-26 17:52:28 +08:00
type fanRunningModel struct {
maxSpeed float32
acTime uint16
}
func (m *fanRunningModel) MotorMaxSpeed() float32 {
return m.maxSpeed
}
func (m *fanRunningModel) MotorAcTime() uint16 {
return m.acTime
}
func newFanRunningModel(fanType proto.Fan_Type) *fanRunningModel {
switch fanType {
case proto.Fan_CommonFan:
return &fanRunningModel{maxSpeed: 3000, acTime: 2000}
case proto.Fan_HighLowSpeedFan:
return &fanRunningModel{maxSpeed: 6000, acTime: 4000}
case proto.Fan_FcBypassFan:
return &fanRunningModel{maxSpeed: 6000, acTime: 3000}
case proto.Fan_SoftStartFan:
return &fanRunningModel{maxSpeed: 100, acTime: 4000}
default:
return &fanRunningModel{maxSpeed: 3000, acTime: 2000}
}
}
2023-12-25 13:40:00 +08:00
////////////////////////////////////////////////
2023-12-25 10:07:59 +08:00
// GasEnvironment 气体环境(正常空气+有害烟雾)
// 有多个输入口统一为端口A用来为环境补充新鲜空气
// 有多个输出口统一为端口B用户将环境的混浊气体排除
// 排出气体动力源为该环境。
type GasEnvironment struct {
Identity
2023-12-25 13:40:00 +08:00
Code string
PortsA []DevicePort // 有多个输入口统一为端口A用来为环境补充新鲜空气
PortsB []DevicePort // 有多个输出口统一为端口B用户将环境的混浊气体排除
2023-12-25 10:07:59 +08:00
}
2023-12-25 14:09:29 +08:00
func NewGasEnvironment(id string, code string) *GasEnvironment {
return &GasEnvironment{
Identity: &identity{id: id, deviceType: proto.DeviceType_DeviceType_GasEnvironment},
Code: code,
}
}
2023-12-25 13:40:00 +08:00
func (p *GasEnvironment) PortNum() int {
return len(p.PortsA) + len(p.PortsB)
}
// GasEnvironmentPort 气体环境端口
//
// implement DevicePort
type GasEnvironmentPort struct {
port proto.Port
device *GasEnvironment
}
func (p *GasEnvironmentPort) Port() proto.Port {
return p.port
}
func (p *GasEnvironmentPort) Device() PortedDevice {
return p.device
2023-12-25 10:07:59 +08:00
}