diff --git a/src/Khd.Core.Api/appsettings.json b/src/Khd.Core.Api/appsettings.json index 73658d4..344b949 100644 --- a/src/Khd.Core.Api/appsettings.json +++ b/src/Khd.Core.Api/appsettings.json @@ -1,19 +1,20 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - }, - "AppSettings": { - "SiteCode": "999" - } - }, + //"Logging": { + // "LogLevel": { + // "Default": "Information", + // "Microsoft": "Warning", + // "Microsoft.Hosting.Lifetime": "Information" + // }, + // "AppSettings": { + // "SiteCode": "999" + // } + //}, "AllowedHosts": "*", "ConnectionStrings": { + "DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;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", //"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", - "DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" + //"DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" }, "JwtSecurityOption": { "SigningKey": "3c41f60c-1d12-11ec-890d-00163e1b8678", diff --git a/src/Khd.Core.Application/WcsTaskApplication.cs b/src/Khd.Core.Application/WcsTaskApplication.cs index 9764269..262cf54 100644 --- a/src/Khd.Core.Application/WcsTaskApplication.cs +++ b/src/Khd.Core.Application/WcsTaskApplication.cs @@ -65,7 +65,9 @@ namespace Khd.Core.Application wcscmd.sendFlag = 1; wcsTask.taskStatus = 2; _dbContext.WcsCmd.Update(wcscmd); + _dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 2 }); _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 }); _dbContext.SaveChanges(); reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.message = "成功"; @@ -76,7 +78,9 @@ namespace Khd.Core.Application wcscmd.cmdStatus = 4; wcsTask.taskStatus = 4; _dbContext.WcsCmd.Update(wcscmd); + _dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 4 }); _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 }); _dbContext.SaveChanges(); reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.message = "成功"; @@ -88,7 +92,9 @@ namespace Khd.Core.Application wcscmd.cmdStatus = 3; wcsTask.taskStatus = 3; _dbContext.WcsCmd.Update(wcscmd); + _dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 3 }); _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 }); _dbContext.SaveChanges(); reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.message = "成功"; @@ -96,14 +102,34 @@ namespace Khd.Core.Application //放货完成 if (agvCallbackDto.method.ToLower() == "end") { - wcscmd.cmdStatus = 5; - wcscmd.sendFlag = 1; - wcsTask.taskStatus = 5; - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsTask.Update(wcsTask); - _dbContext.SaveChanges(); - reponseagvCallbackDto.code = "0"; - reponseagvCallbackDto.message = "成功"; + if (wcsTask.nextPointId !=10) + { + wcscmd.cmdStatus = 5; + wcscmd.sendFlag = 1; + wcsTask.taskStatus = 5; + + _dbContext.WcsCmd.Update(wcscmd); + _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 5 }); + _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 }); + _dbContext.SaveChanges(); + reponseagvCallbackDto.code = "0"; + reponseagvCallbackDto.message = "成功"; + } + else + { + wcscmd.cmdStatus = 6; + wcscmd.sendFlag = 1; + wcsTask.taskStatus = 6; + _dbContext.WcsCmd.Update(wcscmd); + _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 6 }); + _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); + _dbContext.SaveChanges(); + reponseagvCallbackDto.code = "0"; + reponseagvCallbackDto.message = "成功"; + } + } } } @@ -151,8 +177,7 @@ namespace Khd.Core.Application try { _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - string stationId = agvCompeletedRequest.stationNo; - BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == stationId); + BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == agvCompeletedRequest.endStationCode); if (baseEquip != null) { var wcsCmd = _dbContext.WcsCmd.Where(t => t.nextPointId == baseEquip.objid).FirstOrDefault(); @@ -163,10 +188,12 @@ namespace Khd.Core.Application { agvCompeletedResponse.code = "0"; agvCompeletedResponse.message = "成功"; - wcsCmd.cmdStatus = 6; - wcsTask.taskStatus = 6; + wcsCmd.cmdStatus = 7; + wcsTask.taskStatus = 7; _dbContext.WcsCmd.Update(wcsCmd); + _dbContext.WcsCmdLog.Where(t=>t.objid==wcsCmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 7 }); _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 }); _dbContext.SaveChanges(); } } @@ -201,14 +228,15 @@ namespace Khd.Core.Application try { _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - WcsTask wcsTask = _dbContext.WcsTask - .Where(t => t.materialId == taskContinue.materialId) + var wcsTask = _dbContext.WcsTask .Where(t => t.taskType == 47) + .Where(t=>t.masterId==taskContinue.materialId) .FirstOrDefault(); if (wcsTask != null) { wcsTask.useFlag = 1; _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(a => new WcsTaskLog { useFlag = 1 }); _dbContext.SaveChanges(); compeletedResponse.code = "0"; compeletedResponse.message = "成功"; @@ -239,13 +267,13 @@ namespace Khd.Core.Application _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); WcsTask wcsTask = _dbContext.WcsTask .Where(t => t.taskType == 28) - .Where(t=>t.startPointNo==taskReturn.PointNo) - .Where(t => t.materialId == taskReturn.materialId) + .Where(t=>t.endPointNo==taskReturn.endStationCode) .FirstOrDefault(); if (wcsTask != null) { wcsTask.useFlag = 1; _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTask.Where(t=>t.objid==wcsTask.objid).Update(a=>new WcsTask { useFlag = 1 }); _dbContext.SaveChanges(); compeletedResponse.code = "0"; compeletedResponse.message = "成功"; diff --git a/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs b/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs index c73435e..fc8f9a4 100644 --- a/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs +++ b/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs @@ -9,7 +9,7 @@ namespace Khd.Core.Domain.Dto.webapi public class AgvCompeleted { public string stationId { get; set; } - public string stationNo { get; set; } + public string endStationCode { get; set; } public string stationState { get; set; } public string method { get; set; } } @@ -17,13 +17,13 @@ namespace Khd.Core.Domain.Dto.webapi public class TaskContinue { public long? materialId { get; set; } - public string PointNo { get; set; } + public string endStationCode { get; set; } } public class TaskReturn { public long? materialId { get; set; } - public string PointNo { get; set; } + public string endStationCode { get; set; } } public class AgvCompeletedResponse diff --git a/src/Khd.Core.Plc/S7/PLCHelpers.cs b/src/Khd.Core.Plc/S7/PLCHelpers.cs index 0b224b8..380d211 100644 --- a/src/Khd.Core.Plc/S7/PLCHelpers.cs +++ b/src/Khd.Core.Plc/S7/PLCHelpers.cs @@ -261,5 +261,6 @@ namespace Khd.Core.Plc.S7 return package.ToArray(); } + } } diff --git a/src/Khd.Core.Plc/StaticPlcHelper.cs b/src/Khd.Core.Plc/StaticPlcHelper.cs index bd5549a..b42b890 100644 --- a/src/Khd.Core.Plc/StaticPlcHelper.cs +++ b/src/Khd.Core.Plc/StaticPlcHelper.cs @@ -52,6 +52,7 @@ namespace Khd.Core.Plc return Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Trim(); } + /// /// 电气写入点位高低位转换 /// diff --git a/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj b/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj index 3887259..b97046c 100644 --- a/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj +++ b/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj @@ -29,13 +29,6 @@ - - - ..\..\dll\S7.Net.dll - True - - - PreserveNewest @@ -46,4 +39,8 @@ + + + + diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs index 0faa19f..cbbd6c9 100644 --- a/src/Khd.Core.Wcs/MainCentralControl.cs +++ b/src/Khd.Core.Wcs/MainCentralControl.cs @@ -36,11 +36,13 @@ namespace Khd.Core.Wcs /// public void Start() { - try - { //加载配置项 + + try + { using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); + //加载配置项 //设置程序启动时清空点位的数据=>0为 Int16位 QingKongDianWei = StaticPlcHelper.GetValue("2", "0"); //设置默认处理完成=>1为 Int16位 @@ -51,6 +53,7 @@ namespace Khd.Core.Wcs StaticData.BaseEquip = dbContext.BaseEquip.ToList(); StaticData.basePlcs = dbContext.BasePlc.ToList(); StaticData.BaseDictionary = dbContext.BaseDictionary.ToList(); + foreach (var plcConfig in StaticData.PlcConfigs) { if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code)) @@ -59,7 +62,7 @@ namespace Khd.Core.Wcs plc = new Plc.S7.Plc(plcConfig.CpuType, plcConfig.IP, plcConfig.Port, plcConfig.Rack, plcConfig.Slot); try { - plc.Open(); + //plc.Open(); Console.WriteLine(DateTime.Now + ":连接到PLC:" + plcConfig.IP); } catch @@ -69,8 +72,8 @@ namespace Khd.Core.Wcs StaticData.PlcDic.TryAdd(plcConfig.Code, plc); } } - //SystemTimer systemTimer = new SystemTimer(_host); - //systemTimer.Start(); + SystemTimer systemTimer = new SystemTimer(_host); + systemTimer.Start(); //创建任务 CreateTaskByRecord createTaskByRecord = new(_host, ""); createTaskByRecord.StartPoint(); @@ -124,9 +127,9 @@ namespace Khd.Core.Wcs //FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[2], FifthFloorAgvEquip.floorNo.Value, FifthFloorAgvEquip.equipNo); //fifthFloorAGV.StartPoint(); - //var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 11).First(); - //FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[0], FifthFloorBearAgvEquip.floorNo.Value, FifthFloorBearAgvEquip.equipNo); - //fiveFloorBearAgv.StartPoint(); + var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 11).First(); + FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[1], FifthFloorBearAgvEquip.floorNo.Value, FifthFloorBearAgvEquip.equipNo); + fiveFloorBearAgv.StartPoint(); } catch (Exception ex) { diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index 93875a5..6266d11 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -62,8 +62,8 @@ namespace Khd.Core.Wcs.Wcs /// public void StartPoint() { - //var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic); - //createBearAgvReturnThread.Start(); + var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic); + createBearAgvReturnThread.Start(); //var createRawInWareTaskThread = new Thread(CreateRawInWareTaskLogic); //createRawInWareTaskThread.Start(); @@ -348,12 +348,11 @@ namespace Khd.Core.Wcs.Wcs try { dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - var wmsRawReturns = dbContext.WmsRawReturn.Where(t => t.executeStatus == "0") + var wmsRawReturn = dbContext.WmsRawReturn .Where(t => t.auditStatus == "1") - .ToList(); - if (wmsRawReturns != null && wmsRawReturns.Count > 0) + .FirstOrDefault(); + if (wmsRawReturn != null) { - WmsRawReturn wmsRawReturn = wmsRawReturns.First(); if (wmsRawReturn.executeStatus == "0") { //任务未开始Status=0 @@ -389,6 +388,8 @@ namespace Khd.Core.Wcs.Wcs }; wmsRawReturn.executeStatus = "1"; dbContext.Add(wcsTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Add(wcsTaskLog); dbContext.Update(wmsRawReturn); dbContext.SaveChanges(); } @@ -1108,13 +1109,5 @@ namespace Khd.Core.Wcs.Wcs } - //五楼原材料出库,完成 - //五楼原材料出库到组装区,完成 - //五楼成品出库完成 - - //五楼原材料返库待完成 - //五楼背板安装--半成品基本完成,待完善 - //五楼原材料--背板安装待完成 - //五楼原材料--柜体验收待完成 } } diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs index cd6a304..c579aab 100644 --- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs +++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs @@ -181,11 +181,11 @@ namespace Khd.Core.Wcs.Wcs materialId = material.materialId, qty = Convert.ToInt32(material.bindAmount), startPointId = F01, - startPointNo = "F01", + startPointNo = "TSJ_01", currPointId = F01, - currPointNo = "F01", + currPointNo = "TSJ_01", nextPointId = T01, - nextPointNo = "T01", + nextPointNo = "TSJ_01", endPointId = warehouseId, fromFloorNo = 1, floorNo = TargetFloor.warehouseFloor, @@ -208,9 +208,9 @@ namespace Khd.Core.Wcs.Wcs if (task.nextPointId != T01) { task.currPointId = F01; - task.currPointNo = "F01"; + task.currPointNo = "TSJ_01"; task.nextPointId = T01; - task.nextPointNo = "T01"; + task.nextPointNo = "TSJ_01"; task.taskStatus = 0; task.updateBy = "一楼接驳位线程"; task.updateTime = DateTime.Now; diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs index cefcc86..ee9c260 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs @@ -4,10 +4,13 @@ using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library.Mapper; using Khd.Core.Wcs.Global; +using Masuit.Tools; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Newtonsoft.Json; +using System.Diagnostics; +using Thrift.Protocol; using Z.EntityFramework.Plus; namespace Khd.Core.Wcs.Wcs @@ -75,10 +78,6 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.useFlag == 1) .Where(t => t.nextPointId == agvID).OrderBy(t => t.createTime).ToList(); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - if (taskList.Count == 0) - { - LogManager.Info(FloorNo + "楼AGV无任务"); - } foreach (var item in taskList) { if (taskList.Where(t => t.taskStatus > 0).Where(t => t.objid != item.objid).Any()) @@ -132,6 +131,7 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { + LogManager.Info("五楼Agv下发任务成功:" + message); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -202,6 +202,7 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { + LogManager.Info("五楼Agv下发任务成功:" + message); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -262,6 +263,7 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { + LogManager.Info("五楼Agv下发任务成功:" + message); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -320,6 +322,7 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { + LogManager.Info("五楼Agv下发任务成功:" + message); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -378,6 +381,7 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { + LogManager.Info("五楼Agv下发任务成功:" + message); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -437,6 +441,7 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { + LogManager.Info("五楼Agv下发任务成功:" + message); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -495,6 +500,7 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { + LogManager.Info("五楼Agv下发任务成功:" + message); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -553,6 +559,7 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { + LogManager.Info("五楼Agv下发任务成功:" + message); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -574,6 +581,7 @@ namespace Khd.Core.Wcs.Wcs WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid); if (wcsCmd != null) { + if (wcsCmd.cmdStatus == 3) { var agvTask = new RequestAGVTaskDto @@ -586,6 +594,7 @@ namespace Khd.Core.Wcs.Wcs ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { + LogManager.Info("五楼Agv下发继续任务成功:" + message); wcsCmd.cmdStatus = 4; dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); dbContext.Update(wcsCmd); @@ -596,6 +605,9 @@ 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 == 49) { WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); @@ -619,6 +631,10 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(wmsProductStock); } } + dbContext.Remove(wcsCmd); + dbContext.Remove(item); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); + dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); dbContext.Update(fromBaseLocation); dbContext.Update(toBaseLocation); dbContext.SaveChanges(); @@ -664,8 +680,8 @@ namespace Khd.Core.Wcs.Wcs } else if (item.taskType == 38)//出库 { - var wmsProductOutstockDetails = dbContext.WmsProductOutstockDetail.Where(t => t.productOutstockId == item.orderId ); - var wmsProductOutstockDetail = wmsProductOutstockDetails.FirstOrDefault(t=> t.executeStatus == "1" && t.locationCode == item.currPointNo); + var wmsProductOutstockDetails = dbContext.WmsProductOutstockDetail.Where(t => t.productOutstockId == item.orderId); + var wmsProductOutstockDetail = wmsProductOutstockDetails.FirstOrDefault(t => t.executeStatus == "1" && t.locationCode == item.currPointNo); var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == item.orderId); if (wmsProductOutstockDetail != null && wmsProductOutstock != null) { @@ -687,20 +703,25 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(wmsBaseLocation); dbContext.WmsProductStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete(); BaseEquip floorLineEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == 5); - item.nextPointId = floorLineEquip.objid; - item.nextPointNo = floorLineEquip.equipNo; - item.fromFloorNo = 5; - item.floorNo = 1; - item.taskStatus = 6; + WcsTask newTask = CoreMapper.Map(item); + newTask.createTime=DateTime.Now; + newTask.nextPointId = floorLineEquip.objid; + newTask.nextPointNo = floorLineEquip.equipNo; + newTask.fromFloorNo = 5; + newTask.floorNo = 1; + newTask.taskStatus = 6; + newTask.objid=StaticData.SnowId.NextId(); lineEquip.equipStatus = 0; dbContext.Update(lineEquip); - dbContext.Update(item); + dbContext.Add(newTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); + dbContext.Add(wcsTaskLog); + dbContext.Remove(item); + dbContext.WcsCmd.Remove(wcsCmd); + dbContext.SaveChanges(); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6, nextPointId = floorLineEquip.objid, nextPointNo = floorLineEquip.equipNo, fromFloorNo = 5, floorNo = 1 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); - dbContext.SaveChanges(); } - } else if (item.taskType == 33)//原材料到背板安装 { @@ -712,11 +733,11 @@ namespace Khd.Core.Wcs.Wcs wmsBaseLocation.updateBy = "WCS"; dbContext.Update(wmsBaseLocation); dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete(); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); - dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); + dbContext.WcsCmd.Remove(wcsCmd); + dbContext.WcsTask.Remove(item); + dbContext.SaveChanges(); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); - dbContext.SaveChanges(); } else if (item.taskType == 34)//半成品入库 { @@ -768,8 +789,8 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(startEquip); dbContext.Add(wmsProductStock); dbContext.Update(wmsBaseLocation); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); - dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); + dbContext.WcsCmd.Remove(wcsCmd); + dbContext.WcsTask.Remove(item); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); dbContext.SaveChanges(); @@ -779,7 +800,6 @@ namespace Khd.Core.Wcs.Wcs } else if (item.taskType == 46)//该任务结束后,立刻生成一个新的返库任务,但是是否使用标志未0,等待mes通知 { - WcsTask newTask = CoreMapper.Map(item); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId); wmsBaseLocation.outstockFlag = "0"; wmsBaseLocation.instockFlag = "1"; @@ -795,24 +815,26 @@ namespace Khd.Core.Wcs.Wcs wmsRawStock.updateBy = "WCS"; dbContext.Update(wmsRawStock); dbContext.Update(wmsBaseLocation); - dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); - item.objid = StaticData.SnowId.NextId(); - item.currPointId = item.endPointId; - item.currPointNo = item.endPointNo; - item.endPointId = item.startPointId; - item.endPointNo = item.startPointNo; - item.startPointId = item.currPointId; - item.startPointNo = item.currPointNo; - item.taskType = 28; - item.taskStatus = 0; - item.useFlag = 0; - dbContext.Add(item); - WcsTaskLog wcsTaskLog = CoreMapper.Map(item); + WcsTask newTask = CoreMapper.Map(item); + newTask.objid = StaticData.SnowId.NextId(); + newTask.currPointId = item.endPointId; + newTask.currPointNo = item.endPointNo; + newTask.endPointId = item.startPointId; + newTask.endPointNo = item.startPointNo; + newTask.startPointId = item.currPointId; + newTask.createTime = DateTime.Now; + newTask.startPointNo = item.currPointNo; + newTask.taskType = 28; + newTask.taskStatus = 0; + newTask.useFlag = 0; + dbContext.Remove(item); + dbContext.Remove(wcsCmd); + WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); + dbContext.Add(newTask); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); + dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); } } @@ -837,13 +859,12 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(startEquip); dbContext.Update(wmsRawStock); dbContext.Update(wmsBaseLocation); - dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); + dbContext.Remove(item); + dbContext.Remove(wcsCmd); + dbContext.SaveChanges(); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); - dbContext.SaveChanges(); } - } else if (item.taskType == 47) { @@ -883,11 +904,11 @@ namespace Khd.Core.Wcs.Wcs }; dbContext.Add(wmsRawStock); dbContext.Add(wmsBaseLocation); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); - dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); + dbContext.Remove(item); + dbContext.Remove(wcsCmd); dbContext.SaveChanges(); + dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); } } } diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs index 84c609f..9f30ce0 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs @@ -3,6 +3,7 @@ using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library.Mapper; using Khd.Core.Wcs.Global; +using Masuit.Tools; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -129,6 +130,8 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.code == "0") { + LogManager.Info("五楼背负式AGV线程下发任务" + agvTask.ToJsonString()); + Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程下发任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); wcsCmd.taskCode = reponseMessage.data; wcsCmd.cmdStatus = 1; item.taskStatus = 1; @@ -151,7 +154,7 @@ namespace Khd.Core.Wcs.Wcs WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid); if (wcsCmd != null) { - if (wcsCmd.cmdStatus == 3) + if (wcsCmd.cmdStatus == 4) { var agvTask = new RequestAGVTaskDto { @@ -163,23 +166,19 @@ namespace Khd.Core.Wcs.Wcs ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 }); - dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); + LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid); + Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid); + dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 5 }); + dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 5 }); + dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 5 }); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 5 }); dbContext.SaveChanges(); } } - else if (wcsCmd.cmdStatus == 5) - { - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 6 }); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); - dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 }); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); - dbContext.SaveChanges(); - } else if (wcsCmd.cmdStatus == 7) { + LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid); + Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid); var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), @@ -190,10 +189,6 @@ namespace Khd.Core.Wcs.Wcs ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 }); - dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 }); if (item.taskType == 48) { dbContext.WmsRawReturn.Where(t => t.rawReturnId == item.orderId).Update(t => new WmsRawReturn { executeStatus = "2" }); @@ -202,7 +197,12 @@ namespace Khd.Core.Wcs.Wcs { } + dbContext.Remove(wcsCmd); + dbContext.Remove(item); dbContext.SaveChanges(); + dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 10 }); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 10 }); + } } } diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs index 8e8d86f..4706b8f 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs @@ -13,6 +13,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Newtonsoft.Json; using System; +using Thrift.Protocol; using Z.EntityFramework.Plus; namespace Khd.Core.Wcs.Wcs @@ -68,11 +69,11 @@ namespace Khd.Core.Wcs.Wcs public void StartPoint() { - //Thread FlowPointThread = new Thread(MonitorInLocatorPoint); - //FlowPointThread.Start(); + Thread FlowPointThread = new Thread(MonitorInLocatorPoint); + FlowPointThread.Start(); - //Thread FlowCTUInWareThread = new Thread(MonitorInWare); - //FlowCTUInWareThread.Start(); + Thread FlowCTUInWareThread = new Thread(MonitorInWare); + FlowCTUInWareThread.Start(); Thread HeartThread = new Thread(HeartLogic); HeartThread.Start(); @@ -90,13 +91,13 @@ namespace Khd.Core.Wcs.Wcs try { flag = !flag; - this._plc.WriteToPoint(heartPoint.plcpointAddress,flag.ToString(),heartPoint.plcpointLength.ToString()); + this._plc.WriteToPoint(heartPoint.plcpointAddress, flag.ToString(), heartPoint.plcpointLength.ToString()); } catch { try { - this._plc = new Plc.S7.Plc(this._plc.CPU,this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot); + this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot); this._plc.Open(); } catch @@ -219,7 +220,7 @@ namespace Khd.Core.Wcs.Wcs } } } - else if(Convert.ToInt32(receiveMaterial) == 1 && Convert.ToInt32(isArrive) == 1 && string.IsNullOrEmpty(rfid)) + else if (Convert.ToInt32(receiveMaterial) == 1 && Convert.ToInt32(isArrive) == 1 && string.IsNullOrEmpty(rfid)) { if (!Convert.ToBoolean(waring)) { @@ -420,9 +421,6 @@ namespace Khd.Core.Wcs.Wcs dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); dbContext.Add(wcsCmdLog); - WcsOutstockLock wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First(); - wcsOutstockLock.qty++; - dbContext.Update(wcsOutstockLock); dbContext.WcsCmd.Add(wcsCmd); dbContext.SaveChanges(); } @@ -531,6 +529,8 @@ namespace Khd.Core.Wcs.Wcs ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.code == "0") { + LogManager.Info("五楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":五楼CTU线程继续任务" + item.startPointNo + "," + item.endPointNo); dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 }); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); @@ -556,6 +556,8 @@ namespace Khd.Core.Wcs.Wcs ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.code == "0") { + LogManager.Info("五楼CTU线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":五楼CTU线程下发任务" + item.startPointNo + "," + item.endPointNo); dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 }); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); @@ -570,6 +572,8 @@ namespace Khd.Core.Wcs.Wcs } else if (wcsCmd.cmdStatus == 5) { + LogManager.Info("五楼CTU线程完成任务" + wcsCmd.objid); + Console.WriteLine(DateTime.Now + ":五楼CTU线程完成任务" + wcsCmd.objid); if (item.taskType == 30)//出库任务 { WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.taskCode == item.objid.ToString()); @@ -578,23 +582,24 @@ namespace Khd.Core.Wcs.Wcs wmsRawOutstockDetail.executeStatus = "2"; wmsRawOutstockDetail.updateDate = DateTime.Now; dbContext.Update(wmsRawOutstockDetail); - WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation + } + + WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation .First(t => t.locationId == item.startPointId && t.warehouseFloor == 5); - wmsBaseLocation.outstockFlag = "0"; - wmsBaseLocation.locationStatus = "1"; - wmsBaseLocation.locationStatus = "2"; - dbContext.Update(wmsBaseLocation); - dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" }); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Delete(); - dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 }); - dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); - dbContext.SaveChanges(); - int wcsTaskCount = dbContext.WcsTask.Where(t => t.taskType == 30 && t.taskStatus != 6).Count(); - if (wcsTaskCount == 0) - { - this._plc.WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString()); - } + wmsBaseLocation.outstockFlag = "0"; + wmsBaseLocation.locationStatus = "1"; + wmsBaseLocation.locationStatus = "2"; + dbContext.Update(wmsBaseLocation); + dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" }); + dbContext.Remove(wcsCmd); + dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 }); + dbContext.SaveChanges(); + dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); + dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); + int wcsTaskCount = dbContext.WcsTask.Where(t => t.taskType == 30 && t.taskStatus != 6).Count(); + if (wcsTaskCount == 0) + { + this._plc.WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString()); } } else if (item.taskType == 29)//入库任务 @@ -606,9 +611,10 @@ namespace Khd.Core.Wcs.Wcs wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.ContainerStatus = "1"; dbContext.Update(wmsBaseLocation); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); + dbContext.Remove(wcsCmd); + dbContext.Remove(item); + dbContext.SaveChanges(); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); - dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); lock (SystemData.outStockLock) { @@ -619,9 +625,9 @@ namespace Khd.Core.Wcs.Wcs wcsOutstockLock.qty = 0; wcsOutstockLock.boxStatus = 0; dbContext.Update(wcsOutstockLock); + dbContext.SaveChanges(); } } - dbContext.SaveChanges(); } } } diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs index 5bc7dfa..c0e46c3 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs @@ -20,7 +20,7 @@ namespace Khd.Core.Wcs.Wcs { List ScanPoint { get; set; }//点位信息 private readonly IHost _host; - private readonly Plc.S7.Plc _plc; + private Plc.S7.Plc _plc; private readonly BasePlcpoint LineRFID; private readonly BasePlcpoint LineWcsrun; private readonly BasePlcpoint LineSignal; @@ -133,34 +133,34 @@ namespace Khd.Core.Wcs.Wcs var AgvEquip = StaticData.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 5);// if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null) { - wcsTask.taskStatus = 0;//创建状态 - wcsTask.updateTime = DateTime.Now; - wcsTask.currPointId = baseEquip.objid; - wcsTask.currPointNo = baseEquip.equipNo; - wcsTask.nextPointId = AgvEquip.objid; - wcsTask.nextPointNo = AgvEquip.equipNo; - wcsTask.endPointId = wmsBaseLocation.locationId; - wcsTask.endPointNo = wmsBaseLocation.locationCode; - - if(wcsTask.fromFloorNo != 1) + WcsTask newTask = CoreMapper.Map(wcsTask); + newTask.taskStatus = 0;//创建状态 + newTask.updateTime = DateTime.Now; + newTask.currPointId = baseEquip.objid; + newTask.currPointNo = baseEquip.equipNo; + newTask.nextPointId = AgvEquip.objid; + newTask.nextPointNo = AgvEquip.equipNo; + newTask.endPointId = wmsBaseLocation.locationId; + newTask.endPointNo = wmsBaseLocation.locationCode; + newTask.objid = StaticData.SnowId.NextId(); + newTask.createTime = DateTime.Now; + if (newTask.fromFloorNo != 1) { - wcsTask.taskType = 47; - wcsTask.useFlag = 0; + newTask.taskType = 47; + newTask.useFlag = 0; } else { - wcsTask.taskType = 47;//?28? - wcsTask.useFlag = 1; + newTask.taskType = 47;//?28? + newTask.useFlag = 1; } - wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.locationStatus = "2"; dbContext.Update(wmsBaseLocation); - dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Delete(); - wcsTask.objid = StaticData.SnowId.NextId(); - wcsTask.createTime = DateTime.Now; - dbContext.Add(wcsTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Remove(wcsTask); + + dbContext.Add(newTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); } @@ -204,20 +204,21 @@ namespace Khd.Core.Wcs.Wcs continue; } BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.equipType == 2);//提升机 - dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Delete(); - wcsTask.objid = StaticData.SnowId.NextId(); - wcsTask.serialNo = SystemData.GetSerialNo(dbContext); - wcsTask.nextPointId = nextEquip.objid; - wcsTask.nextPointNo = nextEquip.equipNo; - wcsTask.currPointId = baseEquip.objid; - wcsTask.currPointNo = baseEquip.equipNo; - wcsTask.fromFloorNo = FloorNo; - wcsTask.taskType = 6;//成品出库 - wcsTask.floorNo = floor;//出库楼层 - wcsTask.taskStatus = 0; - wcsTask.createTime = DateTime.Now; - dbContext.Add(wcsTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Remove(wcsTask); + WcsTask newTask = CoreMapper.Map(wcsTask); + newTask.objid = StaticData.SnowId.NextId(); + newTask.serialNo = SystemData.GetSerialNo(dbContext); + newTask.nextPointId = nextEquip.objid; + newTask.nextPointNo = nextEquip.equipNo; + newTask.currPointId = baseEquip.objid; + newTask.currPointNo = baseEquip.equipNo; + newTask.fromFloorNo = FloorNo; + newTask.taskType = 6;//成品出库 + newTask.floorNo = floor;//出库楼层 + newTask.taskStatus = 0; + newTask.createTime = DateTime.Now; + dbContext.Add(newTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); dbContext.WcsTaskLog.Add(wcsTaskLog); dbContext.SaveChanges(); } @@ -227,6 +228,15 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { + try + { + this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot); + this._plc.Open(); + } + catch + { + + } LogManager.Error(ex); } finally diff --git a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs index 1de147b..f53e0b5 100644 --- a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs @@ -80,7 +80,7 @@ namespace Khd.Core.Wcs.Wcs var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.orderId == wcsTask.orderId); if (wmsRawOutstock != null) { - BaseEquip endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawOutstock.endStationCode); + var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawOutstock.endStationCode); if (endEquip != null) { floor = endEquip.floorNo; diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs index 127f50d..22cc4b4 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs @@ -1,10 +1,14 @@ using Khd.Core.Domain.Dto.webapi; using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; +using Khd.Core.Library.Mapper; using Khd.Core.Wcs.Global; +using Masuit.Tools; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Newtonsoft.Json; +using System; using Z.EntityFramework.Plus; namespace Khd.Core.Wcs.Wcs @@ -68,14 +72,272 @@ namespace Khd.Core.Wcs.Wcs { using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); + BaseEquip inEquip = StaticData.BaseEquip.First(t => t.objid == 36); + BaseEquip outEquip = StaticData.BaseEquip.First(t => t.objid == 37); + BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 2); + BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.objid == EquipID); while (true) { try { dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); //获取条码号,如果该条码任务存在就继续任务,如果条码不存在,创建入库任务并调度agv - var taskList = dbContext.WcsTask.Where(t => t.nextPointId == EquipID).ToList(); - + var taskList = dbContext.WcsTask + .Where(t => t.useFlag == 1) + .Where(t => t.nextPointId == EquipID).OrderBy(t => t.createTime).ToList(); + dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); + foreach (var item in taskList) + { + if (taskList.Where(t => t.taskStatus > 0).Where(t => t.objid != item.objid).Any()) + { + LogManager.Info($"2楼AGV线程:有其他任务正在执行,跳过当前任务{item.objid}"); + continue; + } + if (item.taskStatus == 0)//下发任务 + { + BaseDictionary baseDictionary = StaticData.BaseDictionary.First(t => t.objid == item.taskType); + if (item.taskType == 50) + { + WcsCmd wcsCmd = new WcsCmd() + { + objid = StaticData.SnowId.NextId(), + cmdStatus = 0, + taskId = item.objid, + useFlag = 1, + cmdType = item.taskType, + containerNo = item.containerNo, + createTime = DateTime.Now, + createBy = FloorNo + "楼AGV", + currPointId = item.currPointId, + currPointNo = lineEquip.agvPositionCode, + nextPointId = item.endPointId, + nextPointNo = inEquip.agvPositionCode, + }; + var agvTask = new RequestAGVTaskDto + { + reqCode = wcsCmd.objid.ToString(), + positionCodePath = new List + { + new () + { + positionCode=wcsCmd.currPointNo, + type="00" + }, + new () + { + positionCode=wcsCmd.nextPointNo, + type="00" + } + }, + taskTyp = baseDictionary.dicValue, + ctnrTyp = "2", + }; + string message = JsonConvert.SerializeObject(agvTask); + string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message); + var reponseMessage = JsonConvert.DeserializeObject(result); + if (reponseMessage != null && reponseMessage.message == "成功") + { + LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo); + wcsCmd.taskCode = reponseMessage.data; + wcsCmd.cmdStatus = 1; + item.taskStatus = 1; + dbContext.Update(item); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); + WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); + dbContext.Add(wcsCmdLog); + dbContext.Add(wcsCmd); + dbContext.SaveChanges(); + } + else + { + LogManager.Info("五楼Agv下发任务失败" + item.taskType + message); + } + } + else if (item.taskType == 51) + { + WcsCmd wcsCmd = new WcsCmd() + { + objid = StaticData.SnowId.NextId(), + cmdStatus = 0, + taskId = item.objid, + useFlag = 1, + cmdType = item.taskType, + containerNo = item.containerNo, + createTime = DateTime.Now, + createBy = FloorNo + "楼AGV", + currPointId = item.currPointId, + currPointNo = lineEquip.agvPositionCode, + nextPointId = item.endPointId, + nextPointNo = outEquip.agvPositionCode, + }; + var agvTask = new RequestAGVTaskDto + { + reqCode = wcsCmd.objid.ToString(), + positionCodePath = new List + { + new () + { + positionCode=wcsCmd.currPointNo, + type="00" + }, + new () + { + positionCode=wcsCmd.nextPointNo, + type="00" + } + }, + taskTyp = baseDictionary.dicValue, + ctnrTyp = "2", + }; + string message = JsonConvert.SerializeObject(agvTask); + string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message); + var reponseMessage = JsonConvert.DeserializeObject(result); + if (reponseMessage != null && reponseMessage.message == "成功") + { + LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo); + wcsCmd.taskCode = reponseMessage.data; + wcsCmd.cmdStatus = 1; + item.taskStatus = 1; + dbContext.Update(item); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); + WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); + dbContext.Add(wcsCmdLog); + dbContext.Add(wcsCmd); + dbContext.SaveChanges(); + } + else + { + LogManager.Info("二楼Agv下发任务失败" + item.taskType + message); + } + } + else if (item.taskType == 52) + { + WcsCmd wcsCmd = new WcsCmd() + { + objid = StaticData.SnowId.NextId(), + cmdStatus = 0, + taskId = item.objid, + useFlag = 1, + cmdType = item.taskType, + containerNo = item.containerNo, + createTime = DateTime.Now, + createBy = FloorNo + "楼AGV", + currPointId = item.currPointId, + currPointNo = lineEquip.agvPositionCode, + nextPointId = item.endPointId, + nextPointNo = lineEquip.agvPositionCode, + }; + var agvTask = new RequestAGVTaskDto + { + reqCode = wcsCmd.objid.ToString(), + positionCodePath = new List + { + new () + { + positionCode=wcsCmd.currPointNo, + type="00" + }, + new () + { + positionCode=wcsCmd.nextPointNo, + type="00" + } + }, + taskTyp = baseDictionary.dicValue, + ctnrTyp = "2", + }; + string message = JsonConvert.SerializeObject(agvTask); + string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message); + var reponseMessage = JsonConvert.DeserializeObject(result); + if (reponseMessage != null && reponseMessage.message == "成功") + { + LogManager.Info("二楼AGV线程继续任务" + item.objid + "," + item.startPointNo + "," + item.endPointNo); + Console.WriteLine(DateTime.Now + ":二楼AGV线程继续任务" + item.startPointNo + "," + item.endPointNo); + wcsCmd.taskCode = reponseMessage.data; + wcsCmd.cmdStatus = 1; + item.taskStatus = 1; + dbContext.Update(item); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); + WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); + dbContext.Add(wcsCmdLog); + dbContext.Add(wcsCmd); + dbContext.SaveChanges(); + } + else + { + LogManager.Info("二楼Agv下发任务失败" + item.taskType + message); + } + } + } + else + { + WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid); + if (wcsCmd != null) + { + LogManager.Info("二楼AGV线程完成任务" + item.objid); + if (wcsCmd.cmdStatus == 3) + { + var agvTask = new RequestAGVTaskDto + { + reqCode = StaticData.SnowId.NextId().ToString(), + taskCode = wcsCmd.taskCode + }; + string message = JsonConvert.SerializeObject(agvTask); + string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message); + ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result); + if (reponseMessage != null && reponseMessage.message == "成功") + { + wcsCmd.cmdStatus = 4; + dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); + dbContext.Update(wcsCmd); + dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); + dbContext.SaveChanges(); + } + } + else if (wcsCmd.cmdStatus == 5) + { + if (item.taskType == 50) + { + dbContext.Remove(item); + dbContext.Remove(wcsCmd); + dbContext.SaveChanges(); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); + dbContext.WcsCmdLog.Where(t => t.taskId == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); + } + else if (item.taskType == 51) + { + WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); + wmsBaseLocation.locationStatus = "1"; + wmsBaseLocation.instockFlag = "0"; + wmsBaseLocation.containerCode = item.containerNo; + dbContext.Update(wmsBaseLocation); + dbContext.Remove(item); + dbContext.Remove(wcsCmd); + dbContext.SaveChanges(); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); + dbContext.WcsCmdLog.Where(t => t.taskId == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); + } + else if (item.taskType == 52) + { + WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId); + wmsBaseLocation.locationStatus = "1"; + wmsBaseLocation.instockFlag = "0"; + wmsBaseLocation.containerCode = null; + dbContext.Update(wmsBaseLocation); + item.taskStatus = 6; + dbContext.Update(item); + dbContext.Remove(wcsCmd); + dbContext.SaveChanges(); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); + dbContext.WcsCmdLog.Where(t => t.taskId == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); + } + } + } + } + } } catch (Exception ex) { diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs index 8103c5f..5ece7ad 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs @@ -1,11 +1,11 @@ using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; +using Khd.Core.Library.Mapper; using Khd.Core.Wcs.Global; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Z.EntityFramework.Plus; - namespace Khd.Core.Wcs.Wcs { /// @@ -15,7 +15,7 @@ namespace Khd.Core.Wcs.Wcs { List ScanPoint { get; set; }//点位信息 private readonly IHost _host; - private readonly Plc.S7.Plc _plc; + private Plc.S7.Plc _plc; private readonly BasePlcpoint LineRFID; private readonly BasePlcpoint LineWcsrun; private readonly BasePlcpoint LineSignal; @@ -65,46 +65,53 @@ namespace Khd.Core.Wcs.Wcs { using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); + BaseEquip inEquip = StaticData.BaseEquip.First(t => t.objid == 36); + BaseEquip outEquip = StaticData.BaseEquip.First(t=>t.objid==37); + BaseEquip lineEquip = StaticData.BaseEquip.First(t=>t.objid==2); + BaseEquip agvEquip = StaticData.BaseEquip.First(t=>t.objid==8); while (true) { try { dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); //入库任务 - var rfid = this._plc.Read(LineRFID.plcpointAddress); + var rfid = this._plc.ReadRFID(LineRFID.plcpointAddress); var isSignal = this._plc.Read(LineSignal.plcpointAddress); - var isPallet = this._plc.Read(LineIsPallet.plcpointAddress); - if (rfid != null && isSignal != null && isPallet != null) + if (rfid != null && isSignal != null) { //正常读到输送线信息 有到位信号,并且有托盘,获取条码信息 - if (Convert.ToInt32(isSignal) > 0 && Convert.ToInt32(isPallet) == 1) + if (Convert.ToInt32(isSignal) == 1) { //获取条码信息 var palletNo = Convert.ToString(rfid); - //获取任务 - var wcsTask = StaticData.WcsTask.Where(t => t.nextPointId == 2 && t.taskType == 3 && t.containerNo == palletNo).FirstOrDefault(); - //判断是否为出库任务 + BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == FloorNo); + var wcsTask = dbContext.WcsTask.OrderBy(t => t.createTime) + .FirstOrDefault(t => t.containerNo == palletNo && t.nextPointId == baseEquip.objid); if (wcsTask != null) { - var wmsProductOutstock = dbContext.WmsProductOutstock.Where(t => t.saleOrderId == wcsTask.orderId).FirstOrDefault(); - if (wmsProductOutstock != null) + if (wcsTask.taskStatus == 5)//入库,提升机任务是完成状态 { - string endStationCode = wmsProductOutstock.endStationCode; - //找到目的地楼层 - int floorNo=0; - //下发去提升机的去向 - this._plc.Write(LineWcsrun.plcpointAddress, 1); - //更新任务 - dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTask() - { - currPointId = 2, - currPointNo = "F02", - floorNo = floorNo, - nextPointId = 6, - nextPointNo = "T01", - updateTime = DateTime.Now, - updateBy = "二楼接驳位", - }); + dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Delete(); + WcsTask newTask = CoreMapper.Map(wcsTask); + newTask.taskStatus = 0; + newTask.objid = StaticData.SnowId.NextId(); + newTask.nextPointId=agvEquip.objid; + newTask.nextPointNo=agvEquip.equipNo; + newTask.createTime = DateTime.Now; + newTask.updateTime = DateTime.Now; + newTask.endPointId=inEquip.objid; + newTask.endPointNo=inEquip.equipNo; + newTask.containerNo=palletNo; + newTask.currPointId=lineEquip.objid; + newTask.currPointNo=lineEquip.equipNo; + newTask.taskType=2; + newTask.useFlag=1; + dbContext.WcsTask.Add(newTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo); + Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo); } } } @@ -112,6 +119,16 @@ namespace Khd.Core.Wcs.Wcs } catch (Exception ex) { + + try + { + this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot); + this._plc.Open(); + } + catch + { + + } LogManager.Error(ex); } finally @@ -120,23 +137,5 @@ namespace Khd.Core.Wcs.Wcs } } } - //获取输送线上的任务 - public WcsTask GetTask(string containerNo, int floorNo, string equipNo) - { - using var scope = _host.Services.CreateScope(); - using var dbContext = scope.ServiceProvider.GetRequiredService(); - var wcsTask = new WcsTask(); - var wareHouseList = StaticData.WmsBaseWarehouse.ToList(); - try - { - wcsTask = StaticData.WcsTask.Where(t => t.currPointNo == equipNo).FirstOrDefault(); - } - catch (Exception ex) - { - LogManager.Info(floorNo + "楼接驳位异常" + ex.Message); - throw; - } - return wcsTask; - } } } diff --git a/src/Khd.Core.Wcs/appsettings.json b/src/Khd.Core.Wcs/appsettings.json index 1b7381e..c273bc0 100644 --- a/src/Khd.Core.Wcs/appsettings.json +++ b/src/Khd.Core.Wcs/appsettings.json @@ -6,14 +6,14 @@ //"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" }, "PlcConfigs": [ - { - "IP": "192.168.2.30", - "Port": 102, //102是默认端口 - "CpuType": 40, - "Rack": 0, - "Slot": 1, - "Code": 0 - }, + //{ + // "IP": "192.168.2.30", + // "Port": 102, //102是默认端口 + // "CpuType": 40, + // "Rack": 0, + // "Slot": 1, + // "Code": 0 + //}, { "IP": "192.168.2.31", "Port": 102, //102是默认端口 @@ -22,14 +22,14 @@ "Slot": 1, "Code": 1 }, - { - "IP": "192.168.2.220", - "Port": 102, //102是默认端口 - "CpuType": 40, - "Rack": 0, - "Slot": 1, - "Code": 2 - } + //{ + // "IP": "192.168.2.220", + // "Port": 102, //102是默认端口 + // "CpuType": 40, + // "Rack": 0, + // "Slot": 1, + // "Code": 2 + //} ], "PLCSetting": { "Mode": "0", diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml index 0d5c79f..3efd4b1 100644 --- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml +++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml @@ -584,7 +584,7 @@ ElementStyle="{StaticResource dgCell}" FontSize="20" Header="起始站点" - IsReadOnly="True" /> + IsReadOnly="True"/>