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 | 451 +++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 298 insertions(+), 153 deletions(-)
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index d905aec..2037a61 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -21,8 +21,15 @@
public static class PLCService
{
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;
+ private static decimal weight160 = 0;
+ private static decimal weight155 = 0;
+ private static decimal weight152 = 0;
+ private static decimal weight153 = 0;
public static void OnChangeEvent(object sender, EventArgs e)
{
@@ -82,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));
@@ -103,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)
@@ -128,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)
@@ -163,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;
+ }
}
// 鍐欏叆鏀捐揣宸ヤ綅鍥哄畾鍦板潃
@@ -223,30 +240,30 @@
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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, startTaskInfo.EndCeng));
if (modTask.TaskType == TaskTypeEnum.Out)
{
var modEndNo = modDevice.listStation.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
- listResult.Add(plcConn.SetPlcDBValue(modEndNo.PosType, modDevice.DbNumber, modEndNo.PlcPos, taskInfo.EndStation));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modEndNo.PosType, modDevice.DbNumber, modEndNo.PlcPos, taskInfo.EndStation));
}
// 鐩爣鏀捐揣宸ヤ綅(鍥哄畾鎺掑垪灞�)
var modPosEndRow = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣鎺�");
- listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, taskInfo.EndPai));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, taskInfo.EndCeng));
// 鏄惁鍐欏叆鎴愬姛
if (listResult.All(s => s.IsSucceed))
@@ -297,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;
@@ -373,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();
@@ -534,7 +562,7 @@
}
modInsertTaskMonitor.InteractiveMsg = string.Format("鍌ㄤ綅鍦板潃锛歿0}鍙栬揣瀹屾垚", modTask.StartLocate);
- modInsertTaskMonitor.EndLocat = endStation; // 鐩爣鍌ㄤ綅
+ modInsertTaskMonitor.EndLocat = endStation.ToString(); // 鐩爣鍌ㄤ綅
// 鎻掑叆浜や簰鏃ュ織
_db.Insertable(modInsertTaskMonitor).ExecuteCommand();
@@ -592,19 +620,19 @@
//浠诲姟鍙�
var modPosTask = listPos.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
- listResult.Add(plcCconn.SetPlcDBValue(modPosTask.PosType, wcsDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+ listResult.Add(plcCconn.SetPlcDBValueRepeat(modPosTask.PosType, wcsDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
//浠诲姟绫诲瀷
var modPosTaskType = listPos.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷");
- listResult.Add(plcCconn.SetPlcDBValue(modPosTaskType.PosType, wcsDevice.DbNumber, modPosTaskType.PlcPos, ((int)modTask.TaskType).ToString()));
+ listResult.Add(plcCconn.SetPlcDBValueRepeat(modPosTaskType.PosType, wcsDevice.DbNumber, modPosTaskType.PlcPos, ((int)modTask.TaskType).ToString()));
//鎵樼洏鍙�
var modPosPalletNo = listPos.FirstOrDefault(s => s.Text == "鎵樼洏鐮�");
- listResult.Add(plcCconn.SetPlcDBValue(modPosPalletNo.PosType, wcsDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+ listResult.Add(plcCconn.SetPlcDBValueRepeat(modPosPalletNo.PosType, wcsDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
//璧峰宸ヤ綅
var modPosLocatNo = listPos.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅");
- listResult.Add(plcCconn.SetPlcDBValue(modPosLocatNo.PosType, wcsDevice.DbNumber, modPosLocatNo.PlcPos, endValStr));
+ listResult.Add(plcCconn.SetPlcDBValueRepeat(modPosLocatNo.PosType, wcsDevice.DbNumber, modPosLocatNo.PlcPos, endValStr));
// 鐩爣宸ヤ綅
var modPosEndLocatNo = listPos.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
- listResult.Add(plcCconn.SetPlcDBValue(modPosEndLocatNo.PosType, wcsDevice.DbNumber, modPosEndLocatNo.PlcPos, inVal));
+ listResult.Add(plcCconn.SetPlcDBValueRepeat(modPosEndLocatNo.PosType, wcsDevice.DbNumber, modPosEndLocatNo.PlcPos, inVal));
// 鏄惁鍐欏叆鎴愬姛
if (listResult.All(s => s.IsSucceed))
@@ -768,19 +796,19 @@
var listResult = new List<Result>();
//浠诲姟鍙�
var modPosTask = listPos.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
- listResult.Add(plcConveyorConn.SetPlcDBValue(modPosTask.PosType, wcsDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+ listResult.Add(plcConveyorConn.SetPlcDBValueRepeat(modPosTask.PosType, wcsDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
//浠诲姟绫诲瀷
var modPosTaskType = listPos.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷");
- listResult.Add(plcConveyorConn.SetPlcDBValue(modPosTaskType.PosType, wcsDevice.DbNumber, modPosTaskType.PlcPos, ((int)modTask.TaskType).ToString()));
+ listResult.Add(plcConveyorConn.SetPlcDBValueRepeat(modPosTaskType.PosType, wcsDevice.DbNumber, modPosTaskType.PlcPos, ((int)modTask.TaskType).ToString()));
//鎵樼洏鍙�
var modPosPalletNo = listPos.FirstOrDefault(s => s.Text == "鎵樼洏鐮�");
- listResult.Add(plcConveyorConn.SetPlcDBValue(modPosPalletNo.PosType, wcsDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+ listResult.Add(plcConveyorConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, wcsDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
//璧峰宸ヤ綅
var modPosLocatNo = listPos.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅");
- listResult.Add(plcConveyorConn.SetPlcDBValue(modPosLocatNo.PosType, wcsDevice.DbNumber, modPosLocatNo.PlcPos, stationNumstr));
+ listResult.Add(plcConveyorConn.SetPlcDBValueRepeat(modPosLocatNo.PosType, wcsDevice.DbNumber, modPosLocatNo.PlcPos, stationNumstr));
// 鐩爣宸ヤ綅
var modPosEndLocatNo = listPos.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
- listResult.Add(plcConveyorConn.SetPlcDBValue(modPosEndLocatNo.PosType, wcsDevice.DbNumber, modPosEndLocatNo.PlcPos, outCode));
+ listResult.Add(plcConveyorConn.SetPlcDBValueRepeat(modPosEndLocatNo.PosType, wcsDevice.DbNumber, modPosEndLocatNo.PlcPos, outCode));
// 鏄惁鍐欏叆鎴愬姛
if (listResult.All(s => s.IsSucceed))
@@ -819,14 +847,14 @@
break;
case TaskTypeEnum.Move: // 绉诲簱浠诲姟
{
- var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
- var result = plcConn.SetPlcDBValue(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澶辫触");
@@ -975,15 +1003,15 @@
// 缁橮LC鍐欏叆浠诲姟鏁版嵁
var listResult = new List<Result>();
// 浠诲姟鍙锋墭鐩樺彿
- listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
- listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
// 璧峰鎺掑垪灞�
- listResult.Add(plcConn.SetPlcDBValue(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, "2"));
- listResult.Add(plcConn.SetPlcDBValue(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, "100"));
- listResult.Add(plcConn.SetPlcDBValue(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, "1"));
- listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, row));
- listResult.Add(plcConn.SetPlcDBValue(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, column));
- listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, storey));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, "2"));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, "100"));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, "1"));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, row));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, column));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, storey));
// 鏄惁鍐欏叆鎴愬姛
if (listResult.All(s => s.IsSucceed))
{
@@ -1105,25 +1133,25 @@
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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, taskInfo.EndCeng));
// 鏄惁鍐欏叆鎴愬姛
if (listResult.All(s => s.IsSucceed))
@@ -1192,6 +1220,65 @@
{
return;
}
+
+ #region#瀹炴椂鏄剧ず閲嶉噺鍒癓ED灞忓箷
+ var modPosPalletWeightIng = modDevice.listStation.FirstOrDefault(m => m.Text == "瀹為檯閲嶉噺");
+ if (modPosPalletWeightIng != null)
+ {
+ var (resPalletWeightIng, palletWeightValIng) = plcConn.GetPlcDBValue(modPosPalletWeightIng.PosType, modDevice.DbNumber, modPosPalletWeightIng.PlcPos);
+ switch (modDevice.StationNum)
+ {
+ case "094":
+ {
+ if (Convert.ToDecimal(palletWeightValIng) != weight94)
+ {
+ LedDisplay(modDevice.LedIP, $"褰撳墠閲嶉噺(KG)锛歿Convert.ToDecimal(palletWeightValIng)}");
+ weight94 = Convert.ToDecimal(palletWeightValIng);
+ }
+ }
+ break;
+ case "160":
+ {
+ if (Convert.ToDecimal(palletWeightValIng) != weight160)
+ {
+ LedDisplay(modDevice.LedIP, $"褰撳墠閲嶉噺(KG)锛歿Convert.ToDecimal(palletWeightValIng)}");
+ weight160 = Convert.ToDecimal(palletWeightValIng);
+ }
+ }
+ break;
+ case "155":
+ {
+ if (Convert.ToDecimal(palletWeightValIng) != weight155)
+ {
+ LedDisplay(modDevice.LedIP, $"褰撳墠閲嶉噺(KG)锛歿Convert.ToDecimal(palletWeightValIng)}");
+ weight155 = Convert.ToDecimal(palletWeightValIng);
+ }
+ }
+ break;
+ case "152":
+ {
+ if (Convert.ToDecimal(palletWeightValIng) != weight152)
+ {
+ LedDisplay(modDevice.LedIP, $"褰撳墠閲嶉噺(KG)锛歿Convert.ToDecimal(palletWeightValIng)}");
+ weight152 = Convert.ToDecimal(palletWeightValIng);
+ }
+ }
+ break;
+ case "153":
+ {
+ if (Convert.ToDecimal(palletWeightValIng) != weight153)
+ {
+ LedDisplay(modDevice.LedIP, $"褰撳墠閲嶉噺(KG)锛歿Convert.ToDecimal(palletWeightValIng)}");
+ weight153 = Convert.ToDecimal(palletWeightValIng);
+ }
+ }
+ break;
+ }
+ }
+
+ #endregion
+
+
var ledText = "";
switch (modDevice.Value.ToString())
{
@@ -1234,9 +1321,17 @@
case "155":
dbStr = "2383";
break;
+
+ case "152":
+ dbStr = "2401";
+ break;
+
+ case "153":
+ dbStr = "2403";
+ break;
}
- string errorStr = "寮傚父淇℃伅锛�";
+ string errorStr = string.Empty;
//灏嗗紓甯镐俊鎭樉绀哄埌LED灞忓箷涓�
var (errorRes0, errorVal0) = plcConn.GetPlcDBValue(PLCDataTypeEnum.Bit, $"M{dbStr}.0", "");
if (errorRes0.IsSucceed && errorVal0 == true)
@@ -1283,9 +1378,15 @@
{
errorStr += " 鎵爜浠�氳鎶ヨ";
}
- ledText += $"鐢宠鍏ュ簱澶辫触\n\n";
- ledText += $"{errorStr}";
- LedDisplay(modDevice.LedIP, ledText);
+
+ if (!string.IsNullOrEmpty(errorStr))
+ {
+ errorStr = "寮傚父淇℃伅锛�" + errorStr;
+
+ ledText += $"鐢宠鍏ュ簱澶辫触\n\n";
+ ledText += $"{errorStr}";
+ LedDisplay(modDevice.LedIP, ledText);
+ }
}
break;
case "320":
@@ -1336,7 +1437,7 @@
}
// 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
- var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+ var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
if (ret.IsSucceed)
{
plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
@@ -1357,7 +1458,7 @@
}
// 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
- var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+ var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
if (ret.IsSucceed)
{
plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
@@ -1368,7 +1469,28 @@
var http = new HttpService();
string TaskNo = "", EndLocate = "";
- strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo, (int)palletHeightVal);
+
+ //鏍规嵁宸ヤ綅鍒ゆ柇鏄惁涓哄彔鎵樻満宸ヤ綅鐢宠绌烘墭鐩樿泛鍏ュ簱锛屾槸锛氬悜WMS鐢宠绌烘墭鐩樿泛缁勬墭
+ string groupMsg = "";
+ if (modDevice.StationNum == "72")
+ {
+ groupMsg = http.BindNullPalletWcs(10, palletVal);
+
+ if (groupMsg.Contains("-1"))
+ {
+ // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+ if (ret.IsSucceed)
+ {
+ plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
+ }
+
+ break;
+ }
+ }
+
+ //鍚慦MS鐢宠宸烽亾
+ strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo, (int)palletHeightVal, Convert.ToString(palletWeightVal));
if (!strMsg.Contains("-1"))
{
@@ -1431,7 +1553,7 @@
}
// 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
- var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+ var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
if (ret.IsSucceed)
{
plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
@@ -1523,21 +1645,22 @@
// 浠诲姟鍙枫�佷换鍔$被鍨嬨�佹墭鐩樺彿
var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
- listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
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()));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
// 璧峰宸ヤ綅銆佺洰鐨勫伐浣�
var modPosStrLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅");
- listResult.Add(plcConn.SetPlcDBValue(modPosStrLocat.PosType, modDevice.DbNumber, modPosStrLocat.PlcPos, modDevice.StationNum));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(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));
-
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndLocat.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, endLocatVlue));
if (listResult.All(s => s.IsSucceed))
- {
+ {
+ Log.Information($"鍐欏叆340锛屼换鍔″彿锛歿modTask.TaskNo}锛屼换鍔$被鍨嬶細{taskTypeStr.ToString()}锛屾墭鐩樼爜锛歿modTask.PalletNo}锛岃捣濮嬪伐浣嶏細{modDevice.StationNum}锛岀洰鐨勫伐浣嶏細{endLocatVlue}");
+
// 灏嗕换鍔$姸鎬佸彉鏇翠负姝e湪鎵ц
_db.Updateable<WcsTask>()
.SetColumns(s => s.Status == TaskStatusEnum.Doing)
@@ -1714,9 +1837,12 @@
#endregion
var http = new HttpService();
- string TaskNo = "";
- // 鍚慦MS鐢宠鍌ㄤ綅淇℃伅
- strMsg = http.RequestLocate(palletVal, modDevice.StationNum, taskModel, roadway, ref TaskNo, (int)taskInfo2.PalletQty);
+ string TaskNo = "";
+ lock (RuKuLock)
+ {
+ // 鍚慦MS鐢宠鍌ㄤ綅淇℃伅
+ strMsg = http.RequestLocate(palletVal, modDevice.StationNum, taskModel, roadway, ref TaskNo, (int)taskInfo2.PalletQty);
+ }
// 鏍规嵁浠诲姟鍙疯幏鍙栬捣濮嬪伐浣嶅湴鍧�锛屾牴鎹捣濮嬪伐浣嶅湴鍧�鑾峰彇LEDIP 鎺ㄩ�佸埌LED灞忓箷銆�
var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskNo == TaskNo);
@@ -1860,35 +1986,35 @@
// 浠诲姟鍙枫�佷换鍔$被鍨嬨�佹墭鐩樺彿
var modPosTask = djInfos.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
var modPosTaskType = djInfos.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷");
var taskTypeStr = (int)modTask.TaskType;
- listResult.Add(plcSConn.SetPlcDBValue(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
var modPosPalletNo = djInfos.FirstOrDefault(s => s.Text == "鎵樼洏鐮�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
//璧峰宸ヤ綅
var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅");
- listResult.Add(plcSConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum));
// 鐩殑宸ヤ綅
var modPosendStationNum = djInfos.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
- listResult.Add(plcSConn.SetPlcDBValue(modPosendStationNum.PosType, djMod.DbNumber, modPosendStationNum.PlcPos, endStationNum));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosendStationNum.PosType, djMod.DbNumber, modPosendStationNum.PlcPos, endStationNum));
//鍙栬揣鎺掋�佸垪銆佸眰
var modPosStrPai = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣鎺�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, sInfo.Pai));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, sInfo.Pai));
var modPosStrLie = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣鍒�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, sInfo.Lie));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, sInfo.Lie));
var modPosStrCeng = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣灞�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, sInfo.Ceng));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, sInfo.Ceng));
//鏀捐揣鎺掋�佸垪銆佸眰
var modPosEndPai = djInfos.FirstOrDefault(s => s.Text == "鏀捐揣鎺�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, "2"));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, "2"));
var modPosEndLie = djInfos.FirstOrDefault(s => s.Text == "鏀捐揣鍒�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, "60"));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, "60"));
var modPosEndCeng = djInfos.FirstOrDefault(s => s.Text == "鏀捐揣灞�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, "1"));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, "1"));
if (listResult.All(s => s.IsSucceed))
{
// 鍐欏叆璺烘満 830
@@ -1969,16 +2095,16 @@
// 浠诲姟鍙枫�佷换鍔$被鍨嬨�佹墭鐩樺彿
var modPosTask = djInfos.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
var modPosTaskType = djInfos.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷");
var taskTypeStr = (int)modTask.TaskType;
- listResult.Add(plcSConn.SetPlcDBValue(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
var modPosPalletNo = djInfos.FirstOrDefault(s => s.Text == "鎵樼洏鐮�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
//璧峰宸ヤ綅
var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅");
- listResult.Add(plcSConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum));
//鐩殑宸ヤ綅
if (modTask.EndLocate == "266")
{
@@ -1990,22 +2116,22 @@
}
var modPosStrend = djInfos.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
- listResult.Add(plcSConn.SetPlcDBValue(modPosStrend.PosType, djMod.DbNumber, modPosStrend.PlcPos, modTask.EndLocate)); // 姝ゅ鐜板湪瀛樼殑鏄嚭搴撳彛266銆�
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrend.PosType, djMod.DbNumber, modPosStrend.PlcPos, modTask.EndLocate)); // 姝ゅ鐜板湪瀛樼殑鏄嚭搴撳彛266銆�
//鍙栬揣鎺掋�佸垪銆佸眰
var modPosStrPai = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣鎺�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, "3"));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, "3"));
var modPosStrLie = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣鍒�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, "60"));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, "60"));
var modPosStrCeng = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣灞�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, "1"));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, "1"));
//鏀捐揣鎺掋�佸垪銆佸眰
var modPosEndPai = djInfos.FirstOrDefault(s => s.Text == "鏀捐揣鎺�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, sInfo1.Pai));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, sInfo1.Pai));
var modPosEndLie = djInfos.FirstOrDefault(s => s.Text == "鏀捐揣鍒�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, sInfo1.Lie));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, sInfo1.Lie));
var modPosEndCeng = djInfos.FirstOrDefault(s => s.Text == "鏀捐揣灞�");
- listResult.Add(plcSConn.SetPlcDBValue(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, sInfo1.Ceng));
+ listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, sInfo1.Ceng));
if (listResult.All(s => s.IsSucceed))
{
// 鍐欏叆璺烘満 830
@@ -2093,41 +2219,41 @@
{
// 璺烘満闈炵┖闂茬瓑寰�
break;
- }
+ }
// 缁橮LC鍐欏叆浠诲姟鏁版嵁
var listResult = new List<Result>();
// 浠诲姟鍙枫�佷换鍔$被鍨嬨�佹墭鐩樺彿
var modPosTask = djInfos.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
var modPosTaskType = djInfos.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷");
var taskTypeStr = (int)modTask.TaskType;
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
var modPosPalletNo = djInfos.FirstOrDefault(s => s.Text == "鎵樼洏鐮�");
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
//璧峰宸ヤ綅
var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅");
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum));
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum));
//鐩殑宸ヤ綅
var modPosendStationNum = djInfos.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosendStationNum.PlcPos, modDevice.StationNum)); // 姝ゅ鐜板湪鏄�139 搴旇涓�0
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosStrStationNum.PosType, djMod.DbNumber, modPosendStationNum.PlcPos, modDevice.StationNum)); // 姝ゅ鐜板湪鏄�139 搴旇涓�0
//鍙栬揣鎺掋�佸垪銆佸眰
var modPosStrPai = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣鎺�");
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, sInfo.Pai));
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, sInfo.Pai));
var modPosStrLie = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣鍒�");
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, sInfo.Lie));
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, sInfo.Lie));
var modPosStrCeng = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣灞�");
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, sInfo.Ceng));
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, sInfo.Ceng));
//鏀捐揣鎺掋�佸垪銆佸眰
var modPosEndPai = djInfos.FirstOrDefault(s => s.Text == "鏀捐揣鎺�");
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, pai));
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, pai));
var modPosEndLie = djInfos.FirstOrDefault(s => s.Text == "鏀捐揣鍒�");
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, lie));
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, lie));
var modPosEndCeng = djInfos.FirstOrDefault(s => s.Text == "鏀捐揣灞�");
- listResult.Add(plcStackeConn.SetPlcDBValue(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, ceng));
+ listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, ceng));
if (listResult.All(s => s.IsSucceed))
{
@@ -2288,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));
+ }
}
}
@@ -2434,7 +2563,7 @@
//鎵樼洏杈惧埌鎷嗗灈宸ヤ綅锛學CS鍐欏叆鍝佺鍙峰苟鍐欏叆530
{
// 鑾峰彇鎵樼洏鏉$爜閰嶇疆
- var modPalletNo = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鏉$爜" && m.IsDelete == false);
+ var modPalletNo = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�" && m.IsDelete == false);
// 璇诲彇PLC鎵樼洏鏉$爜鍙�
var (res, palletVal) = plcConn.GetPlcDBValue(modPalletNo.PosType, modDevice.DbNumber, modPalletNo.PlcPos);
string palletNo = palletVal.ToString();
@@ -2451,7 +2580,7 @@
{
var modAddCode = modDevice.listStation.FirstOrDefault(m => m.Text == "鍝佺" && m.IsDelete == false);
// 鍐欏叆鎷嗗灈鍝佺
- var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, pzNo);
+ var retVal = plcConn.SetPlcDBValueRepeat(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, pzNo);
if (retVal.IsSucceed)
{
plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "530");
@@ -2584,16 +2713,16 @@
var listResult = new List<Result>();
//鎵规鍙�
var modPosLotNo = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵规鍙�" && m.IsDelete == false);
- listResult.Add(plcConn.SetPlcDBValue(modPosLotNo.PosType, modDevice.DbNumber, modPosLotNo.PlcPos, boxInfo.LotNo));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosLotNo.PosType, modDevice.DbNumber, modPosLotNo.PlcPos, boxInfo.LotNo));
//鍝佺
var modPosPZ = modDevice.listStation.FirstOrDefault(m => m.Text == "鍝佺" && m.IsDelete == false);
- listResult.Add(plcConn.SetPlcDBValue(modPosPZ.PosType, modDevice.DbNumber, modPosPZ.PlcPos, checkTaskInfo.PZNo));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosPZ.PosType, modDevice.DbNumber, modPosPZ.PlcPos, checkTaskInfo.PZNo));
//鏄惁灏剧
var modPosIsEndBox = modDevice.listStation.FirstOrDefault(m => m.Text == "鏄惁灏剧" && m.IsDelete == false);
- listResult.Add(plcConn.SetPlcDBValue(modPosIsEndBox.PosType, modDevice.DbNumber, modPosIsEndBox.PlcPos, boxInfo.EndLotFlag));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosIsEndBox.PosType, modDevice.DbNumber, modPosIsEndBox.PlcPos, boxInfo.EndLotFlag));
//鍐欏叆绠辩爜
var modPosBox = modDevice.listStation.FirstOrDefault(m => m.Text == "鍐欏叆绠辩爜" && m.IsDelete == false);
- listResult.Add(plcConn.SetPlcDBValue(modPosBox.PosType, modDevice.DbNumber, modPosBox.PlcPos, boxInfo.BoxNo));
+ listResult.Add(plcConn.SetPlcDBValueRepeat(modPosBox.PosType, modDevice.DbNumber, modPosBox.PlcPos, boxInfo.BoxNo));
// 鏄惁鍐欏叆鎴愬姛
if (listResult.All(s => s.IsSucceed))
@@ -2688,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++)
{
// 鑾峰彇绠辨潯鐮�
@@ -2698,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)
@@ -2724,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":
@@ -2882,12 +3019,20 @@
}
}
- private static void LedDisplay(string ip,string text)
+ private static void LedDisplay(string ip,string text,int type=0)
{
try
{
LedDll Led = new LedDll();
- Led.ConsoleLeds(ip, text);
+ if (type == 0)
+ {
+ Led.ConsoleLeds(ip, text);
+ }
+ else
+ {
+ Led.LEDstr(ip, text);
+ }
+
// 璁剧疆瀹炰緥
//Led.ConsoleLeds("10.18.51.238", $"浠诲姟绫诲瀷:{TaskTypeEnum.Move.GetDescription()}\n\n浠诲姟鍙�:TK2024102100001\n鎵樼洏鍙�:LN000145\n\n璧峰浣�:033\n鐩爣浣�:R01-02010102");
}
@@ -2928,9 +3073,9 @@
{
#region#缁橮LC鍐欏叆缁撴壒鎵规鍙�
var listResult = new List<Result>();
- listResult.Add(plcConn.SetPlcDBValue(item.PosType, item.DbNumber, item.PlcPos, "0"));//鍝佺鍙�
- listResult.Add(plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, ""));//鎵规鍙�
- listResult.Add(plcConn.SetPlcDBValue(item.PosTypeStatus, item.DbNumber, item.PosStatus, "0"));//缁戝畾鐘舵�� 0锛氭湭缁戝畾 1锛氬凡缁戝畾
+ listResult.Add(plcConn.SetPlcDBValueRepeat(item.PosType, item.DbNumber, item.PlcPos, "0"));//鍝佺鍙�
+ listResult.Add(plcConn.SetPlcDBValueRepeat(item.PosTypeLot, item.DbNumber, item.PosLot, ""));//鎵规鍙�
+ listResult.Add(plcConn.SetPlcDBValueRepeat(item.PosTypeStatus, item.DbNumber, item.PosStatus, "0"));//缁戝畾鐘舵�� 0锛氭湭缁戝畾 1锛氬凡缁戝畾
if (listResult.All(s => s.IsSucceed))
{
// 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
--
Gitblit v1.8.0