From 0857eb9f59a3344a0de0510d83f635bccec05ad0 Mon Sep 17 00:00:00 2001 From: Tyrone CT Date: Wed, 11 Jun 2025 23:20:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=BA=86=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E7=9A=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CapMachine.Wpf/Services/CanDriveService.cs | 94 +++++ CapMachine.Wpf/Services/LinDriveService.cs | 94 +++++ .../Services/MachineRtDataService.cs | 359 ++++++++++++++---- .../ViewModels/CANConfigViewModel.cs | 24 +- .../ViewModels/LinConfigViewModel.cs | 23 +- 5 files changed, 507 insertions(+), 87 deletions(-) diff --git a/CapMachine.Wpf/Services/CanDriveService.cs b/CapMachine.Wpf/Services/CanDriveService.cs index ba759ab..e73dbc3 100644 --- a/CapMachine.Wpf/Services/CanDriveService.cs +++ b/CapMachine.Wpf/Services/CanDriveService.cs @@ -97,6 +97,27 @@ namespace CapMachine.Wpf.Services /// private CanCmdData EnableCanCmdData { get; set; } + /// + /// PTC使能 指令数据 实例 + /// + private CanCmdData PTCEnableCanCmdData { get; set; } + + /// + /// PTC功率 指令数据 实例 + /// + private CanCmdData PTCPwCanCmdData { get; set; } + + /// + /// PTC水流量 指令数据 实例 + /// + private CanCmdData PTCFlowCanCmdData { get; set; } + + /// + /// PTC水温 指令数据 实例 + /// + private CanCmdData PTCWaterTempCanCmdData { get; set; } + + /// /// 要发送的CAN指令数据 /// 在程序配置好后就确定要发送哪些数据 @@ -124,6 +145,18 @@ namespace CapMachine.Wpf.Services case "Anti_Sleep": //SpeedCanCmdData = SendCanCmdData; break; + case "PTC使能": + PTCEnableCanCmdData = SendCanCmdData; + break; + case "PTC功率": + PTCPwCanCmdData = SendCanCmdData; + break; + case "PTC水流量": + PTCFlowCanCmdData = SendCanCmdData; + break; + case "PTC水温": + PTCWaterTempCanCmdData = SendCanCmdData; + break; default: break; } @@ -162,6 +195,67 @@ namespace CapMachine.Wpf.Services } + /// + /// 更新压缩机的功率限制 + /// + /// + public void UpdateCapPwLimitCmdData(double PwLimit) + { + if (PwLimitCanCmdData != null) + { + PwLimitCanCmdData.SignalCmdValue = PwLimit; + } + } + + + /// + /// 更新 PTC使能信号 + /// + /// + public void UpdateCapPTCEnableCmdData(bool IsEnable) + { + if (PTCEnableCanCmdData != null) + { + PTCEnableCanCmdData.SignalCmdValue = IsEnable ? 1 : 0; + } + } + + /// + /// 更新 PTC功率 信号 + /// + /// + public void UpdateCapPTCPwCmdData(double PTCPw) + { + if (PTCPwCanCmdData != null) + { + PTCPwCanCmdData.SignalCmdValue = PTCPw; + } + } + + /// + /// 更新 PTC水流量 信号 + /// + /// + public void UpdateCapPTCFlowCmdData(double Flow) + { + if (PTCFlowCanCmdData != null) + { + PTCFlowCanCmdData.SignalCmdValue = Flow; + } + } + + /// + /// 更新 PTC水温 信号 + /// + /// + public void UpdateCapPTCWaterTempCmdData(double WaterTemp) + { + if (PTCWaterTempCanCmdData != null) + { + PTCWaterTempCanCmdData.SignalCmdValue = WaterTemp; + } + } + /// /// 发送消息给CAN 驱动 /// diff --git a/CapMachine.Wpf/Services/LinDriveService.cs b/CapMachine.Wpf/Services/LinDriveService.cs index 1763f4b..07b8c1f 100644 --- a/CapMachine.Wpf/Services/LinDriveService.cs +++ b/CapMachine.Wpf/Services/LinDriveService.cs @@ -1,4 +1,5 @@ using CapMachine.Model.CANLIN; +using CapMachine.Wpf.CanDrive; using CapMachine.Wpf.LinDrive; using ImTools; using Prism.Ioc; @@ -95,6 +96,27 @@ namespace CapMachine.Wpf.Services /// private LinCmdData EnableLinCmdData { get; set; } + /// + /// PTC使能 指令数据 实例 + /// + private LinCmdData PTCEnableCanCmdData { get; set; } + + /// + /// PTC功率 指令数据 实例 + /// + private LinCmdData PTCPwCanCmdData { get; set; } + + /// + /// PTC水流量 指令数据 实例 + /// + private LinCmdData PTCFlowCanCmdData { get; set; } + + /// + /// PTC水温 指令数据 实例 + /// + private LinCmdData PTCWaterTempCanCmdData { get; set; } + + /// /// 要发送的CAN指令数据 /// 在程序配置好后就确定要发送哪些数据 @@ -122,6 +144,18 @@ namespace CapMachine.Wpf.Services case "Anti_Sleep": //SpeedLinCmdData = SendLinCmdData; break; + case "PTC使能": + PTCEnableCanCmdData = SendLinCmdData; + break; + case "PTC功率": + PTCPwCanCmdData = SendLinCmdData; + break; + case "PTC水流量": + PTCFlowCanCmdData = SendLinCmdData; + break; + case "PTC水温": + PTCWaterTempCanCmdData = SendLinCmdData; + break; default: break; } @@ -161,6 +195,66 @@ namespace CapMachine.Wpf.Services } + /// + /// 更新压缩机的功率限制 + /// + /// + public void UpdateCapPwLimitCmdData(double PwLimit) + { + if (PwLimitLinCmdData != null) + { + PwLimitLinCmdData.SignalCmdValue = PwLimit; + } + } + + /// + /// 更新 PTC使能信号 + /// + /// + public void UpdateCapPTCEnableCmdData(bool IsEnable) + { + if (PTCEnableCanCmdData != null) + { + PTCEnableCanCmdData.SignalCmdValue = IsEnable ? 1 : 0; + } + } + + /// + /// 更新 PTC功率 信号 + /// + /// + public void UpdateCapPTCPwCmdData(double PTCPw) + { + if (PTCPwCanCmdData != null) + { + PTCPwCanCmdData.SignalCmdValue = PTCPw; + } + } + + /// + /// 更新 PTC水流量 信号 + /// + /// + public void UpdateCapPTCFlowCmdData(double Flow) + { + if (PTCFlowCanCmdData != null) + { + PTCFlowCanCmdData.SignalCmdValue = Flow; + } + } + + /// + /// 更新 PTC水温 信号 + /// + /// + public void UpdateCapPTCWaterTempCmdData(double WaterTemp) + { + if (PTCWaterTempCanCmdData != null) + { + PTCWaterTempCanCmdData.SignalCmdValue = WaterTemp; + } + } + /// /// 发送消息给CAN 驱动 /// diff --git a/CapMachine.Wpf/Services/MachineRtDataService.cs b/CapMachine.Wpf/Services/MachineRtDataService.cs index f55d915..467810c 100644 --- a/CapMachine.Wpf/Services/MachineRtDataService.cs +++ b/CapMachine.Wpf/Services/MachineRtDataService.cs @@ -148,7 +148,7 @@ namespace CapMachine.Wpf.Services #region 标签管理 ////三电 Sample - TagManger.AddTag(new Tag("转速", "转速[rpm]", "Speed", "程序", "VW15000", 100, 0, 1, "rpm", new ShortTagValue(), true) { DecimalPoint = 0 }); + TagManger.AddTag(new Tag("转速", "转速[rpm]", "Speed", "程序", "VW15000", 100, 0, 1, "rpm", new ShortTagValue(), true) { DecimalPoint = 0,SVAddress= "VW14002" }); TagManger.AddTag(new Tag("排气压力", "排气压力[BarA]", "ExPress", "程序", "VW15002", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 }); TagManger.AddTag(new Tag("吸气压力", "吸气压力[BarA]", "InhPress", "程序", "VW15004", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 }); TagManger.AddTag(new Tag("吸气温度", "吸气温度[℃]", "InhTemp", "程序", "VW15006", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 }); @@ -181,22 +181,23 @@ namespace CapMachine.Wpf.Services TagManger.AddTag(new Tag("PTC流量", "PTC流量[L/min]", "PTCFlow", "程序", "VW15054", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); TagManger.AddTag(new Tag("PTC入水温度", "PTC入水温度[℃]", "PTCEntTemp", "程序", "VW15056", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); TagManger.AddTag(new Tag("PTC出水温度", "PTC出水温度[℃]", "PTCExpTemp", "程序", "VW15058", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - + TagManger.AddTag(new Tag("AT04_01", "AT04_01[℃]", "AT04_01Temp", "程序", "VW70", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); TagManger.AddTag(new Tag("AT04_02", "AT04_02[℃]", "AT04_02Temp", "程序", "VW72", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - - TagManger.AddTag(new Tag("通讯Cmp母线电流", "通讯Cmp母线电流[A]", "ComCapBusCur", "程序", "VW15060", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("通讯Cmp母线电压", "通讯Cmp母线电压[V]", "ComCapBusVol", "程序", "VW15062", 100, 0, 1, "V", new ShortTagValue(), false) { DecimalPoint = 0 }); - TagManger.AddTag(new Tag("通讯Cmp逆变器温度", "通讯Cmp逆变器温度[℃]", "ComCapInvTemp", "程序", "VW15064", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); - TagManger.AddTag(new Tag("通讯Cmp相电流", "通讯Cmp相电流[A]", "ComCapPhCur", "程序", "VW15066", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("通讯Cmp功率", "通讯Cmp功率[W]", "ComCapPw", "程序", "VW15068", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("通讯Cmp芯片温度", "通讯Cmp芯片温度[℃]", "ComCapChipTemp", "程序", "VW15070", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); - TagManger.AddTag(new Tag("通讯PTC入水温度", "通讯PTC入水温度[℃]", "ComPTCEntTemp", "程序", "VW15072", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("通讯PTC出水温度", "通讯PTC出水温度[℃]", "ComPTCExpTemp", "程序", "VW15074", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("通讯PTC峰值电流", "通讯PTC峰值电流[A]", "ComPTCPeakCur", "程序", "VW15076", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("通讯PTC母线电流", "通讯PTC母线电流[A]", "ComPTCBusCur", "程序", "VW15078", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("通讯PTC膜温", "通讯PTC膜温[℃]", "ComPTCFlmTemp", "程序", "VW15080", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); - TagManger.AddTag(new Tag("通讯PTC模块温度", "通讯PTC模块温度[℃]", "ComPTCMdTemp", "程序", "VW15082", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); + + TagManger.AddTag(new Tag("通讯Cmp母线电流", "通讯Cmp母线电流[A]", "ComCapBusCur", "程序", "VW14102", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); + TagManger.AddTag(new Tag("通讯Cmp母线电压", "通讯Cmp母线电压[V]", "ComCapBusVol", "程序", "VW14104", 100, 0, 1, "V", new ShortTagValue(), false) { DecimalPoint = 0 }); + TagManger.AddTag(new Tag("通讯Cmp逆变器温度", "通讯Cmp逆变器温度[℃]", "ComCapInvTemp", "程序", "VW14106", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); + TagManger.AddTag(new Tag("通讯Cmp相电流", "通讯Cmp相电流[A]", "ComCapPhCur", "程序", "VW14108", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); + TagManger.AddTag(new Tag("通讯Cmp功率", "通讯Cmp功率[W]", "ComCapPw", "程序", "VW14110", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1 }); + TagManger.AddTag(new Tag("通讯Cmp芯片温度", "通讯Cmp芯片温度[℃]", "ComCapChipTemp", "程序", "VW14112", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); + + TagManger.AddTag(new Tag("通讯PTC入水温度", "通讯PTC入水温度[℃]", "ComPTCEntTemp", "程序", "VW14120", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + TagManger.AddTag(new Tag("通讯PTC出水温度", "通讯PTC出水温度[℃]", "ComPTCExpTemp", "程序", "VW14122", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + TagManger.AddTag(new Tag("通讯PTC峰值电流", "通讯PTC峰值电流[A]", "ComPTCPeakCur", "程序", "VW14124", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 }); + TagManger.AddTag(new Tag("通讯PTC母线电流", "通讯PTC母线电流[A]", "ComPTCBusCur", "程序", "VW14126", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); + TagManger.AddTag(new Tag("通讯PTC膜温", "通讯PTC膜温[℃]", "ComPTCFlmTemp", "程序", "VW14128", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); + TagManger.AddTag(new Tag("通讯PTC模块温度", "通讯PTC模块温度[℃]", "ComPTCMdTemp", "程序", "VW14130", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); #endregion @@ -852,28 +853,6 @@ namespace CapMachine.Wpf.Services new HandSwitchData(){Name="使能",ActionAddress="M2.7",StateAddress="V15.1" }, }; - //TagManger.ListTag[0].Name = "new TestType() { byteValue=12}"; - //TagManger.ListTag[0].Name = "new TestType() { byteValue=12}"; - - //Type genericType = typeof(Tag<>).MakeGenericType(typeof(short)); - //Activator.CreateInstance(genericType, 42); - - //var DATA = TagManger.GetTagValueByName("转速"); - //var data1 = TagManger.GetTagByName("转速"); - - //var data2 = TagManger.GetTagByName("转速5888"); - - //data1.TagValue.Value = 12; - - //TagInfo = data1; - - //var TagInfo1= data1.RtValue.Value; - - //var Data = DATA.Value; - - //dynamic dad=10; - - InitialPLCCom(); //拓展的参数信息 @@ -1054,7 +1033,7 @@ namespace CapMachine.Wpf.Services private void InitialPLCCom() { var IPInfo = ConfigHelper.GetValue("PLCIP"); - + SiemensDrive = new SiemensS7Net(SiemensPLCS.S200Smart, IPInfo); // 连接对象 @@ -1120,6 +1099,18 @@ namespace CapMachine.Wpf.Services /// private OperateResult OperateResultAlarm { get; set; } + /// + /// 压缩机使能信号 + /// 压缩机使能信号 + /// 压缩机速度控制 + /// 压缩机功率限制 + /// 加热器使能信号 + ///加热器功率给定 + ///水流量信号给定 + ///加热器目标水温 + /// + private OperateResult OperateResultValue { get; set; } + /// /// CAP的使能状态 /// @@ -1156,11 +1147,7 @@ namespace CapMachine.Wpf.Services //stopwatch.Start(); //启动Stopwatch //IsShowCount++; //IsValueShow = false; - //if (IsShowCount >= 20) - //{ - // IsShowCount = 0; - // IsValueShow = true; - //} + foreach (var itemTag in TagManger.DicTags) { //TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = (short)random.Next(0, 100); @@ -1198,103 +1185,229 @@ namespace CapMachine.Wpf.Services switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) { case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯转速")); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯Cmp转速")); //itemTag.Value.EngPvValue = 0; break; case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯转速")); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯Cmp转速")); //itemTag.Value.EngPvValue = 0; break; default: break; } } - else if (itemTag.Value.NameNoUnit == "通讯母线电压") + else if (itemTag.Value.NameNoUnit == "通讯Cmp母线电压") { switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) { case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯母线电压") * itemTag.Value.Precision)); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp母线电压") * itemTag.Value.Precision)); //itemTag.Value.EngPvValue = 0; break; case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯母线电压") * itemTag.Value.Precision)); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp母线电压") * itemTag.Value.Precision)); //itemTag.Value.EngPvValue = 0; break; default: break; } } - else if (itemTag.Value.NameNoUnit == "通讯母线电流") + else if (itemTag.Value.NameNoUnit == "通讯Cmp母线电流") { switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) { case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯母线电流") * itemTag.Value.Precision)); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp母线电流") * itemTag.Value.Precision)); //itemTag.Value.EngPvValue = 0; break; case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯母线电流") * itemTag.Value.Precision)); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp母线电流") * itemTag.Value.Precision)); //itemTag.Value.EngPvValue = 0; break; default: break; } } - else if (itemTag.Value.NameNoUnit == "通讯相电流") + else if (itemTag.Value.NameNoUnit == "通讯Cmp相电流") { switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) { case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯相电流") * itemTag.Value.Precision)); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp相电流") * itemTag.Value.Precision)); //itemTag.Value.EngPvValue = 0; break; case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯相电流") * itemTag.Value.Precision)); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp相电流") * itemTag.Value.Precision)); //itemTag.Value.EngPvValue = 0; break; default: break; } } - else if (itemTag.Value.NameNoUnit == "通讯功率") + else if (itemTag.Value.NameNoUnit == "通讯Cmp功率") { switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) { case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯功率") * itemTag.Value.Precision)); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp功率") * itemTag.Value.Precision)); //itemTag.Value.EngPvValue = 0; break; case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯功率") * itemTag.Value.Precision)); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp功率") * itemTag.Value.Precision)); //itemTag.Value.EngPvValue = 0; break; default: break; } } - else if (itemTag.Value.NameNoUnit == "通讯芯片温度") + else if (itemTag.Value.NameNoUnit == "通讯Cmp芯片温度") { switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) { case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯芯片温度") * itemTag.Value.Precision)); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp芯片温度") * itemTag.Value.Precision)); //itemTag.Value.EngPvValue = 0; break; case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX - //SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯芯片温度") * itemTag.Value.Precision)); + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp芯片温度") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + default: + break; + } + } + else if (itemTag.Value.NameNoUnit == "通讯Cmp逆变器温度") + { + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp逆变器温度") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + case CanLinEnum.Lin: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp逆变器温度") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + default: + break; + } + } + else if (itemTag.Value.NameNoUnit == "通讯PTC入水温度") + { + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC入水温度") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + case CanLinEnum.Lin: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC入水温度") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + default: + break; + } + } + else if (itemTag.Value.NameNoUnit == "通讯PTC出水温度") + { + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC出水温度") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + case CanLinEnum.Lin: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC出水温度") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + default: + break; + } + } + else if (itemTag.Value.NameNoUnit == "通讯PTC峰值电流") + { + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC峰值电流") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + case CanLinEnum.Lin: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC峰值电流") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + default: + break; + } + } + else if (itemTag.Value.NameNoUnit == "通讯PTC母线电流") + { + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC母线电流") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + case CanLinEnum.Lin: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC母线电流") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + default: + break; + } + } + else if (itemTag.Value.NameNoUnit == "通讯PTC膜温") + { + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC膜温") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + case CanLinEnum.Lin: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC膜温") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + default: + break; + } + } + else if (itemTag.Value.NameNoUnit == "通讯PTC模块温度") + { + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC模块温度") * itemTag.Value.Precision)); + //itemTag.Value.EngPvValue = 0; + break; + case CanLinEnum.Lin: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC + SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC模块温度") * itemTag.Value.Precision)); //itemTag.Value.EngPvValue = 0; break; default: @@ -1344,6 +1457,7 @@ namespace CapMachine.Wpf.Services } + //SV值的写入 转速和PTC的写入 if (!string.IsNullOrEmpty(itemTag.Value.SVAddress)) { OperateResultSVShort = SiemensDrive.ReadInt16(itemTag.Value.SVAddress); @@ -1421,7 +1535,104 @@ namespace CapMachine.Wpf.Services // } //} - ////循环读取手自动切换 取消XXX + + //压缩机使能信号实时赋值 + OperateResultValue = SiemensDrive.ReadInt16("VW14000", 30); + if (OperateResultValue.IsSuccess) + { + //压缩机使能信号实时赋值 + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //获取PLC的使能状态,更新到CAN的使能状态 + CanDriveService.UpdateCapEnableCmdData(OperateResultValue.Content[0] == 0 ? false : true); + break; + case CanLinEnum.Lin: + //获取PLC的使能状态,更新到LIN的使能状态 + LinDriveService.UpdateCapEnableCmdData(OperateResultValue.Content[0] == 0 ? false : true); + break; + default: + break; + } + + //压缩机压缩机功率限制实时赋值 + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //获取PLC的功率限制,更新到CAN的功率限制 + CanDriveService.UpdateCapPwLimitCmdData(OperateResultValue.Content[0]); + break; + case CanLinEnum.Lin: + //获取PLC的功率限制,更新到LIN的功率限制 + LinDriveService.UpdateCapPwLimitCmdData(OperateResultValue.Content[0]); + break; + default: + break; + } + + + //压缩机 PTC使能 实时赋值 + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //获取PLC的 PTC使能,更新到CAN的 PTC使能 + CanDriveService.UpdateCapPTCEnableCmdData(OperateResultValue.Content[20] == 0 ? false : true); + break; + case CanLinEnum.Lin: + //获取PLC的 PTC使能,更新到LIN的 PTC使能 + LinDriveService.UpdateCapPTCEnableCmdData(OperateResultValue.Content[20] == 0 ? false : true); + break; + default: + break; + } + + //压缩机 PTC功率 实时赋值 + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //获取PLC的 PTC功率,更新到CAN的 PTC功率 + CanDriveService.UpdateCapPTCPwCmdData(OperateResultValue.Content[22]); + break; + case CanLinEnum.Lin: + //获取PLC的 PTC功率,更新到LIN的 PTC功率 + LinDriveService.UpdateCapPTCPwCmdData(OperateResultValue.Content[22]); + break; + default: + break; + } + + //压缩机 PTC水流量信号 实时赋值 + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //获取PLC的 PTC水流量信号,更新到CAN的 PTC水流量信号 + CanDriveService.UpdateCapPTCFlowCmdData(OperateResultValue.Content[24]); + break; + case CanLinEnum.Lin: + //获取PLC的 PTC水流量信号,更新到LIN的 PTC水流量信号 + LinDriveService.UpdateCapPTCFlowCmdData(OperateResultValue.Content[24]); + break; + default: + break; + } + + //压缩机 PTC水温 实时赋值 + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //获取PLC的 PTC水温,更新到CAN的 PTC水温 + CanDriveService.UpdateCapPTCWaterTempCmdData(OperateResultValue.Content[26]); + break; + case CanLinEnum.Lin: + //获取PLC的 PTC水温,更新到LIN的 PTC水温 + LinDriveService.UpdateCapPTCWaterTempCmdData(OperateResultValue.Content[26]); + break; + default: + break; + } + } + + //循环读取手自动切换 //foreach (var item in ListHandSwitchData) //{ // item.StateOperateResult = SiemensDrive.ReadBool(item.StateAddress); @@ -1436,12 +1647,10 @@ namespace CapMachine.Wpf.Services // case CanLinEnum.Can: // //获取PLC的使能状态,更新到CAN的使能状态 // CanDriveService.UpdateCapEnableCmdData(item.State); - // //itemTag.Value.EngPvValue = 0; // break; // case CanLinEnum.Lin: // //获取PLC的使能状态,更新到LIN的使能状态 // LinDriveService.UpdateCapEnableCmdData(item.State); - // //itemTag.Value.EngPvValue = 0; // break; // default: // break; diff --git a/CapMachine.Wpf/ViewModels/CANConfigViewModel.cs b/CapMachine.Wpf/ViewModels/CANConfigViewModel.cs index 5b2c0dd..e877d89 100644 --- a/CapMachine.Wpf/ViewModels/CANConfigViewModel.cs +++ b/CapMachine.Wpf/ViewModels/CANConfigViewModel.cs @@ -61,16 +61,28 @@ namespace CapMachine.Wpf.ViewModels new CbxItems(){ Key="功率限制",Text="功率限制"}, new CbxItems(){ Key="使能",Text="使能"}, new CbxItems(){ Key="Anti_Sleep",Text="Anti_Sleep"}, + + new CbxItems(){ Key="PTC使能",Text="PTC使能"}, + new CbxItems(){ Key="PTC功率",Text="PTC功率"}, + new CbxItems(){ Key="PTC水流量",Text="PTC水流量"}, + new CbxItems(){ Key="PTC水温",Text="PTC水温"}, }; ReadNameCbxItems = new ObservableCollection() { - new CbxItems(){ Key="通讯转速",Text="通讯转速"}, - new CbxItems(){ Key="通讯母线电压",Text="通讯母线电压"}, - new CbxItems(){ Key="通讯母线电流",Text="通讯母线电流"}, - new CbxItems(){ Key="通讯相电流",Text="通讯相电流"}, - new CbxItems(){ Key="通讯功率",Text="通讯功率"}, - new CbxItems(){ Key="通讯芯片温度",Text="通讯芯片温度"}, + new CbxItems(){ Key="通讯Cmp转速",Text="通讯Cmp转速"}, + new CbxItems(){ Key="通讯Cmp母线电压",Text="通讯Cmp母线电压"}, + new CbxItems(){ Key="通讯Cmp母线电流",Text="通讯Cmp母线电流"}, + new CbxItems(){ Key="通讯Cmp相电流",Text="通讯Cmp相电流"}, + new CbxItems(){ Key="通讯Cmp功率",Text="通讯Cmp功率"}, + new CbxItems(){ Key="通讯Cmp芯片温度",Text="通讯Cmp芯片温度"}, + + new CbxItems(){ Key="通讯PTC入水温度",Text="通讯PTC入水温度"}, + new CbxItems(){ Key="通讯PTC出水温度",Text="通讯PTC出水温度"}, + new CbxItems(){ Key="通讯PTC峰值电流",Text="通讯PTC峰值电流"}, + new CbxItems(){ Key="通讯PTC母线电流",Text="通讯PTC母线电流"}, + new CbxItems(){ Key="通讯PTC膜温",Text="通讯PTC膜温"}, + new CbxItems(){ Key="通讯PTC模块温度",Text="通讯PTC模块温度"}, }; InitLoadCanConfigPro(); diff --git a/CapMachine.Wpf/ViewModels/LinConfigViewModel.cs b/CapMachine.Wpf/ViewModels/LinConfigViewModel.cs index ff64529..a13b985 100644 --- a/CapMachine.Wpf/ViewModels/LinConfigViewModel.cs +++ b/CapMachine.Wpf/ViewModels/LinConfigViewModel.cs @@ -61,16 +61,27 @@ namespace CapMachine.Wpf.ViewModels new CbxItems(){ Key="功率限制",Text="功率限制"}, new CbxItems(){ Key="使能",Text="使能"}, new CbxItems(){ Key="Anti_Sleep",Text="Anti_Sleep"}, + new CbxItems(){ Key="PTC使能",Text="PTC使能"}, + new CbxItems(){ Key="PTC功率",Text="PTC功率"}, + new CbxItems(){ Key="PTC水流量",Text="PTC水流量"}, + new CbxItems(){ Key="PTC水温",Text="PTC水温"}, }; ReadNameCbxItems = new ObservableCollection() { - new CbxItems(){ Key="通讯转速",Text="通讯转速"}, - new CbxItems(){ Key="通讯母线电压",Text="通讯母线电压"}, - new CbxItems(){ Key="通讯母线电流",Text="通讯母线电流"}, - new CbxItems(){ Key="通讯相电流",Text="通讯相电流"}, - new CbxItems(){ Key="通讯功率",Text="通讯功率"}, - new CbxItems(){ Key="通讯芯片温度",Text="通讯芯片温度"}, + new CbxItems(){ Key="通讯Cmp转速",Text="通讯Cmp转速"}, + new CbxItems(){ Key="通讯Cmp母线电压",Text="通讯Cmp母线电压"}, + new CbxItems(){ Key="通讯Cmp母线电流",Text="通讯Cmp母线电流"}, + new CbxItems(){ Key="通讯Cmp相电流",Text="通讯Cmp相电流"}, + new CbxItems(){ Key="通讯Cmp功率",Text="通讯Cmp功率"}, + new CbxItems(){ Key="通讯Cmp芯片温度",Text="通讯Cmp芯片温度"}, + + new CbxItems(){ Key="通讯PTC入水温度",Text="通讯PTC入水温度"}, + new CbxItems(){ Key="通讯PTC出水温度",Text="通讯PTC出水温度"}, + new CbxItems(){ Key="通讯PTC峰值电流",Text="通讯PTC峰值电流"}, + new CbxItems(){ Key="通讯PTC母线电流",Text="通讯PTC母线电流"}, + new CbxItems(){ Key="通讯PTC膜温",Text="通讯PTC膜温"}, + new CbxItems(){ Key="通讯PTC模块温度",Text="通讯PTC模块温度"}, }; InitLoadLinConfigPro();