From f0839d9fdd9dc74eef0eafc5562fabf9d7259f08 Mon Sep 17 00:00:00 2001
From: 천호석 <hosuk1418@naver.com>
Date: 수, 14 12월 2022 17:46:40 +0900
Subject: [PATCH] 1. Laser on 시 Stage position도 같이 확인 하도록 변경. 2. Auto power 측정, Manual power 측정  전후  Scanner Z 축 대기 위치 이동 하도록 수정 3. 프로그램 종료 시 Laser off 하도록 수정. 종료 대기시간 5sec

---
 SHARP_CLAS_UI/500.Equipment/700.Unit/200.Process/Ablation.cs |  213 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 188 insertions(+), 25 deletions(-)

diff --git a/SHARP_CLAS_UI/500.Equipment/700.Unit/200.Process/Ablation.cs b/SHARP_CLAS_UI/500.Equipment/700.Unit/200.Process/Ablation.cs
index 4258669..fa86391 100644
--- a/SHARP_CLAS_UI/500.Equipment/700.Unit/200.Process/Ablation.cs
+++ b/SHARP_CLAS_UI/500.Equipment/700.Unit/200.Process/Ablation.cs
@@ -109,11 +109,28 @@
             pauseDisableList.Add(AblationSteps.S4135_POSITION_CHECK);
             pauseDisableList.Add(AblationSteps.S4215_ABLATION_PROCESS_WAIT);
             pauseDisableList.Add(AblationSteps.S4225_POSITION_CHECK);
-
+            
             pauseDisableList.Add(AblationSteps.S5220_SCANNER_MOVE_WAIT);
 
-            MotorX.Check_Jog_Interlock = Jog_Interlock;
-            MotorX.Check_Move_Interlock = Move_Interlock;
+            pauseDisableList.Add(AblationSteps.S5320_LASER_ON);
+            pauseDisableList.Add(AblationSteps.S5330_LASER_ON_CHECK);
+            pauseDisableList.Add(AblationSteps.S5340_POWER_MEASUREMENT_START);
+            pauseDisableList.Add(AblationSteps.S5350_POWER_MEASUREMENT);
+            pauseDisableList.Add(AblationSteps.S5360_POWER_MEASUREMENT_END);
+            pauseDisableList.Add(AblationSteps.S5370_LASER_OFF);
+            pauseDisableList.Add(AblationSteps.S5380_LASER_OFF_CHECK);
+
+            pauseDisableList.Add(AblationSteps.S5420_LASER_ON);
+            pauseDisableList.Add(AblationSteps.S5430_LASER_ON_CHECK);
+            pauseDisableList.Add(AblationSteps.S5440_POWER_MEASUREMENT_START);
+            pauseDisableList.Add(AblationSteps.S5450_POWER_MEASUREMENT);
+            pauseDisableList.Add(AblationSteps.S5460_POWER_MEASUREMENT_END);
+            pauseDisableList.Add(AblationSteps.S5470_LASER_OFF);
+            pauseDisableList.Add(AblationSteps.S5480_LASER_OFF_CHECK);
+            pauseDisableList.Add(AblationSteps.S6100_MOVE_WAIT);
+
+            MotorX.Check_Jog_Interlock = Jog_Interlock_MotorX;
+            MotorX.Check_Move_Interlock = Move_Interlock_MotorX;
             MotorZ.Check_Jog_Interlock = Jog_Interlock;
             MotorZ.Check_Move_Interlock = Move_Interlock;
 
@@ -124,6 +141,40 @@
         #endregion
 
         #region Function
+        private bool Move_Interlock_MotorX()
+        {
+            if (equipment.User.Level != En_User_Level.Master && equipment.Door_Opened)
+            {
+                return true;
+            }
+
+            double position = Get_Scanner_Z_A1_Stay_Position();
+
+            if (MotorZ.Is_Inposition(position, equipment.Setting.Inposition_Offset) == false)
+            {
+                return true;
+            }
+
+            return false;
+        }
+
+        private bool Jog_Interlock_MotorX(bool positive)
+        {
+            if (equipment.User.Level != En_User_Level.Master && equipment.Door_Opened)
+            {
+                return true;
+            }
+
+            double position = Get_Scanner_Z_A1_Stay_Position();
+
+            if (MotorZ.Is_Inposition(position, equipment.Setting.Inposition_Offset) == false)
+            {
+                return true;
+            }
+
+            return false;
+        }
+
         private bool Move_Interlock()
         {
             if (equipment.User.Level != En_User_Level.Master && equipment.Door_Opened)
@@ -196,6 +247,7 @@
                 if (on)
                 {
                     equipment.scanner.Set_Stop();
+                    equipment.scanner.Set_Laser_Off();
                 }
             }
         }
@@ -1310,6 +1362,19 @@
 
         private void Seq_Power_Measure()
         {
+            //Laser 異쒖궗 �쐞移섏뿉�꽌 Power Meter�쐞移섍� �븘�땺 �븣 Laser off �썑 泥� Step�쑝濡� �씠�룞.
+            if((AblationSteps.S5320_LASER_ON <= Step && Step <= AblationSteps.S5360_POWER_MEASUREMENT_END) ||
+                (AblationSteps.S5420_LASER_ON <= Step && Step <= AblationSteps.S5460_POWER_MEASUREMENT_END))
+            {
+                if (equipment.process.ablation.Get_Is_Position_X_Power_Meter() == false || equipment.process.ablation.Get_Is_Position_Z_Power_Meter() == false)
+                {
+                    if (equipment.scanner.Set_Laser_Off())
+                    {
+                        Step = AblationSteps.S0000_WAIT;
+                    }
+                }
+            }
+
             switch (Step)
             {
                 case AblationSteps.S5000_AUTO_POWER_START:
@@ -1331,7 +1396,7 @@
                         else
                         {
                             auto_power_view.Add_Info($"Power Meter Status Fail");
-                            Step = AblationSteps.S5999_AUTO_POWER_END;
+                            Step = AblationSteps.S6000_MOVE_STAY_POSITION;
                         }
                         break;
                     }
@@ -1352,32 +1417,81 @@
                 case AblationSteps.S5130_ZERO_SET:
                     {
                         equipment.power_meter.Set_Zero();
-                        Step = AblationSteps.S5210_SCANNER_POSITION_MOVE;
+                        Step = AblationSteps.S5150_MOVE_Z_STAY_POSITION;
                         break;
                     }
-                case AblationSteps.S5210_SCANNER_POSITION_MOVE:
+                case AblationSteps.S5150_MOVE_Z_STAY_POSITION:
+                    {
+                        double position = Get_Scanner_Z_A1_Stay_Position();
+
+                        if (MotorZ.Move_Absolute_Pos(position, 500))
+                        {
+                            Step = AblationSteps.S5160_POSITION_CHECK;
+                        }
+                        break;
+                    }
+                case AblationSteps.S5160_POSITION_CHECK:
+                    {
+                        double position = Get_Scanner_Z_A1_Stay_Position();
+
+                        if (MotorZ.MotionComplete)
+                        {
+                            if (MotorZ.Is_Inposition(position, equipment.Setting.Inposition_Offset))
+                            {
+                                auto_power_view.Add_Info($"Scanner Position Z WAIT MOVE");
+                                Step = AblationSteps.S5210_SCANNER_POSITION_X_MOVE;
+                            }
+                            else
+                            {
+                                Step = AblationSteps.S5150_MOVE_Z_STAY_POSITION;
+                            }
+                        }
+                        break;
+                    }
+                case AblationSteps.S5210_SCANNER_POSITION_X_MOVE:
                     {
                         if (equipment.process.ablation.Move_X_Power_Meter_Position())
                         {
-                            if (equipment.process.ablation.Move_Z_Power_Meter_Position())
-                            {
-                                Step = AblationSteps.S5220_SCANNER_MOVE_WAIT;
-                            }
+                            Step = AblationSteps.S5220_SCANNER_MOVE_WAIT;
                         }
                         break;
                     }
                 case AblationSteps.S5220_SCANNER_MOVE_WAIT:
                     {
-                        if (equipment.process.ablation.MotorX.MotionComplete && equipment.process.ablation.MotorZ.MotionComplete)
+                        if (equipment.process.ablation.MotorX.MotionComplete)
                         {
-                            if (equipment.process.ablation.Get_Is_Position_X_Power_Meter() && equipment.process.ablation.Get_Is_Position_Z_Power_Meter())
+                            if (equipment.process.ablation.Get_Is_Position_X_Power_Meter())
                             {
-                                auto_power_view.Add_Info($"Scanner Position Move");
+                                auto_power_view.Add_Info($"Scanner Position X Power meter Move");
+                                Step = AblationSteps.S5230_SCANNER_POSITION_Z_MOVE;
+                            }
+                            else
+                            {
+                                Step = AblationSteps.S5210_SCANNER_POSITION_X_MOVE;
+                            }
+                        }
+                        break;
+                    }
+                case AblationSteps.S5230_SCANNER_POSITION_Z_MOVE:
+                    {
+                        if (equipment.process.ablation.Move_Z_Power_Meter_Position())
+                        {
+                            Step = AblationSteps.S5240_SCANNER_MOVE_WAIT;
+                        }
+                        break;
+                    }
+                case AblationSteps.S5240_SCANNER_MOVE_WAIT:
+                    {
+                        if (equipment.process.ablation.MotorZ.MotionComplete)
+                        {
+                            if (equipment.process.ablation.Get_Is_Position_Z_Power_Meter())
+                            {
+                                auto_power_view.Add_Info($"Scanner Position Z Power meter Move");
                                 Step = AblationSteps.S5300_SCANNER_INIT;
                             }
                             else
                             {
-                                Step = AblationSteps.S5210_SCANNER_POSITION_MOVE;
+                                Step = AblationSteps.S5230_SCANNER_POSITION_Z_MOVE;
                             }
                         }
                         break;
@@ -1413,10 +1527,20 @@
                     }
                 case AblationSteps.S5320_LASER_ON:
                     {
-                        if (equipment.scanner.Set_Laser_On())
+                        if (equipment.process.ablation.MotorX.MotionComplete && equipment.process.ablation.MotorZ.MotionComplete)
                         {
-                            auto_power_view.Add_Info($"Laser On.");
-                            Step = AblationSteps.S5330_LASER_ON_CHECK;
+                            if (equipment.process.ablation.Get_Is_Position_X_Power_Meter() && equipment.process.ablation.Get_Is_Position_Z_Power_Meter())
+                            {
+                                if (equipment.scanner.Set_Laser_On())
+                                {
+                                    auto_power_view.Add_Info($"Laser On.");
+                                    Step = AblationSteps.S5330_LASER_ON_CHECK;
+                                }
+                            }
+                            else
+                            {
+                                Step = AblationSteps.S0000_WAIT;
+                            }
                         }
                         break;
                     }
@@ -1497,7 +1621,7 @@
                         {
                             //alarm.
                             Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0942_POWER_COUNT_IS_EMPTY);
-                            Step = AblationSteps.S5999_AUTO_POWER_END;
+                            Step = AblationSteps.S6000_MOVE_STAY_POSITION;
                         }
 
                         double averager = lst_power.Average();
@@ -1525,7 +1649,7 @@
                             auto_power_view.Add_Info($"Max : {lst_power.Max()}");
                             auto_power_view.Add_Info($"Min : {lst_power.Min()}");
                             Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0940_TARGET_POWER_ERROR);
-                            Step = AblationSteps.S5999_AUTO_POWER_END;
+                            Step = AblationSteps.S6000_MOVE_STAY_POSITION;
                         }
                         break;
                     }
@@ -1558,9 +1682,20 @@
                     }
                 case AblationSteps.S5420_LASER_ON:
                     {
-                        if (equipment.scanner.Set_Laser_On())
+                        if (equipment.process.ablation.MotorX.MotionComplete && equipment.process.ablation.MotorZ.MotionComplete)
                         {
-                            Step = AblationSteps.S5430_LASER_ON_CHECK;
+                            if (equipment.process.ablation.Get_Is_Position_X_Power_Meter() && equipment.process.ablation.Get_Is_Position_Z_Power_Meter())
+                            {
+                                if (equipment.scanner.Set_Laser_On())
+                                {
+                                    auto_power_view.Add_Info($"Laser On.");
+                                    Step = AblationSteps.S5430_LASER_ON_CHECK;
+                                }
+                            }
+                            else
+                            {
+                                Step = AblationSteps.S0000_WAIT;
+                            }
                         }
                         break;
                     }
@@ -1641,7 +1776,7 @@
                         {
                             //alarm.
                             Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0942_POWER_COUNT_IS_EMPTY);
-                            Step = AblationSteps.S5999_AUTO_POWER_END;
+                            Step = AblationSteps.S6000_MOVE_STAY_POSITION;
                         }
 
                         double averager = lst_power.Average();
@@ -1658,7 +1793,7 @@
                             auto_power_view.Add_Info($"Max : {lst_power.Max()}");
                             auto_power_view.Add_Info($"Min : {lst_power.Min()}");
 
-                            Step = AblationSteps.S5999_AUTO_POWER_END;
+                            Step = AblationSteps.S6000_MOVE_STAY_POSITION;
                         }
                         else
                         {
@@ -1684,7 +1819,7 @@
                                 auto_power_view.Add_Info($"Max : {lst_power.Max()}");
                                 auto_power_view.Add_Info($"Min : {lst_power.Min()}");
                                 Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0941_RECIPE_POWER_ERROR);
-                                Step = AblationSteps.S5999_AUTO_POWER_END;
+                                Step = AblationSteps.S6000_MOVE_STAY_POSITION;
                             }
                         }
                         break;
@@ -1710,8 +1845,36 @@
                         Step = AblationSteps.S5410_RECIPE_POWER_SET;
                         break;
                     }
-                case AblationSteps.S5999_AUTO_POWER_END:
+                case AblationSteps.S6000_MOVE_STAY_POSITION:
                     {
+                        double position = Get_Scanner_Z_A1_Stay_Position();
+
+                        if (MotorZ.Move_Absolute_Pos(position, 500))
+                        {
+                            Step = AblationSteps.S6100_MOVE_WAIT;
+                        }
+                        break;
+                    }
+                case AblationSteps.S6100_MOVE_WAIT:
+                    {
+                        double position = Get_Scanner_Z_A1_Stay_Position();
+
+                        if (MotorZ.MotionComplete)
+                        {
+                            if (MotorZ.Is_Inposition(position, equipment.Setting.Inposition_Offset))
+                            {
+                                auto_power_view.Add_Info($"Scanner Stay Position Move");
+                                Step = AblationSteps.S5999_AUTO_POWER_END;
+                            }
+                            else
+                            {
+                                Step = AblationSteps.S6000_MOVE_STAY_POSITION;
+                            }
+                        }
+                        break;
+                    }
+                case AblationSteps.S5999_AUTO_POWER_END:
+                    {                                                                                                                                                                                                      
                         Parameter_Power parameter = equipment.Power_Parameter.Clone();
                         parameter.Measure_Date = DateTime.Now;
                         Parameter_Power_Manager.Instance.Save_Parameter_Power(parameter);

--
Gitblit v1.9.3