master
2 years ago
parent cc396e6ac1
commit 2f62066c04

@ -14,7 +14,7 @@ namespace Khd.Core.Plc
/// <param name="address"> 写入地址 </param>
/// <param name="valueString"> 值 </param>
/// <param name="len"> 长度 </param>
public static void WriteToPoint(this Plc.S7.Plc plc, string address, string? valueString, string? len)
public static void WriteToPoint(this Plc.S7.Plc plc, string address, object? valueString, string? len)
{
if (len == null)
{
@ -24,8 +24,7 @@ namespace Khd.Core.Plc
{
throw new ArgumentException("StaticPlcHelper Ex valueString is null");
}
var value = GetValue(len, valueString);
plc.Write(address, value);
plc.Write(address, GetValue(len, valueString));
}
/// <summary>
@ -51,14 +50,13 @@ namespace Khd.Core.Plc
{
return res[res.IndexOf('J')..];
}
else if(res.Contains("C"))
else if(res.Contains('C'))
{
return res[res.IndexOf('C')..];
}else
{
return "";
}
}
@ -68,7 +66,7 @@ namespace Khd.Core.Plc
/// <param name="len">点位地址位长度</param>
/// <param name="value">写入数值</param>
/// <returns></returns>
public static object GetValue(string? len, string? value)
public static object GetValue(string? len, object value)
{
if (len == "2")
{
@ -90,7 +88,7 @@ namespace Khd.Core.Plc
{
return Convert.ToBoolean(value);
}
return 0;
throw new ArgumentException("StaticPlcHelper Ex len is not support");
}
}
}

@ -1,4 +1,5 @@
using Khd.Core.EntityFramework;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Wcs.Global;
using Khd.Core.Wcs.Wcs;
using Masuit.Tools.Logging;
@ -32,11 +33,11 @@ namespace Khd.Core.Wcs
public void Start()
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
using var dbContextTransaction = dbContext.Database.BeginTransaction();
try
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
//加载配置项
//设置程序启动时清空点位的数据=>0为 Int16位
QingKongDianWei = StaticPlcHelper.GetValue("2", "0");
@ -48,7 +49,7 @@ namespace Khd.Core.Wcs
StaticData.basePlcs = dbContext.BasePlc.ToList();
StaticData.BaseEquip = dbContext.BaseEquip.ToList();
StaticData.BaseDictionary = dbContext.BaseDictionary.ToList();
foreach (var plcConfig in StaticData.PlcConfigs)
{
if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code))
@ -57,7 +58,7 @@ namespace Khd.Core.Wcs
plc = new Plc.S7.Plc(plcConfig.CpuType, plcConfig.IP, plcConfig.Port, plcConfig.Rack, plcConfig.Slot);
try
{
//plc.Open();
plc.Open();
Console.WriteLine(DateTime.Now + ":连接到PLC" + plcConfig.IP);
}
catch
@ -69,13 +70,13 @@ 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();
//一楼提升机以及接驳位
FirstFloor firstFloor = new(_host, StaticData.PlcDic[0]);
firstFloor.StartPoint();
////二层接驳位
//var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First();
@ -92,38 +93,39 @@ namespace Khd.Core.Wcs
//SecondFloorLine secondFloorLine = new(_host, StaticData.PlcDic[2], SecondFloorLineEquip.floorNo.Value);
//secondFloorLine.StartPoint();
//三层接驳位
var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First();
ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value);
thirdFloorPoint.StartPoint();
////三层接驳位
//var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First();
//ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value);
//thirdFloorPoint.StartPoint();
////三层AGV
//var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First();
//ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[2], ThirdFloorAgvEquip.floorNo.Value);
//thirdFloorAGV.StartPoint();
////五层接驳位
//var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First();
//FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value);
//fifthFloorPoint.StartPoint();
//五层接驳位
var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First();
FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value);
fifthFloorPoint.StartPoint();
////五层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
//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();
//五层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();
//背负式Agv
//var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First();
//FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[1], FifthFloorBearAgvEquip.floorNo.Value);
//fiveFloorBearAgv.StartPoint();
var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First();
FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[0], FifthFloorBearAgvEquip.floorNo.Value);
fiveFloorBearAgv.StartPoint();
}
catch (Exception ex)
{
dbContextTransaction.Rollback();
Console.WriteLine(ex.Message);
LogManager.Error(ex);
}

@ -32,18 +32,18 @@ namespace Khd.Core.Wcs.Wcs
////背负式Agv返库任务
//var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
//createBearAgvReturnThread.Start();
////五楼半成品入库任务
//var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
//createFiveProductInTaskThread.Start();
////五楼成品出库任务
//var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
//createFiveProductTaskThread.Start();
////五楼CTU出库任务以及原材料出库任务
//var createRawTaskThread = new Thread(CreateRawTaskLogic);
//createRawTaskThread.Start();
////五楼柜体拆分返库任务
//var createRawInThread = new Thread(CreateRawInTaskLogic);
//createRawInThread.Start();
//五楼半成品入库任务
var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
createFiveProductInTaskThread.Start();
//五楼成品出库任务
var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
createFiveProductTaskThread.Start();
//五楼CTU出库任务以及原材料出库任务
var createRawTaskThread = new Thread(CreateRawTaskLogic);
createRawTaskThread.Start();
//五楼柜体拆分返库任务
var createRawInThread = new Thread(CreateRawInTaskLogic);
createRawInThread.Start();
////三楼去翻转机任务
//var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic);
//createThirdOutTaskThread.Start();
@ -177,7 +177,7 @@ namespace Khd.Core.Wcs.Wcs
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t=>t.taskStatus<5).Any();
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t => t.taskStatus < 5).Any();
if (!canCreate)
{
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35);
@ -485,8 +485,8 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.instockFlag == "0")
.Where(t => t.outstockFlag == "0")
.Where(t => t.warehouseId == 311)
.OrderByDescending(t=>t.locRow)
.ThenByDescending(t=>t.locColumn)
.OrderByDescending(t => t.locRow)
.ThenByDescending(t => t.locColumn)
.ToList();
var bill = from a in wmsBaseLocations
from b in wmsRawStocks
@ -541,55 +541,67 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault();
if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode))
{
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.Where(t=>t.locColumn>wmsBaseLocation.locColumn)
.OrderBy(t => t.locColumn)
.FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.Where(t => t.locColumn < wmsBaseLocation.locColumn)
.OrderByDescending(t => t.locColumn)
.FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.warehouseId != wmsBaseLocation.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
WmsRawStock? wmsRawStock1 = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode);
if (wmsRawStock1 != null)
{
var RemoveTask = new WcsTask()
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.Where(t => t.locColumn > wmsBaseLocation.locColumn)
.OrderBy(t => t.locColumn)
.FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.Where(t => t.locColumn < wmsBaseLocation.locColumn)
.OrderByDescending(t => t.locColumn)
.FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.warehouseId != wmsBaseLocation.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{
objid = StaticData.SnowId.NextId(),
taskType = 67,
containerNo = fromBaseLocation.containerCode,
createBy = "WCS",
createTime = DateTime.Now.AddSeconds(-10),
taskStatus = 0,
currPointId = fromBaseLocation.locationId,
currPointNo = fromBaseLocation.locationCode,
nextPointId = baseEquip.objid,
nextPointNo = baseEquip.equipNo,
endPointId = toLocation.locationId,
endPointNo = toLocation.locationCode,
equipmentNo = baseEquip.equipNo,
useFlag = 1,
qty = 1
};
toLocation.locationStatus = "4";
toLocation.instockFlag = "1";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
fromBaseLocation.updateBy = "WCS";
fromBaseLocation.updateTime = DateTime.Now;
fromBaseLocation.outstockFlag = "1";
fromBaseLocation.locationStatus = "4";
dbContext.Update(toLocation);
dbContext.Update(fromBaseLocation);
dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
var RemoveTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
taskType = 67,
containerNo = wmsRawStock1.palletInfoCode,
createBy = "WCS",
createTime = DateTime.Now.AddSeconds(-10),
taskStatus = 0,
currPointId = fromBaseLocation.locationId,
currPointNo = fromBaseLocation.locationCode,
nextPointId = baseEquip.objid,
nextPointNo = baseEquip.equipNo,
endPointId = toLocation.locationId,
endPointNo = toLocation.locationCode,
equipmentNo = baseEquip.equipNo,
useFlag = 1,
qty = 1
};
toLocation.locationStatus = "4";
toLocation.instockFlag = "1";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
fromBaseLocation.updateBy = "WCS";
fromBaseLocation.updateTime = DateTime.Now;
fromBaseLocation.outstockFlag = "1";
fromBaseLocation.locationStatus = "4";
dbContext.Update(toLocation);
dbContext.Update(fromBaseLocation);
dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
}
else
{
continue;
}
}
else
{
continue;
}
}
}
@ -823,7 +835,7 @@ namespace Khd.Core.Wcs.Wcs
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == stock.palletInfoCode);
if (mesBasePalletInfo != null)
{
if (location.locDeep == 1)
{
int? row = 0;
@ -848,48 +860,56 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
{
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.containerCode);
if (wmsProductStock != null)
{
var RemoveTask = new WcsTask()
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{
objid = StaticData.SnowId.NextId(),
orderId = item.productOutstockId,
taskType = 38,
containerNo = wmsBaseLocation.containerCode,
createBy = "WCS",
createTime = DateTime.Now.AddSeconds(-10),
taskStatus = 0,
materialId = item.productId,
currPointId = wmsBaseLocation.locationId,
currPointNo = wmsBaseLocation.locationCode,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
endPointId = toLocation.locationId,
endPointNo = toLocation.locationCode,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = 1
};
toLocation.locationStatus = "4";
toLocation.instockFlag = "1";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.outstockFlag = "1";
wmsBaseLocation.locationStatus = "4";
dbContext.Update(toLocation);
dbContext.Update(wmsBaseLocation);
dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
var RemoveTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
orderId = item.productOutstockId,
taskType = 38,
containerNo = wmsProductStock.palletInfoCode,
createBy = "WCS",
createTime = DateTime.Now.AddSeconds(-10),
taskStatus = 0,
materialId = item.productId,
currPointId = wmsBaseLocation.locationId,
currPointNo = wmsBaseLocation.locationCode,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
endPointId = toLocation.locationId,
endPointNo = toLocation.locationCode,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = 1
};
toLocation.locationStatus = "4";
toLocation.instockFlag = "1";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.outstockFlag = "1";
wmsBaseLocation.locationStatus = "4";
dbContext.Update(toLocation);
dbContext.Update(wmsBaseLocation);
dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
}
else
{
continue;
}
}
else
{
@ -897,7 +917,7 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
}
WmsProductOutstockDetail detail = new()
{
@ -920,7 +940,7 @@ namespace Khd.Core.Wcs.Wcs
objid = StaticData.SnowId.NextId(),
orderId = item.productOutstockId,
taskType = 38,
containerNo = location.containerCode,
containerNo = stock.palletInfoCode,
createBy = "WCS",
createTime = DateTime.Now,
taskStatus = 0,
@ -1039,19 +1059,7 @@ namespace Khd.Core.Wcs.Wcs
location = b.a;
stock = b.b;
WcsTask wcsTask;
int qty = 0;
if (stock.totalAmount - stock.frozenAmount <= needNumber)
{
item.outstockQty += stock.totalAmount - stock.frozenAmount;
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
stock.updateDate = DateTime.Now;
}
else
{
item.outstockQty += needNumber;
qty = Convert.ToInt32(needNumber);
stock.updateDate = DateTime.Now;
}
stock.updateDate = DateTime.Now;
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode);
if (mesBasePalletInfo != null)
{
@ -1095,7 +1103,10 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
{
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.containerCode);
if (wmsProductStock != null)
{
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => t.activeFlag == "1")
.Where(t => t.delFlag == "0")
@ -1104,45 +1115,50 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.locationStatus == "1")
.Where(t => t.outstockFlag == "0")
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{
var RemoveTask = new WcsTask()
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{
objid = StaticData.SnowId.NextId(),
orderId = item.productOutstockId,
taskType = 55,
containerNo = wmsBaseLocation.containerCode,
createBy = "WCS",
createTime = DateTime.Now.AddSeconds(-10),
taskStatus = 0,
materialId = item.productId,
currPointId = wmsBaseLocation.locationId,
currPointNo = wmsBaseLocation.locationCode,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
endPointId = toLocation.locationId,
endPointNo = toLocation.locationCode,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = qty
};
toLocation.locationStatus = "4";
toLocation.instockFlag = "1";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.outstockFlag = "1";
wmsBaseLocation.locationStatus = "4";
dbContext.Update(toLocation);
dbContext.Update(wmsBaseLocation);
dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
var RemoveTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
orderId = item.productOutstockId,
taskType = 55,
containerNo = wmsBaseLocation.containerCode,
createBy = "WCS",
createTime = DateTime.Now.AddSeconds(-10),
taskStatus = 0,
materialId = item.productId,
currPointId = wmsBaseLocation.locationId,
currPointNo = wmsBaseLocation.locationCode,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
endPointId = toLocation.locationId,
endPointNo = toLocation.locationCode,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = 1
};
toLocation.locationStatus = "4";
toLocation.instockFlag = "1";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.outstockFlag = "1";
wmsBaseLocation.locationStatus = "4";
dbContext.Update(toLocation);
dbContext.Update(wmsBaseLocation);
dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
}
else
{
continue;
}
}
else
{
@ -1169,7 +1185,7 @@ namespace Khd.Core.Wcs.Wcs
endPointNo = endEquip.equipNo,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = qty
qty = 1
};
location.outstockFlag = "1";
location.locationStatus = "6";
@ -1182,10 +1198,6 @@ namespace Khd.Core.Wcs.Wcs
WcsTaskLog wcsTaskLog1 = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog1);
dbContext.SaveChanges();
if (qty >= needNumber)
{
break;
}
break;
}
}
@ -1254,7 +1266,7 @@ namespace Khd.Core.Wcs.Wcs
foreach (var item in rawOutStock)
{
decimal? RealOutNumber = item.realOutstockAmount;
var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == item.endStationCode);
var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == item.endStationCode);
if (endEquip != null && endEquip.floorNo == 5)
{
lock (SystemData.outStockLock)
@ -1456,6 +1468,10 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
foreach (var b in bill)
{
if (needNumber <= 0)
{
break;
}
if (tasks.Where(t => t.containerNo == b.a.containerCode).Any() || tasks.Count >= 6)
{
continue;
@ -1465,12 +1481,14 @@ namespace Khd.Core.Wcs.Wcs
int qty = 0;
if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
{
needNumber-= stock.totalAmount - stock.frozenAmount;
RealOutNumber += stock.totalAmount - stock.frozenAmount;
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
stock.updateDate = DateTime.Now;
}
else
{
needNumber = 0;
RealOutNumber += needNumber;
qty = Convert.ToInt32(needNumber);
stock.updateDate = DateTime.Now;
@ -1516,141 +1534,6 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
#region 原逻辑
//foreach (var order in orderList)
//{
// if(tasks.Count >= 6)
// {
// break;
// }
// WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.taskType == 32);
// if (task == null)
// {
// var wmsRawStocks = rawStock
// .Where(t => t.materialId == order.materialId && t.warehouseId == order.warehouseId)
// .Select(t => t.palletInfoCode)
// .ToList();
// var wmsBaseLocations = dbContext.WmsBaseLocation
// .Where(t => t.activeFlag == "1")
// .Where(t => t.delFlag == "0")
// .Where(t => t.locationScrapType == "1")
// .Where(t => t.instockFlag == "0")
// .Where(t => t.outstockFlag == "0")
// .Where(t => t.warehouseId == order.warehouseId)
// .Where(t => wmsRawStocks.Contains(t.containerCode))
// .ToList();
// decimal? needNumber = order.outstockAmount - RealOutNumber;
// var bill = from a in wmsBaseLocations
// from b in rawStock
// where a.containerCode == b.palletInfoCode
// select new { a, b };
// //如果第一列满足需求,则按第一列排序,否则按最后一列排序
// if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
// {
// bill = bill.OrderBy(t => t.a.locColumn).ToList();
// }
// else
// {
// bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
// }
// //做数量限制
// bill = bill.Take(5 - dbContext.WcsCmd.Where(t => t.cmdStatus < 3 && t.nextPointId == 20).Count());
// BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11);
// BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
// foreach (var b in bill)
// {
// if (tasks.Where(t => t.containerNo == b.a.containerCode).Any())
// {
// continue;
// }
// item.executeStatus = "1";
// WmsBaseLocation location = b.a;
// WmsRawStock stock = b.b;
// int qty = 0;
// if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
// {
// RealOutNumber += stock.totalAmount - stock.frozenAmount;
// qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
// stock.updateDate = DateTime.Now;
// }
// else
// {
// RealOutNumber += needNumber;
// qty = Convert.ToInt32(needNumber);
// stock.updateDate = DateTime.Now;
// }
// WcsTask wcsTask = new WcsTask()
// {
// objid = StaticData.SnowId.NextId(),
// orderId = item.rawOutstockId,
// taskType = 30,
// containerNo = location.containerCode,
// createBy = "WCS",
// createTime = DateTime.Now,
// taskStatus = 0,
// materialId = item.materialId,
// currPointId = location.locationId,
// currPointNo = location.locationCode,
// nextPointId = ctuEquip.objid,
// nextPointNo = ctuEquip.equipNo,
// endPointId = lineEquip.objid,
// endPointNo = lineEquip.equipNo,
// equipmentNo = ctuEquip.equipNo,
// ud1 = location.locColumn,
// useFlag = 0,
// qty = qty
// };
// tasks.Add(wcsTask);
// MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
// if (mesBaseBarcodeInfo != null)
// {
// WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
// {
// rawOutstockDetailId = StaticData.SnowId.NextId(),
// rawOutstockId = item.rawOutstockId,
// materialId = item.materialId,
// createDate = DateTime.Now,
// createBy = "WCS",
// taskCode = wcsTask.objid.ToString(),
// executeStatus = "1",
// locationCode = location.locationCode,
// outstockAmount = qty,
// planAmount = item.outstockAmount,
// warehouseId = item.warehouseId,
// materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
// instockBatch = mesBaseBarcodeInfo.batchCode,
// stackAmount = qty,
// outstockPerson = "WCS",
// outstockTime = DateTime.Now,
// outstockWay = "2",
// materialProductionDate = mesBaseBarcodeInfo.productionDate
// };
// details.Add(wmsProductOutstockDetail);
// location.outstockFlag = "1";
// location.locationStatus = "6";
// location.updateBy = "WCS";
// location.updateTime = DateTime.Now;
// wcsOutstockLock.qty += 1;
// wcsOutstockLock.boxStatus = 1;
// dbContext.Update(wcsOutstockLock);
// dbContext.Update(location);
// dbContext.Add(wcsTask);
// dbContext.Update(stock);
// CreateSuccess = true;
// if (tasks.Count >= 6)
// {
// break;
// }
// }
// }
// }
//}
#endregion
}
if (CreateSuccess)
{
@ -1804,48 +1687,56 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
{
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode);
if (wmsRawStock != null)
{
var RemoveTask = new WcsTask()
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.locDeep == 1)
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
.Where(t => t.warehouseId != location.locationId)
.Where(t => string.IsNullOrEmpty(t.containerCode))
.FirstOrDefault();
if (toLocation != null)
{
objid = StaticData.SnowId.NextId(),
orderId = item.rawOutstockId,
taskType = 38,
containerNo = wmsBaseLocation.containerCode,
createBy = "WCS",
createTime = DateTime.Now.AddSeconds(-10),
taskStatus = 0,
materialId = item.materialId,
currPointId = wmsBaseLocation.locationId,
currPointNo = wmsBaseLocation.locationCode,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
endPointId = toLocation.locationId,
endPointNo = toLocation.locationCode,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = qty
};
toLocation.locationStatus = "4";
toLocation.instockFlag = "1";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.outstockFlag = "1";
wmsBaseLocation.locationStatus = "4";
dbContext.Update(toLocation);
dbContext.Update(wmsBaseLocation);
dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
var RemoveTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
orderId = item.rawOutstockId,
taskType = 38,
containerNo = wmsRawStock.palletInfoCode,
createBy = "WCS",
createTime = DateTime.Now.AddSeconds(-10),
taskStatus = 0,
materialId = item.materialId,
currPointId = wmsBaseLocation.locationId,
currPointNo = wmsBaseLocation.locationCode,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
endPointId = toLocation.locationId,
endPointNo = toLocation.locationCode,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = qty
};
toLocation.locationStatus = "4";
toLocation.instockFlag = "1";
toLocation.updateBy = "WCS";
toLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.outstockFlag = "1";
wmsBaseLocation.locationStatus = "4";
dbContext.Update(toLocation);
dbContext.Update(wmsBaseLocation);
dbContext.Add(RemoveTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
dbContext.Add(wcsTaskLog);
}
else
{
continue;
}
}
else
{

@ -158,12 +158,14 @@ namespace Khd.Core.Wcs.Wcs
bool hasTask = dbContext.WcsTask.Where(t => (t.currPointId == i || t.endPointId == i) && t.taskStatus >= 1 && t.nextPointId == 6).Any();
if (!hasCmd || !hasTask)
{
baseEquip.containerNo = null;
baseEquip.equipStatus = 0;
dbContext.Update(baseEquip);
dbContext.SaveChanges();
}
else
{
baseEquip.containerNo = null;
baseEquip.equipStatus = 1;
dbContext.Update(baseEquip);
dbContext.SaveChanges();
@ -594,13 +596,13 @@ namespace Khd.Core.Wcs.Wcs
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.equipmentNo == $"clear0{wcsTask.floorNo}");
BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress);
if (clearPoint != null && Convert.ToInt32(clearPoint.plcpointAddress) == 1)
if (clearPoint != null && Convert.ToBoolean(clearValue) == true)
{
Console.WriteLine(DateTime.Now + ":提升机下发报警消除指令");
LogManager.Info("提升机下发报警消除指令");
StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, "0", clearPoint.plcpointLength.ToString());
StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, false, clearPoint.plcpointLength.ToString());
}
wcsTask.taskStatus = 4;
wcsTask.updateBy = "提升机线程";
@ -616,11 +618,11 @@ namespace Khd.Core.Wcs.Wcs
}
else
{
BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}");
BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress);
if (clearPoint != null && Convert.ToInt32(clearPoint.plcpointAddress) == 0)
if (clearPoint != null && Convert.ToBoolean(clearValue)==false)
{
StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, "1", clearPoint.plcpointLength.ToString());
StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, true, clearPoint.plcpointLength.ToString());
}
}
}

@ -9,6 +9,7 @@ using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using System.Transactions;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@ -101,21 +102,22 @@ namespace Khd.Core.Wcs.Wcs
{
reqCode = wcsCmd.objid.ToString(),
positionCodePath = new List<Position>
{
new ()
{
positionCode=wcsCmd.currPointNo,
type="00"
new ()
{
positionCode=wcsCmd.currPointNo,
type="00"
},
new ()
{
positionCode=wcsCmd.nextPointNo,
type="00"
}
},
new ()
{
positionCode=wcsCmd.nextPointNo,
type="00"
}
},
taskTyp = baseDictionary.dicValue,
ctnrTyp = "2"
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
@ -139,6 +141,7 @@ namespace Khd.Core.Wcs.Wcs
{
LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
}
}
}
else if (item.taskType == 33)//原材料到背板安装
@ -543,8 +546,9 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("五楼Agv下发继续任务成功" + message);
Console.WriteLine(DateTime.Now + ":五楼Agv继续任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo);
wcsCmd.cmdStatus = 4;
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
item.taskStatus = 4;
dbContext.Update(wcsCmd);
dbContext.Update(item);
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 });
dbContext.SaveChanges();
@ -552,11 +556,10 @@ namespace Khd.Core.Wcs.Wcs
}
else if (wcsCmd.cmdStatus == 5)
{
Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo);
Console.WriteLine(DateTime.Now + ":五楼AGV线程完成任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo);
LogManager.Info("五楼Agv完成任务成功" + wcsCmd.ToJsonString());
if (item.taskType == 66)//移库
{
using var transaction = dbContext.Database.BeginTransaction();
try
{
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault();
@ -592,12 +595,10 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
transaction.Commit();
dbContext.SaveChanges();
}
catch (Exception ex)
{
transaction.Rollback();
LogManager.Error(ex);
}
}
@ -877,7 +878,7 @@ namespace Khd.Core.Wcs.Wcs
warehouseFloor = 5,
stockType = "1",
totalAmount = 1,
saleOrderId = mesBaseBarcodeInfo.saleOrderId==null?0:mesBaseBarcodeInfo.saleOrderId,
saleOrderId = mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId,
safeFlag = mesBaseBarcodeInfo.safeFlag,
supplierId = mesBaseBarcodeInfo.manufacturerId,
materialId = mesBasePalletInfo.materialId,

@ -140,11 +140,13 @@ namespace Khd.Core.Wcs.Wcs
{
LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid);
Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid);
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 5 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 5 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 5 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 5 });
item.taskStatus = 5;
wcsCmd.cmdStatus = 5;
dbContext.Update(item);
dbContext.Update(wcsCmd);
dbContext.SaveChanges();
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 5 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 5 });
}
}
else if (wcsCmd.cmdStatus == 7)
@ -170,15 +172,6 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(wmsRawReturn);
}
}
else if (item.taskType == 32)
{
WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.Where(t => t.rawOutstockId == item.orderId).FirstOrDefault();
if (wmsRawOutstock != null)
{
wmsRawOutstock.executeStatus = "2";
dbContext.Update(wmsRawOutstock);
}
}
dbContext.Remove(wcsCmd);
dbContext.Remove(item);
dbContext.SaveChanges();

@ -157,7 +157,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (wcsTask.taskStatus == 6) //出库任务,小车任务是完成状态
{
int? floor = 0;
int? floor = 1;
var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == wcsTask.orderId);
if (wmsProductOutstock != null)
{

@ -185,7 +185,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);
BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@ -873,6 +873,7 @@ namespace Khd.Core.Wcs.Wcs
{
var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First();
WmsProductStock wmsProductStock = dbContext.WmsProductStock.First(t => t.locationCode == wmsBaseLocation.locationCode);
wmsProductOutstock.outstockQty ++;
if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty)
{
wmsProductOutstock.endTime = DateTime.Now;

@ -72,7 +72,7 @@ namespace Khd.Core.Wcs.Wcs
{
if (wcsTask.taskType != 99)
{
if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1)//小包入口要料
if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0)//小包入口要料
{
dbContext.WcsTask.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
@ -96,7 +96,7 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid);
Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid);
}
else if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0)
else if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1)
{
BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0);
if (endEquip != null)

@ -43,11 +43,11 @@ namespace Khd.Core.Wcs.Wcs
//};
//PlcHeartBeat30Thread.Start();
//var PlcHeartBeat31Thread = new Thread(PlcHeartBeat31Logic)
//{
// IsBackground = true
//};
//PlcHeartBeat31Thread.Start();
var PlcHeartBeat31Thread = new Thread(PlcHeartBeat31Logic)
{
IsBackground = true
};
PlcHeartBeat31Thread.Start();
Console.WriteLine($"{DateTime.Now}: SystemTimer started");
}
@ -106,7 +106,7 @@ namespace Khd.Core.Wcs.Wcs
/// <param name="obj"></param>
private void PlcHeartBeat31Logic(object? obj)
{
BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat31");
BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "CTUHeart");
int heartBeatCount = 0;
while (true)
{
@ -194,13 +194,13 @@ namespace Khd.Core.Wcs.Wcs
{
HositerLogic();
//CtuLineLogic();
CtuLineLogic();
ThirdAgvLogic();
FiveAgvLogic();
FiveBearAgvLogic();
CtuCmdLogic();
SecondAgvLogic();
//SendTrayMessage();
SendTrayMessage();
UpdatePlcPointValue();
}
catch (Exception ex)

@ -2902,7 +2902,8 @@ namespace Khd.Core.Wpf.Form
private void SelectOutBtn_Click(object sender, RoutedEventArgs e)
{
SelectOutRawForm selectOutRawForm=new SelectOutRawForm(this._host);
selectOutRawForm.ShowDialog();
}
}
}

@ -39,6 +39,7 @@ namespace Khd.Core.Wpf.TaskForm
dbContext.BaseEquip.Update(baseEquip);
dbContext.SaveChanges();
MessageBox.Show("保存成功!");
this.Close();
}
}

@ -16,14 +16,14 @@
"Slot": 1,
"Code": 0
},
{
"IP": "192.168.2.31",
"Port": 102, //102
"CpuType": 40,
"Rack": 0,
"Slot": 1,
"Code": 1
},
//{
// "IP": "192.168.2.31",
// "Port": 102, //102
// "CpuType": 40,
// "Rack": 0,
// "Slot": 1,
// "Code": 1
//},
{
"IP": "192.168.2.220",
"Port": 102, //102

Loading…
Cancel
Save