diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs index 44df934..a403b38 100644 --- a/src/Khd.Core.Wcs/MainCentralControl.cs +++ b/src/Khd.Core.Wcs/MainCentralControl.cs @@ -77,45 +77,45 @@ namespace Khd.Core.Wcs FirstFloor firstFloor = new(_host, StaticData.PlcDic[0]); firstFloor.StartPoint(); - //二层接驳位 - var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First(); - SecondFloorPoint secondFloorPoint = new(_host, StaticData.PlcDic[0], SecondBaseFloorEquip.floorNo.Value); - secondFloorPoint.StartPoint(); + ////二层接驳位 + //var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First(); + //SecondFloorPoint secondFloorPoint = new(_host, StaticData.PlcDic[0], SecondBaseFloorEquip.floorNo.Value); + //secondFloorPoint.StartPoint(); - //二层AGV - var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First(); - SecondFloorAGV secondFloorAGV = new(_host, StaticData.PlcDic[0], SecondFloorAgvEquip.floorNo.Value); - secondFloorAGV.StartPoint(); + ////二层AGV + //var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First(); + //SecondFloorAGV secondFloorAGV = new(_host, StaticData.PlcDic[0], SecondFloorAgvEquip.floorNo.Value); + //secondFloorAGV.StartPoint(); ////二楼线体 //var SecondFloorLineEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 17).First(); //SecondFloorLine secondFloorLine = new(_host, StaticData.PlcDic[2], SecondFloorLineEquip.floorNo.Value); //secondFloorLine.StartPoint(); - ////三层接驳位 - //var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First(); - //ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value); - //thirdFloorPoint.StartPoint(); + //三层接驳位 + var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First(); + ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value); + thirdFloorPoint.StartPoint(); - ////三层AGV - //var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First(); - //ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[2], ThirdFloorAgvEquip.floorNo.Value); - //thirdFloorAGV.StartPoint(); + //三层AGV + var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First(); + ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[2], ThirdFloorAgvEquip.floorNo.Value); + thirdFloorAGV.StartPoint(); - ////五层接驳位 - //var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First(); - //FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value); - //fifthFloorPoint.StartPoint(); + //五层接驳位 + var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First(); + FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value); + fifthFloorPoint.StartPoint(); ////五层CTU //var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First(); //FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[1], FiveFloorCTUEquip.floorNo.Value); //fiveFloorCTU.StartPoint(); - ////五层AGV - //var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First(); - //FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value); - //fifthFloorAGV.StartPoint(); + //五层AGV + var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First(); + FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value); + fifthFloorAGV.StartPoint(); //背负式Agv //var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First(); diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index 1217fbe..6a05908 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -1783,13 +1783,13 @@ namespace Khd.Core.Wcs.Wcs if (location.locDeep == 1) { int? row = 0; - if (location.locRow % 2 == 1) + if (location.locRow % 2 == 1)//五楼原材料与其他的深浅库位相反 { - row = location.locRow + 1; + row = location.locRow - 1; } else { - row = location.locRow - 1; + row = location.locRow + 1; } var lowLocationBill = bill.Where(t => t.a.locRow == row).Where(t => t.a.locColumn == location.locColumn).Where(t => t.a.warehouseId == location.warehouseId).FirstOrDefault(); if (lowLocationBill != null) diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs index aff88d2..93c6bd6 100644 --- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs +++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs @@ -521,6 +521,8 @@ namespace Khd.Core.Wcs.Wcs BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun")); StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString()); + Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); + LogManager.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" }); lineEquip.equipStatus = 1; @@ -535,6 +537,8 @@ namespace Khd.Core.Wcs.Wcs wcsTask.remark = "提升机任务执行中"; StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.fromFloorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层 StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString()); + Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.fromFloorNo + "楼指令"); + LogManager.Info("提升机下发去往" + wcsTask.fromFloorNo + "楼指令"); dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 1, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" }); lineEquip.equipStatus = 1; @@ -557,6 +561,8 @@ namespace Khd.Core.Wcs.Wcs BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun")); StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString()); + Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); + LogManager.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" }); dbContext.SaveChanges(); @@ -572,6 +578,8 @@ namespace Khd.Core.Wcs.Wcs wcsTask.updateTime = DateTime.Now; wcsTask.remark = "提升机任务执行完成"; StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层 + Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.floorNo + "楼目的地指令"); + LogManager.Info("提升机下发去往" + wcsTask.floorNo + "楼目的地指令"); dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); dbContext.SaveChanges(); @@ -586,22 +594,41 @@ namespace Khd.Core.Wcs.Wcs var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress); if (linesignal != null && Convert.ToInt32(linesignal) == 0) { + BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}"); + var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress); + if (clearPoint != null && Convert.ToInt32(clearPoint.plcpointAddress) == 1) + { + Console.WriteLine(DateTime.Now + ":提升机下发报警消除指令"); + LogManager.Info("提升机下发报警消除指令"); + StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, "0", clearPoint.plcpointLength.ToString()); + } wcsTask.taskStatus = 4; wcsTask.updateBy = "提升机线程"; wcsTask.updateTime = DateTime.Now; wcsTask.remark = "提升机任务执行完成"; BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun")); StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去 + Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.floorNo + "楼出库指令"); + LogManager.Info("提升机下发" + wcsTask.floorNo + "楼出库指令"); dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); dbContext.SaveChanges(); } else { - BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}"); - StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); + BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}"); + var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress); + if (clearPoint != null && Convert.ToInt32(clearPoint.plcpointAddress) == 0) + { + StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, "1", clearPoint.plcpointLength.ToString()); + } } } + else + { + Console.WriteLine(DateTime.Now + ":一楼托盘库有任务正在执行,等待任务执行完成"); + LogManager.Info("一楼托盘库有任务正在执行,等待任务执行完成"); + } } else { @@ -614,6 +641,8 @@ namespace Khd.Core.Wcs.Wcs wcsTask.remark = "提升机任务执行完成"; BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun")); StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去 + Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.floorNo + "楼出库指令"); + LogManager.Info("提升机下发" + wcsTask.floorNo + "楼出库指令"); dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); dbContext.SaveChanges(); @@ -635,6 +664,8 @@ namespace Khd.Core.Wcs.Wcs wcsTask.updateTime = DateTime.Now; wcsTask.remark = "提升机任务执行完成"; lineEquip.equipStatus = 0; + Console.WriteLine(DateTime.Now + ":提升机任务完成" + wcsTask.fromFloorNo + "---" + wcsTask.floorNo + "楼指令"); + LogManager.Info("提升机任务完成" + wcsTask.fromFloorNo + "---" + wcsTask.floorNo + "楼指令"); dbContext.Update(lineEquip); dbContext.Update(wcsTask); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5, nextPointId = floorEquip.objid, nextPointNo = floorEquip.equipNo, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs index 106baa5..526189a 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs @@ -2,6 +2,7 @@ using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library.Mapper; +using Khd.Core.Plc.S7; using Khd.Core.Wcs.Global; using Masuit.Tools; using Masuit.Tools.Logging; @@ -121,6 +122,7 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -183,6 +185,7 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -242,6 +245,7 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -301,6 +305,7 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -361,6 +366,7 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -420,6 +426,7 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -479,6 +486,7 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -533,6 +541,7 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发继续任务成功:" + message); + Console.WriteLine(DateTime.Now + ":五楼Agv继续任务:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); wcsCmd.cmdStatus = 4; dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); dbContext.Update(wcsCmd); @@ -543,7 +552,6 @@ namespace Khd.Core.Wcs.Wcs } else if (wcsCmd.cmdStatus == 5) { - LogManager.Info("五楼叉车线程完成任务" + wcsCmd.objid); Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); LogManager.Info("五楼Agv完成任务成功:" + wcsCmd.ToJsonString()); if (item.taskType == 66)//移库 @@ -902,6 +910,24 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { + if (ex is PlcException) + { + try + { + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } + } + catch + { + + } + } LogManager.Error(ex); } finally diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs index 83f6166..8f2fc28 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs @@ -271,8 +271,14 @@ namespace Khd.Core.Wcs.Wcs { try { - StaticData.PlcDic[1] = new Plc.S7.Plc(StaticData.PlcDic[1].CPU, StaticData.PlcDic[1].IP, StaticData.PlcDic[1].Port, StaticData.PlcDic[1].Rack, StaticData.PlcDic[1].Slot); - StaticData.PlcDic[1].Open(); + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } } catch { @@ -727,8 +733,14 @@ namespace Khd.Core.Wcs.Wcs { try { - StaticData.PlcDic[1] = new Plc.S7.Plc(StaticData.PlcDic[1].CPU, StaticData.PlcDic[1].IP, StaticData.PlcDic[1].Port, StaticData.PlcDic[1].Rack, StaticData.PlcDic[1].Slot); - StaticData.PlcDic[1].Open(); + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } } catch { diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs index 38984bf..fba28f1 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs @@ -1,6 +1,7 @@ using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library.Mapper; +using Khd.Core.Plc.S7; using Khd.Core.Wcs.Global; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; @@ -82,8 +83,6 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.outstockFlag == "0") .Where(t => t.warehouseId == 511) .Where(t => t.locationStatus == "1") - //.Where(t => t.locationStatus == "1") - //.Where(t => string.IsNullOrEmpty(t.containerCode)) .ToList(); if (wmsBaseLocations.Count > 0) { @@ -213,14 +212,23 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { - try - { - StaticData.PlcDic[0] = new Plc.S7.Plc(StaticData.PlcDic[0].CPU, StaticData.PlcDic[0].IP, StaticData.PlcDic[0].Port, StaticData.PlcDic[0].Rack, StaticData.PlcDic[0].Slot); - StaticData.PlcDic[0].Open(); - } - catch + if (ex is PlcException) { + try + { + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } + } + catch + { + } } LogManager.Error(ex); } diff --git a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs index d161195..873c5b9 100644 --- a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs @@ -1,5 +1,6 @@ using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; +using Khd.Core.Plc.S7; using Khd.Core.Wcs.Global; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; @@ -112,6 +113,24 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { + if (ex is PlcException) + { + try + { + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } + } + catch + { + + } + } LogManager.Error(ex); } finally diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs index 13b06e2..f256acd 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs @@ -325,18 +325,18 @@ namespace Khd.Core.Wcs.Wcs { reqCode = wcsCmd.objid.ToString(), positionCodePath = new List - { - new () { - positionCode=wcsCmd.currPointNo, - type="00" + new () + { + positionCode=wcsCmd.currPointNo, + type="00" + }, + new () + { + positionCode=wcsCmd.nextPointNo, + type="00" + } }, - new () - { - positionCode=wcsCmd.nextPointNo, - type="00" - } - }, taskTyp = baseDictionary.dicValue, ctnrTyp = "2", }; @@ -345,7 +345,7 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + LogManager.Info("二楼AGV线程下发任务" + wcsCmd.ToJsonString() + "\n" + message); Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; @@ -1050,7 +1050,24 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { + if (ex is PlcException) + { + try + { + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } + } + catch + { + } + } LogManager.Error(ex); } finally diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs index 72ee23a..0646579 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs @@ -1,6 +1,7 @@ using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library.Mapper; +using Khd.Core.Plc.S7; using Khd.Core.Wcs.Global; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; @@ -256,6 +257,24 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { + if (ex is PlcException) + { + try + { + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } + } + catch + { + + } + } LogManager.Error(ex); } finally diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs index f18edf9..311b3d5 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs @@ -1,6 +1,7 @@ using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library.Mapper; +using Khd.Core.Plc.S7; using Khd.Core.Wcs.Global; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; @@ -301,15 +302,23 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { - - try - { - StaticData.PlcDic[0] = new Plc.S7.Plc(StaticData.PlcDic[0].CPU, StaticData.PlcDic[0].IP, StaticData.PlcDic[0].Port, StaticData.PlcDic[0].Rack, StaticData.PlcDic[0].Slot); - StaticData.PlcDic[0].Open(); - } - catch + if (ex is PlcException) { + try + { + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } + } + catch + { + } } LogManager.Error(ex); } diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs index 131ae3e..b77c79c 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs @@ -2,6 +2,7 @@ using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library.Mapper; +using Khd.Core.Plc.S7; using Khd.Core.Wcs.Global; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; @@ -90,6 +91,24 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { + if (ex is PlcException) + { + try + { + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } + } + catch + { + + } + } LogManager.Error(ex); } Thread.Sleep(3000); @@ -906,6 +925,24 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { + if (ex is PlcException) + { + try + { + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } + } + catch + { + + } + } LogManager.Error(ex); } finally diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs index b63e3d5..d07ca97 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs @@ -1,6 +1,7 @@ using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library.Mapper; +using Khd.Core.Plc.S7; using Khd.Core.Wcs.Global; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; @@ -69,8 +70,8 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.instockFlag == "0") .Where(t => t.outstockFlag == "0") .Where(t => t.locationStatus == "1") - .OrderByDescending(t=>t.locRow) - .ThenByDescending(t=>t.locColumn) + .OrderByDescending(t => t.locRow) + .ThenByDescending(t => t.locColumn) .ToList(); List containerCodes = wmsBaseLocations.Where(t => t.locDeep == 1).Select(t => t.containerCode).ToList();//深库位的托盘 @@ -111,16 +112,7 @@ namespace Khd.Core.Wcs.Wcs newTask.nextPointNo = AgvEquip.equipNo; newTask.endPointId = wmsBaseLocation.locationId; newTask.endPointNo = wmsBaseLocation.locationCode; - if (wmsBaseLocation.warehouseId == 311) - { - newTask.taskType = 39; - } - else - { - Console.WriteLine("查找入库库位失败"); - Thread.Sleep(1000); - continue; - } + newTask.taskType = 39; newTask.useFlag = 1; wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.locationStatus = "2"; @@ -161,6 +153,24 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { + if (ex is PlcException) + { + try + { + foreach (var item in StaticData.PlcDic) + { + if (item.Value.IP == ex.Message) + { + StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot); + StaticData.PlcDic[item.Key].Open(); + } + } + } + catch + { + + } + } LogManager.Error(ex); } finally