|
@@ -28,25 +28,20 @@ namespace WCS.Service.Works.Stations
|
|
|
var station = dev.Entity.CODE;
|
|
|
|
|
|
short outTemp = 0, inTemp = 0;
|
|
|
- bool flag = false;
|
|
|
+
|
|
|
Device<IStation521, IStation520>[] arr = null;
|
|
|
|
|
|
string trafficControl = "";
|
|
|
|
|
|
outTemp = 3001;
|
|
|
inTemp = 3006;
|
|
|
- trafficControl = "3012-3060-3005-3004";
|
|
|
- arr = Device.Find("3012", "3060", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
|
|
|
- var rgv = Device.Find("RGV8").Device<IRGV521, IRGV520>();
|
|
|
- if (rgv.Data2.Trigger != 0) throw new Exception("RGV8任务触发中");
|
|
|
- if (rgv.Data.DestPosition == 3060 && rgv.Data.SystemStatus != RGVRunStatus.空闲) flag = true;
|
|
|
+ trafficControl = "3060-3005-3004";
|
|
|
+ arr = Device.Find("3060", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
|
|
|
|
|
|
if (arr.Any(v => v.Data2.CONFIRM)) throw new Exception($"设备集[{trafficControl}]存在确认信号,请检查是否为异常状况");
|
|
|
-
|
|
|
- flag = arr.Where(v => v.Data.GOODSEND == outTemp).Any() || flag;
|
|
|
-
|
|
|
var nextcode = next.Code();
|
|
|
- if (flag) nextcode = inTemp;
|
|
|
+
|
|
|
+ if (arr.Where(v => v.Data.GOODSEND == outTemp || (v.Entity.CODE == "3060" && v.Data.PH_STATUS && v.Data.GOODSEND == 0)).Any()) nextcode = inTemp;
|
|
|
|
|
|
DB.Do(db =>
|
|
|
{
|
|
@@ -117,14 +112,10 @@ namespace WCS.Service.Works.Stations
|
|
|
outTemp = 3001;
|
|
|
inTemp = 3006;
|
|
|
addrTo = 3001;
|
|
|
- arr = Device.Find("3060", "3005", "3004", "3001", "3012").Select(v => v.Device<IStation521, IStation520>()).ToArray();
|
|
|
-
|
|
|
- var rgv = Device.Find("RGV8").Device<IRGV521, IRGV520>();
|
|
|
- if (rgv.Data2.Trigger != 0) throw new Exception("RGV8任务触发中");
|
|
|
- if (rgv.Data.DestPosition == 3060 && rgv.Data.SystemStatus != RGVRunStatus.空闲 && rgv.Data.PH_Status) throw new Exception("交通管制,RGV8正在出库");
|
|
|
+ arr = Device.Find("3060", "3005", "3004", "3001").Select(v => v.Device<IStation521, IStation520>()).ToArray();
|
|
|
|
|
|
- if (Ltc.Do(dev, v => v.Data.GOODSEND != inTemp))
|
|
|
- return;
|
|
|
+ if (Ltc.Do(dev, v => v.Data.GOODSEND != inTemp)) return;
|
|
|
+
|
|
|
|
|
|
var inTempDev = Device.Find(inTemp.ToString()).Device<IStation521>();
|
|
|
if (inTempDev.Data.TASKNUM < 10000)
|
|
@@ -132,11 +123,9 @@ namespace WCS.Service.Works.Stations
|
|
|
|
|
|
if (!inTempDev.Data.PH_STATUS)
|
|
|
return;
|
|
|
-
|
|
|
+
|
|
|
//if (arr.Any(v => v.Data.TASKNUM > 10000 && v.Data.GOODSEND == 3001 ||v.Data.GOODSEND ==3060))
|
|
|
// return;
|
|
|
-
|
|
|
-
|
|
|
|
|
|
if (arr.Any(v => v.Data2.CONFIRM))
|
|
|
return;
|
|
@@ -144,13 +133,11 @@ namespace WCS.Service.Works.Stations
|
|
|
var toDev = Device.Find(addrTo.ToString()).Device<IStation521>();
|
|
|
if (toDev.Data.PH_STATUS)
|
|
|
{
|
|
|
- if (toDev.Data.TASKNUM < 10000)
|
|
|
- return;
|
|
|
- if (toDev.Data.GOODSEND != toDev.Entity.Code())
|
|
|
- return;
|
|
|
+ if (toDev.Data.TASKNUM < 10000)return;
|
|
|
+ if (toDev.Data.GOODSEND != toDev.Entity.Code() ) return;
|
|
|
}
|
|
|
|
|
|
- if (arr.Where(v => v.Data.GOODSEND == outTemp || v.Data.GOODSEND == addrTo).Any())
|
|
|
+ if (arr.Where(v => v.Data.GOODSEND == outTemp || (v.Entity.CODE == "3060" && v.Data.PH_STATUS && v.Data.GOODSEND == 0)).Any())
|
|
|
throw new Exception("交通管制");
|
|
|
|
|
|
var station = dev.Entity.CODE;
|
|
@@ -180,4 +167,32 @@ namespace WCS.Service.Works.Stations
|
|
|
return new string[] { "3006" }.Contains(dev.CODE);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ [WorkTitle(typeof(ProductHandler), "_22车间入库缓存", true)]
|
|
|
+ public class 出库放行 : DeviceWork<Device<IStation521, IStation520>>
|
|
|
+ {
|
|
|
+ protected override void Do(Device<IStation521, IStation520> dev)
|
|
|
+ {
|
|
|
+ if (Ltc.Do(dev, v => v.Data2.CONFIRM == true)) return;
|
|
|
+ if (Ltc.Do(dev, v => v.Data.TASKNUM == 0)) return;
|
|
|
+ if (Ltc.Do(dev, v => v.Data.PH_STATUS == false)) return;
|
|
|
+
|
|
|
+ // 没有准备放货的入库任务
|
|
|
+ DB.Do(db =>
|
|
|
+ {
|
|
|
+ var agvtask = db.Default.Set<WCS_AGVTask>().Where(v => v.Status < AGVTaskStatus.完成)
|
|
|
+ .Where(v => v.Status != AGVTaskStatus.新建 || v.Status == AGVTaskStatus.执行);
|
|
|
+ if (agvtask.Any()) return;
|
|
|
+ });
|
|
|
+
|
|
|
+ dev.Data2.TASKNUM = dev.Data.TASKNUM;
|
|
|
+ dev.Data2.GOODSEND = 3001;
|
|
|
+ dev.Data2.CONFIRM = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override bool SelectDevice(WCS_DEVICE dev)
|
|
|
+ {
|
|
|
+ return new string[] { "3060" }.Contains(dev.CODE);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|