|
@@ -31,6 +31,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
private readonly AsyncSocket _socket;
|
|
|
private EfemMessage _currentMsg;
|
|
|
private EfemMessage _backroundMsg;
|
|
|
+ private bool _backround = false;
|
|
|
private EfemMessage _revMsg;
|
|
|
private bool _LiftIsUp = false;
|
|
|
private bool _LiftIsDown = false;
|
|
@@ -129,6 +130,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[ModuleName.EFEM] }
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
string data = _currentMsg.ToString();
|
|
|
return _socket.Write(data);
|
|
@@ -145,6 +147,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod] }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
else
|
|
@@ -156,6 +159,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod] }
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
|
}
|
|
@@ -177,6 +181,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
|
}
|
|
@@ -193,6 +198,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { "TRACK" }
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_waferPresence = string.Empty;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
@@ -211,12 +217,18 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Head = EfemMessage.MsgHead.MOV,
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
|
}
|
|
|
|
|
|
public override bool ClearError()
|
|
|
{
|
|
|
+ if(_status == RState.Running)
|
|
|
+ {
|
|
|
+ LOG.Write(eEvent.ERR_EFEM_ROBOT, ModuleName.EFEM, "EFEM is busy, please wait a minute");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
_backroundMsg = new EfemMessage
|
|
|
{
|
|
@@ -225,6 +237,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { "CLEAR" }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
@@ -245,6 +258,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
}
|
|
|
};
|
|
|
SetRobotMovingInfo(RobotAction.Extending, hand, chamber);
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
|
}
|
|
@@ -265,6 +279,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
SetRobotMovingInfo(RobotAction.Retracting, hand, chamber);
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
@@ -286,6 +301,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
SetRobotMovingInfo(RobotAction.Extending, hand, chamber);
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
@@ -307,6 +323,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
SetRobotMovingInfo(RobotAction.Retracting, hand, chamber);
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
@@ -329,6 +346,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
SetRobotMovingInfo(RobotAction.Picking, hand, station);
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
@@ -351,6 +369,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
SetRobotMovingInfo(RobotAction.Placing, hand, station);
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
@@ -373,6 +392,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
|
}
|
|
@@ -392,6 +412,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
|
}
|
|
@@ -407,6 +428,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod] }
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
|
}
|
|
@@ -422,6 +444,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod], "UP" }
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
|
}
|
|
@@ -437,6 +460,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod], "DOWN" }
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
|
}
|
|
@@ -452,6 +476,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { $"A{angle.ToString("000.00")}" }
|
|
|
};
|
|
|
|
|
|
+ _backround = false;
|
|
|
_status = RState.Running;
|
|
|
return _socket.Write(_currentMsg.ToString());
|
|
|
}
|
|
@@ -464,6 +489,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.STOWER, light.ToString(), status.ToString() }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override bool Load(ModuleName mod)
|
|
@@ -475,6 +501,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod] }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override bool Unload(ModuleName mod)
|
|
@@ -486,6 +513,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod] }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override bool ReadCarrierId(ModuleName mod)
|
|
@@ -497,6 +525,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod] }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override bool WriteCarrierId(ModuleName mod, string id)
|
|
@@ -508,6 +537,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod], id }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override bool ReadTagData(ModuleName mod)
|
|
@@ -519,6 +549,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod] }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override bool WriteTagData(ModuleName mod, string tagData)
|
|
@@ -530,6 +561,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod], tagData }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override bool Dock(ModuleName mod)
|
|
@@ -541,6 +573,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod]}
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override bool Undock(ModuleName mod)
|
|
@@ -552,6 +585,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod]}
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override bool Clamp(ModuleName mod, bool isUnloadClamp)
|
|
@@ -563,6 +597,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod] }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
_bIsUnloadClamp = isUnloadClamp;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
@@ -575,6 +610,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod] }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override bool SetThickness(ModuleName mod, string thickness)
|
|
@@ -586,6 +622,7 @@ namespace Venus_RT.Devices.EFEM
|
|
|
Parameters = new List<string> { Constant.ModuleString[mod], thickness.ToUpper() }
|
|
|
};
|
|
|
|
|
|
+ _backround = true;
|
|
|
return _socket.Write(_backroundMsg.ToString());
|
|
|
}
|
|
|
public override void SetRobotMovingInfo(RobotAction action, Hand hand, ModuleName target)
|
|
@@ -610,7 +647,6 @@ namespace Venus_RT.Devices.EFEM
|
|
|
case EfemMessage.MsgHead.ACK:
|
|
|
if (msg.Contains("ERROR"))
|
|
|
{
|
|
|
- _status = RState.End;
|
|
|
_revMsg = rec_msg;
|
|
|
}
|
|
|
|
|
@@ -777,16 +813,14 @@ namespace Venus_RT.Devices.EFEM
|
|
|
|
|
|
private void OnCommandUpdated(EfemMessage message)
|
|
|
{
|
|
|
- if(message.Operation != EfemOperation.ClearError &&
|
|
|
- message.Operation != EfemOperation.Ready &&
|
|
|
- _currentMsg?.Operation != message.Operation &&
|
|
|
- _backroundMsg.Operation != message.Operation &&
|
|
|
- message.Operation != EfemOperation.Home &&
|
|
|
- message.Operation != EfemOperation.Orgsh
|
|
|
- )
|
|
|
+ if(message.Operation != EfemOperation.Ready)
|
|
|
{
|
|
|
- LOG.Write(eEvent.ERR_EFEM_COMMON_FAILED, ModuleName.EfemRobot, $"OnCommandUpdated() unexpected return: {message.Operation}, backround: {_backroundMsg.Operation}");
|
|
|
- return;
|
|
|
+ var operation = _backround ? _backroundMsg.Operation : _currentMsg.Operation;
|
|
|
+ if (operation != message.Operation)
|
|
|
+ {
|
|
|
+ LOG.Write(eEvent.ERR_EFEM_COMMON_FAILED, ModuleName.EfemRobot, $"OnCommandUpdated() unexpected return: {message.Operation}, expect: {operation}");
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
switch(message.Operation)
|