@@ -37,7 +37,7 @@ namespace BPASmartClient.JXJFoodSmallStation | |||||
} | } | ||||
BPASmartClient.Helper.SystemHelper.GetInstance.CreateDesktopShortcut(); | BPASmartClient.Helper.SystemHelper.GetInstance.CreateDesktopShortcut(); | ||||
base.OnStartup(e); | base.OnStartup(e); | ||||
MenuInit(); | MenuInit(); | ||||
DataInit(); | DataInit(); | ||||
Init(); | Init(); | ||||
@@ -53,7 +53,7 @@ namespace BPASmartClient.JXJFoodSmallStation | |||||
mv.Close(); | mv.Close(); | ||||
MainWindow = mv; | MainWindow = mv; | ||||
} | } | ||||
private async void Init() | |||||
private async void Init() | |||||
{ | { | ||||
await Task.Run(new Action(() => | await Task.Run(new Action(() => | ||||
{ | { | ||||
@@ -153,7 +153,7 @@ namespace BPASmartClient.JXJFoodSmallStation | |||||
AssemblyName = "BPASmartClient.JXJFoodSmallStation", | AssemblyName = "BPASmartClient.JXJFoodSmallStation", | ||||
ToggleWindowPath = "View.BomOfMaterialView" | ToggleWindowPath = "View.BomOfMaterialView" | ||||
}); | }); | ||||
MenuManage.GetInstance.menuModels.Add(new MenuModel() | MenuManage.GetInstance.menuModels.Add(new MenuModel() | ||||
{ | { | ||||
MainMenuIcon = "", | MainMenuIcon = "", | ||||
@@ -187,7 +187,7 @@ namespace BPASmartClient.JXJFoodSmallStation | |||||
AssemblyName = "BPASmartClient.JXJFoodSmallStation", | AssemblyName = "BPASmartClient.JXJFoodSmallStation", | ||||
ToggleWindowPath = "View.ManualFlowView" | ToggleWindowPath = "View.ManualFlowView" | ||||
}); | |||||
}); | |||||
ManualControl.Add(new SubMenumodel() | ManualControl.Add(new SubMenumodel() | ||||
{ | { | ||||
SubMenuName = "机器人设备控制", | SubMenuName = "机器人设备控制", | ||||
@@ -90,7 +90,7 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
GVL_SmallStation.GetInstance.HeartBeatToPlc = !GVL_SmallStation.GetInstance.HeartBeatToPlc; | GVL_SmallStation.GetInstance.HeartBeatToPlc = !GVL_SmallStation.GetInstance.HeartBeatToPlc; | ||||
HKDevice.HK_PLC_S7.Write("DB4.DBX0.0", GVL_SmallStation.GetInstance.HeartBeatToPlc); | HKDevice.HK_PLC_S7.Write("DB4.DBX0.0", GVL_SmallStation.GetInstance.HeartBeatToPlc); | ||||
GVL_SmallStation.GetInstance.HeartBeatFromPlc = HKDevice.HK_PLC_S7.Read<bool>("DB45.DBX0.0"); | GVL_SmallStation.GetInstance.HeartBeatFromPlc = HKDevice.HK_PLC_S7.Read<bool>("DB45.DBX0.0"); | ||||
if (DeviceInquire.GetInstance.devices.Count < 15 && HKDevice.IsConnected && Json<RemoteRecipeDataColl>.Data.Recipes.Count > 0 && GVL_SmallStation.GetInstance.DisEnableStockBinAlarm == false && DateTime.Now.Subtract(StockBinAlarmTime).TotalSeconds >= 60 & !GVL_SmallStation.GetInstance.DisEnableStockAlarm) | |||||
if (DeviceInquire.GetInstance.devices.Count < 15 && HKDevice.IsConnected && Json<RemoteRecipeDataColl>.Data.Recipes.Count > 0 && GVL_SmallStation.GetInstance.DisEnableStockBinAlarm == false && DateTime.Now.Subtract(StockBinAlarmTime).TotalSeconds >= 60 & !GVL_SmallStation.GetInstance.DisEnableStockAlarm) | |||||
{ | { | ||||
HKDevice.HK_PLC_S7.Write("DB44.DBX3.0", true); | HKDevice.HK_PLC_S7.Write("DB44.DBX3.0", true); | ||||
App.Current.Dispatcher.Invoke(() => | App.Current.Dispatcher.Invoke(() => | ||||
@@ -268,7 +268,7 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
//GVL_SmallStation.GetInstance.Station2Cylinder = HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX2.4"); | //GVL_SmallStation.GetInstance.Station2Cylinder = HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX2.4"); | ||||
//GVL_SmallStation.GetInstance.RobotStatus = HKDevice.HK_PLC_S7.Read<ushort>("DB3.DBW100"); | //GVL_SmallStation.GetInstance.RobotStatus = HKDevice.HK_PLC_S7.Read<ushort>("DB3.DBW100"); | ||||
//GVL_SmallStation.GetInstance.RobotProgramNum = HKDevice.HK_PLC_S7.Read<byte>("DB3.DBB102"); | //GVL_SmallStation.GetInstance.RobotProgramNum = HKDevice.HK_PLC_S7.Read<byte>("DB3.DBB102"); | ||||
if (Json<RemoteRecipeDataColl>.Data.Recipes.Count <= 3) | |||||
if (Json<RemoteRecipeDataColl>.Data.Recipes.Count <= 3) | |||||
{ | { | ||||
GVL_SmallStation.GetInstance.IsAllowSiemensSendRecipe = true; | GVL_SmallStation.GetInstance.IsAllowSiemensSendRecipe = true; | ||||
} | } | ||||
@@ -312,11 +312,11 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
GVL_SmallStation.GetInstance.AGV_PutTray1Finish = false; | GVL_SmallStation.GetInstance.AGV_PutTray1Finish = false; | ||||
} | } | ||||
ushort AGV_Get = (ushort)SiemensDevice.XL_Status.AgvFinishGet; | ushort AGV_Get = (ushort)SiemensDevice.XL_Status.AgvFinishGet; | ||||
if (AGV_Get.Get16bitValue(1)) | |||||
if (AGV_Get.Get16bitValue(1)) | |||||
{ | { | ||||
GVL_SmallStation.GetInstance.AGV_GetTray1Finish = true; | |||||
GVL_SmallStation.GetInstance.AGV_GetTray1Finish = true; | |||||
} | } | ||||
else | |||||
else | |||||
{ | { | ||||
GVL_SmallStation.GetInstance.AGV_GetTray1Finish = false; | GVL_SmallStation.GetInstance.AGV_GetTray1Finish = false; | ||||
} | } | ||||
@@ -331,12 +331,12 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
{ | { | ||||
string code = GVL_SmallStation.GetInstance.Order_CancelRecipeCode; | string code = GVL_SmallStation.GetInstance.Order_CancelRecipeCode; | ||||
int index = Array.FindIndex(Json<RemoteRecipeDataColl>.Data.Recipes.ToArray(), p => p.RecipeCode == code); | int index = Array.FindIndex(Json<RemoteRecipeDataColl>.Data.Recipes.ToArray(), p => p.RecipeCode == code); | ||||
int[] cnt = new int[5] { -1,-1,-1,-1,-1}; | |||||
int[] cnt = new int[5] { -1, -1, -1, -1, -1 }; | |||||
int index1 = -1; | int index1 = -1; | ||||
for (int i = 0; i < 5; i++) | for (int i = 0; i < 5; i++) | ||||
{ | { | ||||
cnt[i]= Array.FindIndex(RecipeQueueTray[i].ToArray(), p => p == code); | |||||
if (cnt[i] >= 0) | |||||
cnt[i] = Array.FindIndex(RecipeQueueTray[i].ToArray(), p => p == code); | |||||
if (cnt[i] >= 0) | |||||
{ | { | ||||
index1 = i; | index1 = i; | ||||
} | } | ||||
@@ -351,7 +351,7 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
if (index1>=0) | |||||
if (index1 >= 0) | |||||
{ | { | ||||
GVL_SmallStation.GetInstance.OrderCancelStep = 1; | GVL_SmallStation.GetInstance.OrderCancelStep = 1; | ||||
} | } | ||||
@@ -378,9 +378,9 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
} | } | ||||
break; | break; | ||||
case 2: | case 2: | ||||
if (HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX42."+index1)) | |||||
if (HKDevice.HK_PLC_S7.Read<bool>("DB3.DBX42." + index1)) | |||||
{ | { | ||||
if (GVL_SmallStation.GetInstance.Station1Cylinder == false) | |||||
if (GVL_SmallStation.GetInstance.Station1Cylinder == false) | |||||
{ | { | ||||
GVL_SmallStation.GetInstance.OrderCancelStep = 3; | GVL_SmallStation.GetInstance.OrderCancelStep = 3; | ||||
MessageNotify.GetInstance.ShowRunLog($"PLC正在执行配料流程,取消订单:{code}"); | MessageNotify.GetInstance.ShowRunLog($"PLC正在执行配料流程,取消订单:{code}"); | ||||
@@ -541,7 +541,7 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
{ | { | ||||
for (int i = 0; i < 5; i++) | for (int i = 0; i < 5; i++) | ||||
{ | { | ||||
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)) | ||||
{ | { | ||||
@@ -549,9 +549,9 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
MessageNotify.GetInstance.ShowRunLog($"本地配方配料 ,不使用小料配料,配方{data.RecipeCode},加入配方{i}"); | MessageNotify.GetInstance.ShowRunLog($"本地配方配料 ,不使用小料配料,配方{data.RecipeCode},加入配方{i}"); | ||||
} | } | ||||
} | } | ||||
else if(GVL_SmallStation.GetInstance.PlcAllowIssueRecipe[i]) | |||||
else if (GVL_SmallStation.GetInstance.PlcAllowIssueRecipe[i]) | |||||
{ | { | ||||
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); | ||||
MessageNotify.GetInstance.ShowRunLog($"本地配方配料 ,等待plc允许配料,配方{data.RecipeCode},加入配方{i}"); | MessageNotify.GetInstance.ShowRunLog($"本地配方配料 ,等待plc允许配料,配方{data.RecipeCode},加入配方{i}"); | ||||
@@ -829,7 +829,7 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
HKDevice.HK_PLC_S7.Write("DB44.DBX3.0", true); | HKDevice.HK_PLC_S7.Write("DB44.DBX3.0", true); | ||||
App.Current.Dispatcher.Invoke(() => | App.Current.Dispatcher.Invoke(() => | ||||
{ | { | ||||
MessageNotify.GetInstance.ShowDialog($"{i}号仓配料误差过大,设置出料重量{ RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).RawMaterialWeight * 1000}g,实际出料重量{RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight}g,相差{AlarmRange}g,允许误差为{Math.Abs(Json<DevicePar>.Data.deviceParModels.ElementAt(iIndex).ErrorRange)}g,请联系人工处理", DialogType.Warning); | |||||
MessageNotify.GetInstance.ShowDialog($"{i}号仓配料误差过大,设置出料重量{RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).RawMaterialWeight * 1000}g,实际出料重量{RemoteRecipes.ElementAt(index).RawMaterial.ElementAt(res).Laying_Off_Weight}g,相差{AlarmRange}g,允许误差为{Math.Abs(Json<DevicePar>.Data.deviceParModels.ElementAt(iIndex).ErrorRange)}g,请联系人工处理", DialogType.Warning); | |||||
HKDevice.HK_PLC_S7.Write("DB44.DBX3.0", false); | HKDevice.HK_PLC_S7.Write("DB44.DBX3.0", false); | ||||
}); | }); | ||||
} | } | ||||
@@ -983,7 +983,7 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
} | } | ||||
} | } | ||||
} | } | ||||
public void RegisterInit() | |||||
public void RegisterInit() | |||||
{ | { | ||||
//手动控制气缸 DB5.DBX0.0~DB5.DBX4.5 | //手动控制气缸 DB5.DBX0.0~DB5.DBX4.5 | ||||
ActionManage.GetInstance.Register(new Action<object>((o) => | ActionManage.GetInstance.Register(new Action<object>((o) => | ||||
@@ -1203,7 +1203,8 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
break; | break; | ||||
} | } | ||||
} | } | ||||
App.Current.Dispatcher.Invoke(() => { | |||||
App.Current.Dispatcher.Invoke(() => | |||||
{ | |||||
Json<RemoteRecipeDataColl>.Data.Recipes.Add(new RemoteRecipeData() | Json<RemoteRecipeDataColl>.Data.Recipes.Add(new RemoteRecipeData() | ||||
{ | { | ||||
RecipeName = recipe.RecipeName, | RecipeName = recipe.RecipeName, | ||||
@@ -1226,7 +1227,7 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
Json<RemoteRecipeDataColl>.Data.Recipes.Add(recipe); | Json<RemoteRecipeDataColl>.Data.Recipes.Add(recipe); | ||||
} | } | ||||
}), "LocalSimulationRecipeIssue", true); | }), "LocalSimulationRecipeIssue", true); | ||||
//手动控制系统模式 | //手动控制系统模式 | ||||
ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write<bool>("DB44.DBX0.0", true); }), "SystemStart", true); | ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write<bool>("DB44.DBX0.0", true); }), "SystemStart", true); | ||||
ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write<bool>("DB44.DBX0.0", false); }), "SystemStop", true); | ActionManage.GetInstance.Register(new Action(() => { HKDevice.HK_PLC_S7.Write<bool>("DB44.DBX0.0", false); }), "SystemStop", true); | ||||
@@ -1261,14 +1262,14 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
}), "BPASystemReset", true); | }), "BPASystemReset", true); | ||||
//往海科PLC写值 | //往海科PLC写值 | ||||
ActionManage.GetInstance.Register(new Action<Object>((o) => | |||||
ActionManage.GetInstance.Register(new Action<Object>((o) => | |||||
{ | { | ||||
if (o != null && o is HKDeviceWrite data) | |||||
if (o != null && o is HKDeviceWrite data) | |||||
{ | { | ||||
if (data.PlcVarType == PlcVarType.Bool) | |||||
if (data.PlcVarType == PlcVarType.Bool) | |||||
{ | { | ||||
bool value = (bool)data.Value; | bool value = (bool)data.Value; | ||||
HKDevice.HK_PLC_S7.Write<bool>(data.Address , value); | |||||
HKDevice.HK_PLC_S7.Write<bool>(data.Address, value); | |||||
} | } | ||||
else if (data.PlcVarType == PlcVarType.Byte) | else if (data.PlcVarType == PlcVarType.Byte) | ||||
{ | { | ||||
@@ -1352,9 +1353,9 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
HKDevice.HK_PLC_S7.Write("DB4.DBB1", (byte)Value); | HKDevice.HK_PLC_S7.Write("DB4.DBB1", (byte)Value); | ||||
} | } | ||||
}), "RobotSetProgramNum", true); | }), "RobotSetProgramNum", true); | ||||
} | } | ||||
public void DeviceConnect() | |||||
public void DeviceConnect() | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
@@ -12,6 +12,7 @@ using System.Net.NetworkInformation; | |||||
using System.Threading; | using System.Threading; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
using System.Configuration; | using System.Configuration; | ||||
using System.Diagnostics; | |||||
namespace BPASmartClient.JXJFoodSmallStation.Model | namespace BPASmartClient.JXJFoodSmallStation.Model | ||||
{ | { | ||||
@@ -21,9 +22,9 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
public static DeviceInquire GetInstance => _Instance ?? (_Instance = new DeviceInquire()); | public static DeviceInquire GetInstance => _Instance ?? (_Instance = new DeviceInquire()); | ||||
private DeviceInquire() { } | private DeviceInquire() { } | ||||
string IPSegment = "107.107.2."; | |||||
string IPSegment = "107.107.2."; | |||||
ConcurrentDictionary<string, DeviceStatus> DeviceLists = new ConcurrentDictionary<string, DeviceStatus>(); | |||||
ConcurrentDictionary<string, DeviceStatus> DeviceLists = new ConcurrentDictionary<string, DeviceStatus>(); | |||||
List<string> InvalidIP = new List<string>();//无效 IP 集合 | List<string> InvalidIP = new List<string>();//无效 IP 集合 | ||||
List<string> IPLists = new List<string>();//启动 Ping 任务IP集合 | List<string> IPLists = new List<string>();//启动 Ping 任务IP集合 | ||||
ConcurrentQueue<string> IPQueues = new ConcurrentQueue<string>();//pincomplete 完成队列 | ConcurrentQueue<string> IPQueues = new ConcurrentQueue<string>();//pincomplete 完成队列 | ||||
@@ -57,14 +58,14 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
{ | { | ||||
devices.ElementAt(deviceIndex).DeviceName = DeviceLists.ElementAt(i).Value.DeviceName; | devices.ElementAt(deviceIndex).DeviceName = DeviceLists.ElementAt(i).Value.DeviceName; | ||||
} | } | ||||
if (!ThreadManage.GetInstance().IsContainsKey($"{deviceName} 开始监听")) | |||||
if (!ThreadManage.GetInstance().IsContainsKey($"{deviceName} 开始监听")) | |||||
{ | { | ||||
DeviceLists[DeviceLists.ElementAt(i).Key].Init(deviceName); | DeviceLists[DeviceLists.ElementAt(i).Key].Init(deviceName); | ||||
} | } | ||||
} | } | ||||
Thread.Sleep(200); | Thread.Sleep(200); | ||||
}), "设备状态监听",true); | |||||
}), "设备状态监听", true); | |||||
} | } | ||||
private void TestData() | private void TestData() | ||||
{ | { | ||||
@@ -169,7 +170,7 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
{ | { | ||||
IPLists.Add($"{IPSegment}{i + 69}"); | IPLists.Add($"{IPSegment}{i + 69}"); | ||||
} | } | ||||
IPLists.ForEach((item) => | IPLists.ForEach((item) => | ||||
{ | { | ||||
@@ -361,7 +362,7 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
//允许配料即产线气缸抬起,发送给味魔方 | //允许配料即产线气缸抬起,发送给味魔方 | ||||
if (deviceStatus.DeviceNum >= 1 && deviceStatus.DeviceNum <= 15) | if (deviceStatus.DeviceNum >= 1 && deviceStatus.DeviceNum <= 15) | ||||
{ | { | ||||
if (GVL_SmallStation.GetInstance.plcReadDataDB3.StockBinAllowIssue[deviceStatus.DeviceNum-1]) | |||||
if (GVL_SmallStation.GetInstance.plcReadDataDB3.StockBinAllowIssue[deviceStatus.DeviceNum - 1]) | |||||
{ | { | ||||
this.modbusTcp.Write("LW41", (ushort)1); | this.modbusTcp.Write("LW41", (ushort)1); | ||||
GVL_SmallStation.GetInstance.StockBinCylinderStatus.SetBitValue((byte)(deviceStatus.DeviceNum), true); | GVL_SmallStation.GetInstance.StockBinCylinderStatus.SetBitValue((byte)(deviceStatus.DeviceNum), true); | ||||
@@ -395,57 +396,85 @@ namespace BPASmartClient.JXJFoodSmallStation.Model | |||||
ThreadManage.GetInstance().StopTask($"{DeviceName} 开始监听"); | ThreadManage.GetInstance().StopTask($"{DeviceName} 开始监听"); | ||||
} | } | ||||
public void Start(float Value) | public void Start(float Value) | ||||
{ | { | ||||
//if (modbusTcp.Connected) | |||||
//{ | |||||
// var res = Json<DevicePar>.Data.deviceParModels.FirstOrDefault(p => p.MaterialName == DeviceName); | |||||
// if (res != null) | |||||
// { | |||||
// prop1: | |||||
// modbusTcp.SetReal(DeviceAddress.SlowlyAddWeight, res.SlowlyAddWeight); | |||||
// var Value1 = (float)this.modbusTcp.GetReal(DeviceAddress.SlowlyAddWeight); | |||||
// if (Value1 != null && Value1.ToString() != res.SlowlyAddWeight.ToString()) goto prop1; | |||||
// prop2: | |||||
// modbusTcp.SetReal(DeviceAddress.PreCloseValveWeight, res.PreCloseValveWeight); | |||||
// var Value2 = (float)this.modbusTcp.GetReal(DeviceAddress.PreCloseValveWeight); | |||||
// if (Value2 != null && Value2.ToString() != res.PreCloseValveWeight.ToString()) goto prop2; | |||||
// prop3: | |||||
// modbusTcp.SetUint(DeviceAddress.RapidAcceleration, (uint)res.RapidAcceleration); | |||||
// var Value3 = this.modbusTcp.GetUint(DeviceAddress.RapidAcceleration); | |||||
// if (Value3 != null && Value3.ToString() != res.RapidAcceleration.ToString()) goto prop3; | |||||
// prop4: | |||||
// modbusTcp.SetUint(DeviceAddress.SlowAcceleration, (uint)res.SlowAcceleration); | |||||
// var Value4 = this.modbusTcp.GetUint(DeviceAddress.SlowAcceleration); | |||||
// if (Value4 != null && Value4.ToString() != res.SlowAcceleration.ToString()) goto prop4; | |||||
// prop5: | |||||
// modbusTcp.SetUint(DeviceAddress.ServoManualSpeed, (uint)res.ServoManualSpeed); | |||||
// var Value5 = this.modbusTcp.GetUint(DeviceAddress.ServoManualSpeed); | |||||
// if (Value5 != null && Value5.ToString() != res.ServoManualSpeed.ToString()) goto prop5; | |||||
// prop6: | |||||
// modbusTcp.SetUint(DeviceAddress.SiloUpperLimitWeight, (uint)res.SiloUpperLimitWeight); | |||||
// var Value6 = this.modbusTcp.GetUint(DeviceAddress.SiloUpperLimitWeight); | |||||
// if (Value6 != null && Value6.ToString() != res.SiloUpperLimitWeight.ToString()) goto prop6; | |||||
// prop7: | |||||
// modbusTcp.SetUint(DeviceAddress.LowerLimitWeightOfSilo, (uint)res.LowerLimitWeightOfSilo); | |||||
// var Value7 = this.modbusTcp.GetUint(DeviceAddress.LowerLimitWeightOfSilo); | |||||
// if (Value7 != null && Value7.ToString() != res.LowerLimitWeightOfSilo.ToString()) goto prop7; | |||||
// /*prop8: | |||||
// var Value8 = this.modbusTcp.GetUint(DeviceAddress.StirringSpeed); | |||||
// if (Value8 != null && Value8.ToString() != num.ToString()) goto prop8;*/ | |||||
// uint num = (uint)res.StirringSpeed * 100; | |||||
// modbusTcp.SetUint(DeviceAddress.StirringSpeed, num); | |||||
// MessageNotify.GetInstance.ShowRunLog($"{res.MaterialName},参数下发完成"); | |||||
// } | |||||
// int Count = 0; | |||||
//Start: | |||||
// Count++; | |||||
// modbusTcp.SetReal(DeviceAddress.WeightSet, Value);//写入原料重量 | |||||
// modbusTcp.Write(DeviceAddress.Start, (ushort)1);//设备启动写入 | |||||
// MessageNotify.GetInstance.ShowRunLog($"{DeviceName},设置重量:{Value},下发次数{Count},柔性味魔方开始配料"); | |||||
// Thread.Sleep(200); | |||||
// if (this.modbusTcp.ReadShort(DeviceAddress.DosingStatusFeedback) == (short)0 && Count <=10) goto Start; | |||||
//} | |||||
if (modbusTcp.Connected) | if (modbusTcp.Connected) | ||||
{ | { | ||||
var res = Json<DevicePar>.Data.deviceParModels.FirstOrDefault(p => p.MaterialName == DeviceName); | var res = Json<DevicePar>.Data.deviceParModels.FirstOrDefault(p => p.MaterialName == DeviceName); | ||||
if (res != null) | if (res != null) | ||||
{ | { | ||||
prop1: | |||||
modbusTcp.SetReal(DeviceAddress.SlowlyAddWeight, res.SlowlyAddWeight); | modbusTcp.SetReal(DeviceAddress.SlowlyAddWeight, res.SlowlyAddWeight); | ||||
var Value1 = (float)this.modbusTcp.GetReal(DeviceAddress.SlowlyAddWeight); | |||||
if (Value1 != null && Value1.ToString() != res.SlowlyAddWeight.ToString()) goto prop1; | |||||
prop2: | |||||
modbusTcp.SetReal(DeviceAddress.PreCloseValveWeight, res.PreCloseValveWeight); | modbusTcp.SetReal(DeviceAddress.PreCloseValveWeight, res.PreCloseValveWeight); | ||||
var Value2 = (float)this.modbusTcp.GetReal(DeviceAddress.PreCloseValveWeight); | |||||
if (Value2 != null && Value2.ToString() != res.PreCloseValveWeight.ToString()) goto prop2; | |||||
prop3: | |||||
modbusTcp.SetUint(DeviceAddress.RapidAcceleration, (uint)res.RapidAcceleration); | modbusTcp.SetUint(DeviceAddress.RapidAcceleration, (uint)res.RapidAcceleration); | ||||
var Value3 = this.modbusTcp.GetUint(DeviceAddress.RapidAcceleration); | |||||
if (Value3 != null && Value3.ToString() != res.RapidAcceleration.ToString()) goto prop3; | |||||
prop4: | |||||
modbusTcp.SetUint(DeviceAddress.SlowAcceleration, (uint)res.SlowAcceleration); | modbusTcp.SetUint(DeviceAddress.SlowAcceleration, (uint)res.SlowAcceleration); | ||||
var Value4 = this.modbusTcp.GetUint(DeviceAddress.SlowAcceleration); | |||||
if (Value4 != null && Value4.ToString() != res.SlowAcceleration.ToString()) goto prop4; | |||||
prop5: | |||||
modbusTcp.SetUint(DeviceAddress.ServoManualSpeed, (uint)res.ServoManualSpeed); | modbusTcp.SetUint(DeviceAddress.ServoManualSpeed, (uint)res.ServoManualSpeed); | ||||
var Value5 = this.modbusTcp.GetUint(DeviceAddress.ServoManualSpeed); | |||||
if (Value5 != null && Value5.ToString() != res.ServoManualSpeed.ToString()) goto prop5; | |||||
prop6: | |||||
modbusTcp.SetUint(DeviceAddress.SiloUpperLimitWeight, (uint)res.SiloUpperLimitWeight); | modbusTcp.SetUint(DeviceAddress.SiloUpperLimitWeight, (uint)res.SiloUpperLimitWeight); | ||||
var Value6 = this.modbusTcp.GetUint(DeviceAddress.SiloUpperLimitWeight); | |||||
if (Value6 != null && Value6.ToString() != res.SiloUpperLimitWeight.ToString()) goto prop6; | |||||
prop7: | |||||
modbusTcp.SetUint(DeviceAddress.LowerLimitWeightOfSilo, (uint)res.LowerLimitWeightOfSilo); | modbusTcp.SetUint(DeviceAddress.LowerLimitWeightOfSilo, (uint)res.LowerLimitWeightOfSilo); | ||||
var Value7 = this.modbusTcp.GetUint(DeviceAddress.LowerLimitWeightOfSilo); | |||||
if (Value7 != null && Value7.ToString() != res.LowerLimitWeightOfSilo.ToString()) goto prop7; | |||||
/*prop8: | |||||
var Value8 = this.modbusTcp.GetUint(DeviceAddress.StirringSpeed); | |||||
if (Value8 != null && Value8.ToString() != num.ToString()) goto prop8;*/ | |||||
uint num = (uint)res.StirringSpeed * 100; | |||||
modbusTcp.SetUint(DeviceAddress.StirringSpeed, num); | |||||
modbusTcp.SetUint(DeviceAddress.StirringSpeed, (uint)res.StirringSpeed * 100); | |||||
MessageNotify.GetInstance.ShowRunLog($"{res.MaterialName},参数下发完成"); | MessageNotify.GetInstance.ShowRunLog($"{res.MaterialName},参数下发完成"); | ||||
} | } | ||||
int Count = 0; | |||||
Start: | |||||
Count++; | |||||
modbusTcp.SetReal(DeviceAddress.WeightSet, Value);//写入原料重量 | modbusTcp.SetReal(DeviceAddress.WeightSet, Value);//写入原料重量 | ||||
modbusTcp.Write(DeviceAddress.Start, (ushort)1);//设备启动写入 | modbusTcp.Write(DeviceAddress.Start, (ushort)1);//设备启动写入 | ||||
MessageNotify.GetInstance.ShowRunLog($"{DeviceName},设置重量:{Value},下发次数{Count},柔性味魔方开始配料"); | |||||
Thread.Sleep(200); | |||||
if (this.modbusTcp.ReadShort(DeviceAddress.DosingStatusFeedback) == (short)0 && Count <=10) goto Start; | |||||
MessageNotify.GetInstance.ShowRunLog($"{DeviceName},设置重量:{Value},柔性味魔方开始配料"); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } |
@@ -55,10 +55,10 @@ | |||||
<Grid Margin="8"> | <Grid Margin="8"> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition Height="2*"/> | |||||
<RowDefinition Height="2*"/> | |||||
<RowDefinition Height="3*"/> | |||||
<RowDefinition Height="2*"/> | |||||
<RowDefinition Height="2*" /> | |||||
<RowDefinition Height="2*" /> | |||||
<RowDefinition Height="3*" /> | |||||
<RowDefinition Height="2*" /> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<Grid | <Grid | ||||
Name="jiu" | Name="jiu" | ||||
@@ -85,73 +85,102 @@ | |||||
Text="总控制" /> | Text="总控制" /> | ||||
<Grid Grid.Row="1"> | <Grid Grid.Row="1"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition Width="5*"/> | |||||
<ColumnDefinition Width="5*"/> | |||||
<ColumnDefinition Width="5*" /> | |||||
<ColumnDefinition Width="5*" /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid Grid.Column="0"> | <Grid Grid.Column="0"> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid> | <Grid> | ||||
<WrapPanel VerticalAlignment="Center" HorizontalAlignment="Center"> | |||||
<TextBlock FontSize="24" Foreground="Aqua" Text="当前系统模式:"/> | |||||
<TextBlock FontSize="24" Foreground="Aqua" Text="{Binding SystemMode}"/> | |||||
<WrapPanel HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<TextBlock | |||||
FontSize="24" | |||||
Foreground="Aqua" | |||||
Text="当前系统模式:" /> | |||||
<TextBlock | |||||
FontSize="24" | |||||
Foreground="Aqua" | |||||
Text="{Binding SystemMode}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
</Grid> | </Grid> | ||||
<Grid Grid.Column="0" Grid.Row="1"> | |||||
<WrapPanel VerticalAlignment="Center" HorizontalAlignment="Center"> | |||||
<TextBlock FontSize="24" Foreground="Aqua" Text="当前系统状态:"/> | |||||
<TextBlock FontSize="24" Foreground="Aqua" Text="{Binding SystemStatus}"/> | |||||
<Grid Grid.Row="1" Grid.Column="0"> | |||||
<WrapPanel HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<TextBlock | |||||
FontSize="24" | |||||
Foreground="Aqua" | |||||
Text="当前系统状态:" /> | |||||
<TextBlock | |||||
FontSize="24" | |||||
Foreground="Aqua" | |||||
Text="{Binding SystemStatus}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
</Grid> | </Grid> | ||||
<RadioButton Grid.Column="1" Grid.Row="0" Content="Auto模式" IsChecked="True" Margin="15" FontSize="20" VerticalAlignment="Center" HorizontalAlignment="Center" | |||||
Foreground="Aqua" Command="{Binding AutoMode}"></RadioButton> | |||||
<RadioButton Grid.Column="1" Grid.Row="1" Content="Debug模式" IsChecked="false" Margin="15" FontSize="20" VerticalAlignment="Center" HorizontalAlignment="Center" | |||||
Foreground="Aqua" Command="{Binding DebugMode}"></RadioButton> | |||||
<RadioButton | |||||
Grid.Row="0" | |||||
Grid.Column="1" | |||||
Margin="15" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
Command="{Binding AutoMode}" | |||||
Content="Auto模式" | |||||
FontSize="20" | |||||
Foreground="Aqua" | |||||
IsChecked="False" /> | |||||
<RadioButton | |||||
Grid.Row="1" | |||||
Grid.Column="1" | |||||
Margin="15" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
Command="{Binding DebugMode}" | |||||
Content="Debug模式" | |||||
FontSize="20" | |||||
Foreground="Aqua" | |||||
IsChecked="false" /> | |||||
</Grid> | </Grid> | ||||
<Grid | |||||
Grid.Column="3" > | |||||
<Grid Grid.Column="3"> | |||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<pry:IcoButton | |||||
Command="{Binding SystemStartCommand}" | |||||
<pry:IcoButton | |||||
Grid.Column="0" | Grid.Column="0" | ||||
Margin="5,30" | Margin="5,30" | ||||
Command="{Binding SystemStartCommand}" | |||||
Content="启动" | Content="启动" | ||||
FontSize="40" | FontSize="40" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
Style="{StaticResource IcoButtonStyle}" /> | Style="{StaticResource IcoButtonStyle}" /> | ||||
<pry:IcoButton | |||||
Command="{Binding SystemStopCommand}" | |||||
<pry:IcoButton | |||||
Grid.Column="1" | Grid.Column="1" | ||||
Margin="5,30" | Margin="5,30" | ||||
Command="{Binding SystemStopCommand}" | |||||
Content="停止" | Content="停止" | ||||
FontSize="40" | FontSize="40" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
Style="{StaticResource IcoButtonStyle}" /> | Style="{StaticResource IcoButtonStyle}" /> | ||||
<pry:IcoButton | |||||
Command="{Binding SystemPauseCommand}" | |||||
<pry:IcoButton | |||||
Grid.Column="2" | Grid.Column="2" | ||||
Margin="5,30" | Margin="5,30" | ||||
Command="{Binding SystemPauseCommand}" | |||||
Content="暂停" | Content="暂停" | ||||
FontSize="40" | FontSize="40" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
Style="{StaticResource IcoButtonStyle}" /> | Style="{StaticResource IcoButtonStyle}" /> | ||||
<pry:IcoButton | |||||
Command="{Binding SystemResetCommand}" | |||||
<pry:IcoButton | |||||
Grid.Column="3" | Grid.Column="3" | ||||
Margin="5,30" | Margin="5,30" | ||||
Command="{Binding SystemResetCommand}" | |||||
Content="恢复" | Content="恢复" | ||||
FontSize="40" | FontSize="40" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
@@ -182,38 +211,44 @@ | |||||
FontSize="16" | FontSize="16" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
Text="线体控制" /> | Text="线体控制" /> | ||||
<Grid Grid.Row="1"> | |||||
<Grid Grid.Row="1"> | |||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition Width="1*"></ColumnDefinition> | |||||
<ColumnDefinition Width="1*"></ColumnDefinition> | |||||
<ColumnDefinition Width="1*"></ColumnDefinition> | |||||
<ColumnDefinition Width="1*"></ColumnDefinition> | |||||
<ColumnDefinition Width="1*"></ColumnDefinition> | |||||
<ColumnDefinition Width="1*" /> | |||||
<ColumnDefinition Width="1*" /> | |||||
<ColumnDefinition Width="1*" /> | |||||
<ColumnDefinition Width="1*" /> | |||||
<ColumnDefinition Width="1*" /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<Grid> | <Grid> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<TextBlock Grid.ColumnSpan="2" Margin="0,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center" | |||||
FontSize="16" Foreground="Aqua" Text="进桶侧调速电机"/> | |||||
<pry:IcoButton | |||||
Margin="10" | |||||
<TextBlock | |||||
Grid.ColumnSpan="2" | |||||
Margin="0,0,0,0" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="Aqua" | |||||
Text="进桶侧调速电机" /> | |||||
<pry:IcoButton | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Grid.Column="0" | Grid.Column="0" | ||||
Margin="10" | |||||
Command="{Binding StartAxisLoadCommand}" | Command="{Binding StartAxisLoadCommand}" | ||||
Content="启动" | Content="启动" | ||||
FontSize="16" | FontSize="16" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
Style="{StaticResource IcoButtonStyle}" /> | Style="{StaticResource IcoButtonStyle}" /> | ||||
<pry:IcoButton | |||||
<pry:IcoButton | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Grid.Column="1" | Grid.Column="1" | ||||
Margin="10" | Margin="10" | ||||
@@ -225,29 +260,34 @@ | |||||
</Grid> | </Grid> | ||||
<Border | |||||
BorderThickness="1,0,1,0" /> | |||||
<Border BorderThickness="1,0,1,0" /> | |||||
<Grid Grid.Column="1"> | <Grid Grid.Column="1"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<TextBlock Grid.ColumnSpan="2" Margin="0,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center" | |||||
FontSize="16" Foreground="Aqua" Text="过渡段调速电机"/> | |||||
<pry:IcoButton | |||||
Margin="10" | |||||
<TextBlock | |||||
Grid.ColumnSpan="2" | |||||
Margin="0,0,0,0" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="Aqua" | |||||
Text="过渡段调速电机" /> | |||||
<pry:IcoButton | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Grid.Column="0" | Grid.Column="0" | ||||
Margin="10" | |||||
Command="{Binding StartAxisMidCommand}" | Command="{Binding StartAxisMidCommand}" | ||||
Content="启动" | Content="启动" | ||||
FontSize="16" | FontSize="16" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
Style="{StaticResource IcoButtonStyle}" /> | Style="{StaticResource IcoButtonStyle}" /> | ||||
<pry:IcoButton | |||||
<pry:IcoButton | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Grid.Column="1" | Grid.Column="1" | ||||
Margin="10" | Margin="10" | ||||
@@ -259,25 +299,31 @@ | |||||
</Grid> | </Grid> | ||||
<Grid Grid.Column="2"> | <Grid Grid.Column="2"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<TextBlock Grid.ColumnSpan="2" Margin="0,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center" | |||||
FontSize="16" Foreground="Aqua" Text="出桶侧调速电机"/> | |||||
<pry:IcoButton | |||||
Margin="10" | |||||
<TextBlock | |||||
Grid.ColumnSpan="2" | |||||
Margin="0,0,0,0" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="Aqua" | |||||
Text="出桶侧调速电机" /> | |||||
<pry:IcoButton | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Grid.Column="0" | Grid.Column="0" | ||||
Margin="10" | |||||
Command="{Binding StartAxisUnLoadCommand}" | Command="{Binding StartAxisUnLoadCommand}" | ||||
Content="启动" | Content="启动" | ||||
FontSize="16" | FontSize="16" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
Style="{StaticResource IcoButtonStyle}" /> | Style="{StaticResource IcoButtonStyle}" /> | ||||
<pry:IcoButton | |||||
<pry:IcoButton | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Grid.Column="1" | Grid.Column="1" | ||||
Margin="10" | Margin="10" | ||||
@@ -287,29 +333,34 @@ | |||||
Foreground="Aqua" | Foreground="Aqua" | ||||
Style="{StaticResource IcoButtonStyle}" /> | Style="{StaticResource IcoButtonStyle}" /> | ||||
</Grid> | </Grid> | ||||
<Border | |||||
BorderThickness="1,0,1,0" /> | |||||
<Border BorderThickness="1,0,1,0" /> | |||||
<Grid Grid.Column="3"> | <Grid Grid.Column="3"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<TextBlock Grid.ColumnSpan="2" Margin="0,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center" | |||||
FontSize="16" Foreground="Aqua" Text="伺服1调速电机"/> | |||||
<pry:IcoButton | |||||
Margin="10" | |||||
<TextBlock | |||||
Grid.ColumnSpan="2" | |||||
Margin="0,0,0,0" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="Aqua" | |||||
Text="伺服1调速电机" /> | |||||
<pry:IcoButton | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Grid.Column="0" | Grid.Column="0" | ||||
Margin="10" | |||||
Command="{Binding StartAxis1Command}" | Command="{Binding StartAxis1Command}" | ||||
Content="启动" | Content="启动" | ||||
FontSize="16" | FontSize="16" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
Style="{StaticResource IcoButtonStyle}" /> | Style="{StaticResource IcoButtonStyle}" /> | ||||
<pry:IcoButton | |||||
<pry:IcoButton | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Grid.Column="1" | Grid.Column="1" | ||||
Margin="10" | Margin="10" | ||||
@@ -321,25 +372,31 @@ | |||||
</Grid> | </Grid> | ||||
<Grid Grid.Column="4"> | <Grid Grid.Column="4"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<TextBlock Grid.ColumnSpan="2" Margin="0,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center" | |||||
FontSize="16" Foreground="Aqua" Text="伺服2调速电机"/> | |||||
<pry:IcoButton | |||||
Margin="10" | |||||
<TextBlock | |||||
Grid.ColumnSpan="2" | |||||
Margin="0,0,0,0" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="16" | |||||
Foreground="Aqua" | |||||
Text="伺服2调速电机" /> | |||||
<pry:IcoButton | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Grid.Column="0" | Grid.Column="0" | ||||
Margin="10" | |||||
Command="{Binding StartAxis2Command}" | Command="{Binding StartAxis2Command}" | ||||
Content="启动" | Content="启动" | ||||
FontSize="16" | FontSize="16" | ||||
Foreground="Aqua" | Foreground="Aqua" | ||||
Style="{StaticResource IcoButtonStyle}" /> | Style="{StaticResource IcoButtonStyle}" /> | ||||
<pry:IcoButton | |||||
<pry:IcoButton | |||||
Grid.Row="1" | Grid.Row="1" | ||||
Grid.Column="1" | Grid.Column="1" | ||||
Margin="10" | Margin="10" | ||||
@@ -454,7 +511,7 @@ | |||||
<!--#endregion--> | <!--#endregion--> | ||||
<!--#region 阻挡气缸--> | <!--#region 阻挡气缸--> | ||||
<!--#endregion--> | <!--#endregion--> | ||||
<!--#region 托盘气缸--> | <!--#region 托盘气缸--> | ||||
@@ -1,12 +1,14 @@ | |||||
<UserControl x:Class="BPASmartClient.JXJFoodSmallStation.View.ManualFlowView" | |||||
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.ManualFlowView" | |||||
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.DataContext> | <UserControl.DataContext> | ||||
<vm:ManualFlowViewModel /> | <vm:ManualFlowViewModel /> | ||||
@@ -20,56 +22,59 @@ | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<!--#region 表格标题栏设置--> | <!--#region 表格标题栏设置--> | ||||
<Grid> | <Grid> | ||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="left" VerticalAlignment="Center"> | |||||
<StackPanel | |||||
HorizontalAlignment="left" | |||||
VerticalAlignment="Center" | |||||
Orientation="Horizontal"> | |||||
<Button | <Button | ||||
Name="test1" | Name="test1" | ||||
Width="200" | Width="200" | ||||
Height="40" | Height="40" | ||||
Margin="5" | Margin="5" | ||||
Panel.ZIndex="0" | |||||
Command="{Binding Test1Command}" | Command="{Binding Test1Command}" | ||||
Content="AGV送托盘完成" | Content="AGV送托盘完成" | ||||
FontSize="20" | FontSize="20" | ||||
Panel.ZIndex="0" | |||||
Visibility="{Binding VisibilityBtn1}" | |||||
Style="{StaticResource ImageButtonStyle}"></Button> | |||||
Style="{StaticResource ImageButtonStyle}" | |||||
Visibility="{Binding VisibilityBtn1}" /> | |||||
<Button | <Button | ||||
Name="test2" | Name="test2" | ||||
Width="200" | Width="200" | ||||
Height="40" | Height="40" | ||||
Margin="5" | Margin="5" | ||||
Panel.ZIndex="0" | |||||
Command="{Binding Test2Command}" | Command="{Binding Test2Command}" | ||||
Content="粉料仓配料完成" | Content="粉料仓配料完成" | ||||
FontSize="20" | FontSize="20" | ||||
Panel.ZIndex="0" | |||||
Visibility="{Binding VisibilityBtn2}" | |||||
Style="{StaticResource ImageButtonStyle}"></Button> | |||||
Style="{StaticResource ImageButtonStyle}" | |||||
Visibility="{Binding VisibilityBtn2}" /> | |||||
<Button | <Button | ||||
Name="test3" | Name="test3" | ||||
Width="200" | Width="200" | ||||
Height="40" | Height="40" | ||||
Margin="5" | Margin="5" | ||||
Panel.ZIndex="0" | |||||
Command="{Binding Test3Command}" | Command="{Binding Test3Command}" | ||||
Content="AGV取托盘完成" | Content="AGV取托盘完成" | ||||
FontSize="20" | FontSize="20" | ||||
Panel.ZIndex="0" | |||||
Visibility="{Binding VisibilityBtn3}" | |||||
Style="{StaticResource ImageButtonStyle}"></Button> | |||||
Style="{StaticResource ImageButtonStyle}" | |||||
Visibility="{Binding VisibilityBtn3}" /> | |||||
<TextBlock | <TextBlock | ||||
Width="100" | |||||
Width="100" | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | HorizontalAlignment="Center" | ||||
VerticalAlignment="Center" | VerticalAlignment="Center" | ||||
Foreground="#FF2AB2E7" | |||||
FontSize="25" | FontSize="25" | ||||
Margin="10"></TextBlock> | |||||
Foreground="#FF2AB2E7" /> | |||||
<Button | <Button | ||||
Width="200" | Width="200" | ||||
Height="40" | Height="40" | ||||
Margin="5" | Margin="5" | ||||
Panel.ZIndex="0" | |||||
Command="{Binding Test5Command}" | Command="{Binding Test5Command}" | ||||
Content="粉料仓提升到位" | Content="粉料仓提升到位" | ||||
FontSize="20" | FontSize="20" | ||||
Panel.ZIndex="0" | |||||
Style="{StaticResource ImageButtonStyle}"></Button> | |||||
Style="{StaticResource ImageButtonStyle}" /> | |||||
<Button | <Button | ||||
Width="200" | Width="200" | ||||
Height="40" | Height="40" | ||||
@@ -77,29 +82,32 @@ | |||||
Command="{Binding BPAResetCommand}" | Command="{Binding BPAResetCommand}" | ||||
Content="上位机初始化" | Content="上位机初始化" | ||||
FontSize="20" | FontSize="20" | ||||
Style="{StaticResource ImageButtonStyle}"></Button> | |||||
Style="{StaticResource ImageButtonStyle}" /> | |||||
</StackPanel> | </StackPanel> | ||||
</Grid> | </Grid> | ||||
<Grid Grid.Row="1"> | <Grid Grid.Row="1"> | ||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="left" VerticalAlignment="Center"> | |||||
<StackPanel | |||||
HorizontalAlignment="left" | |||||
VerticalAlignment="Center" | |||||
Orientation="Horizontal"> | |||||
<Button | <Button | ||||
Width="200" | Width="200" | ||||
Height="40" | Height="40" | ||||
Margin="5,0,5,0" | Margin="5,0,5,0" | ||||
Panel.ZIndex="0" | |||||
Command="{Binding SystemReset}" | Command="{Binding SystemReset}" | ||||
Content="PLC系统复位" | Content="PLC系统复位" | ||||
FontSize="20" | FontSize="20" | ||||
Panel.ZIndex="0" | |||||
Style="{StaticResource ImageButtonStyle}"></Button> | |||||
Style="{StaticResource ImageButtonStyle}" /> | |||||
<Button | <Button | ||||
Width="200" | Width="200" | ||||
Height="40" | Height="40" | ||||
Margin="5,0,5,0" | Margin="5,0,5,0" | ||||
Panel.ZIndex="0" | |||||
Command="{Binding CLearRecipeInfo}" | Command="{Binding CLearRecipeInfo}" | ||||
Content="PLC配方清零" | Content="PLC配方清零" | ||||
FontSize="20" | FontSize="20" | ||||
Panel.ZIndex="0" | |||||
Style="{StaticResource ImageButtonStyle}"></Button> | |||||
Style="{StaticResource ImageButtonStyle}" /> | |||||
</StackPanel> | </StackPanel> | ||||
@@ -113,90 +121,292 @@ | |||||
<ColumnDefinition /> | <ColumnDefinition /> | ||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition></RowDefinition> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
<RowDefinition /> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<WrapPanel Grid.Column="1"> | |||||
<TextBlock Text="海科plc心跳:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Heartbeat}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
</WrapPanel> | |||||
<StackPanel Grid.Column="1" Orientation="Vertical"> | |||||
<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 Heartbeat}" /> | |||||
</StackPanel> | |||||
</StackPanel> | |||||
<WrapPanel Grid.Row="0"> | <WrapPanel Grid.Row="0"> | ||||
<TextBlock Text="西门子 连接状态:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding SiemensIsConnect}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock Text="海科plc连接状态:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding HKPlcIsConnect}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock Text="风送plc连接状态:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding WindSendIsConnect}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="西门子 连接状态:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding SiemensIsConnect}" /> | |||||
<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}" /> | |||||
<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 WindSendIsConnect}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel Grid.Row="2"> | <WrapPanel Grid.Row="2"> | ||||
<TextBlock Text="当前下发配方状态:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding OrderStatus}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="当前下发配方状态:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding OrderStatus}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel Grid.Row="0" Grid.Column="2"> | <WrapPanel Grid.Row="0" Grid.Column="2"> | ||||
<TextBlock Text="柔性味魔方配料完成,延迟复位时间:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBox Text="{Binding time}" Width="150" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBox> | |||||
<TextBlock Text="ms" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="柔性味魔方配料完成,延迟复位时间:" /> | |||||
<TextBox | |||||
Width="150" | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding time}" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="ms" /> | |||||
<Button | <Button | ||||
Width="100" | Width="100" | ||||
Height="40" | Height="40" | ||||
Margin="5,0,5,0" | Margin="5,0,5,0" | ||||
Panel.ZIndex="0" | |||||
Command="{Binding TimeSet}" | Command="{Binding TimeSet}" | ||||
Content="设置" | Content="设置" | ||||
FontSize="20" | FontSize="20" | ||||
Panel.ZIndex="0" | |||||
Style="{StaticResource ImageButtonStyle}"></Button> | |||||
Style="{StaticResource ImageButtonStyle}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel Grid.Column="0" Grid.Row="3" Grid.RowSpan="2"> | |||||
<TextBlock Text="当前配料状态:" Width="200" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<WrapPanel | |||||
Grid.Row="3" | |||||
Grid.RowSpan="2" | |||||
Grid.Column="0"> | |||||
<TextBlock | |||||
Width="200" | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="当前配料状态:" /> | |||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Text="配方1:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Recipe1DosingStatus}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配方1:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding Recipe1DosingStatus}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Text="配方2:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Recipe2DosingStatus}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配方2:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding Recipe2DosingStatus}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Text="配方3:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Recipe3DosingStatus}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配方3:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding Recipe3DosingStatus}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Text="配方4:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Recipe4DosingStatus}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配方4:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding Recipe4DosingStatus}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Text="配方5:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Recipe5DosingStatus}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配方5:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding Recipe5DosingStatus}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel Grid.Column="1" Grid.Row="3" Grid.RowSpan="2"> | |||||
<TextBlock Text="配料情况:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<WrapPanel | |||||
Grid.Row="3" | |||||
Grid.RowSpan="2" | |||||
Grid.Column="1"> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配料情况:" /> | |||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Text="配方1:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Recipe1DosingComplete}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配方1:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding Recipe1DosingComplete}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Text="配方2:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Recipe2DosingComplete}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配方2:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding Recipe2DosingComplete}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Text="配方3:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Recipe3DosingComplete}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配方3:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding Recipe3DosingComplete}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Text="配方4:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Recipe4DosingComplete}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配方4:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding Recipe4DosingComplete}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel> | <WrapPanel> | ||||
<TextBlock Text="配方5:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBlock Text="{Binding Recipe5DosingComplete}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBlock> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="配方5:" /> | |||||
<TextBlock | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding Recipe5DosingComplete}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel Grid.Row="1" Grid.Column="2"> | |||||
<WrapPanel Grid.Row="1" Grid.Column="2"> | |||||
<!--<ComboBox | <!--<ComboBox | ||||
x:Name="cmbList" | x:Name="cmbList" | ||||
Width="70" | Width="70" | ||||
@@ -210,27 +420,39 @@ | |||||
MouseLeave="ComboBox_MouseLeave" | MouseLeave="ComboBox_MouseLeave" | ||||
Style="{StaticResource ComboBoxStyle}" | Style="{StaticResource ComboBoxStyle}" | ||||
Text="{Binding RawMaterialName}"/>--> | Text="{Binding RawMaterialName}"/>--> | ||||
<TextBlock Text="料仓号:" Foreground="#FF2AB2E7" FontSize="25" Margin="10,0,5,0" VerticalAlignment="Center"></TextBlock> | |||||
<TextBox Width="50" Text="{Binding StockbinDosingCompleNum}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF2AB2E7" FontSize="25" Margin="10"></TextBox> | |||||
<TextBlock | |||||
Margin="10,0,5,0" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="料仓号:" /> | |||||
<TextBox | |||||
Width="50" | |||||
Margin="10" | |||||
HorizontalAlignment="Center" | |||||
VerticalAlignment="Center" | |||||
FontSize="25" | |||||
Foreground="#FF2AB2E7" | |||||
Text="{Binding StockbinDosingCompleNum}" /> | |||||
<Button | <Button | ||||
Width="200" | Width="200" | ||||
Height="40" | Height="40" | ||||
Margin="5,0,5,0" | Margin="5,0,5,0" | ||||
Panel.ZIndex="0" | |||||
Command="{Binding StockbinDosingComple}" | Command="{Binding StockbinDosingComple}" | ||||
Content="小料料仓配料完成" | Content="小料料仓配料完成" | ||||
FontSize="20" | FontSize="20" | ||||
Panel.ZIndex="0" | |||||
Style="{StaticResource ImageButtonStyle}"></Button> | |||||
Style="{StaticResource ImageButtonStyle}" /> | |||||
<Button | <Button | ||||
HorizontalAlignment="Right" | |||||
Width="400" | Width="400" | ||||
Height="40" | Height="40" | ||||
Margin="10" | Margin="10" | ||||
HorizontalAlignment="Right" | |||||
Panel.ZIndex="0" | |||||
Command="{Binding StockbinDosingCompleClear}" | Command="{Binding StockbinDosingCompleClear}" | ||||
Content="清除所有小料料仓配料完成信号" | Content="清除所有小料料仓配料完成信号" | ||||
FontSize="20" | FontSize="20" | ||||
Panel.ZIndex="0" | |||||
Style="{StaticResource ImageButtonStyle}"></Button> | |||||
Style="{StaticResource ImageButtonStyle}" /> | |||||
</WrapPanel> | </WrapPanel> | ||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
@@ -69,10 +69,13 @@ | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<Grid Grid.Row="0"> | <Grid Grid.Row="0"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition></ColumnDefinition> | |||||
<ColumnDefinition /> | |||||
<ColumnDefinition /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<StackPanel VerticalAlignment="Center" Grid.Column="0" Orientation="Horizontal"> | |||||
<StackPanel | |||||
Grid.Column="0" | |||||
VerticalAlignment="Center" | |||||
Orientation="Horizontal"> | |||||
<TextBlock | <TextBlock | ||||
Width="100" | Width="100" | ||||
Margin="10,0,10,0" | Margin="10,0,10,0" | ||||
@@ -86,7 +89,10 @@ | |||||
FontSize="16" | FontSize="16" | ||||
Text="{Binding RecipeName}" /> | Text="{Binding RecipeName}" /> | ||||
</StackPanel> | </StackPanel> | ||||
<WrapPanel VerticalAlignment="Center" Grid.Column="1" HorizontalAlignment="Left"> | |||||
<WrapPanel | |||||
Grid.Column="1" | |||||
HorizontalAlignment="Left" | |||||
VerticalAlignment="Center"> | |||||
<TextBlock | <TextBlock | ||||
Width="100" | Width="100" | ||||
Margin="2,0,10,0" | Margin="2,0,10,0" | ||||
@@ -106,7 +112,7 @@ | |||||
<ColumnDefinition Width="1*" /> | <ColumnDefinition Width="1*" /> | ||||
<ColumnDefinition Width="1*" /> | <ColumnDefinition Width="1*" /> | ||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<WrapPanel VerticalAlignment="Center" Grid.Column="0"> | |||||
<WrapPanel Grid.Column="0" VerticalAlignment="Center"> | |||||
<TextBlock | <TextBlock | ||||
Width="100" | Width="100" | ||||
Margin="10,0,10,0" | Margin="10,0,10,0" | ||||
@@ -120,7 +126,10 @@ | |||||
FontSize="16" | FontSize="16" | ||||
Text="{Binding TrayNum}" /> | Text="{Binding TrayNum}" /> | ||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel HorizontalAlignment="Left" Orientation="Horizontal" Grid.Column="1"> | |||||
<WrapPanel | |||||
Grid.Column="1" | |||||
HorizontalAlignment="Left" | |||||
Orientation="Horizontal"> | |||||
<Button | <Button | ||||
Width="80" | Width="80" | ||||
Height="40" | Height="40" | ||||
@@ -146,7 +155,7 @@ | |||||
FontSize="16" | FontSize="16" | ||||
Style="{StaticResource ImageButtonStyle}" /> | Style="{StaticResource ImageButtonStyle}" /> | ||||
<Button | <Button | ||||
Name ="Close" | |||||
Name="Close" | |||||
Width="80" | Width="80" | ||||
Height="40" | Height="40" | ||||
Margin="2,0,2,0" | Margin="2,0,2,0" | ||||
@@ -159,35 +168,55 @@ | |||||
<!--#region 表格标题栏设置--> | <!--#region 表格标题栏设置--> | ||||
<Grid | <Grid | ||||
Grid.Row="2" | |||||
Margin="0,10,0,0" | |||||
Background="#ff0C255F"> | |||||
Grid.Row="2" | |||||
Margin="0,10,0,0" | |||||
Background="#ff0C255F"> | |||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
<ColumnDefinition Width="1*"/> | |||||
<ColumnDefinition Width="1*"/> | |||||
<ColumnDefinition Width="1*"/> | |||||
<ColumnDefinition Width="1*"/> | |||||
<ColumnDefinition Width="1*"/> | |||||
<ColumnDefinition Width="1*"/> | |||||
<ColumnDefinition Width="1*" /> | |||||
<ColumnDefinition Width="1*" /> | |||||
<ColumnDefinition Width="1*" /> | |||||
<ColumnDefinition Width="1*" /> | |||||
<ColumnDefinition Width="1*" /> | |||||
<ColumnDefinition Width="1*" /> | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid Grid.Column="0"> | <Grid Grid.Column="0"> | ||||
<TextBlock Text="原料名称" HorizontalAlignment="Center" FontSize="16"/> | |||||
<TextBlock | |||||
HorizontalAlignment="Center" | |||||
FontSize="16" | |||||
Text="原料名称" /> | |||||
<Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | <Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | ||||
</Grid> | </Grid> | ||||
<Grid Grid.Column="1"> | <Grid Grid.Column="1"> | ||||
<TextBlock Text="原料类型" HorizontalAlignment="Center" FontSize="16"/> | |||||
<TextBlock | |||||
HorizontalAlignment="Center" | |||||
FontSize="16" | |||||
Text="原料类型" /> | |||||
<Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | <Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | ||||
</Grid> | </Grid> | ||||
<TextBlock Grid.Column="2" Text="原料位置" HorizontalAlignment="Center" FontSize="16"/> | |||||
<TextBlock | |||||
Grid.Column="2" | |||||
HorizontalAlignment="Center" | |||||
FontSize="16" | |||||
Text="原料位置" /> | |||||
<Grid Grid.Column="3"> | <Grid Grid.Column="3"> | ||||
<TextBlock Text="原料桶号" HorizontalAlignment="Center" FontSize="16"/> | |||||
<TextBlock | |||||
HorizontalAlignment="Center" | |||||
FontSize="16" | |||||
Text="原料桶号" /> | |||||
<Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | <Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | ||||
</Grid> | </Grid> | ||||
<TextBlock Grid.Column="4" Text="原料重量(kg)" HorizontalAlignment="Center" FontSize="16" /> | |||||
<TextBlock | |||||
Grid.Column="4" | |||||
HorizontalAlignment="Center" | |||||
FontSize="16" | |||||
Text="原料重量(kg)" /> | |||||
<Grid Grid.Column="5"> | <Grid Grid.Column="5"> | ||||
<TextBlock Text="功能操作" HorizontalAlignment="Center" FontSize="16" /> | |||||
<Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | |||||
<TextBlock | |||||
HorizontalAlignment="Center" | |||||
FontSize="16" | |||||
Text="功能操作" /> | |||||
<Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | |||||
</Grid> | </Grid> | ||||
<Border Grid.ColumnSpan="10" BorderThickness="1,0,1,0" /> | <Border Grid.ColumnSpan="10" BorderThickness="1,0,1,0" /> | ||||
</Grid> | </Grid> | ||||
@@ -206,49 +235,32 @@ | |||||
<ColumnDefinition /> | <ColumnDefinition /> | ||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Grid Grid.Column="0"> | <Grid Grid.Column="0"> | ||||
<TextBox | |||||
Text="{Binding RawMaterialName}" /> | |||||
<Border | |||||
BorderThickness="1,0,1,0" | |||||
Cursor="SizeWE" /> | |||||
<TextBox Text="{Binding RawMaterialName}" /> | |||||
<Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | |||||
</Grid> | </Grid> | ||||
<Grid Grid.Column="1"> | <Grid Grid.Column="1"> | ||||
<TextBox | |||||
Text="{Binding RawMaterialType}" /> | |||||
<Border | |||||
BorderThickness="1,0,1,0" | |||||
Cursor="SizeWE" /> | |||||
<TextBox Text="{Binding RawMaterialType}" /> | |||||
<Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | |||||
</Grid> | </Grid> | ||||
<TextBox | |||||
Grid.Column="2" | |||||
Text="{Binding RawMaterialLocation }" /> | |||||
<TextBox Grid.Column="2" Text="{Binding RawMaterialLocation}" /> | |||||
<Grid Grid.Column="3"> | <Grid Grid.Column="3"> | ||||
<TextBox | |||||
Text="{Binding RawMaterialBarrelNum}" /> | |||||
<Border | |||||
BorderThickness="1,0,1,0" | |||||
Cursor="SizeWE" /> | |||||
<TextBox Text="{Binding RawMaterialBarrelNum}" /> | |||||
<Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | |||||
</Grid> | </Grid> | ||||
<TextBox | |||||
Grid.Column="4" | |||||
Text="{Binding RawMaterialWeight}" /> | |||||
<TextBox Grid.Column="4" Text="{Binding RawMaterialWeight}" /> | |||||
<Grid Grid.Column="5"> | <Grid Grid.Column="5"> | ||||
<Button | <Button | ||||
Command="{Binding DataContext.RemoveCommand, RelativeSource={RelativeSource AncestorType=ItemsControl, Mode=FindAncestor}}" | |||||
CommandParameter="{Binding RawMaterialLocation}" | |||||
Content="删除" | |||||
FontSize="16" /> | |||||
<Border | |||||
BorderThickness="1,0,1,0" | |||||
Cursor="SizeWE" /> | |||||
Command="{Binding DataContext.RemoveCommand, RelativeSource={RelativeSource AncestorType=ItemsControl, Mode=FindAncestor}}" | |||||
CommandParameter="{Binding RawMaterialLocation}" | |||||
Content="删除" | |||||
FontSize="16" /> | |||||
<Border BorderThickness="1,0,1,0" Cursor="SizeWE" /> | |||||
</Grid> | </Grid> | ||||
<Border | |||||
Grid.ColumnSpan="10" | |||||
BorderThickness="1,0,1,1" /> | |||||
<Border Grid.ColumnSpan="10" BorderThickness="1,0,1,1" /> | |||||
</Grid> | </Grid> | ||||
<DataTemplate.Triggers> | <DataTemplate.Triggers> | ||||
@@ -23,6 +23,8 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
ThreadManage.GetInstance().StartLong(new Action(() => | ThreadManage.GetInstance().StartLong(new Action(() => | ||||
{ | { | ||||
SystemMode = GVL_SmallStation.GetInstance.PlcSystemMode ? "手动" : "自动"; | SystemMode = GVL_SmallStation.GetInstance.PlcSystemMode ? "手动" : "自动"; | ||||
if (GVL_SmallStation.GetInstance.PlcSystemMode) ManualMode = true; | |||||
else AutoModeStatus = true; | |||||
if (GVL_SmallStation.GetInstance.PlcSystemIsAutoRun) | if (GVL_SmallStation.GetInstance.PlcSystemIsAutoRun) | ||||
{ | { | ||||
if (GVL_SmallStation.GetInstance.PlcSystemIsPause) | if (GVL_SmallStation.GetInstance.PlcSystemIsPause) | ||||
@@ -230,7 +232,7 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
StopAxisLoadCommand = new RelayCommand(() => | StopAxisLoadCommand = new RelayCommand(() => | ||||
{ | { | ||||
ActionManage.GetInstance.Send("StopAxisLoadCommand"); | ActionManage.GetInstance.Send("StopAxisLoadCommand"); | ||||
}); | |||||
}); | |||||
StartAxisMidCommand = new RelayCommand(() => | StartAxisMidCommand = new RelayCommand(() => | ||||
{ | { | ||||
ActionManage.GetInstance.Send("StartAxisMidCommand"); | ActionManage.GetInstance.Send("StartAxisMidCommand"); | ||||
@@ -264,7 +266,7 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
ActionManage.GetInstance.Send("StopAxis2Command"); | ActionManage.GetInstance.Send("StopAxis2Command"); | ||||
}); | }); | ||||
SystemStartCommand = new RelayCommand(() => | |||||
SystemStartCommand = new RelayCommand(() => | |||||
{ | { | ||||
ActionManage.GetInstance.Send("SystemStart"); | ActionManage.GetInstance.Send("SystemStart"); | ||||
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"系统启动!"); | NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"系统启动!"); | ||||
@@ -309,7 +311,7 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
/// </summary> | /// </summary> | ||||
public static ObservableCollection<CylinderModel> PalletCylinders { get; set; } = new ObservableCollection<CylinderModel>(); | public static ObservableCollection<CylinderModel> PalletCylinders { get; set; } = new ObservableCollection<CylinderModel>(); | ||||
public static string SystemMode { get { return _mSystemMode; } set { _mSystemMode = value; OnStaticPropertyChanged(); } } | public static string SystemMode { get { return _mSystemMode; } set { _mSystemMode = value; OnStaticPropertyChanged(); } } | ||||
private static string _mSystemMode =String.Empty; | |||||
private static string _mSystemMode = String.Empty; | |||||
public static string SystemStatus { get { return _mSystemStatus; } set { _mSystemStatus = value; OnStaticPropertyChanged(); } } | public static string SystemStatus { get { return _mSystemStatus; } set { _mSystemStatus = value; OnStaticPropertyChanged(); } } | ||||
@@ -339,13 +341,22 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
public RelayCommand SystemStopCommand { get; set; } | public RelayCommand SystemStopCommand { get; set; } | ||||
public RelayCommand SystemPauseCommand { get; set; } | public RelayCommand SystemPauseCommand { get; set; } | ||||
public RelayCommand SystemResetCommand { get; set; } | public RelayCommand SystemResetCommand { get; set; } | ||||
public RelayCommand AutoMode { get; set; } | public RelayCommand AutoMode { get; set; } | ||||
public RelayCommand DebugMode { get; set; } | public RelayCommand DebugMode { get; set; } | ||||
public bool AutoModeStatus { get { return _mAutoModeStatus; } set { _mAutoModeStatus = value; OnPropertyChanged(); } } | |||||
private bool _mAutoModeStatus; | |||||
public bool ManualMode { get { return _mManualMode; } set { _mManualMode = value; OnPropertyChanged(); } } | |||||
private bool _mManualMode; | |||||
} | } | ||||
public class CylinderModel : ObservableObject | public class CylinderModel : ObservableObject | ||||
@@ -21,7 +21,7 @@ using System.Windows; | |||||
namespace BPASmartClient.JXJFoodSmallStation.ViewModel | namespace BPASmartClient.JXJFoodSmallStation.ViewModel | ||||
{ | { | ||||
public class ManualFlowViewModel:ObservableObject | |||||
public class ManualFlowViewModel : ObservableObject | |||||
{ | { | ||||
public ManualFlowViewModel() | public ManualFlowViewModel() | ||||
{ | { | ||||
@@ -82,7 +82,7 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
ActionManage.GetInstance.Send("AGVPutTrayFinish"); | ActionManage.GetInstance.Send("AGVPutTrayFinish"); | ||||
MessageNotify.GetInstance.ShowUserLog("手动点击按钮,AGV放货架流程完成"); | MessageNotify.GetInstance.ShowUserLog("手动点击按钮,AGV放货架流程完成"); | ||||
}); | }); | ||||
CLearRecipeInfo = new RelayCommand(() => | |||||
CLearRecipeInfo = new RelayCommand(() => | |||||
{ | { | ||||
App.Current.Dispatcher.Invoke(() => | App.Current.Dispatcher.Invoke(() => | ||||
{ | { | ||||
@@ -132,7 +132,7 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
MessageNotify.GetInstance.ShowUserLog($"手动点击按钮,给plc料仓{loc}配料完成信号"); | MessageNotify.GetInstance.ShowUserLog($"手动点击按钮,给plc料仓{loc}配料完成信号"); | ||||
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,手动设置料仓{loc}配料完成"); | NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,手动设置料仓{loc}配料完成"); | ||||
} | } | ||||
else | |||||
else | |||||
{ | { | ||||
MessageNotify.GetInstance.ShowUserLog("料仓编号不正确"); | MessageNotify.GetInstance.ShowUserLog("料仓编号不正确"); | ||||
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,手动设置料仓{loc}配料,料仓编号不正确"); | NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"手动点击按钮,手动设置料仓{loc}配料,料仓编号不正确"); | ||||
@@ -155,7 +155,7 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
Recipe4DosingComplete = GVL_SmallStation.GetInstance.RecipeStockBinDosing[3].ToBinString(); | Recipe4DosingComplete = GVL_SmallStation.GetInstance.RecipeStockBinDosing[3].ToBinString(); | ||||
Recipe5DosingComplete = GVL_SmallStation.GetInstance.RecipeStockBinDosing[4].ToBinString(); | Recipe5DosingComplete = GVL_SmallStation.GetInstance.RecipeStockBinDosing[4].ToBinString(); | ||||
Heartbeat = GVL_SmallStation.GetInstance.HeartBeatFromPlc; | Heartbeat = GVL_SmallStation.GetInstance.HeartBeatFromPlc; | ||||
switch (GVL_SmallStation.GetInstance.SiemensSendRecipeStatus) | |||||
switch (GVL_SmallStation.GetInstance.SiemensSendRecipeStatus) | |||||
{ | { | ||||
case 0: | case 0: | ||||
OrderStatus = IssueRecipeCondition.等待小料站PLC允许下配方.ToString(); | OrderStatus = IssueRecipeCondition.等待小料站PLC允许下配方.ToString(); | ||||
@@ -253,7 +253,7 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
break; | break; | ||||
} | } | ||||
Thread.Sleep(100); | Thread.Sleep(100); | ||||
}), "流程手动设备状态读取",true); | |||||
}), "流程手动设备状态读取", true); | |||||
TimeSet = new RelayCommand(() => | TimeSet = new RelayCommand(() => | ||||
{ | { | ||||
GVL_SmallStation.GetInstance.Time = time; | GVL_SmallStation.GetInstance.Time = time; | ||||
@@ -273,7 +273,7 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
public RelayCommand TimeSet { get; set; } | public RelayCommand TimeSet { get; set; } | ||||
public static bool Heartbeat { get { return _mHeartbeat; } set { _mHeartbeat = value; OnStaticPropertyChanged(); } } | public static bool Heartbeat { get { return _mHeartbeat; } set { _mHeartbeat = value; OnStaticPropertyChanged(); } } | ||||
private static bool _mHeartbeat; | private static bool _mHeartbeat; | ||||
public int time { get { return _mtime; } set { _mtime = value; OnStaticPropertyChanged(); } } | public int time { get { return _mtime; } set { _mtime = value; OnStaticPropertyChanged(); } } | ||||
private int _mtime; | private int _mtime; | ||||
public static string OrderStatus { get { return _mOrderStatus; } set { _mOrderStatus = value; OnStaticPropertyChanged(); } } | public static string OrderStatus { get { return _mOrderStatus; } set { _mOrderStatus = value; OnStaticPropertyChanged(); } } | ||||
@@ -298,8 +298,8 @@ namespace BPASmartClient.JXJFoodSmallStation.ViewModel | |||||
public RelayCommand CLearRecipeInfo { get; set; } | public RelayCommand CLearRecipeInfo { get; set; } | ||||
public RelayCommand SystemReset { get; set; } | public RelayCommand SystemReset { get; set; } | ||||
public RelayCommand BPAResetCommand { get; set; } | public RelayCommand BPAResetCommand { get; set; } | ||||
private bool _SiemensIsConnect { get; set; } | |||||
public bool SiemensIsConnect { get { return _SiemensIsConnect; } set { _SiemensIsConnect = value; OnPropertyChanged(); } } | |||||
private bool _SiemensIsConnect { get; set; } | |||||
public bool SiemensIsConnect { get { return _SiemensIsConnect; } set { _SiemensIsConnect = value; OnPropertyChanged(); } } | |||||
private bool _HKPlcIsConnect { get; set; } | private bool _HKPlcIsConnect { get; set; } | ||||
public bool HKPlcIsConnect { get { return _HKPlcIsConnect; } set { _HKPlcIsConnect = value; OnPropertyChanged(); } } | public bool HKPlcIsConnect { get { return _HKPlcIsConnect; } set { _HKPlcIsConnect = value; OnPropertyChanged(); } } | ||||
private bool _WindSendIsConnect { get; set; } | private bool _WindSendIsConnect { get; set; } | ||||
@@ -56,7 +56,7 @@ namespace BPASmartClient.Modbus | |||||
IPAdress = ip; | IPAdress = ip; | ||||
Port = port; | Port = port; | ||||
modbusFactory = new ModbusFactory(); | modbusFactory = new ModbusFactory(); | ||||
Connect(); | |||||
Connect(); | |||||
if (Connected) | if (Connected) | ||||
{ | { | ||||
master.Transport.ReadTimeout = 3000;//读取超时时间 | master.Transport.ReadTimeout = 3000;//读取超时时间 | ||||
@@ -150,7 +150,7 @@ namespace BPASmartClient.Modbus | |||||
{ | { | ||||
if (ExitAddress >= 0 && ExitAddress <= 7) | if (ExitAddress >= 0 && ExitAddress <= 7) | ||||
{ | { | ||||
return (firstAddress * 8) + ExitAddress; | |||||
return (firstAddress * 8) + ExitAddress; | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -163,12 +163,12 @@ namespace BPASmartClient.Modbus | |||||
return int.Parse(res); | return int.Parse(res); | ||||
} | } | ||||
} | } | ||||
else if(address.ToUpper().Contains("LB") && address.Length >= 3) | |||||
else if (address.ToUpper().Contains("LB") && address.Length >= 3) | |||||
{ | { | ||||
var res = address.Substring(2); | var res = address.Substring(2); | ||||
if (res != null && res.Length > 0) | if (res != null && res.Length > 0) | ||||
{ | { | ||||
if(int.TryParse(res, out int firstAddress)) | |||||
if (int.TryParse(res, out int firstAddress)) | |||||
{ | { | ||||
return firstAddress; | return firstAddress; | ||||
} | } | ||||
@@ -272,7 +272,7 @@ namespace BPASmartClient.Modbus | |||||
CommandType commandType = CommandType.Coils; | CommandType commandType = CommandType.Coils; | ||||
try | try | ||||
{ | { | ||||
if (address.ToUpper().Contains("M") || address.ToUpper().Contains("GM")) | |||||
if (address.ToUpper().Contains("M") || address.ToUpper().Contains("GM")) | |||||
{ | { | ||||
commandType = CommandType.Coils; | commandType = CommandType.Coils; | ||||
return master.ReadCoils(slaveAddress, startAddress, len); | return master.ReadCoils(slaveAddress, startAddress, len); | ||||
@@ -297,7 +297,7 @@ namespace BPASmartClient.Modbus | |||||
{ | { | ||||
commandType = CommandType.HoldingRegisters; | commandType = CommandType.HoldingRegisters; | ||||
var var1 = master.ReadHoldingRegisters(slaveAddress, startAddress, len); | var var1 = master.ReadHoldingRegisters(slaveAddress, startAddress, len); | ||||
var var2 = master.ReadHoldingRegisters(slaveAddress, (ushort)(startAddress+2), len); | |||||
var var2 = master.ReadHoldingRegisters(slaveAddress, (ushort)(startAddress + 2), len); | |||||
int dest = 0; | int dest = 0; | ||||
dest |= (var2[0] & 0x0000ffff); | dest |= (var2[0] & 0x0000ffff); | ||||
dest = (dest << 16) | (var1[0] & 0x0000ffff); | dest = (dest << 16) | (var1[0] & 0x0000ffff); | ||||
@@ -377,6 +377,7 @@ namespace BPASmartClient.Modbus | |||||
master.WriteSingleCoil(slaveAddress, startAddress, boolValue); | master.WriteSingleCoil(slaveAddress, startAddress, boolValue); | ||||
else if (value is bool[] boolsValue) | else if (value is bool[] boolsValue) | ||||
master.WriteMultipleCoils(slaveAddress, startAddress, boolsValue); | master.WriteMultipleCoils(slaveAddress, startAddress, boolsValue); | ||||
else return false; | |||||
} | } | ||||
if (address.ToUpper().Contains("GM") && address.Length >= 3) | if (address.ToUpper().Contains("GM") && address.Length >= 3) | ||||
{ | { | ||||
@@ -385,14 +386,16 @@ namespace BPASmartClient.Modbus | |||||
master.WriteSingleCoil(slaveAddress, startAddress, boolValue); | master.WriteSingleCoil(slaveAddress, startAddress, boolValue); | ||||
else if (value is bool[] boolsValue) | else if (value is bool[] boolsValue) | ||||
master.WriteMultipleCoils(slaveAddress, startAddress, boolsValue); | master.WriteMultipleCoils(slaveAddress, startAddress, boolsValue); | ||||
else return false; | |||||
} | } | ||||
else if(address.ToUpper().Contains("LB")) | |||||
else if (address.ToUpper().Contains("LB")) | |||||
{ | { | ||||
commandType = CommandType.Coils; | commandType = CommandType.Coils; | ||||
if (value is bool boolValue) | if (value is bool boolValue) | ||||
master.WriteSingleCoil(slaveAddress, startAddress, boolValue); | master.WriteSingleCoil(slaveAddress, startAddress, boolValue); | ||||
else if (value is bool[] boolsValue) | else if (value is bool[] boolsValue) | ||||
master.WriteMultipleCoils(slaveAddress, startAddress, boolsValue); | master.WriteMultipleCoils(slaveAddress, startAddress, boolsValue); | ||||
else return false; | |||||
} | } | ||||
else if (address.ToUpper().Contains("VD")) | else if (address.ToUpper().Contains("VD")) | ||||
{ | { | ||||
@@ -405,6 +408,7 @@ namespace BPASmartClient.Modbus | |||||
master.WriteSingleRegister(slaveAddress, startAddress, val1); | master.WriteSingleRegister(slaveAddress, startAddress, val1); | ||||
master.WriteSingleRegister(slaveAddress, (ushort)(startAddress + 1), val2); | master.WriteSingleRegister(slaveAddress, (ushort)(startAddress + 1), val2); | ||||
} | } | ||||
else return false; | |||||
} | } | ||||
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")) | ||||
@@ -439,6 +443,7 @@ namespace BPASmartClient.Modbus | |||||
master.WriteMultipleRegisters(slaveAddress, startAddress, ushortsValue); | master.WriteMultipleRegisters(slaveAddress, startAddress, ushortsValue); | ||||
} | } | ||||
} | } | ||||
else return false; | |||||
} | } | ||||
else if (address.ToUpper().Contains("I")) | else if (address.ToUpper().Contains("I")) | ||||
{ | { | ||||
@@ -497,10 +502,10 @@ namespace BPASmartClient.Modbus | |||||
/// </summary> | /// </summary> | ||||
/// <param name="StartAddress"></param> | /// <param name="StartAddress"></param> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void SetReal(string StartAddress, float value,int Retries = 1) | |||||
public bool SetReal(string StartAddress, float value, int Retries = 1) | |||||
{ | { | ||||
var bytes = BitConverter.GetBytes(value); | var bytes = BitConverter.GetBytes(value); | ||||
Write(StartAddress, bytes.BytesToUshorts(), Retries); | |||||
return Write(StartAddress, bytes.BytesToUshorts(), Retries); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||