|
|
|
|
@ -44,7 +44,10 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
CreateTaskByReadPlcSignal();
|
|
|
|
|
|
|
|
|
|
//监听2#计量室旋转移栽plc信号,处理相关流程
|
|
|
|
|
ListeningWorkShop2TransplantingMachine();
|
|
|
|
|
var CreateProductTaskByLocationCodeThread = new Thread(ListeningWorkShop2TransplantingMachine);
|
|
|
|
|
CreateProductTaskByLocationCodeThread.IsBackground = true;
|
|
|
|
|
CreateProductTaskByLocationCodeThread.Name = "监听1#2#计量室旋转移栽plc信号处理连廊箱体旋转相关流程";
|
|
|
|
|
CreateProductTaskByLocationCodeThread.Start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
@ -136,39 +139,38 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void ListeningWorkShop2TransplantingMachine()
|
|
|
|
|
{
|
|
|
|
|
Task.Run(async () =>
|
|
|
|
|
while (true)
|
|
|
|
|
{
|
|
|
|
|
while (true)
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
if (workShop2Plc == null || !workShop2Plc.IsConnected)
|
|
|
|
|
{
|
|
|
|
|
if (workShop2Plc == null || !workShop2Plc.IsConnected)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 计量室料箱返回处理流程:空箱入缓存链条线,色粉派送至色粉存放点
|
|
|
|
|
#region 计量室料箱返回处理流程:空箱入缓存链条线,色粉派送至色粉存放点
|
|
|
|
|
|
|
|
|
|
//2#接驳位色粉派送至色粉存放点任务
|
|
|
|
|
if (workShop2Plc != null && workShop2Plc.IsConnected)
|
|
|
|
|
//2#接驳位色粉派送至色粉存放点任务
|
|
|
|
|
if (workShop2Plc != null && workShop2Plc.IsConnected)
|
|
|
|
|
{
|
|
|
|
|
bool returnJudgeSignal = workShop2Plc.readBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"));
|
|
|
|
|
int busy2Flag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"));
|
|
|
|
|
int Amount = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#缓存链条线库存数"));
|
|
|
|
|
//是否还有未在色粉库位的色粉箱体
|
|
|
|
|
bool anyTonerPallet = HasAnyTonerInLine();
|
|
|
|
|
if (returnJudgeSignal && busy2Flag == 0 && (Amount < 3 || anyTonerPallet))
|
|
|
|
|
{
|
|
|
|
|
_logger.Info("22222=============");
|
|
|
|
|
bool returnJudgeSignal = workShop2Plc.readBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"));
|
|
|
|
|
int busy2Flag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"));
|
|
|
|
|
int Amount = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#缓存链条线库存数"));
|
|
|
|
|
//是否还有未在色粉库位的色粉箱体
|
|
|
|
|
bool anyTonerPallet = HasAnyTonerInLine();
|
|
|
|
|
if (returnJudgeSignal && busy2Flag == 0 && (Amount < 3 || anyTonerPallet))
|
|
|
|
|
string rfid = ReadEpcStrByRfidKey("2#Transplant");
|
|
|
|
|
if (string.IsNullOrEmpty(rfid))
|
|
|
|
|
{//二次读取
|
|
|
|
|
rfid = ReadEpcStrByRfidKey("2#Transplant");
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(rfid))
|
|
|
|
|
{
|
|
|
|
|
string rfid = await ReadEpcStrByRfidKeyAsync("2#Transplant");
|
|
|
|
|
if (string.IsNullOrEmpty(rfid))
|
|
|
|
|
{//二次读取
|
|
|
|
|
rfid = await ReadEpcStrByRfidKeyAsync("2#Transplant");
|
|
|
|
|
}
|
|
|
|
|
//让其他线程
|
|
|
|
|
Thread.Sleep(4000);
|
|
|
|
|
busy2Flag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"));
|
|
|
|
|
if (!string.IsNullOrEmpty(rfid) && busy2Flag == 0)
|
|
|
|
|
if (busy2Flag == 0)
|
|
|
|
|
{
|
|
|
|
|
// 判断有无色粉, 如果没有色粉,wcs给 旋转移栽方向信号 写2,plc将料箱运到 缓存皮带线。
|
|
|
|
|
WmsPalletInfo? wmsPalletInfo = sqlSugarClient.Queryable<WmsPalletInfo>().First(it => it.PalletInfoCode == rfid);
|
|
|
|
|
@ -180,6 +182,7 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
if (createResult)
|
|
|
|
|
{
|
|
|
|
|
//3色粉上提升机移栽等待
|
|
|
|
|
_logger.Info($"2#移栽===={rfid}携带色粉去往色粉库位");
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 3);
|
|
|
|
|
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false);
|
|
|
|
|
@ -187,6 +190,7 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
else
|
|
|
|
|
{ //色粉库位无空闲位置,空转一圈
|
|
|
|
|
//2空箱转运
|
|
|
|
|
_logger.Info($"2#移栽===={rfid}携带色粉,色粉库位无空闲位置,空转一圈");
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 2);
|
|
|
|
|
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false);
|
|
|
|
|
@ -195,6 +199,7 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
else if (wmsPalletInfo != null && wmsPalletInfo.Amount > 0 && wmsPalletInfo.TonerFlag == 0) //携带满料
|
|
|
|
|
{
|
|
|
|
|
//2空箱转运
|
|
|
|
|
_logger.Info($"2#移栽===={rfid}携带满料,空转一圈");
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 2);
|
|
|
|
|
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false);
|
|
|
|
|
@ -204,6 +209,7 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
if (Amount < 3)
|
|
|
|
|
{
|
|
|
|
|
//1上提升机去缓存线
|
|
|
|
|
_logger.Info($"2#移栽===={rfid}空箱,去缓存区");
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 1);
|
|
|
|
|
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false);
|
|
|
|
|
@ -211,125 +217,136 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//2空箱转运
|
|
|
|
|
_logger.Info($"2#移栽===={rfid}空箱,空箱转运");
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 2);
|
|
|
|
|
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//没读到2空箱转运
|
|
|
|
|
//workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
|
|
|
|
|
//workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 2);
|
|
|
|
|
//workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion 计量室料箱返回处理流程:空箱入缓存链条线,色粉派送至色粉存放点
|
|
|
|
|
|
|
|
|
|
#region 连廊料箱在计量室连廊移栽处理流程:wcs读RFID判断是否空箱,空箱下plc信号旋转,非空箱通知plc上提升机计量室
|
|
|
|
|
|
|
|
|
|
if (workShop2Plc != null && workShop2Plc.IsConnected)
|
|
|
|
|
{
|
|
|
|
|
_logger.Info("11111=============");
|
|
|
|
|
bool returnJudgeSignal = workShop2Plc.readBoolByAddress(StaticData.GetPlcAddress("2#料箱运进计量室RFID读取"));
|
|
|
|
|
int busy1Flag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("1#提升机忙碌状态"));
|
|
|
|
|
if (returnJudgeSignal && busy1Flag == 0)
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//test
|
|
|
|
|
|
|
|
|
|
string rfid = await ReadEpcStrByRfidKeyAsync("1#MetrologyRoom");
|
|
|
|
|
if (string.IsNullOrEmpty(rfid))
|
|
|
|
|
{
|
|
|
|
|
rfid = await ReadEpcStrByRfidKeyAsync("1#MetrologyRoom");
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(rfid))
|
|
|
|
|
{
|
|
|
|
|
// 判断有无料, 如果没有料,wcs下发空箱旋转信号,有料,通知plc上提升机计量室
|
|
|
|
|
WmsPalletInfo? wmsPalletInfo = sqlSugarClient.Queryable<WmsPalletInfo>().First(it => it.PalletInfoCode == rfid);
|
|
|
|
|
if (wmsPalletInfo != null && wmsPalletInfo.Amount > 0 && wmsPalletInfo.TonerFlag == 0) //携带满料
|
|
|
|
|
{
|
|
|
|
|
//1#移栽平台任务(1上提升机,2空箱转运)
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("1#移栽平台任务"), 1);
|
|
|
|
|
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运进计量室RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
else if (wmsPalletInfo != null && wmsPalletInfo.Amount == 0)
|
|
|
|
|
{
|
|
|
|
|
//1#移栽平台任务(1上提升机,2空箱转运)
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("1#移栽平台任务"), 2);
|
|
|
|
|
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运进计量室RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//没读到,当成空箱子旋转一圈
|
|
|
|
|
//1#移栽平台任务(1上提升机,2空箱转运)
|
|
|
|
|
//workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("1#移栽平台任务"), 2);
|
|
|
|
|
//workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运进计量室RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
//没读到2空箱转运
|
|
|
|
|
// _logger.Info($"1#移栽====没读到,空箱转运");
|
|
|
|
|
//workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
|
|
|
|
|
//workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 2);
|
|
|
|
|
//workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion 连廊料箱在计量室连廊移栽处理流程:wcs读RFID判断是否空箱,空箱下plc信号旋转,非空箱通知plc上提升机计量室
|
|
|
|
|
|
|
|
|
|
#region 色粉存放点空托盘派送至2#接驳位-----暂时不使用
|
|
|
|
|
|
|
|
|
|
/////如果色粉存放点可用空库位小于等于2个,并且有空托盘在库位,判断2#缓存链条线库存(容量3)低于2个,并且无 从3#接驳位到2#接驳位的送料任务或 色粉存放点到2#缓存链条线任务,
|
|
|
|
|
/////2.生成色粉存放点到2#缓存链条线任务
|
|
|
|
|
//int canUseAmount = sqlSugarClient.Queryable<WcsBaseEquip>().Count(it => it.EquipType == 7 && it.EquipStatus == 0 && string.IsNullOrEmpty(it.ContainerCode));
|
|
|
|
|
////判断色粉存放处是否有空托盘
|
|
|
|
|
//WcsBaseEquip? startEquip = sqlSugarClient.Queryable<WcsBaseEquip>().InnerJoin<WmsPalletInfo>(
|
|
|
|
|
// (wbe, wpi) => wbe.ContainerCode == wpi.PalletInfoCode && wpi.Amount == 0 && wbe.EquipStatus == 0)
|
|
|
|
|
// .Where(wbe => wbe.EquipType == 7 && !string.IsNullOrEmpty(wbe.ContainerCode)).First();
|
|
|
|
|
//if (canUseAmount < 2 && startEquip != null)
|
|
|
|
|
//{
|
|
|
|
|
// int cacheLineAmount = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#缓存链条线库存数"));
|
|
|
|
|
// bool hasTask = sqlSugarClient.Queryable<WcsTask>().Any(it => it.TaskType == StaticTaskType.EmptyReturnFromTonerTask || it.TaskType == StaticTaskType.TransferMaterialMetrologyRoomBoxTask);
|
|
|
|
|
// if (cacheLineAmount < 2 && !hasTask)
|
|
|
|
|
// {
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// sqlSugarClient.AsTenant().BeginTran();
|
|
|
|
|
// WcsTask task = new WcsTask();
|
|
|
|
|
// task.TaskType = StaticTaskType.EmptyReturnFromTonerTask;
|
|
|
|
|
// task.CurrPointNo = startEquip.AgvPositionCode;
|
|
|
|
|
// task.EndPointNo = "2DeliverMetrologyRoomPoint";
|
|
|
|
|
// task.TaskStatus = 0;
|
|
|
|
|
// task.CreatedTime = DateTime.Now;
|
|
|
|
|
// task.CreatedBy = "wcs";
|
|
|
|
|
// task.TaskName = "色粉存放点空托盘派送至2#接驳位";
|
|
|
|
|
// task.PalletInfoCode = startEquip.ContainerCode;
|
|
|
|
|
// int id = sqlSugarClient.Insertable(task).ExecuteReturnIdentity();
|
|
|
|
|
// WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(task);
|
|
|
|
|
// wcsTaskLog.Id = id;
|
|
|
|
|
// startEquip.EquipStatus = 1;
|
|
|
|
|
// sqlSugarClient.Updateable(startEquip).ExecuteCommand();
|
|
|
|
|
// sqlSugarClient.Insertable(wcsTaskLog).ExecuteCommand();
|
|
|
|
|
// sqlSugarClient.AsTenant().CommitTran();
|
|
|
|
|
// _logger.Agv($"生成{task.TaskName},起点:{task.CurrPointNo},终点:{task.EndPointNo}");
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
// {
|
|
|
|
|
// sqlSugarClient.AsTenant().RollbackTran();
|
|
|
|
|
// _logger.Error($"色粉存放点空托盘派送至2#接驳位任务提交事务异常{ex.Message}");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
#endregion 色粉存放点空托盘派送至2#接驳位-----暂时不使用
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
|
|
|
|
#endregion 计量室料箱返回处理流程:空箱入缓存链条线,色粉派送至色粉存放点
|
|
|
|
|
|
|
|
|
|
#region 连廊料箱在计量室连廊移栽处理流程:wcs读RFID判断是否空箱,空箱下plc信号旋转,非空箱通知plc上提升机计量室
|
|
|
|
|
|
|
|
|
|
if (workShop2Plc != null && workShop2Plc.IsConnected)
|
|
|
|
|
{
|
|
|
|
|
_logger.Error($"ListeningWorkShop2TransplantingMachine方法异常:" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
await Task.Delay(1000 * 2);
|
|
|
|
|
bool returnJudgeSignal = workShop2Plc.readBoolByAddress(StaticData.GetPlcAddress("2#料箱运进计量室RFID读取"));
|
|
|
|
|
int busy1Flag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("1#提升机忙碌状态"));
|
|
|
|
|
if (returnJudgeSignal && busy1Flag == 0)
|
|
|
|
|
{
|
|
|
|
|
//test
|
|
|
|
|
|
|
|
|
|
string rfid = ReadEpcStrByRfidKey("1#MetrologyRoom");
|
|
|
|
|
if (string.IsNullOrEmpty(rfid))
|
|
|
|
|
{
|
|
|
|
|
rfid = ReadEpcStrByRfidKey("1#MetrologyRoom");
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(rfid))
|
|
|
|
|
{
|
|
|
|
|
// 判断有无料, 如果没有料,wcs下发空箱旋转信号,有料,通知plc上提升机计量室
|
|
|
|
|
WmsPalletInfo? wmsPalletInfo = sqlSugarClient.Queryable<WmsPalletInfo>().First(it => it.PalletInfoCode == rfid);
|
|
|
|
|
if (wmsPalletInfo != null && wmsPalletInfo.Amount > 0 && wmsPalletInfo.TonerFlag == 1) //携带色粉
|
|
|
|
|
{
|
|
|
|
|
//2空箱转运
|
|
|
|
|
_logger.Info($"1#移栽===={rfid}携带色粉,空箱转运");
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("1#移栽平台任务"), 2);
|
|
|
|
|
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运进计量室RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
if (wmsPalletInfo != null && wmsPalletInfo.Amount > 0 && wmsPalletInfo.TonerFlag == 0) //携带满料
|
|
|
|
|
{
|
|
|
|
|
//1#移栽平台任务(1上提升机,2空箱转运)
|
|
|
|
|
_logger.Info($"1#移栽===={rfid}携带满料,去提升机计量室");
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("1#移栽平台任务"), 1);
|
|
|
|
|
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运进计量室RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
else if (wmsPalletInfo != null && wmsPalletInfo.Amount == 0)
|
|
|
|
|
{
|
|
|
|
|
//1#移栽平台任务(1上提升机,2空箱转运)
|
|
|
|
|
_logger.Info($"1#移栽===={rfid}空箱,空箱转运");
|
|
|
|
|
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("1#移栽平台任务"), 2);
|
|
|
|
|
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运进计量室RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//没读到,当成空箱子旋转一圈
|
|
|
|
|
//1#移栽平台任务(1上提升机,2空箱转运)
|
|
|
|
|
// _logger.Info($"1#移栽====没读到,空箱转运");
|
|
|
|
|
//workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("1#移栽平台任务"), 2);
|
|
|
|
|
//workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运进计量室RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion 连廊料箱在计量室连廊移栽处理流程:wcs读RFID判断是否空箱,空箱下plc信号旋转,非空箱通知plc上提升机计量室
|
|
|
|
|
|
|
|
|
|
#region 色粉存放点空托盘派送至2#接驳位-----暂时不使用
|
|
|
|
|
|
|
|
|
|
/////如果色粉存放点可用空库位小于等于2个,并且有空托盘在库位,判断2#缓存链条线库存(容量3)低于2个,并且无 从3#接驳位到2#接驳位的送料任务或 色粉存放点到2#缓存链条线任务,
|
|
|
|
|
/////2.生成色粉存放点到2#缓存链条线任务
|
|
|
|
|
//int canUseAmount = sqlSugarClient.Queryable<WcsBaseEquip>().Count(it => it.EquipType == 7 && it.EquipStatus == 0 && string.IsNullOrEmpty(it.ContainerCode));
|
|
|
|
|
////判断色粉存放处是否有空托盘
|
|
|
|
|
//WcsBaseEquip? startEquip = sqlSugarClient.Queryable<WcsBaseEquip>().InnerJoin<WmsPalletInfo>(
|
|
|
|
|
// (wbe, wpi) => wbe.ContainerCode == wpi.PalletInfoCode && wpi.Amount == 0 && wbe.EquipStatus == 0)
|
|
|
|
|
// .Where(wbe => wbe.EquipType == 7 && !string.IsNullOrEmpty(wbe.ContainerCode)).First();
|
|
|
|
|
//if (canUseAmount < 2 && startEquip != null)
|
|
|
|
|
//{
|
|
|
|
|
// int cacheLineAmount = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#缓存链条线库存数"));
|
|
|
|
|
// bool hasTask = sqlSugarClient.Queryable<WcsTask>().Any(it => it.TaskType == StaticTaskType.EmptyReturnFromTonerTask || it.TaskType == StaticTaskType.TransferMaterialMetrologyRoomBoxTask);
|
|
|
|
|
// if (cacheLineAmount < 2 && !hasTask)
|
|
|
|
|
// {
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// sqlSugarClient.AsTenant().BeginTran();
|
|
|
|
|
// WcsTask task = new WcsTask();
|
|
|
|
|
// task.TaskType = StaticTaskType.EmptyReturnFromTonerTask;
|
|
|
|
|
// task.CurrPointNo = startEquip.AgvPositionCode;
|
|
|
|
|
// task.EndPointNo = "2DeliverMetrologyRoomPoint";
|
|
|
|
|
// task.TaskStatus = 0;
|
|
|
|
|
// task.CreatedTime = DateTime.Now;
|
|
|
|
|
// task.CreatedBy = "wcs";
|
|
|
|
|
// task.TaskName = "色粉存放点空托盘派送至2#接驳位";
|
|
|
|
|
// task.PalletInfoCode = startEquip.ContainerCode;
|
|
|
|
|
// int id = sqlSugarClient.Insertable(task).ExecuteReturnIdentity();
|
|
|
|
|
// WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(task);
|
|
|
|
|
// wcsTaskLog.Id = id;
|
|
|
|
|
// startEquip.EquipStatus = 1;
|
|
|
|
|
// sqlSugarClient.Updateable(startEquip).ExecuteCommand();
|
|
|
|
|
// sqlSugarClient.Insertable(wcsTaskLog).ExecuteCommand();
|
|
|
|
|
// sqlSugarClient.AsTenant().CommitTran();
|
|
|
|
|
// _logger.Agv($"生成{task.TaskName},起点:{task.CurrPointNo},终点:{task.EndPointNo}");
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
// {
|
|
|
|
|
// sqlSugarClient.AsTenant().RollbackTran();
|
|
|
|
|
// _logger.Error($"色粉存放点空托盘派送至2#接驳位任务提交事务异常{ex.Message}");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
#endregion 色粉存放点空托盘派送至2#接驳位-----暂时不使用
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.Error($"ListeningWorkShop2TransplantingMachine方法异常:" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(1000 * 2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 任务流程
|
|
|
|
|
|