|
@@ -96,9 +96,14 @@ namespace PunkHPX8_RT.Devices.EFEM
|
|
|
|
|
|
private string _address = "";
|
|
private string _address = "";
|
|
|
|
|
|
- public override bool IsResumeRDYReceived { get; set; }
|
|
|
|
- public override bool IsPauseRDYReceived { get; set; }
|
|
|
|
- public override bool IsActionRDYReceived { get; set; }
|
|
|
|
|
|
+ private bool _isResumeRDYReceived = false;
|
|
|
|
+ private bool _isPauseRDYReceived = false;
|
|
|
|
+ private bool _isActionRDYReceived = false;
|
|
|
|
+ private bool _isInPauseStatus = false;
|
|
|
|
+ public override bool IsResumeRDYReceived { get { return _isResumeRDYReceived; } }
|
|
|
|
+ public override bool IsPauseRDYReceived { get { return _isPauseRDYReceived; } }
|
|
|
|
+ public override bool IsActionRDYReceived { get { return _isActionRDYReceived; } }
|
|
|
|
+ public override bool IsInPauseStatus { get { return _isInPauseStatus; } }
|
|
|
|
|
|
public SunWayRobot()
|
|
public SunWayRobot()
|
|
{
|
|
{
|
|
@@ -330,30 +335,28 @@ namespace PunkHPX8_RT.Devices.EFEM
|
|
LOG.WriteLog(eEvent.ERROR_EFEM_COMMUNICATION, Module.ToString(), $"Socket is not Conntected");
|
|
LOG.WriteLog(eEvent.ERROR_EFEM_COMMUNICATION, Module.ToString(), $"Socket is not Conntected");
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
- _currentMessage = new EfemMessage()
|
|
|
|
- {
|
|
|
|
- Operation = EfemOperation.Pause,
|
|
|
|
- Module = ModuleName.EfemRobot
|
|
|
|
- };
|
|
|
|
- _status = RState.Running;
|
|
|
|
string cmd = "PAUSE\r";
|
|
string cmd = "PAUSE\r";
|
|
- return WriteCommand(cmd);
|
|
|
|
|
|
+ bool result = WriteCommand(cmd);
|
|
|
|
+ if (result)
|
|
|
|
+ {
|
|
|
|
+ _isInPauseStatus = true; //进入pause状态
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ _isInPauseStatus = false;
|
|
|
|
+ LOG.WriteLog(eEvent.ERROR_EFEM_COMMUNICATION, Module.ToString(), $"Send pause message error");
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
}
|
|
}
|
|
public override bool Resume()
|
|
public override bool Resume()
|
|
{
|
|
{
|
|
- IsActionRDYReceived = false; //把收到resume信号后执行resume动作成功的变量置false
|
|
|
|
|
|
+ _isActionRDYReceived = false; //把收到resume信号后执行resume动作成功的变量置false
|
|
//判断socket是否链接
|
|
//判断socket是否链接
|
|
if (!_socket.IsConnected)
|
|
if (!_socket.IsConnected)
|
|
{
|
|
{
|
|
LOG.WriteLog(eEvent.ERROR_EFEM_COMMUNICATION, Module.ToString(), $"Socket is not Conntected");
|
|
LOG.WriteLog(eEvent.ERROR_EFEM_COMMUNICATION, Module.ToString(), $"Socket is not Conntected");
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
- _currentMessage = new EfemMessage()
|
|
|
|
- {
|
|
|
|
- Operation = EfemOperation.Resume,
|
|
|
|
- Module = ModuleName.EfemRobot
|
|
|
|
- };
|
|
|
|
- _status = RState.Running;
|
|
|
|
string cmd = "RESUME\r";
|
|
string cmd = "RESUME\r";
|
|
return WriteCommand(cmd);
|
|
return WriteCommand(cmd);
|
|
}
|
|
}
|
|
@@ -426,11 +429,11 @@ namespace PunkHPX8_RT.Devices.EFEM
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
int stationNumber= _moduleStationNumberDictionary[strModuleWaferSize];
|
|
int stationNumber= _moduleStationNumberDictionary[strModuleWaferSize];
|
|
- string strFlip = flip == Flip.Down ? " Flip" : "";
|
|
|
|
|
|
+ string strFlip = flip == Flip.Down ? " FLIP" : "";
|
|
string cmd = $"PICK {stationNumber} SLOT {slot+1} ARM {_armString[hand]}{strFlip}\r";
|
|
string cmd = $"PICK {stationNumber} SLOT {slot+1} ARM {_armString[hand]}{strFlip}\r";
|
|
if(ModuleHelper.IsAligner(station)||ModuleHelper.IsSRD(station)||ModuleHelper.IsVPWCell(station) || ModuleHelper.IsPlatingCell(station))
|
|
if(ModuleHelper.IsAligner(station)||ModuleHelper.IsSRD(station)||ModuleHelper.IsVPWCell(station) || ModuleHelper.IsPlatingCell(station))
|
|
{
|
|
{
|
|
- cmd = $"PICK {stationNumber} SLOT 1 ARM {_armString[hand]}\r";
|
|
|
|
|
|
+ cmd = $"PICK {stationNumber} SLOT 1 ARM {_armString[hand]}{strFlip}\r";
|
|
}
|
|
}
|
|
_currentMessage = new EfemMessage()
|
|
_currentMessage = new EfemMessage()
|
|
{
|
|
{
|
|
@@ -482,11 +485,11 @@ namespace PunkHPX8_RT.Devices.EFEM
|
|
};
|
|
};
|
|
_status = RState.Running;
|
|
_status = RState.Running;
|
|
int stationNumber = _moduleStationNumberDictionary[strModuleWaferSize];
|
|
int stationNumber = _moduleStationNumberDictionary[strModuleWaferSize];
|
|
- string strFlip = flip == Flip.Down ? " Flip" : "";
|
|
|
|
|
|
+ string strFlip = flip == Flip.Down ? " FLIP" : "";
|
|
string cmd = $"PLACE {stationNumber} SLOT {slot+1} ARM {_armString[hand]}{strFlip}\r";
|
|
string cmd = $"PLACE {stationNumber} SLOT {slot+1} ARM {_armString[hand]}{strFlip}\r";
|
|
if (ModuleHelper.IsSRD(station) || ModuleHelper.IsVPWCell(station) || ModuleHelper.IsPlatingCell(station))
|
|
if (ModuleHelper.IsSRD(station) || ModuleHelper.IsVPWCell(station) || ModuleHelper.IsPlatingCell(station))
|
|
{
|
|
{
|
|
- cmd = $"PLACE {stationNumber} SLOT 1 ARM {_armString[hand]}\r";
|
|
|
|
|
|
+ cmd = $"PLACE {stationNumber} SLOT 1 ARM {_armString[hand]}{strFlip}\r";
|
|
}
|
|
}
|
|
if (ModuleHelper.IsAligner(station))
|
|
if (ModuleHelper.IsAligner(station))
|
|
{
|
|
{
|
|
@@ -980,12 +983,12 @@ namespace PunkHPX8_RT.Devices.EFEM
|
|
SetRobotMovingInfo(RobotAction.None, Hand.Both, ModuleName.EFEM);
|
|
SetRobotMovingInfo(RobotAction.None, Hand.Both, ModuleName.EFEM);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- else if (msg.StartsWith("ACTION_RDY"))
|
|
|
|
|
|
+ else if (msg.StartsWith("ACTION _RDY"))
|
|
{
|
|
{
|
|
_status = RState.End;
|
|
_status = RState.End;
|
|
- IsResumeRDYReceived = false;
|
|
|
|
- IsPauseRDYReceived = false;
|
|
|
|
- IsActionRDYReceived = true;
|
|
|
|
|
|
+ _isResumeRDYReceived = false;
|
|
|
|
+ _isPauseRDYReceived = false;
|
|
|
|
+ _isActionRDYReceived = true;
|
|
}
|
|
}
|
|
else if (msg.StartsWith("_RDY"))
|
|
else if (msg.StartsWith("_RDY"))
|
|
{
|
|
{
|
|
@@ -1008,18 +1011,18 @@ namespace PunkHPX8_RT.Devices.EFEM
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- else if (msg.Contains("PAUSE_RDY") || msg.Contains("RESUME_RDY"))
|
|
|
|
|
|
+ else if (msg.Contains("PAUSE _RDY"))
|
|
{
|
|
{
|
|
- switch (_currentMessage.Operation)
|
|
|
|
- {
|
|
|
|
- case EfemOperation.Pause:
|
|
|
|
- //SetRobotMovingInfo(RobotAction.None, Hand.Both, ModuleName.EfemRobot);
|
|
|
|
- IsPauseRDYReceived = true;
|
|
|
|
- break;
|
|
|
|
- case EfemOperation.Resume:
|
|
|
|
- IsResumeRDYReceived = true;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
|
|
+ _isPauseRDYReceived = true;
|
|
|
|
+ _isResumeRDYReceived = false; //收到pause把收到resume的信号置false
|
|
|
|
+ LOG.WriteLog(eEvent.INFO_TM_ROBOT, Module.ToString(), $"PAUSE_RDY was received, robot pause status is true");
|
|
|
|
+ }
|
|
|
|
+ else if (msg.Contains("RESUME _RDY"))
|
|
|
|
+ {
|
|
|
|
+ _isResumeRDYReceived = true;
|
|
|
|
+ _isPauseRDYReceived = false; //收到Resume把收到pause的信号置false
|
|
|
|
+ _isInPauseStatus = false; //取消pause状态
|
|
|
|
+ LOG.WriteLog(eEvent.INFO_TM_ROBOT, Module.ToString(), $"RESUME _RDY was received, robot pause status is false");
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|