diff --git a/BPASmartClient.FoodStationTest/Model/GVL/PlcInfos.cs b/BPASmartClient.FoodStationTest/Model/GVL/PlcInfos.cs index f5ff018d..dd463ec8 100644 --- a/BPASmartClient.FoodStationTest/Model/GVL/PlcInfos.cs +++ b/BPASmartClient.FoodStationTest/Model/GVL/PlcInfos.cs @@ -2,19 +2,39 @@ namespace BPASmartClient.FoodStationTest.Model.GVL { + /// + /// PLC变量信息 + /// public class PlcInfos : ObservableObject { + /// + /// 变量序号 + /// public int Count { get { return _Count; } set { _Count = value; OnPropertyChanged(); } } private int _Count { get; set; } - + /// + /// 变量名称 + /// public string Name { get { return _Name; } set { _Name = value; OnPropertyChanged(); } } private string _Name { get; set; } + /// + /// 变量地址 + /// public string Address { get { return _Address; } set { _Address = value; OnPropertyChanged(); } } private string _Address { get; set; } + /// + /// 变量类型 + /// public string Type { get { return _Type; } set { _Type = value; OnPropertyChanged(); } } private string _Type { get; set; } + /// + /// 变量描述 + /// public string Describe { get { return _Describe; } set { _Describe = value; OnPropertyChanged(); } } private string _Describe { get; set; } + /// + /// 变量值 + /// public string Value { get { return _Value; } set { _Value = value; OnPropertyChanged(); } } private string _Value { get; set; } diff --git a/BPASmartClient.FoodStationTest/Model/GVL/VarCommAttribute.cs b/BPASmartClient.FoodStationTest/Model/GVL/VarCommAttribute.cs index 6e43e369..c0bd98f1 100644 --- a/BPASmartClient.FoodStationTest/Model/GVL/VarCommAttribute.cs +++ b/BPASmartClient.FoodStationTest/Model/GVL/VarCommAttribute.cs @@ -10,7 +10,13 @@ namespace BPASmartClient.FoodStationTest.Model.GVL Address = address; Describe = des; } + /// + /// 变量信息描述。 + /// public string Describe { get; set; } + /// + /// 变量地址 + /// public string Address { get; set; } } } diff --git a/BPASmartClient.FoodStationTest/Model/VarMonitor.cs b/BPASmartClient.FoodStationTest/Model/GVL/VarMonitor.cs similarity index 100% rename from BPASmartClient.FoodStationTest/Model/VarMonitor.cs rename to BPASmartClient.FoodStationTest/Model/GVL/VarMonitor.cs diff --git a/BPASmartClient.FoodStationTest/Model/Par/ConnectParMode.cs b/BPASmartClient.FoodStationTest/Model/Par/ConnectParMode.cs index 05580961..70a4b703 100644 --- a/BPASmartClient.FoodStationTest/Model/Par/ConnectParMode.cs +++ b/BPASmartClient.FoodStationTest/Model/Par/ConnectParMode.cs @@ -2,23 +2,45 @@ namespace BPASmartClient.FoodStationTest.Model.Par { + /// + /// 连接参数设置。 + /// public class ConnectParMode : ObservableObject { - + /// + /// 海科PLC是否连接 + /// public bool HKPlcConnect { get { return _mHKPlcConnect; } set { _mHKPlcConnect = value; OnPropertyChanged(); } } private bool _mHKPlcConnect; + /// + /// 是否屏蔽料仓报警 + /// public bool ShieldStockbinAlarm { get { return _mShieldStockbinAlarm; } set { _mShieldStockbinAlarm = value; OnPropertyChanged(); } } private bool _mShieldStockbinAlarm; - + /// + /// 进桶侧调速电机速度 + /// public short AxisLoadSpeed { get { return _mAxisLoadSpeed; } set { _mAxisLoadSpeed = value; OnPropertyChanged(); } } private short _mAxisLoadSpeed; + /// + /// 过度侧调速电机速度 + /// public short AxisMidSpeed { get { return _mAxisMidSpeed; } set { _mAxisMidSpeed = value; OnPropertyChanged(); } } private short _mAxisMidSpeed; + /// + /// 出桶侧调速电机速度 + /// public short AxisUnLoadSpeed { get { return _mAxisUnLoadSpeed; } set { _mAxisUnLoadSpeed = value; OnPropertyChanged(); } } private short _mAxisUnLoadSpeed; + /// + /// 进桶侧伺服电机速度 + /// public float Axis1Speed { get { return _mAxis1Speed; } set { _mAxis1Speed = value; OnPropertyChanged(); } } private float _mAxis1Speed; + /// + /// 出桶侧伺服电机速度 + /// public float Axis2Speed { get { return _mAxis2Speed; } set { _mAxis2Speed = value; OnPropertyChanged(); } } private float _mAxis2Speed; } diff --git a/BPASmartClient.FoodStationTest/Model/Par/LocaPar.cs b/BPASmartClient.FoodStationTest/Model/Par/LocaPar.cs index 9728d0d8..19ea4624 100644 --- a/BPASmartClient.FoodStationTest/Model/Par/LocaPar.cs +++ b/BPASmartClient.FoodStationTest/Model/Par/LocaPar.cs @@ -4,6 +4,9 @@ namespace BPASmartClient.FoodStationTest.Model { public class LocalPar { + /// + /// 本地模拟配方列表。 + /// public ObservableCollection Recipes { get; set; } = new ObservableCollection(); /// @@ -15,7 +18,9 @@ namespace BPASmartClient.FoodStationTest.Model /// 味魔方数量,每个项目应该固定的。 /// public int RawMaterialDeviceNum { get; } = 6; - + /// + /// 海科PLC的IP地址。 + /// public string HK_PLC_IP { get; } } } diff --git a/BPASmartClient.FoodStationTest/Model/ProcessControl.cs b/BPASmartClient.FoodStationTest/Model/ProcessControl.cs index 8b7ecaeb..c408a214 100644 --- a/BPASmartClient.FoodStationTest/Model/ProcessControl.cs +++ b/BPASmartClient.FoodStationTest/Model/ProcessControl.cs @@ -8,8 +8,8 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Configuration; using System.Linq; +using System.Printing; using System.Reflection; using System.Threading; @@ -17,31 +17,34 @@ namespace BPASmartClient.FoodStationTest.Model { public class ProcessControl { - private volatile static ProcessControl _Instance; + private static volatile ProcessControl _Instance; public static ProcessControl GetInstance => _Instance ?? (_Instance = new ProcessControl()); - private ProcessControl() { } + + private ProcessControl() + { } /// /// 配方数据 /// public ObservableCollection RemoteRecipes = new ObservableCollection(); + /// /// 原料的名称和料仓的位置对应 /// public Dictionary RawMaterialsNamePos = new Dictionary(); + public ObservableCollection RawMaterialsInfo => Json.Data.rawMaterialStockBin; + /// /// 配方队列 /// public ConcurrentQueue RecipeQueueTray1 = new ConcurrentQueue(); - /// /// 物料集合 /// public Dictionary> RecipeQueueTray { get; set; } = new Dictionary>(); - public HKDeviceStatus HKDevice = new HKDeviceStatus(); public ObservableCollection CommData { get; set; } = new ObservableCollection(); @@ -49,8 +52,7 @@ namespace BPASmartClient.FoodStationTest.Model public DateTime StockBinAlarmTime = DateTime.Now; - //public string? HK_PLC_IP = ConfigurationManager.AppSettings["HKPlc_IP"]; - public string? HK_PLC_IP = Json.Data.HK_PLC_IP; + public string? HK_PLC_IP => Json.Data.HK_PLC_IP; public void Init() { @@ -115,6 +117,7 @@ namespace BPASmartClient.FoodStationTest.Model Thread.Sleep(10); }), "海科PLC实时数据", true); } + /// /// 气缸的传感器值 /// @@ -138,6 +141,7 @@ namespace BPASmartClient.FoodStationTest.Model GVL_SmallStation.GetInstance.Cylinder_JackInfo[26] = HKDevice.HK_PLC_S7.Read("DB5.DBX4.4").Content;//托盘2_1气缸 GVL_SmallStation.GetInstance.Cylinder_JackInfo[27] = HKDevice.HK_PLC_S7.Read("DB5.DBX4.5").Content;//托盘2_2气缸 } + /// /// DB块的变量实时值 /// @@ -198,6 +202,7 @@ namespace BPASmartClient.FoodStationTest.Model } } } + /// /// 小料站和西门子PLC之间的实时数据 /// @@ -235,6 +240,7 @@ namespace BPASmartClient.FoodStationTest.Model GVL_SmallStation.GetInstance.RobotProgramNum = HKDevice.HK_PLC_S7.Read("DB3.DBB1").Content; } } + public void CancelOrder() { if (GVL_SmallStation.GetInstance.Order_Cancel) //订单取消 @@ -289,6 +295,7 @@ namespace BPASmartClient.FoodStationTest.Model GVL_SmallStation.GetInstance.OrderCancelStep = 3; } break; + case 2: if (HKDevice.HK_PLC_S7.Read("DB3.DBX42." + index1).Content) { @@ -299,10 +306,12 @@ namespace BPASmartClient.FoodStationTest.Model } } break; + case 3: // SiemensDevice.Siemens_PLC_S7.Write("DB2201.DBX450.1", true); GVL_SmallStation.GetInstance.OrderCancelStep = 4; break; + case 4: // SiemensDevice.Siemens_PLC_S7.Write("DB2201.DBX450.1", false); @@ -310,6 +319,7 @@ namespace BPASmartClient.FoodStationTest.Model MessageNotify.GetInstance.ShowRunLog($"队列1,西门子取消订单完成,订单号:{code}"); break; + case 9: App.Current.Dispatcher.Invoke(() => { @@ -321,15 +331,18 @@ namespace BPASmartClient.FoodStationTest.Model GVL_SmallStation.GetInstance.Order_CancelRecipeCode = ""; GVL_SmallStation.GetInstance.OrderCancelStep = 0; break; + case 20: GVL_SmallStation.GetInstance.OrderCancelStep = 21; break; + case 21: GVL_SmallStation.GetInstance.OrderCancelStep = 29; MessageNotify.GetInstance.ShowRunLog($"队列1,西门子取消订单完成,订单号:{code}"); break; + case 29: App.Current.Dispatcher.Invoke(() => { @@ -345,12 +358,14 @@ namespace BPASmartClient.FoodStationTest.Model case 30: GVL_SmallStation.GetInstance.OrderCancelStep = 31; break; + case 31: GVL_SmallStation.GetInstance.OrderCancelStep = 39; MessageNotify.GetInstance.ShowRunLog($"西门子取消订单完成,订单号:{code}"); break; + case 39: GVL_SmallStation.GetInstance.Order_Cancel = false; GVL_SmallStation.GetInstance.Order_CancelRecipeCode = ""; @@ -360,6 +375,7 @@ namespace BPASmartClient.FoodStationTest.Model } } } + /// /// 将配方添加到配方队列中 /// @@ -376,6 +392,7 @@ namespace BPASmartClient.FoodStationTest.Model { if (GVL_SmallStation.GetInstance.NotUseSmallStation) { + //查询都不包含此配方 if (RecipeQueueTray[i].Count == 0 && !RecipeQueueTray[0].Contains(data.RecipeCode) && !RecipeQueueTray[1].Contains(data.RecipeCode) && !RecipeQueueTray[2].Contains(data.RecipeCode) && !RecipeQueueTray[3].Contains(data.RecipeCode) && !RecipeQueueTray[4].Contains(data.RecipeCode)) { RecipeQueueTray[i].Enqueue(data.RecipeCode); @@ -404,8 +421,8 @@ namespace BPASmartClient.FoodStationTest.Model GVL_SmallStation.GetInstance.WindSendDosingStatus = 0; GVL_SmallStation.GetInstance.WindSendDosing = false; } - } + /// /// 小料站配料 /// @@ -413,6 +430,7 @@ namespace BPASmartClient.FoodStationTest.Model { if (!GVL_SmallStation.GetInstance.NotUseSmallStation) { + //如果使用小料站配料,更新查询5个工位的AGV状态。 for (int i = 0; i < 5; i++) { switch (GVL_SmallStation.GetInstance.Tray_AGVLogic[i]) @@ -427,6 +445,7 @@ namespace BPASmartClient.FoodStationTest.Model MessageNotify.GetInstance.ShowRunLog("AGV到位 发送到位信号给plc"); } break; + case 1: if (GVL_SmallStation.GetInstance.Station1HaveTray) @@ -436,6 +455,7 @@ namespace BPASmartClient.FoodStationTest.Model MessageNotify.GetInstance.ShowRunLog("托盘1有货架"); } break; + case 2: if (GVL_SmallStation.GetInstance.AGV_GetTray1Finish && GVL_SmallStation.GetInstance.RecipeProcessStatus[i] == 0) { @@ -445,6 +465,7 @@ namespace BPASmartClient.FoodStationTest.Model MessageNotify.GetInstance.ShowRunLog("AGV取托盘1完成,发送给海科信号后1s后复位"); } break; + case 3: if (HKDevice.HK_PLC_S7.Read("DB4.DBX10." + i).Content) { @@ -455,6 +476,7 @@ namespace BPASmartClient.FoodStationTest.Model MessageNotify.GetInstance.ShowRunLog("AGV取托盘1完成,信号复位"); } break; + default: break; } @@ -482,8 +504,6 @@ namespace BPASmartClient.FoodStationTest.Model var res = Json.Data.Recipes.FirstOrDefault(p => p.RecipeCode == code); if (/*SiemensDevice.IsConnected &&*/ !GVL_SmallStation.GetInstance.IsUseLocalRecipe) { - - MessageNotify.GetInstance.ShowRunLog($"托盘1,配方{res.RecipeName},配料完成,数据反馈给西门子"); } else @@ -502,10 +522,9 @@ namespace BPASmartClient.FoodStationTest.Model } else { - //粉料仓下发配方 + //粉料仓下发配方并配料。 if (/*GVL_SmallStation.GetInstance.IsUseWindSend &&*/ GVL_SmallStation.GetInstance.WindSendDosing == false /*&& GVL_SmallStation.GetInstance.Tray_AGVLogic[recipeNum] == 2*/) { - } else { @@ -516,6 +535,7 @@ namespace BPASmartClient.FoodStationTest.Model } } } + //上位机下发配方。并检测下发完成。 if (GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 0) { GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum] = 0; @@ -525,6 +545,7 @@ namespace BPASmartClient.FoodStationTest.Model GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] = 1; MessageNotify.GetInstance.ShowRunLog($"托盘1,配方编号{code},配方号{recipeNum + 1},下发完成"); } + //需要等待下位机检测确认正确接收到配方。 bool recipeReceviceFinish = HKDevice.HK_PLC_S7.Read("DB3.DBX4." + recipeNum).Content; if (recipeReceviceFinish && GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 1) { @@ -533,11 +554,14 @@ namespace BPASmartClient.FoodStationTest.Model GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = 0; MessageNotify.GetInstance.ShowRunLog($"托盘1,配方编号{code},配方号{recipeNum + 1},配方接收完成"); } + //下面是配料流程。 if (GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 2) { - for (byte i = 1; i < 16; i++) + //下面是味魔方配料。 + for (byte i = 1; i <= Json.Data.RawMaterialDeviceNum; i++) { int indexArr = -1; + //获取配方每个配方的三个桶的位置。 if (GVL_SmallStation.GetInstance.plcReadDataDB3.StockBinAllowIssue[i - 1]) { switch (recipeNum) @@ -545,23 +569,29 @@ namespace BPASmartClient.FoodStationTest.Model case 0: indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe1BarrelPosReserve.ToArray(), p => p == i); break; + case 1: indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe2BarrelPosReserve.ToArray(), p => p == i); break; + case 2: indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe3BarrelPosReserve.ToArray(), p => p == i); break; + case 3: indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe4BarrelPosReserve.ToArray(), p => p == i); break; + case 4: indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe5BarrelPosReserve.ToArray(), p => p == i); break; } if (indexArr >= 0 && GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum].Get16bitValue((byte)i) == false) { + //查找每个料仓对应的重量。 int loc_index = Array.FindIndex(RemoteRecipes.ElementAt(index).RawMaterial.ToArray(), p => p.RawMaterialLocation == i); float weight = RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(loc_index).RawMaterialWeight * 1000;//单位g转换kg + //小于等于0代表这个料仓不需要配料。 if (weight <= 0) { if (i >= 1 && i <= 8) @@ -577,6 +607,7 @@ namespace BPASmartClient.FoodStationTest.Model GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum] = GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum].SetBitValue((byte)i, false);//配料完成设备写成false GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum].SetBitValue((byte)i, true);//配料完成设备写成false } + //写入重量并开始配料 else { if (loc_index >= 0) @@ -597,10 +628,10 @@ namespace BPASmartClient.FoodStationTest.Model } if ((DeviceInquire.GetInstance.GetDevice(i).deviceStatus.RunStatus == 3) && indexArr >= 0 && GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum].Get16bitValue((byte)i)) { + //配料完成处理。 int res = Array.FindIndex(RemoteRecipes.ElementAt(index).RawMaterial.ToArray(), p => p.RawMaterialLocation == i); if (res < 0) { - } else { @@ -608,10 +639,12 @@ namespace BPASmartClient.FoodStationTest.Model RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight = DeviceInquire.GetInstance.GetDevice(i).deviceStatus.NowWeightFeedback; bool info = DeviceInquire.GetInstance.GetDevice(i).StatusReset(); MessageNotify.GetInstance.ShowRunLog($"柔性味魔方,托盘1,配方:{recipeName},{i}号仓,配料完成,下料完成重量:{RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight}"); + //查找配料完成的味魔方的报警偏差限值。 float AlarmRange = Math.Abs(RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight - RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).RawMaterialWeight * 1000); int iIndex = Array.FindIndex(Json.Data.deviceParModels.ToArray(), p => p.MaterialName == DeviceInquire.GetInstance.GetDevice(i).DeviceName); if (iIndex >= 0) { + //如果偏差过大则报警。 if (Math.Abs(Json.Data.deviceParModels.ElementAt(iIndex).ErrorRange) < AlarmRange) { HKDevice.HK_PLC_S7.Write("DB44.DBX3.0", true); @@ -622,6 +655,7 @@ namespace BPASmartClient.FoodStationTest.Model }); } } + //对海科PLC写入味魔方配料完成。 if (i >= 1 && i <= 8) { string commInfo = HKDevice.HK_PLC_S7.Write("DB4.DBX12." + (i - 1), true).IsSuccess.ToString(); @@ -638,10 +672,13 @@ namespace BPASmartClient.FoodStationTest.Model } } } + //配方整体配料完成处理。 bool DosingComple = HKDevice.HK_PLC_S7.Read("DB3.DBX6." + recipeNum).Content; if ((RTrig.GetInstance("配方配料完成").Start(DosingComple)) || (GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] > 0 && DosingComple)) { + //配方制作完成数量+1 GVL_SmallStation.GetInstance.RecipeDosingCompleNum = GVL_SmallStation.GetInstance.RecipeDosingCompleNum + 1; + GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = 0; if (GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum] > 0) { @@ -661,6 +698,7 @@ namespace BPASmartClient.FoodStationTest.Model } GVL_SmallStation.GetInstance.WindSendDosing = false; + //移除配方。 App.Current.Dispatcher.Invoke(() => { Json.Data.Recipes.Remove(res); @@ -689,6 +727,7 @@ namespace BPASmartClient.FoodStationTest.Model } } } + /// /// 料仓的位置和原料名称的对应 /// @@ -706,6 +745,7 @@ namespace BPASmartClient.FoodStationTest.Model } } } + /// /// PLC的DB3变量列表。初始化PLC读取DB块变量以及流程变量数据。 /// @@ -728,8 +768,6 @@ namespace BPASmartClient.FoodStationTest.Model } } - - foreach (PropertyInfo item in typeof(GVL_SmallStation).GetProperties()) { if (Attribute.IsDefined(item, typeof(VarCommAttribute))) @@ -747,6 +785,7 @@ namespace BPASmartClient.FoodStationTest.Model } } } + /// /// 注册需要用到的委托,主要是用于手动控制的。 /// @@ -951,8 +990,6 @@ namespace BPASmartClient.FoodStationTest.Model ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write("DB5.DBX5.2", true); }), "StartAxis2Command", true); ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write("DB5.DBX5.2", false); }), "StopAxis2Command", true); - - //将本地配方发送到西门子配方里,执行配料 ActionManage.GetInstance.Register(new Action((res) => { @@ -1112,8 +1149,8 @@ namespace BPASmartClient.FoodStationTest.Model HKDevice.HK_PLC_S7.Write("DB4.DBB1", (byte)Value); } }), "RobotSetProgramNum", true); - } + /// /// 连接海科PLC,并开启重连线程。 /// @@ -1154,7 +1191,6 @@ namespace BPASmartClient.FoodStationTest.Model { } - Thread.Sleep(50); }), "设备连接", true); } @@ -1243,4 +1279,4 @@ namespace BPASmartClient.FoodStationTest.Model GVL_SmallStation.GetInstance.RawMaterialsNameCode.TryAdd("0060", "孜然油"); } } -} +} \ No newline at end of file diff --git a/BPASmartClient.FoodStationTest/Model/RawMaterial/AlarmInfo.cs b/BPASmartClient.FoodStationTest/Model/RawMaterial/AlarmInfo.cs index e6581741..1fe9b0d7 100644 --- a/BPASmartClient.FoodStationTest/Model/RawMaterial/AlarmInfo.cs +++ b/BPASmartClient.FoodStationTest/Model/RawMaterial/AlarmInfo.cs @@ -2,6 +2,9 @@ namespace BPASmartClient.FoodStationTest.Model { + /// + /// 料仓报警信息。 + /// public class AlarmInfo { /// diff --git a/BPASmartClient.FoodStationTest/Model/RawMaterial/DeviceCurrentStatus.cs b/BPASmartClient.FoodStationTest/Model/RawMaterial/DeviceCurrentStatus.cs index 0c9f3dab..3185c514 100644 --- a/BPASmartClient.FoodStationTest/Model/RawMaterial/DeviceCurrentStatus.cs +++ b/BPASmartClient.FoodStationTest/Model/RawMaterial/DeviceCurrentStatus.cs @@ -2,6 +2,9 @@ namespace BPASmartClient.FoodStationTest.Model { + /// + /// 味魔方当前状态。 + /// public class DeviceCurrentStatus : ObservableObject { diff --git a/BPASmartClient.FoodStationTest/Model/Recipe/LocalRecipeDataColl.cs b/BPASmartClient.FoodStationTest/Model/Recipe/LocalRecipeDataColl.cs index 608fa8c9..fd4f6d76 100644 --- a/BPASmartClient.FoodStationTest/Model/Recipe/LocalRecipeDataColl.cs +++ b/BPASmartClient.FoodStationTest/Model/Recipe/LocalRecipeDataColl.cs @@ -2,6 +2,9 @@ namespace BPASmartClient.FoodStationTest.Model { + /// + /// 本地模拟配方集合。 + /// internal class LocalRecipeDataColl { public ObservableCollection Recipes { get; set; } = new ObservableCollection(); diff --git a/BPASmartClient.FoodStationTest/View/ManualFlowView.xaml b/BPASmartClient.FoodStationTest/View/ManualFlowView.xaml index 6ab605a5..fb1d5c24 100644 --- a/BPASmartClient.FoodStationTest/View/ManualFlowView.xaml +++ b/BPASmartClient.FoodStationTest/View/ManualFlowView.xaml @@ -26,55 +26,6 @@ HorizontalAlignment="left" VerticalAlignment="Center" Orientation="Horizontal"> -