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 | 76 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 76 insertions(+), 0 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index 87b4c3c..da065a4 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -643,6 +643,82 @@ } } /// <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> -- Gitblit v1.8.0