林豪 左 3 лет назад
Родитель
Сommit
894aa3335f

+ 6 - 0
Projects/永冠OPP/WCS.Service/Extensions/DeviceExtension.cs

@@ -549,12 +549,14 @@ namespace WCS.Service.Extensions
         /// <param name="addr">目标地址</param>
         public void Move(StationDeviceGroup addr)
         {
+            InfoLog.INFO_RGVINFO($"[{Entity.CODE}]--写入RGV移动任务-开始:{Data.TaskID_1},{Data.TaskType_1},{Data.DestPosition_1},{Data.Trigger_1}");
             if (Data2.WorkMode != RGVMode.自动) throw new WarnException($"RGV状态{Data2.WorkMode},无法执行移动任务");
             if (Data2.SystemStatus != RGVRunStatus.空闲) throw new WarnException($"rgv状态为{Data2.SystemStatus},无法执行移动任务");
             Data.TaskID_1 = addr.Entity.CODE.Replace("G", "").ToShort();
             Data.TaskType_1 = RGVTaskType.移动;
             Data.DestPosition_1 = addr.Entity.CODE.Replace("G", "").ToShort();
             Data.Trigger_1++;
+            InfoLog.INFO_RGVINFO($"[{Entity.CODE}]--写入RGV移动任务-结束:{Data.TaskID_1},{Data.TaskType_1},{Data.DestPosition_1},{Data.Trigger_1}");
         }
 
         /// <summary>
@@ -563,11 +565,13 @@ namespace WCS.Service.Extensions
         /// <param name="addr">目标地址</param>
         public void Pick(StationDeviceGroup addr, int task1 = 0, int task2 = 0)
         {
+            InfoLog.INFO_RGVINFO($"[{Entity.CODE}]--写入RGV取货任务-开始:{Data.TaskID_1},{Data.TaskID_2},{Data.TaskType_1},{Data.DestPosition_1},{Data.Trigger_1}");
             Data.TaskType_1 = RGVTaskType.取货;
             Data.DestPosition_1 = addr.Entity.CODE.ToShort();
             if (task1 != 0) Data.TaskID_1 = task1;
             if (task2 != 0) Data.TaskID_2 = task2;
             Data.Trigger_1++;
+            InfoLog.INFO_RGVINFO($"[{Entity.CODE}]--写入RGV取货任务-结束:{Data.TaskID_1},{Data.TaskID_2},{Data.TaskType_1},{Data.DestPosition_1},{Data.Trigger_1}");
         }
 
         /// <summary>
@@ -576,11 +580,13 @@ namespace WCS.Service.Extensions
         /// <param name="addr">目标地址</param>
         public void Put(StationDeviceGroup addr, int task1 = 0, int task2 = 0)
         {
+            InfoLog.INFO_RGVINFO($"[{Entity.CODE}]--写入RGV放货任务-开始:{Data.TaskID_1},{Data.TaskID_2},{Data.TaskType_1},{Data.DestPosition_1},{Data.Trigger_1}");
             Data.TaskType_1 = RGVTaskType.放货;
             Data.DestPosition_1 = addr.Entity.CODE.Replace("G", "").ToShort();
             if (task1 != 0) Data.TaskID_1 = task1;
             if (task2 != 0) Data.TaskID_2 = task2;
             Data.Trigger_1++;
+            InfoLog.INFO_RGVINFO($"[{Entity.CODE}]--写入RGV放货任务-结束:{Data.TaskID_1},{Data.TaskID_2},{Data.TaskType_1},{Data.DestPosition_1},{Data.Trigger_1}");
         }
 
         /// <summary>

+ 9 - 0
Projects/永冠OPP/WCS.Service/Log/InfoLog.cs

@@ -161,5 +161,14 @@ namespace WCS.Service.Log
         {
             Log.Info(msg, "INFO_CREATETASKIN");
         }
+
+        /// <summary>
+        /// RGV的写入记录
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_RGVINFO(string msg)
+        {
+            Log.Info(msg, "INFO_RGVINFO");
+        }
     }
 }

+ 42 - 43
Projects/永冠OPP/WCS.Service/Works/RGV/RGVWorks.cs

@@ -167,16 +167,16 @@ namespace WCS.Service.Works.RGV
                             });
                             return;
                         }
-                        //else if (pickStation.Entity.CODE == "G9")
-                        //{
-                        //    //九站台的小车需要额外检测一下11站台是否需要取货
-                        //    var station11 = Device.Find("G11").Create<StationDeviceGroup>();
-                        //    var station11Dev = station11.RGVGetTaskedDevice();
-                        //    if (station11Dev != null && station11Dev.Count > 0)
-                        //    {
-                        //        obj.Move(station11);
-                        //    }
-                        //}
+                        else if (pickStation.Entity.CODE == "G9")
+                        {
+                            //九站台的小车需要额外检测一下11站台是否需要取货
+                            var station11 = Device.Find("G11").Create<StationDeviceGroup>();
+                            var station11Dev = station11.RGVGetTaskedDevice();
+                            if (station11Dev != null && station11Dev.Count > 0)
+                            {
+                                obj.Move(station11);
+                            }
+                        }
 
                         //找到自己的后一个小车
                         var afterRgv = obj.After();
@@ -184,19 +184,19 @@ namespace WCS.Service.Works.RGV
                         //自己是否阻挡了该小车
                         if (afterRgv.Data2.WorkMode == RGVMode.自动 && afterRgv.Data2.SystemStatus != RGVRunStatus.空闲 && obj.StopedByMe(afterRgv))
                         {
-                            //if (pickStation.Entity.CODE == "G2")
-                            //{
-                            //    //此站台因需要进行排队,因此是否需要赶车取决于是否拦住了两个小车的任务
-                            //    var afterRgv1 = afterRgv.After();
-                            //    //如果是空闲或者没有拦住他,就不执行赶车
-                            //    if (afterRgv.Data2.WorkMode == RGVMode.自动 && afterRgv1.Data2.SystemStatus == RGVRunStatus.空闲 || !afterRgv.StopedByMe(afterRgv1)) return;
-                            //}
-                            //else if (pickStation.Entity.CODE == "G3")
-                            //{
-                            //    //为了减少空跑,需要被阻拦的小车后面的小车任务类型为移动并且位置值要大于618500小于被阻拦小车的位置值
-                            //    var afterRgv1 = afterRgv.After();
-                            //    if (afterRgv1.Data2.WorkMode == RGVMode.自动 && afterRgv1.Data2.TaskType_1 != RGVTaskType.移动 && !(afterRgv1.Position < afterRgv.Position && afterRgv1.Position > 618500)) return;
-                            //}
+                            if (pickStation.Entity.CODE == "G2")
+                            {
+                                //此站台因需要进行排队,因此是否需要赶车取决于是否拦住了两个小车的任务
+                                var afterRgv1 = afterRgv.After();
+                                //如果是空闲或者没有拦住他,就不执行赶车
+                                if (afterRgv.Data2.WorkMode == RGVMode.自动 && afterRgv1.Data2.SystemStatus == RGVRunStatus.空闲 || !afterRgv.StopedByMe(afterRgv1)) return;
+                            }
+                            else if (pickStation.Entity.CODE == "G3")
+                            {
+                                //为了减少空跑,需要被阻拦的小车后面的小车任务类型为移动并且位置值要大于618500小于被阻拦小车的位置值
+                                var afterRgv1 = afterRgv.After();
+                                if (afterRgv1.Data2.WorkMode == RGVMode.自动 && afterRgv1.Data2.TaskType_1 != RGVTaskType.移动 && !(afterRgv1.Position < afterRgv.Position && afterRgv1.Position > 618500)) return;
+                            }
                             //找到当前所在站台的下一个取货点
                             var beforeStation = Device.Where(v => v.Is(DF.涂布RGV取货设备组) && v.CODE != pickStation.Entity.CODE)
                                           .Select(v => v.Create<StationDeviceGroup>())
@@ -209,29 +209,28 @@ namespace WCS.Service.Works.RGV
                         }
                         else if (pickStation.Entity.CODE == "G11")
                         {
-                            //obj.Move(Device.Find("G2").Create<StationDeviceGroup>());
+                            obj.Move(Device.Find("G2").Create<StationDeviceGroup>());
                         }
                         else
                         {
-
-                            //var station = Device.Where(v => v.Is(DF.涂布RGV取货设备组))
-                            //                        .Select(v => v.Create<StationDeviceGroup>())
-                            //                        .Where(v => v.Position > obj.Position) //前面的
-                            //                        .Where(v => v.CurrentRGV() == null)
-                            //                        .Where(v => !v.RgvList.Any(c => c.Data2.SystemStatus != RGVRunStatus.空闲 && c.Data2.DestPosition_1 == v.Entity.CODE.GetShortCode()))
-                            //                        .Where(v =>
-                            //                        {
-                            //                            // 筛选出有任务号和起始及目标地址的设备
-                            //                            var b = pickStation.RGVGetTaskedDevice();
-                            //                            //是否需要取货
-                            //                            if (b != null && b.Count > 0) return true;
-                            //                            else return false;
-                            //                        })
-                            //                        .OrderBy(v => obj.Distance(v)).FirstOrDefault();
-                            //if (obj.Data2.TaskType_1 == RGVTaskType.移动 && obj.Distance(station) > 100000)
-                            //{
-                            //    obj.Move(station);
-                            //}
+                            var station = Device.Where(v => v.Is(DF.涂布RGV取货设备组))
+                                                    .Select(v => v.Create<StationDeviceGroup>())
+                                                    .Where(v => v.Position > obj.Position) //前面的
+                                                    .Where(v => v.CurrentRGV() == null)
+                                                    .Where(v => !v.RgvList.Any(c => c.Data2.SystemStatus != RGVRunStatus.空闲 && c.Data2.DestPosition_1 == v.Entity.CODE.GetShortCode()))
+                                                    .Where(v =>
+                                                    {
+                                                        // 筛选出有任务号和起始及目标地址的设备
+                                                        var b = pickStation.RGVGetTaskedDevice();
+                                                        //是否需要取货
+                                                        if (b != null && b.Count > 0) return true;
+                                                        else return false;
+                                                    })
+                                                    .OrderBy(v => obj.Distance(v)).FirstOrDefault();
+                            if (obj.Data2.TaskType_1 == RGVTaskType.移动 && obj.Distance(station) > 100000)
+                            {
+                                obj.Move(station);
+                            }
                         }
                     }
 

+ 1 - 0
Projects/永冠OPP/WCS.Service/config.json

@@ -19,6 +19,7 @@
         "INFO_TIMING": "Info_Timing",
         "INFO_UPEX": "INFO_I_WCS_GetExcTask",
         "INFO_CREATETASKIN": "CreateTaskIn",
+        "INFO_RGVINFO": "RgvInfo"
       }
     },
     {