diff --git a/src/Khd.Core.Wcs/Global/StaticData.cs b/src/Khd.Core.Wcs/Global/StaticData.cs index ca5a8f8..faab248 100644 --- a/src/Khd.Core.Wcs/Global/StaticData.cs +++ b/src/Khd.Core.Wcs/Global/StaticData.cs @@ -63,6 +63,8 @@ namespace Khd.Core.Wcs.Global public static List WcsOutWareOrder = new List(); public static List basePlcs = new List(); public static List PlcConfigs { get; set; } + public static int DeleteLogDay { get; internal set; } + public static Dictionary> PlcPoints = new Dictionary>(); public static Dictionary PlcDic = new Dictionary(); public static JcSnowId SnowId = new JcSnowId(); diff --git a/src/Khd.Core.Wcs/Program.cs b/src/Khd.Core.Wcs/Program.cs index 7949516..f3332fa 100644 --- a/src/Khd.Core.Wcs/Program.cs +++ b/src/Khd.Core.Wcs/Program.cs @@ -91,6 +91,7 @@ internal class Program StaticData.PlcConfigs = configuration.GetSection("PlcConfigs").Get>(); ConnectionStrings.ConnectionString = configuration["ConnectionStrings:DefaultConnection"]; + StaticData.DeleteLogDay= Convert.ToInt32(configuration["DeleteLogDays"] ?? "10"); } private static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index a2b5bd6..563a445 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -387,7 +387,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料 var bill = from a in mesBasePalletInfos - join b in wmsBaseLocations.Where(t => t.locDeep == 1) on a.palletInfoCode equals b.containerCode + join b in wmsBaseLocations.Where(t => t.locDeep == 1&&t.returnFlag=="1") on a.palletInfoCode equals b.containerCode select new { b };//等于当前任务的物料的托盘的库位信息 var outBill = from a in bill @@ -784,7 +784,7 @@ namespace Khd.Core.Wcs.Wcs }; WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); wmsProductInstock.executeStatus = "1"; - wmsBaseLocation.locationStatus = "4"; + wmsBaseLocation.locationStatus = "2"; dbContext.Add(wmsProductInstockDetail); dbContext.Update(wmsProductInstock); dbContext.Update(wmsBaseLocation); @@ -1410,7 +1410,7 @@ namespace Khd.Core.Wcs.Wcs var wmsproStocks = proStock .Where(t => t.productId == item.productId && t.saleOrderId == (item.saleOrderId == null ? 0 : item.saleOrderId) && t.warehouseId == item.warehouseId) - .Select(t => t.palletInfoCode) + .Select(t => t.locationCode) .ToList(); List AllWmsBaseLocations = dbContext.WmsBaseLocation .Where(t => t.activeFlag == "1") @@ -1420,7 +1420,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.warehouseId == item.warehouseId).ToList(); var wmsBaseLocations = AllWmsBaseLocations .Where(t => t.warehouseId == item.warehouseId) - .Where(t => wmsproStocks.Contains(t.containerCode)) + .Where(t => wmsproStocks.Contains(t.locationCode)) .ToList(); decimal needNumber = Convert.ToDecimal(item.applyQty - item.outstockQty); @@ -1434,7 +1434,7 @@ namespace Khd.Core.Wcs.Wcs var bill = from a in wmsBaseLocations from b in proStock - where a.containerCode == b.palletInfoCode + where a.locationCode == b.locationCode select new { a, b }; WmsBaseLocation? location = null; WmsProductStock? stock = null; @@ -1447,7 +1447,7 @@ namespace Khd.Core.Wcs.Wcs stock = b.b; WcsTask wcsTask; stock.updateDate = DateTime.Now; - MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode); + MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == stock.palletInfoCode); if (mesBasePalletInfo != null) { if (location.locDeep == 1)//如果是深库位 @@ -1482,9 +1482,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.activeFlag == "1") .Where(t => t.delFlag == "0") .Where(t => t.locationScrapType == "1") - .Where(t => t.locationStatus == "1") - .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(); toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) .Where(t => t.warehouseId != location.locationId) @@ -1560,7 +1558,7 @@ namespace Khd.Core.Wcs.Wcs objid = StaticData.SnowId.NextId(), orderId = item.productOutstockId, taskType = 50, - containerNo = location.containerCode, + containerNo = stock.palletInfoCode, createBy = "WCS", createTime = DateTime.Now, taskStatus = 0, diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs index 5abcf8b..d2ffd26 100644 --- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs +++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs @@ -290,14 +290,18 @@ namespace Khd.Core.Wcs.Wcs BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 1); if (Convert.ToInt32(linesignal01Value) == 1) { - bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 6 && t.currPointId == 1).Any(); + var wcsTasks = dbContext.WcsTask.ToList(); + var hasTask = wcsTasks.Where(t => t.nextPointId == 6 && (t.currPointId == 1 || t.endPointId == 1 && t.taskStatus < 5 && t.taskStatus >= 1)).Any(); if (hasTask) { continue; } //判断task表里没有该rfid的未完成的入库 //信息,未下发去向 - var task = dbContext.WcsTask.Where(t => t.IsDelete == 0 || t.IsDelete == null).Where(t => t.nextPointId == 1).OrderBy(t => t.createTime).FirstOrDefault(); + var task = wcsTasks.Where(t => t.IsDelete == 0 || t.IsDelete == null) + .Where(t => t.nextPointId == 1) + .OrderBy(t => t.createTime).FirstOrDefault(); + if (task == null) { if (BigContainerCodes.Contains(RFID001Value)) diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs index 4324d27..871decd 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs @@ -114,7 +114,7 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { _logger.Info("五楼Agv下发任务成功:" + message); - Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + item.containerNo + "," + nextEquip.agvPositionCode); + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + item.currPointNo + "," + nextEquip.agvPositionCode); item.taskCode = reponseMessage.data; item.taskStatus = 1; lineEquip.equipStatus = 1; @@ -427,20 +427,30 @@ namespace Khd.Core.Wcs.Wcs var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault(); if (wmsRawStock != null) { - wmsRawStock.locationCode = item.currPointNo; + wmsRawStock.locationCode = item.endPointNo; dbContext.Update(wmsRawStock); } - else + else if(wmsRawStock == null) { var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo); if (wmsProductStock != null) { - wmsProductStock.locationCode = item.currPointNo; + wmsProductStock.locationCode = item.endPointNo; dbContext.Update(wmsProductStock); } + else + { + continue; + } } + else + { + continue; + } + WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First(); dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation { + returnFlag="0", locationStatus = "1", containerCode = null, updateTime = DateTime.Now @@ -448,6 +458,7 @@ namespace Khd.Core.Wcs.Wcs dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).Update(t => new WmsBaseLocation { locationStatus = "1", + returnFlag=wmsBaseLocation.returnFlag, containerCode = item.containerNo, updateTime = DateTime.Now }); @@ -517,9 +528,9 @@ namespace Khd.Core.Wcs.Wcs wmsRawOutstockDetail.executeStatus = "2"; wmsRawOutstock.executeStatus = "2"; WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); + wmsBaseLocation.returnFlag = "0"; wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.containerCode = null; - wmsBaseLocation.returnFlag = "0"; wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; dbContext.Update(wmsRawOutstock); @@ -543,7 +554,7 @@ namespace Khd.Core.Wcs.Wcs wmsBaseLocation.updateBy = "WCS"; var mesBasePalletInfo = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == item.containerNo).FirstOrDefault(); var wmsProductInstock = dbContext.WmsProductInstock - .Where(t => t.executeStatus == "1" && t.productType == "2" && t.warehouseFloor == 5) + .Where(t => t.executeStatus == "1" && t.productType == "2" && t.warehouseId == 521) .FirstOrDefault(); if (mesBasePalletInfo != null && wmsProductInstock != null) { @@ -626,10 +637,10 @@ namespace Khd.Core.Wcs.Wcs _logger.Info("五楼Agv完成任务成功:" + item.ToJsonString()); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); wmsBaseLocation.locationStatus = "1"; + wmsBaseLocation.returnFlag = "1"; wmsBaseLocation.containerCode = item.containerNo; wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; - wmsBaseLocation.returnFlag = "1"; MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == item.containerNo); if (mesBasePalletInfo != null) { @@ -705,12 +716,13 @@ namespace Khd.Core.Wcs.Wcs materialId = mesBasePalletInfo.materialId, qualityStatus = "0", rawStockId = StaticData.SnowId.NextId(), - completeFlag = "1", + completeFlag = item.fromFloorNo==4?"0":"1", instockBatch = mesBaseBarcodeInfo.barcodeInfo, updateBy = "WCS", updateDate = DateTime.Now, warehouseId = 511, }; + wmsBaseLocation.returnFlag = "0"; BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 5); lineEquip.equipStatus = 0; dbContext.Update(lineEquip); diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs index a63f18d..91e082f 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs @@ -103,9 +103,8 @@ namespace Khd.Core.Wcs.Wcs .Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料 var bill = from a in mesBasePalletInfos - join b in wmsBaseLocations.Where(t => t.locDeep == 1) on a.palletInfoCode equals b.containerCode + join b in wmsBaseLocations.Where(t => t.locDeep == 1 && wcsTask.fromFloorNo == 4 ? t.returnFlag == "1" : t.returnFlag == "0") on a.palletInfoCode equals b.containerCode select new { b };//等于当前任务的物料的托盘的库位信息 - var outBill = from a in bill from b in wmsBaseLocations where b.locDeep == 2 @@ -113,13 +112,13 @@ namespace Khd.Core.Wcs.Wcs && a.b.locColumn == b.locColumn && b.locationStatus == "1" && string.IsNullOrEmpty(b.containerCode) - select new { a,b };//在上面的基础上获取对应托盘的外侧库位的空库位信息 + select new { a, b };//在上面的基础上获取对应托盘的外侧库位的空库位信息 WmsBaseLocation? wmsBaseLocation = null; - wmsBaseLocation ??= outBill.Where(t=>!canNotIn.Contains(t.b.locationCode)).FirstOrDefault()?.b;//先找相同物料的外侧库位 + wmsBaseLocation ??= outBill.Where(t => !canNotIn.Contains(t.b.locationCode)).FirstOrDefault()?.b;//先找相同物料的外侧库位 wmsBaseLocation ??= wmsBaseLocations.Where(t => !canNotIn.Contains(t.locationCode)).Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(t => t.locDeep == 1);//找不到再找深库位 wmsBaseLocation ??= wmsBaseLocations.Where(t => !canNotIn.Contains(t.locationCode)).Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位 - //深浅库位问题?库位入库优先级等 + //深浅库位问题?库位入库优先级等 var AgvEquip = StaticData.BaseEquip.First(t => t.objid == 28);//5楼叉车 if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null) @@ -207,7 +206,7 @@ namespace Khd.Core.Wcs.Wcs { if (ex is PlcException) { - + } else { diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs index 42983ef..8c40543 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs @@ -489,8 +489,7 @@ namespace Khd.Core.Wcs.Wcs if (item.currPointId == lineEquip.objid) { var lineSignal02 = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02").plcpointAddress); - var rfid = StaticData.PlcDic[0].ReadRFID(StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID002").plcpointAddress); - if (lineSignal02 != null && rfid != null && rfid == item.containerNo && lineSignal02.ToString() == "1") + if (lineSignal02 != null && lineSignal02.ToString() == "1") { var agvTask = new RequestAGVTaskDto { @@ -743,7 +742,7 @@ namespace Khd.Core.Wcs.Wcs var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo); if (wmsProductStock != null) { - wmsProductStock.locationCode = item.currPointNo; + wmsProductStock.locationCode = item.endPointNo; dbContext.Update(wmsProductStock); } dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation @@ -755,7 +754,7 @@ namespace Khd.Core.Wcs.Wcs dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).Update(t => new WmsBaseLocation { locationStatus = "1", - containerCode = item.containerNo, + containerCode = item.endPointNo, updateTime = DateTime.Now }); dbContext.Remove(item); diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs index 0c09ce3..fd9fd1d 100644 --- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs +++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs @@ -18,9 +18,6 @@ namespace Khd.Core.Wcs.Wcs { private readonly LoggerUtils _logger = new LoggerUtils(); private readonly IHost host; - private Plc.S7.Plc Plc30 = StaticData.PlcDic[0]; - private Plc.S7.Plc Plc31 = StaticData.PlcDic[1]; - private Plc.S7.Plc Plc220 = StaticData.PlcDic[2]; public SystemTimer(IHost host) { @@ -73,6 +70,10 @@ namespace Khd.Core.Wcs.Wcs Console.WriteLine($"{DateTime.Now}: SystemTimer started"); } + /// + /// 定时清除日志文件 + /// + /// private void DeleteLogsLogic(object? obj) { while (true) @@ -89,7 +90,7 @@ namespace Khd.Core.Wcs.Wcs { if (DateTime.TryParse(dirName, out DateTime dt)) { - if (dt < DateTime.Now.AddDays(-5)) + if (dt < DateTime.Now.AddDays(-StaticData.DeleteLogDay)) { Directory.Delete(s, true); _logger.Info($"日志{dirName}已删除"); @@ -107,6 +108,10 @@ namespace Khd.Core.Wcs.Wcs } } + /// + /// 删除任务 + /// + /// private void DeleteTaskLogic(object? obj) { using var scope = host.Services.CreateScope(); @@ -432,11 +437,11 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(cardStatus); dbContext.SaveChanges(); var quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); - this.Plc220.WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); + StaticData.PlcDic[2].WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); var XPlc = basePlcs.First(t => t.Name.Contains('X')); var Ylc = basePlcs.First(t => t.Name.Contains('Y')); - this.Plc220.WriteToPoint(XPlc.Address, cardStatus.PosY.ToString(), XPlc.type); - this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); + StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosY.ToString(), XPlc.type); + StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); } } catch @@ -472,11 +477,11 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(cardStatus); dbContext.SaveChanges(); var quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); - this.Plc220.WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); + StaticData.PlcDic[2].WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); var XPlc = basePlcs.First(t => t.Name.Contains('X')); var Ylc = basePlcs.First(t => t.Name.Contains('Y')); - this.Plc220.WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); - this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); + StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); + StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); } } catch @@ -502,21 +507,21 @@ namespace Khd.Core.Wcs.Wcs { WcsCmd wcsCmd = wcsCmds.First(); var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); - Plc220.WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type); + StaticData.PlcDic[2].WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type); var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - Plc220.WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type); + StaticData.PlcDic[2].WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); string cmdType = StaticData.BaseDictionary.First(t => t.objid == wcsCmd.cmdType).ToPlc; - Plc220.WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); } else { var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); - this.Plc220.WriteToPoint(endPlc.Address, "0", endPlc.type); + StaticData.PlcDic[2].WriteToPoint(endPlc.Address, "0", endPlc.type); var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - Plc220.WriteToPoint(startPlc.Address, "0", startPlc.type); + StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); - Plc220.WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); } var data = new { @@ -529,31 +534,31 @@ namespace Khd.Core.Wcs.Wcs { var cardStatus = reponse.data.First(t => t.RobotCode == "2034"); var quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); - this.Plc220.WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); + StaticData.PlcDic[2].WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); var XPlc = basePlcs.First(t => t.Name.Contains('X')); var Ylc = basePlcs.First(t => t.Name.Contains('Y')); - this.Plc220.WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); - this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); + StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); + StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼背负式").ToList(); cardStatus = reponse.data.First(t => t.RobotCode == "6011"); quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); - this.Plc220.WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); + StaticData.PlcDic[2].WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); XPlc = basePlcs.First(t => t.Name.Contains('X')); Ylc = basePlcs.First(t => t.Name.Contains('Y')); - this.Plc220.WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); - this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); + StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); + StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼CTU").ToList(); cardStatus = reponse.data.First(t => t.RobotCode == "8161"); quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); - this.Plc220.WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); + StaticData.PlcDic[2].WriteToPoint(quantityPlc.Address, cardStatus.Battery, quantityPlc.type); XPlc = basePlcs.First(t => t.Name.Contains("X")); Ylc = basePlcs.First(t => t.Name.Contains("Y")); - this.Plc220.WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); - this.Plc220.WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); + StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); + StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); } } @@ -573,21 +578,21 @@ namespace Khd.Core.Wcs.Wcs { WcsCmd wcsCmd = wcsCmds.First(); var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); - Plc220.WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type); + StaticData.PlcDic[2].WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type); var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - Plc220.WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type); + StaticData.PlcDic[2].WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); string cmdType = StaticData.BaseDictionary.First(t => t.objid == wcsCmd.cmdType).ToPlc; - Plc220.WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); } else { var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); - this.Plc220.WriteToPoint(endPlc.Address, "0", endPlc.type); + StaticData.PlcDic[2].WriteToPoint(endPlc.Address, "0", endPlc.type); var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - Plc220.WriteToPoint(startPlc.Address, "0", startPlc.type); + StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); - Plc220.WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); } } @@ -625,13 +630,13 @@ namespace Khd.Core.Wcs.Wcs var endPlcs = basePlcs.Where(t => t.Name.Contains("目的地")).OrderBy(t => t.Name).ToList(); for (int i = 0; i < endPlcs.Count; i++) { - this.Plc220.WriteToPoint(endPlcs[i].Address, endList[i].ToString(), endPlcs[i].type); + StaticData.PlcDic[2].WriteToPoint(endPlcs[i].Address, endList[i].ToString(), endPlcs[i].type); } var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - Plc220.WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type); + StaticData.PlcDic[2].WriteToPoint(startPlc.Address, wcsCmd.currPointId.ToString(), startPlc.type); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); string cmdType = StaticData.BaseDictionary.First(t => t.objid == wcsCmd.cmdType).ToPlc; - Plc220.WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); } else @@ -639,12 +644,12 @@ namespace Khd.Core.Wcs.Wcs var endPlcs = basePlcs.Where(t => t.Name.Contains("目的地")).OrderBy(t => t.Name).ToList(); for (int i = 0; i < endPlcs.Count; i++) { - this.Plc220.WriteToPoint(endPlcs[i].Address, "0", endPlcs[i].type); + StaticData.PlcDic[2].WriteToPoint(endPlcs[i].Address, "0", endPlcs[i].type); } var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - Plc220.WriteToPoint(startPlc.Address, "0", startPlc.type); + StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type); var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); - Plc220.WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); } } @@ -663,27 +668,27 @@ namespace Khd.Core.Wcs.Wcs { if (item.a.plcpointNo.Contains("RFID")) { - string? rfid = Plc31.ReadRFID(item.a.plcpointAddress); + string? rfid = StaticData.PlcDic[1].ReadRFID(item.a.plcpointAddress); if (!string.IsNullOrEmpty(rfid)) { rfid = rfid[(rfid.IndexOf("C") + 1)..]; - Plc220.WriteToPoint(item.b.Address, rfid, item.b.type); + StaticData.PlcDic[2].WriteToPoint(item.b.Address, rfid, item.b.type); } else { - Plc220.WriteToPoint(item.b.Address, "0", item.b.type); + StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); } } else { - var value = Plc31.Read(item.a.plcpointAddress); + var value = StaticData.PlcDic[1].Read(item.a.plcpointAddress); if (value != null && !string.IsNullOrEmpty(value.ToString())) { - Plc220.WriteToPoint(item.b.Address, value.ToString(), item.b.type); + StaticData.PlcDic[2].WriteToPoint(item.b.Address, value.ToString(), item.b.type); } else { - Plc220.WriteToPoint(item.b.Address, "0", item.b.type); + StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); } } } @@ -705,27 +710,27 @@ namespace Khd.Core.Wcs.Wcs { if (item.a.plcpointNo.Contains("RFID")) { - string? rfid = Plc30.ReadRFID(item.a.plcpointAddress); + string? rfid = StaticData.PlcDic[0].ReadRFID(item.a.plcpointAddress); if (!string.IsNullOrEmpty(rfid)) { rfid = rfid[(rfid.IndexOf("JYHB") + 4)..]; - Plc220.WriteToPoint(item.b.Address, rfid, item.b.type); + StaticData.PlcDic[2].WriteToPoint(item.b.Address, rfid, item.b.type); } else { - Plc220.WriteToPoint(item.b.Address, "0", item.b.type); + StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); } } else { - var value = Plc30.Read(item.a.plcpointAddress); + var value = StaticData.PlcDic[0].Read(item.a.plcpointAddress); if (value != null && !string.IsNullOrEmpty(value.ToString())) { - Plc220.WriteToPoint(item.b.Address, value.ToString(), item.b.type); + StaticData.PlcDic[2].WriteToPoint(item.b.Address, value.ToString(), item.b.type); } else { - Plc220.WriteToPoint(item.b.Address, "0", item.b.type); + StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); } } } diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs index 24b9ac2..92a62b6 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs @@ -545,7 +545,7 @@ namespace Khd.Core.Wcs.Wcs var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault(); if (wmsRawStock != null) { - wmsRawStock.locationCode = item.currPointNo; + wmsRawStock.locationCode = item.endPointNo; dbContext.Update(wmsRawStock); } dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation diff --git a/src/Khd.Core.Wcs/appsettings.json b/src/Khd.Core.Wcs/appsettings.json index 0679e37..b4585b3 100644 --- a/src/Khd.Core.Wcs/appsettings.json +++ b/src/Khd.Core.Wcs/appsettings.json @@ -5,6 +5,7 @@ //"DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" //"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" }, + "DeleteLogDays": 10,//删除日志的时间间隔,单位:天 "PlcConfigs": [ { "IP": "192.168.2.30", diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml index f27845f..21f22a3 100644 --- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml +++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml @@ -1945,6 +1945,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +