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