From 71f4d05c3f8fa898d82d3dff217c2d738295aacc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=84=8F=20=E5=BD=AD?= <2417589739@qq.com> Date: Fri, 19 Aug 2022 17:14:30 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E6=96=99=E7=B3=BB=E7=BB=9F=E4=B8=8A?= =?UTF-8?q?=E4=BD=8D=E6=9C=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BPASmartClient.CustomResource.csproj | 10 + .../Image/系统名称.png | Bin 0 -> 9156 bytes .../Image/红色圆角矩形背景.png | Bin 0 -> 84087 bytes .../Image/组合边框1.1.png | Bin 0 -> 2659 bytes .../Image/组合边框1.png | Bin 0 -> 794 bytes .../Image/蓝色背景.png | Bin 0 -> 15008 bytes .../Pages/Model/AlarmHelper.cs | 6 +- .../Pages/Model/UserInfo.cs | 2 +- .../RecDictionarys/DatePickeerDictionary.xaml | 2 +- .../RecDictionarys/RecButtonStyle.xaml | 34 ++ .../RecDictionarys/TextBoxStyle.xaml | 4 +- .../UserControls/BatchingMachine.xaml | 52 +- BPASmartClient.Helper/ExpandMethod.cs | 12 +- BPASmartClient.Modbus/ModbusTcp.cs | 59 +- DosingSystem/App.xaml.cs | 23 +- .../Converter/DataTableRedundantConverter.cs | 31 ++ DosingSystem/Model/AlarmInfo.cs | 48 ++ DosingSystem/Model/DeviceAddress.cs | 11 + DosingSystem/Model/DeviceCurrentStatus.cs | 3 + DosingSystem/Model/DeviceInquire.cs | 129 ++++- DosingSystem/Model/DeviceParModel.cs | 39 +- DosingSystem/Model/RawMaterialDeviceStatus.cs | 19 +- DosingSystem/View/DeviceListView.xaml | 50 +- DosingSystem/View/DeviceMaterialParView.xaml | 369 ++++++++++++ .../View/DeviceMaterialParView.xaml.cs | 28 + DosingSystem/View/HardwareStatusView.xaml | 512 ++++++----------- .../View/NewMaterialDeviceParView.xaml | 525 ------------------ .../View/NewMaterialDeviceParView.xaml.cs | 55 -- DosingSystem/View/RecipeSettingsView.xaml | 69 --- DosingSystem/ViewModel/DeviceListViewModel.cs | 6 +- .../ViewModel/DeviceMaterialParViewModel.cs | 69 +++ .../ViewModel/HardwareStatusViewModel.cs | 16 +- .../NewMaterialDeviceParViewModel.cs | 23 - .../ViewModel/RecipeControlViewModel.cs | 2 +- .../ViewModel/RecipeSettingsViewModel.cs | 5 +- 35 files changed, 1078 insertions(+), 1135 deletions(-) create mode 100644 BPASmartClient.CustomResource/Image/系统名称.png create mode 100644 BPASmartClient.CustomResource/Image/红色圆角矩形背景.png create mode 100644 BPASmartClient.CustomResource/Image/组合边框1.1.png create mode 100644 BPASmartClient.CustomResource/Image/组合边框1.png create mode 100644 BPASmartClient.CustomResource/Image/蓝色背景.png create mode 100644 DosingSystem/Converter/DataTableRedundantConverter.cs create mode 100644 DosingSystem/Model/AlarmInfo.cs create mode 100644 DosingSystem/View/DeviceMaterialParView.xaml create mode 100644 DosingSystem/View/DeviceMaterialParView.xaml.cs delete mode 100644 DosingSystem/View/NewMaterialDeviceParView.xaml delete mode 100644 DosingSystem/View/NewMaterialDeviceParView.xaml.cs create mode 100644 DosingSystem/ViewModel/DeviceMaterialParViewModel.cs delete mode 100644 DosingSystem/ViewModel/NewMaterialDeviceParViewModel.cs diff --git a/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj b/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj index 3a68670b..3098ed7c 100644 --- a/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj +++ b/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj @@ -175,8 +175,12 @@ + + + + @@ -189,6 +193,7 @@ + @@ -299,10 +304,15 @@ + + + + + diff --git a/BPASmartClient.CustomResource/Image/系统名称.png b/BPASmartClient.CustomResource/Image/系统名称.png new file mode 100644 index 0000000000000000000000000000000000000000..240fb0308ced24ea0427487868db444317ae4d7a GIT binary patch literal 9156 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 K)TmW+i2OgK`0?BT literal 0 HcmV?d00001 diff --git a/BPASmartClient.CustomResource/Image/红色圆角矩形背景.png b/BPASmartClient.CustomResource/Image/红色圆角矩形背景.png new file mode 100644 index 0000000000000000000000000000000000000000..7780943482d4d34d10339584b6a745c45594c002 GIT binary patch literal 84087 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 + /// 获取16位整数中指定位的值 + /// + /// 要获取的整数 + /// 偏移量 范围(1-16) + /// + public static bool Get16bitValue(this ushort data, byte offset) + { + if (offset > 16 || offset < 1) return false; + return (data & 1 << offset - 1) == 0 ? false : true; + } diff --git a/BPASmartClient.Modbus/ModbusTcp.cs b/BPASmartClient.Modbus/ModbusTcp.cs index eae3d234..b17e4d9f 100644 --- a/BPASmartClient.Modbus/ModbusTcp.cs +++ b/BPASmartClient.Modbus/ModbusTcp.cs @@ -145,31 +145,31 @@ namespace BPASmartClient.Modbus return LwAddress; } } - else if (address.ToUpper().Contains("D") && address.Length == 5) + else if (address.ToUpper().Contains("D") && address.Length == 5) { try { string head = (Convert.ToInt32(address.Substring(1, 1))).ToString(); int num = Convert.ToInt32(address.Substring(2, 3)); int len = num.ToString().Length; - string tail=string.Empty; + string tail = string.Empty; switch (len) - { - - case 1: + { + + case 1: if ((Convert.ToInt32(address.Substring(4, 1))).ToString().Length > 1) { tail = "0" + (Convert.ToInt32(address.Substring(4, 1))).ToString(); } - else + else { tail = "00" + (Convert.ToInt32(address.Substring(4, 1))).ToString(); } break; case 2: - if ((Convert.ToInt32(address.Substring(3, 2))).ToString().Length >2) + if ((Convert.ToInt32(address.Substring(3, 2))).ToString().Length > 2) { - tail =(Convert.ToInt32(address.Substring(3, 2))).ToString(); + tail = (Convert.ToInt32(address.Substring(3, 2))).ToString(); } else { @@ -180,21 +180,21 @@ namespace BPASmartClient.Modbus tail = (Convert.ToInt32(address.Substring(2, 3))).ToString(); break; } - + address = head + tail; return Convert.ToInt32(address); } catch (Exception) { //打印日志 - + } - + } } return -1; } - + private void ExceptionHandling(Exception ex) { if (ex.InnerException is SocketException) @@ -208,7 +208,15 @@ namespace BPASmartClient.Modbus } } - //public object ReadHC(stri) + public short ReadShort(string address) + { + var res = Read(address); + if (res != null && res is short[] shorts && shorts.Length == 1) + { + return shorts[0]; + } + return 0; + } public object Read(string address, ushort len = 1, byte slaveAddress = 1) { @@ -222,7 +230,7 @@ namespace BPASmartClient.Modbus commandType = CommandType.Coils; return master.ReadCoils(slaveAddress, startAddress, len); } - else if (address.ToUpper().Contains("VW") || address.ToUpper().Contains("LW")|| address.ToUpper().Contains("D")) + else if (address.ToUpper().Contains("VW") || address.ToUpper().Contains("LW") || address.ToUpper().Contains("D")) { commandType = CommandType.HoldingRegisters; return master.ReadHoldingRegisters(slaveAddress, startAddress, len); @@ -232,7 +240,7 @@ namespace BPASmartClient.Modbus commandType = CommandType.Inputs; return master.ReadInputs(slaveAddress, startAddress, len); } - + } catch (Exception ex) { @@ -241,6 +249,7 @@ namespace BPASmartClient.Modbus } return default(object); } + #region 180项目调用 public int GetAddress(string address, string target) { @@ -251,15 +260,15 @@ namespace BPASmartClient.Modbus { try { - string head = "4"+(Convert.ToInt32(address.Substring(1, 1)) - 1).ToString(); + string head = "4" + (Convert.ToInt32(address.Substring(1, 1)) - 1).ToString(); string tail = address.Substring(2, 3); - address = head + tail; + address = head + tail; return Convert.ToInt32(address); } catch (Exception) { //打印日志 - + } } @@ -291,11 +300,11 @@ namespace BPASmartClient.Modbus public void Write(string address, T value, string target, byte slaveAddress = 1) { if (address == null || tcpClient == null) return; - ushort startAddress = (ushort)GetAddress(address,target); + ushort startAddress = (ushort)GetAddress(address, target); CommandType commandType = CommandType.Coils; try { - + if (address.ToUpper().Contains("D")) { commandType = CommandType.HoldingRegisters; @@ -303,17 +312,19 @@ namespace BPASmartClient.Modbus { master.WriteSingleRegister(slaveAddress, startAddress, ushortValue); } - + } - + } catch (Exception ex) { MessageLog.GetInstance.ShowEx($"写入地址:【{address}:= {startAddress}】,写入类型:【{commandType.ToString()}】出错,{ex.ToString()}"); ExceptionHandling(ex); } - } + } #endregion + + public void Write(string address, T value, byte slaveAddress = 1) { if (address == null || tcpClient == null) return; @@ -329,7 +340,7 @@ namespace BPASmartClient.Modbus else if (value is bool[] boolsValue) master.WriteMultipleCoils(slaveAddress, startAddress, boolsValue); } - else if (address.ToUpper().Contains("VW") || address.ToUpper().Contains("LW")|| address.ToUpper().Contains("D")) + else if (address.ToUpper().Contains("VW") || address.ToUpper().Contains("LW") || address.ToUpper().Contains("D")) { commandType = CommandType.HoldingRegisters; if (value is ushort ushortValue) diff --git a/DosingSystem/App.xaml.cs b/DosingSystem/App.xaml.cs index 2ec8c014..b1a583e4 100644 --- a/DosingSystem/App.xaml.cs +++ b/DosingSystem/App.xaml.cs @@ -30,8 +30,6 @@ namespace BPASmartClient.DosingSystem MenuInit(); DataInit(); DeviceInquire.GetInstance.Init();//配料机设备上线监听,设备列表初始化 - //NewMaterialDeviceParView newMaterialDeviceParView = new NewMaterialDeviceParView(); - //newMaterialDeviceParView.ShowDialog(); MainView mv = new MainView(); //mv.Show(); LoginView lv = new LoginView(); @@ -50,6 +48,7 @@ namespace BPASmartClient.DosingSystem { base.OnExit(e); Json.Save(); + Json.Save(); MessageLog.GetInstance.LogSave(); ThreadManage.GetInstance().Dispose(); } @@ -85,6 +84,25 @@ namespace BPASmartClient.DosingSystem }); #endregion + #region 参数设置 + ObservableCollection ParSet = new ObservableCollection(); + ParSet.Add(new SubMenumodel() + { + SubMenuName = "原料参数设置", + SubMenuPermission = new Permission[] { Permission.管理员 }, + AssemblyName = "BPASmartClient.DosingSystem", + ToggleWindowPath = "View.DeviceMaterialParView" + }); + + MenuManage.GetInstance.menuModels.Add(new MenuModel() + { + MainMenuIcon = "", + MainMenuName = "参数设置", + Alias = "Parameter Set", + subMenumodels = ParSet, + }); + #endregion + #region 消息日志 ObservableCollection InfoLog = new ObservableCollection(); InfoLog.Add(new SubMenumodel() @@ -202,6 +220,7 @@ namespace BPASmartClient.DosingSystem { Config.GetInstance.Init(); Json.Read(); + Json.Read(); Json.Read(); } diff --git a/DosingSystem/Converter/DataTableRedundantConverter.cs b/DosingSystem/Converter/DataTableRedundantConverter.cs new file mode 100644 index 00000000..fd16d65b --- /dev/null +++ b/DosingSystem/Converter/DataTableRedundantConverter.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; +using System.Windows.Media; + +namespace BPASmartClient.DosingSystem.Converter +{ + public class DataTableRedundantConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value != null && value is bool bit) + { + if (bit) + return new SolidColorBrush(Color.FromArgb(255, 245, 63, 98)); + else + return new SolidColorBrush(Color.FromArgb(255, 42, 178, 231)); + } + return default; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/DosingSystem/Model/AlarmInfo.cs b/DosingSystem/Model/AlarmInfo.cs new file mode 100644 index 00000000..00dd0772 --- /dev/null +++ b/DosingSystem/Model/AlarmInfo.cs @@ -0,0 +1,48 @@ +using BPASmartClient.CustomResource.Pages.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BPASmartClient.DosingSystem.Model +{ + public class AlarmInfo + { + /// + /// 1#急停 + /// + [Alarm("1#急停")] + public bool EStop1 { get; set; } + + /// + /// 伺服故障 + /// + [Alarm("伺服故障")] + public bool Servo { get; set; } + + /// + /// 变频器故障 + /// + [Alarm("变频器故障")] + public bool Inverter { get; set; } + + /// + /// 2#急停 + /// + [Alarm("2#急停")] + public bool EStop2 { get; set; } + + /// + /// 料仓上限 + /// + [Alarm("料仓上限")] + public bool SiloUpperLimit { get; set; } + + /// + /// 料仓下限 + /// + [Alarm("料仓下限")] + public bool SiloLowerLimit { get; set; } + } +} diff --git a/DosingSystem/Model/DeviceAddress.cs b/DosingSystem/Model/DeviceAddress.cs index 7752c667..66228f92 100644 --- a/DosingSystem/Model/DeviceAddress.cs +++ b/DosingSystem/Model/DeviceAddress.cs @@ -38,6 +38,17 @@ namespace BPASmartClient.DosingSystem.Model /// public static string DeviceNum { get; set; } = "LW57"; + /// + /// 设备故障编码 + /// + public static string DeviceAlarmCode { get; set; } = "LW51"; + + /// + /// 原料设备类型 + /// 1:膏体,2:液体,3:粉体 + /// + public static string MaterialDeviceType { get; set; } = "LW56"; + /// /// 设备运行状态地址 /// diff --git a/DosingSystem/Model/DeviceCurrentStatus.cs b/DosingSystem/Model/DeviceCurrentStatus.cs index b40dc61e..6a727d95 100644 --- a/DosingSystem/Model/DeviceCurrentStatus.cs +++ b/DosingSystem/Model/DeviceCurrentStatus.cs @@ -18,6 +18,9 @@ namespace BPASmartClient.DosingSystem.Model private bool _mRunStatus; + public int DeviceNum { get { return _mDeviceNum; } set { _mDeviceNum = value; OnPropertyChanged(); } } + private int _mDeviceNum; + public string DeviceName { get { return _mDeviceName; } set { _mDeviceName = value; OnPropertyChanged(); } } private string _mDeviceName; diff --git a/DosingSystem/Model/DeviceInquire.cs b/DosingSystem/Model/DeviceInquire.cs index a1258241..39ffe443 100644 --- a/DosingSystem/Model/DeviceInquire.cs +++ b/DosingSystem/Model/DeviceInquire.cs @@ -13,6 +13,7 @@ using System.Threading.Tasks; using BPASmartClient.CustomResource.UserControls.MessageShow; using BPASmartClient.CustomResource.Pages.Model; using BPASmartClient.Model; +using System.Collections.ObjectModel; namespace BPASmartClient.DosingSystem.Model { @@ -29,9 +30,45 @@ namespace BPASmartClient.DosingSystem.Model List IPLists = new List();//启动 Ping 任务IP集合 ConcurrentQueue IPQueues = new ConcurrentQueue();//pincomplete 完成队列 + public ObservableCollection TopDeviceCurrentStatuses { get; set; } = new ObservableCollection(); + public ObservableCollection BottomDeviceCurrentStatuses { get; set; } = new ObservableCollection(); + public ObservableCollection devices { get; set; } = new ObservableCollection(); + private void DeviceDataInit() + { + ThreadManage.GetInstance().StartLong(new Action(() => + { + for (int i = 0; i < DeviceLists.Count; i++) + { + string deviceName = DeviceLists.ElementAt(i).Value.DeviceName; + int TopIndex = Array.FindIndex(TopDeviceCurrentStatuses.ToArray(), p => p.DeviceName == deviceName); + int BottomIndex = Array.FindIndex(BottomDeviceCurrentStatuses.ToArray(), p => p.DeviceName == deviceName); + if (TopIndex >= 0 && TopIndex < TopDeviceCurrentStatuses.Count) + { + TopDeviceCurrentStatuses.ElementAt(TopIndex).Weight = DeviceLists.ElementAt(i).Value.deviceStatus.WeightFeedback; + TopDeviceCurrentStatuses.ElementAt(TopIndex).DeviceNum = DeviceLists.ElementAt(i).Value.deviceStatus.DeviceNum; + } + + if (BottomIndex >= 0 && BottomIndex < BottomDeviceCurrentStatuses.Count) + { + BottomDeviceCurrentStatuses.ElementAt(BottomIndex).Weight = DeviceLists.ElementAt(i).Value.deviceStatus.WeightFeedback; + BottomDeviceCurrentStatuses.ElementAt(BottomIndex).DeviceNum = DeviceLists.ElementAt(i).Value.deviceStatus.DeviceNum; + } + + int deviceIndex = Array.FindIndex(devices.ToArray(), p => p.IpAddress == DeviceLists.ElementAt(i).Key); + if (deviceIndex >= 0 && deviceIndex < devices.Count) + { + devices.ElementAt(i).DeviceName = DeviceLists.ElementAt(i).Value.DeviceName; + } + } + Thread.Sleep(200); + }), "设备状态监听"); + } + public void Init() { + devices.Add(new Devices() { DeviceName = "测试", IpAddress = "192.168.0.1" }); IpAddressLines(); + DeviceDataInit(); ThreadManage.GetInstance().StartLong(new Action(() => { if (IPQueues.Count >= IPLists.Count) @@ -55,6 +92,16 @@ namespace BPASmartClient.DosingSystem.Model return new DeviceStatus(); } + public List GetDevice() + { + List deviceStatuses = new List(); + foreach (var device in DeviceLists) + { + deviceStatuses.Add(device.Value); + } + return deviceStatuses; + } + private void IpAddressLines() { IPLists.Clear(); @@ -87,7 +134,7 @@ namespace BPASmartClient.DosingSystem.Model DS.modbusTcp.ConnectOk = new Action(() => { - string DeviceName = DS.modbusTcp.GetString(DeviceAddress.DeviceName, 20).Trim();//读取设备名称 + string DeviceName = DS.modbusTcp.GetString(DeviceAddress.DeviceName, 20).Trim()?.Replace(" ", "");//读取设备名称 if (DeviceName.Length > 0) { DeviceLists.TryAdd(ip, DS); @@ -95,11 +142,19 @@ namespace BPASmartClient.DosingSystem.Model DeviceLists[ip].modbusTcp.IsReconnect = false; App.Current.Dispatcher.Invoke(new Action(() => { - DeviceListViewModel.devices.Add(new Devices() - { - DeviceName = DeviceName, - IpAddress = ip - });//加入连接的(有名称的)设备列表 + //DeviceListViewModel.devices.Add(new Devices() + //{ + // DeviceName = DeviceName, + // IpAddress = ip + //});//加入连接的(有名称的)设备列表 + + devices.Add(new Devices() { DeviceName = DeviceName, IpAddress = ip }); + + if (TopDeviceCurrentStatuses.Count <= 8) + TopDeviceCurrentStatuses.Add(new DeviceCurrentStatus() { DeviceName = DeviceName }); + else + BottomDeviceCurrentStatuses.Add(new DeviceCurrentStatus() { DeviceName = DeviceName }); + for (int i = 0; i < Json.Data.Recipes.Count; i++) { @@ -115,12 +170,12 @@ namespace BPASmartClient.DosingSystem.Model { if (Global.DeviceRawMaterials.FirstOrDefault(p => p.RawMaterialName == DeviceName) == null) { - Global.DeviceRawMaterials.Add(new RawMaterialModel() { RawMaterialName = DeviceName, DeviceIp = ip ,RawMaterialSource = 1}); + Global.DeviceRawMaterials.Add(new RawMaterialModel() { RawMaterialName = DeviceName, DeviceIp = ip, RawMaterialSource = 1 }); } } else { - Global.DeviceRawMaterials.Add(new RawMaterialModel() { RawMaterialName = DeviceName, DeviceIp = ip , RawMaterialSource = 1 }); + Global.DeviceRawMaterials.Add(new RawMaterialModel() { RawMaterialName = DeviceName, DeviceIp = ip, RawMaterialSource = 1 }); } })); @@ -140,15 +195,25 @@ namespace BPASmartClient.DosingSystem.Model DS.modbusTcp.Disconnect = new Action(() => { if (InvalidIP.Contains(ip)) InvalidIP.Remove(ip); - var res = DeviceListViewModel.devices.FirstOrDefault(P => P.IpAddress == ip); - if (res != null && DeviceListViewModel.devices.Contains(res)) + //var res = DeviceListViewModel.devices.FirstOrDefault(P => P.IpAddress == ip); + var res = devices.FirstOrDefault(P => P.IpAddress == ip); + //if (res != null && DeviceListViewModel.devices.Contains(res)) + if (res != null && devices.Contains(res)) + { App.Current.Dispatcher.Invoke(new Action(() => { - DeviceListViewModel.devices.Remove(res); + //DeviceListViewModel.devices.Remove(res); + devices.Remove(res); var item = Global.DeviceRawMaterials.FirstOrDefault(P => P.RawMaterialName == res.DeviceName); if (item != null) Global.DeviceRawMaterials.Remove(item); + var topRes = TopDeviceCurrentStatuses.FirstOrDefault(p => p.DeviceName == res.DeviceName); + var bottomRes = BottomDeviceCurrentStatuses.FirstOrDefault(p => p.DeviceName == res.DeviceName); + if (topRes != null) TopDeviceCurrentStatuses.Remove(topRes); + if (bottomRes != null) BottomDeviceCurrentStatuses.Remove(bottomRes); })); + } + if (DeviceLists.ContainsKey(ip)) DeviceLists[ip].Dispose(); }); @@ -186,22 +251,31 @@ namespace BPASmartClient.DosingSystem.Model public void Init(string DeviceName) { this.DeviceName = DeviceName; + AlarmHelper.Init(); if (modbusTcp.Connected) { ThreadManage.GetInstance().StartLong(new Action(() => { //获取设备运行状态 - var res = this.modbusTcp.Read(DeviceAddress.RunStatus); - if (res != null && res is ushort[] ushortValue) - { - if (ushortValue.Length >= 1) deviceStatus.RunStatus = ushortValue[0]; - } + //var res = this.modbusTcp.Read(DeviceAddress.RunStatus); + //if (res != null && res is ushort[] ushortValue) + //{ + // if (ushortValue.Length >= 1) deviceStatus.RunStatus = ushortValue[0]; + //} - //获取设备料仓剩余重量 - deviceStatus.WeightFeedback = this.modbusTcp.GetUint(DeviceAddress.WeightFeedback); - var resddd = this.modbusTcp.GetUint(DeviceAddress.WeightFeedback); - var rrr = this.modbusTcp.Read(DeviceAddress.WeightFeedback); - var t = this.modbusTcp.GetReal(DeviceAddress.CutWeightFeedback); + + this.DeviceName = modbusTcp.GetString(DeviceAddress.DeviceName, 20).Trim()?.Replace(" ", ""); + deviceStatus.RunStatus = (ushort)this.modbusTcp.ReadShort(DeviceAddress.RunStatus); //获取设备运行状态 + deviceStatus.WeightFeedback = (float)this.modbusTcp.GetUint(DeviceAddress.WeightFeedback);//获取设备料仓剩余重量 + deviceStatus.DeviceNum = (ushort)this.modbusTcp.ReadShort(DeviceAddress.DeviceNum);//获取设备编号 + deviceStatus.DeviceAlarmCode = (ushort)this.modbusTcp.ReadShort(DeviceAddress.DeviceAlarmCode);//获取设备故障编码 + + AlarmHelper.Alarm.EStop1 = deviceStatus.DeviceAlarmCode.Get16bitValue(1); + AlarmHelper.Alarm.Servo = deviceStatus.DeviceAlarmCode.Get16bitValue(2); + AlarmHelper.Alarm.Inverter = deviceStatus.DeviceAlarmCode.Get16bitValue(3); + AlarmHelper.Alarm.EStop2 = deviceStatus.DeviceAlarmCode.Get16bitValue(7); + AlarmHelper.Alarm.SiloUpperLimit = deviceStatus.DeviceAlarmCode.Get16bitValue(8); + AlarmHelper.Alarm.SiloLowerLimit = deviceStatus.DeviceAlarmCode.Get16bitValue(9); Thread.Sleep(100); }), $"{DeviceName} 开始监听", true); @@ -230,6 +304,19 @@ namespace BPASmartClient.DosingSystem.Model { modbusTcp.SetReal(DeviceAddress.WeightSet, Value);//写入配方量 modbusTcp.Write(DeviceAddress.Start, (ushort)1);//设备启动写入 + //配料设备参数写入 + var res = Json.Data.deviceParModels.FirstOrDefault(p => p.MaterialName == DeviceName); + if (res != null) + { + modbusTcp.SetReal(DeviceAddress.SlowlyAddWeight, res.SlowlyAddWeight); + modbusTcp.SetReal(DeviceAddress.PreCloseValveWeight, res.PreCloseValveWeight); + modbusTcp.SetUint(DeviceAddress.RapidAcceleration, (uint)res.RapidAcceleration); + modbusTcp.SetUint(DeviceAddress.SlowAcceleration, (uint)res.SlowAcceleration); + modbusTcp.SetUint(DeviceAddress.ServoManualSpeed, (uint)res.ServoManualSpeed); + modbusTcp.SetUint(DeviceAddress.SiloUpperLimitWeight, (uint)res.SiloUpperLimitWeight); + modbusTcp.SetUint(DeviceAddress.LowerLimitWeightOfSilo, (uint)res.LowerLimitWeightOfSilo); + modbusTcp.SetUint(DeviceAddress.StirringSpeed, (uint)res.StirringSpeed); + } } } } diff --git a/DosingSystem/Model/DeviceParModel.cs b/DosingSystem/Model/DeviceParModel.cs index fe840fa6..f7400050 100644 --- a/DosingSystem/Model/DeviceParModel.cs +++ b/DosingSystem/Model/DeviceParModel.cs @@ -3,54 +3,73 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Microsoft.Toolkit.Mvvm.ComponentModel; namespace BPASmartClient.DosingSystem.Model { - public class DeviceParModel + public class DeviceParModel : ObservableObject { /// /// 原料名称 /// - public string MaterialName { get; set; } = string.Empty; + public string MaterialName { get { return _mMaterialName; } set { _mMaterialName = value; OnPropertyChanged(); } } + private string _mMaterialName = string.Empty; /// /// 慢加重量 /// - public float SlowlyAddWeight { get; set; } + public float SlowlyAddWeight { get { return _mSlowlyAddWeight; } set { _mSlowlyAddWeight = value; OnPropertyChanged(); } } + private float _mSlowlyAddWeight; /// /// 提前关阀重量 /// - public float PreCloseValveWeight { get; set; } + public float PreCloseValveWeight { get { return _mPreCloseValveWeight; } set { _mPreCloseValveWeight = value; OnPropertyChanged(); } } + private float _mPreCloseValveWeight; /// /// 快加速度 /// - public int RapidAcceleration { get; set; } + public int RapidAcceleration { get { return _mRapidAcceleration; } set { _mRapidAcceleration = value; OnPropertyChanged(); } } + private int _mRapidAcceleration; /// /// 慢加速度 /// - public int SlowAcceleration { get; set; } + public int SlowAcceleration { get { return _mSlowAcceleration; } set { _mSlowAcceleration = value; OnPropertyChanged(); } } + private int _mSlowAcceleration; /// /// 伺服手动速度 /// - public int ServoManualSpeed { get; set; } + public int ServoManualSpeed { get { return _mServoManualSpeed; } set { _mServoManualSpeed = value; OnPropertyChanged(); } } + private int _mServoManualSpeed; /// /// 料仓上限重量 /// - public int SiloUpperLimitWeight { get; set; } + public int SiloUpperLimitWeight { get { return _mSiloUpperLimitWeight; } set { _mSiloUpperLimitWeight = value; OnPropertyChanged(); } } + private int _mSiloUpperLimitWeight; /// /// 料仓下限重量 /// - public int LowerLimitWeightOfSilo { get; set; } + public int LowerLimitWeightOfSilo { get { return _mLowerLimitWeightOfSilo; } set { _mLowerLimitWeightOfSilo = value; OnPropertyChanged(); } } + private int _mLowerLimitWeightOfSilo; /// /// 搅拌速度 /// - public int StirringSpeed { get; set; } + public int StirringSpeed { get { return _mStirringSpeed; } set { _mStirringSpeed = value; OnPropertyChanged(); } } + private int _mStirringSpeed; + + /// + /// 是否重复 + /// + [Newtonsoft.Json.JsonIgnore] + public bool IsRedundant { get { return _mIsRedundant; } set { _mIsRedundant = value; OnPropertyChanged(); } } + private bool _mIsRedundant; + + } } diff --git a/DosingSystem/Model/RawMaterialDeviceStatus.cs b/DosingSystem/Model/RawMaterialDeviceStatus.cs index 1febc8a9..777fe2a3 100644 --- a/DosingSystem/Model/RawMaterialDeviceStatus.cs +++ b/DosingSystem/Model/RawMaterialDeviceStatus.cs @@ -11,8 +11,8 @@ namespace BPASmartClient.DosingSystem.Model /// /// 原料类型 - /// 1:液体 - /// 2:膏体 + /// 1:膏体 + /// 2:液体 /// 3:粉体 /// public ushort RawMaterialType { get; set; } @@ -39,7 +39,22 @@ namespace BPASmartClient.DosingSystem.Model /// /// 设备运行状态 + /// 0:未知 + /// 1:等待配料 + /// 2:配料中 + /// 3:配料完成 /// public ushort RunStatus { get; set; } + + /// + /// 设备故障编码 + /// + public ushort DeviceAlarmCode { get; set; } + + /// + /// 设备料仓编号 + /// + public ushort DeviceNum { get; set; } + } } diff --git a/DosingSystem/View/DeviceListView.xaml b/DosingSystem/View/DeviceListView.xaml index 7021d8db..6b01ea58 100644 --- a/DosingSystem/View/DeviceListView.xaml +++ b/DosingSystem/View/DeviceListView.xaml @@ -71,19 +71,16 @@ Height="150" VerticalAlignment="Top" BorderBrush="#00BEFA" - BorderThickness="2" + BorderThickness="0" ClipToBounds="True" - CornerRadius="8"> - - - + CornerRadius="0"> + + + - + + + + + + +

};LdaA%$b=_ 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 HGV=d_+Laqo literal 0 HcmV?d00001 diff --git a/BPASmartClient.CustomResource/Image/组合边框1.1.png b/BPASmartClient.CustomResource/Image/组合边框1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab35e56e94c7c3e3a7fe11b305d95669e170abb GIT binary patch literal 2659 zcmd^>`#;l*AICqgZ8SFbW2iBgv|1sOi1}oISq(#`l-^592lzgM7;8`~M^t9nTNQ}Dw94tD38z#Q=e3aot- zV~nXcLw4xDtbJgeh}?I47xO|D=8~xOxFCVLxm28ZmYT7hawlYaGcKT}NR8R>JWND+ z6l%09UJY4c`eY)+!O5E{om3BryRGgdEYEOXZf#}UMJgV)>=5% zEt0iNJeCz?}9;p5(aoOR@g|w4|U( z3ozOWhIeTeY8KkI&=B!O3*s%ZhYp@>voyuoZo`0eUwmzC8QTG4bnFJ-NwzK3lJ+D)4o3xZU4zpFX#29$2Fkqbu*!!qZn)vOg%jEGXFu zQbrh`WZIL~uXLLRByY@y%|aH%I7Y=|(B+S0OO2!u2t2+**j%xGzQ!CY_O}M+lzQ4nOdE?oM-@#UD={KX$yue#F5ROtGI+T4c9G z=0X;<54?OKRG-P7o7h^Bw*DE`YU#ZBVK{*f$9pn}HzYv=x;Vuk@6#5+xk7YOQg+zl z98V)-d)cQ~*BGh&^u2+XN5Er}ga!ne2bQ++g_ul$wlIgdovRuq%R&-d$p`&Jvp4$P?!NM5F_a9QzT3_GyS4&xt+9?1kI?<4Zd zN$Yd3ek~764M-z!Iwq6&sze=AtOdV}(W8lQk#BpCUx-bTN0Z{*YId&Wx(y}tpgtY} z>wu-L`%;fuqt#%&tmrhv_!;ge*_I33;-5M^J9s}Y=F@EyoDMo@)2v}0iEZs>Wb48- zYXonvubNe0O8TqQ3`|(Ma`ouJX9OxEa0w^rd~Yv0FpP${q}+Gh!#^xn9W4oR5ND_( zHG7KL(u>@JFWFYo?o{k<=Hl}cI9M0_mo4$gZ=$0jWJgBdjw9%K6yeuQqJFVB$y){1 z?i1ftM1hc-;?2+r9B|Q`8q-K3&{NiD(0kdY8ev9Z6BXk$Q3` z=X*}@Zs2i|3IY%k@&JYj2)soY14|G@R!T0!*#W0`#}FkyRs@$LyZt}NMJime_`GOz zL!3UlF4ri{5>&v568ZfXX}w07qR?2G-!wcDOiEX=0+@kBkC$$=eNXV;>vf|o@87-- zt6F`$t$+CWPBFIT=>A8{E=m&CJj`l=^GFB(EFptDxoOx-L5Fm-ao?U*YI<=!oMq zfVHd}8@gAW3~)4wT6;tZNR$I?ruxK2$;Zb8 zzec_{Z_nX`mBAxeO7R%OoI0Fu!0j?zc*rS+{jIIDlgAG6!0;N+ysXbtQSL?%qUkCA z1+Fa2Z4FY|%{v-laa#j;2W{vX#F$y-<#702GViO_3$wu59?dP)LcUq2mhpS9qnn@f zC?Jz{xWi5Bz@wNFONyHaM2Q>rQaXpk4X8M(d-dogxZKUv@(7=+V`O_BM^@QZ)r9q{ zv06UkafKcpIYG>YXv80ki!w7i?(^6;gvLFDvx1b)+!&F+JFDH(tjF6zK^y7@M}hci zS>&N#jq&xKc+#J8cmC=3$23PibXoGkKQ}^*jZB+pM5;7{WUaqmTYwq{Aod>}ZKUDd zm;kd}2zlK-k4{_Io;qWS^VwaBKAdmcxS!%Gi@#2Du#B@d=dsYHZ%o|PDMw%V0dJuS zKP=ydSVG8%g6qo|BDkBmqUUEOYzcMiyNA91M=vurd9h z3PI8Hg8@gtr$Q+AR&eugIdCXK-svw4fmqVb*-)3gDRmQ8Tou?`*kDYop{&bQvs6oV z%cH$>)e^wG?vQh%d^keBZEi`|Pm-^;?g&!1m)LuiY;7AZ7PC}k@8s;`u4KT*M#cT3 i)ORP~0PKQx>DNA-({|OYbQePgkAMf>8*Ia!%l;Q0ir;|% literal 0 HcmV?d00001 diff --git a/BPASmartClient.CustomResource/Image/组合边框1.png b/BPASmartClient.CustomResource/Image/组合边框1.png new file mode 100644 index 0000000000000000000000000000000000000000..d37574ffa46c641c9ee39bd00ba39643892b1951 GIT binary patch literal 794 zcmeAS@N?(olHy`uVBq!ia0y~yVAKY(mvFEF$@8WhybKIX4?SHRLn`LHy=j;g5-8H} zaIuei1grPBRV-IsV>=i%4khaOw-cefr5)yxT+K~9lW;lL*29A2{Yam$v^*S z{QcbC)0d~K8-Fgi_QS+DUTiII&gI85Z^~Ar-(M$QV{Dw>E%&n~O%E)7ymkZM%e%FQ z*|?5yc?f7LJiIVH;lI_~ncC}_WTvXt-&ossb@N~L2m3A9m^ioZUsHGXOtdny*^8fd zIcBM5;OXk;vd$@?2>_c61~C8t literal 0 HcmV?d00001 diff --git a/BPASmartClient.CustomResource/Image/蓝色背景.png b/BPASmartClient.CustomResource/Image/蓝色背景.png new file mode 100644 index 0000000000000000000000000000000000000000..855dadb90ce5416f1a47327f1957a1c0a3b24124 GIT binary patch literal 15008 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 Y+M$5(&S3cbe(uqZt?{wV(T7X^4-swMB>(^b literal 0 HcmV?d00001 diff --git a/BPASmartClient.CustomResource/Pages/Model/AlarmHelper.cs b/BPASmartClient.CustomResource/Pages/Model/AlarmHelper.cs index c7080c4c..e45218ff 100644 --- a/BPASmartClient.CustomResource/Pages/Model/AlarmHelper.cs +++ b/BPASmartClient.CustomResource/Pages/Model/AlarmHelper.cs @@ -37,11 +37,11 @@ namespace BPASmartClient.CustomResource.Pages.Model { bool value = Convert.ToBoolean(Alarm.GetType().GetProperty(item.Name)?.GetValue(Alarm)); EdgeAlarm(value, AlarmModel.AlarmInfo, 1, AlarmModel.AlarmLevel, AlarmModel.AlarmType); - } + } } } Thread.Sleep(100); - }), "报警通用模块监听"); + }), $"{typeof(AlarmT)},报警通用模块监听"); } @@ -57,7 +57,7 @@ namespace BPASmartClient.CustomResource.Pages.Model if (!delays.ContainsKey(text)) delays.TryAdd(text, Delay.GetInstance(text)); if (edgeType == AlarmTriggerType.Rising ? delays[text].Start(Trigger, delay) : delays[text].Start(!Trigger, delay)) { - if (edgeType == AlarmTriggerType.Rising ? !flagbit[text] :flagbit[text]) + if (edgeType == AlarmTriggerType.Rising ? !flagbit[text] : flagbit[text]) { AddAlarm(Trigger, text, alarmLevel); flagbit[text] = edgeType == AlarmTriggerType.Rising ? true : false; diff --git a/BPASmartClient.CustomResource/Pages/Model/UserInfo.cs b/BPASmartClient.CustomResource/Pages/Model/UserInfo.cs index f3b0efb4..d7da48b9 100644 --- a/BPASmartClient.CustomResource/Pages/Model/UserInfo.cs +++ b/BPASmartClient.CustomResource/Pages/Model/UserInfo.cs @@ -27,7 +27,7 @@ namespace BPASmartClient.CustomResource.Pages.Model public string Password { get { return _password; } set { _password = value; OnPropertyChanged(); } } private string _password = "admin"; - public string CardId { get; set; } = String.Empty; + public string CardId { get; set; } = string.Empty; public List locaRawMaterials { get; set; } = new List(); diff --git a/BPASmartClient.CustomResource/RecDictionarys/DatePickeerDictionary.xaml b/BPASmartClient.CustomResource/RecDictionarys/DatePickeerDictionary.xaml index f79ffa21..8ee95e36 100644 --- a/BPASmartClient.CustomResource/RecDictionarys/DatePickeerDictionary.xaml +++ b/BPASmartClient.CustomResource/RecDictionarys/DatePickeerDictionary.xaml @@ -354,7 +354,7 @@ - + diff --git a/BPASmartClient.CustomResource/RecDictionarys/RecButtonStyle.xaml b/BPASmartClient.CustomResource/RecDictionarys/RecButtonStyle.xaml index 66931049..72ae075d 100644 --- a/BPASmartClient.CustomResource/RecDictionarys/RecButtonStyle.xaml +++ b/BPASmartClient.CustomResource/RecDictionarys/RecButtonStyle.xaml @@ -29,4 +29,38 @@ + + \ No newline at end of file diff --git a/BPASmartClient.CustomResource/RecDictionarys/TextBoxStyle.xaml b/BPASmartClient.CustomResource/RecDictionarys/TextBoxStyle.xaml index 0ad862ac..189830b1 100644 --- a/BPASmartClient.CustomResource/RecDictionarys/TextBoxStyle.xaml +++ b/BPASmartClient.CustomResource/RecDictionarys/TextBoxStyle.xaml @@ -17,13 +17,11 @@ Opacity="0.7" SnapsToDevicePixels="true"> - - + diff --git a/BPASmartClient.CustomResource/UserControls/BatchingMachine.xaml b/BPASmartClient.CustomResource/UserControls/BatchingMachine.xaml index 12af351a..6a7e1d65 100644 --- a/BPASmartClient.CustomResource/UserControls/BatchingMachine.xaml +++ b/BPASmartClient.CustomResource/UserControls/BatchingMachine.xaml @@ -41,35 +41,57 @@ Fill="{StaticResource fillColor}" Stroke="{StaticResource BorderColor}" /> - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + diff --git a/BPASmartClient.Helper/ExpandMethod.cs b/BPASmartClient.Helper/ExpandMethod.cs index ab8ba30d..2e9201c5 100644 --- a/BPASmartClient.Helper/ExpandMethod.cs +++ b/BPASmartClient.Helper/ExpandMethod.cs @@ -149,7 +149,17 @@ namespace BPASmartClient.Helper } - + ///