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 ++++++++++++++++++++++--- SHARP_CLAS_UI/500.Equipment/400.Module/200.Scanner/Scanner.cs | 33 +++++++++++++++- 2 files changed, 76 insertions(+), 8 deletions(-) diff --git a/SHARP_CLAS_UI/500.Equipment/400.Module/200.Scanner/Scanner.cs b/SHARP_CLAS_UI/500.Equipment/400.Module/200.Scanner/Scanner.cs index 7269985..ad7ffdf 100644 --- a/SHARP_CLAS_UI/500.Equipment/400.Module/200.Scanner/Scanner.cs +++ b/SHARP_CLAS_UI/500.Equipment/400.Module/200.Scanner/Scanner.cs @@ -161,9 +161,38 @@ { if (!IsInitialize) return false; - RTC4Wrap.laser_signal_on(); + bool isInPosition = false; + if (_equip.Cur_Main_Recipe != null && _equip.Cur_Main_Recipe.process_info != null && _equip.Cur_Main_Recipe.panel_type_info != null) + { + double scannerA1Position = _equip.Cur_Main_Recipe.process_info.Scanner_X_A1 + _equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_A1; + double scannerA2Position = _equip.Cur_Main_Recipe.process_info.Scanner_X_A2 + _equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_A2; + double scannerB1Position = _equip.Cur_Main_Recipe.process_info.Scanner_X_B1 + _equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_B1; + double scannerB2Position = _equip.Cur_Main_Recipe.process_info.Scanner_X_B2 + _equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_B2; - _equip.Write_Scanner_Log("Laser On Success"); + object value; + _equip.sm.Get_Value(Position_Parameter_Address.Scanner_X_Power_Meter_Position, out value); + double scannerPosition = 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 |= _equip.process.ablation.Get_Is_Position_X_Power_Meter() && _equip.process.ablation.Get_Is_Position_Z_Power_Meter(); + + if (isInPosition) + { + RTC4Wrap.laser_signal_on(); + _equip.Write_Scanner_Log("Laser On Success"); + } + else + { + _equip.Write_Scanner_Log("Laser On fail, not enable position"); + return false; + } + return true; } catch (Exception ex) 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