|
|
|
|
@ -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>
|
|
|
|
|
@ -135,8 +138,6 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
/// 监听2#计量室旋转移栽plc信号,处理连廊箱体旋转相关流程
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void ListeningWorkShop2TransplantingMachine()
|
|
|
|
|
{
|
|
|
|
|
Task.Run(async () =>
|
|
|
|
|
{
|
|
|
|
|
while (true)
|
|
|
|
|
{
|
|
|
|
|
@ -152,7 +153,6 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
//2#接驳位色粉派送至色粉存放点任务
|
|
|
|
|
if (workShop2Plc != null && workShop2Plc.IsConnected)
|
|
|
|
|
{
|
|
|
|
|
_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#缓存链条线库存数"));
|
|
|
|
|
@ -160,15 +160,17 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
bool anyTonerPallet = HasAnyTonerInLine();
|
|
|
|
|
if (returnJudgeSignal && busy2Flag == 0 && (Amount < 3 || anyTonerPallet))
|
|
|
|
|
{
|
|
|
|
|
string rfid = await ReadEpcStrByRfidKeyAsync("2#Transplant");
|
|
|
|
|
string rfid = ReadEpcStrByRfidKey("2#Transplant");
|
|
|
|
|
if (string.IsNullOrEmpty(rfid))
|
|
|
|
|
{//二次读取
|
|
|
|
|
rfid = await ReadEpcStrByRfidKeyAsync("2#Transplant");
|
|
|
|
|
rfid = ReadEpcStrByRfidKey("2#Transplant");
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(rfid))
|
|
|
|
|
{
|
|
|
|
|
//让其他线程
|
|
|
|
|
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,15 +217,18 @@ 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空箱转运
|
|
|
|
|
// _logger.Info($"1#移栽====没读到,空箱转运");
|
|
|
|
|
//workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
|
|
|
|
|
//workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 2);
|
|
|
|
|
//workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false);
|
|
|
|
|
@ -233,31 +242,39 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
//test
|
|
|
|
|
|
|
|
|
|
string rfid = await ReadEpcStrByRfidKeyAsync("1#MetrologyRoom");
|
|
|
|
|
string rfid = ReadEpcStrByRfidKey("1#MetrologyRoom");
|
|
|
|
|
if (string.IsNullOrEmpty(rfid))
|
|
|
|
|
{
|
|
|
|
|
rfid = await ReadEpcStrByRfidKeyAsync("1#MetrologyRoom");
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
@ -266,6 +283,7 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
{
|
|
|
|
|
//没读到,当成空箱子旋转一圈
|
|
|
|
|
//1#移栽平台任务(1上提升机,2空箱转运)
|
|
|
|
|
// _logger.Info($"1#移栽====没读到,空箱转运");
|
|
|
|
|
//workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("1#移栽平台任务"), 2);
|
|
|
|
|
//workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运进计量室RFID读取"), false);
|
|
|
|
|
}
|
|
|
|
|
@ -326,10 +344,9 @@ namespace SlnMesnac.WCS.WCS
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
await Task.Delay(1000 * 2);
|
|
|
|
|
Thread.Sleep(1000 * 2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 任务流程
|
|
|
|
|
|