|
|
|
|
@ -20,19 +20,19 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
private readonly LoggerUtils _logger = new LoggerUtils();
|
|
|
|
|
private readonly IHost _host;
|
|
|
|
|
int FloorNo { get; set; }
|
|
|
|
|
private int FloorNo { get; set; }
|
|
|
|
|
|
|
|
|
|
public SecondFloorLine(IHost host, int floor)
|
|
|
|
|
{
|
|
|
|
|
this._host = host;
|
|
|
|
|
FloorNo = floor;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 启动上件扫描监听
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void StartPoint()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
Thread FlowPointThread = new Thread(MonitorInLocatorPoint);
|
|
|
|
|
FlowPointThread.IsBackground = true;
|
|
|
|
|
FlowPointThread.Name = "SecondFloorLine";
|
|
|
|
|
@ -61,7 +61,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
dbContext.ChangeTracker.Clear();
|
|
|
|
|
dbContext.ChangeTracker.Clear();
|
|
|
|
|
var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress);//托盘库叫料信号
|
|
|
|
|
var ConnectStatus2F = StaticData.PlcDic[2].Read(ConnectStatus2FPoint.plcpointAddress);//2F托盘库产线数据通讯情况
|
|
|
|
|
var PalletInIsHas2F = StaticData.PlcDic[2].Read(PalletInIsHas2FPoint.plcpointAddress);//2F托盘库入口上料光电
|
|
|
|
|
@ -73,11 +73,18 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
// 托盘库叫料信号,并且通讯正常,并且小包入口无料才可叫料
|
|
|
|
|
if (Convert.ToInt32(agvPutValue) == 1 && Convert.ToInt32(ConnectStatus2F) == 1 && Convert.ToInt32(PalletInIsHas2F) == 0)//小包入口叫料
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 8 || t.endPointId == endEquip.objid).Any();//有没有生成任务
|
|
|
|
|
//36 是小包入口的设备信息,8是二楼Agv设备
|
|
|
|
|
if (!canCreate)//没有任务
|
|
|
|
|
{
|
|
|
|
|
//间隔20分钟以下,禁止再次生成空托盘配送到小包入口任务
|
|
|
|
|
bool hasHistoryTask = dbContext.WcsTaskLog.Where(t => t.endPointNo == endEquip.equipNo && t.createTime >= DateTime.Now.AddMinutes(-20)).Any();
|
|
|
|
|
if (hasHistoryTask)
|
|
|
|
|
{
|
|
|
|
|
//20分钟内已经生成过任务
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BaseEquip? baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.emptyCount >= 1);//二楼周转区是否存在一个空托盘以上的
|
|
|
|
|
if (baseEquip != null)//二楼周转区有可以去小包入口的库位
|
|
|
|
|
{
|
|
|
|
|
@ -335,7 +342,6 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
|
|
|
|
|
if (wmsBaseLocation != null)//如果找到库位,生成入库任务
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 37);
|
|
|
|
|
var wcsTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
@ -375,12 +381,10 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
// TODO: 没有找到库位,添加报警处理
|
|
|
|
|
Thread.Sleep(1000 * 5);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -388,7 +392,6 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
if (ex is PlcException)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
@ -402,4 +405,4 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|