master
2 years ago
parent edbf474e05
commit 07762af512

@ -444,7 +444,7 @@ namespace Khd.Core.Application
WmsRawOutstock wmsRawOutstock = _dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == Convert.ToInt64(callMaterial.rawOutstockId));
if (wmsRawOutstock != null)
{
bool hasTask = _dbContext.WcsTask.Where(t => t.endPointId == 31 || t.currPointId == 31).Any();
bool hasTask = _dbContext.WcsTask.Where(t => t.currPointId == 31).Any();
bool hasTaskManual = _dbContext.WcsTaskManual.Where(t => t.endPointId == 31 || t.currPointId == 31 || t.taskType == 999).Any();
if (hasTask || hasTaskManual)
{

@ -45,7 +45,20 @@ namespace Khd.Core.Plc
{
return null;
}
return Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Replace("\\u", "").Trim();
string res = Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Replace("\\u", "").Trim();
if (res.Contains("JYHB"))
{
return res[res.IndexOf('J')..];
}
else if(res.Contains("C"))
{
return res[res.IndexOf('C')..];
}else
{
return "";
}
}

@ -69,27 +69,27 @@ namespace Khd.Core.Wcs
}
//SystemTimer systemTimer = new SystemTimer(_host);
//systemTimer.Start();
////创建任务
//CreateTaskByRecord createTaskByRecord = new(_host);
//createTaskByRecord.StartPoint();
//创建任务
CreateTaskByRecord createTaskByRecord = new(_host);
createTaskByRecord.StartPoint();
//一楼提升机以及接驳位
FirstFloor firstFloor = new(_host, StaticData.PlcDic[0]);
firstFloor.StartPoint();
////二层接驳位
//var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First();
//SecondFloorPoint secondFloorPoint = new(_host, StaticData.PlcDic[0], SecondBaseFloorEquip.floorNo.Value);
//secondFloorPoint.StartPoint();
//二层接驳位
var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First();
SecondFloorPoint secondFloorPoint = new(_host, StaticData.PlcDic[0], SecondBaseFloorEquip.floorNo.Value);
secondFloorPoint.StartPoint();
//二层AGV
//var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First();
//SecondFloorAGV secondFloorAGV = new(_host, StaticData.PlcDic[0], SecondFloorAgvEquip.floorNo.Value);
//secondFloorAGV.StartPoint();
var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First();
SecondFloorAGV secondFloorAGV = new(_host, StaticData.PlcDic[0], SecondFloorAgvEquip.floorNo.Value);
secondFloorAGV.StartPoint();
////二楼线体
//var SecondFloorLineEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 17).First();
//SecondFloorLine secondFloorLine = new(_host, StaticData.PlcDic[0], SecondFloorLineEquip.floorNo.Value);
//SecondFloorLine secondFloorLine = new(_host, StaticData.PlcDic[2], SecondFloorLineEquip.floorNo.Value);
//secondFloorLine.StartPoint();
////三层接驳位
@ -107,12 +107,12 @@ namespace Khd.Core.Wcs
//FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value);
//fifthFloorPoint.StartPoint();
//五层CTU
////五层CTU
//var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First();
//FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[1], FiveFloorCTUEquip.floorNo.Value);
//fiveFloorCTU.StartPoint();
//五层AGV
////五层AGV
//var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First();
//FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value);
//fifthFloorAGV.StartPoint();

@ -4,7 +4,7 @@ namespace Khd.Core.Wcs
{
public class SystemData
{
public readonly static int maxTray = 10;
public readonly static int maxTray = 5;
private static long _serialNo { get; set; } = 1;

@ -181,77 +181,78 @@ namespace Khd.Core.Wcs.Wcs
if (!canCreate)
{
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35);
if (baseEquip.emptyCount == (SystemData.maxTray / 2))
{
var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2));
if (endEquip != null)
{
var wcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
serialNo = SystemData.GetSerialNo(dbContext),
taskType = 40,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
endPointId = baseEquip.objid,
endPointNo = baseEquip.equipNo,
currPointId = endEquip.objid,
currPointNo = endEquip.equipNo,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = 5,
isEmpty = "1",
taskStatus = 0,
createBy = "WCS",
createTime = DateTime.Now,
floorNo = 3,
fromFloorNo = 3,
masterId = 0,
orderId = 0,
materialId = 0,
};
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
else
{
endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);
if (endEquip != null)
{
var wcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
serialNo = SystemData.GetSerialNo(dbContext),
taskType = 43,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
endPointId = endEquip.objid,
endPointNo = endEquip.equipNo,
currPointId = baseEquip.objid,
currPointNo = baseEquip.equipNo,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = 5,
isEmpty = "1",
taskStatus = 0,
createBy = "WCS",
createTime = DateTime.Now,
floorNo = 3,
fromFloorNo = 3,
masterId = 0,
orderId = 0,
materialId = 0,
};
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
}
}
else if (baseEquip.emptyCount == SystemData.maxTray)
//if (baseEquip.emptyCount == (SystemData.maxTray / 2))
//{
// var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2));
// if (endEquip != null)
// {
// var wcsTask = new WcsTask()
// {
// objid = StaticData.SnowId.NextId(),
// serialNo = SystemData.GetSerialNo(dbContext),
// taskType = 40,
// nextPointId = agvEquip.objid,
// nextPointNo = agvEquip.equipNo,
// endPointId = baseEquip.objid,
// endPointNo = baseEquip.equipNo,
// currPointId = endEquip.objid,
// currPointNo = endEquip.equipNo,
// equipmentNo = agvEquip.equipNo,
// useFlag = 1,
// qty = 5,
// isEmpty = "1",
// taskStatus = 0,
// createBy = "WCS",
// createTime = DateTime.Now,
// floorNo = 3,
// fromFloorNo = 3,
// masterId = 0,
// orderId = 0,
// materialId = 0,
// };
// WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
// dbContext.Add(wcsTask);
// dbContext.Add(wcsTaskLog);
// dbContext.SaveChanges();
// }
// else
// {
// endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);
// if (endEquip != null)
// {
// var wcsTask = new WcsTask()
// {
// objid = StaticData.SnowId.NextId(),
// serialNo = SystemData.GetSerialNo(dbContext),
// taskType = 43,
// nextPointId = agvEquip.objid,
// nextPointNo = agvEquip.equipNo,
// endPointId = endEquip.objid,
// endPointNo = endEquip.equipNo,
// currPointId = baseEquip.objid,
// currPointNo = baseEquip.equipNo,
// equipmentNo = agvEquip.equipNo,
// useFlag = 1,
// qty = 5,
// isEmpty = "1",
// taskStatus = 0,
// createBy = "WCS",
// createTime = DateTime.Now,
// floorNo = 3,
// fromFloorNo = 3,
// masterId = 0,
// orderId = 0,
// materialId = 0,
// };
// WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
// dbContext.Add(wcsTask);
// dbContext.Add(wcsTaskLog);
// dbContext.SaveChanges();
// }
// }
//}
//else
if (baseEquip.emptyCount == SystemData.maxTray)
{
var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);
if (endEquip != null)
@ -269,7 +270,7 @@ namespace Khd.Core.Wcs.Wcs
currPointNo = baseEquip.equipNo,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = 10,
qty = SystemData.maxTray,
isEmpty = "1",
taskStatus = 0,
createBy = "WCS",
@ -483,7 +484,10 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.locationScrapType == "1")
.Where(t => t.instockFlag == "0")
.Where(t => t.outstockFlag == "0")
.Where(t => t.warehouseId == 311).ToList();
.Where(t => t.warehouseId == 311)
.OrderByDescending(t=>t.locRow)
.ThenByDescending(t=>t.locColumn)
.ToList();
var bill = from a in wmsBaseLocations
from b in wmsRawStocks
where a.locationCode == b.locationCode
@ -1175,6 +1179,8 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(location);
dbContext.Add(wcsTask);
dbContext.Update(stock);
WcsTaskLog wcsTaskLog1 = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog1);
dbContext.SaveChanges();
if (qty >= needNumber)
{

@ -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;
}
}

@ -18,14 +18,12 @@ namespace Khd.Core.Wcs.Wcs
public class FiveFloorAGV
{
private readonly IHost _host;
private readonly Plc.S7.Plc _plc;
private readonly BasePlcpoint LineSignal;
int FloorNo { get; set; }
int agvID = 28;
public FiveFloorAGV(IHost host, Plc.S7.Plc plc, int floor)
{
this._host = host;
this._plc = plc;
FloorNo = floor;
this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal05");
}
@ -76,7 +74,7 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("五楼AGV:接驳位有任务,无法下发出库任务");
continue;
}
if (Convert.ToInt32(this._plc.Read(LineSignal.plcpointAddress)) == 1 && !canSend)
if (Convert.ToInt32(StaticData.PlcDic[0].Read(LineSignal.plcpointAddress)) == 1 && !canSend)
{
Console.WriteLine($"{DateTime.Now}:5楼接驳位上有货无法下发Agv出库任务");
continue;
@ -506,7 +504,7 @@ namespace Khd.Core.Wcs.Wcs
{
if (item.currPointId == 5)
{
var lineSignalValue = this._plc.Read(LineSignal.plcpointAddress);
var lineSignalValue = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
if (lineSignalValue == null || Convert.ToInt32(lineSignalValue) == 0)
{
Console.WriteLine(DateTime.Now + ":五楼Agv接驳位为空无法取货");
@ -516,7 +514,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.endPointId == 5)
{
var lineSignalValue = this._plc.Read(LineSignal.plcpointAddress);
var lineSignalValue = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
if (lineSignalValue == null || Convert.ToInt32(lineSignalValue) == 1)
{
Console.WriteLine(DateTime.Now + ":五楼Agv接驳位有货无法送货");

@ -19,13 +19,11 @@ namespace Khd.Core.Wcs.Wcs
{
private readonly IHost _host;
private readonly Plc.S7.Plc _plc;
int FloorNo { get; set; }
int agvID = 10;
public FiveFloorBearAgv(IHost host, Plc.S7.Plc plc, int floor)
{
this._host = host;
this._plc = plc;
FloorNo = floor;
}
/// <summary>

@ -20,7 +20,7 @@ namespace Khd.Core.Wcs.Wcs
{
List<BasePlcpoint> ScanPoint { get; set; }//点位信息
private readonly IHost _host;
private Plc.S7.Plc _plc;
private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint isarrive;
private readonly BasePlcpoint isput;
@ -32,7 +32,6 @@ namespace Khd.Core.Wcs.Wcs
public FiveFloorCTU(IHost host, Plc.S7.Plc plc, int floor)
{
this._host = host;
this._plc = plc;
FloorNo = floor;
this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID5001");
this.isarrive = StaticData.BasePlcpointList.First(t => t.plcpointNo == "isarrive");
@ -70,14 +69,14 @@ namespace Khd.Core.Wcs.Wcs
try
{
flag = !flag;
this._plc.WriteToPoint(heartPoint.plcpointAddress, flag.ToString(), heartPoint.plcpointLength.ToString());
StaticData.PlcDic[1].WriteToPoint(heartPoint.plcpointAddress, flag.ToString(), heartPoint.plcpointLength.ToString());
}
catch
{
try
{
this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot);
this._plc.Open();
StaticData.PlcDic[1] = new Plc.S7.Plc(StaticData.PlcDic[1].CPU, StaticData.PlcDic[1].IP, StaticData.PlcDic[1].Port, StaticData.PlcDic[1].Rack, StaticData.PlcDic[1].Slot);
StaticData.PlcDic[1].Open();
}
catch
{
@ -98,15 +97,15 @@ namespace Khd.Core.Wcs.Wcs
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var rfid = this._plc.ReadRFID(LineRFID.plcpointAddress);
var isArrive = this._plc.Read(isarrive.plcpointAddress);
var receiveMaterial = this._plc.Read(ReceiveMaterial.plcpointAddress);
var waring = this._plc.Read(CtuLineWaring.plcpointAddress);
var rfid = StaticData.PlcDic[1].ReadRFID(LineRFID.plcpointAddress);
var isArrive = StaticData.PlcDic[1].Read(isarrive.plcpointAddress);
var receiveMaterial = StaticData.PlcDic[1].Read(ReceiveMaterial.plcpointAddress);
var waring = StaticData.PlcDic[1].Read(CtuLineWaring.plcpointAddress);
if (rfid != null && isArrive != null && receiveMaterial != null && Convert.ToInt32(receiveMaterial) == 1 && Convert.ToInt32(isArrive) == 1)
{
if (Convert.ToBoolean(waring))
{
this._plc.WriteToPoint(CtuLineWaring.plcpointAddress, "false", CtuLineWaring.plcpointLength.ToString());
StaticData.PlcDic[1].WriteToPoint(CtuLineWaring.plcpointAddress, "false", CtuLineWaring.plcpointLength.ToString());
}
rfid = rfid[rfid.IndexOf('C')..];
WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.containerNo == rfid);
@ -238,17 +237,17 @@ namespace Khd.Core.Wcs.Wcs
{
if (!Convert.ToBoolean(waring))
{
this._plc.WriteToPoint(CtuLineWaring.plcpointAddress, "true", CtuLineWaring.plcpointLength.ToString());
StaticData.PlcDic[1].WriteToPoint(CtuLineWaring.plcpointAddress, "true", CtuLineWaring.plcpointLength.ToString());
}
}
else if (receiveMaterial != null && Convert.ToInt32(receiveMaterial) == 1)
{
//Task.Run(() =>
//{
// var receiveMaterial2 = this._plc.Read(ReceiveMaterial.plcpointAddress);
// var receiveMaterial2 = StaticData.PlcDic[1].Read(ReceiveMaterial.plcpointAddress);
// while (receiveMaterial2 != null && Convert.ToInt32(receiveMaterial2) == 1)
// {
// receiveMaterial2 = this._plc.Read(ReceiveMaterial.plcpointAddress);
// receiveMaterial2 = StaticData.PlcDic[1].Read(ReceiveMaterial.plcpointAddress);
// lock (SystemData.outStockLock)
// {
// WcsOutstockLock wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First();
@ -272,8 +271,8 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot);
this._plc.Open();
StaticData.PlcDic[1] = new Plc.S7.Plc(StaticData.PlcDic[1].CPU, StaticData.PlcDic[1].IP, StaticData.PlcDic[1].Port, StaticData.PlcDic[1].Rack, StaticData.PlcDic[1].Slot);
StaticData.PlcDic[1].Open();
}
catch
{
@ -588,7 +587,7 @@ namespace Khd.Core.Wcs.Wcs
{
if (item.taskType == 30 || item.taskType == 100)
{
var canOut = this._plc.Read(isput.plcpointAddress);
var canOut = StaticData.PlcDic[1].Read(isput.plcpointAddress);
if (canOut != null && Convert.ToInt64(canOut) == 0)
{
var agvTask = new
@ -672,7 +671,7 @@ namespace Khd.Core.Wcs.Wcs
int wcsTaskCount = dbContext.WcsTask.Where(t => t.taskType == 30 && t.taskStatus != 6).Count();
if (wcsTaskCount == 0)
{
this._plc.WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString());
StaticData.PlcDic[1].WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString());
}
}
else if (item.taskType == 29)//入库任务
@ -714,7 +713,7 @@ namespace Khd.Core.Wcs.Wcs
int wcsTaskCount = dbContext.WcsTask.Where(t => (t.taskType == 30 || t.taskType == 100) && t.taskStatus != 6).Count();
if (wcsTaskCount == 0)
{
this._plc.WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString());
StaticData.PlcDic[1].WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString());
}
}
}
@ -728,8 +727,8 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot);
this._plc.Open();
StaticData.PlcDic[1] = new Plc.S7.Plc(StaticData.PlcDic[1].CPU, StaticData.PlcDic[1].IP, StaticData.PlcDic[1].Port, StaticData.PlcDic[1].Rack, StaticData.PlcDic[1].Slot);
StaticData.PlcDic[1].Open();
}
catch
{

@ -15,7 +15,6 @@ namespace Khd.Core.Wcs.Wcs
public class FiveFloorPoint
{
private readonly IHost _host;
private Plc.S7.Plc _plc;
private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineSignal;
@ -24,7 +23,6 @@ namespace Khd.Core.Wcs.Wcs
public FiveFloorPoint(IHost host, Plc.S7.Plc plc, int floor)
{
this._host = host;
this._plc = plc;
FloorNo = floor;
this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID005");
this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal05");
@ -55,8 +53,8 @@ namespace Khd.Core.Wcs.Wcs
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
//入库任务
var rfid = this._plc.ReadRFID(LineRFID.plcpointAddress);
var isSignal = this._plc.Read(LineSignal.plcpointAddress);
var rfid = StaticData.PlcDic[0].ReadRFID(LineRFID.plcpointAddress);
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
if (rfid != null && isSignal != null)
{
if (BigContainerCodes.Contains(rfid))
@ -217,8 +215,8 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot);
this._plc.Open();
StaticData.PlcDic[0] = new Plc.S7.Plc(StaticData.PlcDic[0].CPU, StaticData.PlcDic[0].IP, StaticData.PlcDic[0].Port, StaticData.PlcDic[0].Rack, StaticData.PlcDic[0].Slot);
StaticData.PlcDic[0].Open();
}
catch
{

@ -14,14 +14,12 @@ namespace Khd.Core.Wcs.Wcs
public class FourthFloorPoint
{
private readonly int Floor;
private readonly Plc.S7.Plc _plc;
private readonly IHost _host;
private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineSignal;
public FourthFloorPoint(int floor, Plc.S7.Plc plc, IHost host)
{
Floor = floor;
_plc = plc;
this._host = host;
this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID004");
this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo.Contains("linesignal04"));
@ -44,8 +42,8 @@ namespace Khd.Core.Wcs.Wcs
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
//入库任务
var rfid = this._plc.ReadRFID(LineRFID.plcpointAddress);
var isSignal = this._plc.Read(LineSignal.plcpointAddress);
var rfid = StaticData.PlcDic[0].ReadRFID(LineRFID.plcpointAddress);
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
if (rfid != null && isSignal != null)
{

@ -18,7 +18,6 @@ namespace Khd.Core.Wcs.Wcs
public class SecondFloorAGV
{
private readonly IHost _host;
private readonly Plc.S7.Plc _plc;
int FloorNo { get; set; }
int EquipID = 8; //2楼AGV
@ -26,7 +25,6 @@ namespace Khd.Core.Wcs.Wcs
public SecondFloorAGV(IHost host, Plc.S7.Plc plc, int floor)
{
this._host = host;
this._plc = plc;
FloorNo = floor;
}
@ -186,6 +184,7 @@ namespace Khd.Core.Wcs.Wcs
else if (item.taskType == 49)//小包出口-库位
{
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
BaseEquip startEquip = dbContext.BaseEquip.First(t=>t.objid==item.currPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@ -196,8 +195,8 @@ namespace Khd.Core.Wcs.Wcs
containerNo = item.containerNo,
createTime = DateTime.Now,
createBy = FloorNo + "楼AGV",
currPointId = item.currPointId,
currPointNo = outEquip.agvPositionCode,
currPointId = startEquip.objid,
currPointNo = startEquip.agvPositionCode,
nextPointId = item.endPointId,
nextPointNo = wmsBaseLocation.agvPositionCode,
};
@ -319,7 +318,7 @@ namespace Khd.Core.Wcs.Wcs
createBy = FloorNo + "楼AGV",
currPointId = item.currPointId,
currPointNo = startPoint.agvPositionCode,
nextPointId = item.endPointId,
nextPointId = lineEquip.objid,
nextPointNo = lineEquip.agvPositionCode,
};
var agvTask = new RequestAGVTaskDto
@ -882,6 +881,7 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.containerCode = null;
item.nextPointId = 2;
item.taskStatus = 8;
dbContext.Remove(wmsProductStock);
dbContext.Update(wmsBaseLocation);

@ -15,12 +15,10 @@ namespace Khd.Core.Wcs.Wcs
public class SecondFloorLine
{
private readonly IHost _host;
private readonly Plc.S7.Plc _plc;
int FloorNo { get; set; }
public SecondFloorLine(IHost host, Plc.S7.Plc plc, int floor)
{
this._host = host;
this._plc = plc;
FloorNo = floor;
}
@ -50,9 +48,9 @@ namespace Khd.Core.Wcs.Wcs
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var agvGetValue = this._plc.Read(agvGetPoint.plcpointAddress);
var agvPutValue = this._plc.Read(agvPutPoint.plcpointAddress);
var rfidValue = this._plc.ReadRFID(rfidPoint.plcpointAddress);
var agvGetValue = StaticData.PlcDic[2].Read(agvGetPoint.plcpointAddress);
var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress);
var rfidValue = StaticData.PlcDic[2].ReadRFID(rfidPoint.plcpointAddress);
if (agvGetValue != null && agvPutValue != null && rfidValue != null)
{
if (Convert.ToInt32(agvPutValue) == 0)
@ -92,7 +90,7 @@ namespace Khd.Core.Wcs.Wcs
}
else
{
baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.emptyCount == 10 && t.equipStatus == 1);
baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.emptyCount == SystemData.maxTray && t.equipStatus == 1);
if (baseEquip != null)
{
BaseEquip ThirdLineEquip = StaticData.BaseEquip.First(t => t.objid == 3);
@ -109,7 +107,7 @@ namespace Khd.Core.Wcs.Wcs
floorNo = 2,
fromFloorNo = 3,
isEmpty = "1",
qty = 10,
qty = SystemData.maxTray,
taskType = 101,
currPointId = baseEquip.objid,
currPointNo = baseEquip.equipNo,

@ -13,14 +13,12 @@ namespace Khd.Core.Wcs.Wcs
public class SecondFloorPoint
{
private readonly IHost _host;
private Plc.S7.Plc _plc;
private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineSignal;
int FloorNo { get; set; }
public SecondFloorPoint(IHost host, Plc.S7.Plc plc, int floor)
{
this._host = host;
this._plc = plc;
FloorNo = floor;
this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID002");
this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02");
@ -53,8 +51,8 @@ namespace Khd.Core.Wcs.Wcs
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
//入库任务
var rfid = this._plc.ReadRFID(LineRFID.plcpointAddress);
var isSignal = this._plc.Read(LineSignal.plcpointAddress);
var rfid = StaticData.PlcDic[0].ReadRFID(LineRFID.plcpointAddress);
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
//var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress);
var agvPutValue = "";
@ -65,11 +63,11 @@ namespace Khd.Core.Wcs.Wcs
{
//获取条码信息
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.objid == 2);
var wcsTask = dbContext.WcsTask.OrderBy(t => t.createTime)
var wcsTask = dbContext.WcsTask.Where(t => t.nextPointId == 2).OrderBy(t => t.createTime)
.FirstOrDefault();
if (wcsTask != null)
{
if (wcsTask.taskStatus == 5)//入托盘入口,提升机任务是完成状态
if (wcsTask.taskStatus == 5 && (wcsTask.nextPointId == 6 || wcsTask.nextPointId == 2))//入托盘入口,提升机任务是完成状态
{
if (wcsTask.taskType != 99)
{
@ -241,30 +239,61 @@ namespace Khd.Core.Wcs.Wcs
}
else if (wcsTask.taskStatus == 8)
{
BaseEquip? endEquip = StaticData.BaseEquip.First(t => t.objid == 1);
dbContext.WcsTask.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
newTask.serialNo = SystemData.GetSerialNo(dbContext);
newTask.taskStatus = 0;
newTask.objid = StaticData.SnowId.NextId();
newTask.nextPointId = tsjEquip.objid;
newTask.nextPointNo = tsjEquip.equipNo;
newTask.createTime = DateTime.Now;
newTask.updateTime = DateTime.Now;
newTask.endPointId = endEquip.objid;
newTask.endPointNo = endEquip.equipNo;
newTask.containerNo = rfid;
newTask.currPointId = lineEquip.objid;
newTask.currPointNo = lineEquip.equipNo;
newTask.useFlag = 1;
newTask.fromFloorNo = 2;
newTask.floorNo = endEquip.floorNo;
dbContext.WcsTask.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
LogManager.Info("二楼接驳位生成任务出库成功,托盘号:" + rfid);
Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务出库成功,托盘号:" + rfid);
if (wcsTask.taskType == 50 && wcsTask.containerNo == rfid)
{
BaseEquip? endEquip = StaticData.BaseEquip.First(t => t.objid == 1);
dbContext.WcsTask.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
newTask.serialNo = SystemData.GetSerialNo(dbContext);
newTask.taskStatus = 0;
newTask.objid = StaticData.SnowId.NextId();
newTask.nextPointId = tsjEquip.objid;
newTask.nextPointNo = tsjEquip.equipNo;
newTask.createTime = DateTime.Now;
newTask.updateTime = DateTime.Now;
newTask.endPointId = endEquip.objid;
newTask.endPointNo = endEquip.equipNo;
newTask.containerNo = rfid;
newTask.currPointId = lineEquip.objid;
newTask.currPointNo = lineEquip.equipNo;
newTask.useFlag = 1;
newTask.fromFloorNo = 2;
newTask.floorNo = endEquip.floorNo;
dbContext.WcsTask.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
LogManager.Info("二楼接驳位生成任务出库成功,托盘号:" + rfid);
Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务出库成功,托盘号:" + rfid);
}
else
{
BaseEquip? endEquip = StaticData.BaseEquip.First(t => t.objid == 1);
dbContext.WcsTask.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
newTask.serialNo = SystemData.GetSerialNo(dbContext);
newTask.taskStatus = 0;
newTask.objid = StaticData.SnowId.NextId();
newTask.nextPointId = tsjEquip.objid;
newTask.nextPointNo = tsjEquip.equipNo;
newTask.createTime = DateTime.Now;
newTask.updateTime = DateTime.Now;
newTask.endPointId = endEquip.objid;
newTask.endPointNo = endEquip.equipNo;
newTask.containerNo = rfid;
newTask.currPointId = lineEquip.objid;
newTask.currPointNo = lineEquip.equipNo;
newTask.useFlag = 1;
newTask.fromFloorNo = 2;
newTask.floorNo = endEquip.floorNo;
dbContext.WcsTask.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
LogManager.Info("二楼接驳位生成任务出库成功,托盘号:" + rfid);
Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务出库成功,托盘号:" + rfid);
}
}
}
}
@ -275,8 +304,8 @@ namespace Khd.Core.Wcs.Wcs
try
{
this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot);
this._plc.Open();
StaticData.PlcDic[0] = new Plc.S7.Plc(StaticData.PlcDic[0].CPU, StaticData.PlcDic[0].IP, StaticData.PlcDic[0].Port, StaticData.PlcDic[0].Rack, StaticData.PlcDic[0].Slot);
StaticData.PlcDic[0].Open();
}
catch
{

@ -17,14 +17,12 @@ namespace Khd.Core.Wcs.Wcs
public class ThirdFloorAGV
{
private readonly IHost _host;
private readonly Plc.S7.Plc _plc;
int FloorNo { get; set; }
private readonly BasePlcpoint putTrayPoint;
private readonly BasePlcpoint getTrayPoint;
public ThirdFloorAGV(IHost host, Plc.S7.Plc plc, int floor)
{
this._host = host;
this._plc = plc;
FloorNo = floor;
this.putTrayPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "putTray");
this.getTrayPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "getTray");
@ -55,20 +53,23 @@ namespace Khd.Core.Wcs.Wcs
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var getTrayValue = this._plc.Read(getTrayPoint.plcpointAddress);
if (getTrayValue != null && Convert.ToInt32(getTrayValue) == 1)
//var getTrayValue = this._plc.Read(getTrayPoint.plcpointAddress);
//if (getTrayValue != null && Convert.ToInt32(getTrayValue) == 1)
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 31);
if (baseEquip.emptyCount == 1)
{
var task = dbContext.WcsTask.Where(t => t.taskType == 42 && t.useFlag == 0).FirstOrDefault();
if (task!=null)
if (task != null)
{
BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 35);
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 31);
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 9);
if (endEquip.emptyCount != (SystemData.maxTray / 2) && endEquip.emptyCount != SystemData.maxTray)
//if (endEquip.emptyCount != (SystemData.maxTray / 2) && endEquip.emptyCount != SystemData.maxTray)
if (endEquip.emptyCount != SystemData.maxTray)
{
task.taskType = 42;
task.useFlag = 1;
task.taskStatus = 1;
task.taskStatus = 0;
task.isEmpty = "1";
task.qty = 1;
task.nextPointId = agvEquip.objid;
@ -91,7 +92,7 @@ namespace Khd.Core.Wcs.Wcs
{
LogManager.Error(ex);
}
Thread.Sleep(5000);
Thread.Sleep(3000);
}
}
@ -839,7 +840,7 @@ namespace Khd.Core.Wcs.Wcs
mesBasePalletInfo.materialId = null;
mesBasePalletInfo.materialName = null;
mesBasePalletInfo.updateBy = "WCS";
mesBasePalletInfo.updateTime=DateTime.Now;
mesBasePalletInfo.updateTime = DateTime.Now;
dbContext.Update(mesBasePalletInfo);
BaseEquip emptyEquip = dbContext.BaseEquip.First(t => t.objid == 35);
BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 31);

@ -15,17 +15,15 @@ namespace Khd.Core.Wcs.Wcs
public class ThirdFloorPoint
{
private readonly IHost _host;
private readonly Plc.S7.Plc _plc;
private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineSignal;
int FloorNo { get; set; }
public ThirdFloorPoint(IHost host, Plc.S7.Plc plc, int floor)
{
this._host = host;
this._plc = plc;
FloorNo = floor;
this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID002");
this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02");
this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID003");
this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal03");
}
/// <summary>
/// 启动上件扫描监听
@ -50,8 +48,8 @@ namespace Khd.Core.Wcs.Wcs
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
//入库任务
var rfid = this._plc.ReadRFID(LineRFID.plcpointAddress);
var isSignal = this._plc.Read(LineSignal.plcpointAddress);
var rfid = StaticData.PlcDic[0].ReadRFID(LineRFID.plcpointAddress);
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
if (rfid != null && isSignal != null)
{
@ -71,6 +69,8 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.instockFlag == "0")
.Where(t => t.outstockFlag == "0")
.Where(t => t.locationStatus == "1")
.OrderByDescending(t=>t.locRow)
.ThenByDescending(t=>t.locColumn)
.ToList();
List<string> containerCodes = wmsBaseLocations.Where(t => t.locDeep == 1).Select(t => t.containerCode).ToList();//深库位的托盘

@ -442,7 +442,7 @@
</ControlTemplate>
</Button.Template>
</Button>
<Button Content="删除任务" Visibility="Collapsed" FontSize="25" Foreground="White" Height="50" Width="132" Click="btnDelTask_Click">
<Button Content="删除任务" FontSize="25" Foreground="White" Height="50" Width="132" Click="btnDelTask_Click">
<Button.Template >
<ControlTemplate TargetType="{x:Type Button}" >
<Border BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="1" CornerRadius="4,4,4,4">
@ -621,7 +621,8 @@
Header="创建时间"
IsReadOnly="True" />
<DataGridTemplateColumn
Width="100"
Visibility="Collapsed"
Width="150"
MinWidth="10"
Header=" 操作"
IsReadOnly="True">
@ -957,7 +958,7 @@
<Label Content="Label"/>
</StackPanel>
</TabItem>
<TabItem x:Name="LocationManager" Header="库存信息" Background="#213269" Style="{StaticResource DefaultItem}" Foreground="White" FontSize="25" Width="160" Height="100" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="5" >
<TabItem x:Name="LocationManager" Header="库存信息" Background="#213269" Style="{StaticResource DefaultItem}" Foreground="White" FontSize="25" Width="160" Height="100" VerticalAlignment="Top" HorizontalAlignment="Center" >
<StackPanel
x:Name="orderControl"
Canvas.Left="174"
@ -1517,6 +1518,7 @@
Header="托盘号"
IsReadOnly="True" />
<DataGridTemplateColumn
Visibility="Collapsed"
Width="300"
MinWidth="10"
Header=" 操作"
@ -1744,7 +1746,7 @@
<hc:Pagination x:Name="Pagination2" Grid.Row="2" MaxWidth="1500" MaxPageCount="1" Margin="0,0,0,15" PageUpdated="Pagination2_PageUpdated" IsJumpEnabled="True" HorizontalAlignment="Center" Width="339" />
</Grid>
</TabItem>
<TabItem x:Name="InventoryManager" Header="盘库任务" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" Background="#213269" VerticalContentAlignment="Center" Foreground="White" Width="160" Height="100" Margin="5">
<TabItem Visibility="Collapsed" x:Name="InventoryManager" Header="盘库任务" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" Background="#213269" VerticalContentAlignment="Center" Foreground="White" Width="160" Height="100" Margin="5">
<Grid Height="1100" Width="1700">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>

@ -1234,7 +1234,7 @@ namespace Khd.Core.Wpf.Form
/// <param name="e"></param>
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
if (sender is CheckBox checkbox && LoadMaterial0.SelectedItem is WcsTask Currentselected)
if (sender is CheckBox checkbox && LoadMaterial0.SelectedItem is taskModel Currentselected)
{
SelectedItem[Currentselected.objid] = checkbox.IsChecked ?? false;
}

@ -1,4 +1,5 @@
using Khd.Core.Domain.Models;
using Khd.Core.Wpf.dto;
using System;
using System.Collections.Generic;
using System.Globalization;
@ -82,7 +83,7 @@ namespace Khd.Core.Wpf.myConverter
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
WcsTask? wcsTask = value as WcsTask;
taskModel? wcsTask = value as taskModel;
if (wcsTask != null)
{
BaseEquip baseEquip = SystemData.BaseEquip.First(t => t.objid == wcsTask.nextPointId);

Loading…
Cancel
Save