Administrator 2 years ago
parent
commit
fd107530a4

+ 134 - 95
Projects/永冠/WCS.Service/Works/RGV/RGVWork.cs

@@ -444,6 +444,8 @@ namespace WCS.Service.Works
                     if (Ltc.Do(dev, v => v.Data.WorkMode != RGVMode.自动)) return;
                     if (Ltc.Do(dev, v => v.Data.SystemStatus != RGVRunStatus.空闲)) return;
 
+                    if (Ltc.Do(dev, v => v.Data2.Trigger_2 != 0)) return;
+
                     //执行任务之前优先处理缓存位上的任务 出:3028、3012   入:3019、3033
                     //有入库的先执行入库,做出库要判断是否有入库               
                     var inPort = Device.Find("3019", "3033").Select(v => v.Device<IStation521, IStation520>());
@@ -469,10 +471,11 @@ namespace WCS.Service.Works
                         var inPos = Device.Find("3001", "3004", "3005", "3060").Select(v => v.Device<IStation521, IStation520>());
                         if (inPos.Any(v => v.Data2.CONFIRM == true || (v.Data.PH_STATUS && v.Data.TASKNUM > 0 && (v.Data.GOODSEND is 0 or 1 or 2 or 3 or 3060)))) doOut = false;
                     });
+                    bool noPhstatus = Ltc.Do(dev, v => v.Data.PH_Status_2 == false);
 
                     if (inPort.Any(v => v.Data.PH_STATUS && v.Data.TASKNUM > 0 && !station_3041.Data.PH_STATUS && station_3041.Data.TASKNUM == 0))
                     {
-                        if (station_3033.Data.PH_STATUS && station_3033.Data.TASKNUM > 0)
+                        if (station_3033.Data.PH_STATUS && station_3033.Data.TASKNUM > 0 && noPhstatus)
                         {
                             if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
                             DB.Do(db =>
@@ -484,12 +487,16 @@ namespace WCS.Service.Works
                                 task.UPDATETIME = DateTime.Now;
                                 db.Default.SaveChanges();
                             });
+                            station_3033.Data2.GOODSEND = 3041;
+                            station_3033.Data2.CONFIRM = true;
+
                             dev.Data2.TaskID_2 = station_3033.Data.TASKNUM;
-                            dev.Data2.StartPosition_2 = 3033;
-                            dev.Data2.DestPosition_2 = 3041;
+                            dev.Data2.TaskType_2 = Convert.ToInt16(DRGVTaskType.取货);
+                            dev.Data2.StartPosition_2 = 3041;
+                            dev.Data2.DestPosition_2 = 3033;
                             dev.Data2.Trigger_2 = 1;
                         }
-                        else if (station_3019.Data.PH_STATUS && station_3019.Data.TASKNUM > 0)
+                        else if (station_3019.Data.PH_STATUS && station_3019.Data.TASKNUM > 0 && noPhstatus)
                         {
                             if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
                             DB.Do(db =>
@@ -501,15 +508,19 @@ namespace WCS.Service.Works
                                 task.UPDATETIME = DateTime.Now;
                                 db.Default.SaveChanges();
                             });
+                            station_3019.Data2.GOODSEND = 3041;
+                            station_3019.Data2.CONFIRM = true;
+
                             dev.Data2.TaskID_2 = station_3019.Data.TASKNUM;
-                            dev.Data2.StartPosition_2 = 3019;
-                            dev.Data2.DestPosition_2 = 3041;
+                            dev.Data2.TaskType_2 = Convert.ToInt16(DRGVTaskType.取货);
+                            dev.Data2.StartPosition_2 = 3041;
+                            dev.Data2.DestPosition_2 = 3019;
                             dev.Data2.Trigger_2 = 1;
                         }
                     }
                     else if (outPort.Any(v => v.Data.PH_STATUS && v.Data.TASKNUM > 0) && doOut && !station_3060.Data.PH_STATUS && station_3060.Data.TASKNUM == 0)
                     {
-                        if (station_3012.Data.PH_STATUS && station_3012.Data.TASKNUM > 0)
+                        if (station_3012.Data.PH_STATUS && station_3012.Data.TASKNUM > 0 && noPhstatus)
                         {
                             if (station_3060.Data.PH_STATUS || station_3060.Data.TASKNUM > 10000) return;
                             var arr = Device.Find("3006", "3060", "3001", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
@@ -533,12 +544,13 @@ namespace WCS.Service.Works
                                     station_3012.Data2.CONFIRM = true;
                                 });
                             }
-                            dev.Data2.TaskID_1 = station_3012.Data.TASKNUM;
-                            dev.Data2.StartPosition_1 = 3012;
-                            dev.Data2.DestPosition_1 = 3060;
-                            dev.Data2.Trigger_1 = 1;
+                            dev.Data2.TaskID_2 = station_3012.Data.TASKNUM;
+                            dev.Data2.TaskType_2 = Convert.ToInt16(DRGVTaskType.取货);
+                            dev.Data2.StartPosition_2 = 3060;
+                            dev.Data2.DestPosition_2 = 3012;
+                            dev.Data2.Trigger_2 = 1;
                         }
-                        else if (station_3028.Data.PH_STATUS && station_3028.Data.TASKNUM > 0)
+                        else if (station_3028.Data.PH_STATUS && station_3028.Data.TASKNUM > 0 && noPhstatus)
                         {
                             if (station_3060.Data.PH_STATUS || station_3060.Data.TASKNUM > 10000) return;
                             var arr = Device.Find("3006", "3060", "3001", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
@@ -561,10 +573,11 @@ namespace WCS.Service.Works
                                     station_3028.Data2.CONFIRM = true;
                                 });
                             }
-                            dev.Data2.TaskID_1 = station_3028.Data.TASKNUM;
-                            dev.Data2.StartPosition_1 = 3028;
-                            dev.Data2.DestPosition_1 = 3060;
-                            dev.Data2.Trigger_1 = 1;
+                            dev.Data2.TaskID_2 = station_3028.Data.TASKNUM;
+                            dev.Data2.TaskType_2 = Convert.ToInt16(DRGVTaskType.取货);
+                            dev.Data2.StartPosition_2 = 3060;
+                            dev.Data2.DestPosition_2 = 3028;
+                            dev.Data2.Trigger_2 = 1;
                         }
                     }
 
@@ -584,8 +597,8 @@ namespace WCS.Service.Works
                             //TODO:放货站点有货检查
                             dev.Data2.TaskID_1 = dev.Data.TaskID_1;
                             dev.Data2.TaskType_1 = Convert.ToInt16(DRGVTaskType.放货);
-                            dev.Data2.DestPosition_1 = dev.Data2.DestPosition_1;
-                            dev.Data.RES = dev.Data2.DestPosition_1; ;
+                            dev.Data2.DestPosition_1 = dev.Data2.StartPosition_1;
+                            dev.Data.RES = dev.Data2.DestPosition_1;
                             dev.Data2.Trigger_1 = 1;
                         }
                         else if (dev.Data.PH_Status_2 && dev.Data.TaskType_2 != DRGVTaskType.放货)//工位二需要放货
@@ -599,7 +612,7 @@ namespace WCS.Service.Works
                             //TODO:放货站点有货检查
                             dev.Data2.TaskID_2 = dev.Data.TaskID_2;
                             dev.Data2.TaskType_2 = Convert.ToInt16(DRGVTaskType.放货);
-                            dev.Data2.DestPosition_2 = dev.Data2.DestPosition_2;                       
+                            dev.Data2.DestPosition_2 = dev.Data2.StartPosition_2;                       
                             dev.Data.RES = dev.Data2.DestPosition_2;
                             dev.Data2.Trigger_2 = 1;
                         }
@@ -611,13 +624,37 @@ namespace WCS.Service.Works
                     DB.Do(db =>
                     {
                         //判断是否可以分配RGV出库任务
-                        isOK = !db.Default.Set<WCS_AGVTask>().Any(v => v.TaskType == AGVTaskType.入库 && v.Status <= AGVTaskStatus.完成 && v.Status >= AGVTaskStatus.确认 && v.Status != AGVTaskStatus.执行 && v.Station == "3001");
+                        isOK = !db.Default.Set<WCS_AGVTask>().Any(v => v.TaskType == AGVTaskType.入库 && v.Status <= AGVTaskStatus.完成 && v.Status > AGVTaskStatus.确认 && v.Status != AGVTaskStatus.执行 && v.Station == "3001");
                         var inArr = Device.Find("3001", "3004", "3005", "3006").Select(v => v.Device<IStation521, IStation520>());
                         if (inArr.Any(v => v.Data2.CONFIRM == true || (v.Data.PH_STATUS && v.Data.TASKNUM > 0 && (v.Data.GOODSEND is 0 or 1 or 2 or 3 or 3060)))) isOK = false;
                     });
                   
                     #region 取货任务
-                    if (station_3040.Data.PH_STATUS && station_3040.Data.GOODSEND == 3040 && station_3040.Data.TASKNUM > 10000 && isOK)
+                    
+                    if (station_3060.Data.PH_STATUS && station_3060.Data.GOODSTYPE==1 && station_3060.Data.TASKNUM > 10000 && noPhstatus)
+                    {
+                        if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
+                        DB.Do(db =>
+                        {
+                            var task = db.Default.Set<WCS_TASK>().Find(station_3060.Data.TASKNUM);
+                            if (task == null)
+                                throw new Exception($"任务号{station_3060.Data.TASKNUM}不存在");
+                            task.ADDRNEXT = "3041";
+                            task.ADDRTO = "2017";
+                            task.UPDATETIME = DateTime.Now;
+                            db.Default.SaveChanges();
+
+                            station_3060.Data2.GOODSEND = 3041;
+                            station_3060.Data2.GOODSTYPE = 1;
+                            station_3060.Data2.CONFIRM = true;
+                        });
+                        dev.Data2.TaskID_2 = station_3060.Data.TASKNUM;
+                        dev.Data2.TaskType_2 = Convert.ToInt16(DRGVTaskType.取货);
+                        dev.Data2.StartPosition_2 = 3041;
+                        dev.Data2.DestPosition_2 = 3060;
+                        dev.Data2.Trigger_2 = 1;
+                    }
+                    else if (station_3040.Data.PH_STATUS && station_3040.Data.GOODSEND == 3040 && station_3040.Data.TASKNUM > 10000 && isOK && noPhstatus)
                     {
                         short outTemp = 3060;
                         var arr = Device.Find("3006", "3060", "3001", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
@@ -638,31 +675,13 @@ namespace WCS.Service.Works
                                 station_3040.Data2.GOODSTYPE = 2;
                                 station_3040.Data2.CONFIRM = true;
                             });
-                            dev.Data2.TaskID_1 = station_3040.Data.TASKNUM;
-                            dev.Data2.TaskType_1 = Convert.ToInt16(DRGVTaskType.取货);
-                            dev.Data2.StartPosition_1 = 3040;
-                            dev.Data2.DestPosition_1 = 3060;
-                            dev.Data2.Trigger_1 = 1;
+                            dev.Data2.TaskID_2 = station_3040.Data.TASKNUM;
+                            dev.Data2.TaskType_2 = Convert.ToInt16(DRGVTaskType.取货);
+                            dev.Data2.StartPosition_2 = 3060;
+                            dev.Data2.DestPosition_2 = 3040;
+                            dev.Data2.Trigger_2 = 1;
                         }
                     }
-                    else if (station_3060.Data.PH_STATUS && station_3060.Data.GOODSEND == 3060 && station_3060.Data.TASKNUM > 10000)
-                    {
-                        if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
-                        DB.Do(db =>
-                        {
-                            var task = db.Default.Set<WCS_TASK>().Find(station_3060.Data.TASKNUM);
-                            if (task == null)
-                                throw new Exception($"任务号{station_3060.Data.TASKNUM}不存在");
-                            task.ADDRNEXT = "3041";
-                            task.ADDRTO = "2017";
-                            task.UPDATETIME = DateTime.Now;
-                            db.Default.SaveChanges();                          
-                        });
-                        dev.Data2.TaskID_2 = station_3060.Data.TASKNUM;
-                        dev.Data2.StartPosition_2 = 3060;
-                        dev.Data2.DestPosition_2 = 3041;
-                        dev.Data2.Trigger_2 = 1;
-                    }
                     #endregion
                 }
             }
@@ -855,10 +874,11 @@ namespace WCS.Service.Works
                     var inPos = Device.Find("3001", "3004", "3005", "3060").Select(v => v.Device<IStation521, IStation520>());
                     if (inPos.Any(v => v.Data2.CONFIRM == true || (v.Data.PH_STATUS && v.Data.TASKNUM > 0 && (v.Data.GOODSEND is 0 or 1 or 2 or 3 or 3060)))) doOut = false;
                 });
+                bool noPhstatus = Ltc.Do(dev, v => v.Data.PH_Status == false);
 
                 if (inPort.Any(v => v.Data.PH_STATUS && v.Data.TASKNUM > 0 && !station_3041.Data.PH_STATUS && station_3041.Data.TASKNUM == 0))
                 {
-                    if (station_3019.Data.PH_STATUS && station_3019.Data.TASKNUM > 0)
+                    if (station_3019.Data.PH_STATUS && station_3019.Data.TASKNUM > 0 && noPhstatus)
                     {
                         if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
                         DB.Do(db =>
@@ -870,12 +890,15 @@ namespace WCS.Service.Works
                             task.UPDATETIME = DateTime.Now;
                             db.Default.SaveChanges();
                         });
+
+                        station_3019.Data2.GOODSEND = 3041;
+                        station_3019.Data2.CONFIRM = true;
                         dev.Data2.TaskID = station_3019.Data.TASKNUM;
                         dev.Data2.StartPosition = 3019;
                         dev.Data2.DestPosition = 3041;
                         dev.Data2.Trigger = 1;
                     }
-                    else if (station_3033.Data.PH_STATUS && station_3033.Data.TASKNUM > 0)
+                    else if (station_3033.Data.PH_STATUS && station_3033.Data.TASKNUM > 0 && noPhstatus)
                     {
                         if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
                         DB.Do(db =>
@@ -887,6 +910,9 @@ namespace WCS.Service.Works
                             task.UPDATETIME = DateTime.Now;
                             db.Default.SaveChanges();
                         });
+
+                        station_3033.Data2.GOODSEND = 3041;
+                        station_3033.Data2.CONFIRM = true;
                         dev.Data2.TaskID = station_3033.Data.TASKNUM;
                         dev.Data2.StartPosition = 3033;
                         dev.Data2.DestPosition = 3041;
@@ -895,7 +921,7 @@ namespace WCS.Service.Works
                 }
                 else if (outPort.Any(v => v.Data.PH_STATUS && v.Data.TASKNUM > 0) && doOut && !station_3060.Data.PH_STATUS && station_3060.Data.TASKNUM == 0)
                 {
-                    if (station_3012.Data.PH_STATUS && station_3012.Data.TASKNUM > 0)
+                    if (station_3012.Data.PH_STATUS && station_3012.Data.TASKNUM > 0 && noPhstatus)
                     {
                         if (station_3060.Data.PH_STATUS || station_3060.Data.TASKNUM > 10000) return;
                         var arr = Device.Find("3006", "3060", "3001", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
@@ -918,13 +944,13 @@ namespace WCS.Service.Works
                                 station_3012.Data2.GOODSTYPE = 2;
                                 station_3012.Data2.CONFIRM = true;
                             });
-                        }
+                        }                       
                         dev.Data2.TaskID = station_3012.Data.TASKNUM;
                         dev.Data2.StartPosition = 3012;
                         dev.Data2.DestPosition = 3060;
                         dev.Data2.Trigger = 1;
                     }
-                    else if (station_3028.Data.PH_STATUS && station_3028.Data.TASKNUM > 0)
+                    else if (station_3028.Data.PH_STATUS && station_3028.Data.TASKNUM > 0 && noPhstatus)
                     {
                         if (station_3060.Data.PH_STATUS || station_3060.Data.TASKNUM > 10000) return;
                         var arr = Device.Find("3006", "3060", "3001", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
@@ -973,7 +999,30 @@ namespace WCS.Service.Works
                         isOK = true;
                     }
                 });
-                if (isOK && station_3040.Data.PH_STATUS && station_3040.Data.GOODSEND == 3040 && station_3040.Data.TASKNUM > 10000)
+                
+                if (station_3060.Data.PH_STATUS && (station_3060.Data.GOODSEND == 3060 || station_3060.Data.GOODSEND == 3013)&& station_3060.Data.TASKNUM > 10000 && noPhstatus)
+                {
+                    if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
+                    DB.Do(db =>
+                    {
+                        var task = db.Default.Set<WCS_TASK>().Find(station_3060.Data.TASKNUM);
+                        if (task == null)
+                            throw new Exception($"任务号{station_3060.Data.TASKNUM}不存在");
+                        else if (task.TYPE == TaskType.出库 || station_3060.Data.GOODSTYPE == 2) return;
+                        task.ADDRNEXT = "3041";
+                        task.ADDRTO = "2017";
+                        task.UPDATETIME = DateTime.Now;
+                        db.Default.SaveChanges();
+                        station_3060.Data2.GOODSEND = 3041;
+                        station_3060.Data2.GOODSTYPE = 1;
+                        station_3060.Data2.CONFIRM = true;
+                    });
+                    dev.Data2.TaskID = station_3060.Data.TASKNUM;
+                    dev.Data2.StartPosition = 3060;
+                    dev.Data2.DestPosition = 3041;
+                    dev.Data2.Trigger = 1;
+                }
+                else if (isOK && station_3040.Data.PH_STATUS  && station_3040.Data.TASKNUM > 10000 && noPhstatus)
                 {
                     short outTemp = 3060;
                     var arr = Device.Find("3006", "3060", "3001", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
@@ -1001,25 +1050,6 @@ namespace WCS.Service.Works
                         dev.Data2.Trigger = 1;
                     }
                 }
-                else if (station_3060.Data.PH_STATUS && station_3060.Data.GOODSEND == 3060 && station_3060.Data.TASKNUM > 10000)
-                {
-                    if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
-                    DB.Do(db =>
-                    {
-                        var task = db.Default.Set<WCS_TASK>().Find(station_3060.Data.TASKNUM);
-                        if (task == null)
-                            throw new Exception($"任务号{station_3060.Data.TASKNUM}不存在");
-                        else if (task.TYPE == TaskType.出库 || station_3060.Data.GOODSTYPE == 2) return;
-                        task.ADDRNEXT = "3041";
-                        task.ADDRTO = "2017";
-                        task.UPDATETIME = DateTime.Now;
-                        db.Default.SaveChanges();
-                    });
-                    dev.Data2.TaskID = station_3060.Data.TASKNUM;
-                    dev.Data2.StartPosition = 3060;
-                    dev.Data2.DestPosition = 3041;
-                    dev.Data2.Trigger = 1;
-                }
             }
             else if (SystemConfigHelpers.GetDeviceIsUsed("RGV8") && dev.Entity.CODE == "RGV8")
             {
@@ -1058,10 +1088,11 @@ namespace WCS.Service.Works
                     var inPos = Device.Find("3001", "3004", "3005", "3060").Select(v => v.Device<IStation521, IStation520>());
                     if (inPos.Any(v => v.Data2.CONFIRM == true || (v.Data.PH_STATUS && v.Data.TASKNUM > 0 && (v.Data.GOODSEND is 0 or 1 or 2 or 3 or 3060)))) doOut = false;
                 });
+                bool noPhstatus = Ltc.Do(dev, v => v.Data.PH_Status == false);
 
                 if (inPort.Any(v => v.Data.PH_STATUS && v.Data.TASKNUM > 0 && !station_3041.Data.PH_STATUS && station_3041.Data.TASKNUM == 0))
                 {
-                    if (station_3019.Data.PH_STATUS && station_3019.Data.TASKNUM > 0)
+                    if (station_3019.Data.PH_STATUS && station_3019.Data.TASKNUM > 0 && noPhstatus)
                     {
                         if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
                         DB.Do(db =>
@@ -1073,12 +1104,14 @@ namespace WCS.Service.Works
                             task.UPDATETIME = DateTime.Now;
                             db.Default.SaveChanges();
                         });
+                        station_3019.Data2.GOODSEND = 3041;
+                        station_3019.Data2.CONFIRM = true;
                         dev.Data2.TaskID = station_3019.Data.TASKNUM;
                         dev.Data2.StartPosition = 3019;
                         dev.Data2.DestPosition = 3041;
                         dev.Data2.Trigger = 1;
                     }
-                    else if (station_3033.Data.PH_STATUS && station_3033.Data.TASKNUM > 0)
+                    else if (station_3033.Data.PH_STATUS && station_3033.Data.TASKNUM > 0 && noPhstatus)
                     {
                         if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
                         DB.Do(db =>
@@ -1090,6 +1123,8 @@ namespace WCS.Service.Works
                             task.UPDATETIME = DateTime.Now;
                             db.Default.SaveChanges();
                         });
+                        station_3033.Data2.GOODSEND = 3041;
+                        station_3033.Data2.CONFIRM = true;
                         dev.Data2.TaskID = station_3033.Data.TASKNUM;
                         dev.Data2.StartPosition = 3033;
                         dev.Data2.DestPosition = 3041;
@@ -1098,7 +1133,7 @@ namespace WCS.Service.Works
                 }
                 else if (outPort.Any(v => v.Data.PH_STATUS && v.Data.TASKNUM > 0 ) && doOut && !station_3060.Data.PH_STATUS && station_3060.Data.TASKNUM == 0)
                 {
-                    if (station_3012.Data.PH_STATUS && station_3012.Data.TASKNUM > 0)
+                    if (station_3012.Data.PH_STATUS && station_3012.Data.TASKNUM > 0 && noPhstatus)
                     {
                         if (station_3060.Data.PH_STATUS || station_3060.Data.TASKNUM > 10000) return;
                         var arr = Device.Find("3006", "3060", "3001", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
@@ -1127,7 +1162,7 @@ namespace WCS.Service.Works
                         dev.Data2.DestPosition = 3060;
                         dev.Data2.Trigger = 1;
                     }
-                    else if (station_3028.Data.PH_STATUS && station_3028.Data.TASKNUM > 0)
+                    else if (station_3028.Data.PH_STATUS && station_3028.Data.TASKNUM > 0 && noPhstatus)
                     {
                         if (station_3060.Data.PH_STATUS || station_3060.Data.TASKNUM > 10000) return;
                         var arr = Device.Find("3006", "3060", "3001", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
@@ -1138,9 +1173,9 @@ namespace WCS.Service.Works
                             if (arr.Any(v => !v.Data.PH_STATUS && v.Data.TASKNUM > 10000)) throw new Exception("有任务无光电,请检查光电是否异常");
                             DB.Do(db =>
                             {
-                                var task = db.Default.Set<WCS_TASK>().Find(station_3012.Data.TASKNUM);
+                                var task = db.Default.Set<WCS_TASK>().Find(station_3028.Data.TASKNUM);
                                 if (task == null)
-                                    throw new Exception($"任务号{station_3012.Data.TASKNUM}不存在");
+                                    throw new Exception($"任务号{station_3028.Data.TASKNUM}不存在");
                                 task.ADDRNEXT = "3060";
                                 task.UPDATETIME = DateTime.Now;
                                 db.Default.SaveChanges();
@@ -1178,7 +1213,30 @@ namespace WCS.Service.Works
                 });
 
                 
-                if (isOK && station_3040.Data.PH_STATUS && station_3040.Data.GOODSEND == 3040 && station_3040.Data.TASKNUM > 10000)
+                
+                if (station_3060.Data.PH_STATUS && (station_3060.Data.GOODSEND == 3060 || station_3060.Data.GOODSEND == 3013) && station_3060.Data.TASKNUM > 10000 && noPhstatus)
+                {
+                    if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
+                    DB.Do(db =>
+                    {
+                        var task = db.Default.Set<WCS_TASK>().Find(station_3060.Data.TASKNUM);
+                        if (task == null)
+                            throw new Exception($"任务号{station_3060.Data.TASKNUM}不存在");
+                        else if (task.TYPE == TaskType.出库 || station_3060.Data.GOODSTYPE == 2) return;
+                        task.ADDRNEXT = "3041";
+                        task.ADDRTO = "2017";
+                        task.UPDATETIME = DateTime.Now;
+                        db.Default.SaveChanges();
+                    });
+                    station_3060.Data2.GOODSEND = 3041;
+                    station_3060.Data2.GOODSTYPE = 1;
+                    station_3060.Data2.CONFIRM = true;
+                    dev.Data2.TaskID = station_3060.Data.TASKNUM;
+                    dev.Data2.StartPosition = 3060;
+                    dev.Data2.DestPosition = 3041;
+                    dev.Data2.Trigger = 1;
+                }
+                else if (isOK && station_3040.Data.PH_STATUS  && station_3040.Data.TASKNUM > 10000 && noPhstatus)
                 {
                     short outTemp = 3060;
                     var arr = Device.Find("3006", "3060", "3001", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
@@ -1206,25 +1264,6 @@ namespace WCS.Service.Works
                         dev.Data2.Trigger = 1;
                     }
                 }
-                else if (station_3060.Data.PH_STATUS && station_3060.Data.GOODSEND == 3060 && station_3060.Data.TASKNUM > 10000)
-                {
-                    if (station_3041.Data.PH_STATUS || station_3041.Data.TASKNUM > 10000) return;
-                    DB.Do(db =>
-                    {
-                        var task = db.Default.Set<WCS_TASK>().Find(station_3060.Data.TASKNUM);
-                        if (task == null)
-                            throw new Exception($"任务号{station_3060.Data.TASKNUM}不存在");
-                        else if (task.TYPE == TaskType.出库 || station_3060.Data.GOODSTYPE == 2) return;
-                        task.ADDRNEXT = "3041";
-                        task.ADDRTO = "2017";
-                        task.UPDATETIME = DateTime.Now;
-                        db.Default.SaveChanges();
-                    });
-                    dev.Data2.TaskID = station_3060.Data.TASKNUM;
-                    dev.Data2.StartPosition = 3060;
-                    dev.Data2.DestPosition = 3041;
-                    dev.Data2.Trigger = 1;
-                }
             }
         }
         protected override bool SelectDevice(WCS_DEVICE dev)

+ 3 - 1
Projects/永冠/WCS.Service/Works/Robots/RobotWork.cs

@@ -114,7 +114,9 @@ namespace WCS.Service.Works.Robots
 
             if (Ltc.Do(target, C2153, (target, C2153) => target.Data.GOODSCODE != C2153.Data.GOODSCODE) && target.Data3.Qty != target.Data.GOODSSIZE) //单号不符
             {
-                if ((Ltc.Do(target, C2153, (target, C2153) => target.Data.GOODSTYPE != 0 && C2153.Data.GOODSTYPE != 0 && target.Data.GOODSTYPE != C2153.Data.GOODSTYPE))) //托盘类型不符
+                if (Ltc.Do(target, target => target.Data2.CONFIRM == true)) return;
+                if (Ltc.Do(target, target => target.Data.GOODSEND == 2202)) return;
+                if ((Ltc.Do(target, C2153, (target, C2153) => target.Data.GOODSTYPE != 0 && C2153.Data.GOODSTYPE != 0 && target.Data.GOODSTYPE != C2153.Data.GOODSTYPE && target.Data3.Qty!=0))) //托盘类型不符
                 {
                     GeneralHelper.DischargeOfTray(target);
                     LogHelper.AddWCS_EXCEPTION($"2153:{C2153.Data.TASKNUM}与{target.Entity.CODE}单号不符,托盘有货,自动排出106");

+ 1 - 1
Projects/永冠/WCS.Service/Works/SC/SCWork.cs

@@ -385,7 +385,7 @@ namespace WCS.Service.Works
         protected override bool SelectDevice(WCS_DEVICE dev)
         {
             //return true;
-            return new string[] { "SC1", "SC2",  "SC3" ,"SC4", "SC6" }.Contains(dev.CODE);
+            return new string[] { "SC1", "SC2",  "SC3" ,"SC4", "SC5", "SC6" }.Contains(dev.CODE);
         }
 
         protected override void Do(Device<ISC521, ISC520, ISC537> dev)

+ 16 - 0
Projects/永冠/WCS.Service/Works/Stations/组盘位.cs

@@ -90,6 +90,22 @@ namespace WCS.Service.Works.Stations
                 { //入库
                     //if (Ltc.Do(dev, v => !v.Entity.WakeupOn(5000,"组盘")))
                     //    return;
+
+                    bool move = false;
+                    //if (task == null)
+                    {
+                        if (Ltc.Do(dev, v => v.Data.RES))
+                        {
+                            move = true;
+                        }
+                    }                   
+                    if (move)
+                    {
+                        GeneralHelper.DischargeOfTray(dev);
+                        LogHelper.AddWCS_EXCEPTION($"{dev.Entity.CODE}强制排出175");
+                        return;
+                    }
+
                     var taskid = dev.Data.TASKNUM;
                     DB.Do(db =>
                     {