Administrator 2 жил өмнө
parent
commit
b5f0ccd394

BIN
DLL/PLC.Siemens.dll


+ 19 - 15
Projects/永冠/WCS.Service/Works/RGV/RGVWork.cs

@@ -382,22 +382,26 @@ namespace WCS.Service.Works
             {
                 short outTemp = 3060;
                 var arr = Device.Find("3006", "3060", "3001", "3005", "3004").Select(v => v.Device<IStation521, IStation520>()).ToArray();
-                if (arr.Where(v => v.Data.GOODSEND is 3060 or 3013).Any())
-                    throw new Exception("交通管制,提升机被入库任务占用");
-                if (arr.Where(v => v.Data.PH_STATUS && v.Data.TASKNUM == 0).Any()) throw new Exception("有光电无任务,交通管制,提升机被入库任务占用");
-
-                DB.Do(db =>
+                if (!arr.Where(v => v.Data.GOODSEND is 3060 or 3013).Any())
                 {
-                    var task = db.Default.Set<WCS_TASK>().Find(station.Data.TASKNUM);
-                    if (task == null)
-                        throw new Exception($"任务号{station.Data.TASKNUM}不存在");
-                    task.ADDRNEXT = outTemp.ToString();
-                    task.UPDATETIME = DateTime.Now;
-                    db.Default.SaveChanges();
-                    //station.Data2.TASKNUM = station.Data.TASKNUM;
-                    station.Data2.GOODSEND = outTemp;
-                    station.Data2.CONFIRM = true;
-                });
+                    if (arr.Where(v => v.Data.PH_STATUS && v.Data.TASKNUM == 0).Any()) throw new Exception("有光电无任务,交通管制,提升机被入库任务占用");
+                    if (arr.Where(v => !v.Data.PH_STATUS && v.Data.TASKNUM > 10000).Any()) throw new Exception("有任务无光电,请检查光电是否异常");
+
+                    DB.Do(db =>
+                    {
+                        var task = db.Default.Set<WCS_TASK>().Find(station.Data.TASKNUM);
+                        if (task == null)
+                            throw new Exception($"任务号{station.Data.TASKNUM}不存在");
+                        task.ADDRNEXT = outTemp.ToString();
+                        task.UPDATETIME = DateTime.Now;
+                        db.Default.SaveChanges();
+                        //station.Data2.TASKNUM = station.Data.TASKNUM;
+                        station.Data2.GOODSEND = outTemp;
+                        station.Data2.CONFIRM = true;
+                    });
+                }
+                    //throw new Exception("交通管制,提升机被入库任务占用");
+                
             }
             if (station_3028.Data.PH_STATUS && station_3028.Data.GOODSEND == 3028 && station_3028.Data.TASKNUM > 10000)
             {

+ 3 - 0
Projects/永冠/WCS.Service/Works/Stations/22车间.cs

@@ -185,6 +185,9 @@ namespace WCS.Service.Works.Stations
                 var agvtask = db.Default.Set<WCS_AGVTask>().Where(v => v.Status <= AGVTaskStatus.完成 && v.Station == "3001" && v.TaskType == AGVTaskType.入库)
                                                            .Where(v => v.Status != AGVTaskStatus.新建 && v.Status != AGVTaskStatus.执行);
                 if (agvtask.Any()) return;
+                var inTemp = Device.Find("3001", "3004").Select(v => v.Device<IStation521, IStation523>());
+                if (inTemp.Any(v => v.Data.PH_STATUS == true || v.Data.TASKNUM > 0
+                || v.Data2.Status.HasFlag(StationStatus.运行状态位))) return;
 
                 var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.ID == dev.Data.TASKNUM);
                 task.ADDRNEXT = "3001";

+ 2 - 2
Projects/永冠/WCS.Service/Works/Stations/AGV交互.cs

@@ -253,8 +253,8 @@ namespace WCS.Service.Works.Stations
                                 if (agvTasks.Any(v => v.Status >= AGVTaskStatus.确认 && v.Status != AGVTaskStatus.执行 && v.Status < AGVTaskStatus.完成扫码 && v.Station == "3001"))
                                     throw new Exception($"同时放货任务数量最大为1");
                                 // 缓存位与取放货位没有光电 任务 去往缓存位任务   ,如果楼上没有出库任务,就不会有去往3006的任务
-                                var inTemp = Device.Find("3006", "3001", "3012").Select(v => v.Device<IStation521, IStation523>());
-                                if (inTemp.Any(v => v.Data.PH_STATUS == true || v.Data.TASKNUM > 0 || v.Data.GOODSEND == 3006)) return;
+                                var inTemp = Device.Find("3006", "3001", "3012","3004","3005").Select(v => v.Device<IStation521, IStation523>());
+                                if (inTemp.Any(v => v.Data.PH_STATUS == true || v.Data.TASKNUM > 0 || v.Data.GOODSEND == 3006 || v.Data2.Status.HasFlag(StationStatus.运行状态位))) return;
                                 if (db.Default.Set<WCS_TASK>().Any(v => v.STATUS < TaskStatus.已完成 && v.ADDRNEXT == "3060")) return;
 
                                 //3060没有出库任务