From e4690fca932b352927af3d186ed2a4767f017e79 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期日, 17 八月 2025 15:02:37 +0800
Subject: [PATCH] 修改问题
---
Admin.NET/WCS.Application/PLC/PLCService.cs | 145 +++++++++++++++++++++++++++++------------------
1 files changed, 89 insertions(+), 56 deletions(-)
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 567ebb6..2037a61 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -22,6 +22,7 @@
{
private static readonly object OLock = new object();
private static readonly object RuKuLock = new object();
+ private static readonly object OutLock = new object();
private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
private static decimal weight94 = 0;
@@ -88,12 +89,18 @@
{
break;//鍑哄簱閿佸畾鎵撳紑鍒欎笉鎵ц鍑哄簱浠诲姟
}
+ //鍒ゆ柇璇ュ贩閬撴湁娌℃湁鍒拌揪鍙栬揣宸ヤ綅鐨勫叆搴撲换鍔★紝浼樺厛鎵ц鍏ュ簱浠诲姟鍐嶆墽琛岀Щ搴�/鍑哄簱浠诲姟
+ var taskIn = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Doing && s.TaskType == TaskTypeEnum.In && s.EndRoadway == modDevice.StationNum && !string.IsNullOrEmpty(s.EndLocate));
+ if (taskIn != null)
+ {
+ break;
+ }
PlcTaskInfo taskInfo = new PlcTaskInfo();
if (modTask.TaskType == TaskTypeEnum.Move)
{
// 绉诲簱鐩爣鍦板潃
- taskInfo = PLCCommon.GetEndPai(modTask.EndLocate.Substring(1, 2), modTask.EndLocate.Substring(2, 2),
+ taskInfo = PLCCommon.GetEndPai(modTask.EndLocate.Substring(0, 2), modTask.EndLocate.Substring(2, 2),
modTask.EndLocate.Substring(0, 2), modTask.EndLocate.Substring(4, 2),
modTask.EndLocate.Substring(6, 2));
@@ -109,7 +116,7 @@
{
#region 璺ㄨ泛鏈轰换鍔″鐞� ###########
// 鍒ゆ柇鐩爣浣嶇疆鏄惁鏄法璺烘満鍑哄簱宸ヤ綅
- if (modTask.EndLocate == "266" && modTask.StartRoadway != "R05")
+ if (modTask.EndLocate == "266")// && modTask.StartRoadway != "R05"
{
// 鍒ゆ柇鍏ュ簱宸ヤ綅鏄惁瀛樺湪鏈畬鎴愮殑鍏ュ簱浠诲姟
var modInTask = _db.Queryable<WcsTask>().OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime, OrderByType.Asc)
@@ -134,17 +141,19 @@
break;
}
}
-
- string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 鑾峰彇1妤间腑涓撳伐浣嶅彿
- taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP;
- taskInfo.EndPai = "2";
- taskInfo.EndLie = "60";
- taskInfo.EndCeng = "1";
- taskInfo.EndStation = aaa;
+ if (modTask.StartRoadway != "R05")
+ {
+ string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 鑾峰彇1妤间腑涓撳伐浣嶅彿
+ taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP;
+ taskInfo.EndPai = "2";
+ taskInfo.EndLie = "60";
+ taskInfo.EndCeng = "1";
+ taskInfo.EndStation = aaa;
+ }
}
- if (modTask.EndLocate == "265" && modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06")
+ if (modTask.EndLocate == "265") // && modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06"
{
// 鍒ゆ柇鍏ュ簱宸ヤ綅鏄惁瀛樺湪鏈畬鎴愮殑鍏ュ簱浠诲姟
var modInTask = _db.Queryable<WcsTask>().OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime, OrderByType.Asc)
@@ -169,13 +178,15 @@
break;
}
}
-
- string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 鑾峰彇1妤间腑涓撳伐浣嶅彿
- taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP;
- taskInfo.EndPai = "2";
- taskInfo.EndLie = "60";
- taskInfo.EndCeng = "1";
- taskInfo.EndStation = aaa;
+ if (modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06")
+ {
+ string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 鑾峰彇1妤间腑涓撳伐浣嶅彿
+ taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP;
+ taskInfo.EndPai = "2";
+ taskInfo.EndLie = "60";
+ taskInfo.EndCeng = "1";
+ taskInfo.EndStation = aaa;
+ }
}
// 鍐欏叆鏀捐揣宸ヤ綅鍥哄畾鍦板潃
@@ -303,14 +314,17 @@
//涓嬪彂浠诲姟鏃ュ織
HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
- //淇敼led灞忎俊鎭�
- var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == taskInfo.EndStation && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
- ledText += $"浠诲姟绫诲瀷:{modTask.TaskType.GetDescription()}\n\n";
- ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
- ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
- ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
- ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
- LedDisplay(ledDevice.LedIP, ledText);
+ if (modTask.TaskType == TaskTypeEnum.Out)
+ {
+ //淇敼led灞忎俊鎭�
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == taskInfo.EndStation && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
+ ledText += $"浠诲姟绫诲瀷:{modTask.TaskType.GetDescription()}\n\n";
+ ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+ ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
+ ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
+ ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+ LedDisplay(ledDevice.LedIP, ledText);
+ }
}
}
break;
@@ -379,6 +393,14 @@
var retc = plcConveyorConn.SetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos, "640");
if (retc.IsSucceed)
{
+ // 鍐嶆璇诲彇wcs鎺у埗瀛�,纭繚鍐欏叆鎴愬姛640
+ var (ress2, va1s2) = plcConveyorConn.GetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos);
+ if (va1s2.ToString() == "630")//杩樻槸绛変簬630璇存槑640娌℃湁鍐欏叆鎴愬姛锛屽啀娆″啓鍏�640
+ {
+ retc = plcConveyorConn.SetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos, "640");
+ Log.Information($"840鍨涙満鍙栬揣瀹屾垚鍐欏叆640澶辫触鍚庡啀娆″啓鍏ワ紝DbNumber锛歿ConveyorMod.DbNumber}");
+ }
+
modcTaskMonitor.InteractiveMsg = string.Format("宸ヤ綅锛歿0},鍐欏叆鍙栬揣瀹屾垚:640", startStationVal);
// 鎻掑叆浜や簰鏃ュ織
_db.Insertable(modcTaskMonitor).ExecuteCommand();
@@ -825,14 +847,14 @@
break;
case TaskTypeEnum.Move: // 绉诲簱浠诲姟
{
- var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
- var result = plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo);
- if (!result.IsSucceed)
- {
- Log.Error($"{modDevice.Text}鍐欏叆浠诲姟鍙峰け璐�");
- break;
- }
- result = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "870");
+ //var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+ //var result = plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo);
+ //if (!result.IsSucceed)
+ //{
+ // Log.Error($"{modDevice.Text}鍐欏叆浠诲姟鍙峰け璐�");
+ // break;
+ //}
+ var result = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "870");
if (!result.IsSucceed)
{
Log.Error($"{modDevice.Text}鎺у埗瀛楀啓鍏�870澶辫触");
@@ -1468,7 +1490,7 @@
}
//鍚慦MS鐢宠宸烽亾
- strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo, (int)palletHeightVal);
+ strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo, (int)palletHeightVal, Convert.ToString(palletWeightVal));
if (!strMsg.Contains("-1"))
{
@@ -2197,7 +2219,7 @@
{
// 璺烘満闈炵┖闂茬瓑寰�
break;
- }
+ }
// 缁橮LC鍐欏叆浠诲姟鏁版嵁
var listResult = new List<Result>();
@@ -2392,15 +2414,18 @@
TaskType = ((int)TaskTypeEnum.Out).ToString(),
TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
};
- HttpService httpService = new HttpService();
- var modResponseTask = httpService.RequestTask(requestMode).Result;
- if (modResponseTask.StatusCode == 0)
- {
- modInsertTaskMonitor.InteractiveMsg += "锛岃繑鍥炵粰WMS浠诲姟瀹屾垚";
- }
- else
- {
- Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg));
+ lock(OutLock)
+ {
+ HttpService httpService = new HttpService();
+ var modResponseTask = httpService.RequestTask(requestMode).Result;
+ if (modResponseTask.StatusCode == 0)
+ {
+ modInsertTaskMonitor.InteractiveMsg += "锛岃繑鍥炵粰WMS浠诲姟瀹屾垚";
+ }
+ else
+ {
+ Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg));
+ }
}
}
@@ -2792,6 +2817,7 @@
var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
break;
}
+ int chaNum = 0;
for (int i = 1; i <= boxNum; i++)
{
// 鑾峰彇绠辨潯鐮�
@@ -2802,8 +2828,11 @@
if (string.IsNullOrEmpty(boxNo))
{
Log.Error(string.Format("鐮佸灈宸ヤ綅{0}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��", modDevice.StationNum));
+ // 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐�
+ plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
break;
}
+ Log.Information($"PLC璇锋眰鎻掔爜锛屾墭鐩樺彿锛歿palletNo}锛岀鐮侊細{boxNo}");
// 楠岃瘉绠辩爜琛ㄦ槸鍚﹀瓨鍦ㄦ绠辩爜
var boxInfo = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.BoxNo == boxNo).ToList();
if (boxInfo.Count == 0)
@@ -2828,20 +2857,24 @@
plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
break;
}
+ chaNum++;
}
- // 鎻掔爜鎴愬姛
- var retVal2 = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1");
- if (retVal2.IsSucceed)
+ if (chaNum == boxNum)
{
- //鏇存柊宸叉彃鐮佹暟閲�
- checkTaskMedel.BoxCount += boxNum;
- _db.Updateable(checkTaskMedel).ExecuteCommand();
- }
- else
- {
- // 鍐欏叆澶辫触
- Log.Error(string.Format("鍐欏叆PLC鎻掔爜缁撴灉澶辫触锛岀爜鍨涘伐浣峽1}锛屾墭鐩樺彿{2}", modDevice.StationNum, palletNo));
- }
+ // 鎻掔爜鎴愬姛
+ var retVal2 = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1");
+ if (retVal2.IsSucceed)
+ {
+ //鏇存柊宸叉彃鐮佹暟閲�
+ checkTaskMedel.BoxCount += boxNum;
+ _db.Updateable(checkTaskMedel).ExecuteCommand();
+ }
+ else
+ {
+ // 鍐欏叆澶辫触
+ Log.Error(string.Format("鍐欏叆PLC鎻掔爜缁撴灉澶辫触锛岀爜鍨涘伐浣峽1}锛屾墭鐩樺彿{2}", modDevice.StationNum, palletNo));
+ }
+ }
}
break;
case "40":
--
Gitblit v1.8.0