|
|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
using Khd.Core.Domain.Dto.webapi;
|
|
|
|
|
using Khd.Core.Domain.Models;
|
|
|
|
|
using Khd.Core.EntityFramework;
|
|
|
|
|
using Khd.Core.Library;
|
|
|
|
|
using Khd.Core.Library.Mapper;
|
|
|
|
|
using Khd.Core.Plc.S7;
|
|
|
|
|
using Khd.Core.Wcs.Global;
|
|
|
|
|
@ -18,11 +19,12 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class ThirdFloorAGV
|
|
|
|
|
{
|
|
|
|
|
private readonly LoggerUtils _logger = new LoggerUtils();
|
|
|
|
|
private readonly IHost _host;
|
|
|
|
|
int FloorNo { get; set; }
|
|
|
|
|
private readonly BasePlcpoint putTrayPoint;
|
|
|
|
|
private readonly BasePlcpoint getTrayPoint;
|
|
|
|
|
public ThirdFloorAGV(IHost host, Plc.S7.Plc plc, int floor)
|
|
|
|
|
public ThirdFloorAGV(IHost host, int floor)
|
|
|
|
|
{
|
|
|
|
|
this._host = host;
|
|
|
|
|
FloorNo = floor;
|
|
|
|
|
@ -37,13 +39,17 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
Thread FlowPointThread = new Thread(MonitorInLocatorPoint);
|
|
|
|
|
FlowPointThread.Name = "ThirdFloorAGVTrayIn";
|
|
|
|
|
FlowPointThread.IsBackground = true;
|
|
|
|
|
FlowPointThread.Start();
|
|
|
|
|
|
|
|
|
|
Thread FZJThread = new Thread(MonitorInFZJPoint);
|
|
|
|
|
FZJThread.Name = "ThirdFloorAGV";
|
|
|
|
|
FZJThread.IsBackground = true;
|
|
|
|
|
FZJThread.Start();
|
|
|
|
|
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":三楼AGV 启动上件扫描监听");
|
|
|
|
|
LogManager.Info("三楼AGV 启动上件扫描监听");
|
|
|
|
|
_logger.Info("三楼AGV 启动上件扫描监听");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void MonitorInFZJPoint(object? obj)
|
|
|
|
|
@ -56,9 +62,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
|
var getTrayValue = StaticData.PlcDic[2].Read(getTrayPoint.plcpointAddress);
|
|
|
|
|
if (getTrayValue != null && Convert.ToInt32(getTrayValue) == 1)
|
|
|
|
|
//BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 31);
|
|
|
|
|
//if (baseEquip.emptyCount == 1)
|
|
|
|
|
if (getTrayValue != null && Convert.ToBoolean(getTrayValue))
|
|
|
|
|
{
|
|
|
|
|
var task = dbContext.WcsTask.Where(t => t.taskType == 42 && t.useFlag == 0).FirstOrDefault();
|
|
|
|
|
if (task != null)
|
|
|
|
|
@ -85,7 +89,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(task);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
LogManager.Info("三楼AGV 生成空托盘入收集架任务:" + task.objid);
|
|
|
|
|
_logger.Info("三楼AGV 生成空托盘入收集架任务:" + task.objid);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -110,7 +114,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
LogManager.Error(ex);
|
|
|
|
|
_logger.Error(ex.Message + "\n" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
Thread.Sleep(3000);
|
|
|
|
|
}
|
|
|
|
|
@ -161,7 +165,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
|
|
|
|
|
if (reponseMessage != null && reponseMessage.message == "成功")
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
_logger.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo);
|
|
|
|
|
item.taskCode = reponseMessage.data;
|
|
|
|
|
item.taskStatus = 1;
|
|
|
|
|
@ -171,7 +175,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
_logger.Info("五楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (item.taskType == 39)//提升机-库位
|
|
|
|
|
@ -202,7 +206,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
|
|
|
|
|
if (reponseMessage != null && reponseMessage.message == "成功")
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
_logger.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo);
|
|
|
|
|
item.taskCode = reponseMessage.data;
|
|
|
|
|
item.taskStatus = 1;
|
|
|
|
|
@ -212,10 +216,14 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
_logger.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (item.taskType == 41)//库位-翻转机
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "putTray");
|
|
|
|
|
var callMaterial = StaticData.PlcDic[2].Read(basePlcpoint.plcpointAddress);
|
|
|
|
|
if (callMaterial != null&&Convert.ToBoolean(callMaterial))
|
|
|
|
|
{
|
|
|
|
|
WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.rawOutstockId == item.orderId && t.executeStatus == "0");
|
|
|
|
|
if (wmsRawOutstockDetail != null)
|
|
|
|
|
@ -249,7 +257,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
|
|
|
|
|
if (reponseMessage != null && reponseMessage.message == "成功")
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
_logger.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo);
|
|
|
|
|
item.taskCode = reponseMessage.data;
|
|
|
|
|
item.taskStatus = 1;
|
|
|
|
|
@ -260,7 +268,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
_logger.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -293,7 +302,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
|
|
|
|
|
if (reponseMessage != null && reponseMessage.message == "成功")
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
_logger.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo);
|
|
|
|
|
item.taskCode = reponseMessage.data;
|
|
|
|
|
item.taskStatus = 1;
|
|
|
|
|
@ -303,7 +312,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
_logger.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (item.taskType == 42)//翻转机-收集架
|
|
|
|
|
@ -335,7 +344,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
|
|
|
|
|
if (reponseMessage != null && reponseMessage.message == "成功")
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
_logger.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo);
|
|
|
|
|
item.taskCode = reponseMessage.data;
|
|
|
|
|
item.taskStatus = 1;
|
|
|
|
|
@ -345,7 +354,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
_logger.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (item.taskType == 43)//收集架-周转区
|
|
|
|
|
@ -378,7 +387,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
|
|
|
|
|
if (reponseMessage != null && reponseMessage.message == "成功")
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
_logger.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo);
|
|
|
|
|
item.taskCode = reponseMessage.data;
|
|
|
|
|
item.taskStatus = 1;
|
|
|
|
|
@ -388,7 +397,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
_logger.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (item.taskType == 44)//周转区-提升机
|
|
|
|
|
@ -423,7 +432,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
|
|
|
|
|
if (reponseMessage != null && reponseMessage.message == "成功")
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
_logger.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo);
|
|
|
|
|
item.taskCode = reponseMessage.data;
|
|
|
|
|
item.taskStatus = 1;
|
|
|
|
|
@ -435,7 +444,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
_logger.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -470,7 +479,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
|
|
|
|
|
if (reponseMessage != null && reponseMessage.message == "成功")
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
_logger.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo);
|
|
|
|
|
item.taskCode = reponseMessage.data;
|
|
|
|
|
item.taskStatus = 1;
|
|
|
|
|
@ -482,7 +491,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
_logger.Info("三楼Agv下发任务失败" + item.taskType + message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -501,7 +510,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var RfidValue = StaticData.PlcDic[0].ReadRFID(Rfid.plcpointAddress);
|
|
|
|
|
if (lineSignalValue == null || item.containerNo != RfidValue || Convert.ToInt32(lineSignalValue) == 0)
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info($"三楼Agv继续任务失败,所取货物与任务不符,任务货物为{item.containerNo},RFID为{RfidValue},线路信号为{lineSignalValue}");
|
|
|
|
|
_logger.Info($"三楼Agv继续任务失败,所取货物与任务不符,任务货物为{item.containerNo},RFID为{RfidValue},线路信号为{lineSignalValue}");
|
|
|
|
|
Console.WriteLine($"{DateTime.Now}:三楼Agv继续任务失败,所取货物与任务不符,任务货物为{item.containerNo},RFID为{RfidValue},线路信号为{lineSignalValue}");
|
|
|
|
|
Thread.Sleep(1000);
|
|
|
|
|
continue;
|
|
|
|
|
@ -513,7 +522,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var lineSignalValue = StaticData.PlcDic[0].Read(lineSignal.plcpointAddress);
|
|
|
|
|
if (lineSignalValue == null || Convert.ToInt32(lineSignalValue) == 1)
|
|
|
|
|
{
|
|
|
|
|
LogManager.Info($"三楼Agv继续任务失败,提升机有货物");
|
|
|
|
|
_logger.Info($"三楼Agv继续任务失败,提升机有货物");
|
|
|
|
|
Console.WriteLine($"{DateTime.Now}:三楼Agv继续任务失败,提升机有货物");
|
|
|
|
|
Thread.Sleep(1000);
|
|
|
|
|
continue;
|
|
|
|
|
@ -572,7 +581,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
transaction.Rollback();
|
|
|
|
|
LogManager.Error(ex);
|
|
|
|
|
_logger.Error(ex.Message + "\n" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (item.taskType == 39)//入库
|
|
|
|
|
@ -773,7 +782,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
LogManager.Error(ex);
|
|
|
|
|
_logger.Error(ex.Message + "\n" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
|