Browse Source

1.data history删除几项CurrentPosition和wafer prensence点位
2.增加TPstatus的data hsitory
同步张工的代码

git-svn-id: http://10.4.3.168:50001/svn/Furnace@28 dbcde07d-dcf5-c148-8a84-ac3097b7778e

Xiongbing 6 months ago
parent
commit
dd390272a6

+ 47 - 24
Branch/NTP02/FrameworkLocal/RTEquipmentLibrary/HardwareUnits/Robots/HRC100Robots/GM201LVPRobot/GM201LVPRobot.cs

@@ -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()