From 0d8b3d25883c158d8ff63e029a30360400fae810 Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期一, 23 九月 2024 10:15:58 +0800
Subject: [PATCH] 堆垛机不空跑
---
Admin.NET/WCS.Application/PLC/PLCService.cs | 105 +++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 94 insertions(+), 11 deletions(-)
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 56f451d..2a7f4c4 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -307,7 +307,7 @@
//涓嬪彂浠诲姟鏃ュ織
HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
}
-
+
//淇敼led灞忎俊鎭�
//LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.EndLocate, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿modTask.StartLocate}", "鎵樼洏鍙�:" + modTask.PalletNo);
}
@@ -372,7 +372,7 @@
{
modTaskMonitor.InteractiveMsg = "浠诲姟瀹屾垚锛岃繑鍥炵粰WMS浠诲姟瀹屾垚";
}
- else
+ else
{
Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg));
}
@@ -665,15 +665,12 @@
/// </summary>
/// <param name="modTask">鎿嶄綔瀹屾垚鐨勪换鍔�</param>
/// <param name="plcConn">plc杩炴帴</param>
- private static void ContinuousOperation(WcsTask modTask, PLCUtil plcConn)
+ /// <param name="modDevice">璁惧淇℃伅</param>
+ private static void ContinuousOperation(WcsTask modTask, PLCUtil plcConn, WcsDeviceDto modDevice)
{
- //鍒� 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();
+ WcsTask modNextTask = null;
switch (modTask.TaskType)
{
case TaskTypeEnum.In:
@@ -696,6 +693,7 @@
// todo: 鍐欏叆modNext浠诲姟淇℃伅缁檖lc
Console.WriteLine($"鍏ュ簱浠诲姟{modTask.TaskNo}鎵ц瀹屾垚鍚庯紝涓嶇┖璺戦�昏緫妫�娴嬩笅涓�浠诲姟涓簕modNext.TaskNo}");
+ modNextTask = modNext;
break;
}
}
@@ -720,21 +718,106 @@
// todo: 鍐欏叆modNext浠诲姟淇℃伅缁檖lc
Console.WriteLine($"鍑哄簱浠诲姟{modTask.TaskNo}鎵ц瀹屾垚鍚庯紝涓嶇┖璺戦�昏緫妫�娴嬩笅涓�浠诲姟涓簕modNext.TaskNo}");
+ modNextTask = modNext;
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 modDevicePos = _db.Queryable<WcsDevice>().Where(s => s.PlcId == plcConn.PlcId && s.DeviceType == DeviceTypeEnum.Show).First();
+ var (result, value) = plcConn.GetPlcDBValue(modDevicePos.PosType, modDevicePos.DbNumber, modDevicePos.PlcPos);
//褰撳墠鍫嗗灈鏈烘墍鍦ㄤ綅缃�
var height = Math.Round(value / 790000d * 200).ToInt();
//todo:杩欓噷鐪嬭兘涓嶈兘鎵惧埌鍫嗗灈鏈烘墍鍦ㄤ綅缃湪鍝釜鎺掑垪灞傦紝浼樺厛瀵绘壘闄勮繎鐨勪换鍔★紵
}
break;
}
+ if (modNextTask != null)
+ {
+ // 鑾峰彇杞崲鍚庣殑璧峰鎺掑垪灞� 06010101
+ PlcTaskInfo startTaskInfo = PLCCommon.GetEndPai(modTask.StartRoadway.Substring(1, 2), modTask.StartLocate.Substring(2, 2),
+ modTask.StartLocate.Substring(0, 2), modTask.StartLocate.Substring(4, 2),
+ modTask.StartLocate.Substring(6, 2));
+
+ // 缁橮LC鍐欏叆浠诲姟鏁版嵁
+ var listResult = new List<Result>();
+ // 浠诲姟鍙锋墭鐩樺彿
+ var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+ var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "鎵樼洏鐮�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+ // 璧峰鎺掑垪灞�
+ var modPosRow = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣鎺�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, startTaskInfo.EndPai));
+ var modPosColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣鍒�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, startTaskInfo.EndLie));
+ var modPosStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣灞�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, startTaskInfo.EndCeng));
+ // 鐩爣鏀捐揣宸ヤ綅(鍥哄畾鎺掑垪灞�)
+ PlcTaskInfo taskInfo = PLCCommon.GetCTaskInfo(modTask.EndLocate, ((int)modTask.TaskType).ToString(),
+ modTask.StartRoadway, modTask.EndRoadway);
+ var modPosEndRow = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣鎺�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, taskInfo.EndPai));
+ var modPosEndColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣鍒�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, taskInfo.EndLie));
+ var modPosEndStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣灞�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, taskInfo.EndCeng));
+
+ // 鏄惁鍐欏叆鎴愬姛
+ if (listResult.All(s => s.IsSucceed))
+ {
+ // 鍐欏叆璺烘満浠诲姟涓嬪彂瀹屾垚
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "830");
+
+ // 灏嗙Щ搴撲换鍔″緟鎵ц鏀逛负姝e湪鎵ц
+ _db.Updateable<WcsTask>()
+ .SetColumns(s => s.Status == TaskStatusEnum.Doing)
+ .Where(s => s.Id == modTask.Id)
+ .ExecuteCommand();
+ HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ WcsTaskMonitor modInsertTaskMonitor;
+ if (string.IsNullOrEmpty(taskInfo.EndStation))
+ {
+ // 鍚屽贩閬撶Щ搴�
+ modInsertTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = modTask.TaskNo,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"鍐欏叆鎸囦护锛歿modTask.StartLocate}鍌ㄤ綅====銆媨modTask.EndLocate}鍌ㄤ綅銆�",
+ PalletNo = modTask.PalletNo,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = modTask.StartLocate,
+ EndLocat = modTask.EndLocate,
+ };
+ }
+ else
+ {
+ // 鍑哄簱浠诲姟 璺ㄥ贩閬撶Щ搴�
+ modInsertTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = modTask.TaskNo,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"鍐欏叆鎸囦护锛歿modTask.StartLocate}鍌ㄤ綅====銆媨taskInfo.EndStation}宸ヤ綅銆�",
+ PalletNo = modTask.PalletNo,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = modTask.StartLocate,
+ EndLocat = modTask.EndLocate,
+ };
+ }
+
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+ //涓嬪彂浠诲姟鏃ュ織
+ HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ //淇敼led灞忎俊鎭�
+ //LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.EndLocate, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿modTask.StartLocate}", "鎵樼洏鍙�:" + modTask.PalletNo);
+ }
+ }
}
+
/// <summary>
/// 杈撻�佺嚎涓氬姟澶勭悊
@@ -811,7 +894,7 @@
break;
case "330":
{
-
+
// 鍐欏叆浠诲姟 鎵樼洏绉诲姩 340
// 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭�
--
Gitblit v1.8.0