|
@@ -727,12 +727,8 @@ namespace CyberX8_RT.Modules.Transporter
|
|
|
bool result = ret == RState.End;
|
|
|
if (result)
|
|
|
{
|
|
|
- _targetCell = "";
|
|
|
_currentRoutine = null;
|
|
|
- if (!string.IsNullOrEmpty(_sourceCell))
|
|
|
- {
|
|
|
- _sourceCell = "";
|
|
|
- }
|
|
|
+ _sourceCell = "";
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
@@ -757,7 +753,7 @@ namespace CyberX8_RT.Modules.Transporter
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- _targetCell = "";
|
|
|
+ _sourceCell = "";
|
|
|
if (Singleton<RouteManager>.Instance.IsAutoRunning)
|
|
|
{
|
|
|
AlarmListManager.Instance.CheckModuleAlamAndRemove(Module.ToString(), TransporterState.MovingTo.ToString());
|
|
@@ -1227,7 +1223,9 @@ namespace CyberX8_RT.Modules.Transporter
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- return false;
|
|
|
+ bool conflict = CheckOtherModuleCellConflict(otherModule, "", otherPosition, positive, targetPosition,motorPosition);
|
|
|
+
|
|
|
+ return conflict;
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
@@ -1262,8 +1260,20 @@ namespace CyberX8_RT.Modules.Transporter
|
|
|
{
|
|
|
int transporterMinimumDistance = SC.GetValue<int>("Transporter.TransporterMinimumDistance");
|
|
|
|
|
|
- var result = AnalyseTargetCellPosition(otherModule, cell);
|
|
|
- if (!result.result)
|
|
|
+ bool condition = true;
|
|
|
+ bool onlyCheckCurrentPosition = true;
|
|
|
+ double cellTargetPosition = double.MaxValue;
|
|
|
+ if (!string.IsNullOrEmpty(cell))
|
|
|
+ {
|
|
|
+ var result = AnalyseTargetCellPosition(otherModule, cell);
|
|
|
+ condition = result.result;
|
|
|
+ cellTargetPosition=result.targetPosition;
|
|
|
+ if (condition)
|
|
|
+ {
|
|
|
+ onlyCheckCurrentPosition = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!condition)
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
@@ -1275,18 +1285,22 @@ namespace CyberX8_RT.Modules.Transporter
|
|
|
// {
|
|
|
// return true;
|
|
|
// }
|
|
|
- if (result.targetPosition - transporterMinimumDistance <= targetPosition)
|
|
|
+ if (!onlyCheckCurrentPosition)
|
|
|
{
|
|
|
- return true;
|
|
|
+ if (cellTargetPosition - transporterMinimumDistance <= targetPosition)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (cellTargetPosition - transporterMinimumDistance <= motorPosition)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|
|
|
if (otherPosition - transporterMinimumDistance <= targetPosition)
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
- if (result.targetPosition - transporterMinimumDistance <= motorPosition)
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
return false;
|
|
|
}
|
|
|
else
|
|
@@ -1295,18 +1309,21 @@ namespace CyberX8_RT.Modules.Transporter
|
|
|
//{
|
|
|
// return true;
|
|
|
//}
|
|
|
- if (result.targetPosition + transporterMinimumDistance >= targetPosition)
|
|
|
+ if (!onlyCheckCurrentPosition)
|
|
|
{
|
|
|
- return true;
|
|
|
+ if (cellTargetPosition + transporterMinimumDistance >= targetPosition)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ if (cellTargetPosition + transporterMinimumDistance >= motorPosition)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|
|
|
if (otherPosition + transporterMinimumDistance >= targetPosition)
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
- if (result.targetPosition + transporterMinimumDistance >= motorPosition)
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
return false;
|
|
|
}
|
|
|
|