diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs index 49278e1..d2d3011 100644 --- a/src/Khd.Core.Wcs/MainCentralControl.cs +++ b/src/Khd.Core.Wcs/MainCentralControl.cs @@ -1,4 +1,5 @@ -using Khd.Core.EntityFramework; +using Khd.Core.Domain.Models; +using Khd.Core.EntityFramework; using Khd.Core.Library; using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Wcs; @@ -36,6 +37,8 @@ namespace Khd.Core.Wcs using var dbContext = scope.ServiceProvider.GetRequiredService(); try { + dbContext.WmsBaseLocation.Update(t => new Dictionary() { { "1", new WmsBaseLocation { locationStatus="1" } } }); + StaticData.BasePlcpointList = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList();//设备交互用 StaticData.basePlcs = dbContext.BasePlc.ToList();//陈工Agv和设备信息推送 StaticData.BaseEquip = dbContext.BaseEquip.ToList();//设备信息 diff --git a/src/Khd.Core.Wcs/TaskTypeEnum.cs b/src/Khd.Core.Wcs/TaskTypeEnum.cs new file mode 100644 index 0000000..b21d764 --- /dev/null +++ b/src/Khd.Core.Wcs/TaskTypeEnum.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Khd.Core.Wcs +{ + public enum TaskTypeEnum:int + { + /// + /// 五楼原材料拆分 + /// + FIVE_RAW_SPLIT= 46, + /// + /// 五楼原材料拆分返库 + /// + FIVE_RAW_SPLIT_RETURN= 28, + /// + /// 五楼原材料入库 + /// + FIVE_RAW_IN=47, + /// + /// 五楼成品出库 + /// + FIVE_PRODUCK_OUT=38, + /// + /// 五楼原材料到背板安装 + /// + FIVE_RAW_TO_BACK=33, + /// + /// 五楼半成品入库 + /// + FIVE_PRODUCK_HALF_IN=34, + /// + /// 五楼移库 + /// + FIVE_MOVE=66, + } +} diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs index c5c343e..de4ec36 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs @@ -7,7 +7,6 @@ using Khd.Core.Wcs.Global; using Masuit.Tools; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Z.EntityFramework.Plus; namespace Khd.Core.Wcs.Wcs { diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs index c08e523..7e059b5 100644 --- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs +++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs @@ -13,7 +13,7 @@ namespace Khd.Core.Wcs.Wcs { public class SystemTimer { - private readonly LoggerUtils _logger = new LoggerUtils(); + private readonly LoggerUtils _logger = new (); private readonly IHost host; public SystemTimer(IHost host) @@ -70,8 +70,7 @@ namespace Khd.Core.Wcs.Wcs /// /// 定时清除日志文件 /// - /// - private void DeleteLogsLogic(object? obj) + private void DeleteLogsLogic() { while (true) { @@ -108,8 +107,7 @@ namespace Khd.Core.Wcs.Wcs /// /// 删除任务 /// - /// - private void DeleteTaskLogic(object? obj) + private void DeleteTaskLogic() { using var scope = host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); @@ -188,7 +186,10 @@ namespace Khd.Core.Wcs.Wcs } } - private void PlcHearBeat220Logic(object? obj) + /// + /// 定时发送心跳包 + /// + private void PlcHearBeat220Logic() { BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "putTray"); while (true) @@ -216,8 +217,7 @@ namespace Khd.Core.Wcs.Wcs /// /// 定时发送心跳包 /// - /// - private void PlcHeartBeat30Logic(object? obj) + private void PlcHeartBeat30Logic() { BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat30"); bool heartBeatCount = false; @@ -247,8 +247,7 @@ namespace Khd.Core.Wcs.Wcs /// /// 定时发送心跳包 /// - /// - private void PlcHeartBeat31Logic(object? obj) + private void PlcHeartBeat31Logic() { BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "CTUHeart"); bool heartBeatCount = false; @@ -285,8 +284,7 @@ namespace Khd.Core.Wcs.Wcs /// /// 定时更新基础设备信息 /// - /// - private void BaseEquipLogic(object? obj) + private void BaseEquipLogic() { using var scope = host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); @@ -318,110 +316,28 @@ namespace Khd.Core.Wcs.Wcs /// /// 定时同步消息 /// - /// - private void MessageSynchronousLogic(object? obj) + private void MessageSynchronousLogic() { - while (true) { - try - { - try - { - FiveAgvStatusLogic(); - } - catch - { - - } - try - { - SecondAgvLogic(); - } - catch - { - - } - try - { - ThirdAgvLogic(); - } - catch - { - - } - try - { - SendTrayMessage(); - } - catch - { - - } - try - { - HositerLogic(); - } - catch - { - - } - try - { - CtuLineLogic(); - } - catch - { - - } - try - { - FiveAgvLogic(); - } - catch - { - - } - try - { - FiveBearAgvLogic(); - } - catch - { - - } - try - { - CtuCmdLogic(); - } - catch - { - - } - try - { - UpdatePlcPointValue(); - } - catch - { - - } - } - catch (Exception ex) - { - if (ex is PlcException) - { - - } - else - { - _logger.Error(ex.Message + "\n" + ex.StackTrace); - } - } - Thread.Sleep(1000); + FiveAgvStatusLogic(); + SecondAgvLogic(); + ThirdAgvLogic(); + SendTrayMessage(); + HositerLogic(); + CtuLineLogic(); + FiveAgvLogic(); + FiveBearAgvLogic(); + CtuCmdLogic(); + UpdatePlcPointValue(); + BasePlcPointUpdateLogic(); + Thread.Sleep(3000); } } + /// + /// 五楼AGV状态 + /// private void FiveAgvStatusLogic() { try @@ -456,38 +372,87 @@ namespace Khd.Core.Wcs.Wcs } } - private void SendTrayMessage() + /// + /// 获取Plc的值 + /// + private void BasePlcPointUpdateLogic() { - using var scope = host.Services.CreateScope(); - using var dbContext = scope.ServiceProvider.GetRequiredService(); - BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 40); - BasePlcpoint oneInPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneIn"); - BasePlcpoint oneOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneOut"); - BasePlcpoint someOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someOut"); - BasePlcpoint someInPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someIn"); - BasePlc basePlc = StaticData.basePlcs.First(t => t.Name == "托盘库去向"); - BasePlc basePlc2 = StaticData.basePlcs.First(t => t.Name == "托盘库数量"); - string? value = "0"; - if (StaticData.PlcDic[0].Read(oneInPoint.plcpointAddress)?.ToString() == "1") + try { - value = "1"; + using var scope = host.Services.CreateScope(); + using var dbContext = scope.ServiceProvider.GetRequiredService(); + List plcs = StaticData.PlcDic.Values.ToList(); + foreach (var item in StaticData.BasePlcpointList.Where(t => !string.IsNullOrEmpty(t.plcpointAddress))) + { + if (!string.IsNullOrEmpty(item.plcpointAddress)) + { + try + { + if (item.plcpointNo.Contains("RFID")) + item.definefield1 = plcs.Where(t => t.IP == item.definefield3).First().ReadRFID(item.plcpointAddress)?.ToString(); + else + item.definefield1 = plcs.Where(t => t.IP == item.definefield1).First().Read(item.plcpointAddress)?.ToString(); + } + catch + { + + } + } + } + dbContext.UpdateRange(StaticData.BasePlcpointList.Where(t => !string.IsNullOrEmpty(t.plcpointAddress))); + dbContext.SaveChanges(); } - else if (StaticData.PlcDic[0].Read(oneOutPoint.plcpointAddress)?.ToString() == "1") + catch { - value = "2"; + } - else if (StaticData.PlcDic[0].Read(someOutPoint.plcpointAddress)?.ToString() == "1") - { - value = "3"; - } - else if (StaticData.PlcDic[0].Read(someInPoint.plcpointAddress)?.ToString() == "1") - { - value = "4"; - } - StaticData.PlcDic[2].WriteToPoint(basePlc.Address, value, basePlc.type); - StaticData.PlcDic[2].WriteToPoint(basePlc2.Address, baseEquip.emptyCount.ToString(), basePlc2.type); } + /// + /// 托盘库 + /// + private void SendTrayMessage() + { + try + { + using var scope = host.Services.CreateScope(); + using var dbContext = scope.ServiceProvider.GetRequiredService(); + BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 40); + BasePlcpoint oneInPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneIn"); + BasePlcpoint oneOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneOut"); + BasePlcpoint someOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someOut"); + BasePlcpoint someInPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someIn"); + BasePlc basePlc = StaticData.basePlcs.First(t => t.Name == "托盘库去向"); + BasePlc basePlc2 = StaticData.basePlcs.First(t => t.Name == "托盘库数量"); + string? value = "0"; + if (StaticData.PlcDic[0].Read(oneInPoint.plcpointAddress)?.ToString() == "1") + { + value = "1"; + } + else if (StaticData.PlcDic[0].Read(oneOutPoint.plcpointAddress)?.ToString() == "1") + { + value = "2"; + } + else if (StaticData.PlcDic[0].Read(someOutPoint.plcpointAddress)?.ToString() == "1") + { + value = "3"; + } + else if (StaticData.PlcDic[0].Read(someInPoint.plcpointAddress)?.ToString() == "1") + { + value = "4"; + } + StaticData.PlcDic[2].WriteToPoint(basePlc.Address, value, basePlc.type); + StaticData.PlcDic[2].WriteToPoint(basePlc2.Address, baseEquip.emptyCount.ToString(), basePlc2.type); + } + catch + { + + } + } + + /// + /// 修改Plc点位信息 + /// private void UpdatePlcPointValue() { try @@ -510,7 +475,6 @@ namespace Khd.Core.Wcs.Wcs /// /// 定时更新三楼AGV信息 /// - /// private void ThirdAgvLogic() { try @@ -550,7 +514,6 @@ namespace Khd.Core.Wcs.Wcs /// /// 定时更新二楼AGV信息 /// - /// private void SecondAgvLogic() { try @@ -590,163 +553,179 @@ namespace Khd.Core.Wcs.Wcs /// /// 定时更新五楼AGV信息 /// - /// private void FiveAgvLogic() { - using var scope = host.Services.CreateScope(); - using var dbContext = scope.ServiceProvider.GetRequiredService(); - var baseEquip = StaticData.BaseEquip.First(t => t.objid == 10); - dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - var basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼AGV").ToList(); - List type = new List() { 27, 28, 34, 35, 37, 38, 46, 47 }; - var wcsCmds = dbContext.WcsCmd.Where(t => type.Contains(t.cmdType)).ToList(); - if (wcsCmds.Count > 0) + try { - WcsCmd wcsCmd = wcsCmds.First(); - var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); - StaticData.PlcDic[2].WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type); - var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - 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; - StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); + using var scope = host.Services.CreateScope(); + using var dbContext = scope.ServiceProvider.GetRequiredService(); + var baseEquip = StaticData.BaseEquip.First(t => t.objid == 28); + dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); + var basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼AGV").ToList(); + var wcsCmds = dbContext.WcsTask.Where(t => t.nextPointId == 28).ToList(); + if (wcsCmds.Count > 0) + { + var wcsCmd = wcsCmds.First(); + var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); + StaticData.PlcDic[2].WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type); + var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); + 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.taskType).ToPlc; + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); + } + else + { + var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); + StaticData.PlcDic[2].WriteToPoint(endPlc.Address, "0", endPlc.type); + var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); + StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type); + var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); + } + var data = new + { + reqCode = StaticData.SnowId.NextId(), + mapCode = "EE" + }; + string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms-dps/rest/queryAgvStatus", data.ToJsonString()); + var reponse = JsonConvert.DeserializeObject(result); + if (reponse != null && reponse.code == "0") + { + var cardStatus = reponse.data.First(t => t.RobotCode == "2034"); + var quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); + 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')); + 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("电量")); + 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')); + 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("电量")); + 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")); + StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); + StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); + } } - else + catch { - var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); - StaticData.PlcDic[2].WriteToPoint(endPlc.Address, "0", endPlc.type); - var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type); - var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); - StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); - } - var data = new - { - reqCode = StaticData.SnowId.NextId(), - mapCode = "EE" - }; - string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms-dps/rest/queryAgvStatus", data.ToJsonString()); - var reponse = JsonConvert.DeserializeObject(result); - if (reponse != null && reponse.code == "0") - { - var cardStatus = reponse.data.First(t => t.RobotCode == "2034"); - var quantityPlc = basePlcs.First(t => t.Name.Contains("电量")); - 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')); - 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("电量")); - 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')); - 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("电量")); - 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")); - StaticData.PlcDic[2].WriteToPoint(XPlc.Address, cardStatus.PosX.ToString(), XPlc.type); - StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type); } } /// /// 定时更新五楼背负式AGV信息 /// - /// private void FiveBearAgvLogic() { - using var scope = host.Services.CreateScope(); - using var dbContext = scope.ServiceProvider.GetRequiredService(); - var baseEquip = StaticData.BaseEquip.First(t => t.objid == 10); - dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - var basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼背负式").ToList(); - var wcsCmds = dbContext.WcsCmd.Where(t => t.cmdType == 32 || t.cmdType == 48).ToList(); - if (wcsCmds.Count > 0) + try { - WcsCmd wcsCmd = wcsCmds.First(); - var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); - StaticData.PlcDic[2].WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type); - var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - 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; - StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); + using var scope = host.Services.CreateScope(); + using var dbContext = scope.ServiceProvider.GetRequiredService(); + dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); + var basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼背负式").ToList(); + var wcsCmds = dbContext.WcsTask.Where(t => t.nextPointId == 10).ToList(); + if (wcsCmds.Count > 0) + { + var wcsCmd = wcsCmds.First(); + var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); + StaticData.PlcDic[2].WriteToPoint(endPlc.Address, wcsCmd.nextPointId.ToString(), endPlc.type); + var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); + 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.taskType).ToPlc; + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); + } + else + { + var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); + StaticData.PlcDic[2].WriteToPoint(endPlc.Address, "0", endPlc.type); + var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); + StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type); + var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); + } } - else + catch { - var endPlc = basePlcs.Where(t => t.Name.Contains("目的地")).First(); - StaticData.PlcDic[2].WriteToPoint(endPlc.Address, "0", endPlc.type); - var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type); - var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); - StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); + } } /// /// 定时更新五楼CTU信息 /// - /// private void CtuCmdLogic() { - using var scope = host.Services.CreateScope(); - using var dbContext = scope.ServiceProvider.GetRequiredService(); - var baseEquip = StaticData.BaseEquip.First(t => t.objid == 11); - dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - var basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼CTU").ToList(); - var wcsCmds = dbContext.WcsCmd.Where(t => t.cmdType == 29 || t.cmdType == 30 || t.cmdType == 31).ToList(); - if (wcsCmds.Count > 0) + try { - var wcsCmd = wcsCmds.First(); - List startList = new List(); - List endList = new List(); - if (wcsCmd.cmdType != 30) + using var scope = host.Services.CreateScope(); + using var dbContext = scope.ServiceProvider.GetRequiredService(); + var baseEquip = StaticData.BaseEquip.First(t => t.objid == 11); + dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); + var basePlcs = StaticData.basePlcs.Where(t => t.Station == "5楼CTU").ToList(); + var wcsCmds = dbContext.WcsTask.Where(t => t.nextPointId == 11).ToList(); + if (wcsCmds.Count > 0) { - startList.Add(wcsCmd.currPointId); - endList.AddRange(wcsCmds.Select(t => t.nextPointId).ToList()); + var wcsCmd = wcsCmds.First(); + List startList = new List(); + List endList = new List(); + if (wcsCmd.taskType != 30) + { + startList.Add(wcsCmd.currPointId); + endList.AddRange(wcsCmds.Select(t => t.nextPointId).ToList()); + } + else + { + startList.Add(wcsCmd.nextPointId); + endList.AddRange(wcsCmds.Select(t => t.currPointId).ToList()); + } + while (endList.Count < 6) + { + endList.Add(0); + } + var endPlcs = basePlcs.Where(t => t.Name.Contains("目的地")).OrderBy(t => t.Name).ToList(); + for (int i = 0; i < endPlcs.Count; i++) + { + StaticData.PlcDic[2].WriteToPoint(endPlcs[i].Address, endList[i].ToString(), endPlcs[i].type); + } + var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); + 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.taskType).ToPlc; + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); + } else { - startList.Add(wcsCmd.nextPointId); - endList.AddRange(wcsCmds.Select(t => t.currPointId).ToList()); + var endPlcs = basePlcs.Where(t => t.Name.Contains("目的地")).OrderBy(t => t.Name).ToList(); + for (int i = 0; i < endPlcs.Count; i++) + { + StaticData.PlcDic[2].WriteToPoint(endPlcs[i].Address, "0", endPlcs[i].type); + } + var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); + StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type); + var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); + StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); } - while (endList.Count < 6) - { - endList.Add(0); - } - var endPlcs = basePlcs.Where(t => t.Name.Contains("目的地")).OrderBy(t => t.Name).ToList(); - for (int i = 0; i < endPlcs.Count; i++) - { - StaticData.PlcDic[2].WriteToPoint(endPlcs[i].Address, endList[i].ToString(), endPlcs[i].type); - } - var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - 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; - StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, cmdType, cmdPlc.type); - } - else + catch { - var endPlcs = basePlcs.Where(t => t.Name.Contains("目的地")).OrderBy(t => t.Name).ToList(); - for (int i = 0; i < endPlcs.Count; i++) - { - StaticData.PlcDic[2].WriteToPoint(endPlcs[i].Address, "0", endPlcs[i].type); - } - var startPlc = basePlcs.First(t => t.Name.Contains("起始点")); - StaticData.PlcDic[2].WriteToPoint(startPlc.Address, "0", startPlc.type); - var cmdPlc = basePlcs.First(t => t.Name.Contains("任务代号")); - StaticData.PlcDic[2].WriteToPoint(cmdPlc.Address, "0", cmdPlc.type); + } } @@ -755,40 +734,47 @@ namespace Khd.Core.Wcs.Wcs /// private void CtuLineLogic() { - var basePlcpoints = StaticData.BasePlcpointList.ToList(); - var basePlcs = StaticData.basePlcs.ToList(); - var bill = from a in basePlcpoints - from b in basePlcs - where a.plcpointNo == b.Name && b.Station == "U型线" - select new { a, b }; - foreach (var item in bill) + try { - if (item.a.plcpointNo.Contains("RFID")) + var basePlcpoints = StaticData.BasePlcpointList.ToList(); + var basePlcs = StaticData.basePlcs.ToList(); + var bill = from a in basePlcpoints + from b in basePlcs + where a.plcpointNo == b.Name && b.Station == "U型线" + select new { a, b }; + foreach (var item in bill) { - string? rfid = StaticData.PlcDic[1].ReadRFID(item.a.plcpointAddress); - if (!string.IsNullOrEmpty(rfid)) + if (item.a.plcpointNo.Contains("RFID")) { - rfid = rfid[(rfid.IndexOf("C") + 1)..]; - StaticData.PlcDic[2].WriteToPoint(item.b.Address, rfid, item.b.type); + string? rfid = StaticData.PlcDic[1].ReadRFID(item.a.plcpointAddress); + if (!string.IsNullOrEmpty(rfid)) + { + rfid = rfid[(rfid.IndexOf("C") + 1)..]; + StaticData.PlcDic[2].WriteToPoint(item.b.Address, rfid, item.b.type); + } + else + { + StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); + } } else { - StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); - } - } - else - { - var value = StaticData.PlcDic[1].Read(item.a.plcpointAddress); - if (value != null && !string.IsNullOrEmpty(value.ToString())) - { - StaticData.PlcDic[2].WriteToPoint(item.b.Address, value.ToString(), item.b.type); - } - else - { - StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); + var value = StaticData.PlcDic[1].Read(item.a.plcpointAddress); + if (value != null && !string.IsNullOrEmpty(value.ToString())) + { + StaticData.PlcDic[2].WriteToPoint(item.b.Address, value.ToString(), item.b.type); + } + else + { + StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); + } } } } + catch + { + + } } /// @@ -796,41 +782,47 @@ namespace Khd.Core.Wcs.Wcs /// private void HositerLogic() { - - var basePlcpoints = StaticData.BasePlcpointList.ToList(); - var basePlcs = StaticData.basePlcs.ToList(); - var bill = from a in basePlcpoints - from b in basePlcs - where a.plcpointNo == b.Name && b.Station != "U型线" - select new { a, b }; - foreach (var item in bill) + try { - if (item.a.plcpointNo.Contains("RFID")) + var basePlcpoints = StaticData.BasePlcpointList.ToList(); + var basePlcs = StaticData.basePlcs.ToList(); + var bill = from a in basePlcpoints + from b in basePlcs + where a.plcpointNo == b.Name && b.Station != "U型线" + select new { a, b }; + foreach (var item in bill) { - string? rfid = StaticData.PlcDic[0].ReadRFID(item.a.plcpointAddress); - if (!string.IsNullOrEmpty(rfid)) + if (item.a.plcpointNo.Contains("RFID")) { - rfid = rfid[(rfid.IndexOf("JYHB") + 4)..]; - StaticData.PlcDic[2].WriteToPoint(item.b.Address, rfid, item.b.type); + string? rfid = StaticData.PlcDic[0].ReadRFID(item.a.plcpointAddress); + if (!string.IsNullOrEmpty(rfid)) + { + rfid = rfid[(rfid.IndexOf("JYHB") + 4)..]; + StaticData.PlcDic[2].WriteToPoint(item.b.Address, rfid, item.b.type); + } + else + { + StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); + } } else { - StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); - } - } - else - { - var value = StaticData.PlcDic[0].Read(item.a.plcpointAddress); - if (value != null && !string.IsNullOrEmpty(value.ToString())) - { - StaticData.PlcDic[2].WriteToPoint(item.b.Address, value.ToString(), item.b.type); - } - else - { - StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); + var value = StaticData.PlcDic[0].Read(item.a.plcpointAddress); + if (value != null && !string.IsNullOrEmpty(value.ToString())) + { + StaticData.PlcDic[2].WriteToPoint(item.b.Address, value.ToString(), item.b.type); + } + else + { + StaticData.PlcDic[2].WriteToPoint(item.b.Address, "0", item.b.type); + } } } } + catch + { + + } } } diff --git a/src/Khd.Core.Wcs/appsettings.json b/src/Khd.Core.Wcs/appsettings.json index a054ded..404728a 100644 --- a/src/Khd.Core.Wcs/appsettings.json +++ b/src/Khd.Core.Wcs/appsettings.json @@ -1,7 +1,7 @@ { "ConnectionStrings": { - //"DefaultConnection": "server=106.12.13.113;port=3336;database=khd_jyhb;uid=khd;pwd=khd@123;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True", - "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=106.12.13.113;port=3336;database=khd_jyhb;uid=khd;pwd=khd@123;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True", + //"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=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" }, @@ -43,7 +43,7 @@ "Logging": { "LogLevel": { "Default": "Information", - "Microsoft": "Error", + "Microsoft": "Information", "Microsoft.Hosting.Lifetime": "Information" } }