using NLog; using OrpaonEMS.App.Models; using OrpaonEMS.Core.Enums; using OrpaonEMS.Core.EventHandMsg; using OrpaonEMS.Core; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using HslCommunication.ModBus; using HslCommunication; using System.Windows; using Prism.Mvvm; using OrpaonEMS.App.Com; using OrpaonEMS.Model; using System.Collections.ObjectModel; using OrpaonEMS.Core.ChannelModel; using ImTools; using OrpaonEMS.App.CANDrive; namespace OrpaonEMS.App.Services { /// /// 液冷空调服务数据 /// public class ACService : BindableBase { /// /// ScanDevice扫描Task /// static Task ScanDeviceTask { get; set; } ///// ///// CAN驱动 ///// //private CAN CANDrive { get; set; } ///// ///// ModbusRtu驱动 ///// //private ModbusRtu ModbusRtuDrive { get; set; } ///// ///// ModbusRtuStation 站号设置 ///// //private byte ModbusRtuStation { get; set; } = 1; /// /// 扫描线程使能 /// public bool ThreadEnable { get; set; } = true; private ObservableCollection _ListRtAlarm = new ObservableCollection(); /// /// 实时报警 /// public ObservableCollection ListRtAlarm { get { return _ListRtAlarm; } set { _ListRtAlarm = value; } } ///// ///// 报警状态数据 ///// //private OperateResult OperateResultBmsAlarm { get; set; } ///// ///// BMS只读数据-前125字节 ///// //private OperateResult OperateResult1 { get; set; } /// /// 报警模型 /// public List ListBitAlarmInfo { get; set; } public ACService(ILogService logger, ConfigDataService configDataService) { Logger = logger; ConfigDataService = configDataService; if (!ConfigDataService.IsDemo) { CAN.ConnectionCan(BaudRate.EMUC_BAUDRATE_500K); CAN.Start(); } //ModbusRtuDrive = new ModbusTcpNet("192.168.10.253", 502); //ModbusRtuDrive?.Close(); //ModbusRtuDrive = new ModbusRtu(ModbusRtuStation); //ModbusRtuDrive.AddressStartWithZero = true; //ModbusRtuDrive.IsStringReverse = false; //ModbusRtuDrive.DataFormat = HslCommunication.Core.DataFormat.ABCD; //try //{ // ModbusRtuDrive.SerialPortInni(sp => // { // sp.PortName = "COM7"; // //sp.PortName = "COM10"; // sp.BaudRate = 9600; // sp.DataBits = 8; // sp.StopBits = System.IO.Ports.StopBits.One; // sp.Parity = System.IO.Ports.Parity.None; // }); // var result = ModbusRtuDrive.Open(); // if (!result.IsSuccess) // { // Logger.Info("液冷连接失败"); // } //} //catch (Exception ex) //{ // MessageBox.Show(ex.Message); //} ListBitAlarmInfo = new List() { new CoolBitAlarmInfo(){Category=1,BitIndex = 0,Content="供水泵故障"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 1,Content="泵空转保护"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 2,Content="泵堵转保护"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 3,Content="泵过流故障"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 4,Content="泵欠压故障"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 5,Content="泵过压故障"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 6,Content="泵缺相/电流采样偏移/失步/预充故障"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 7,Content="泵驱动过热保护故障"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 8,Content="供水压力传感器故障"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 9,Content="主板 IIC 故障 "}, new CoolBitAlarmInfo(){Category=1,BitIndex = 10,Content="回水压力低故障"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 11,Content="供水压力过高"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 12,Content="电压过高"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 13,Content="电压过低"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 14,Content="备用"}, new CoolBitAlarmInfo(){Category=1,BitIndex = 15,Content="备用"}, new CoolBitAlarmInfo(){Category=2,BitIndex = 0,Content="系统低压"}, new CoolBitAlarmInfo(){Category=2,BitIndex = 1,Content="电加热保护 "}, new CoolBitAlarmInfo(){Category=2,BitIndex = 2,Content="风机过载"}, new CoolBitAlarmInfo(){Category=2,BitIndex = 3,Content="系统高压故障"}, new CoolBitAlarmInfo(){Category=2,BitIndex = 4,Content="蒸发进口探头故障 "}, new CoolBitAlarmInfo(){Category=2,BitIndex = 5,Content="蒸发出口探头故障"}, new CoolBitAlarmInfo(){Category=2,BitIndex = 6,Content="系统高压报警锁定"}, new CoolBitAlarmInfo(){Category=2,BitIndex = 7,Content="排气压力传感器故障"}, new CoolBitAlarmInfo(){Category=2,BitIndex = 8,Content="压缩机变频器通讯故障"}, new CoolBitAlarmInfo(){Category=3,BitIndex = 0,Content="液温探头故障"}, new CoolBitAlarmInfo(){Category=3,BitIndex = 1,Content="回液探头故障"}, new CoolBitAlarmInfo(){Category=3,BitIndex = 2,Content="环境探头故障 "}, new CoolBitAlarmInfo(){Category=3,BitIndex = 3,Content="液温过高"}, new CoolBitAlarmInfo(){Category=3,BitIndex = 4,Content="回水压力传感器故障"}, new CoolBitAlarmInfo(){Category=3,BitIndex = 5,Content="屏幕与主板通讯超时"}, new CoolBitAlarmInfo(){Category=3,BitIndex = 6,Content="液温过低"}, new CoolBitAlarmInfo(){Category=3,BitIndex = 7,Content="供水压力过高预警"}, new CoolBitAlarmInfo(){Category=3,BitIndex = 8,Content="掉电报警"}, new CoolBitAlarmInfo(){Category=3,BitIndex = 9,Content="从板通讯故障"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 0,Content="压机起动瞬间过流"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 1,Content="压机加速运行过流"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 2,Content="压机减速运行过流"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 3,Content="压机恒速运行过流\r"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 4,Content="压机加速运行过压\r"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 5,Content="压机减速运行过压"}, new CoolBitAlarmInfo(){Category=4,BitIndex =6,Content="压机恒速运行过压\r"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 7,Content="压机待机时过压"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 8,Content="压机运行中欠"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 9,Content="压机输出缺相"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 10,Content="压机功率器件保护"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 11,Content="压机过热"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 12,Content="压机过载"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 13,Content="压机检测压机过载"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 14,Content="压机负载过重\r"}, new CoolBitAlarmInfo(){Category=4,BitIndex = 15,Content="压机速度过大"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 0,Content="压机 D 轴电流过大"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 1,Content="压机 Q 轴电流过大"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 2,Content="压机参数存储失败"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 3,Content="压机通讯异常"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 4,Content="压机电流检测故障"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 5,Content="压机启动中电机堵转"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 6,Content="压机运行中电机堵转"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 7,Content="压机失速故障"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 8,Content="压机中断溢出 1"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 9,Content="压机中断溢出 2"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 10,Content="压机启动中转子抖动过大"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 11,Content="压机运行中转子抖动过大"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 12,Content="PFC 过流"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 13,Content="PFC 峰值电流过大"}, new CoolBitAlarmInfo(){Category=5,BitIndex = 14,Content="PFC 有效值电流过大"}, }; foreach (var item in ListBitAlarmInfo) { item.PubCoolAlarmEventHandler += Item_PubCoolAlarmEventHandler; } ScanDeviceStart(); //CoolAutoControls = new CoolAutoControl(); //CoolAutoControls.CoolCmdHandler += CoolAutoControls_CoolCmdHandler; //液冷的监控 //Task.Run(() => ListenCoolCycle()); } private int _AlarmCount; /// /// 报警个数 /// public int AlarmCount { get { return _AlarmCount; } set { _AlarmCount = value; RaisePropertyChanged(); } } /// ///报警发布 /// /// /// /// private void Item_PubCoolAlarmEventHandler(object? sender, Event.CoolAlarmCellEventHandMsg AlarmData) { //统计个数 AlarmCount = ListBitAlarmInfo.Where(a => a.State == true).Count(); if (AlarmData.State)//报警发生 { var FindData = ListRtAlarm.Where(a => a.Content == AlarmData.Content); if (FindData.Count() > 0) { ListRtAlarm.Add(FindData.First()); } Console.WriteLine($"时间:{DateTime.Now.ToString()}:PCS报警激活:{AlarmData.Content} "); } else//报警消失 { Console.WriteLine($"时间:{DateTime.Now.ToString()}:PCS报警消失:{AlarmData.Content} "); var FindData = ListRtAlarm.Where(a => a.Content == AlarmData.Content); if (FindData.Count() > 0) { ListRtAlarm.Remove(FindData.First()); } ////报警结束,可以采集数据 //AlarmChannel.Writer.WriteAsync(new AlarmChannelData() //{ // MsgTime = DateTime.Now, // alarmChannel = new AlarmChannel() // { // Content = AlarmData.Content, // StartTime = AlarmData.CurTimeInfo.StartTime, // EndTime = AlarmData.CurTimeInfo.EndTime, // AlarmDur = (decimal)AlarmData.CurTimeInfo.AlarmDur, // Level = AlarmData.Level, // } //}); } //报警个数为0,那么就清空报警数据了 if (AlarmCount == 0) { ListRtAlarm.Clear(); return; } } /// ///扫描 /// private void ScanDeviceStart() { Thread.Sleep(1000); ScanDeviceTask = Task.Run(async () => { //延后5秒 await Task.Delay(5000); //默认的指令状态 if (ConfigDataService.SetCtrModel <= 3) { //控制模式 SendCanMsg.ValueToMotorolaSignal(ConfigDataService.SetCtrModel, 0, 2, 1, 0); //自动模式 SendCanMsg.ValueToMotorolaSignal(0, 4, 1, 1, 0); } else { //控制模式 SendCanMsg.ValueToMotorolaSignal(0, 0, 2, 1, 0); //自动模式 SendCanMsg.ValueToMotorolaSignal(1, 4, 1, 1, 0); } //制冷温度目标 SendCanMsg.ValueToMotorolaSignal(1, 16, 8, 1, 0); //制热设定温度 SendCanMsg.ValueToMotorolaSignal(ConfigDataService.SetHeadTargetTemp, 24, 8, 1, -40); //制冷设定温度 SendCanMsg.ValueToMotorolaSignal(ConfigDataService.SetCoolTargetTemp, 32, 8, 1, -40); //运行泵转速 SendCanMsg.ValueToMotorolaSignal(100, 40, 8, 1, 0); //运行泵转速 SendCanMsg.ValueToMotorolaSignal(50, 48, 8, 1, 0); while (ThreadEnable) { await Task.Delay(800); ////控制模式 //SendCanMsg.ValueToMotorolaSignal(0, 0, 2, 1, 0); ////自动模式 //SendCanMsg.ValueToMotorolaSignal(0, 4, 1, 1, 0); ////制冷温度目标 //SendCanMsg.ValueToMotorolaSignal(1, 16, 8, 1, 0); ////制热设定温度 //SendCanMsg.ValueToMotorolaSignal(10, 24, 8, 1, -40); ////制冷设定温度 //SendCanMsg.ValueToMotorolaSignal(10, 32, 8, 1, -40); ////运行泵转速 //SendCanMsg.ValueToMotorolaSignal(100, 40, 8, 1, 0); ////运行泵转速 //SendCanMsg.ValueToMotorolaSignal(100, 48, 8, 1, 0); //var data = SendCanMsg.GetCanMsg(); //ID(0x04904000) 下发指令 LinkStateValue = CAN.SendData(0x04904000, SendCanMsg.GetCanMsg()); //读取数据 CoolWorkModelValue = ACCANParsData.msg_0X18008040.WorkState; OutTemp = ACCANParsData.msg_0X18008040.OutTemp; InTemp = ACCANParsData.msg_0X18008040.InTemp; SysEnvTemp = ACCANParsData.msg_0X18008040.SysEnvTemp; InPress = ACCANParsData.msg_0X18008040.InPress; OutPress = ACCANParsData.msg_0X18008040.OutPress; InverterErrCode = ACCANParsData.msg_0X18008040.InverterErrCode.ToString(); CoolFaultCode = ACCANParsData.msg_0X18008040.ErrCode.ToString(); CoolFaultLevel = ACCANParsData.msg_0X18008040.ErrLevel.ToString(); CapState = ACCANParsData.msg_0X18018040.CompressorState == 1 ? "开启" : "关闭"; CapHeatStripState = ACCANParsData.msg_0X18018040.CompressorHeatStripState == 1 ? "开启" : "关闭"; EleHeatState = ACCANParsData.msg_0X18018040.EleHeatState == 1 ? "开启" : "关闭"; WaterPumpState = ACCANParsData.msg_0X18018040.WaterPumpState == 1 ? "开启" : "关闭"; Fan1State = ACCANParsData.msg_0X18018040.FanState1 == 1 ? "开启" : "关闭"; Fan2State = ACCANParsData.msg_0X18018040.FanState2 == 1 ? "开启" : "关闭"; Fan3State = ACCANParsData.msg_0X18018040.FanState3 == 1 ? "开启" : "关闭"; CapSpeed = ACCANParsData.msg_0X18018040.CompressorSpeed; PumpSpeed = ACCANParsData.msg_0X18018040.PumpSpeed; #region ModbusRTU 地址 ////读数据 //OperateResult1 = ModbusRtuDrive.Read("0", 100); //if (OperateResult1.IsSuccess) //{ // //机组运行状态 // CoolStateVaue = ModbusRtuDrive.ByteTransform.TransUInt16(OperateResult1.Content, 0); // OutTemp.SrRtValue = ModbusRtuDrive.ByteTransform.TransInt16(OperateResult1.Content, 6); // InTemp.SrRtValue = ModbusRtuDrive.ByteTransform.TransInt16(OperateResult1.Content, 8); // SysSteamInTemp.SrRtValue = ModbusRtuDrive.ByteTransform.TransInt16(OperateResult1.Content, 10); // SysSteamOutTemp.SrRtValue = ModbusRtuDrive.ByteTransform.TransInt16(OperateResult1.Content, 12); // SysEnvTemp.SrRtValue = ModbusRtuDrive.ByteTransform.TransInt16(OperateResult1.Content, 14); // SysCondSC.SrRtValue = ModbusRtuDrive.ByteTransform.TransInt16(OperateResult1.Content, 16); // OpenDeg.SrRtValue = ModbusRtuDrive.ByteTransform.TransUInt16(OperateResult1.Content, 18); // PumpSpeed.SrRtValue = ModbusRtuDrive.ByteTransform.TransUInt16(OperateResult1.Content, 20); // CapSpeed.SrRtValue = ModbusRtuDrive.ByteTransform.TransUInt16(OperateResult1.Content, 22); // FanSpeed.SrRtValue = ModbusRtuDrive.ByteTransform.TransUInt16(OperateResult1.Content, 24); // OutPress.SrRtValue = ModbusRtuDrive.ByteTransform.TransInt16(OperateResult1.Content, 26); // InPress.SrRtValue = ModbusRtuDrive.ByteTransform.TransInt16(OperateResult1.Content, 28); // ExPress.SrRtValue = ModbusRtuDrive.ByteTransform.TransInt16(OperateResult1.Content, 30); // CoolFaultValue1 = ModbusRtuDrive.ByteTransform.TransUInt16(OperateResult1.Content, 50); // CoolFaultValue2 = ModbusRtuDrive.ByteTransform.TransUInt16(OperateResult1.Content, 52); // CoolFaultValue3 = ModbusRtuDrive.ByteTransform.TransUInt16(OperateResult1.Content, 54); // CoolFaultValue4 = ModbusRtuDrive.ByteTransform.TransUInt16(OperateResult1.Content, 56); // CoolFaultValue5 = ModbusRtuDrive.ByteTransform.TransUInt16(OperateResult1.Content, 58); //} #endregion } }); } #region 液冷自动控制 /// /// 液冷自动控制模型 /// public CoolAutoControl CoolAutoControls { get; set; } private void CoolAutoControls_CoolCmdHandler(object sender, CoolValue cmdData) { SetCoolTargetTemp((ushort)cmdData.TargetTemp); SetCoolCtrModel(cmdData.CmdType); } /// /// 监控液冷并控制 /// /// private async Task ListenCoolCycle() { while (ThreadEnable) { try { Thread.Sleep(60000); //CoolAutoControls.UpdateValue(OutPress.RtValue); CoolAutoControls.UpdateCoolState(CoolAlarmState); } catch (Exception ex) { Logger.Info($"时间:{DateTime.Now.ToString()}-【ListenPeakValleyTimeCycle】-{ex.Message}"); } } } #endregion #region 液冷数据 private bool _LinkStateValue = false; /// /// 液冷连接状态 /// public bool LinkStateValue { get { return _LinkStateValue; } set { if (_LinkStateValue != value) { if (value) { LinkStateMsg = "正常"; } else { LinkStateMsg = "失败"; } _LinkStateValue = value; } } } private string _LinkStateMsg = "失败"; /// /// 液冷连接状态 /// public string LinkStateMsg { get { return _LinkStateMsg; } set { _LinkStateMsg = value; RaisePropertyChanged(); } } /// /// 液冷的报警状态信息 /// True:报警发生 /// False:没有报警 /// public bool CoolAlarmState { get; set; } = false; /// /// 设置液冷的数据 /// /// public bool SetCoolTargetTemp(ushort value) { // ulong data = Convert.ToUInt64((values - offset) / factor); var SetValue = (ushort)((value - (-40))); //var result = ModbusRtuDrive.Write("223", SetValue); //if (result.IsSuccess) //{ // return true; //} return false; } /// /// 设置液冷的控制模式 /// /// public bool SetCoolCtrModel(CoolState coolState) { //0:关机模式;1:制冷模式;2:制热模式;3:自循环模式 switch (coolState) { case CoolState.Stop: ////自动模式 SendCanMsg.ValueToMotorolaSignal(0, 4, 1, 1, 0); //控制模式 SendCanMsg.ValueToMotorolaSignal(0, 0, 2, 1, 0); return false; case CoolState.Cool: ////自动模式 SendCanMsg.ValueToMotorolaSignal(0, 4, 1, 1, 0); //控制模式 SendCanMsg.ValueToMotorolaSignal(1, 0, 2, 1, 0); return false; case CoolState.Heat: ////自动模式 SendCanMsg.ValueToMotorolaSignal(0, 4, 1, 1, 0); //控制模式 SendCanMsg.ValueToMotorolaSignal(2, 0, 2, 1, 0); return false; case CoolState.AutoCycle: ////自动模式 SendCanMsg.ValueToMotorolaSignal(0, 4, 1, 1, 0); //控制模式 SendCanMsg.ValueToMotorolaSignal(3, 0, 2, 1, 0); return false; case CoolState.Auto: //自动模式 SendCanMsg.ValueToMotorolaSignal(1, 4, 1, 1, 0); return false; default: return false; } } ///// ///// 设置液冷的控制模式 ///// ///// //public bool SetCoolCtrModel(CoolState coolState) //{ // switch (coolState) // { // case CoolState.Stop: // var result1 = ModbusRtuDrive.Write("222", (ushort)0); // if (result1.IsSuccess) // { // return true; // } // return false; // case CoolState.Cool: // var result2 = ModbusRtuDrive.Write("222", (ushort)1); // if (result2.IsSuccess) // { // return true; // } // return false; // case CoolState.Heat: // var result3 = ModbusRtuDrive.Write("222", (ushort)2); // if (result3.IsSuccess) // { // return true; // } // return false; // case CoolState.AutoCycle: // var result4 = ModbusRtuDrive.Write("222", (ushort)3); // if (result4.IsSuccess) // { // return true; // } // return false; // default: // return false; // } //} private double _InPress; /// /// 进水压力 /// 只读 /// public double InPress { get { return _InPress; } set { _InPress = value; RaisePropertyChanged(); } } private double _OutPress; /// /// 出水压力 /// public double OutPress { get { return _OutPress; } set { _OutPress = value; RaisePropertyChanged(); } } private double _OutTemp; /// /// 出水温度 /// public double OutTemp { get { return _OutTemp; } set { _OutTemp = value; RaisePropertyChanged(); } } private double _InTemp; /// /// 回水温度 /// public double InTemp { get { return _InTemp; } set { _InTemp = value; RaisePropertyChanged(); } } private double _SysEnvTemp; /// /// 环境温度 /// public double SysEnvTemp { get { return _SysEnvTemp; } set { _SysEnvTemp = value; RaisePropertyChanged(); } } private double _PumpSpeed; /// /// 泵转速 /// public double PumpSpeed { get { return _PumpSpeed; } set { _PumpSpeed = value; RaisePropertyChanged(); } } private double _CapSpeed; /// /// 压机转速 /// public double CapSpeed { get { return _CapSpeed; } set { _CapSpeed = value; RaisePropertyChanged(); } } private string _CoolWorkModelMsg; /// /// 液冷机组工作模式 /// 运行在自动模式时,在 /// 1~3 之间切换 /// public string CoolWorkModelMsg { get { return _CoolWorkModelMsg; } set { _CoolWorkModelMsg = value; RaisePropertyChanged(); } } private int _CoolWorkModelValue; /// /// 工作模式状态字 /// public int CoolWorkModelValue { get { return _CoolWorkModelValue; } set { //if (_CoolWorkModelValue != value) //{ switch (value) { case 0: CoolWorkModelMsg = "关机模式"; break; case 1: CoolWorkModelMsg = "制冷模式"; break; case 2: CoolWorkModelMsg = "制热模式"; break; case 3: CoolWorkModelMsg = "自循环模式"; break; case 4: CoolWorkModelMsg = "自动模式"; break; default: break; } //} _CoolWorkModelValue = value; } } private string _InverterErrCode; /// /// 变频器故障码 /// public string InverterErrCode { get { return _InverterErrCode; } set { _InverterErrCode = value; RaisePropertyChanged(); } } private string coolFaultCode; /// /// 液冷故障码 /// public string CoolFaultCode { get { return coolFaultCode; } set { coolFaultCode = value; RaisePropertyChanged(); } } private string coolFaultLevel; /// /// 液冷等级 /// public string CoolFaultLevel { get { return coolFaultLevel; } set { coolFaultLevel = value; RaisePropertyChanged(); } } private string _CapState; /// /// 压缩机 运行状态 /// 开启和关闭 /// public string CapState { get { return _CapState; } set { _CapState = value; RaisePropertyChanged(); } } private string _CapHeatStripState; /// /// 压缩机加热带 运行状态 /// 开启和关闭 /// public string CapHeatStripState { get { return _CapHeatStripState; } set { _CapHeatStripState = value; RaisePropertyChanged(); } } private string _EleHeatState; /// /// 电加热 运行状态 /// 开启和关闭 /// public string EleHeatState { get { return _EleHeatState; } set { _EleHeatState = value; RaisePropertyChanged(); } } private string _WaterPumpState; /// /// 供水泵 运行状态 /// 开启和关闭 /// public string WaterPumpState { get { return _WaterPumpState; } set { _WaterPumpState = value; RaisePropertyChanged(); } } private string _Fan1State; /// /// 风机1 运行状态 /// 开启和关闭 /// public string Fan1State { get { return _Fan1State; } set { _Fan1State = value; RaisePropertyChanged(); } } private string _Fan2State; /// /// 风机2 运行状态 /// 开启和关闭 /// public string Fan2State { get { return _Fan2State; } set { _Fan2State = value; RaisePropertyChanged(); } } private string _Fan3State; /// /// 风机3 运行状态 /// 开启和关闭 /// public string Fan3State { get { return _Fan3State; } set { _Fan3State = value; RaisePropertyChanged(); } } public ILogService Logger { get; } public ConfigDataService ConfigDataService { get; } //private ushort _CoolStateVaue = 0; ///// ///// 液冷状态字 ///// 机组运行状态 ///// //public ushort CoolStateVaue //{ // get { return _CoolStateVaue; } // set // { // //if (value != _CoolStateVaue) // //{ // switch (BitHelper.GetLByteUint16(value)) // { // case 0: // CoolStatesMsg = "空闲"; // break; // case 1: // CoolStatesMsg = "准备启动"; // break; // case 2: // CoolStatesMsg = "运行"; // break; // case 3: // CoolStatesMsg = "延时停机"; // break; // case 4: // CoolStatesMsg = "故障"; // break; // default: // break; // } // switch (BitHelper.GetHByteUint16(value)) // { // case 0: // CoolWorkModelMsg = "待机"; // break; // case 1: // CoolWorkModelMsg = "制冷"; // break; // case 2: // CoolWorkModelMsg = "制热"; // break; // case 3: // CoolWorkModelMsg = "自循环"; // break; // default: // break; // } // _CoolStateVaue = value; // //} // } //} #region Old ModbusTcp ///// ///// 回水压力 ///// 只读 ///// //public BMSRoShortCell InPress { get; set; } = new BMSRoShortCell( // "回水压力",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "227",//地址 // true,//是否关注 // "bar"//单位 // ); ///// ///// 供水压力 ///// //public BMSRoShortCell OutPress { get; set; } = new BMSRoShortCell( // "供水压力",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "228",//地址 // true,//是否关注 // "bar"//单位 // ); ///// ///// 排气压力 ///// //public BMSRoShortCell ExPress { get; set; } = new BMSRoShortCell( // "排气压力",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "228",//地址 // true,//是否关注 // "bar"//单位 // ); ///// ///// 供液温度 ///// //public BMSRoShortCell OutTemp { get; set; } = new BMSRoShortCell( // "供液温度",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "225",//地址 // true,//是否关注 // "℃"//单位 // ); ///// ///// 回液温度 ///// //public BMSRoShortCell InTemp { get; set; } = new BMSRoShortCell( // "回液温度",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "226",//地址 // true,//是否关注 // "℃"//单位 // ); ///// ///// 系统蒸进 ///// //public BMSRoShortCell SysSteamInTemp { get; set; } = new BMSRoShortCell( // "系统蒸进",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "226",//地址 // true,//是否关注 // "℃"//单位 // ); ///// ///// 蒸出温度 ///// //public BMSRoShortCell SysSteamOutTemp { get; set; } = new BMSRoShortCell( // "蒸出温度",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "226",//地址 // true,//是否关注 // "℃"//单位 // ); ///// ///// 环境温度 ///// //public BMSRoShortCell SysEnvTemp { get; set; } = new BMSRoShortCell( // "环境温度",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "226",//地址 // true,//是否关注 // "℃"//单位 // ); ///// ///// 系统冷凝 ///// //public BMSRoShortCell SysCondSC { get; set; } = new BMSRoShortCell( // "系统冷凝",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "226",//地址 // true,//是否关注 // "℃"//单位 // ); ///// ///// 节流电膨当前开度 ///// //public BMSRoUShortCell OpenDeg { get; set; } = new BMSRoUShortCell( // "节流电膨当前开度",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "226",//地址 // true,//是否关注 // "℃"//单位 // ); ///// ///// 水泵当前转速 ///// //public BMSRoUShortCell PumpSpeed { get; set; } = new BMSRoUShortCell( // "水泵当前转速",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "226",//地址 // true,//是否关注 // "℃"//单位 // ); ///// ///// 压缩机当前转速 ///// //public BMSRoUShortCell CapSpeed { get; set; } = new BMSRoUShortCell( // "压缩机当前转速",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "226",//地址 // true,//是否关注 // "℃"//单位 // ); ///// ///// 风机转速 ///// //public BMSRoUShortCell FanSpeed { get; set; } = new BMSRoUShortCell( // "风机转速",//名称 // 0,//偏移量 // 0.1,//分辨率 // 1,//Index // 1,//长度 // "226",//地址 // true,//是否关注 // "℃"//单位 // ); //private ushort _CoolFaultValue1; ///// ///// 液冷状态字 ///// 液冷故障码及等级 ///// (0:无故障 1: ///// 有故障) ///// //public ushort CoolFaultValue1 //{ // get { return _CoolFaultValue1; } // set // { // if (value != _CoolFaultValue1) // { // if (value == 0)//报警位0,则清除报警数据 // { // ListRtAlarm.Clear(); // } // else // { // var Data = ListBitAlarmInfo.Where(a => a.Category == 1).ToList(); // foreach (var itemAlarm in Data) // { // itemAlarm.State = ComHelper.GetBitValue(value, itemAlarm.BitIndex); // } // } // _CoolFaultValue1 = value; // } // } //} //private ushort _CoolFaultValue2; ///// ///// 液冷状态字 ///// 液冷故障码及等级 ///// (0:无故障 2: ///// 有故障) ///// //public ushort CoolFaultValue2 //{ // get { return _CoolFaultValue2; } // set // { // if (value != _CoolFaultValue2) // { // if (value == 0)//报警位0,则清除报警数据 // { // ListRtAlarm.Clear(); // } // else // { // var Data = ListBitAlarmInfo.Where(a => a.Category == 2).ToList(); // foreach (var itemAlarm in Data) // { // itemAlarm.State = ComHelper.GetBitValue(value, itemAlarm.BitIndex); // } // } // _CoolFaultValue2 = value; // } // } //} //private ushort _CoolFaultValue3; ///// ///// 液冷状态字 ///// 液冷故障码及等级 ///// (0:无故障 3: ///// 有故障) ///// //public ushort CoolFaultValue3 //{ // get { return _CoolFaultValue3; } // set // { // if (value != _CoolFaultValue3) // { // if (value == 0)//报警位0,则清除报警数据 // { // ListRtAlarm.Clear(); // } // else // { // var Data = ListBitAlarmInfo.Where(a => a.Category == 3).ToList(); // foreach (var itemAlarm in Data) // { // itemAlarm.State = ComHelper.GetBitValue(value, itemAlarm.BitIndex); // } // } // _CoolFaultValue3 = value; // } // } //} //private ushort _CoolFaultValue4; ///// ///// 液冷状态字 ///// 液冷故障码及等级 ///// (0:无故障 4: ///// 有故障) ///// //public ushort CoolFaultValue4 //{ // get { return _CoolFaultValue4; } // set // { // if (value != _CoolFaultValue4) // { // if (value == 0)//报警位0,则清除报警数据 // { // ListRtAlarm.Clear(); // } // else // { // var Data = ListBitAlarmInfo.Where(a => a.Category == 4).ToList(); // foreach (var itemAlarm in Data) // { // itemAlarm.State = ComHelper.GetBitValue(value, itemAlarm.BitIndex); // } // } // _CoolFaultValue4 = value; // } // } //} //private ushort _CoolFaultValue5; ///// ///// 液冷状态字 ///// 液冷故障码及等级 ///// (0:无故障 5: ///// 有故障) ///// //public ushort CoolFaultValue5 //{ // get { return _CoolFaultValue5; } // set // { // if (value != _CoolFaultValue5) // { // if (value == 0)//报警位0,则清除报警数据 // { // ListRtAlarm.Clear(); // } // else // { // var Data = ListBitAlarmInfo.Where(a => a.Category == 5).ToList(); // foreach (var itemAlarm in Data) // { // itemAlarm.State = ComHelper.GetBitValue(value, itemAlarm.BitIndex); // } // } // _CoolFaultValue5 = value; // } // } //} //private string _CoolStatesMsg; ///// ///// 液冷机组运行状态消息 ///// //public string CoolStatesMsg //{ // get { return _CoolStatesMsg; } // set { _CoolStatesMsg = value; RaisePropertyChanged(); } //} #endregion #endregion } }