|
@@ -149,26 +149,43 @@ namespace WCS.Service.Works.RGV
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ //找到自己的后一个小车
|
|
|
+ var afterStation = obj.After();
|
|
|
+ //后面的小车是否在执行任务
|
|
|
+ if (afterStation.Data2.WorkMode == RGVMode.自动 && afterStation.Data2.SystemStatus == RGVRunStatus.空闲) return;
|
|
|
+ //自己是否阻挡了该小车
|
|
|
+ if (obj.StopedByMe(afterStation))
|
|
|
+ {
|
|
|
+ //取小车的目标位置值
|
|
|
+ var destStation = Device.Find($"G{afterStation.Data2.DestPosition_1}").Create<StationDeviceGroup>();
|
|
|
+ //取被挡住小车的目标位置的下一个取货点
|
|
|
+ var beforeSickStation = Device.Where(v => v.Is(DF.涂布RGV取货设备组) && v.CODE != destStation.Entity.CODE)
|
|
|
+ .Select(v => v.Create<StationDeviceGroup>())
|
|
|
+ .OrderBy(v => destStation.Distance(v))
|
|
|
+ .FirstOrDefault();
|
|
|
+
|
|
|
+ if (beforeSickStation.Entity.CODE == pickStation.Entity.CODE)
|
|
|
+ {
|
|
|
+ //取被挡住小车的目标位置的下一个取货点
|
|
|
+ beforeSickStation = Device.Where(v => v.Is(DF.涂布RGV取货设备组) && v.CODE != beforeSickStation.Entity.CODE)
|
|
|
+ .Select(v => v.Create<StationDeviceGroup>())
|
|
|
+ .OrderBy(v => beforeSickStation.Distance(v))
|
|
|
+ .FirstOrDefault();
|
|
|
+ }
|
|
|
+
|
|
|
+ //写入移动任务
|
|
|
+ obj.Move(beforeSickStation);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- //找到自己的后一个小车
|
|
|
- var afterStation = obj.After();
|
|
|
- //后面的小车是否在执行任务
|
|
|
- if (afterStation.Data2.WorkMode == RGVMode.自动 && afterStation.Data2.SystemStatus == RGVRunStatus.空闲) return;
|
|
|
- //自己是否阻挡了该小车
|
|
|
- if (obj.StopedByMe(afterStation))
|
|
|
+ //是否在一个放货站台
|
|
|
+ if (pickStation.Entity.Is(DF.涂布RGV放货设备组))
|
|
|
{
|
|
|
- //取小车的目标位置值
|
|
|
- var destStation = Device.Find($"G{afterStation.Data2.DestPosition_1}").Create<StationDeviceGroup>();
|
|
|
- //取被挡住小车的目标位置的下一个取货点
|
|
|
- var beforeSickStation = Device.Where(v => v.Is(DF.涂布RGV取货设备组) && v.CODE != destStation.Entity.CODE)
|
|
|
- .Select(v => v.Create<StationDeviceGroup>())
|
|
|
- .OrderBy(v => destStation.Distance(v))
|
|
|
- .FirstOrDefault();
|
|
|
-
|
|
|
- //写入移动任务
|
|
|
- obj.Move(beforeSickStation);
|
|
|
- return;
|
|
|
+ if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲 || v.Data2.WorkMode != RGVMode.自动)) return;
|
|
|
+ pickStation = obj.BeforeStation();
|
|
|
+ obj.Move(pickStation);
|
|
|
}
|
|
|
return;
|
|
|
}
|