From 4606665e0e359aa54483283c042934c644a45434 Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期一, 28 四月 2025 17:26:15 +0800
Subject: [PATCH] 修改冲突问题
---
Admin.NET/WCS.Application/PLC/PLCService.cs | 1141 +++++++++++++++++++++++++++++++++++---------------------
1 files changed, 708 insertions(+), 433 deletions(-)
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 1fc0cd8..f62f828 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -5,6 +5,8 @@
using DocumentFormat.OpenXml.Spreadsheet;
using Furion.Logging;
using IoTClient;
+using NewLife.Reflection;
+using WCS.Application.Entity;
using WCS.Application.Util;
namespace WCS.Application;
@@ -32,7 +34,7 @@
AGV(mod); // AGV璋冨害
break;
case PLCTypeEnum.ShuttleCar: //绌挎杞�
- ShuttleCar(mod);
+ //ShuttleCar(mod);
break;
case PLCTypeEnum.RobotPalletizer:
RobotPalletizer(mod);//鐮佸灈鏈哄櫒浜�
@@ -144,6 +146,7 @@
private static void ShuttleCar(WcsDeviceDto modDevice)
{
var plcConn = modDevice.modbusUtil;
+ // 鍥涘悜杞︾姸鎬� 0:鏈┖闂�,1:绌洪棽,2:寮傚父 3锛氬厖鐢典腑
switch (modDevice.Value.ToString())
{
case "0":
@@ -154,54 +157,75 @@
sysCacheService.HashAddOrUpdate("AlarmInfo_Car", plcConn.PlcIP, -1);
var modPosTaskStatus = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鐘舵��");
var (resultTaskStatus, valueTaskStatus) = plcConn.GetDBValue(modPosTaskStatus.PosType, modPosTaskStatus.PlcPos);
+ //鍒ゆ柇璇诲彇浠诲姟鐘舵�佹槸鍚︽垚鍔� 骞朵笖浠诲姟鐘舵�佹槸1 0:鏃犱换鍔�,1:浠诲姟瀹屾垚,2:浠诲姟鍙栨秷,3:浠诲姟鏆傚仠锛�4锛氫换鍔″紓甯� 5锛氫换鍔℃墽琛屼腑
+
+ WcsCarTasks carTaskNext = null;//null 鏂颁换鍔� not null 褰撳墠灏忚溅&&褰撳墠浠诲姟 涓嬩竴鑺備换鍔�
+
if (resultTaskStatus.IsSucceed && valueTaskStatus == 1)
{
var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
var (resultTask, valueTask) = plcConn.GetDBValue(modPosTask.PosType, modPosTask.PlcPos);
- string valueTaskStr = Convert.ToString(valueTask);
- string strNo = "";
- var boNo = dicTaskNo.TryGetValue(modDevice.Id.ToString(), out strNo);
- if (valueTaskStr != "0" && strNo != valueTaskStr)
+ //璇诲彇浠诲姟鍙�
+ int valueTaskStr = Convert.ToInt32(valueTask);
+ //鑾峰彇浠诲姟淇℃伅 鏍规嵁 浠诲姟鍙枫�佸皬杞︾紪鍙�
+ var carTask = _db.Queryable<WcsCarTasks>().First(m=>m.IsDelete == false && m.Status == TaskStatusEnum.Doing && m.CarTaskNo == valueTaskStr && m.CarNo == modDevice.PlcIdIP);
+ if (carTask == null)
{
- var modFinshTask = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.Id.ToString().EndsWith(valueTaskStr));
- if (modFinshTask != null && modFinshTask.Status != TaskStatusEnum.Complete)
- {
- //12.4鍑哄簱鏀规垚璋冪敤WMS瀹屾垚浠诲姟鎺ュ彛锛沇MS鎿嶆帶PDA鎵樼洏涓嬫灦鍚庯紝WCS浠诲姟鐘舵�佹墠瀹屾垚锛堥伩鍏嶅皬杞︾户缁窇锛�
- if (modFinshTask.TaskType == TaskTypeEnum.In)
- {
- modFinshTask.Status = TaskStatusEnum.Complete;
- modFinshTask.FinishDate = DateTime.Now;
- _db.Updateable(modFinshTask).ExecuteCommand();
- var taskMonitor = new WcsTaskMonitor()
- {
- TaskNo = modFinshTask.TaskNo,
- PlcName = modDevice.Text,
- InteractiveMsg = $"绌挎杞﹀弽棣堜换鍔″畬鎴�"
- };
- _db.Insertable(taskMonitor).ExecuteCommand();
- //涓嬪彂浠诲姟鏃ュ織
- HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
- HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
- }
- HttpService httpService = new HttpService();
- var requestMode = new TaskRequestWMS()
- {
- TaskNo = modFinshTask.TaskNo,
- PalletNo = modFinshTask.PalletNo,
- TaskType = ((int)modFinshTask.TaskType).ToString(),
- TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
- };
- var modResponseTask = httpService.RequestTask(requestMode).Result;
- modFinshTask.IsSuccess = TaskSuccessEnum.Success;
- _db.Updateable(modFinshTask).ExecuteCommand();
-
- if (dicTaskNo.ContainsKey(modDevice.Id.ToString()))
- dicTaskNo.Remove(modDevice.Id.ToString());
- dicTaskNo.Add(modDevice.Id.ToString(), valueTaskStr);
- }
+ var modRests = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅");
+ plcConn.SetDBValue(modRests.PosType, modRests.PlcPos, "1");//娌℃湁鎵惧埌浠诲姟 澶嶄綅
+ return;
}
+
+ var modFinshTask = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.TaskNo == carTask.TaskNo);
+ if (modFinshTask == null)
+ {
+ break;//娌℃湁鏌ヨ鍒版�讳换鍔�
+ }
+ //鑾峰彇璺緞2鐨勪换鍔� 涓嬪彂
+ carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing).OrderBy(m=>m.CreateTime).First();
+
+ if (carTask != null && carTask.Status != TaskStatusEnum.Complete)
+ {
+ carTask.Status = TaskStatusEnum.Complete;
+ carTask.UpdateTime = DateTime.Now;
+ _db.Updateable(carTask).ExecuteCommand();
+ //娣诲姞浠诲姟鏄庣粏
+ var taskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = carTask.TaskNo,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"绌挎杞﹀弽棣堜换鍔″畬鎴�"
+ };
+ _db.Insertable(taskMonitor).ExecuteCommand();
+ //涓嬪彂浠诲姟鏃ュ織
+
+ HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
+ }
+ //鎬讳换鍔′笅娌℃湁鍏朵粬鏈墽琛屽皬杞︾殑浠诲姟 鍙樻洿鎬讳换鍔′俊鎭�
+ if (carTaskNext == null && modFinshTask != null && modFinshTask.Status != TaskStatusEnum.Complete)
+ {
+ modFinshTask.Status = TaskStatusEnum.Complete;
+ modFinshTask.FinishDate = DateTime.Now;
+ _db.Updateable(modFinshTask).ExecuteCommand();
+
+ //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚
+ //HttpService httpService = new HttpService();
+ //var requestMode = new TaskRequestWMS()
+ //{
+ // TaskNo = modFinshTask.TaskNo,
+ // PalletNo = modFinshTask.PalletNo,
+ // TaskType = ((int)modFinshTask.TaskType).ToString(),
+ // TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
+ //};
+ //var modResponseTask = httpService.RequestTask(requestMode).Result;
+ //modFinshTask.IsSuccess = TaskSuccessEnum.Success;
+ //_db.Updateable(modFinshTask).ExecuteCommand();
+ HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
+
+ }
+
}
-
+
var modStationX = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(X)");
var (resultx, valuex) = plcConn.GetDBValue(modStationX.PosType, modStationX.PlcPos);
var modStationY = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Y)");
@@ -209,36 +233,63 @@
var modStationZ = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Z)");
var (resultz, valuez) = plcConn.GetDBValue(modStationZ.PosType, modStationZ.PlcPos);
- // 鑾峰彇浠诲姟淇℃伅
- var stationStart = ((int)valuex).ToString().PadLeft(2, '0');
- var stationEnd = ((int)valuez).ToString().PadLeft(2, '0') + "01";
- var listTask = _db.Queryable<WcsTask>().OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime)
- .Where(s => s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar
- && s.StartLocate.StartsWith(stationStart) && s.StartLocate.EndsWith(stationEnd)).ToList();
- var modTask = listTask.FirstOrDefault();
- //return;
- if (modTask == null)
- return;
- if (modTask.StartLocate == modTask.EndLocate)
+
+ WcsTask modTask;
+ //瑕佷笅鍙戣矾寰�2浠诲姟
+ if (carTaskNext != null)
{
- modTask.Status = TaskStatusEnum.Doing;
- _db.Updateable(modTask).ExecuteCommand();
- HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.TaskNo == carTaskNext.TaskNo && s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.CarIp == modDevice.PlcIdIP);
+
+ carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == modTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status == TaskStatusEnum.Wait).OrderBy(m => m.CreateTime).First();
+ }
+ else
+ {
+ // 鑾峰彇浠诲姟淇℃伅
+ modTask = _db.Queryable<WcsTask>().Where(s => s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.CarIp == modDevice.PlcIdIP).OrderBy(m => m.Levels).OrderBy(m => m.CreateTime).First();
+ if (modTask == null)
+ {
+ return;
+ }
+ carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == modTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status == TaskStatusEnum.Wait).OrderBy(m => m.CreateTime).First();
+ }
+
+ //return;
+ if (modTask == null || carTaskNext == null)
+ {
+ //鍒ゆ柇灏忚溅鏄惁鏈夌┖闂叉椂闂磋褰� 娌℃湁锛氭坊鍔� 鏈夛細鍒ゆ柇褰撳墠鏃堕棿涓庤褰曟椂闂存槸鍚︽弧瓒�5鍒嗛挓 婊¤冻锛氭坊鍔犺灏忚溅鍘诲厖鐢典换鍔�
return;
}
- if (modTask.Status == TaskStatusEnum.Doing)
+
+ if (carTaskNext.Status == TaskStatusEnum.Doing)
{
Thread.Sleep(3000);
return;
+ }
+ //鍒ゆ柇褰撳墠浠诲姟鏄惁杩樻湁鍓嶇疆浠诲姟鏈畬鎴�
+ var preStrs = carTaskNext.PreId.Split(';');
+ foreach (var preStr in preStrs)
+ {
+ if (string.IsNullOrWhiteSpace(preStr))
+ {
+ continue;
+ }
+ var preId = long.Parse(preStr);
+ var CarTaskPre = _db.Queryable<WcsCarTasks>().First(m => m.Id == preId);
+ if (CarTaskPre.Status <= TaskStatusEnum.Doing)
+ {
+ return;//鍓嶇疆浠诲姟鏈畬鎴�
+ }
}
//鍏堝浣�
var modRest = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅");
plcConn.SetDBValue(modRest.PosType, modRest.PlcPos, "1");
List<Result> listResult = new List<Result>();
- //鍐欏叆浠诲姟鍙稩d鐨勬湯4浣嶏紝2涓皬杞︿竴璧疯窇鏈夋瀬浣庢鐜囬噸澶�
+ //鑾峰彇灏忚溅浠诲姟鍙�
+ var carTaskNo = FourWayCarUtil.GetTaskNo();
+
var modWriteTask = modDevice.listStation.FirstOrDefault(s => s.Text == "鍐欏叆浠诲姟鍙�");
- listResult.Add(plcConn.SetDBValue(modWriteTask.PosType, modWriteTask.PlcPos, modTask.Id.ToString().Substring(modTask.Id.ToString().Length - 4)));
+ listResult.Add(plcConn.SetDBValue(modWriteTask.PosType, modWriteTask.PlcPos, carTaskNo.ToString()));
var modNodeX = modDevice.listStation.FirstOrDefault(s => s.Text == "鑺傜偣鍧愭爣X");
var modNodeY = modDevice.listStation.FirstOrDefault(s => s.Text == "鑺傜偣鍧愭爣Y");
@@ -248,37 +299,36 @@
int posY = Convert.ToInt32(modNodeY.PlcPos);
int posZ = Convert.ToInt32(modNodeZ.PlcPos);
int posStatus = Convert.ToInt32(modNodeStatus.PlcPos);
- if (Convert.ToInt32(valuey) != Convert.ToInt32(modTask.StartLocate.Substring(2, 2)))
+
+ //浜や簰璺緞
+ var execuPath = carTaskNext.ExecutionPath.Split(';');
+ if (Convert.ToInt32(valuex) != Convert.ToInt32(execuPath[0].Substring(0, 2)) || Convert.ToInt32(valuey) != Convert.ToInt32(execuPath[0].Substring(2, 2)) || Convert.ToInt32(valuez) != Convert.ToInt32(execuPath[0].Substring(4, 2)))
{
- //鍐欏叆灏忚溅褰撳墠浣嶇疆
- listResult.Add(plcConn.SetDBValue(modNodeX.PosType, posX++.ToString(), Convert.ToString(valuex)));
- listResult.Add(plcConn.SetDBValue(modNodeY.PosType, posY++.ToString(), Convert.ToString(valuey)));
- listResult.Add(plcConn.SetDBValue(modNodeZ.PosType, posZ++.ToString(), Convert.ToString(valuez)));
- listResult.Add(plcConn.SetDBValue(modNodeStatus.PosType, posStatus++.ToString(), "3"));
+ return; //灏忚溅浣嶇疆涓庤矾寰勮捣濮嬩綅缃笉鍚�
+ ////鍐欏叆灏忚溅褰撳墠浣嶇疆
+ //listResult.Add(plcConn.SetDBValue(modNodeX.PosType, posX++.ToString(), Convert.ToString(valuex)));
+ //listResult.Add(plcConn.SetDBValue(modNodeY.PosType, posY++.ToString(), Convert.ToString(valuey)));
+ //listResult.Add(plcConn.SetDBValue(modNodeZ.PosType, posZ++.ToString(), Convert.ToString(valuez)));
+ //listResult.Add(plcConn.SetDBValue(modNodeStatus.PosType, posStatus++.ToString(), "3"));
}
- //鍐欏叆璧峰浣嶇疆鍙栬揣
- listResult.Add(plcConn.SetDBValue(modNodeX.PosType, posX++.ToString(), modTask.StartLocate.Substring(0, 2)));
- listResult.Add(plcConn.SetDBValue(modNodeY.PosType, posY++.ToString(), modTask.StartLocate.Substring(2, 2)));
- listResult.Add(plcConn.SetDBValue(modNodeZ.PosType, posZ++.ToString(), modTask.StartLocate.Substring(4, 2)));
- listResult.Add(plcConn.SetDBValue(modNodeStatus.PosType, posStatus++.ToString(), "2"));
- //鍐欏叆鐩爣浣嶇疆鏀捐揣
- listResult.Add(plcConn.SetDBValue(modNodeX.PosType, posX++.ToString(), modTask.EndLocate.Substring(0, 2)));
- listResult.Add(plcConn.SetDBValue(modNodeY.PosType, posY++.ToString(), modTask.EndLocate.Substring(2, 2)));
- listResult.Add(plcConn.SetDBValue(modNodeZ.PosType, posZ++.ToString(), modTask.EndLocate.Substring(4, 2)));
- listResult.Add(plcConn.SetDBValue(modNodeStatus.PosType, posStatus++.ToString(), "3"));
- string endPos = "";
- if (modTask.StartLocate.Substring(0, 2).ToInt() >= 14)
- endPos = "01";
- else
- endPos = "21";
- if (listTask.Count == 1 && modTask.EndLocate.Substring(2, 2) != endPos)
+
+ foreach (var ePath in execuPath)
{
- //濡傛灉鍚庣画娌℃湁浠诲姟锛屽氨璁╁皬杞﹀洖鍒板師浣�
- listResult.Add(plcConn.SetDBValue(modNodeX.PosType, posX++.ToString(), modTask.EndLocate.Substring(0, 2)));
- listResult.Add(plcConn.SetDBValue(modNodeY.PosType, posY++.ToString(), endPos));//todo:杩欓噷浣嶇疆寰呭畾
- listResult.Add(plcConn.SetDBValue(modNodeZ.PosType, posZ++.ToString(), modTask.EndLocate.Substring(4, 2)));
- listResult.Add(plcConn.SetDBValue(modNodeStatus.PosType, posStatus++.ToString(), "3"));
+ if (string.IsNullOrWhiteSpace(ePath))
+ {
+ continue;
+ }
+ var epathx = ePath.Substring(0, 2);
+ var epathy = ePath.Substring(2, 2);
+ var epathz = ePath.Substring(4, 2);
+ var epathn = ePath.Substring(6, 1);
+ //鍐欏叆浜や簰浣嶇疆
+ listResult.Add(plcConn.SetDBValue(modNodeX.PosType, posX++.ToString(), epathx));
+ listResult.Add(plcConn.SetDBValue(modNodeY.PosType, posY++.ToString(), epathy));
+ listResult.Add(plcConn.SetDBValue(modNodeZ.PosType, posZ++.ToString(), epathz));
+ listResult.Add(plcConn.SetDBValue(modNodeStatus.PosType, posStatus++.ToString(), epathn));
}
+
//杩欓噷鏄妸鍚庨潰鐨勫潗鏍囧叏鍐�0锛堜负浜嗛槻姝笂娆′换鍔″潗鏍囨病琚鐩栵級
while (posX <= 43097)
{
@@ -293,17 +343,18 @@
var result = plcConn.SetDBValue(modStart.PosType, modStart.PlcPos, "1");
if (result.IsSucceed)
{
- modTask.Status = TaskStatusEnum.Doing;
- _db.Updateable(modTask).ExecuteCommand();
+ carTaskNext.Status = TaskStatusEnum.Doing;
+ carTaskNext.CarTaskNo = carTaskNo;
+ _db.Updateable(carTaskNext).ExecuteCommand();
+ //娓呴櫎灏忚溅绌洪棽鏃堕棿
var taskMonitor = new WcsTaskMonitor()
{
- TaskNo = modTask.TaskNo,
+ TaskNo = carTaskNext.TaskNo,
PlcName = modDevice.Text,
- InteractiveMsg = $"鍚戠┛姊溅涓嬪彂浠诲姟{modTask.TaskNo}"
+ InteractiveMsg = $"鍚戠┛姊溅涓嬪彂浠诲姟{carTaskNext.TaskNo}"
};
_db.Insertable(taskMonitor).ExecuteCommand();
//涓嬪彂浠诲姟鏃ュ織
- HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
}
}
@@ -314,42 +365,42 @@
//灏忚溅鐘舵�佸紓甯�
var modPosTaskStatus = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鐘舵��");
var (resultTaskStatus, valueTaskStatus) = plcConn.GetDBValue(modPosTaskStatus.PosType, modPosTaskStatus.PlcPos);
+
+ if (resultTaskStatus.IsSucceed && valueTaskStatus == 1)
{
- if (resultTaskStatus.IsSucceed && valueTaskStatus == 1)
+ var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+ var (resultTask, valueTask) = plcConn.GetDBValue(modPosTask.PosType, modPosTask.PlcPos);
+ string valueTaskStr = Convert.ToString(valueTask);
+ string strNo = "";
+ var boNo = dicTaskNo.TryGetValue(modDevice.Id.ToString(), out strNo);
+ if (valueTaskStr != "0" && strNo != valueTaskStr)
{
- var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
- var (resultTask, valueTask) = plcConn.GetDBValue(modPosTask.PosType, modPosTask.PlcPos);
- string valueTaskStr = Convert.ToString(valueTask);
- string strNo = "";
- var boNo = dicTaskNo.TryGetValue(modDevice.Id.ToString(), out strNo);
- if (valueTaskStr != "0" && strNo != valueTaskStr)
+ var modFinshTask = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.Id.ToString().EndsWith(valueTaskStr));
+ if (modFinshTask != null && modFinshTask.Status != TaskStatusEnum.Complete)
{
- var modFinshTask = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.Id.ToString().EndsWith(valueTaskStr));
- if (modFinshTask != null && modFinshTask.Status != TaskStatusEnum.Complete)
+ HttpService httpService = new HttpService();
+ var requestMode = new TaskRequestWMS()
{
- HttpService httpService = new HttpService();
- var requestMode = new TaskRequestWMS()
- {
- TaskNo = modFinshTask.TaskNo,
- PalletNo = modFinshTask.PalletNo,
- TaskType = ((int)modFinshTask.TaskType).ToString(),
- TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
- };
- var modResponseTask = httpService.RequestTask(requestMode).Result;
- modFinshTask.IsSuccess = TaskSuccessEnum.Success;
- _db.Updateable(modFinshTask).ExecuteCommand();
- //涓嬪彂浠诲姟鏃ュ織
- //HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
- //HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
+ TaskNo = modFinshTask.TaskNo,
+ PalletNo = modFinshTask.PalletNo,
+ TaskType = ((int)modFinshTask.TaskType).ToString(),
+ TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
+ };
+ var modResponseTask = httpService.RequestTask(requestMode).Result;
+ modFinshTask.IsSuccess = TaskSuccessEnum.Success;
+ _db.Updateable(modFinshTask).ExecuteCommand();
+ //涓嬪彂浠诲姟鏃ュ織
+ //HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
+ //HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
- if (dicTaskNo.ContainsKey(modDevice.Id.ToString()))
- dicTaskNo.Remove(modDevice.Id.ToString());
- dicTaskNo.Add(modDevice.Id.ToString(), valueTaskStr);
- }
+ if (dicTaskNo.ContainsKey(modDevice.Id.ToString()))
+ dicTaskNo.Remove(modDevice.Id.ToString());
+ dicTaskNo.Add(modDevice.Id.ToString(), valueTaskStr);
}
-
}
+
}
+
Console.WriteLine($"绌挎杞modDevice.PlcIdIP}寮傚父");
var modPosError = modDevice.listStation.FirstOrDefault(s => s.Text == "閿欒鐮�");
var (result, valueError) = plcConn.GetDBValue(modPosError.PosType, modPosError.PlcPos);
@@ -371,226 +422,588 @@
{
var plcConn = modDevice.PLCUtil;
+ var ledText = "";
switch (modDevice.Value.ToString())
{
- case "20":
+ case "320":
{
- //灏忚溅璇锋眰寮�鍗峰笜闂� 杩欓噷鏀规垚娴峰悍鐩存帴璋冪敤妯″潡 杩欓噷涓嶉渶瑕佷簡
- string Devicelndex = "";
- if (modDevice.Text == "2鍙峰嵎甯橀棬")
- Devicelndex = "222";
- else if (modDevice.Text == "3鍙峰嵎甯橀棬")
- Devicelndex = "111";
- var modCallBack = sysCacheService.Get<AGVApplyLockInput>("OpenDoor" + Devicelndex);
- if (modCallBack != null)
+ // 鐢宠瀵嗛泦搴撶粍
+ string strMsg = "";
+ string taskModel = "";
+
+ // 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭�
+ var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�");
+ var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
+ if (!res.IsSucceed)
{
- var modAgvDevice = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == "AGV");
- AgvNotifyInput input = new AgvNotifyInput()
+ break;
+ }
+ var modPosEndLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
+
+ //鍒ゆ柇鍏ュ簱閿佸畾鏄惁鎵撳紑
+ if (PLCTaskAction.boEnterLock)
+ {
+ var (res350, palletVal350) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
+ if (res350.IsSucceed && palletVal350 != "350")
{
- ActionStatus = "1",
- DeviceIndex = Devicelndex,
- UUID = modCallBack.UUID,
- };
- var response = new HttpService().NotifyExcuteResultInfo(input).Result;
- if (response.code == 0)
+ ledText += $"鐢宠鍏ュ簱澶辫触\n\n";
+ ledText += $"鎵樼洏鍙�:{palletVal}\n";
+ ledText += $"鍏ュ簱浠诲姟宸查攣瀹氾紝璇疯В閿佸悗閲嶈瘯!\n";
+ LedDisplay(modDevice.LedIP, ledText);
+ }
+
+ // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+ if (ret.IsSucceed)
{
- sysCacheService.Remove("OpenDoor" + Devicelndex);
+ plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
+ }
+
+ break;
+ }
+
+ if (palletVal == null)
+ {
+ var (res350, palletVal350) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
+ if (res350.IsSucceed && palletVal350 != "350")
+ {
+ ledText += $"鐢宠鍏ュ簱澶辫触\n\n";
+ ledText += $"鎵樼洏鍙�:{palletVal}\n";
+ ledText += $"鎵弿鎵樼洏鍙峰け璐�!\n";
+ LedDisplay(modDevice.LedIP, ledText);
+ }
+
+ // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
+ 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;
+ }
+
+ var http = new HttpService();
+ string TaskNo = "", EndLocate = "";
+ strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, "1", ref EndLocate, ref TaskNo);
+ if (!strMsg.Contains("-1"))
+ {
+ // 鏍规嵁浠诲姟鍙疯幏鍙栬捣濮嬪伐浣嶅湴鍧�锛屾牴鎹捣濮嬪伐浣嶅湴鍧�鑾峰彇LEDIP 鎺ㄩ�佸埌LED灞忓箷銆�
+ var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskNo == TaskNo);
+ modDevice.LedIP = _db.Queryable<WcsDevice>()
+ .Where(w => w.StationNum == taskInfo.StartLocate)
+ .Select(s => s.LedIP).First();
+
+ // 鍐欏叆330
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "330");
+ if (ret.IsSucceed)
+ {
+ // 鎻掑叆浠诲姟鏄庣粏
+ var modInsertTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = TaskNo,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"鍐欏叆鎸囦护330锛歿modDevice.StationNum}宸ヤ綅鐢宠宸烽亾",
+ PalletNo = palletVal,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = modDevice.StationNum,
+ EndLocat = EndLocate,
+ };
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+
+
+ // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
+ HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ // led鏄剧ず鍐呭
+ try
+ {
+ ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n";
+
+ ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+ ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+
+ ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+ ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+ LedDisplay(modDevice.LedIP, ledText);
+
+ }
+ catch (Exception ex)
+ {
+ Log.Error(ex.Message);
+ }
+
+ }
+
+ }
+ else
+ {
+ var (res350, palletVal350) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
+ if (res350.IsSucceed && palletVal350 != "350")
+ {
+ ledText += $"鐢宠鍏ュ簱澶辫触\n\n";
+ ledText += $"鎵樼洏鍙�:{palletVal}\n";
+ ledText += $"{strMsg}\n";
+ LedDisplay(modDevice.LedIP, ledText);
+ }
+
+ // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
+ 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;
- case "100":
+ case "330":
{
- //宸ヤ綅瀵瑰簲 1=A 4=B 10=C
- string stationNum = "";
- if (modDevice.StationNum == "1" || modDevice.StationNum == "4")
+ // 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭�
+ var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�");
+ var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
+ if (!res.IsSucceed)
{
- stationNum = "10";
- //鍒ゆ柇鏈夋病鏈夊皬杞﹀埌C鍙g殑浠诲姟锛屽鏋滄湁灏卞啓120
- var countTask = _db.Queryable<WcsTask>().Where(s => s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.AGV && s.EndLocate == "A1").Count();
- if (countTask != 0)
- {
- var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "120");
- Log.Information($"鍚憄lc{modDevice.PlcIdIP}鍐欏叆120锛岀粨鏋滐細{ret.ToJson()}");
- return;
- }
+ break;
}
- string strPalletNo = "";
- if (modDevice.StationNum == "10" || modDevice.StationNum == "4")
+ string pallet = palletVal.ToString();
+ // 鑾峰彇浠诲姟淇℃伅
+ var modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false
+ && s.PalletNo == pallet
+ && s.Type == PLCTypeEnum.ConveyorLine
+ && (s.Status == TaskStatusEnum.Wait || s.Status == TaskStatusEnum.Doing)
+ && s.TaskType == TaskTypeEnum.In);
+
+ if (modTask == null)
{
- var modPosPallet = modDevice.listStation.First(s => s.Text == "鎵樼洏鏉$爜");
- //todo:杩欓噷璇荤爜鍣ㄨ�佽涓嶅埌鏉$爜淇℃伅 鍏堝啓姝� 璇荤爜鍣ㄩ棶棰樿В鍐充簡鍙互娉ㄩ噴鎺�
- //plcConn.SetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos, "T2400001");
- var (res, palletNo) = plcConn.GetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos, modPosPallet.StringLength);
- if (!res.IsSucceed || palletNo == "")
- {
- var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "120");
- Log.Information($"鍚憄lc{modDevice.PlcIdIP}鍐欏叆120锛岀粨鏋滐細{ret.ToJson()}");
- return;
- }
- strPalletNo = Convert.ToString(palletNo);
+ // 姝ゆ墭鐩樻病鏈夊搴旂殑杞Щ浠诲姟 led鏄剧ず
+ break;
}
- if (modDevice.StationNum == "10")
+ //鍒ゆ柇鍏ュ簱閿佸畾鏄惁鎵撳紑
+ if (PLCTaskAction.boEnterLock)
{
- if (strPalletNo.Substring(0, 1) == "T")
- stationNum = "4";
- else
- stationNum = "1";
+ break;//鍏ュ簱閿佸畾鎵撳紑鍒欎笉鎵ц鍏ュ簱浠诲姟
}
- // 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅
+ // 鑾峰彇鍥涢」杞﹀彇璐у伐浣�
+ string endLocatVlue = PLCCommon.RoadwayToStationNum(modTask.EndRoadway, modDevice.StationNum);
+
+
+
+ // 缁橮LC鍐欏叆浠诲姟鏁版嵁
var listResult = new List<Result>();
- // 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅銆佷换鍔″彿锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔�
- var posModel = modDevice.listStation.First(m => m.Text == "璧峰宸ヤ綅");
- listResult.Add(plcConn.SetPlcDBValue(posModel.PosType, modDevice.DbNumber, posModel.PlcPos, modDevice.StationNum));
- var posModel2 = modDevice.listStation.First(m => m.Text == "鐩爣宸ヤ綅");
- listResult.Add(plcConn.SetPlcDBValue(posModel2.PosType, modDevice.DbNumber, posModel2.PlcPos, stationNum));
- string taskNo = _taskService.GetTaskCode("WCS");
- var modPosTask = modDevice.listStation.First(s => s.Text == "浠诲姟鍙�");
- listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, taskNo));
+ // 浠诲姟鍙枫�佷换鍔$被鍨嬨�佹墭鐩樺彿
+ var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskId.ToString()));
+ 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()));
+ var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "鎵樼洏鐮�");
+ listResult.Add(plcConn.SetPlcDBValue(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));
+ var modPosEndLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
+ listResult.Add(plcConn.SetPlcDBValue(modPosEndLocat.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, endLocatVlue));
+
if (listResult.All(s => s.IsSucceed))
{
- var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "130");
- Log.Information($"鍚憄lc{modDevice.PlcIdIP}鍐欏叆130锛岀粨鏋滐細{ret.ToJson()}");
+ // 灏嗕换鍔$姸鎬佸彉鏇翠负姝e湪鎵ц
+ _db.Updateable<WcsTask>()
+ .SetColumns(s => s.Status == TaskStatusEnum.Doing)
+ .Where(s => s.Id == modTask.Id)
+ .ExecuteCommand();
+ // 鍐欏叆娴佺▼瀛� 330 340
+
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "340");
+
+ // 鏍规嵁浠诲姟鍙疯幏鍙栬捣濮嬪伐浣嶅湴鍧�锛屾牴鎹捣濮嬪伐浣嶅湴鍧�鑾峰彇LEDIP 鎺ㄩ�佸埌LED灞忓箷銆�
+ modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == modTask.StartLocate).Select(s => s.LedIP).First();
+
if (ret.IsSucceed)
{
- AddWcsTaskInput modTask = new AddWcsTaskInput()
- {
- TaskNo = taskNo,
- TaskType = TaskTypeEnum.In,
- PalletNo = strPalletNo,
- Status = TaskStatusEnum.Doing,
- IsSuccess = TaskSuccessEnum.Fail,
- StartLocate = modDevice.StationNum,
- EndLocate = stationNum,
- Type = PLCTypeEnum.ConveyorLine,
- };
- _taskService.Add(modTask);
- WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor()
+ // 鎻掑叆浠诲姟鏄庣粏
+ var modInsertTaskMonitor = new WcsTaskMonitor()
{
TaskNo = modTask.TaskNo,
- PlcId = modDevice.PlcId,
+ PlcId = modDevice.Id,
PlcName = modDevice.Text,
+ InteractiveMsg = $"鍐欏叆鎸囦护340锛歿modDevice.StationNum}鍌ㄤ綅====銆媨endLocatVlue}宸ヤ綅",
+ PalletNo = palletVal,
+ Status = TaskStatusEnum.Complete,
StartLocat = modDevice.StationNum,
- EndLocat = stationNum,
- Status = TaskStatusEnum.Doing,
- InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆鎸囦护130锛岀粨鏋渰ret.IsSucceed}",
+ EndLocat = endLocatVlue,
};
- _db.Insertable(modTaskMonitor).ExecuteCommand();
- //涓嬪彂浠诲姟鏃ュ織
- HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
- HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+
+ // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
+ HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
}
}
}
break;
- case "140":
+ case "620":
{
- var modPosTask = modDevice.listStation.First(m => m.Text == "浠诲姟鍙�");
- var (result, taskNo) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modPosTask.StringLength);
- var modPosPallet = modDevice.listStation.First(m => m.Text == "鎵樼洏鏉$爜");
- var (res, palletNo) = plcConn.GetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos, modPosPallet.StringLength);
- WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor();
- WcsTask modTask = new WcsTask();
- if (!result.IsSucceed)
+ // 鐢宠鍌ㄤ綅 鏇存柊鍏ュ簱浠诲姟(鍌ㄤ綅鍦板潃) 630
+ var strMsg = "";
+ var taskModel = "";
+
+ //// 鏍规嵁宸ヤ綅鍙疯幏鍙栧贩閬撳彿
+ //var roadway = PLCCommon.GetRoadwayByStation(modDevice.StationNum);
+ //if (roadway == "")
+ //{
+ // break;
+ //}
+ // 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭�
+ var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�");
+ var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
+ if (!res.IsSucceed)
{
- Log.Error($"{plcConn.PlcIP}璇诲彇浠诲姟鍙峰け璐�");
- return;
+ break;
}
- if (modDevice.StationNum == "10")
+ var http = new HttpService();
+ string TaskNo = "";
+ // 鍚慦MS鐢宠鍌ㄤ綅淇℃伅
+ strMsg = http.RequestLocate(palletVal, modDevice.StationNum, taskModel, "roadway", ref TaskNo);
+
+ if (!strMsg.Contains("-1"))
{
- var posModel = modDevice.listStation.First(m => m.Text == "璧峰宸ヤ綅");
- var (resultS, station) = plcConn.GetPlcDBValue(posModel.PosType, modDevice.DbNumber, posModel.PlcPos);
- if (resultS.IsSucceed)
+ // 鏍规嵁浠诲姟鍙疯幏鍙栬捣濮嬪伐浣嶅湴鍧�锛屾牴鎹捣濮嬪伐浣嶅湴鍧�鑾峰彇LEDIP 鎺ㄩ�佸埌LED灞忓箷銆�
+ var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskNo == TaskNo);
+ modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == taskInfo.StartLocate).Select(s => s.LedIP).First();
+ // 鍐欏叆娴佺▼瀛� 630
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "630");
+
+ if (ret.IsSucceed)
{
- if (station == 1)
+ // 鎻掑叆浠诲姟鏄庣粏
+ var modInsertTaskMonitor = new WcsTaskMonitor()
{
- WcsTask modInsertTask = new WcsTask()
- {
- TaskNo = _taskService.GetTaskCode(),
- TaskType = TaskTypeEnum.Move,
- Type = PLCTypeEnum.AGV,
- StartLocate = AGVStaionEnum.A1.ToString(),
- EndLocate = AGVStaionEnum.F1.ToString(),
- PalletNo = modTask.PalletNo,
- Status = TaskStatusEnum.Wait,
- Levels = 5,
- Origin = "WCS"
- };
- _db.Insertable(modInsertTask).ExecuteCommand();
- HubUtil.PublicTask(modInsertTask.Adapt<WcsTaskOutput>());
- }
- else if (station == 4)
- {
- WcsTask modInsertTask = new WcsTask()
- {
- TaskNo = _taskService.GetTaskCode(),
- TaskType = TaskTypeEnum.Move,
- Type = PLCTypeEnum.AGV,
- StartLocate = AGVStaionEnum.A1.ToString(),
- EndLocate = AGVStorageUtil.GetPalletInStorage(),
- PalletNo = modTask.PalletNo,
- Status = TaskStatusEnum.Wait,
- Levels = 5,
- Origin = "WCS"
- };
- _db.Insertable(modInsertTask).ExecuteCommand();
- HubUtil.PublicTask(modInsertTask.Adapt<WcsTaskOutput>());
- }
- }
- else
- {
- Log.Error("鑾峰彇璧峰宸ヤ綅澶辫触锛屽け璐ュ師鍥�" + resultS.Err);
- return;
+ TaskNo = TaskNo,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"鍐欏叆鎸囦护340锛歿modDevice.StationNum}宸ヤ綅鐢宠鍌ㄤ綅",
+ PalletNo = palletVal,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = modDevice.StationNum,
+ EndLocat = strMsg,
+ };
+
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+
+ // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
+ HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
+ ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n";
+ ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+ ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+ ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+ ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+ LedDisplay(modDevice.LedIP, ledText);
}
}
- var ledText = "";
- if (modDevice.StationNum == "4")
+ else
{
- //todo:led
- ledText += "浠诲姟绫诲瀷:鍏ュ簱\n\n";
- ledText += $"浠诲姟鍙�:{taskNo}\n";
- ledText += $"鎵樼洏鍙�:{palletNo}\n\n";
- //ledText += $"璧峰浣�:10\n";
- //ledText += $"鐩爣浣�:4";
+ // 鐢宠鍌ㄤ綅澶辫触锛丩ED鏄剧ず
+ Log.Error(string.Format($"鐢宠鍌ㄤ綅澶辫触:{strMsg},璇诲啓plc閿欒"));
+ // led鏄剧ず鍐呭
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
+ ledText += $"鐢宠鍏ュ簱澶辫触\n\n";
+ ledText += $"{strMsg}\n";
LedDisplay(modDevice.LedIP, ledText);
}
- var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "150");
- Log.Information($"鍚憄lc{modDevice.PlcIdIP}鍐欏叆150锛岀粨鏋滐細{ret.ToJson()}");
- if (ret.IsSucceed)
- {
- string strTaskNo = taskNo;
- modTask = _db.Queryable<WcsTask>().First(s => s.TaskNo == strTaskNo);
- if (modTask != null)
- {
- modTaskMonitor = new WcsTaskMonitor()
- {
- TaskNo = modTask.TaskNo,
- PlcId = modDevice.PlcId,
- PlcName = modDevice.Text,
- StartLocat = modTask.StationNum,
- EndLocat = modTask.EndLocate,
- InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆鎸囦护150锛岀粨鏋渰ret.IsSucceed}",
- };
- modTaskMonitor.Status = TaskStatusEnum.Complete;
- _db.Insertable(modTaskMonitor).ExecuteCommand();
- modTask.FinishDate = DateTime.Now;
- modTask.Status = TaskStatusEnum.Complete;
- _db.Updateable(modTask).ExecuteCommand();
- //涓嬪彂浠诲姟鏃ュ織
- HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
- HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
- }
- }
+ }
+ break;
+ case "630":
+ {
+ #region plc鍏夌數鎵弿涓嶅埌鎵樼洏鍚� 鑷姩娓呬俊鎭�
+
+ //// 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭�
+ //var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�");
+ //var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
+ //// 鑾峰彇宸ヤ綅浠诲姟鍙蜂俊鎭�
+ //var modPosTaskNo = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�");
+ //var (taskRes, taskNoVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosTaskNo.PlcPos);
+ //if (!res.IsSucceed || !taskRes.IsSucceed)
+ //{
+ // break;
+ //}
+ //string pallet = palletVal.ToString();
+ //string taskNo = taskNoVal.ToString();
+ //// 鑾峰彇浠诲姟淇℃伅
+ //var modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.PalletNo == pallet && s.Status == TaskStatusEnum.Doing && s.TaskType == TaskTypeEnum.In && s.TaskNo == taskNo);
+ //if (modTask == null)
+ //{
+ // // 姝ゆ墭鐩樻病鏈夊搴旂殑杞Щ浠诲姟 led鏄剧ず
+ // break;
+ //}
+
+ //var sInfo = PLCCommon.GetStokePlc(modTask.EndRoadway, louCeng);
+ //if (string.IsNullOrWhiteSpace(sInfo.Ip))
+ //{
+ // //闇�鍔犱笂LED鏄剧ず
+ // Log.Error(string.Format($"鏍规嵁宸烽亾鑾峰彇璺烘満IP澶辫触锛岃鑱旂郴绠$悊鍛�"));
+ // break;
+ //}
+ //// 璺烘満杩炴帴
+ //var plcStackeConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == sInfo.Ip);
+ //if (plcStackeConn.Connected)
+ //{
+ // // 鐩爣鎺掑垪灞�
+ // var endLocate = modTask.EndLocate;
+ // if (string.IsNullOrWhiteSpace(modTask.EndLocate))
+ // {
+ // Log.Error(string.Format($"鐩爣浣嶇疆涓虹┖锛岃浜哄伐澶勭悊,璇诲啓plc閿欒"));
+ // break;
+ // }
+
+ // // 杞崲鐩爣宸ヤ綅鎺掑垪灞� 03010301
+ // var paiVal = PLCCommon.GetDjAdress(modTask.EndRoadway.Substring(1, 2), endLocate.Substring(0, 2), endLocate.Substring(6, 2));
+ // string pai = paiVal.ToString();
+ // string lie = int.Parse(endLocate.Substring(2, 2)).ToString();
+ // string ceng = int.Parse(endLocate.Substring(4, 2)).ToString();
+
+ // var djmodel = _db.Queryable<WcsPlc>().First(m => m.IP == sInfo.Ip);
+
+ // var djMod = PLCTaskAction.plcDevices.First(m => m.PlcId == djmodel.Id
+ // && m.DeviceType == DeviceTypeEnum.Business && m.IsDelete == false);
+ // var djInfos = PLCTaskAction.plcPositions.Where(m => m.IsDelete == false && m.DeviceId == djMod.Id).ToList();
+ // var djInfo = djInfos.First(m => m.Text == "PLC娴佺▼瀛�");
+
+ // // 鑾峰彇璺烘満褰撳墠鐘舵��
+ // var (djRes, djVal) = plcStackeConn.GetPlcDBValue(djMod.PosType, djMod.DbNumber, djMod.PlcPos);
+
+ // if (!djRes.IsSucceed || djVal.ToString() != "820")
+ // {
+ // // 璺烘満闈炵┖闂茬瓑寰�
+ // 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));
+ // var modPosTaskType = djInfos.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷");
+ // var taskTypeStr = (int)modTask.TaskType;
+ // listResult.Add(plcStackeConn.SetPlcDBValue(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));
+
+ // //璧峰宸ヤ綅
+ // var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅");
+ // listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum));
+
+ // //鍙栬揣鎺掋�佸垪銆佸眰
+ // var modPosStrPai = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣鎺�");
+ // listResult.Add(plcStackeConn.SetPlcDBValue(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));
+ // var modPosStrCeng = djInfos.FirstOrDefault(s => s.Text == "鍙栬揣灞�");
+ // listResult.Add(plcStackeConn.SetPlcDBValue(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));
+ // var modPosEndLie = djInfos.FirstOrDefault(s => s.Text == "鏀捐揣鍒�");
+ // listResult.Add(plcStackeConn.SetPlcDBValue(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));
+
+ // if (listResult.All(s => s.IsSucceed))
+ // {
+ // // 鍐欏叆璺烘満 830
+ // var retc2 = plcStackeConn.SetPlcDBValue(djMod.PosType, djMod.DbNumber, djMod.WcsPos, "830");
+
+ // // 鎻掑叆浠诲姟鏄庣粏 浠诲姟鏄庣粏瀹炰綋绫�
+ // var modInsertTaskMonitor = new WcsTaskMonitor()
+ // {
+ // TaskNo = modTask.TaskNo,
+ // PlcId = modDevice.Id,
+ // PlcName = modDevice.Text,
+ // PalletNo = modTask.PalletNo,
+ // Status = TaskStatusEnum.Complete,
+ // StartLocat = modDevice.StationNum,
+ // EndLocat = modTask.EndLocate // 鐩爣鍌ㄤ綅鍦板潃
+ // };
+ // if (!retc2.IsSucceed)
+ // {
+ // modInsertTaskMonitor.InteractiveMsg = $"杈撻�佺嚎鍙栬揣宸ヤ綅锛歿modDevice.StationNum},鍐欏叆鍨涙満鍙栬揣浠诲姟830澶辫触绛夊緟鍐嶆鍐欏叆";
+ // // 鎻掑叆浜や簰鏃ュ織
+ // _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+ // //涓嬪彂浠诲姟鏃ュ織
+ // HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ // break;
+
+ // }
+ // modInsertTaskMonitor.InteractiveMsg = $"璺烘満鍐欏叆鎸囦护830锛歿modDevice.StationNum}宸ヤ綅====銆�" + modTask.EndLocate + "鍌ㄤ綅鍦板潃!";
+ // // 鎻掑叆浜や簰鏃ュ織
+ // _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+ // if (PLCTaskAction.boRefresh)
+ // {
+ // //涓嬪彂浠诲姟鏃ュ織
+ // HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ // }
+
+ // }
+
+
+
+
+ //}
+
+ #endregion
}
break;
+ #region 鍑哄簱浜や簰
+ case "420":
+ {
+ #region 鎵樼洏鍒拌揪鎷i�夊伐浣�/鍑哄簱鍙�
+ // 鍑哄簱鍙�
+ // led鏄剧ず鎵樼洏淇℃伅
+ // 鍐欏叆430
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "430");
+
+ if (ret.IsSucceed)
+ {
+ var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�");
+ var (res, taskVal) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos);
+ var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�");
+ var (res2, palletVal) = plcConn.GetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos);
+ var modPosStarStationNum = modDevice.listStation.FirstOrDefault(m => m.Text == "璧峰宸ヤ綅");
+ var (res3, starVal) = plcConn.GetPlcDBValue(modPosStarStationNum.PosType, modDevice.DbNumber, modPosStarStationNum.PlcPos);
+ // 鎻掑叆浠诲姟鏄庣粏
+ var modInsertTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = taskVal,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"鍐欏叆鎸囦护430锛氭墭鐩樺埌杈緖modDevice.StationNum}宸ヤ綅",
+ PalletNo = palletVal,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = starVal,
+ EndLocat = modDevice.StationNum,
+ };
+
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+
+ // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
+ HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+
+ // 鏍规嵁浠诲姟鍙疯幏鍙栬捣濮嬪伐浣嶅湴鍧�锛屾牴鎹捣濮嬪伐浣嶅湴鍧�鑾峰彇LEDIP 鎺ㄩ�佸埌LED灞忓箷銆�
+ var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskNo == modInsertTaskMonitor.TaskNo);
+ modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == taskInfo.EndLocate).Select(s => s.LedIP).First();
+
+ // led鏄剧ず鍐呭
+ // 鏍规嵁鐩爣宸ヤ綅鍙疯幏鍙栧搴旂殑LEDIP鍦板潃
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId);
+
+ ledText += $"鍑哄簱瀹屾垚\n\n";
+ ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+ ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+ ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+ ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+ LedDisplay(ledDevice.LedIP, ledText);
+ }
+ // 鍙嶉WMS鍑哄簱瀹屾垚
+ //TaskReques taskReques = new TaskReques();
+ //taskReques.taskNo = TaskNo;
+ //taskReques.TaskType = "1";
+ //taskReques.TaskStatus = "2";
+ //bool bl = wcsMySql.RequestTasks(taskReques);
+ #endregion
+ }
+ break;
+ case "440":
+ {
+ #region 鎷i�夊畬鎴�,鎵樼洏绂诲紑宸ヤ綅
+ // 鍐欏叆450
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "450");
+ if (ret.IsSucceed)
+ {
+ var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�");
+ var (res, taskVal) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos);
+ var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�");
+ var (res2, palletVal) = plcConn.GetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos);
+ var modPosStarStationNum = modDevice.listStation.FirstOrDefault(m => m.Text == "璧峰宸ヤ綅");
+ var (res3, starVal) = plcConn.GetPlcDBValue(modPosStarStationNum.PosType, modDevice.DbNumber, modPosStarStationNum.PlcPos);
+
+ string tasknoVal = taskVal.ToString();
+ var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false);
+ if (modTask == null)
+ {
+ Log.Error(string.Format("杈撻�佺嚎440:鏈壘鍒板搴旂殑浠诲姟銆�"));
+ break;
+ }
+ // 鏀瑰彉浠诲姟鐘舵��
+ modTask.Status = TaskStatusEnum.Complete;
+ modTask.FinishDate = DateTime.Now;
+ modTask.Levels = 999;
+ _db.Updateable(modTask).ExecuteCommand();
+ HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ // 鎻掑叆浠诲姟鏄庣粏
+ var modInsertTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = modTask.TaskNo,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"鍐欏叆鎸囦护450锛歿modDevice.StationNum}鍑哄簱瀹屾垚",
+ PalletNo = palletVal,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = starVal.ToString(),
+ EndLocat = modDevice.StationNum,
+ };
+ if (modTask.Origin == "WMS")
+ {
+ // 鍙嶉WMS
+ var requestMode = new TaskRequestWMS()
+ {
+ TaskNo = modTask.TaskNo + modTask.EndLocate,
+ PalletNo = modTask.PalletNo,
+ 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));
+ }
+ }
+
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+
+ // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
+ HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ // led鏄剧ず鍐呭
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId);
+
+ ledText += $"鍑哄簱瀹屾垚\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);
+ }
+ #endregion
+ }
+ break;
+
+ #endregion
default: break;
}
-
}
/// <summary>
@@ -599,160 +1012,22 @@
/// <param name="modDevice"></param>
private static void AGV(WcsDeviceDto modDevice)
{
- if (AGVStatus)
- {
- return;
- }
- //杩欓噷鎵惧嚭鏉GV寰呮墽琛屽拰姝e湪鎵ц鐨勪换鍔★紝濡傛灉鏈夋鍦ㄦ墽琛岀殑浠诲姟灏辫烦鍑猴紝娌℃湁鐨勮瘽灏辨寜鐓т紭鍏堢骇涓嬪彂涓�涓换鍔$粰AGV
- var listTask = _db.Queryable<WcsTask>()
- .Where(s => (s.Status == TaskStatusEnum.Doing || s.Status == TaskStatusEnum.Wait) && s.Type == PLCTypeEnum.AGV)
- .OrderBy(s => s.Levels).ToList();
+
+ //杩欓噷鎵惧嚭鏉GV寰呮墽琛岀殑浠诲姟銆佹寜鐓т紭鍏堢骇涓嬪彂涓�涓换鍔$粰AGV
+ var listTask = _db.Queryable<WcsTask>().Where(s => (s.Status == TaskStatusEnum.Wait || s.Status == TaskStatusEnum.Doing) && s.Type == PLCTypeEnum.AGV).OrderBy(s => s.Levels).ToList();
if (listTask.Count == 0)
- return;
- if (listTask.Any(s => s.Status == TaskStatusEnum.Doing))
{
- //鏈変换鍔℃墽琛屼腑 鏆備笉涓嬪彂浠诲姟
return;
}
- //WcsTask modTask = listTask.FirstOrDefault();
+
foreach (var modTask in listTask)
{
- //鍏ョ紦瀛樺尯鏃讹紝妫�楠屼竴涓嬬紦瀛樺尯浣嶇疆
- if (modTask.EndLocate.Substring(0, 1) == "Z")
+ if (_db.Queryable<WcsTask>().Any(s => s.EndLocate == modTask.EndLocate && s.IsDelete == false && s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.AGV ))
{
- if (modTask.EndLocate.Substring(1, 1) == "5")
- {
- string end = AGVStorageUtil.GetPalletInStorage(modTask.TaskNo);
- if (end.IsNullOrEmpty())
- continue;
- if (modTask.EndLocate != end)
- {
- modTask.EndLocate = end;
- }
- }
- else
- {
- string end = AGVStorageUtil.GetProductInStorage(modTask.TaskNo);
- if (end.IsNullOrEmpty())
- continue;
- if (modTask.EndLocate != end)
- {
- modTask.EndLocate = end;
- }
- }
+ continue; // 鏈夌洰鐨勪綅缃竴鑷翠笖姝e湪鎵ц鐨勪换鍔�
}
- //鍑虹紦瀛樺尯鏃讹紝妫�楠屼竴涓嬬紦瀛樺尯浣嶇疆
- if (modTask.StartLocate.Substring(0, 1) == "Z")
- {
- if (modTask.StartLocate.Substring(1, 1) == "5")
- {
- string start = AGVStorageUtil.GetPalletOutStorage();
- if (start.IsNullOrEmpty())
- continue;
- if (modTask.StartLocate != start)
- {
- modTask.StartLocate = start;
- }
- }
- else
- {
- string start = AGVStorageUtil.GetProductOutStorage();
- if (start.IsNullOrEmpty())
- continue;
- if (modTask.StartLocate != start)
- {
- modTask.StartLocate = start;
- }
- }
- }
- //鎶婃墭鐩樻媺鍒扮紦瀛樹綅 鍏堝垽鏂繖閲屾湁娌℃湁
- if (modTask.EndLocate.Substring(0, 1) == "C")
- {
- var bo = _sysConfigService.GetConfigValue<bool>("cache_" + modTask.EndLocate).Result;
- if (bo)
- continue;
- }
- //濡傛灉鎷夋墭鐩樺幓鎴愬搧宸ヤ綅锛屽厛妫�鏌ユ湁娌℃湁缂烘墭
- if (modTask.StartLocate.Substring(0, 1) == "D" && modTask.EndLocate.Substring(0, 1) == "B")
- {
- //鍒ゆ柇鐩爣浣嶇疆鏄媶鎵樻満鐨勪换鍔℃湁娌℃湁锛屾湁灏辫烦杩囨媶鎵樻満鍒版垚鍝佸伐浣嶇殑浠诲姟
- if (listTask.Any(s => s.EndLocate.Substring(0, 1) == "D"))
- continue;
- }
- //濡傛灉鐩殑宸ヤ綅鏄師鏂欎粨锛屽厛妫�鏌ュ師鏂欎粨鍌ㄤ綅鐘舵��
- if (modTask.EndLocate == AGVStaionEnum.F1.ToString())
- {
- if (_sysConfigService.GetConfigValue<bool>("cache_Materal").Result)
- continue;
- }
- //if (modTask.StartLocate == AGVStaionEnum.F1.ToString())
- //{
- // if (!_sysConfigService.GetConfigValue<bool>("cache_Materal").Result)
- // continue;
- //}
- //濡傛灉璧峰宸ヤ綅鏄媶鎵樻満
- if (modTask.StartLocate == AGVStaionEnum.D1.ToString())
- {
- //鑾峰彇鍙犳媶鎵樻満IP
- var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.PalletMachine);
- //鑾峰彇鍙犳媶鎵樻満宸ヤ綅
- var modDevice2 = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Text == "鎷嗘墭鏈�");
- //鎵撳紑杩炴帴
- var modConn = new PLCUtil(modPlc);
- //鏄惁鍏佽鍙栨墭淇″彿
- var modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice2.Id && s.Text == "鍏佽鍙栨墭");
- var (result, value) = modConn.GetPlcDBValue(modPos.PosType, modDevice2.DbNumber, modPos.PlcPos);
- if (result.IsSucceed)
- {
- if (value)
- {
- //濡傛灉鏈畬鎴愬氨鍒ゆ柇涓嬪彇鎵樹俊鍙锋湁娌℃湁鍐欙紝瀹屾垚灏卞彨灏忚溅鍙栨墭鐩�
- modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice2.Id && s.Text == "鍙栨墭淇″彿");
- (result, value) = modConn.GetPlcDBValue(modPos.PosType, modDevice2.DbNumber, modPos.PlcPos);
- //濡傛灉娌″啓鍏ュ彇鎵樹俊鍙凤紝灏卞啓鍏�
- if (result.IsSucceed && !value)
- {
- result = modConn.SetPlcDBValue(modPos.PosType, modDevice2.DbNumber, modPos.PlcPos, "1");
- WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor()
- {
- TaskNo = modTask.TaskNo,
- PlcId = modDevice2.PlcId,
- PlcName = modPos.PlcPos,
- Status = TaskStatusEnum.Doing,
- InteractiveMsg = $"鍚憑modDevice2.Text}鍐欏叆鍙栨墭淇″彿1锛岀粨鏋渰result.IsSucceed}",
- };
- _db.Insertable(modTaskMonitor).ExecuteCommand();
- HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
- Thread.Sleep(5000);
- }
- break;
-
- }
- else
- {
- //涓嶅厑璁稿彇鎵橈紝鍒ゆ柇鏄惁鎷嗘墭鏈哄噯澶囧畬鎴�
- modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice2.Id && s.Text == "鍑嗗瀹屾垚");
- (result, value) = modConn.GetPlcDBValue(modPos.PosType, modDevice2.DbNumber, modPos.PlcPos);
- if (!value)
- {
- continue;
- }
- }
- }
- else
- {
- Console.WriteLine("杩炴帴鎷嗘墭鏈轰俊鍙峰け璐�");
- continue;
- }
- }
- //濡傛灉鐩殑宸ヤ綅鏄彁鍗囨満鏀捐揣宸ヤ綅锛屽厛妫�鏌ユ湁娌℃湁鎵樼洏绾跨殑浠诲姟
- if (modTask.EndLocate == AGVStaionEnum.A1.ToString())
- {
- if (_db.Queryable<WcsTask>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Status == TaskStatusEnum.Doing).Any())
- continue;
- }
-
+ //涓嬪彂AGV浠诲姟
AgvTaskInput input = new AgvTaskInput()
{
ReqCode = modTask.Id.ToString(),
--
Gitblit v1.8.0