From 8bc65cd3363d7148c356fe2eecca3590a9a3b4e0 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期二, 21 十月 2025 09:34:41 +0800
Subject: [PATCH] 修改问题
---
Admin.NET/WCS.Application/PLC/PLCTaskAction.cs | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 102 insertions(+), 18 deletions(-)
diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
index ab3e7b4..b06b4e0 100644
--- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -53,6 +53,7 @@
private static List<ModbusUtil> listModbusUtil = new List<ModbusUtil>();
+
public static List<ModbusUtil> modbusUtilConn
{
get { return listModbusUtil; }
@@ -87,6 +88,7 @@
boDrumReversal = _sysConfigService.GetConfigValue<bool>("sys_DrumReversal").Result;
boOutLock = _sysConfigService.GetConfigValue<bool>("sys_BoOutLock").Result;
boEnterLock = _sysConfigService.GetConfigValue<bool>("sys_BoEnterLock").Result;
+
}
/// <summary>
/// 鍒濆鍖朠LC杩炴帴
@@ -210,15 +212,6 @@
var (result, value) = modPlcUtil.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos);
if (result.IsSucceed)
{
- ////濡傛灉鏄┛姊溅锛岃繖閲屽彂閫佸績璺�
- //if (modPlc.Type == PLCTypeEnum.ShuttleCar)
- //{
- // var modHeart = listPlcPosition.Where(s => s.DeviceId == modDevice.Id && s.Text == "蹇冭烦").FirstOrDefault();
- // if (modHeart != null)
- // {
- // modPlcUtil.SetPlcDBValue(modHeart.PosType, modHeart.PlcPos, "1");
- // }
- //}
//鏃犳祦绋嬭烦鍑�
if (Convert.ToInt32(value) == 0)
continue;
@@ -364,7 +357,7 @@
{
while (true)
{
- Console.WriteLine("寮�鍚洓鍚戣溅浠诲姟鑷垎閰�");
+ //Console.WriteLine("寮�鍚洓鍚戣溅浠诲姟鑷垎閰�");
//鍙栨秷绾跨▼ 鍏抽棴PLC杩炴帴
if (cts.Token.IsCancellationRequested)
{
@@ -377,21 +370,100 @@
}
try
{
+
+
// 鑾峰彇瀵嗛泦搴撴湭鎵ц浠诲姟 鏍规嵁鍒涘缓鏃堕棿鎺掑簭
var waitTask = _db.Queryable<WcsTask>().Where(s => s.IsDelete == false && s.Status == TaskStatusEnum.Wait && s.Type == PLCTypeEnum.ShuttleCar).OrderBy(s => new {s.Levels, s.CreateTime}).First();
if (waitTask == null)
{
continue;
}
+ var starLocate = "";
+ var endLocate = "";
+ var taskceng = 0;
//01010101: 01鎺� 01鍒� 01灞� 01娣卞害-姝ら」鐩笉鍋氬垽鏂�
- var taskpai = int.Parse(waitTask.StartLocate.Substring(0, 2));
- var tasklie = int.Parse(waitTask.StartLocate.Substring(2, 2));
- var taskceng = int.Parse(waitTask.StartLocate.Substring(4, 2));
+ if (waitTask.TaskType == TaskTypeEnum.In )
+ {
+ //鍏ュ簱浠诲姟璧峰宸烽亾灏辨槸鍥涘悜杞﹀彇璐у伐浣�
+ if (string.IsNullOrWhiteSpace(waitTask.StartRoadway) || string.IsNullOrWhiteSpace(waitTask.EndLocate))
+ {
+ continue;
+ }
+
+ taskceng = int.Parse(waitTask.StartRoadway.Substring(4, 2));
+ starLocate = waitTask.StartRoadway;
+ endLocate = waitTask.EndLocate;
+ }
+ else if (waitTask.TaskType == TaskTypeEnum.Out)
+ {
+ //鍑哄簱浠诲姟鐩爣宸烽亾灏辨槸鍥涘悜杞︽斁璐у伐浣�
+ taskceng = int.Parse(waitTask.StartLocate.Substring(4, 2));
+ starLocate = waitTask.StartLocate;
+ endLocate = waitTask.EndRoadway;
+
+ #region 娣诲姞杈撻�佺嚎涓庝换鍔¢獙璇�
+
+
+
+ var text = "";
+ var devStation = "";
+ var ip = "";
+ var carcon = new carConverModel();
+ if (carcon.conveyorBei.Keys.Contains(endLocate))
+ {
+ text = "杈撻�佺嚎鍖�";
+ ip = "10.26.254.10";
+ devStation = carcon.conveyorBei[endLocate];
+ }
+ else if (carcon.conveyorNan.Keys.Contains(endLocate))
+ {
+ text = "杈撻�佺嚎鍗�";
+ ip = "10.26.254.11";
+ devStation = carcon.conveyorNan[endLocate];
+ }
+ if (text != "")
+ {
+ //var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text);
+ //var modConn = new PLCUtil(modPlc);
+ var modConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == ip);
+ var modDevice = PLCTaskAction.plcDevices.First(s => s.StationNum == devStation);
+ var (plcResult, palletVal) = modConn.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos);
+ if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) != 720)
+ {
+ //Log.Error($"鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂�:{waitTask.TaskNo}");
+ continue;//鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂�
+ }
+
+ var gongwei = carcon.conveyorRuKu[endLocate];
+ //鍒ゆ柇浠诲姟
+ var convarTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.StartLocate == gongwei
+ && m.Type == PLCTypeEnum.ConveyorLine && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing));
+ if (convarTask != null)
+ {
+ continue;//鏀捐揣宸ヤ綅鏈変换鍔�
+ }
+ }
+
+
+ #endregion
+ }
+ else if (waitTask.TaskType == TaskTypeEnum.Move)
+ {
+ taskceng = int.Parse(waitTask.StartLocate.Substring(4, 2));
+ starLocate = waitTask.StartLocate;
+ endLocate = waitTask.EndLocate;
+ }
+ else
+ {
+ continue;
+ }
+
#region 鑾峰彇褰撳墠浠诲姟鎵�鍦ㄥ眰鎵�鏈夌┖闂插皬杞�
// 鑾峰彇鏈変换鍔$殑灏忚溅缂栧彿
- var taskCarList = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.Status == TaskStatusEnum.Wait).Select(m => m.CarNo).Distinct().ToList();
+ //var taskCarList = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.Status == TaskStatusEnum.Wait).Select(m => m.CarNo).Distinct().ToList();
+ var taskCarList = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)).Select(m => m.CarNo).Distinct().ToList();
// 鑾峰彇褰撳墠浠诲姟鎵�鍦ㄥ眰鎵�鏈夌┖闂插皬杞︼紙鏍规嵁灏忚溅浠诲姟琛ㄦ槸鍚︽湁浠诲姟鍜屽皬杞︾姸鎬佸叡鍚屽垽鏂皬杞︽槸鍚︾┖闂�)
var kXCarList = new List<CarInfo>();
@@ -417,7 +489,7 @@
{
var modCarDl = plcPosition.FirstOrDefault(s => s.Text == "鐢垫睜鐢甸噺");
var (resultDl, valueDl) = modbusUtil.GetDBValue(modCarDl.PosType, modCarDl.PlcPos);
- if (resultDl.IsSucceed && valueDl> (int)FourWayCarDLEnum.Dl3)
+ if (resultDl.IsSucceed && valueDl> (int)FourWayCarDLEnum.Dl)
{
//鍐欏叆缁撴潫鍏呯數鍛戒护
var modCdEnd = plcPosition.FirstOrDefault(s => s.Text == "鍏呯數鍛戒护");
@@ -425,6 +497,18 @@
carErr = true;
break; //鏆傜紦鍒嗛厤锛岄槻姝㈠悓灞傚皬杞﹀叧鏈烘垨澶辫仈瀵艰嚧闃绘尅璺緞
}
+ }
+ var modCarPall = plcPosition.FirstOrDefault(s => s.Text == "鎵樼洏妫�娴�");
+ var (resultPall, valuePall) = modbusUtil.GetDBValue(modCarPall.PosType, modCarPall.PlcPos);
+ //var modCarju = plcPosition.FirstOrDefault(s => s.Text == "涓惧崌浣嶇疆");
+ //var (resultju, valueju) = modbusUtil.GetDBValue(modCarju.PosType, modCarju.PlcPos);
+ //if (resultPall.IsSucceed && valuePall == 1 && resultPall.IsSucceed && valuePall != 1) //1椤惰揣 2瀛愰�氶亾 3涓婚�氶亾
+ //{
+ // break; //鏆傜紦鍒嗛厤
+ //}
+ if (resultPall.IsSucceed && valuePall == 1) //1鏈夋墭鐩� 2鏃犳墭鐩�
+ {
+ break; //鏆傜紦鍒嗛厤
}
//灏忚溅绌洪棽鍔犲叆闆嗗悎
if (value == 1)
@@ -444,7 +528,7 @@
{
var carVal = ((int)valuex).ToString().PadLeft(2, '0') + ((int)valuey).ToString().PadLeft(2, '0') + ((int)valuez).ToString().PadLeft(2, '0');
//灏忚溅鍒板彇璐у偍浣嶈矾寰�
- var d = FourWayCarUtil.GetCarPath(carVal, waitTask.StartLocate);
+ var d = FourWayCarUtil.GetCarPath(carVal, starLocate);
kXCarList.Add(new CarInfo()
{
CarPlcIp = modbusUtil.PlcIP,
@@ -487,7 +571,7 @@
//鍒ゆ柇灏忚溅浣嶇疆鏄惁涓庝换鍔$殑璧峰鍌ㄤ綅鐩稿悓,涓嶇浉鍚岋細鑾峰彇灏忚溅鍒板彇璐у偍浣嶈矾寰�
var carLocate = assignCar.X.ToString().PadLeft(2, '0')+assignCar.Y.ToString().PadLeft(2, '0')+ assignCar.Z.ToString().PadLeft(2, '0');
//鑾峰彇灏忚溅鍘诲彇璐у偍浣嶄换鍔¤矾寰�
- var data1 = FourWayCarUtil.GetCarPath(carLocate, waitTask.StartLocate);
+ var data1 = FourWayCarUtil.GetCarPath(carLocate, starLocate);
var datas1 = FourWayCarUtil.GetCarPathUp(data1, 0);
if (datas1 == null)
{
@@ -512,7 +596,7 @@
typeStr2 = 0;
}
//鑾峰彇灏忚溅鍘绘斁璐у偍浣嶄换鍔¤矾寰�
- var data2 = FourWayCarUtil.GetCarPath(waitTask.StartLocate, waitTask.EndLocate, typeStr);
+ var data2 = FourWayCarUtil.GetCarPath(starLocate, endLocate, typeStr);
var datas2 = FourWayCarUtil.GetCarPathUp(data2, typeStr2);
if (datas2 == null)
--
Gitblit v1.8.0