@@ -2,19 +2,39 @@ | |||||
namespace BPASmartClient.FoodStationTest.Model.GVL | namespace BPASmartClient.FoodStationTest.Model.GVL | ||||
{ | { | ||||
/// <summary> | |||||
/// PLC变量信息 | |||||
/// </summary> | |||||
public class PlcInfos : ObservableObject | public class PlcInfos : ObservableObject | ||||
{ | { | ||||
/// <summary> | |||||
/// 变量序号 | |||||
/// </summary> | |||||
public int Count { get { return _Count; } set { _Count = value; OnPropertyChanged(); } } | public int Count { get { return _Count; } set { _Count = value; OnPropertyChanged(); } } | ||||
private int _Count { get; set; } | private int _Count { get; set; } | ||||
/// <summary> | |||||
/// 变量名称 | |||||
/// </summary> | |||||
public string Name { get { return _Name; } set { _Name = value; OnPropertyChanged(); } } | public string Name { get { return _Name; } set { _Name = value; OnPropertyChanged(); } } | ||||
private string _Name { get; set; } | private string _Name { get; set; } | ||||
/// <summary> | |||||
/// 变量地址 | |||||
/// </summary> | |||||
public string Address { get { return _Address; } set { _Address = value; OnPropertyChanged(); } } | public string Address { get { return _Address; } set { _Address = value; OnPropertyChanged(); } } | ||||
private string _Address { get; set; } | private string _Address { get; set; } | ||||
/// <summary> | |||||
/// 变量类型 | |||||
/// </summary> | |||||
public string Type { get { return _Type; } set { _Type = value; OnPropertyChanged(); } } | public string Type { get { return _Type; } set { _Type = value; OnPropertyChanged(); } } | ||||
private string _Type { get; set; } | private string _Type { get; set; } | ||||
/// <summary> | |||||
/// 变量描述 | |||||
/// </summary> | |||||
public string Describe { get { return _Describe; } set { _Describe = value; OnPropertyChanged(); } } | public string Describe { get { return _Describe; } set { _Describe = value; OnPropertyChanged(); } } | ||||
private string _Describe { get; set; } | private string _Describe { get; set; } | ||||
/// <summary> | |||||
/// 变量值 | |||||
/// </summary> | |||||
public string Value { get { return _Value; } set { _Value = value; OnPropertyChanged(); } } | public string Value { get { return _Value; } set { _Value = value; OnPropertyChanged(); } } | ||||
private string _Value { get; set; } | private string _Value { get; set; } | ||||
@@ -10,7 +10,13 @@ namespace BPASmartClient.FoodStationTest.Model.GVL | |||||
Address = address; | Address = address; | ||||
Describe = des; | Describe = des; | ||||
} | } | ||||
/// <summary> | |||||
/// 变量信息描述。 | |||||
/// </summary> | |||||
public string Describe { get; set; } | public string Describe { get; set; } | ||||
/// <summary> | |||||
/// 变量地址 | |||||
/// </summary> | |||||
public string Address { get; set; } | public string Address { get; set; } | ||||
} | } | ||||
} | } |
@@ -2,23 +2,45 @@ | |||||
namespace BPASmartClient.FoodStationTest.Model.Par | namespace BPASmartClient.FoodStationTest.Model.Par | ||||
{ | { | ||||
/// <summary> | |||||
/// 连接参数设置。 | |||||
/// </summary> | |||||
public class ConnectParMode : ObservableObject | public class ConnectParMode : ObservableObject | ||||
{ | { | ||||
/// <summary> | |||||
/// 海科PLC是否连接 | |||||
/// </summary> | |||||
public bool HKPlcConnect { get { return _mHKPlcConnect; } set { _mHKPlcConnect = value; OnPropertyChanged(); } } | public bool HKPlcConnect { get { return _mHKPlcConnect; } set { _mHKPlcConnect = value; OnPropertyChanged(); } } | ||||
private bool _mHKPlcConnect; | private bool _mHKPlcConnect; | ||||
/// <summary> | |||||
/// 是否屏蔽料仓报警 | |||||
/// </summary> | |||||
public bool ShieldStockbinAlarm { get { return _mShieldStockbinAlarm; } set { _mShieldStockbinAlarm = value; OnPropertyChanged(); } } | public bool ShieldStockbinAlarm { get { return _mShieldStockbinAlarm; } set { _mShieldStockbinAlarm = value; OnPropertyChanged(); } } | ||||
private bool _mShieldStockbinAlarm; | private bool _mShieldStockbinAlarm; | ||||
/// <summary> | |||||
/// 进桶侧调速电机速度 | |||||
/// </summary> | |||||
public short AxisLoadSpeed { get { return _mAxisLoadSpeed; } set { _mAxisLoadSpeed = value; OnPropertyChanged(); } } | public short AxisLoadSpeed { get { return _mAxisLoadSpeed; } set { _mAxisLoadSpeed = value; OnPropertyChanged(); } } | ||||
private short _mAxisLoadSpeed; | private short _mAxisLoadSpeed; | ||||
/// <summary> | |||||
/// 过度侧调速电机速度 | |||||
/// </summary> | |||||
public short AxisMidSpeed { get { return _mAxisMidSpeed; } set { _mAxisMidSpeed = value; OnPropertyChanged(); } } | public short AxisMidSpeed { get { return _mAxisMidSpeed; } set { _mAxisMidSpeed = value; OnPropertyChanged(); } } | ||||
private short _mAxisMidSpeed; | private short _mAxisMidSpeed; | ||||
/// <summary> | |||||
/// 出桶侧调速电机速度 | |||||
/// </summary> | |||||
public short AxisUnLoadSpeed { get { return _mAxisUnLoadSpeed; } set { _mAxisUnLoadSpeed = value; OnPropertyChanged(); } } | public short AxisUnLoadSpeed { get { return _mAxisUnLoadSpeed; } set { _mAxisUnLoadSpeed = value; OnPropertyChanged(); } } | ||||
private short _mAxisUnLoadSpeed; | private short _mAxisUnLoadSpeed; | ||||
/// <summary> | |||||
/// 进桶侧伺服电机速度 | |||||
/// </summary> | |||||
public float Axis1Speed { get { return _mAxis1Speed; } set { _mAxis1Speed = value; OnPropertyChanged(); } } | public float Axis1Speed { get { return _mAxis1Speed; } set { _mAxis1Speed = value; OnPropertyChanged(); } } | ||||
private float _mAxis1Speed; | private float _mAxis1Speed; | ||||
/// <summary> | |||||
/// 出桶侧伺服电机速度 | |||||
/// </summary> | |||||
public float Axis2Speed { get { return _mAxis2Speed; } set { _mAxis2Speed = value; OnPropertyChanged(); } } | public float Axis2Speed { get { return _mAxis2Speed; } set { _mAxis2Speed = value; OnPropertyChanged(); } } | ||||
private float _mAxis2Speed; | private float _mAxis2Speed; | ||||
} | } | ||||
@@ -4,6 +4,9 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
{ | { | ||||
public class LocalPar | public class LocalPar | ||||
{ | { | ||||
/// <summary> | |||||
/// 本地模拟配方列表。 | |||||
/// </summary> | |||||
public ObservableCollection<RecipeModel> Recipes { get; set; } = new ObservableCollection<RecipeModel>(); | public ObservableCollection<RecipeModel> Recipes { get; set; } = new ObservableCollection<RecipeModel>(); | ||||
/// <summary> | /// <summary> | ||||
@@ -15,7 +18,9 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
/// 味魔方数量,每个项目应该固定的。 | /// 味魔方数量,每个项目应该固定的。 | ||||
/// </summary> | /// </summary> | ||||
public int RawMaterialDeviceNum { get; } = 6; | public int RawMaterialDeviceNum { get; } = 6; | ||||
/// <summary> | |||||
/// 海科PLC的IP地址。 | |||||
/// </summary> | |||||
public string HK_PLC_IP { get; } | public string HK_PLC_IP { get; } | ||||
} | } | ||||
} | } |
@@ -8,8 +8,8 @@ using System; | |||||
using System.Collections.Concurrent; | using System.Collections.Concurrent; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Collections.ObjectModel; | using System.Collections.ObjectModel; | ||||
using System.Configuration; | |||||
using System.Linq; | using System.Linq; | ||||
using System.Printing; | |||||
using System.Reflection; | using System.Reflection; | ||||
using System.Threading; | using System.Threading; | ||||
@@ -17,31 +17,34 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
{ | { | ||||
public class ProcessControl | public class ProcessControl | ||||
{ | { | ||||
private volatile static ProcessControl _Instance; | |||||
private static volatile ProcessControl _Instance; | |||||
public static ProcessControl GetInstance => _Instance ?? (_Instance = new ProcessControl()); | public static ProcessControl GetInstance => _Instance ?? (_Instance = new ProcessControl()); | ||||
private ProcessControl() { } | |||||
private ProcessControl() | |||||
{ } | |||||
/// <summary> | /// <summary> | ||||
/// 配方数据 | /// 配方数据 | ||||
/// </summary> | /// </summary> | ||||
public ObservableCollection<RemoteRecipeData> RemoteRecipes = new ObservableCollection<RemoteRecipeData>(); | public ObservableCollection<RemoteRecipeData> RemoteRecipes = new ObservableCollection<RemoteRecipeData>(); | ||||
/// <summary> | /// <summary> | ||||
/// 原料的名称和料仓的位置对应 | /// 原料的名称和料仓的位置对应 | ||||
/// </summary> | /// </summary> | ||||
public Dictionary<string, short> RawMaterialsNamePos = new Dictionary<string, short>(); | public Dictionary<string, short> RawMaterialsNamePos = new Dictionary<string, short>(); | ||||
public ObservableCollection<RawMaterialStockBin> RawMaterialsInfo => Json<DevicePar>.Data.rawMaterialStockBin; | public ObservableCollection<RawMaterialStockBin> RawMaterialsInfo => Json<DevicePar>.Data.rawMaterialStockBin; | ||||
/// <summary> | /// <summary> | ||||
/// 配方队列 | /// 配方队列 | ||||
/// </summary> | /// </summary> | ||||
public ConcurrentQueue<string> RecipeQueueTray1 = new ConcurrentQueue<string>(); | public ConcurrentQueue<string> RecipeQueueTray1 = new ConcurrentQueue<string>(); | ||||
/// <summary> | /// <summary> | ||||
/// 物料集合 | /// 物料集合 | ||||
/// </summary> | /// </summary> | ||||
public Dictionary<int, ConcurrentQueue<string>> RecipeQueueTray { get; set; } = new Dictionary<int, ConcurrentQueue<string>>(); | public Dictionary<int, ConcurrentQueue<string>> RecipeQueueTray { get; set; } = new Dictionary<int, ConcurrentQueue<string>>(); | ||||
public HKDeviceStatus HKDevice = new HKDeviceStatus(); | public HKDeviceStatus HKDevice = new HKDeviceStatus(); | ||||
public ObservableCollection<PlcInfos> CommData { get; set; } = new ObservableCollection<PlcInfos>(); | public ObservableCollection<PlcInfos> CommData { get; set; } = new ObservableCollection<PlcInfos>(); | ||||
@@ -49,8 +52,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
public DateTime StockBinAlarmTime = DateTime.Now; | public DateTime StockBinAlarmTime = DateTime.Now; | ||||
//public string? HK_PLC_IP = ConfigurationManager.AppSettings["HKPlc_IP"]; | |||||
public string? HK_PLC_IP = Json<LocalPar>.Data.HK_PLC_IP; | |||||
public string? HK_PLC_IP => Json<LocalPar>.Data.HK_PLC_IP; | |||||
public void Init() | public void Init() | ||||
{ | { | ||||
@@ -115,6 +117,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
Thread.Sleep(10); | Thread.Sleep(10); | ||||
}), "海科PLC实时数据", true); | }), "海科PLC实时数据", true); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 气缸的传感器值 | /// 气缸的传感器值 | ||||
/// </summary> | /// </summary> | ||||
@@ -138,6 +141,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
GVL_SmallStation.GetInstance.Cylinder_JackInfo[26] = HKDevice.HK_PLC_S7.Read<bool>("DB5.DBX4.4").Content;//托盘2_1气缸 | GVL_SmallStation.GetInstance.Cylinder_JackInfo[26] = HKDevice.HK_PLC_S7.Read<bool>("DB5.DBX4.4").Content;//托盘2_1气缸 | ||||
GVL_SmallStation.GetInstance.Cylinder_JackInfo[27] = HKDevice.HK_PLC_S7.Read<bool>("DB5.DBX4.5").Content;//托盘2_2气缸 | GVL_SmallStation.GetInstance.Cylinder_JackInfo[27] = HKDevice.HK_PLC_S7.Read<bool>("DB5.DBX4.5").Content;//托盘2_2气缸 | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DB块的变量实时值 | /// DB块的变量实时值 | ||||
/// </summary> | /// </summary> | ||||
@@ -198,6 +202,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 小料站和西门子PLC之间的实时数据 | /// 小料站和西门子PLC之间的实时数据 | ||||
/// </summary> | /// </summary> | ||||
@@ -235,6 +240,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
GVL_SmallStation.GetInstance.RobotProgramNum = HKDevice.HK_PLC_S7.Read<byte>("DB3.DBB1").Content; | GVL_SmallStation.GetInstance.RobotProgramNum = HKDevice.HK_PLC_S7.Read<byte>("DB3.DBB1").Content; | ||||
} | } | ||||
} | } | ||||
public void CancelOrder() | public void CancelOrder() | ||||
{ | { | ||||
if (GVL_SmallStation.GetInstance.Order_Cancel) //订单取消 | if (GVL_SmallStation.GetInstance.Order_Cancel) //订单取消 | ||||
@@ -289,6 +295,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
GVL_SmallStation.GetInstance.OrderCancelStep = 3; | GVL_SmallStation.GetInstance.OrderCancelStep = 3; | ||||
} | } | ||||
break; | break; | ||||
case 2: | case 2: | ||||
if (HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX42." + index1).Content) | if (HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX42." + index1).Content) | ||||
{ | { | ||||
@@ -299,10 +306,12 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
} | } | ||||
} | } | ||||
break; | break; | ||||
case 3: | case 3: | ||||
// SiemensDevice.Siemens_PLC_S7.Write("DB2201.DBX450.1", true); | // SiemensDevice.Siemens_PLC_S7.Write("DB2201.DBX450.1", true); | ||||
GVL_SmallStation.GetInstance.OrderCancelStep = 4; | GVL_SmallStation.GetInstance.OrderCancelStep = 4; | ||||
break; | break; | ||||
case 4: | case 4: | ||||
// SiemensDevice.Siemens_PLC_S7.Write("DB2201.DBX450.1", false); | // SiemensDevice.Siemens_PLC_S7.Write("DB2201.DBX450.1", false); | ||||
@@ -310,6 +319,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
MessageNotify.GetInstance.ShowRunLog($"队列1,西门子取消订单完成,订单号:{code}"); | MessageNotify.GetInstance.ShowRunLog($"队列1,西门子取消订单完成,订单号:{code}"); | ||||
break; | break; | ||||
case 9: | case 9: | ||||
App.Current.Dispatcher.Invoke(() => | App.Current.Dispatcher.Invoke(() => | ||||
{ | { | ||||
@@ -321,15 +331,18 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
GVL_SmallStation.GetInstance.Order_CancelRecipeCode = ""; | GVL_SmallStation.GetInstance.Order_CancelRecipeCode = ""; | ||||
GVL_SmallStation.GetInstance.OrderCancelStep = 0; | GVL_SmallStation.GetInstance.OrderCancelStep = 0; | ||||
break; | break; | ||||
case 20: | case 20: | ||||
GVL_SmallStation.GetInstance.OrderCancelStep = 21; | GVL_SmallStation.GetInstance.OrderCancelStep = 21; | ||||
break; | break; | ||||
case 21: | case 21: | ||||
GVL_SmallStation.GetInstance.OrderCancelStep = 29; | GVL_SmallStation.GetInstance.OrderCancelStep = 29; | ||||
MessageNotify.GetInstance.ShowRunLog($"队列1,西门子取消订单完成,订单号:{code}"); | MessageNotify.GetInstance.ShowRunLog($"队列1,西门子取消订单完成,订单号:{code}"); | ||||
break; | break; | ||||
case 29: | case 29: | ||||
App.Current.Dispatcher.Invoke(() => | App.Current.Dispatcher.Invoke(() => | ||||
{ | { | ||||
@@ -345,12 +358,14 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
case 30: | case 30: | ||||
GVL_SmallStation.GetInstance.OrderCancelStep = 31; | GVL_SmallStation.GetInstance.OrderCancelStep = 31; | ||||
break; | break; | ||||
case 31: | case 31: | ||||
GVL_SmallStation.GetInstance.OrderCancelStep = 39; | GVL_SmallStation.GetInstance.OrderCancelStep = 39; | ||||
MessageNotify.GetInstance.ShowRunLog($"西门子取消订单完成,订单号:{code}"); | MessageNotify.GetInstance.ShowRunLog($"西门子取消订单完成,订单号:{code}"); | ||||
break; | break; | ||||
case 39: | case 39: | ||||
GVL_SmallStation.GetInstance.Order_Cancel = false; | GVL_SmallStation.GetInstance.Order_Cancel = false; | ||||
GVL_SmallStation.GetInstance.Order_CancelRecipeCode = ""; | GVL_SmallStation.GetInstance.Order_CancelRecipeCode = ""; | ||||
@@ -360,6 +375,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 将配方添加到配方队列中 | /// 将配方添加到配方队列中 | ||||
/// </summary> | /// </summary> | ||||
@@ -376,6 +392,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
{ | { | ||||
if (GVL_SmallStation.GetInstance.NotUseSmallStation) | 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)) | 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); | RecipeQueueTray[i].Enqueue(data.RecipeCode); | ||||
@@ -404,8 +421,8 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
GVL_SmallStation.GetInstance.WindSendDosingStatus = 0; | GVL_SmallStation.GetInstance.WindSendDosingStatus = 0; | ||||
GVL_SmallStation.GetInstance.WindSendDosing = false; | GVL_SmallStation.GetInstance.WindSendDosing = false; | ||||
} | } | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 小料站配料 | /// 小料站配料 | ||||
/// </summary> | /// </summary> | ||||
@@ -413,6 +430,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
{ | { | ||||
if (!GVL_SmallStation.GetInstance.NotUseSmallStation) | if (!GVL_SmallStation.GetInstance.NotUseSmallStation) | ||||
{ | { | ||||
//如果使用小料站配料,更新查询5个工位的AGV状态。 | |||||
for (int i = 0; i < 5; i++) | for (int i = 0; i < 5; i++) | ||||
{ | { | ||||
switch (GVL_SmallStation.GetInstance.Tray_AGVLogic[i]) | switch (GVL_SmallStation.GetInstance.Tray_AGVLogic[i]) | ||||
@@ -427,6 +445,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
MessageNotify.GetInstance.ShowRunLog("AGV到位 发送到位信号给plc"); | MessageNotify.GetInstance.ShowRunLog("AGV到位 发送到位信号给plc"); | ||||
} | } | ||||
break; | break; | ||||
case 1: | case 1: | ||||
if (GVL_SmallStation.GetInstance.Station1HaveTray) | if (GVL_SmallStation.GetInstance.Station1HaveTray) | ||||
@@ -436,6 +455,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
MessageNotify.GetInstance.ShowRunLog("托盘1有货架"); | MessageNotify.GetInstance.ShowRunLog("托盘1有货架"); | ||||
} | } | ||||
break; | break; | ||||
case 2: | case 2: | ||||
if (GVL_SmallStation.GetInstance.AGV_GetTray1Finish && GVL_SmallStation.GetInstance.RecipeProcessStatus[i] == 0) | 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后复位"); | MessageNotify.GetInstance.ShowRunLog("AGV取托盘1完成,发送给海科信号后1s后复位"); | ||||
} | } | ||||
break; | break; | ||||
case 3: | case 3: | ||||
if (HKDevice.HK_PLC_S7.Read<bool>("DB4.DBX10." + i).Content) | if (HKDevice.HK_PLC_S7.Read<bool>("DB4.DBX10." + i).Content) | ||||
{ | { | ||||
@@ -455,6 +476,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
MessageNotify.GetInstance.ShowRunLog("AGV取托盘1完成,信号复位"); | MessageNotify.GetInstance.ShowRunLog("AGV取托盘1完成,信号复位"); | ||||
} | } | ||||
break; | break; | ||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -482,8 +504,6 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
var res = Json<RemoteRecipeDataColl>.Data.Recipes.FirstOrDefault(p => p.RecipeCode == code); | var res = Json<RemoteRecipeDataColl>.Data.Recipes.FirstOrDefault(p => p.RecipeCode == code); | ||||
if (/*SiemensDevice.IsConnected &&*/ !GVL_SmallStation.GetInstance.IsUseLocalRecipe) | if (/*SiemensDevice.IsConnected &&*/ !GVL_SmallStation.GetInstance.IsUseLocalRecipe) | ||||
{ | { | ||||
MessageNotify.GetInstance.ShowRunLog($"托盘1,配方{res.RecipeName},配料完成,数据反馈给西门子"); | MessageNotify.GetInstance.ShowRunLog($"托盘1,配方{res.RecipeName},配料完成,数据反馈给西门子"); | ||||
} | } | ||||
else | else | ||||
@@ -502,10 +522,9 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
//粉料仓下发配方 | |||||
//粉料仓下发配方并配料。 | |||||
if (/*GVL_SmallStation.GetInstance.IsUseWindSend &&*/ GVL_SmallStation.GetInstance.WindSendDosing == false /*&& GVL_SmallStation.GetInstance.Tray_AGVLogic[recipeNum] == 2*/) | if (/*GVL_SmallStation.GetInstance.IsUseWindSend &&*/ GVL_SmallStation.GetInstance.WindSendDosing == false /*&& GVL_SmallStation.GetInstance.Tray_AGVLogic[recipeNum] == 2*/) | ||||
{ | { | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
@@ -516,6 +535,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
} | } | ||||
} | } | ||||
} | } | ||||
//上位机下发配方。并检测下发完成。 | |||||
if (GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 0) | if (GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 0) | ||||
{ | { | ||||
GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum] = 0; | GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum] = 0; | ||||
@@ -525,6 +545,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] = 1; | GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] = 1; | ||||
MessageNotify.GetInstance.ShowRunLog($"托盘1,配方编号{code},配方号{recipeNum + 1},下发完成"); | MessageNotify.GetInstance.ShowRunLog($"托盘1,配方编号{code},配方号{recipeNum + 1},下发完成"); | ||||
} | } | ||||
//需要等待下位机检测确认正确接收到配方。 | |||||
bool recipeReceviceFinish = HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX4." + recipeNum).Content; | bool recipeReceviceFinish = HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX4." + recipeNum).Content; | ||||
if (recipeReceviceFinish && GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 1) | if (recipeReceviceFinish && GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 1) | ||||
{ | { | ||||
@@ -533,11 +554,14 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = 0; | GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = 0; | ||||
MessageNotify.GetInstance.ShowRunLog($"托盘1,配方编号{code},配方号{recipeNum + 1},配方接收完成"); | MessageNotify.GetInstance.ShowRunLog($"托盘1,配方编号{code},配方号{recipeNum + 1},配方接收完成"); | ||||
} | } | ||||
//下面是配料流程。 | |||||
if (GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 2) | if (GVL_SmallStation.GetInstance.RecipeProcessStatus[recipeNum] == 2) | ||||
{ | { | ||||
for (byte i = 1; i < 16; i++) | |||||
//下面是味魔方配料。 | |||||
for (byte i = 1; i <= Json<LocalPar>.Data.RawMaterialDeviceNum; i++) | |||||
{ | { | ||||
int indexArr = -1; | int indexArr = -1; | ||||
//获取配方每个配方的三个桶的位置。 | |||||
if (GVL_SmallStation.GetInstance.plcReadDataDB3.StockBinAllowIssue[i - 1]) | if (GVL_SmallStation.GetInstance.plcReadDataDB3.StockBinAllowIssue[i - 1]) | ||||
{ | { | ||||
switch (recipeNum) | switch (recipeNum) | ||||
@@ -545,23 +569,29 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
case 0: | case 0: | ||||
indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe1BarrelPosReserve.ToArray(), p => p == i); | indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe1BarrelPosReserve.ToArray(), p => p == i); | ||||
break; | break; | ||||
case 1: | case 1: | ||||
indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe2BarrelPosReserve.ToArray(), p => p == i); | indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe2BarrelPosReserve.ToArray(), p => p == i); | ||||
break; | break; | ||||
case 2: | case 2: | ||||
indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe3BarrelPosReserve.ToArray(), p => p == i); | indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe3BarrelPosReserve.ToArray(), p => p == i); | ||||
break; | break; | ||||
case 3: | case 3: | ||||
indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe4BarrelPosReserve.ToArray(), p => p == i); | indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe4BarrelPosReserve.ToArray(), p => p == i); | ||||
break; | break; | ||||
case 4: | case 4: | ||||
indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe5BarrelPosReserve.ToArray(), p => p == i); | indexArr = Array.FindIndex(GVL_SmallStation.GetInstance.plcReadDataDB3.Recipe5BarrelPosReserve.ToArray(), p => p == i); | ||||
break; | break; | ||||
} | } | ||||
if (indexArr >= 0 && GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum].Get16bitValue((byte)i) == false) | 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); | 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 | float weight = RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(loc_index).RawMaterialWeight * 1000;//单位g转换kg | ||||
//小于等于0代表这个料仓不需要配料。 | |||||
if (weight <= 0) | if (weight <= 0) | ||||
{ | { | ||||
if (i >= 1 && i <= 8) | 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.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 | GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum].SetBitValue((byte)i, true);//配料完成设备写成false | ||||
} | } | ||||
//写入重量并开始配料 | |||||
else | else | ||||
{ | { | ||||
if (loc_index >= 0) | 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)) | 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); | int res = Array.FindIndex(RemoteRecipes.ElementAt(index).RawMaterial.ToArray(), p => p.RawMaterialLocation == i); | ||||
if (res < 0) | if (res < 0) | ||||
{ | { | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
@@ -608,10 +639,12 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight = DeviceInquire.GetInstance.GetDevice(i).deviceStatus.NowWeightFeedback; | RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight = DeviceInquire.GetInstance.GetDevice(i).deviceStatus.NowWeightFeedback; | ||||
bool info = DeviceInquire.GetInstance.GetDevice(i).StatusReset(); | bool info = DeviceInquire.GetInstance.GetDevice(i).StatusReset(); | ||||
MessageNotify.GetInstance.ShowRunLog($"柔性味魔方,托盘1,配方:{recipeName},{i}号仓,配料完成,下料完成重量:{RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight}"); | 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); | 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<DevicePar>.Data.deviceParModels.ToArray(), p => p.MaterialName == DeviceInquire.GetInstance.GetDevice(i).DeviceName); | int iIndex = Array.FindIndex(Json<DevicePar>.Data.deviceParModels.ToArray(), p => p.MaterialName == DeviceInquire.GetInstance.GetDevice(i).DeviceName); | ||||
if (iIndex >= 0) | if (iIndex >= 0) | ||||
{ | { | ||||
//如果偏差过大则报警。 | |||||
if (Math.Abs(Json<DevicePar>.Data.deviceParModels.ElementAt(iIndex).ErrorRange) < AlarmRange) | if (Math.Abs(Json<DevicePar>.Data.deviceParModels.ElementAt(iIndex).ErrorRange) < AlarmRange) | ||||
{ | { | ||||
HKDevice.HK_PLC_S7.Write("DB44.DBX3.0", true); | HKDevice.HK_PLC_S7.Write("DB44.DBX3.0", true); | ||||
@@ -622,6 +655,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
}); | }); | ||||
} | } | ||||
} | } | ||||
//对海科PLC写入味魔方配料完成。 | |||||
if (i >= 1 && i <= 8) | if (i >= 1 && i <= 8) | ||||
{ | { | ||||
string commInfo = HKDevice.HK_PLC_S7.Write("DB4.DBX12." + (i - 1), true).IsSuccess.ToString(); | 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<bool>("DB3.DBX6." + recipeNum).Content; | bool DosingComple = HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX6." + recipeNum).Content; | ||||
if ((RTrig.GetInstance("配方配料完成").Start(DosingComple)) || (GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] > 0 && DosingComple)) | 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.RecipeDosingCompleNum = GVL_SmallStation.GetInstance.RecipeDosingCompleNum + 1; | ||||
GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = 0; | GVL_SmallStation.GetInstance.StockBinDosingIssue[recipeNum] = 0; | ||||
if (GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum] > 0) | if (GVL_SmallStation.GetInstance.RecipeStockBinDosing[recipeNum] > 0) | ||||
{ | { | ||||
@@ -661,6 +698,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
} | } | ||||
GVL_SmallStation.GetInstance.WindSendDosing = false; | GVL_SmallStation.GetInstance.WindSendDosing = false; | ||||
//移除配方。 | |||||
App.Current.Dispatcher.Invoke(() => | App.Current.Dispatcher.Invoke(() => | ||||
{ | { | ||||
Json<RemoteRecipeDataColl>.Data.Recipes.Remove(res); | Json<RemoteRecipeDataColl>.Data.Recipes.Remove(res); | ||||
@@ -689,6 +727,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 料仓的位置和原料名称的对应 | /// 料仓的位置和原料名称的对应 | ||||
/// </summary> | /// </summary> | ||||
@@ -706,6 +745,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// PLC的DB3变量列表。初始化PLC读取DB块变量以及流程变量数据。 | /// PLC的DB3变量列表。初始化PLC读取DB块变量以及流程变量数据。 | ||||
/// </summary> | /// </summary> | ||||
@@ -728,8 +768,6 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
} | } | ||||
} | } | ||||
foreach (PropertyInfo item in typeof(GVL_SmallStation).GetProperties()) | foreach (PropertyInfo item in typeof(GVL_SmallStation).GetProperties()) | ||||
{ | { | ||||
if (Attribute.IsDefined(item, typeof(VarCommAttribute))) | if (Attribute.IsDefined(item, typeof(VarCommAttribute))) | ||||
@@ -747,6 +785,7 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 注册需要用到的委托,主要是用于手动控制的。 | /// 注册需要用到的委托,主要是用于手动控制的。 | ||||
/// </summary> | /// </summary> | ||||
@@ -951,8 +990,6 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write<bool>("DB5.DBX5.2", true); }), "StartAxis2Command", true); | ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write<bool>("DB5.DBX5.2", true); }), "StartAxis2Command", true); | ||||
ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write<bool>("DB5.DBX5.2", false); }), "StopAxis2Command", true); | ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write<bool>("DB5.DBX5.2", false); }), "StopAxis2Command", true); | ||||
//将本地配方发送到西门子配方里,执行配料 | //将本地配方发送到西门子配方里,执行配料 | ||||
ActionManage.GetInstance.Register(new Action<Object>((res) => | ActionManage.GetInstance.Register(new Action<Object>((res) => | ||||
{ | { | ||||
@@ -1112,8 +1149,8 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
HKDevice.HK_PLC_S7.Write("DB4.DBB1", (byte)Value); | HKDevice.HK_PLC_S7.Write("DB4.DBB1", (byte)Value); | ||||
} | } | ||||
}), "RobotSetProgramNum", true); | }), "RobotSetProgramNum", true); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 连接海科PLC,并开启重连线程。 | /// 连接海科PLC,并开启重连线程。 | ||||
/// </summary> | /// </summary> | ||||
@@ -1154,7 +1191,6 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
{ | { | ||||
} | } | ||||
Thread.Sleep(50); | Thread.Sleep(50); | ||||
}), "设备连接", true); | }), "设备连接", true); | ||||
} | } | ||||
@@ -1243,4 +1279,4 @@ namespace BPASmartClient.FoodStationTest.Model | |||||
GVL_SmallStation.GetInstance.RawMaterialsNameCode.TryAdd("0060", "孜然油"); | GVL_SmallStation.GetInstance.RawMaterialsNameCode.TryAdd("0060", "孜然油"); | ||||
} | } | ||||
} | } | ||||
} | |||||
} |
@@ -2,6 +2,9 @@ | |||||
namespace BPASmartClient.FoodStationTest.Model | namespace BPASmartClient.FoodStationTest.Model | ||||
{ | { | ||||
/// <summary> | |||||
/// 料仓报警信息。 | |||||
/// </summary> | |||||
public class AlarmInfo | public class AlarmInfo | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -2,6 +2,9 @@ | |||||
namespace BPASmartClient.FoodStationTest.Model | namespace BPASmartClient.FoodStationTest.Model | ||||
{ | { | ||||
/// <summary> | |||||
/// 味魔方当前状态。 | |||||
/// </summary> | |||||
public class DeviceCurrentStatus : ObservableObject | public class DeviceCurrentStatus : ObservableObject | ||||
{ | { | ||||
@@ -2,6 +2,9 @@ | |||||
namespace BPASmartClient.FoodStationTest.Model | namespace BPASmartClient.FoodStationTest.Model | ||||
{ | { | ||||
/// <summary> | |||||
/// 本地模拟配方集合。 | |||||
/// </summary> | |||||
internal class LocalRecipeDataColl | internal class LocalRecipeDataColl | ||||
{ | { | ||||
public ObservableCollection<RemoteRecipeData> Recipes { get; set; } = new ObservableCollection<RemoteRecipeData>(); | public ObservableCollection<RemoteRecipeData> Recipes { get; set; } = new ObservableCollection<RemoteRecipeData>(); | ||||
@@ -26,55 +26,6 @@ | |||||
HorizontalAlignment="left" | HorizontalAlignment="left" | ||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
Orientation="Horizontal"> | Orientation="Horizontal"> | ||||
<Button | |||||
Name="test1" | |||||
Width="200" | |||||
Height="40" | |||||
Margin="5" | |||||
Panel.ZIndex="0" | |||||
Command="{Binding Test1Command}" | |||||
Content="AGV送托盘完成" | |||||
FontSize="20" | |||||
Style="{StaticResource ImageButtonStyle}" | |||||
Visibility="{Binding VisibilityBtn1}" /> | |||||
<Button | |||||
Name="test2" | |||||
Width="200" | |||||
Height="40" | |||||
Margin="5" | |||||
Panel.ZIndex="0" | |||||
Command="{Binding Test2Command}" | |||||
Content="粉料仓配料完成" | |||||
FontSize="20" | |||||
Style="{StaticResource ImageButtonStyle}" | |||||
Visibility="{Binding VisibilityBtn2}" /> | |||||
<Button | |||||
Name="test3" | |||||
Width="200" | |||||
Height="40" | |||||
Margin="5" | |||||
Panel.ZIndex="0" | |||||
Command="{Binding Test3Command}" | |||||
Content="AGV取托盘完成" | |||||
FontSize="20" | |||||
Style="{StaticResource ImageButtonStyle}" | |||||
Visibility="{Binding VisibilityBtn3}" /> | |||||
<TextBlock | |||||
Width="100" | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" /> | |||||
<!--<Button | |||||
Width="200" | |||||
Height="40" | |||||
Margin="5" | |||||
Panel.ZIndex="0" | |||||
Command="{Binding Test5Command}" | |||||
Content="粉料仓提升到位" | |||||
FontSize="20" | |||||
Style="{StaticResource ImageButtonStyle}" />--> | |||||
<Button | <Button | ||||
Width="200" | Width="200" | ||||
Height="40" | Height="40" | ||||
@@ -151,13 +102,32 @@ | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<StackPanel Grid.Column="1" Orientation="Vertical"> | <StackPanel Grid.Column="1" Orientation="Vertical"> | ||||
</StackPanel> | |||||
<WrapPanel Grid.Row="0"> | |||||
<StackPanel Orientation="Horizontal"> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="海科PLC连接状态:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding HKPlcIsConnect}" /> | |||||
</StackPanel> | |||||
<StackPanel Orientation="Horizontal"> | <StackPanel Orientation="Horizontal"> | ||||
<TextBlock | <TextBlock | ||||
Margin="10,0,5,0" | Margin="10,0,5,0" | ||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
FontSize="25" | FontSize="25" | ||||
Foreground="#FF2AB2E7" | Foreground="#FF2AB2E7" | ||||
Text="海科plc心跳:" /> | |||||
Text="海科PLC心跳:" /> | |||||
<TextBlock | <TextBlock | ||||
Margin="10" | Margin="10" | ||||
HorizontalAlignment="Center" | HorizontalAlignment="Center" | ||||
@@ -166,22 +136,6 @@ | |||||
Foreground="#FF2AB2E7" | Foreground="#FF2AB2E7" | ||||
Text="{Binding Heartbeat}" /> | Text="{Binding Heartbeat}" /> | ||||
</StackPanel> | </StackPanel> | ||||
</StackPanel> | |||||
<WrapPanel Grid.Row="0"> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="海科plc连接状态:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding HKPlcIsConnect}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel Grid.Row="2"> | <WrapPanel Grid.Row="2"> | ||||
@@ -141,7 +141,7 @@ | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<Grid Grid.Row="0"> | <Grid Grid.Row="0"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition Width="2*" /> | |||||
<ColumnDefinition Width="2.5*" /> | |||||
<ColumnDefinition Width="2*" /> | <ColumnDefinition Width="2*" /> | ||||
<ColumnDefinition Width="2*" /> | <ColumnDefinition Width="2*" /> | ||||
<ColumnDefinition Width="2*" /> | <ColumnDefinition Width="2*" /> | ||||
@@ -189,7 +189,7 @@ | |||||
<DataTemplate> | <DataTemplate> | ||||
<Grid x:Name="grb" Height="25"> | <Grid x:Name="grb" Height="25"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition Width="2*" /> | |||||
<ColumnDefinition Width="2.5*" /> | |||||
<ColumnDefinition Width="2*" /> | <ColumnDefinition Width="2*" /> | ||||
<ColumnDefinition Width="2*" /> | <ColumnDefinition Width="2*" /> | ||||
<ColumnDefinition Width="2*" /> | <ColumnDefinition Width="2*" /> | ||||
@@ -20,54 +20,7 @@ namespace BPASmartClient.FoodStationTest.ViewModel | |||||
public ManualFlowViewModel() | public ManualFlowViewModel() | ||||
{ | { | ||||
time = GVL_SmallStation.GetInstance.Time; | time = GVL_SmallStation.GetInstance.Time; | ||||
Test1Command = new RelayCommand(() => | |||||
{ | |||||
if (DateTime.Now.Subtract(GVL_SmallStation.GetInstance.LatestIssueRecipe).TotalSeconds <= 10) | |||||
{ | |||||
NoticeDemoViewModel.OpenMsg(EnumPromptType.Error, App.MainWindow, "提示", $"最后一次手动下发订单间隔不足10秒,请稍后再点击。"); | |||||
return; | |||||
} | |||||
ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX8.0", PlcVarType = PlcVarType.Bool, Value = true }); | |||||
//Thread.Sleep(200); | |||||
//ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX8.0", PlcVarType = PlcVarType.Bool, Value = false }); | |||||
//GVL_SmallStation.GetInstance.AGV_PutTray1Finish = true; | |||||
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,AGV送托盘完成"); | |||||
VisibilityBtn1 = Visibility.Hidden; | |||||
VisibilityBtn2 = Visibility.Visible; | |||||
VisibilityBtn3 = Visibility.Hidden; | |||||
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,AGV送托盘完成"); | |||||
}); | |||||
Test2Command = new RelayCommand(() => | |||||
{ | |||||
ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX4.0", PlcVarType = PlcVarType.Bool, Value = true }); | |||||
//Thread.Sleep(200); | |||||
//ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX4.0", PlcVarType = PlcVarType.Bool, Value = false }); | |||||
//GVL_SmallStation.GetInstance.WindSendDosingComple = true; | |||||
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,粉料仓配料完成"); | |||||
VisibilityBtn1 = Visibility.Hidden; | |||||
VisibilityBtn2 = Visibility.Hidden; | |||||
VisibilityBtn3 = Visibility.Visible; | |||||
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,粉料仓配料完成"); | |||||
}); | |||||
Test3Command = new RelayCommand(() => | |||||
{ | |||||
ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX10.0", PlcVarType = PlcVarType.Bool, Value = true }); | |||||
//Thread.Sleep(200); | |||||
//ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX10.0", PlcVarType = PlcVarType.Bool, Value = false }); | |||||
//GVL_SmallStation.GetInstance.AGV_GetTray1Finish = true; | |||||
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,AGV取托盘完成"); | |||||
VisibilityBtn1 = Visibility.Visible; | |||||
VisibilityBtn2 = Visibility.Hidden; | |||||
VisibilityBtn3 = Visibility.Hidden; | |||||
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,AGV取托盘完成"); | |||||
}); | |||||
Test4Command = new RelayCommand(() => | Test4Command = new RelayCommand(() => | ||||
{ | { | ||||
ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX1.5", PlcVarType = PlcVarType.Bool, Value = true }); | ActionManage.GetInstance.Send("PLCWrite", new HKDeviceWrite() { Address = "DB4.DBX1.5", PlcVarType = PlcVarType.Bool, Value = true }); | ||||
@@ -75,16 +28,7 @@ namespace BPASmartClient.FoodStationTest.ViewModel | |||||
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,气缸收紧错位复位"); | MessageNotify.GetInstance.ShowUserLog("手动点击按钮,气缸收紧错位复位"); | ||||
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,气缸收紧错位复位"); | NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,气缸收紧错位复位"); | ||||
}); | }); | ||||
//Test5Command = new RelayCommand(() => | |||||
//{ | |||||
// GVL_SmallStation.GetInstance.WindSendAllowAGVPutGet = true; | |||||
// MessageNotify.GetInstance.ShowUserLog("手动点击按钮,粉料仓提升到位"); | |||||
//}); | |||||
Test6Command = new RelayCommand(() => | |||||
{ | |||||
ActionManage.GetInstance.Send("AGVPutTrayFinish"); | |||||
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,AGV放货架流程完成"); | |||||
}); | |||||
CLearRecipeInfo = new RelayCommand(() => | CLearRecipeInfo = new RelayCommand(() => | ||||
{ | { | ||||
App.Current.Dispatcher.Invoke(() => | App.Current.Dispatcher.Invoke(() => | ||||
@@ -143,12 +87,7 @@ namespace BPASmartClient.FoodStationTest.ViewModel | |||||
}); | }); | ||||
StockbinDosingCompleClear = new RelayCommand(() => | StockbinDosingCompleClear = new RelayCommand(() => | ||||
{ | { | ||||
//for (int i = 0; i < GVL_SmallStation.GetInstance.StockInDosingComple.Length; i++) | |||||
//{ | |||||
// GVL_SmallStation.GetInstance.StockInDosingComple[i] = false; | |||||
//} | |||||
//MessageNotify.GetInstance.ShowUserLog($"手动点击按钮,清除所有手动配料完成信号"); | |||||
//NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"清除所有手动配料完成信号"); | |||||
}); | }); | ||||
CancelRecipeCommand = new RelayCommand(() => | CancelRecipeCommand = new RelayCommand(() => | ||||
{ | { | ||||
@@ -297,12 +236,9 @@ namespace BPASmartClient.FoodStationTest.ViewModel | |||||
}); | }); | ||||
HKPlcIsConnect = ProcessControl.GetInstance.HKDevice.IsConnected; | HKPlcIsConnect = ProcessControl.GetInstance.HKDevice.IsConnected; | ||||
} | } | ||||
public RelayCommand Test1Command { get; set; } | |||||
public RelayCommand Test2Command { get; set; } | |||||
public RelayCommand Test3Command { get; set; } | |||||
public RelayCommand Test4Command { get; set; } | public RelayCommand Test4Command { get; set; } | ||||
public RelayCommand Test5Command { get; set; } | |||||
public RelayCommand Test6Command { get; set; } | |||||
public RelayCommand TimeSet { get; set; } | public RelayCommand TimeSet { get; set; } | ||||
public RelayCommand CompletedNumResetCommand { get; set; } | public RelayCommand CompletedNumResetCommand { get; set; } | ||||
public static bool Heartbeat { get { return _mHeartbeat; } set { _mHeartbeat = value; OnStaticPropertyChanged(); } } | public static bool Heartbeat { get { return _mHeartbeat; } set { _mHeartbeat = value; OnStaticPropertyChanged(); } } | ||||
@@ -364,16 +300,9 @@ namespace BPASmartClient.FoodStationTest.ViewModel | |||||
private static int _RecipeDosingCompleNum { get; set; } | private static int _RecipeDosingCompleNum { get; set; } | ||||
public static int RecipeDosingCompleNum { get { return _RecipeDosingCompleNum; } set { _RecipeDosingCompleNum = value; OnStaticPropertyChanged(); } } | public static int RecipeDosingCompleNum { get { return _RecipeDosingCompleNum; } set { _RecipeDosingCompleNum = value; OnStaticPropertyChanged(); } } | ||||
public static Visibility VisibilityBtn1 { get { return _VisibilityBtn1; } set { _VisibilityBtn1 = value; OnStaticPropertyChanged(); } } | |||||
private static Visibility _VisibilityBtn1 = Visibility.Visible; | |||||
public static Visibility VisibilityBtn2 { get { return _VisibilityBtn2; } set { _VisibilityBtn2 = value; OnStaticPropertyChanged(); } } | |||||
private static Visibility _VisibilityBtn2 = Visibility.Hidden; | |||||
public static Visibility VisibilityBtn3 { get { return _VisibilityBtn3; } set { _VisibilityBtn3 = value; OnStaticPropertyChanged(); } } | |||||
public string CancelRecipeCode { get { return _CancelRecipeCode; } set { _CancelRecipeCode = value; OnPropertyChanged(); } } | public string CancelRecipeCode { get { return _CancelRecipeCode; } set { _CancelRecipeCode = value; OnPropertyChanged(); } } | ||||
public string _CancelRecipeCode { get; set; } | public string _CancelRecipeCode { get; set; } | ||||
private static Visibility _VisibilityBtn3 = Visibility.Hidden; | |||||
} | } | ||||
@@ -214,6 +214,13 @@ namespace BPASmartClient.JXJFoodBigStation | |||||
AssemblyName = "BPASmartClient.CustomResource", | AssemblyName = "BPASmartClient.CustomResource", | ||||
ToggleWindowPath = "Pages.View.PasswordChangeView" | ToggleWindowPath = "Pages.View.PasswordChangeView" | ||||
}); | }); | ||||
UserManager.Add(new SubMenumodel() | |||||
{ | |||||
SubMenuName = "用户管理", | |||||
SubMenuPermission = new Permission[] { Permission.管理员 }, | |||||
AssemblyName = "BPASmartClient.CustomResource", | |||||
ToggleWindowPath = "Pages.View.UserManagerView" | |||||
}); | |||||
MenuManage.GetInstance.menuModels.Add(new MenuModel() | MenuManage.GetInstance.menuModels.Add(new MenuModel() | ||||
{ | { | ||||
@@ -104,11 +104,11 @@ | |||||
</Grid> | </Grid> | ||||
<Grid Grid.Column="1" Margin="5"> | <Grid Grid.Column="1" Margin="5"> | ||||
<TextBox | <TextBox | ||||
Width="200" | |||||
HorizontalAlignment="Center" | HorizontalAlignment="Center" | ||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
HorizontalContentAlignment="Center" | HorizontalContentAlignment="Center" | ||||
VerticalContentAlignment="Center" | VerticalContentAlignment="Center" | ||||
Width="200" | |||||
FontSize="16" | FontSize="16" | ||||
Text="{Binding RawMaterialName}" /> | Text="{Binding RawMaterialName}" /> | ||||
</Grid> | </Grid> | ||||
@@ -174,7 +174,7 @@ | |||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
FontSize="25" | FontSize="25" | ||||
Foreground="#FF2AB2E7" | Foreground="#FF2AB2E7" | ||||
Text="plc心跳:" /> | |||||
Text="PLC心跳:" /> | |||||
<TextBlock | <TextBlock | ||||
Margin="10" | Margin="10" | ||||
HorizontalAlignment="Center" | HorizontalAlignment="Center" | ||||
@@ -108,7 +108,7 @@ | |||||
Content="PLC配方清零" | Content="PLC配方清零" | ||||
FontSize="20" | FontSize="20" | ||||
Style="{StaticResource ImageButtonStyle}" /> | Style="{StaticResource ImageButtonStyle}" /> | ||||
<WrapPanel Margin="400,0"> | |||||
<WrapPanel Margin="10,0"> | |||||
<TextBlock | <TextBlock | ||||
Margin="10,0,5,0" | Margin="10,0,5,0" | ||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
@@ -116,8 +116,7 @@ | |||||
Foreground="#FF2AB2E7" | Foreground="#FF2AB2E7" | ||||
Text="订单号:" /> | Text="订单号:" /> | ||||
<TextBox | <TextBox | ||||
Width="300" | |||||
Margin="5" | |||||
Width="241" | |||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
FontSize="24" | FontSize="24" | ||||
Text="{Binding CancelRecipeCode}" /> | Text="{Binding CancelRecipeCode}" /> | ||||
@@ -157,7 +156,7 @@ | |||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
FontSize="25" | FontSize="25" | ||||
Foreground="#FF2AB2E7" | Foreground="#FF2AB2E7" | ||||
Text="海科plc心跳:" /> | |||||
Text="海科PLC心跳:" /> | |||||
<TextBlock | <TextBlock | ||||
Margin="10" | Margin="10" | ||||
HorizontalAlignment="Center" | HorizontalAlignment="Center" | ||||
@@ -173,7 +172,7 @@ | |||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
FontSize="25" | FontSize="25" | ||||
Foreground="#FF2AB2E7" | Foreground="#FF2AB2E7" | ||||
Text="西门子 连接状态:" /> | |||||
Text="西门子PLC连接状态:" /> | |||||
<TextBlock | <TextBlock | ||||
Margin="10" | Margin="10" | ||||
HorizontalAlignment="Center" | HorizontalAlignment="Center" | ||||
@@ -186,7 +185,7 @@ | |||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
FontSize="25" | FontSize="25" | ||||
Foreground="#FF2AB2E7" | Foreground="#FF2AB2E7" | ||||
Text="海科plc连接状态:" /> | |||||
Text="海科PLC连接状态:" /> | |||||
<TextBlock | <TextBlock | ||||
Margin="10" | Margin="10" | ||||
HorizontalAlignment="Center" | HorizontalAlignment="Center" | ||||
@@ -199,7 +198,7 @@ | |||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
FontSize="25" | FontSize="25" | ||||
Foreground="#FF2AB2E7" | Foreground="#FF2AB2E7" | ||||
Text="风送plc连接状态:" /> | |||||
Text="风送PLC连接状态:" /> | |||||
<TextBlock | <TextBlock | ||||
Margin="10" | Margin="10" | ||||
HorizontalAlignment="Center" | HorizontalAlignment="Center" | ||||
@@ -246,9 +245,8 @@ | |||||
Foreground="#FF2AB2E7" | Foreground="#FF2AB2E7" | ||||
Text="ms" /> | Text="ms" /> | ||||
<Button | <Button | ||||
Width="100" | |||||
Width="179" | |||||
Height="40" | Height="40" | ||||
Margin="5,0,5,0" | |||||
Panel.ZIndex="0" | Panel.ZIndex="0" | ||||
Command="{Binding TimeSet}" | Command="{Binding TimeSet}" | ||||
Content="设置" | Content="设置" | ||||
@@ -449,7 +447,7 @@ | |||||
Foreground="#FF2AB2E7" | Foreground="#FF2AB2E7" | ||||
Text="料仓号:" /> | Text="料仓号:" /> | ||||
<TextBox | <TextBox | ||||
Width="50" | |||||
Width="90" | |||||
Margin="10" | Margin="10" | ||||
HorizontalAlignment="Center" | HorizontalAlignment="Center" | ||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
@@ -497,7 +495,7 @@ | |||||
Margin="5,0,5,0" | Margin="5,0,5,0" | ||||
Panel.ZIndex="0" | Panel.ZIndex="0" | ||||
Command="{Binding CompletedNumResetCommand}" | Command="{Binding CompletedNumResetCommand}" | ||||
Content="完成数目清零" | |||||
Content="配方完成数目清零" | |||||
FontSize="20" | FontSize="20" | ||||
Style="{StaticResource ImageButtonStyle}" /> | Style="{StaticResource ImageButtonStyle}" /> | ||||
</WrapPanel> | </WrapPanel> | ||||
@@ -1,12 +1,14 @@ | |||||
<UserControl x:Class="BPASmartClient.JXJFoodSmallStation.View.RobotView" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:pry="clr-namespace:BPASmartClient.CustomResource.UserControls;assembly=BPASmartClient.CustomResource" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:vm="clr-namespace:BPASmartClient.JXJFoodSmallStation.ViewModel" | |||||
mc:Ignorable="d" | |||||
d:DesignHeight="1080" d:DesignWidth="1920"> | |||||
<UserControl | |||||
x:Class="BPASmartClient.JXJFoodSmallStation.View.RobotView" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:pry="clr-namespace:BPASmartClient.CustomResource.UserControls;assembly=BPASmartClient.CustomResource" | |||||
xmlns:vm="clr-namespace:BPASmartClient.JXJFoodSmallStation.ViewModel" | |||||
d:DesignHeight="1080" | |||||
d:DesignWidth="1920" | |||||
mc:Ignorable="d"> | |||||
<UserControl.Resources> | <UserControl.Resources> | ||||
<Style x:Key="radioButtonStyle" TargetType="RadioButton"> | <Style x:Key="radioButtonStyle" TargetType="RadioButton"> | ||||
<Setter Property="Template"> | <Setter Property="Template"> | ||||
@@ -45,45 +47,101 @@ | |||||
</Style> | </Style> | ||||
</UserControl.Resources> | </UserControl.Resources> | ||||
<UserControl.DataContext> | <UserControl.DataContext> | ||||
<vm:RobotViewModel/> | |||||
<vm:RobotViewModel /> | |||||
</UserControl.DataContext> | </UserControl.DataContext> | ||||
<Grid Margin="10"> | <Grid Margin="10"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition Width="4*"/> | |||||
<ColumnDefinition Width="4*"/> | |||||
<ColumnDefinition Width="4*"/> | |||||
<ColumnDefinition Width="4*" /> | |||||
<ColumnDefinition Width="4*" /> | |||||
<ColumnDefinition Width="4*" /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<!--#region 表格标题栏设置--> | <!--#region 表格标题栏设置--> | ||||
<Grid> | <Grid> | ||||
<StackPanel> | <StackPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人自动运行模式:"></TextBlock> | |||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsAutoMode}"></TextBlock> | |||||
<TextBlock | |||||
Margin="5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="机器人自动运行模式:" /> | |||||
<TextBlock | |||||
Margin="5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="{Binding RobotIsAutoMode}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人正在自动运行:"></TextBlock> | |||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsAutoRun}"></TextBlock> | |||||
<TextBlock | |||||
Margin="5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="机器人正在自动运行:" /> | |||||
<TextBlock | |||||
Margin="5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="{Binding RobotIsAutoRun}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人停止状态:"></TextBlock> | |||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsStop}"></TextBlock> | |||||
<TextBlock | |||||
Margin="5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="机器人停止状态:" /> | |||||
<TextBlock | |||||
Margin="49,5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="{Binding RobotIsStop}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人运行正常:"></TextBlock> | |||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsRun}"></TextBlock> | |||||
<TextBlock | |||||
Margin="5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="机器人运行正常:" /> | |||||
<TextBlock | |||||
Margin="49,5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="{Binding RobotIsRun}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人运行故障:"></TextBlock> | |||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsAlarm}"></TextBlock> | |||||
<TextBlock | |||||
Margin="5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="机器人运行故障:" /> | |||||
<TextBlock | |||||
Margin="49,5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="{Binding RobotIsAlarm}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人在Home点:"></TextBlock> | |||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding RobotIsHomed}"></TextBlock> | |||||
<TextBlock | |||||
Margin="5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="机器人在Home点:" /> | |||||
<TextBlock | |||||
Margin="30,5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="{Binding RobotIsHomed}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="机器人运行的程序号:"></TextBlock> | |||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="{Binding IsRunProgramNum}"></TextBlock> | |||||
<TextBlock | |||||
Margin="5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="机器人运行的程序号:" /> | |||||
<TextBlock | |||||
Margin="5" | |||||
FontSize="22" | |||||
Foreground="Aqua" | |||||
Text="{Binding IsRunProgramNum}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<!--<WrapPanel> | <!--<WrapPanel> | ||||
<TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="抓空桶完成:"></TextBlock> | <TextBlock Margin="5" FontSize="22" Foreground="Aqua" Text="抓空桶完成:"></TextBlock> | ||||
@@ -105,37 +163,37 @@ | |||||
</Grid> | </Grid> | ||||
<Grid Grid.Column="1"> | <Grid Grid.Column="1"> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition Height="1*"></RowDefinition> | |||||
<RowDefinition Height="7*"></RowDefinition> | |||||
<RowDefinition Height="1*" /> | |||||
<RowDefinition Height="7*" /> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<Grid> | <Grid> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Button | <Button | ||||
Margin="20,15" | Margin="20,15" | ||||
Background="LightGreen" | |||||
Command="{Binding SystemStart}" | Command="{Binding SystemStart}" | ||||
Content="启动" | Content="启动" | ||||
FontSize="40" | |||||
Background="LightGreen"></Button> | |||||
FontSize="40" /> | |||||
<Button | <Button | ||||
Grid.Column="1" | Grid.Column="1" | ||||
Margin="20,15" | Margin="20,15" | ||||
Background="OrangeRed" | |||||
Command="{Binding SystemStop}" | Command="{Binding SystemStop}" | ||||
Content="停止" | Content="停止" | ||||
FontSize="40" | |||||
Background="OrangeRed"></Button> | |||||
FontSize="40" /> | |||||
<Button | <Button | ||||
Grid.Column="2" | Grid.Column="2" | ||||
Grid.ColumnSpan="2" | Grid.ColumnSpan="2" | ||||
Margin="20,15" | Margin="20,15" | ||||
Background="DodgerBlue" | |||||
Command="{Binding EStopReset}" | Command="{Binding EStopReset}" | ||||
Content="急停复位" | Content="急停复位" | ||||
FontSize="40" | |||||
Background="DodgerBlue"></Button> | |||||
FontSize="40" /> | |||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
<!--<Grid Grid.Column="2"> | <!--<Grid Grid.Column="2"> | ||||
@@ -190,7 +248,8 @@ | |||||
FontSize="32" | FontSize="32" | ||||
Style="{StaticResource ImageButtonStyle}"></Button> | Style="{StaticResource ImageButtonStyle}"></Button> | ||||
</Grid> | </Grid> | ||||
--><!--<ListView | |||||
--> | |||||
<!--<ListView | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Background="Transparent" | Background="Transparent" | ||||
BorderBrush="#00BEFA" | BorderBrush="#00BEFA" | ||||
@@ -264,7 +323,8 @@ | |||||
</Grid> | </Grid> | ||||
</DataTemplate> | </DataTemplate> | ||||
</ListView.ItemTemplate> | </ListView.ItemTemplate> | ||||
</ListView>--><!-- | |||||
</ListView>--> | |||||
<!-- | |||||
<Grid Grid.Row="1" Visibility="Hidden"> | <Grid Grid.Row="1" Visibility="Hidden"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition></ColumnDefinition> | <ColumnDefinition></ColumnDefinition> | ||||
@@ -165,6 +165,7 @@ | |||||
Content="西门子设备连接" | Content="西门子设备连接" | ||||
FontFamily="楷体" | FontFamily="楷体" | ||||
FontSize="20" | FontSize="20" | ||||
VerticalContentAlignment="Center" | |||||
Foreground="Aqua" | Foreground="Aqua" | ||||
IsChecked="{Binding SiemensConnect}" /> | IsChecked="{Binding SiemensConnect}" /> | ||||
<CheckBox | <CheckBox | ||||
@@ -173,6 +174,7 @@ | |||||
Content="粉料仓设备连接" | Content="粉料仓设备连接" | ||||
FontFamily="楷体" | FontFamily="楷体" | ||||
FontSize="20" | FontSize="20" | ||||
VerticalContentAlignment="Center" | |||||
Foreground="Aqua" | Foreground="Aqua" | ||||
IsChecked="{Binding WindSendConnect}" /> | IsChecked="{Binding WindSendConnect}" /> | ||||
<CheckBox | <CheckBox | ||||
@@ -181,6 +183,7 @@ | |||||
Content="小料站产线PLC设备连接" | Content="小料站产线PLC设备连接" | ||||
FontFamily="楷体" | FontFamily="楷体" | ||||
FontSize="20" | FontSize="20" | ||||
VerticalContentAlignment="Center" | |||||
Foreground="Aqua" | Foreground="Aqua" | ||||
IsChecked="{Binding HKPlcConnect}" /> | IsChecked="{Binding HKPlcConnect}" /> | ||||
@@ -190,6 +193,7 @@ | |||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
Content="屏蔽小料仓数量读取报警" | Content="屏蔽小料仓数量读取报警" | ||||
FontFamily="楷体" | FontFamily="楷体" | ||||
VerticalContentAlignment="Center" | |||||
FontSize="20" | FontSize="20" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
IsChecked="{Binding ShieldStockbinAlarm}" /> | IsChecked="{Binding ShieldStockbinAlarm}" /> | ||||
@@ -276,7 +280,7 @@ | |||||
Text="伺服1速度(进桶侧)" /> | Text="伺服1速度(进桶侧)" /> | ||||
<TextBox | <TextBox | ||||
Width="50" | Width="50" | ||||
Margin="10" | |||||
Margin="33,10" | |||||
FontSize="16" | FontSize="16" | ||||
Text="{Binding Axis1Speed}" /> | Text="{Binding Axis1Speed}" /> | ||||
<TextBlock | <TextBlock | ||||
@@ -295,7 +299,7 @@ | |||||
Text="伺服2速度(出桶侧)" /> | Text="伺服2速度(出桶侧)" /> | ||||
<TextBox | <TextBox | ||||
Width="50" | Width="50" | ||||
Margin="10" | |||||
Margin="33,10" | |||||
FontSize="16" | FontSize="16" | ||||
Text="{Binding Axis2Speed}" /> | Text="{Binding Axis2Speed}" /> | ||||
<TextBlock | <TextBlock | ||||