| 
															
																@@ -164,7 +164,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 _moduleAssociateHandDic = value;
 
															 | 
															
															 | 
															
																                 _moduleAssociateHandDic = value;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             }
 
															 | 
															
															 | 
															
																             }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         }
 
															 | 
															
															 | 
															
																         }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        private IoAlarmSignal _tpStatus = null;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         public GM201LVPRobot(string module, string name, string scRoot, MaterialType material, IoSensor[] dis, IoTrigger[] dos) : base(module, name)
 
															 | 
															
															 | 
															
																         public GM201LVPRobot(string module, string name, string scRoot, MaterialType material, IoSensor[] dis, IoTrigger[] dos) : base(module, name)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             Module = module;
 
															 | 
															
															 | 
															
																             Module = module;
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -203,20 +203,28 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             ConnectionManager.Instance.Subscribe($"{Name}", _connection);
 
															 | 
															
															 | 
															
																             ConnectionManager.Instance.Subscribe($"{Name}", _connection);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _thread = new PeriodicJob(10, OnTimer, $"{Module}.{Name} MonitorHandler", true);
 
															 | 
															
															 | 
															
																             _thread = new PeriodicJob(10, OnTimer, $"{Module}.{Name} MonitorHandler", true);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             ReadStationItemContents.Add("00", "Upward offset");
 
															 | 
															
															 | 
															
																             ReadStationItemContents.Add("00", "Upward offset");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            ReadStationItemContents.Add("01", "Downword offset");
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            ReadStationItemContents.Add("01", "Downward offset");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             ReadStationItemContents.Add("02", "Grip position offset");
 
															 | 
															
															 | 
															
																             ReadStationItemContents.Add("02", "Grip position offset");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             ReadStationItemContents.Add("06", "G2/P3 offset in the extending direction");
 
															 | 
															
															 | 
															
																             ReadStationItemContents.Add("06", "G2/P3 offset in the extending direction");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             ReadStationItemContents.Add("08", "Put downward offset");
 
															 | 
															
															 | 
															
																             ReadStationItemContents.Add("08", "Put downward offset");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             ReadStationItemContents.Add("70", "Get operation Movet_grip function yes/no");
 
															 | 
															
															 | 
															
																             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("80", "Put operation Move_grip function yes/no");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             ReadStationItemContents.Add("81", "Put operation dropping pattern");
 
															 | 
															
															 | 
															
																             ReadStationItemContents.Add("81", "Put operation dropping pattern");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             ReadStationItemContents.Add("50", "Slot Numbers");
 
															 | 
															
															 | 
															
																             ReadStationItemContents.Add("50", "Slot Numbers");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             ReadStationItemContents.Add("30", "Slot pitch(Left elbow,Blade1)");
 
															 | 
															
															 | 
															
																             ReadStationItemContents.Add("30", "Slot pitch(Left elbow,Blade1)");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             ReadStationItemContents.Add("31", "Slot pitch(Left elbow,Blade2)");
 
															 | 
															
															 | 
															
																             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)");
 
															 | 
															
															 | 
															
																             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();
 
															 | 
															
															 | 
															
																             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}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}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}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}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}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));
 
															 | 
															
															 | 
															
																             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}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}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}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}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}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));
 
															 | 
															
															 | 
															
																             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()
 
															 | 
															
															 | 
															
																         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}.CurrentExtensionPosition", () => CurrentExtensionPosition);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Name}.CurrentThetaPosition", () => CurrentThetaPosition);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Name}.CurrentThetaPosition", () => CurrentThetaPosition);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            DATA.Subscribe($"{Name}.CurrentZPosition", () => CurrentZPosition);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Name}.IsManipulatorBatteryLow", () => IsManipulatorBatteryLow);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Name}.IsManipulatorBatteryLow", () => IsManipulatorBatteryLow);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Name}.IsCommandExecutionReady", () => IsCommandExecutionReady);
 
															 | 
															
															 | 
															
																             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}.IsErrorOccurred", () => IsErrorOccurred);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Name}.IsControllerBatteryLow", () => IsControllerBatteryLow);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Name}.IsControllerBatteryLow", () => IsControllerBatteryLow);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Name}.IsWaferPresenceOnBlade1", () => IsWaferPresenceOnBlade1);
 
															 | 
															
															 | 
															
																             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}.MappingResult", () => ReadSlotMap);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Name}.ReadRobotParameterResultDict", () => ReadRobotParameterResult);
 
															 | 
															
															 | 
															
																             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
 
															 | 
															
															 | 
															
																                 if (_command == "RSTP")   //Reference registered position, read the save postion for station
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 {
 
															 | 
															
															 | 
															
																                 {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     // return (rdata.Length > 6 && ParseRegisteredPositionData(rdata));
 
															 | 
															
															 | 
															
																                     // 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
 
															 | 
															
															 | 
															
																                 if (_command == "RSTR")   //Reference station item value
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 {
 
															 | 
															
															 | 
															
																                 {
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -822,7 +836,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 LOG.Write(ex);
 
															 | 
															
															 | 
															
																                 LOG.Write(ex);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return false;
 
															 | 
															
															 | 
															
																                 return false;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             }
 
															 | 
															
															 | 
															
																             }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        } 
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         public bool ParsePositionAxisData(string[] pdata)
 
															 | 
															
															 | 
															
																         public bool ParsePositionAxisData(string[] pdata)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             try
 
															 | 
															
															 | 
															
																             try
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -2189,7 +2203,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         protected override bool fPickComplete(object[] param)
 
															 | 
															
															 | 
															
																         protected override bool fPickComplete(object[] param)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            if(_isError)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (_isError)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             {
 
															 | 
															
															 | 
															
																             {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 OnError("RobotError");
 
															 | 
															
															 | 
															
																                 OnError("RobotError");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return true;
 
															 | 
															
															 | 
															
																                 return true;
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -2444,13 +2458,22 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         public override void NoteError(string errortext)
 
															 | 
															
															 | 
															
																         public override void NoteError(string errortext)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _isError = true;
 
															 | 
															
															 | 
															
																             _isError = true;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            if(!string.IsNullOrEmpty(errortext))
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (!string.IsNullOrEmpty(errortext))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 OnError(errortext);
 
															 | 
															
															 | 
															
																                 OnError(errortext);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             //lock (_locker)
 
															 | 
															
															 | 
															
																             //lock (_locker)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             {
 
															 | 
															
															 | 
															
																             {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 _lstHandlers.Clear();
 
															 | 
															
															 | 
															
																                 _lstHandlers.Clear();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 _connection.ForceClear();
 
															 | 
															
															 | 
															
																                 _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()
 
															 | 
															
															 | 
															
																         //public void SenACK()
 
															 |