ソースを参照

debug:涂布环穿赶车

Administrator 3 年 前
コミット
c1bbcbdd27

+ 11 - 2
Projects/永冠OPP/WCS.Service/Extensions/DeviceExtension.cs

@@ -422,6 +422,16 @@ namespace WCS.Service.Extensions
             return DevEX.Distance(Position, after.Position, Length);
         }
 
+        /// <summary>
+        /// 计算当前RGV与指定RGV之间的距离
+        /// </summary>
+        /// <param name="after"></param>
+        /// <returns></returns>
+        public float Distance(StationDeviceGroup after)
+        {
+            return DevEX.Distance(Position, after.Position, Length);
+        }
+
         /// <summary>
         /// 是否可用
         /// </summary>
@@ -490,10 +500,9 @@ namespace WCS.Service.Extensions
             var target = rgv.Data2.DestPosition_1;
             //获取目标站台的设备组信息
             var station = Device.Find($"G{target}").Create<StationDeviceGroup>();
-            if (station.Position < Data2.Position && station.Entity.CODE != "G1") return false;
 
             //当前RGV与目标站台的距离小于传入RGV到达目标站台的距离
-            return station.Distance(this) < station.Distance(rgv);
+            return (this.Distance(station) < rgv.Distance(station)) || station.CurrentRGV()?.Entity == this.Entity;
         }
 
         /// <summary>

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

@@ -183,14 +183,14 @@ namespace WCS.Service.Works.RGV
                 }
                 else //没车
                 {
-                    //有没有目标地址是自己这的小车 任务未完成 未到站
-                    var moveRgv = obj.RgvList.Any(v => v.Data2.DestPosition_1 == obj.Entity.CODE.Replace("G", "").ToShort());
-
-                    if (moveRgv) return;
-                    //找到一个空闲且离自己最近的一个RGV
-                    var a = obj.RgvList.Where(v => v.Data2.SystemStatus == RGVRunStatus.空闲 && v.Data2.WorkMode == RGVMode.自动);
-                    var z = a.OrderBy(v => obj.Distance(v)).FirstOrDefault() ?? throw new DoException("");
-                    z.Move(obj);
+                    ////有没有目标地址是自己这的小车 任务未完成 未到站
+                    //var moveRgv = obj.RgvList.Any(v => v.Data2.DestPosition_1 == obj.Entity.CODE.Replace("G", "").ToShort());
+
+                    //if (moveRgv) return;
+                    ////找到一个空闲且离自己最近的一个RGV
+                    //var a = obj.RgvList.Where(v => v.Data2.SystemStatus == RGVRunStatus.空闲 && v.Data2.WorkMode == RGVMode.自动);
+                    //var z = a.OrderBy(v => obj.Distance(v)).FirstOrDefault() ?? throw new DoException("");
+                    //z.Move(obj);
                 }
             });
         }