From 58a2c7fa01a617e6de69b85905bb645f08fac656 Mon Sep 17 00:00:00 2001
From: 천호석 <hosuk1418@naver.com>
Date: 화, 06 12월 2022 13:51:35 +0900
Subject: [PATCH]  Auto & Manual 상태 일 때 power meter 측정 위치 및 가공 위치에서만 Laser on 할 수 있도록 Interlock 추가

---
 SHARP_CLAS_UI/500.Equipment/Equipment.cs |   51 +++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 45 insertions(+), 6 deletions(-)

diff --git a/SHARP_CLAS_UI/500.Equipment/Equipment.cs b/SHARP_CLAS_UI/500.Equipment/Equipment.cs
index 4a9ce5f..03a63d7 100644
--- a/SHARP_CLAS_UI/500.Equipment/Equipment.cs
+++ b/SHARP_CLAS_UI/500.Equipment/Equipment.cs
@@ -1006,16 +1006,55 @@
                     }
                     else
                     {
-                        if (process.ablation.Get_Is_Position_X_Power_Meter() && process.ablation.Get_Is_Position_Z_Power_Meter())
+                        
+                    }
+                }
+
+                // Laser On Interlock 
+                // Power meter �쐞移� or 媛�怨� �쐞移섍� �븘�땺 �븣 Laser on�떆 Laser off 吏꾪뻾 �썑 Interlock.
+                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;
+                    double scannerA2Position = Cur_Main_Recipe.process_info.Scanner_X_A2 + Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_A2;
+                    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;
+
+                    object value;
+                    sm.Get_Value(Position_Parameter_Address.Scanner_X_Power_Meter_Position, out value);
+                    double scannerPosition = double.Parse($"{value}");
+
+                    bool isInPosition = false;
+
+                    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 |= 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))
                         {
-                            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.");
                         }
                     }
                 }
+                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 (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.");
+                        }
+                    }
+                }
+                
             }
             catch(Exception e)
             {

--
Gitblit v1.9.3