master
1 year ago
parent 7df4b2ec01
commit 11b5973f22

@ -72,28 +72,23 @@ namespace Khd.Core.Wcs
firstFloor.StartPoint(); firstFloor.StartPoint();
//二层接驳位 //二层接驳位
var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First(); SecondFloorPoint secondFloorPoint = new(_host, 2);
SecondFloorPoint secondFloorPoint = new(_host, SecondBaseFloorEquip.floorNo.Value);
secondFloorPoint.StartPoint(); secondFloorPoint.StartPoint();
//二层AGV //二层AGV
var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First(); SecondFloorAGV secondFloorAGV = new(_host,2);
SecondFloorAGV secondFloorAGV = new(_host, SecondFloorAgvEquip.floorNo.Value);
secondFloorAGV.StartPoint(); secondFloorAGV.StartPoint();
//二楼线体 //二楼线体
var SecondFloorLineEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 17).First(); SecondFloorLine secondFloorLine = new(_host, 2);
SecondFloorLine secondFloorLine = new(_host, SecondFloorLineEquip.floorNo.Value);
secondFloorLine.StartPoint(); secondFloorLine.StartPoint();
//三层接驳位 //三层接驳位
var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First(); ThirdFloorPoint thirdFloorPoint = new(_host, 3);
ThirdFloorPoint thirdFloorPoint = new(_host, ThirdBaseFloorEquip.floorNo.Value);
thirdFloorPoint.StartPoint(); thirdFloorPoint.StartPoint();
//三层AGV //三层AGV
var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First(); ThirdFloorAGV thirdFloorAGV = new(_host, 3);
ThirdFloorAGV thirdFloorAGV = new(_host, ThirdFloorAgvEquip.floorNo.Value);
thirdFloorAGV.StartPoint(); thirdFloorAGV.StartPoint();
//四楼接驳位 //四楼接驳位
@ -101,23 +96,19 @@ namespace Khd.Core.Wcs
fourthFloorPoint.StartPoint(); fourthFloorPoint.StartPoint();
//五层接驳位 //五层接驳位
var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First(); FiveFloorPoint fifthFloorPoint = new(_host, 5);
FiveFloorPoint fifthFloorPoint = new(_host, FifthBaseFloorEquip.floorNo.Value);
fifthFloorPoint.StartPoint(); fifthFloorPoint.StartPoint();
//五层CTU //五层CTU
var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First(); FiveFloorCTU fiveFloorCTU = new(_host,5);
FiveFloorCTU fiveFloorCTU = new(_host, FiveFloorCTUEquip.floorNo.Value);
fiveFloorCTU.StartPoint(); fiveFloorCTU.StartPoint();
//五层AGV //五层AGV
var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First(); FiveFloorAGV fifthFloorAGV = new(_host, 5);
FiveFloorAGV fifthFloorAGV = new(_host, FifthFloorAgvEquip.floorNo.Value);
fifthFloorAGV.StartPoint(); fifthFloorAGV.StartPoint();
//背负式Agv //背负式Agv
var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First(); FiveFloorBearAgv fiveFloorBearAgv = new(_host,5);
FiveFloorBearAgv fiveFloorBearAgv = new(_host, FifthFloorBearAgvEquip.floorNo.Value);
fiveFloorBearAgv.StartPoint(); fiveFloorBearAgv.StartPoint();
} }
catch (Exception ex) catch (Exception ex)

@ -494,6 +494,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
using var transaction = dbContext.Database.BeginTransaction();
while (true) while (true)
{ {
try try
@ -545,15 +546,16 @@ namespace Khd.Core.Wcs.Wcs
wcsTask.updateTime = DateTime.Now; wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行中"; wcsTask.remark = "提升机任务执行中";
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun")); 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.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" }); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
lineEquip.equipStatus = 1; lineEquip.equipStatus = 1;
dbContext.Update(lineEquip); dbContext.Update(lineEquip);
dbContext.SaveChanges(); dbContext.SaveChanges();
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 + "楼入库指令");
transaction.Commit();
} }
else//当前楼层和起始楼层不一致 else//当前楼层和起始楼层不一致
{ {
@ -561,15 +563,16 @@ namespace Khd.Core.Wcs.Wcs
wcsTask.updateBy = "提升机线程"; wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now; wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行中"; 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.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 1, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" }); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 1, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
lineEquip.equipStatus = 1; lineEquip.equipStatus = 1;
dbContext.Update(lineEquip); dbContext.Update(lineEquip);
dbContext.SaveChanges(); dbContext.SaveChanges();
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 + "楼指令");
transaction.Commit();
} }
} }
} }
@ -585,13 +588,14 @@ namespace Khd.Core.Wcs.Wcs
wcsTask.updateTime = DateTime.Now; wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行中"; wcsTask.remark = "提升机任务执行中";
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun")); BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
dbContext.SaveChanges();
StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.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()); StaticData.PlcDic[0].WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.fromFloorNo + "楼入库指令");
_logger.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令"); _logger.Info("提升机下发" + wcsTask.fromFloorNo + "楼入库指令");
dbContext.Update(wcsTask); transaction.Commit();
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
dbContext.SaveChanges();
} }
} }
} }
@ -603,12 +607,13 @@ namespace Khd.Core.Wcs.Wcs
wcsTask.updateBy = "提升机线程"; wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now; wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行完成"; 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.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges(); dbContext.SaveChanges();
StaticData.PlcDic[0].WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
Console.WriteLine(DateTime.Now + ":提升机下发去往" + wcsTask.floorNo + "楼目的地指令");
_logger.Info("提升机下发去往" + wcsTask.floorNo + "楼目的地指令");
transaction.Commit();
} }
} }
if (wcsTask.taskStatus == 3 && Convert.ToInt32(currentfloor06Value) == wcsTask.floorNo && Convert.ToInt32(reserialno06) == wcsTask.serialNo)//任务状态为3且当前楼层为任务的目的楼层 if (wcsTask.taskStatus == 3 && Convert.ToInt32(currentfloor06Value) == wcsTask.floorNo && Convert.ToInt32(reserialno06) == wcsTask.serialNo)//任务状态为3且当前楼层为任务的目的楼层
@ -632,13 +637,14 @@ namespace Khd.Core.Wcs.Wcs
wcsTask.updateBy = "提升机线程"; wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now; wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行完成"; wcsTask.remark = "提升机任务执行完成";
dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun")); 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表示提升机已到达目的地让货出去 StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2表示提升机已到达目的地让货出去
Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.floorNo + "楼出库指令"); Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.floorNo + "楼出库指令");
_logger.Info("提升机下发" + wcsTask.floorNo + "楼出库指令"); _logger.Info("提升机下发" + wcsTask.floorNo + "楼出库指令");
dbContext.Update(wcsTask); transaction.Commit();
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
} }
else//接驳位外侧有东西 else//接驳位外侧有东西
{ {
@ -665,13 +671,14 @@ namespace Khd.Core.Wcs.Wcs
wcsTask.updateBy = "提升机线程"; wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now; wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行完成"; wcsTask.remark = "提升机任务执行完成";
dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun")); 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表示提升机已到达目的地让货出去 StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2表示提升机已到达目的地让货出去
Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.floorNo + "楼出库指令"); Console.WriteLine(DateTime.Now + ":提升机下发" + wcsTask.floorNo + "楼出库指令");
_logger.Info("提升机下发" + wcsTask.floorNo + "楼出库指令"); _logger.Info("提升机下发" + wcsTask.floorNo + "楼出库指令");
dbContext.Update(wcsTask); transaction.Commit();
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
} }
else else
{ {
@ -700,6 +707,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(wcsTask); 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.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(); dbContext.SaveChanges();
transaction.Commit();
} }
} }
break; break;
@ -723,6 +731,7 @@ namespace Khd.Core.Wcs.Wcs
} }
catch (Exception ex) catch (Exception ex)
{ {
transaction.Rollback();
if (ex is PlcException) if (ex is PlcException)
{ {

Loading…
Cancel
Save