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/Equipment.cs |   72 ++++++++++++++++++++++++-----------
 1 files changed, 49 insertions(+), 23 deletions(-)

diff --git a/SHARP_CLAS_UI/500.Equipment/Equipment.cs b/SHARP_CLAS_UI/500.Equipment/Equipment.cs
index f4b8af3..c4b34db 100644
--- a/SHARP_CLAS_UI/500.Equipment/Equipment.cs
+++ b/SHARP_CLAS_UI/500.Equipment/Equipment.cs
@@ -707,6 +707,29 @@
 
         public void Dispose()
         {
+            DateTime dt = DateTime.Now;
+
+            while(true)
+            {
+                Thread.Sleep(100);
+                bool isLaserOn;
+
+                if(scanner.Get_Laser_On(out isLaserOn) == false)
+                {
+                    isLaserOn = true;
+                }
+
+                if(isLaserOn)
+                {
+                    scanner.Set_Laser_Off();
+                }
+
+                if ((DateTime.Now - dt).TotalSeconds > 5)
+                {
+                    break;
+                }
+            }
+
             IsDisposed = true;
             Board_Control.Dispose();
             Align_vision.Dispose();
@@ -1012,6 +1035,9 @@
 
                 // Laser On Interlock 
                 // Power meter �쐞移� or 媛�怨� �쐞移섍� �븘�땺 �븣 Laser on�떆 Laser off 吏꾪뻾 �썑 Interlock.
+
+                bool isInPosition = false;
+
                 if (Cur_Main_Recipe != null && Cur_Main_Recipe.process_info != null && Cur_Main_Recipe.panel_type_info != null)
                 {
                     double scannerA1Position = Cur_Main_Recipe.process_info.Scanner_X_A1 + Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_A1;
@@ -1019,42 +1045,42 @@
                     double scannerB1Position = Cur_Main_Recipe.process_info.Scanner_X_B1 + Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_B1;
                     double scannerB2Position = Cur_Main_Recipe.process_info.Scanner_X_B2 + Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_B2;
 
+                    double stageA1Position = Cur_Main_Recipe.process_info.Scanner_Y_A1 + Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_A1;
+                    double stageA2Position = Cur_Main_Recipe.process_info.Scanner_Y_A2 + Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_A2;
+                    double stageB1Position = Cur_Main_Recipe.process_info.Scanner_Y_B1 + Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_B1;
+                    double stageB2Position = Cur_Main_Recipe.process_info.Scanner_Y_B2 + Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_B2;
+
                     object value;
-                    sm.Get_Value(Position_Parameter_Address.Scanner_X_Power_Meter_Position, out value);
+                    sm.Get_Value(RS_Automation_Motor_Address.Ablation_X_Actual_Position, out value);
                     double scannerPosition = double.Parse($"{value}");
 
-                    bool isInPosition = false;
+                    sm.Get_Value(RS_Automation_Motor_Address.Ablation_Y_1_Actual_Position, out value);
+                    double stageAPosition = double.Parse($"{value}");
+                    sm.Get_Value(RS_Automation_Motor_Address.Ablation_Y_2_Actual_Position, out value);
+                    double stageBPosition = double.Parse($"{value}");
 
-                    isInPosition |= scannerA1Position - 10 <= scannerPosition && scannerPosition <= scannerA1Position + 10;
-                    isInPosition |= scannerA2Position - 10 <= scannerPosition && scannerPosition <= scannerA2Position + 10;
-                    isInPosition |= scannerB1Position - 10 <= scannerPosition && scannerPosition <= scannerB1Position + 10;
-                    isInPosition |= scannerB2Position - 10 <= scannerPosition && scannerPosition <= scannerB2Position + 10;
+
+                    isInPosition |= (scannerA1Position - 10 <= scannerPosition && scannerPosition <= scannerA1Position + 10) && (stageA1Position - 10 <= stageAPosition && stageAPosition <= stageA1Position + 10);
+                    isInPosition |= (scannerA2Position - 10 <= scannerPosition && scannerPosition <= scannerA2Position + 10) && (stageA2Position - 10 <= stageAPosition && stageAPosition <= stageA2Position + 10);
+                    isInPosition |= (scannerB1Position - 10 <= scannerPosition && scannerPosition <= scannerB1Position + 10) && (stageB1Position - 10 <= stageBPosition && stageBPosition <= stageB1Position + 10);
+                    isInPosition |= (scannerB2Position - 10 <= scannerPosition && scannerPosition <= scannerB2Position + 10) && (stageB2Position - 10 <= stageBPosition && stageBPosition <= stageB2Position + 10);
+
                     isInPosition |= process.ablation.Get_Is_Position_X_Power_Meter() && process.ablation.Get_Is_Position_Z_Power_Meter();
-
-                    if(isInPosition == false)
-                    {
-                        if (sm.Get_Bit(Input_Memory_Address.Laser_Active))
-                        {
-                            scanner.Set_Laser_Off();
-                            Interlock_Manager.Add_Interlock_Msg("Laser can't on.", "Please move power meter position.");
-                        }
-                    }
                 }
                 else
                 {
-                    bool isInPosition = false;
                     isInPosition |= process.ablation.Get_Is_Position_X_Power_Meter() && process.ablation.Get_Is_Position_Z_Power_Meter();
+                }
 
-                    if (isInPosition == false)
+                if (isInPosition == false)
+                {
+                    if (sm.Get_Bit(Input_Memory_Address.Laser_Active))
                     {
-                        if (sm.Get_Bit(Input_Memory_Address.Laser_Active))
-                        {
-                            scanner.Set_Laser_Off();
-                            Interlock_Manager.Add_Interlock_Msg("Laser can't on.", "Please move power meter position.");
-                        }
+                        scanner.Set_Laser_Off();
+                        Interlock_Manager.Add_Interlock_Msg("Laser can't on.", "Please move power meter position.");
                     }
                 }
-                
+
             }
             catch(Exception e)
             {

--
Gitblit v1.9.3