From 8ae6fce575bd8b29e858724df186535abe5b6e52 Mon Sep 17 00:00:00 2001 From: hwh <332078369@qq.com> Date: 星期四, 19 九月 2024 16:45:42 +0800 Subject: [PATCH] 堆垛机不空跑 --- Admin.NET/WCS.Application/PLC/PLCService.cs | 221 ++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 139 insertions(+), 82 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index 4856b54..da065a4 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -15,12 +15,6 @@ public static class PLCService { private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId); - private static readonly IHubContext<TaskLogHub, ITaskLogHub> _taskLogHubContext; - - static PLCService() - { - _taskLogHubContext = App.GetService<IHubContext<TaskLogHub, ITaskLogHub>>(); - } public static void OnChangeEvent(object sender, EventArgs e) { @@ -148,7 +142,7 @@ .SetColumns(s => s.Status == TaskStatusEnum.Doing) .Where(s => s.Id == modTask.Id) .ExecuteCommand(); - _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); + HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); WcsTaskMonitor modInsertTaskMonitor; if (string.IsNullOrEmpty(taskInfo.EndStation)) { @@ -184,7 +178,7 @@ // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); //淇敼led灞忎俊鎭� //LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.EndLocate, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿modTask.StartLocate}", "鎵樼洏鍙�:" + modTask.PalletNo); } @@ -251,7 +245,7 @@ // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); break; } @@ -259,7 +253,7 @@ // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modcTaskMonitor).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); } // 鍐欏叆娴佺▼鎺у埗瀛� @@ -274,7 +268,7 @@ // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); } } else if (modTask.TaskType == TaskTypeEnum.Out) @@ -306,7 +300,7 @@ // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); //淇敼led灞忎俊鎭� //LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.EndLocate, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿modTask.StartLocate}", "鎵樼洏鍙�:" + modTask.PalletNo); } @@ -343,8 +337,8 @@ modTask.Status = TaskStatusEnum.Complete; modTask.FinishDate = DateTime.Now; _db.Updateable(modTask).ExecuteCommand(); - _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); - var modcTaskMonitor = new WcsTaskMonitor() + HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); + var modTaskMonitor = new WcsTaskMonitor() { TaskNo = modTask.TaskNo, PlcId = modDevice.Id, @@ -369,13 +363,13 @@ var modResponseTask = httpService.RequestTask(requestMode).Result; if (modResponseTask.StatusCode == "0") { - modcTaskMonitor.InteractiveMsg = "浠诲姟瀹屾垚锛岃繑鍥炵粰WMS浠诲姟瀹屾垚"; + modTaskMonitor.InteractiveMsg = "浠诲姟瀹屾垚锛岃繑鍥炵粰WMS浠诲姟瀹屾垚"; } } // 鎻掑叆浜や簰鏃ュ織 - _db.Insertable(modcTaskMonitor).ExecuteCommand(); + _db.Insertable(modTaskMonitor).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); // 姝ゅ娣诲姞涓嶇┖璺戜笟鍔� } @@ -440,7 +434,7 @@ // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modcTaskMonitor).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + HubUtil.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>()); break; } } @@ -469,8 +463,7 @@ modTask.FinishDate = DateTime.Now; _db.Updateable(modTask).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); - + HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); var modcTaskMonitor = new WcsTaskMonitor() { TaskNo = modTask.TaskNo, @@ -504,7 +497,7 @@ // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modcTaskMonitor).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + HubUtil.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>()); // 姝ゅ娣诲姞涓嶇┖璺戜笟鍔� } @@ -538,7 +531,7 @@ break; modTask.Status = TaskStatusEnum.Exception; _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand(); - _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); + HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); Log.Information($"銆愬爢鍨涙満銆憌cs浠诲姟鍙樻洿绌哄彇寮傚父锛屼换鍔″彿锛歿modTask.TaskNo}"); var modTaskRequest = modTask.Adapt<TaskRequest>(); HttpService httpService = new HttpService(); @@ -549,7 +542,7 @@ modTask.IsSuccess = TaskSuccessEnum.Success; _db.Updateable(modTask).UpdateColumns(s => s.IsSuccess).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); + HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); } else { @@ -557,7 +550,7 @@ modTask.IsSuccess = TaskSuccessEnum.Fail; modTask.Information = modResponseTask.Message; _db.Updateable(modTask).UpdateColumns(s => new { s.IsSuccess, s.Information }).ExecuteCommand(); - _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); + HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); } } break; @@ -578,7 +571,7 @@ } modTask.Status = TaskStatusEnum.Exception; _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand(); - _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); + HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); Log.Information($"銆愬爢鍨涙満銆憌cs浠诲姟鍙樻洿婊″彇寮傚父锛屼换鍔″彿锛歿modTask.TaskNo}"); var modTaskRequest = modTask.Adapt<TaskRequest>(); HttpService httpService = new HttpService(); @@ -632,7 +625,7 @@ // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modcTaskMonitor).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + HubUtil.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>()); } } @@ -650,13 +643,89 @@ } } /// <summary> + /// 鍫嗗灈鏈轰笉绌鸿窇 + /// </summary> + /// <param name="modTask">鎿嶄綔瀹屾垚鐨勪换鍔�</param> + /// <param name="plcConn">plc杩炴帴</param> + private static void ContinuousOperation(WcsTask modTask, PLCUtil plcConn) + { + //鍒� todo:涓婇潰浠g爜鎷挎潵鐨勶紝杩欓噷涓嶇悊瑙d负鍟ユ槸1,2 涓嶆槸2,2锛� + int col = modTask.EndLocate.Substring(1, 2).ToInt(); + int row = modTask.EndLocate.Substring(0, 2).ToInt(); + int storey = modTask.EndLocate.Substring(4, 2).ToInt(); + int deep = modTask.EndLocate.Substring(6, 2).ToInt(); + // 鏌ヨ鎵�鏈夊緟鎵ц鐨勪换鍔� + var listTask = _db.Queryable<WcsTask>().Where(s => s.Status == TaskStatusEnum.Wait).ToList(); + switch (modTask.TaskType) + { + case TaskTypeEnum.In: + { + // 鍏堟壘鍑哄搴旀帓鍒楀眰鐨勫叆搴撲换鍔� + var listInTask = listTask.Where(s => s.TaskType == TaskTypeEnum.In) + .Select(s => s.EndLocate.Substring(0, 6)) + .ToHashSet(); + + // 鎵惧嚭搴撲换鍔★紝瀵瑰簲宸烽亾鐨勪换鍔� + var listNextTask = listTask.Where(s => s.TaskType == TaskTypeEnum.Out && s.StartRoadway == modTask.EndRoadway).ToList(); + + foreach (var modNext in listNextTask) + { + // 濡傛灉鏈夊搴旀帓鍒楀眰鐨勫叆搴撲换鍔★紝閭e氨涓嶈兘浼樺厛鎵ц + if (listInTask.Contains(modNext.EndLocate.Substring(0, 6))) + { + continue; + } + + // todo: 鍐欏叆modNext浠诲姟淇℃伅缁檖lc + Console.WriteLine($"鍏ュ簱浠诲姟{modTask.TaskNo}鎵ц瀹屾垚鍚庯紝涓嶇┖璺戦�昏緫妫�娴嬩笅涓�浠诲姟涓簕modNext.TaskNo}"); + break; + } + } + break; + case TaskTypeEnum.Out: + { + // 鍏堟壘鍑哄搴旀帓鍒楀眰鐨勫嚭搴撲换鍔� + var listInTask = listTask.Where(s => s.TaskType == TaskTypeEnum.Out) + .Select(s => s.EndLocate.Substring(0, 6)) + .ToHashSet(); + + // 鎵惧叆搴撲换鍔★紝瀵瑰簲宸烽亾鐨勪换鍔� + var listNextTask = listTask.Where(s => s.TaskType == TaskTypeEnum.In && s.StartRoadway == modTask.EndRoadway).ToList(); + + foreach (var modNext in listNextTask) + { + // 濡傛灉鏈夊搴旀帓鍒楀眰鐨勫嚭搴撲换鍔★紝閭e氨涓嶈兘浼樺厛鎵ц + if (listInTask.Contains(modNext.EndLocate.Substring(0, 6))) + { + continue; + } + + // todo: 鍐欏叆modNext浠诲姟淇℃伅缁檖lc + Console.WriteLine($"鍑哄簱浠诲姟{modTask.TaskNo}鎵ц瀹屾垚鍚庯紝涓嶇┖璺戦�昏緫妫�娴嬩笅涓�浠诲姟涓簕modNext.TaskNo}"); + break; + } + } + break; + case TaskTypeEnum.Move: + { + var modDevice = _db.Queryable<WcsDevice>().Where(s => s.PlcId == plcConn.PlcId && s.DeviceType == DeviceTypeEnum.Show).First(); + var (result, value) = plcConn.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos); + //褰撳墠鍫嗗灈鏈烘墍鍦ㄤ綅缃� + var height = Math.Round(value / 790000d * 200).ToInt(); + //todo:杩欓噷鐪嬭兘涓嶈兘鎵惧埌鍫嗗灈鏈烘墍鍦ㄤ綅缃湪鍝釜鎺掑垪灞傦紝浼樺厛瀵绘壘闄勮繎鐨勪换鍔★紵 + } + break; + } + } + + /// <summary> /// 杈撻�佺嚎涓氬姟澶勭悊 /// </summary> /// <param name="modDevice"></param> private static void ConveyorLine(WcsDeviceDto modDevice) { var plcConn = modDevice.PLCUtil; - // 鑾峰彇妤煎眰鏁� + // 鑾峰彇妤煎眰鏁癱eshi var louCeng = PLCCommon.GetRoadwayByStationNew(modDevice.StationNum); switch (modDevice.Value.ToString()) { @@ -680,12 +749,12 @@ var http = new HttpService(); string TaskNo = "", EndLocate = ""; strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo); - + if (!strMsg.Contains("-1")) { // 鍐欏叆330 var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "330"); - + if (ret.IsSucceed) { // 鎻掑叆浠诲姟鏄庣粏 @@ -700,15 +769,12 @@ StartLocat = modDevice.StationNum, EndLocat = EndLocate, }; - + // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� - if (PLCTaskAction.boRefresh) - { - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - } + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); // led鏇存柊鍐呭 //DataRow ConveyorsRow10 = PlcInfoDt.Select($"Level = '2' and StationNum = '{EndLocat}'")[0]; //LedDisplay(ConveyorsRow10["LedIP"].ToString(), "宸ヤ綅:" + EndLocat, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿StartLocat}", "鎵樼洏鍙�:" + PalletNo); @@ -718,7 +784,7 @@ else { // 鐢宠宸烽亾澶辫触锛丩ED鏄剧ず - Log.Error(string.Format($"鐢宠宸烽亾澶辫触:{ strMsg },璇诲啓plc閿欒")); + Log.Error(string.Format($"鐢宠宸烽亾澶辫触:{strMsg},璇诲啓plc閿欒")); } } break; @@ -735,13 +801,13 @@ } string pallet = palletVal.ToString(); // 鑾峰彇浠诲姟淇℃伅 - var modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.PalletNo == pallet && (s.Status == TaskStatusEnum.Wait || s.Status == TaskStatusEnum.Doing) && s.TaskType == TaskTypeEnum.In && s.StartRoadway == modDevice.StationNum); + var modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.PalletNo == pallet && (s.Status == TaskStatusEnum.Wait || s.Status == TaskStatusEnum.Doing) && s.TaskType == TaskTypeEnum.In); if (modTask == null) { // 姝ゆ墭鐩樻病鏈夊搴旂殑杞Щ浠诲姟 led鏄剧ず break; } - + // 鑾峰彇宸烽亾鍙e叆搴撳伐浣� string endLocatVlue = PLCCommon.RoadwayToStationNum(modTask.EndRoadway, louCeng); // 缁橮LC鍐欏叆浠诲姟鏁版嵁 @@ -749,8 +815,9 @@ // 浠诲姟鍙枫�佷换鍔$被鍨嬨�佹墭鐩樺彿 var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); - var modPosTaskType = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); - listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, modDevice.DbNumber, modPosTaskType.PlcPos, modTask.TaskType.ToString())); + var modPosTaskType = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷"); + var taskTypeStr = (int)modTask.TaskType; + listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, modDevice.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "鎵樼洏鐮�"); listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); // 璧峰宸ヤ綅銆佺洰鐨勫伐浣� @@ -758,7 +825,7 @@ listResult.Add(plcConn.SetPlcDBValue(modPosStrLocat.PosType, modDevice.DbNumber, modPosStrLocat.PlcPos, modDevice.StationNum)); var modPosEndLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅"); listResult.Add(plcConn.SetPlcDBValue(modPosEndLocat.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, endLocatVlue)); - + if (listResult.All(s => s.IsSucceed)) { @@ -768,10 +835,10 @@ .Where(s => s.Id == modTask.Id) .ExecuteCommand(); // 鍐欏叆娴佺▼瀛� 330 340 - + var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "340"); - - + + if (ret.IsSucceed) { // 鎻掑叆浠诲姟鏄庣粏 @@ -791,10 +858,7 @@ _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� - if (PLCTaskAction.boRefresh) - { - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - } + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); // led鏇存柊鍐呭 //LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.EndLocate, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿modTask.StartLocate}", "鎵樼洏鍙�:" + modTask.PalletNo); @@ -806,7 +870,7 @@ case "620": { // 鐢宠鍌ㄤ綅 鏇存柊鍏ュ簱浠诲姟(鍌ㄤ綅鍦板潃) 630 - + var strMsg = ""; var taskModel = ""; // 鍒ゆ柇鏄惁婕旂ず妯″紡 @@ -856,10 +920,7 @@ _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� - if (PLCTaskAction.boRefresh) - { - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - } + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); // led鏇存柊鍐呭 //DataRow ConveyorsRow10 = PlcInfoDt.Select($"Level = '2' and StationNum = '{EndLocat}'")[0]; //LedDisplay(ConveyorsRow10["LedIP"].ToString(), "宸ヤ綅:" + EndLocat, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿StartLocat}", "鎵樼洏鍙�:" + PalletNo); @@ -870,7 +931,7 @@ // 鐢宠鍌ㄤ綅澶辫触锛丩ED鏄剧ず Log.Error(string.Format($"鐢宠鍌ㄤ綅澶辫触:{strMsg},璇诲啓plc閿欒")); } - + } break; case "630": @@ -880,10 +941,10 @@ // 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭� var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�"); var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos); - // 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭� + // 鑾峰彇宸ヤ綅浠诲姟鍙蜂俊鎭� var modPosTaskNo = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�"); var (taskRes, taskNoVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosTaskNo.PlcPos); - if (!res.IsSucceed || !taskRes.IsSucceed ) + if (!res.IsSucceed || !taskRes.IsSucceed) { break; } @@ -896,13 +957,13 @@ // 姝ゆ墭鐩樻病鏈夊搴旂殑杞Щ浠诲姟 led鏄剧ず break; } - + var sInfo = PLCCommon.GetStokePlc(modTask.EndRoadway, louCeng); if (string.IsNullOrWhiteSpace(sInfo.Ip)) { //闇�鍔犱笂LED鏄剧ず Log.Error(string.Format($"鏍规嵁宸烽亾鑾峰彇璺烘満IP澶辫触锛岃鑱旂郴绠$悊鍛�")); - break; + break; } // 璺烘満杩炴帴 var plcStackeConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == sInfo.Ip); @@ -928,7 +989,7 @@ // 鑾峰彇璺烘満褰撳墠鐘舵�� var (djRes, djVal) = plcStackeConn.GetPlcDBValue(djMod.PosType, djMod.DbNumber, djMod.PlcPos); - + if (!djRes.IsSucceed || djVal != "820") { // 璺烘満闈炵┖闂茬瓑寰� @@ -941,12 +1002,13 @@ var modPosTask = djInfos.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); listResult.Add(plcStackeConn.SetPlcDBValue(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); var modPosTaskType = djInfos.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷"); - listResult.Add(plcStackeConn.SetPlcDBValue(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, modTask.TaskType.ToString())); + var taskTypeStr = (int)modTask.TaskType; + listResult.Add(plcStackeConn.SetPlcDBValue(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); var modPosPalletNo = djInfos.FirstOrDefault(s => s.Text == "鎵樼洏鍙�"); - listResult.Add(plcStackeConn.SetPlcDBValue(modPosPallet.PosType, djMod.DbNumber, modPosPallet.PlcPos, modTask.PalletNo)); - + listResult.Add(plcStackeConn.SetPlcDBValue(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); + //璧峰宸ヤ綅 - var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣鎺�"); + var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅"); listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum)); //鍙栬揣鎺掋�佸垪銆佸眰 @@ -986,7 +1048,7 @@ // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); break; } @@ -994,17 +1056,18 @@ // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); if (PLCTaskAction.boRefresh) - { //涓嬪彂浠诲姟鏃ュ織 - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + { + //涓嬪彂浠诲姟鏃ュ織 + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); } - - } - - - + } + + + + } - + #endregion } break; @@ -1017,7 +1080,7 @@ // led鏄剧ず鎵樼洏淇℃伅 // 鍐欏叆430 var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "430"); - + if (ret.IsSucceed) { var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�"); @@ -1043,11 +1106,8 @@ _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� - if (PLCTaskAction.boRefresh) - { - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - } - + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + // led鏇存柊鍐呭 //DataRow ConveyorsRow10 = PlcInfoDt.Select($"Level = '2' and StationNum = '{EndLocat}'")[0]; //LedDisplay(ConveyorsRow10["LedIP"].ToString(), "宸ヤ綅:" + EndLocat, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿StartLocat}", "鎵樼洏鍙�:" + PalletNo); @@ -1091,10 +1151,7 @@ _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� - if (PLCTaskAction.boRefresh) - { - _taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - } + HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); // led鏇存柊鍐呭 //DataRow ConveyorsRow10 = PlcInfoDt.Select($"Level = '2' and StationNum = '{EndLocat}'")[0]; //LedDisplay(ConveyorsRow10["LedIP"].ToString(), "宸ヤ綅:" + EndLocat, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿StartLocat}", "鎵樼洏鍙�:" + PalletNo); @@ -1130,7 +1187,7 @@ /// 鎷嗗灈鏈哄櫒浜轰笟鍔″鐞� /// </summary> /// <param name="modDevice"></param> - private static void StackingRobot(WcsDeviceDto modDevice) + private static void StackingRobot(WcsDeviceDto modDevice) { var plcConn = modDevice.PLCUtil; switch (modDevice.Value.ToString()) -- Gitblit v1.8.0