From 9d3d161a8d0cf8263a83288679586efba8c92470 Mon Sep 17 00:00:00 2001 From: CZ Date: Sun, 1 Sep 2024 11:12:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B0=B4=E5=86=B7=E6=9C=BA=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Service/MyTask/HeartManagementTask.cs | 208 +++++++++++------- Service/WaterCool/Client/WaterCoolClient.cs | 38 ++-- .../Msg/WaterCool/WaterCoolStatus.cs | 2 - 3 files changed, 156 insertions(+), 92 deletions(-) diff --git a/Service/MyTask/HeartManagementTask.cs b/Service/MyTask/HeartManagementTask.cs index 051bd72..1385fd7 100644 --- a/Service/MyTask/HeartManagementTask.cs +++ b/Service/MyTask/HeartManagementTask.cs @@ -43,105 +43,159 @@ public class HeartManagementTask : ITask { if (waterCoolClient.Connected) { - while (true) + if (string.IsNullOrWhiteSpace(waterCoolClient.ChargeSn)) { - if (string.IsNullOrWhiteSpace(waterCoolClient.ChargeSn)) - { - var dictionary = - StaticStationInfo.RelationMap.Values.ToDictionary(i => i.WaterCoolerCode, - i => i.ChargeCode); - if(dictionary.Count!=0) - waterCoolClient.ChargeSn = dictionary[waterCoolClient.Sn]; - } - var chargerClient = ClientMgr.GetBySn(waterCoolClient.ChargeSn); - if (chargerClient == null) - { - return; - } + var dictionary = + StaticStationInfo.RelationMap.Values.ToDictionary(i => i.WaterCoolerCode, + i => i.ChargeCode); + if (dictionary.Count != 0) + waterCoolClient.ChargeSn = dictionary[waterCoolClient.Sn]; + } + + var chargerClient = ClientMgr.GetBySn(waterCoolClient.ChargeSn); + if (chargerClient == null) + { + return; + } - if (!waterCoolClient.StopFlag) + if (chargerClient.IsCharged)//充电状态 + { + //充电冷却 Tmax>=28℃且Tmean>=24℃ + if (chargerClient.BatteryPackDataVoltage?.CellTemperatureMax <= 28 + && chargerClient.BatteryPackDataVoltage?.CellTemperatureAverage >= 24) { - //Tmin<=12℃且Tmean<=15℃ - if (!waterCoolClient.HortStrategyFlag && chargerClient.BatteryPackDataVoltage - ?.CellTemperatureMax <= - 15 - && chargerClient.BatteryPackDataVoltage - ?.CellTemperatureMin <= - 12) + if (waterCoolClient.WaterCoolStatus.ComeBackTemperature>=10) { - waterCoolClient.HortStrategyFlag = true; + waterCoolClient.ColdStrategyFlag = true; + waterCoolClient.HortStrategyFlag = false; + waterCoolClient.LoopStrategyFlag = false; + waterCoolClient.msg.BMSState = 1; + waterCoolClient.msg.ChargState = 1; + Thread.Sleep(3000); + waterCoolClient.msg.HighTension = 0; + Thread.Sleep(3000); + waterCoolClient.msg.Mode = 1; } - if (waterCoolClient.HortStrategyFlag && (chargerClient.BatteryPackDataVoltage?.CellTemperatureMax >= 20 - || chargerClient.BatteryPackDataVoltage?.CellTemperatureMin >= 17)) + if (waterCoolClient.WaterCoolStatus.ComeBackTemperature>=7&&waterCoolClient.WaterCoolStatus.ComeBackTemperature<=10) { - waterCoolClient.HortStrategyFlag = false; - waterCoolClient.msg.SetTemperature = 0; - waterCoolClient.msg.Mode = 0; + //自循环 + if(waterCoolClient.msg.Mode ==0||waterCoolClient.msg.Mode==2||waterCoolClient.msg.Mode==3) + { + waterCoolClient.ColdStrategyFlag = false; + waterCoolClient.HortStrategyFlag = false; + waterCoolClient.LoopStrategyFlag = true; + waterCoolClient.msg.BMSState = 1; + waterCoolClient.msg.ChargState = 1; + Thread.Sleep(3000); + waterCoolClient.msg.HighTension = 0; + Thread.Sleep(3000); + waterCoolClient.msg.Mode = 1; + } + else //制冷模式 + { + waterCoolClient.ColdStrategyFlag = true; + waterCoolClient.HortStrategyFlag = false; + waterCoolClient.LoopStrategyFlag = false; + waterCoolClient.msg.BMSState = 1; + waterCoolClient.msg.ChargState = 1; + Thread.Sleep(3000); + waterCoolClient.msg.HighTension = 0; + Thread.Sleep(3000); + waterCoolClient.msg.Mode = 1; + } + } + if (waterCoolClient.WaterCoolStatus.ComeBackTemperature<=7) + { + waterCoolClient.ColdStrategyFlag = false; + waterCoolClient.HortStrategyFlag = true; + waterCoolClient.LoopStrategyFlag = false; + waterCoolClient.msg.BMSState = 1; + waterCoolClient.msg.ChargState = 1; + Thread.Sleep(3000); + waterCoolClient.msg.HighTension = 0; + Thread.Sleep(3000); + waterCoolClient.msg.Mode = 2; } + } + else//冷却停止 + { + waterCoolClient.ColdStrategyFlag = false; + waterCoolClient.HortStrategyFlag = false; + waterCoolClient.LoopStrategyFlag = false; + waterCoolClient.msg.BMSState = 0; + waterCoolClient.msg.HighTension = 1; + waterCoolClient.msg.ChargState = 0; + Thread.Sleep(3000); + waterCoolClient.msg.Mode = 0; + } + + + /* + if (waterCoolClient.HortStrategyFlag && + (chargerClient.BatteryPackDataVoltage?.CellTemperatureMax >= 20 + || chargerClient.BatteryPackDataVoltage?.CellTemperatureMin >= 17)) + { + waterCoolClient.HortStrategyFlag = false; + waterCoolClient.msg.SetTemperature = 0; + waterCoolClient.msg.Mode = 0; + } - //开启制冷策略 - if (!waterCoolClient.ColdStrategyFlag && chargerClient.BatteryPackDataVoltage?.CellTemperatureMax >= + //开启制冷策略 + if (!waterCoolClient.ColdStrategyFlag && chargerClient.BatteryPackDataVoltage?.CellTemperatureMax >= 28 && chargerClient.BatteryPackDataVoltage?.CellTemperatureMin >= 24) - { - waterCoolClient.ColdStrategyFlag = true; - } + { + waterCoolClient.ColdStrategyFlag = true; + } - if (waterCoolClient.ColdStrategyFlag && - (chargerClient.BatteryPackDataVoltage?.CellTemperatureMax <= 28 - || chargerClient.BatteryPackDataVoltage?.CellTemperatureMin <= 22)) - { - waterCoolClient.msg.SetTemperature = 0; - waterCoolClient.msg.Mode = 0; - waterCoolClient.ColdStrategyFlag = false; - } + if (waterCoolClient.ColdStrategyFlag && + (chargerClient.BatteryPackDataVoltage?.CellTemperatureMax <= 28 + || chargerClient.BatteryPackDataVoltage?.CellTemperatureMin <= 22)) + { + waterCoolClient.msg.SetTemperature = 0; + waterCoolClient.msg.Mode = 0; + waterCoolClient.ColdStrategyFlag = false; + } - //加热模式 - if (waterCoolClient.HortStrategyFlag) - { - waterCoolClient.msg.Mode = 2; - waterCoolClient.msg.SetTemperature = 45; - } + //加热模式 + if (waterCoolClient.HortStrategyFlag) + { + waterCoolClient.msg.Mode = 2; + waterCoolClient.msg.SetTemperature = 45; + } - if (waterCoolClient.ColdStrategyFlag) + if (waterCoolClient.ColdStrategyFlag) + { + //若前一个模式为关机模式或制热模式或自循环模式,则请求TMS进行自循环模式;若前一个模式为制冷模式,则请求TMS进行制冷模式 + if (waterCoolClient.WaterCoolStatus?.ComeBackTemperature > 7 && + waterCoolClient.WaterCoolStatus?.ComeBackTemperature < 10) { - //若前一个模式为关机模式或制热模式或自循环模式,则请求TMS进行自循环模式;若前一个模式为制冷模式,则请求TMS进行制冷模式 - if (waterCoolClient.WaterCoolStatus?.ComeBackTemperature > 7 && - waterCoolClient.WaterCoolStatus?.ComeBackTemperature < 10) + Log.Info("7< <10"); + if (waterCoolClient.WaterCoolStatus?.TmsStatus != 1) { - Log.Info("7< <10"); - if (waterCoolClient.WaterCoolStatus?.TmsStatus != 1) - { - waterCoolClient.msg.Mode = 3; - } - else - { - waterCoolClient.msg.Mode = 1; - waterCoolClient.msg.SetTemperature = 10; - } + waterCoolClient.msg.Mode = 3; } - else if (waterCoolClient.WaterCoolStatus?.ComeBackTemperature >= 10) + else { - Log.Info(">= 10"); - - // 进水口温度>=10℃,则请求 TMS进行冷却 waterCoolClient.msg.Mode = 1; waterCoolClient.msg.SetTemperature = 10; } - else if (waterCoolClient.WaterCoolStatus?.ComeBackTemperature <= 7) - { - Log.Info("<=7"); - waterCoolClient.msg.Mode = 3; - } } - } - else - { - //TODO:: 停止需要干什么事情 - - - } + else if (waterCoolClient.WaterCoolStatus?.ComeBackTemperature >= 10) + { + Log.Info(">= 10"); + + // 进水口温度>=10℃,则请求 TMS进行冷却 + waterCoolClient.msg.Mode = 1; + waterCoolClient.msg.SetTemperature = 10; + } + else if (waterCoolClient.WaterCoolStatus?.ComeBackTemperature <= 7) + { + Log.Info("<=7"); + waterCoolClient.msg.Mode = 3; + } + }*/ } } } diff --git a/Service/WaterCool/Client/WaterCoolClient.cs b/Service/WaterCool/Client/WaterCoolClient.cs index ecc2b92..d12c87c 100644 --- a/Service/WaterCool/Client/WaterCoolClient.cs +++ b/Service/WaterCool/Client/WaterCoolClient.cs @@ -34,31 +34,43 @@ public class WaterCoolClient : TcpClient /// 是否发送水冷固定帧 /// public bool IsWaterCoolSend { get; set; } = true; - - //上下电的时间 + /// - /// + /// 上下电的时间 /// public DateTime? PowerChangeTime { get; set; } //上下电的时间间隔(单位/s) public int Interval = 15; - - //停止标识 + + /// + /// 停止标识 + /// public bool StopFlag = true; - - //制冷策略 + + /// + ///制冷策略 + /// public bool ColdStrategyFlag = false; - - //制热策略 + + /// + /// 制热策略 + /// public bool HortStrategyFlag = false; - + + /// + /// 自循环 + /// + public bool LoopStrategyFlag = false; + /// /// 消息 /// public ModeMsg msg { get; set; } = new ModeMsg(); - - //水冷机sn + + /// + /// 水冷机sn + /// public string ChargeSn { get; set; } private ILog Log() @@ -190,7 +202,7 @@ public class WaterCoolClient : TcpClient Thread.Sleep(300); return IsClose; } - + /// /// 高压请求 /// diff --git a/Service/WaterCool/Msg/WaterCool/WaterCoolStatus.cs b/Service/WaterCool/Msg/WaterCool/WaterCoolStatus.cs index 9ae036c..e8f4db0 100644 --- a/Service/WaterCool/Msg/WaterCool/WaterCoolStatus.cs +++ b/Service/WaterCool/Msg/WaterCool/WaterCoolStatus.cs @@ -26,7 +26,6 @@ public class WaterCoolStatus : BaseMsg /// 分辨率:1 ℃/bit 偏移量:-40℃范围:-40℃~210℃ 类型:测量255:无效 /// [Property(40, 8, PropertyReadConstant.Bit, 1, 0, 40)] - public sbyte GetOutTemperature { get; set; } /// @@ -34,7 +33,6 @@ public class WaterCoolStatus : BaseMsg /// 分辨率:1 ℃/bit 偏移量:-40℃范围:-40℃~210℃ 类型:测量255:无效 /// [Property(48, 8, PropertyReadConstant.Bit, 1, 0, 40)] - public sbyte ComeBackTemperature { get; set; } ///