add-优化速度:根据2#提升机所在楼层,优先下发对应楼层的补空箱或者送满料任务

master
liuwf 7 months ago
parent 5efe8b388d
commit d5be7cfb83

@ -507,14 +507,20 @@ namespace SlnMesnac.WCS.WCS
if (busyFlag == 0) if (busyFlag == 0)
{ {
int amount = sqlSugarClient.Queryable<WcsTask>().Where(x => x.TaskType == StaticTaskType.TransferMaterialMetrologyRoomBoxTask).Count(); int amount = sqlSugarClient.Queryable<WcsTask>().Where(x => x.TaskType == StaticTaskType.TransferMaterialMetrologyRoomBoxTask).Count();
if (amount < 2)
{ int hoistFloor = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#提升机当前层"));
Thread.Sleep(3500); if (hoistFloor == 2) //如果提升机正好在2楼
}
else //优先级最高释放掉一个agv
{ {
Thread.Sleep(300); Thread.Sleep(300);
} }
else if (amount < 2) //如果只有一个agv送料任务
{
Thread.Sleep(2500);
}
else if (amount == 2)
{//如果有两个以上agv送料任务释放掉一个agv
Thread.Sleep(500);
}
int work2LineBusyFlag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#缓存空箱线体状态")); int work2LineBusyFlag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#缓存空箱线体状态"));
busyFlag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态")); busyFlag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"));
if (busyFlag == 0 && work2LineBusyFlag == 0) if (busyFlag == 0 && work2LineBusyFlag == 0)

@ -167,13 +167,14 @@ namespace SlnMesnac.WCS.WCS
} }
if (!string.IsNullOrEmpty(rfid)) if (!string.IsNullOrEmpty(rfid))
{ {
if (Amount < 3) int hoistFloor = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#提升机当前层"));
if (Amount < 3 && hoistFloor == 1) //如果提升机正好在1楼
{ {
Thread.Sleep(2000); Thread.Sleep(300);
} }
else if (anyTonerPallet) //有色粉空转 else if (anyTonerPallet) //有色粉空转
{ {
Thread.Sleep(4500); Thread.Sleep(3500);
} }
busy2Flag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态")); busy2Flag = workShop2Plc.readInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"));
@ -185,12 +186,12 @@ namespace SlnMesnac.WCS.WCS
{ {
//注意plc上旋转移栽必须锁住线体状态才可以2#接驳位如果有满料那么通知plc信号plc在连廊不再把箱体放到旋转移栽上 //注意plc上旋转移栽必须锁住线体状态才可以2#接驳位如果有满料那么通知plc信号plc在连廊不再把箱体放到旋转移栽上
//调度系统结合上面缓存链条线库存如果上面低于3那么空箱可以上来缓存线 //调度系统结合上面缓存链条线库存如果上面低于3那么空箱可以上来缓存线
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
bool createResult = CreateDeliverTonerTask(rfid); bool createResult = CreateDeliverTonerTask(rfid);
if (createResult) if (createResult)
{ {
//3色粉上提升机移栽等待 //3色粉上提升机移栽等待
_logger.Info($"2#移栽===={rfid}携带色粉去往色粉库位"); _logger.Info($"2#移栽===={rfid}携带色粉去往色粉库位");
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 3); workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 3);
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false); workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false);
} }
@ -198,7 +199,6 @@ namespace SlnMesnac.WCS.WCS
{ //色粉库位无空闲位置,空转一圈 { //色粉库位无空闲位置,空转一圈
//2空箱转运 //2空箱转运
_logger.Info($"2#移栽===={rfid}携带色粉,色粉库位无空闲位置,空转一圈"); _logger.Info($"2#移栽===={rfid}携带色粉,色粉库位无空闲位置,空转一圈");
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#线体忙碌状态"), 1);
workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 2); workShop2Plc.writeInt16ByAddress(StaticData.GetPlcAddress("2#移栽平台任务"), 2);
workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false); workShop2Plc.writeBoolByAddress(StaticData.GetPlcAddress("2#料箱运回RFID读取"), false);
} }

Loading…
Cancel
Save