|
@@ -164,7 +164,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
|
|
|
_moduleAssociateHandDic = value;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ private IoAlarmSignal _tpStatus = null;
|
|
|
public GM201LVPRobot(string module, string name, string scRoot, MaterialType material, IoSensor[] dis, IoTrigger[] dos) : base(module, name)
|
|
|
{
|
|
|
Module = module;
|
|
@@ -203,20 +203,28 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
|
|
|
ConnectionManager.Instance.Subscribe($"{Name}", _connection);
|
|
|
_thread = new PeriodicJob(10, OnTimer, $"{Module}.{Name} MonitorHandler", true);
|
|
|
ReadStationItemContents.Add("00", "Upward offset");
|
|
|
- ReadStationItemContents.Add("01", "Downword offset");
|
|
|
+ ReadStationItemContents.Add("01", "Downward offset");
|
|
|
ReadStationItemContents.Add("02", "Grip position offset");
|
|
|
ReadStationItemContents.Add("06", "G2/P3 offset in the extending direction");
|
|
|
ReadStationItemContents.Add("08", "Put downward offset");
|
|
|
ReadStationItemContents.Add("70", "Get operation Movet_grip function yes/no");
|
|
|
- ReadStationItemContents.Add("71", "Get operation rsing pattern");
|
|
|
+ ReadStationItemContents.Add("71", "Get operation rising pattern");
|
|
|
ReadStationItemContents.Add("80", "Put operation Move_grip function yes/no");
|
|
|
ReadStationItemContents.Add("81", "Put operation dropping pattern");
|
|
|
ReadStationItemContents.Add("50", "Slot Numbers");
|
|
|
ReadStationItemContents.Add("30", "Slot pitch(Left elbow,Blade1)");
|
|
|
ReadStationItemContents.Add("31", "Slot pitch(Left elbow,Blade2)");
|
|
|
- ReadStationItemContents.Add("32", "Slot pitch(Rigth elbow,Blade1)");
|
|
|
+ ReadStationItemContents.Add("32", "Slot pitch(Right elbow,Blade1)");
|
|
|
ReadStationItemContents.Add("33", "Slot pitch(Right elbow,Blade2)");
|
|
|
|
|
|
+ if (Name == "CarrierRobot")
|
|
|
+ {
|
|
|
+ _tpStatus = DEVICE.GetDevice<IoAlarmSignal>($"PM1.AlarmSignaFOUPRobotTPStatusWarning");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _tpStatus = DEVICE.GetDevice<IoAlarmSignal>($"PM1.AlarmSignaWaferRobotTPStatusWarning");
|
|
|
+ }
|
|
|
|
|
|
|
|
|
ResetPropertiesAndResponses();
|
|
@@ -476,10 +484,10 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB81", $"{Name} Robot Occurred Error:Fork 1/Pre-aligner: WaferAbsence Confirmation Time- out Error 1.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB82", $"{Name} Robot Occurred Error:Fork 1/Pre-aligner: Wafer Presence Confirmation Time-out Error 2.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB83", $"{Name} Robot Occurred Error:Fork 1/Pre-aligner: WaferAbsence Confirmation Time- out Error 2.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
- EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB88", $"{Name} Robot Occurred Error:Grip sensor Time-out Error 1.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
- EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB89", $"{Name} Robot Occurred Error:Grip sensor Time-out Error 2.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
- EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB8A", $"{Name} Robot Occurred Error:UnGrip sensor Time-out Error1.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
- EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB8B", $"{Name} Robot Occurred Error:UnGrip sensor Time-out Error2.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
+ EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB88", $"{Name} Robot Occurred Error:Wafer is not found on the Wafer transfer after having completed the wafer pick operation from source (by sensor information).Check the wafer status on the Wafer transfer.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
+ EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB89", $"{Name} Robot Occurred Error:Wafer is not found on the Wafer transfer after having completed the wafer pick operation from source (by sensor information).Check the wafer status on the Wafer transfer.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
+ EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB8A", $"{Name} Robot Occurred Error:Wafer is not found on the Wafer transfer after having completed the wafer place operation to the target(by sensor information).Check the wafer status on the Wafer transfer.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
+ EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB8B", $"{Name} Robot Occurred Error:Wafer is not found on the Wafer transfer after having completed the wafer place operation to the target(by sensor information).Check the wafer status on the Wafer transfer.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB8F", $"{Name} Robot Occurred Error:Fork 1: Plunger non-operationerror.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB90", $"{Name} Robot Occurred Error:Fork 2: Wafer Presence Confirmation Time-out Error 1.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB91", $"{Name} Robot Occurred Error:Fork 2: Wafer AbsenceConfirmation Time-out Error 1.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
@@ -492,10 +500,10 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorB9F", $"{Name} Robot Occurred Error:Fork 2: Plunger non-operationerror.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBA0", $"{Name} Robot Occurred Error:Fork 1/Pre-aligner: WaferAbsence Error.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBA1", $"{Name} Robot Occurred Error:Fork 1: Sensor StatusMismatch.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
- EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBA8", $"{Name} Robot Occurred Error:Grip sensor status Error 1.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
- EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBA9", $"{Name} Robot Occurred Error:Grip sensor status Error 2.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
- EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBAA", $"{Name} Robot Occurred Error:Ungrip sensor status Error 1.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
- EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBAB", $"{Name} Robot Occurred Error:Ungrip sensor status Error 2.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
+ EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBA8", $"{Name} Robot Occurred Error:Wafer is found on the Wafer transfer when started the wafer pick operation from source (by sensor information).Check the wafer status on the Wafer transfer.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
+ EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBA9", $"{Name} Robot Occurred Error:Wafer is found on the Wafer transfer when started the wafer pick operation from source (by sensor information).Check the wafer status on the Wafer transfer.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
+ EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBAA", $"{Name} Robot Occurred Error:Wafer is found on the Wafer transfer when started the wafer place operation to the target(by sensor information).Check the wafer status on the Wafer transfer.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
+ EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBAB", $"{Name} Robot Occurred Error:Wafer is found on the Wafer transfer when started the wafer place operation to the target(by sensor information).Check the wafer status on the Wafer transfer.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBAC", $"{Name} Robot Occurred Error:Grip sensor status mismatch.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBAD", $"{Name} Robot Occurred Error:Lifter/Grip sensor statusmismatch.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
|
EV.Subscribe(new EventItem("Alarm", $"{Name}ErrorBB0", $"{Name} Robot Occurred Error:Fork 2: Wafer Absence Error.", EventLevel.Alarm, EventType.EventUI_Notify));
|
|
@@ -533,11 +541,20 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
|
|
|
|
|
|
private void RegisterSpecialData()
|
|
|
{
|
|
|
- DATA.Subscribe($"{Name}.CurrentArm1Position", () => CurrentArm1Position);
|
|
|
- DATA.Subscribe($"{Name}.CurrentArm2Position", () => CurrentArm2Position);
|
|
|
+ if (Name != "CarrierRobot")
|
|
|
+ {
|
|
|
+ DATA.Subscribe($"{Name}.CurrentArm1Position", () => CurrentArm1Position);
|
|
|
+ DATA.Subscribe($"{Name}.CurrentArm2Position", () => CurrentArm2Position);
|
|
|
+ DATA.Subscribe($"{Name}.CurrentZPosition", () => CurrentZPosition);
|
|
|
+ DATA.Subscribe($"{Name}.IsWaferPresenceOnBlade2", () => IsWaferPresenceOnBlade2);
|
|
|
+ DATA.Subscribe($"{Name}.IsWaferPresenceOnBlade3", () => IsWaferPresenceOnBlade3);
|
|
|
+ DATA.Subscribe($"{Name}.IsWaferPresenceOnBlade4", () => IsWaferPresenceOnBlade4);
|
|
|
+ DATA.Subscribe($"{Name}.IsWaferPresenceOnBlade5", () => IsWaferPresenceOnBlade5);
|
|
|
+ }
|
|
|
+
|
|
|
+ DATA.Subscribe($"{Name}.TPStatus", () => _tpStatus.Value);
|
|
|
DATA.Subscribe($"{Name}.CurrentExtensionPosition", () => CurrentExtensionPosition);
|
|
|
DATA.Subscribe($"{Name}.CurrentThetaPosition", () => CurrentThetaPosition);
|
|
|
- DATA.Subscribe($"{Name}.CurrentZPosition", () => CurrentZPosition);
|
|
|
|
|
|
DATA.Subscribe($"{Name}.IsManipulatorBatteryLow", () => IsManipulatorBatteryLow);
|
|
|
DATA.Subscribe($"{Name}.IsCommandExecutionReady", () => IsCommandExecutionReady);
|
|
@@ -545,10 +562,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
|
|
|
DATA.Subscribe($"{Name}.IsErrorOccurred", () => IsErrorOccurred);
|
|
|
DATA.Subscribe($"{Name}.IsControllerBatteryLow", () => IsControllerBatteryLow);
|
|
|
DATA.Subscribe($"{Name}.IsWaferPresenceOnBlade1", () => IsWaferPresenceOnBlade1);
|
|
|
- DATA.Subscribe($"{Name}.IsWaferPresenceOnBlade2", () => IsWaferPresenceOnBlade2);
|
|
|
- DATA.Subscribe($"{Name}.IsWaferPresenceOnBlade3", () => IsWaferPresenceOnBlade3);
|
|
|
- DATA.Subscribe($"{Name}.IsWaferPresenceOnBlade4", () => IsWaferPresenceOnBlade4);
|
|
|
- DATA.Subscribe($"{Name}.IsWaferPresenceOnBlade5", () => IsWaferPresenceOnBlade5);
|
|
|
+
|
|
|
DATA.Subscribe($"{Name}.MappingResult", () => ReadSlotMap);
|
|
|
DATA.Subscribe($"{Name}.ReadRobotParameterResultDict", () => ReadRobotParameterResult);
|
|
|
|
|
@@ -706,7 +720,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
|
|
|
if (_command == "RSTP") //Reference registered position, read the save postion for station
|
|
|
{
|
|
|
// return (rdata.Length > 6 && ParseRegisteredPositionData(rdata));
|
|
|
- return (rdata.Length ==7 && ParsePositionAxisData(rdata));
|
|
|
+ return (rdata.Length == 7 && ParsePositionAxisData(rdata));
|
|
|
}
|
|
|
if (_command == "RSTR") //Reference station item value
|
|
|
{
|
|
@@ -822,7 +836,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
|
|
|
LOG.Write(ex);
|
|
|
return false;
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
public bool ParsePositionAxisData(string[] pdata)
|
|
|
{
|
|
|
try
|
|
@@ -2189,7 +2203,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
|
|
|
|
|
|
protected override bool fPickComplete(object[] param)
|
|
|
{
|
|
|
- if(_isError)
|
|
|
+ if (_isError)
|
|
|
{
|
|
|
OnError("RobotError");
|
|
|
return true;
|
|
@@ -2444,13 +2458,22 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
|
|
|
public override void NoteError(string errortext)
|
|
|
{
|
|
|
_isError = true;
|
|
|
- if(!string.IsNullOrEmpty(errortext))
|
|
|
+ if (!string.IsNullOrEmpty(errortext))
|
|
|
OnError(errortext);
|
|
|
+
|
|
|
//lock (_locker)
|
|
|
{
|
|
|
_lstHandlers.Clear();
|
|
|
_connection.ForceClear();
|
|
|
- _lstHandlers.AddLast(new GM201LVPRobotReadHandler(this, "RERR", "001"));
|
|
|
+ if (_tpStatus != null && !_tpStatus.Value)
|
|
|
+ {
|
|
|
+ //False是TP状态
|
|
|
+ //TP状态,不需要发
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _lstHandlers.AddLast(new GM201LVPRobotReadHandler(this, "RERR", "001"));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//public void SenACK()
|