|
|
|
|
@ -109,10 +109,95 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
//};
|
|
|
|
|
//CallEmptyThread.Start();
|
|
|
|
|
|
|
|
|
|
Thread equipStatusThread = new Thread(EquipStatusLogic)
|
|
|
|
|
{
|
|
|
|
|
IsBackground = true
|
|
|
|
|
};
|
|
|
|
|
equipStatusThread.Start();
|
|
|
|
|
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":一楼提升机线程启动成功");
|
|
|
|
|
LogManager.Info("一楼提升机线程启动成功");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void EquipStatusLogic(object? obj)
|
|
|
|
|
{
|
|
|
|
|
using var scope = this._host.Services.CreateScope();
|
|
|
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
|
|
|
while (true)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
for (int i = 1; i <= 5; i++)
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{i}");
|
|
|
|
|
var lineSignal = StaticData.PlcDic[0].Read(basePlcpoint.plcpointAddress);
|
|
|
|
|
if (lineSignal != null)
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(lineSignal) == 1)
|
|
|
|
|
{
|
|
|
|
|
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == i);
|
|
|
|
|
if (baseEquip.equipStatus != 1)
|
|
|
|
|
{
|
|
|
|
|
dbContext.Update(baseEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == i || t.currPointId == i).Any();
|
|
|
|
|
if (!hasTask)
|
|
|
|
|
{
|
|
|
|
|
baseEquip.equipStatus = 0;
|
|
|
|
|
dbContext.Update(baseEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
baseEquip.equipStatus = 0;
|
|
|
|
|
dbContext.Update(baseEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
baseEquip.equipStatus = 1;
|
|
|
|
|
dbContext.Update(baseEquip);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
if (ex is PlcException)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
foreach (var item in StaticData.PlcDic)
|
|
|
|
|
{
|
|
|
|
|
if (item.Value.IP == ex.Message)
|
|
|
|
|
{
|
|
|
|
|
StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot);
|
|
|
|
|
StaticData.PlcDic[item.Key].Open();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
LogManager.Error(ex);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CallEmpty()
|
|
|
|
|
{
|
|
|
|
|
using var scope = _host.Services.CreateScope();
|
|
|
|
|
@ -160,9 +245,27 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
if (ex is PlcException)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
foreach (var item in StaticData.PlcDic)
|
|
|
|
|
{
|
|
|
|
|
if (item.Value.IP == ex.Message)
|
|
|
|
|
{
|
|
|
|
|
StaticData.PlcDic[item.Key] = new Plc.S7.Plc(item.Value.CPU, item.Value.IP, item.Value.Port, item.Value.Rack, item.Value.Slot);
|
|
|
|
|
StaticData.PlcDic[item.Key].Open();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
LogManager.Error(ex);
|
|
|
|
|
}
|
|
|
|
|
Thread.Sleep(1000);
|
|
|
|
|
}
|
|
|
|
|
@ -297,16 +400,46 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(task.containerNo))
|
|
|
|
|
{
|
|
|
|
|
if (task.qty > 1)//多个托盘
|
|
|
|
|
if (task.useFlag == 1)
|
|
|
|
|
{
|
|
|
|
|
if (task.useFlag == 1)
|
|
|
|
|
if (task.qty > 1)//多个托盘
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (task.endPointId != 1)
|
|
|
|
|
{
|
|
|
|
|
task.nextPointId = 6;
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (task.qty == 1)
|
|
|
|
|
{
|
|
|
|
|
if (task.endPointId != 1)
|
|
|
|
|
{
|
|
|
|
|
task.nextPointId = 6;
|
|
|
|
|
task.containerNo = RFID001Value;
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (task.qty == 1)
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == RFID001Value);
|
|
|
|
|
if (mesBasePalletInfo != null)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
mesBasePalletInfo.bindAmount = null;
|
|
|
|
|
mesBasePalletInfo.createBy = null;
|
|
|
|
|
mesBasePalletInfo.bindAmount = null;
|
|
|
|
|
mesBasePalletInfo.createTime = null;
|
|
|
|
|
mesBasePalletInfo.materialBarcode = null;
|
|
|
|
|
mesBasePalletInfo.materialCode = null;
|
|
|
|
|
mesBasePalletInfo.materialId = null;
|
|
|
|
|
mesBasePalletInfo.materialName = null;
|
|
|
|
|
mesBasePalletInfo.updateBy = "WCS";
|
|
|
|
|
mesBasePalletInfo.updateTime = DateTime.Now;
|
|
|
|
|
dbContext.Update(mesBasePalletInfo);
|
|
|
|
|
dbContext.Remove(task);
|
|
|
|
|
dbContext.WcsTaskLog.Where(t => t.objid == task.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -377,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))
|
|
|
|
|
if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)
|
|
|
|
|
{
|
|
|
|
|
@ -413,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))
|
|
|
|
|
if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo)&&wcsTask.qty>1))
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//提升机当前楼层为初始地楼层
|
|
|
|
|
{
|
|
|
|
|
|