|
|
|
|
@ -16,7 +16,6 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
public class FirstFloor
|
|
|
|
|
{
|
|
|
|
|
private readonly IHost _host;
|
|
|
|
|
private Plc.S7.Plc _plc;
|
|
|
|
|
private readonly long F01 = 1;
|
|
|
|
|
private readonly long T01 = 6;
|
|
|
|
|
/// <summary>
|
|
|
|
|
@ -60,7 +59,6 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
public FirstFloor(IHost host, Plc.S7.Plc plc)
|
|
|
|
|
{
|
|
|
|
|
this._host = host;
|
|
|
|
|
this._plc = plc;
|
|
|
|
|
|
|
|
|
|
//一楼RFID 读
|
|
|
|
|
this.RFID001 = StaticData.BasePlcpointList.First(t => t.equipmentNo.Contains("FirstFloorLine") && t.plcpointNo.Contains("RFID001"));
|
|
|
|
|
@ -89,11 +87,11 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void StartPoint()
|
|
|
|
|
{
|
|
|
|
|
//Thread firstFloorLine = new(FirstFloorLine)
|
|
|
|
|
//{
|
|
|
|
|
// IsBackground = true
|
|
|
|
|
//};
|
|
|
|
|
//firstFloorLine.Start();
|
|
|
|
|
Thread firstFloorLine = new(FirstFloorLine)
|
|
|
|
|
{
|
|
|
|
|
IsBackground = true
|
|
|
|
|
};
|
|
|
|
|
firstFloorLine.Start();
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":一楼接驳位线程启动成功");
|
|
|
|
|
LogManager.Info("一楼接驳位线程启动成功");
|
|
|
|
|
|
|
|
|
|
@ -138,6 +136,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == i);
|
|
|
|
|
if (baseEquip.equipStatus != 1)
|
|
|
|
|
{
|
|
|
|
|
baseEquip.equipStatus = 1;
|
|
|
|
|
dbContext.Update(baseEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
@ -155,8 +154,9 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == i);
|
|
|
|
|
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == i || t.currPointId == i).Any();
|
|
|
|
|
if (!hasTask)
|
|
|
|
|
bool hasCmd = dbContext.WcsCmd.Where(t => t.nextPointId == i || t.currPointId == i).Any();
|
|
|
|
|
bool hasTask = dbContext.WcsTask.Where(t => (t.currPointId == i || t.endPointId == i) && t.taskStatus >= 1 && t.nextPointId == 6).Any();
|
|
|
|
|
if (!hasCmd|| !hasTask)
|
|
|
|
|
{
|
|
|
|
|
baseEquip.equipStatus = 0;
|
|
|
|
|
dbContext.Update(baseEquip);
|
|
|
|
|
@ -210,7 +210,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
|
var linesignal = this._plc.Read(this.linesignal01.plcpointAddress);
|
|
|
|
|
var linesignal = StaticData.PlcDic[0].Read(this.linesignal01.plcpointAddress);
|
|
|
|
|
int taskCount = dbContext.WcsTask.Where(t => t.nextPointId == 6 && t.taskStatus > 0 && t.endPointId == 1).Count();
|
|
|
|
|
int firstFloorCount = dbContext.WcsTask.Where(t => t.currPointId == 1).Count();
|
|
|
|
|
if (Convert.ToInt32(linesignal) == 0 && taskCount == 0 && firstFloorCount == 0)
|
|
|
|
|
@ -223,7 +223,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
if (wcsTaskManual.taskType == 53)
|
|
|
|
|
{
|
|
|
|
|
this._plc.WriteToPoint(someOutPoint.plcpointAddress, "1", someOutPoint.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(someOutPoint.plcpointAddress, "1", someOutPoint.plcpointLength.ToString());
|
|
|
|
|
WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcsTaskManual);
|
|
|
|
|
wcsTask.createTime = DateTime.Now;
|
|
|
|
|
wcsTask.createBy = "一楼接驳位线程";
|
|
|
|
|
@ -304,8 +304,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
|
var RFID001Value = this._plc.ReadRFID(this.RFID001.plcpointAddress); //一楼RFID 读
|
|
|
|
|
var linesignal01Value = this._plc.Read(this.linesignal01.plcpointAddress); //到位信号 读
|
|
|
|
|
var RFID001Value = StaticData.PlcDic[0].ReadRFID(this.RFID001.plcpointAddress); //一楼RFID 读
|
|
|
|
|
var linesignal01Value = StaticData.PlcDic[0].Read(this.linesignal01.plcpointAddress); //到位信号 读
|
|
|
|
|
//正常读到plc值
|
|
|
|
|
if (linesignal01Value != null && RFID001Value != null)
|
|
|
|
|
{
|
|
|
|
|
@ -476,13 +476,13 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var mesCloseValue = this._plc.Read(this.mesClose.plcpointAddress); //MES关闭状态 读
|
|
|
|
|
var serialno06Value = this._plc.Read(this.serialno06.plcpointAddress); //提升机流水号 读
|
|
|
|
|
var equipstate06Value = this._plc.Read(this.equipstate06.plcpointAddress); //提升机状态 读
|
|
|
|
|
var hoisterTrayIn06Value = this._plc.Read(this.hoistertrayin06.plcpointAddress); //提升机货物到位状态 读
|
|
|
|
|
var currentfloor06Value = this._plc.Read(this.currentfloor06.plcpointAddress); //提升机当前楼层 读
|
|
|
|
|
var targetfloor06Value = this._plc.Read(this.targetfloor06.plcpointAddress); //提升机目的楼层 写
|
|
|
|
|
var reserialno06 = this._plc.Read(this.reserialno06.plcpointAddress); //反馈流水号
|
|
|
|
|
var mesCloseValue = StaticData.PlcDic[0].Read(this.mesClose.plcpointAddress); //MES关闭状态 读
|
|
|
|
|
var serialno06Value = StaticData.PlcDic[0].Read(this.serialno06.plcpointAddress); //提升机流水号 读
|
|
|
|
|
var equipstate06Value = StaticData.PlcDic[0].Read(this.equipstate06.plcpointAddress); //提升机状态 读
|
|
|
|
|
var hoisterTrayIn06Value = StaticData.PlcDic[0].Read(this.hoistertrayin06.plcpointAddress); //提升机货物到位状态 读
|
|
|
|
|
var currentfloor06Value = StaticData.PlcDic[0].Read(this.currentfloor06.plcpointAddress); //提升机当前楼层 读
|
|
|
|
|
var targetfloor06Value = StaticData.PlcDic[0].Read(this.targetfloor06.plcpointAddress); //提升机目的楼层 写
|
|
|
|
|
var reserialno06 = StaticData.PlcDic[0].Read(this.reserialno06.plcpointAddress); //反馈流水号
|
|
|
|
|
if (mesCloseValue != null && Convert.ToInt32(mesCloseValue) == 0)
|
|
|
|
|
{
|
|
|
|
|
//正常读到plc值
|
|
|
|
|
@ -501,7 +501,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
LogManager.Info("提升机线程:有其他任务正在执行,跳过当前任务");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
|
|
|
|
|
BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == wcsTask.floorNo);
|
|
|
|
|
if (wcsTask.taskStatus == 0 && Convert.ToInt32(hoisterTrayIn06Value) == 0)//创建状态,并且里面没有货物
|
|
|
|
|
{
|
|
|
|
|
if (lineEquip.equipStatus == 1)
|
|
|
|
|
@ -510,7 +510,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
|
|
|
|
|
if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
if (wcsTask.containerNo == StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)
|
|
|
|
|
{
|
|
|
|
|
@ -519,8 +519,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行中";
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
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;
|
|
|
|
|
@ -533,8 +533,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行中";
|
|
|
|
|
this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.fromFloorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
|
|
|
|
|
this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
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());
|
|
|
|
|
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;
|
|
|
|
|
@ -546,7 +546,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
if (wcsTask.taskStatus == 1 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
|
|
|
|
|
if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo)&&wcsTask.qty>1))
|
|
|
|
|
if (wcsTask.containerNo == StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//提升机当前楼层为初始地楼层
|
|
|
|
|
{
|
|
|
|
|
@ -555,8 +555,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行中";
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
@ -571,7 +571,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
wcsTask.updateBy = "提升机线程";
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行完成";
|
|
|
|
|
this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
@ -583,7 +583,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
if (ReadEmptyLocation())
|
|
|
|
|
{
|
|
|
|
|
var linesignal = _plc.Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress);
|
|
|
|
|
var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress);
|
|
|
|
|
if (linesignal != null && Convert.ToInt32(linesignal) == 0)
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 4;
|
|
|
|
|
@ -591,7 +591,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行完成";
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
@ -599,13 +599,13 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}");
|
|
|
|
|
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var linesignal = _plc.Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress);
|
|
|
|
|
var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress);
|
|
|
|
|
if (linesignal != null && Convert.ToInt32(linesignal) == 0)
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 4;
|
|
|
|
|
@ -613,7 +613,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
wcsTask.updateTime = DateTime.Now;
|
|
|
|
|
wcsTask.remark = "提升机任务执行完成";
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2,表示提升机已到达目的地,让货出去
|
|
|
|
|
dbContext.Update(wcsTask);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
@ -621,7 +621,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}");
|
|
|
|
|
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -649,7 +649,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
if (currentfloor06Value != null && targetfloor06Value != null)
|
|
|
|
|
{
|
|
|
|
|
this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, Convert.ToString(currentfloor06Value), this.targetfloor06.plcpointLength.ToString());
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, Convert.ToString(currentfloor06Value), this.targetfloor06.plcpointLength.ToString());
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|