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