|
|
|
|
@ -290,9 +290,14 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 1);
|
|
|
|
|
if (Convert.ToInt32(linesignal01Value) == 1)
|
|
|
|
|
{
|
|
|
|
|
bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 6 && t.currPointId == 1).Any();
|
|
|
|
|
if (hasTask)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
//判断task表里没有该rfid的未完成的入库
|
|
|
|
|
//信息,未下发去向
|
|
|
|
|
var task = dbContext.WcsTask.Where(t => t.IsDelete == 0||t.IsDelete==null).Where(t => t.nextPointId == 1).OrderBy(t => t.createTime).FirstOrDefault();
|
|
|
|
|
var task = dbContext.WcsTask.Where(t => t.IsDelete == 0 || t.IsDelete == null).Where(t => t.nextPointId == 1).OrderBy(t => t.createTime).FirstOrDefault();
|
|
|
|
|
if (task == null)
|
|
|
|
|
{
|
|
|
|
|
if (BigContainerCodes.Contains(RFID001Value))
|
|
|
|
|
@ -510,114 +515,150 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01).OrderBy(t => t.createTime).ToList();
|
|
|
|
|
foreach (var wcsTask in wcsTasks)
|
|
|
|
|
{
|
|
|
|
|
wcsTask.serialNo ??= SystemData.GetSerialNo(dbContext);
|
|
|
|
|
if (wcsTasks.Where(t => t.taskStatus > 0).Where(t => t.objid != wcsTask.objid).Any())
|
|
|
|
|
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == wcsTask.endPointId && t.objid != wcsTask.objid).Any();
|
|
|
|
|
if (!hasTask)
|
|
|
|
|
{
|
|
|
|
|
_logger.Info("提升机线程:有其他任务正在执行,跳过当前任务");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == wcsTask.floorNo);
|
|
|
|
|
if (wcsTask.taskStatus == 0 && Convert.ToInt32(hoisterTrayIn06Value) == 0)//创建状态,并且里面没有货物
|
|
|
|
|
{
|
|
|
|
|
if (lineEquip.equipStatus == 1)
|
|
|
|
|
wcsTask.serialNo ??= SystemData.GetSerialNo(dbContext);
|
|
|
|
|
if (wcsTasks.Where(t => t.taskStatus > 0).Where(t => t.objid != wcsTask.objid).Any())
|
|
|
|
|
{
|
|
|
|
|
_logger.Info("提升机线程:" + wcsTask.floorNo + "楼接驳位有AGV任务,跳过当前任务");
|
|
|
|
|
_logger.Info("提升机线程:有其他任务正在执行,跳过当前任务");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == wcsTask.floorNo);
|
|
|
|
|
if (wcsTask.taskStatus == 0 && Convert.ToInt32(hoisterTrayIn06Value) == 0)//创建状态,并且里面没有货物
|
|
|
|
|
{
|
|
|
|
|
if (lineEquip.equipStatus == 1)
|
|
|
|
|
{
|
|
|
|
|
_logger.Info("提升机线程:" + wcsTask.floorNo + "楼接驳位有AGV任务,跳过当前任务");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
|
|
|
|
|
if (wcsTask.containerNo == StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//当前楼层和起始楼层一致
|
|
|
|
|
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
|
|
|
|
|
if (wcsTask.containerNo == StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 2;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行中";
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令");
|
|
|
|
|
_logger.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令");
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
|
|
|
|
|
lineEquip.equipStatus = 1;
|
|
|
|
|
dbContext.Update(lineEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//当前楼层和起始楼层一致
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 2;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行中";
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令");
|
|
|
|
|
_logger.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令");
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
|
|
|
|
|
lineEquip.equipStatus = 1;
|
|
|
|
|
dbContext.Update(lineEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else//当前楼层和起始楼层不一致
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 1;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行中";
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.fromFloorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.fromFloorNo + "楼指令");
|
|
|
|
|
_logger.Info("提升机下发去往" + wcsTask.fromFloorNo + "楼指令");
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 1, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
|
|
|
|
|
lineEquip.equipStatus = 1;
|
|
|
|
|
dbContext.Update(lineEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else//当前楼层和起始楼层不一致
|
|
|
|
|
}
|
|
|
|
|
if (wcsTask.taskStatus == 1 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
|
|
|
|
|
if (wcsTask.containerNo == StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 1;
|
|
|
|
|
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//提升机当前楼层为初始地楼层
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 2;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行中";
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令");
|
|
|
|
|
_logger.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令");
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (wcsTask.taskStatus == 2 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(hoisterTrayIn06Value) == 1)//托盘已经进提升机
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 3;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行中";
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.fromFloorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.fromFloorNo + "楼指令");
|
|
|
|
|
_logger.Info("提升机下发去往" + wcsTask.fromFloorNo + "楼指令");
|
|
|
|
|
wcsTask.remark = "提升机任务执行完成";
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.floorNo + "楼目的地指令");
|
|
|
|
|
_logger.Info("提升机下发去往" + wcsTask.floorNo + "楼目的地指令");
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 1, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
|
|
|
|
|
lineEquip.equipStatus = 1;
|
|
|
|
|
dbContext.Update(lineEquip);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (wcsTask.taskStatus == 1 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
|
|
|
|
|
if (wcsTask.containerNo == StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
if (wcsTask.taskStatus == 3 && Convert.ToInt32(currentfloor06Value) == wcsTask.floorNo && Convert.ToInt32(reserialno06) == wcsTask.serialNo)//任务状态为3,且当前楼层为任务的目的楼层
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//提升机当前楼层为初始地楼层
|
|
|
|
|
if (wcsTask.floorNo == 1)//目的楼层是1
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 2;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行中";
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令");
|
|
|
|
|
_logger.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令");
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
if (ReadEmptyLocation())//托盘库是否有任务,没有任务返回true
|
|
|
|
|
{
|
|
|
|
|
var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress);
|
|
|
|
|
if (linesignal != null && Convert.ToInt32(linesignal) == 0)//接驳位外侧没有东西
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
|
|
|
|
|
var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress);
|
|
|
|
|
if (clearPoint != null && Convert.ToBoolean(clearValue) == true)//是否有报警
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发报警消除指令");
|
|
|
|
|
_logger.Info("提升机下发报警消除指令");
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, false, clearPoint.plcpointLength.ToString());//清除报警
|
|
|
|
|
}
|
|
|
|
|
wcsTask.taskStatus = 4;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行完成";
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.floorNo + "楼出库指令");
|
|
|
|
|
_logger.Info("提升机下发" + wcsTask.floorNo + "楼出库指令");
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else//接驳位外侧有东西
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
|
|
|
|
|
var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress);
|
|
|
|
|
if (clearPoint != null && Convert.ToBoolean(clearValue) == false)
|
|
|
|
|
{
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, true, clearPoint.plcpointLength.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":一楼托盘库有任务正在执行,等待任务执行完成");
|
|
|
|
|
_logger.Info("一楼托盘库有任务正在执行,等待任务执行完成");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (wcsTask.taskStatus == 2 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(hoisterTrayIn06Value) == 1)//托盘已经进提升机
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 3;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行完成";
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.floorNo + "楼目的地指令");
|
|
|
|
|
_logger.Info("提升机下发去往" + wcsTask.floorNo + "楼目的地指令");
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (wcsTask.taskStatus == 3 && Convert.ToInt32(currentfloor06Value) == wcsTask.floorNo && Convert.ToInt32(reserialno06) == wcsTask.serialNo)//任务状态为3,且当前楼层为任务的目的楼层
|
|
|
|
|
{
|
|
|
|
|
if (wcsTask.floorNo == 1)//目的楼层是1
|
|
|
|
|
{
|
|
|
|
|
if (ReadEmptyLocation())//托盘库是否有任务,没有任务返回true
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress);
|
|
|
|
|
if (linesignal != null && Convert.ToInt32(linesignal) == 0)//接驳位外侧没有东西
|
|
|
|
|
if (linesignal != null && Convert.ToInt32(linesignal) == 0)
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
|
|
|
|
|
var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress);
|
|
|
|
|
if (clearPoint != null && Convert.ToBoolean(clearValue) == true)//是否有报警
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发报警消除指令");
|
|
|
|
|
_logger.Info("提升机下发报警消除指令");
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, false, clearPoint.plcpointLength.ToString());//清除报警
|
|
|
|
|
}
|
|
|
|
|
wcsTask.taskStatus = 4;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
@ -630,69 +671,41 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else//接驳位外侧有东西
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
|
|
|
|
|
var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress);
|
|
|
|
|
if (clearPoint != null && Convert.ToBoolean(clearValue) == false)
|
|
|
|
|
{
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, true, clearPoint.plcpointLength.ToString());
|
|
|
|
|
}
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":一楼托盘库有任务正在执行,等待任务执行完成");
|
|
|
|
|
_logger.Info("一楼托盘库有任务正在执行,等待任务执行完成");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
else if (wcsTask.taskStatus == 4)//提升机任务结束
|
|
|
|
|
{
|
|
|
|
|
var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress);
|
|
|
|
|
if (linesignal != null && Convert.ToInt32(linesignal) == 0)
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
var wcsRun = StaticData.PlcDic[0].Read(basePlcpoint.plcpointAddress);
|
|
|
|
|
if (wcsRun != null && Convert.ToInt32(wcsRun) == 0)//判断当前接驳位的任务状态,wcsrrun如果是1代表入库,2是出库,0是空闲
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 4;
|
|
|
|
|
BaseEquip floorEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
|
|
|
|
|
wcsTask.nextPointId = floorEquip.objid;
|
|
|
|
|
wcsTask.nextPointNo = floorEquip.equipNo;
|
|
|
|
|
wcsTask.taskStatus = 5;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行完成";
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.floorNo + "楼出库指令");
|
|
|
|
|
_logger.Info("提升机下发" + wcsTask.floorNo + "楼出库指令");
|
|
|
|
|
lineEquip.equipStatus = 0;
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机任务完成" + wcsTask.fromFloorNo + "---" + wcsTask.floorNo + "楼指令");
|
|
|
|
|
_logger.Info("提升机任务完成" + wcsTask.fromFloorNo + "---" + wcsTask.floorNo + "楼指令");
|
|
|
|
|
dbContext.Update(lineEquip);
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5, nextPointId = floorEquip.objid, nextPointNo = floorEquip.equipNo, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else if (wcsTask.taskStatus == 4)//提升机任务结束
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
var wcsRun = StaticData.PlcDic[0].Read(basePlcpoint.plcpointAddress);
|
|
|
|
|
if (wcsRun != null && Convert.ToInt32(wcsRun) == 0)//判断当前接驳位的任务状态,wcsrrun如果是1代表入库,2是出库,0是空闲
|
|
|
|
|
{
|
|
|
|
|
BaseEquip floorEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
|
|
|
|
|
wcsTask.nextPointId = floorEquip.objid;
|
|
|
|
|
wcsTask.nextPointNo = floorEquip.equipNo;
|
|
|
|
|
wcsTask.taskStatus = 5;
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行完成";
|
|
|
|
|
lineEquip.equipStatus = 0;
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":提升机任务完成" + wcsTask.fromFloorNo + "---" + wcsTask.floorNo + "楼指令");
|
|
|
|
|
_logger.Info("提升机任务完成" + wcsTask.fromFloorNo + "---" + wcsTask.floorNo + "楼指令");
|
|
|
|
|
dbContext.Update(lineEquip);
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5, nextPointId = floorEquip.objid, nextPointNo = floorEquip.equipNo, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|