diff --git a/CapMachine.Wpf/Services/CanDriveService.cs b/CapMachine.Wpf/Services/CanDriveService.cs index 85602b9..a6ab03c 100644 --- a/CapMachine.Wpf/Services/CanDriveService.cs +++ b/CapMachine.Wpf/Services/CanDriveService.cs @@ -3,6 +3,7 @@ using CapMachine.Wpf.CanDrive; using ImTools; using Prism.Ioc; using Prism.Mvvm; +using SharpDX; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -17,7 +18,7 @@ namespace CapMachine.Wpf.Services /// public class CanDriveService : BindableBase { - + public HighSpeedDataService HighSpeedDataService { get; } /// @@ -127,7 +128,7 @@ namespace CapMachine.Wpf.Services break; } //添加到发送数据集合 - CmdData.Add(SendCanCmdData); + CmdData.Add(SendCanCmdData); } @@ -142,7 +143,7 @@ namespace CapMachine.Wpf.Services { SpeedCanCmdData.SignalCmdValue = SpeedData; } - if (EnableCanCmdData!=null) + if (EnableCanCmdData != null) { EnableCanCmdData.SignalCmdValue = 1; } @@ -231,6 +232,26 @@ namespace CapMachine.Wpf.Services } } + + /// + /// 获取数据值 + /// 从DBC中获取数据给数据中心集合 + /// + /// + /// + public double GetDbcValueByName(string Name) + { + if (!ToomossCanDrive.IsCycleRevice) return 0; + + if (ListCanDbcModel.Any(a => a.Name == Name)) + { + //double.TryParse(ListCanDbcModel.FindFirst(a => a.Name == Name).SignalRtValue, out double Result1); + return double.TryParse(ListCanDbcModel.FindFirst(a => a.Name == Name).SignalRtValue.Split(" ")[0], out double Result) == true ? Result : 0; + } + return 0; + + } + #endregion diff --git a/CapMachine.Wpf/Services/MachineRtDataService.cs b/CapMachine.Wpf/Services/MachineRtDataService.cs index 7d58be0..88f947f 100644 --- a/CapMachine.Wpf/Services/MachineRtDataService.cs +++ b/CapMachine.Wpf/Services/MachineRtDataService.cs @@ -6,6 +6,7 @@ using CapMachine.Wpf.Models.Tag; using CapMachine.Wpf.PrismEvent; using HslCommunication; using HslCommunication.Profinet.Siemens; +using ImTools; using Microsoft.Extensions.Caching.Memory; using NPOI.HSSF.Record.Chart; using NPOI.SS.Formula.Atp; @@ -579,7 +580,7 @@ namespace CapMachine.Wpf.Services Name = "压缩机表面温度1[℃]",//名称带单位 NameNoUnit = "压缩机表面温度1",//无单位名称 EnName = "CapSurfTemp1",//英文名称 - Group = "CAN",//分组 + Group = "程序",//分组 MinValue = 0, MaxValue = 100, Unit = "℃", @@ -598,7 +599,7 @@ namespace CapMachine.Wpf.Services Name = "压缩机表面温度2[℃]",//名称带单位 NameNoUnit = "压缩机表面温度2",//无单位名称 EnName = "CapSurfTemp2",//英文名称 - Group = "CAN",//分组 + Group = "程序",//分组 MinValue = 0, MaxValue = 100, Unit = "℃", @@ -617,7 +618,7 @@ namespace CapMachine.Wpf.Services Name = "压缩机表面温度3[℃]",//名称带单位 NameNoUnit = "压缩机表面温度3",//无单位名称 EnName = "CapSurfTemp3",//英文名称 - Group = "CAN",//分组 + Group = "程序",//分组 MinValue = 0, MaxValue = 100, Unit = "℃", @@ -664,7 +665,7 @@ namespace CapMachine.Wpf.Services MVAddress = "", IsMeter = false, Precision = 100, - DecimalPoint = 1, + DecimalPoint = 2, Samp = 1, ValueType = typeof(short), Index = "", @@ -683,7 +684,7 @@ namespace CapMachine.Wpf.Services MVAddress = "", IsMeter = false, Precision = 100, - DecimalPoint = 1, + DecimalPoint = 2, Samp = 1, ValueType = typeof(short), Index = "", @@ -702,7 +703,7 @@ namespace CapMachine.Wpf.Services MVAddress = "", IsMeter = false, Precision = 1, - DecimalPoint = 1, + DecimalPoint = 0, Samp = 1, ValueType = typeof(short), Index = "", @@ -1112,27 +1113,38 @@ namespace CapMachine.Wpf.Services TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.IsShow = IsValueShow; - //仿真数据 - TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = (short)Random.Next(1, 100); - TagManger.GetTagByName(itemTag.Value.Name).EngPvValue = (short)Random.Next(1, 100) * 1.0 / TagManger.GetTagByName(itemTag.Value.Name)!.Precision; - LinkState = false; + ////仿真数据 + ////TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = (short)Random.Next(1, 100); + ////TagManger.GetTagByName(itemTag.Value.Name).EngPvValue = (short)Random.Next(1, 100) * 1.0 / TagManger.GetTagByName(itemTag.Value.Name)!.Precision; + ////LinkState = false; - ////PLC 数据 - //if (!string.IsNullOrEmpty(itemTag.Value.PVAddress)) - //{ - // OperateResultShort = SiemensDrive.ReadInt16(itemTag.Value.PVAddress); - // if (OperateResultShort.IsSuccess) - // { - // TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = SiemensDrive.ReadInt16(itemTag.Value.PVAddress).Content; - // TagManger.GetTagByName(itemTag.Value.Name)!.EngPvValue = TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value * 1.0 / TagManger.GetTagByName(itemTag.Value.Name)!.Precision; - // LinkState = true; + //PLC 数据 + if (!string.IsNullOrEmpty(itemTag.Value.PVAddress)) + { + OperateResultShort = SiemensDrive.ReadInt16(itemTag.Value.PVAddress); + if (OperateResultShort.IsSuccess) + { + TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = SiemensDrive.ReadInt16(itemTag.Value.PVAddress).Content; + TagManger.GetTagByName(itemTag.Value.Name)!.EngPvValue = TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value * 1.0 / TagManger.GetTagByName(itemTag.Value.Name)!.Precision; + LinkState = true; + } + else + { + LinkState = false; + } - // } - // else - // { - // LinkState = false; - // } - //} + //CAN数据读取 //回读CAN通信的数据到集合中 + //CAN组合并且在循环接收数据中时,才读取数据 + if (itemTag.Value.Group == "CAN") + { + //回读CAN通信的DBC集合数据到集合中 + itemTag.Value.EngPvValue = CanDriveService.GetDbcValueByName(itemTag.Value.NameNoUnit); + } + } + else //地址为空,PLC驱动不读取数据 + { + + } if (!string.IsNullOrEmpty(itemTag.Value.SVAddress)) { @@ -1206,6 +1218,8 @@ namespace CapMachine.Wpf.Services } } + + } catch (Exception ex) {