Auto & Manual 상태 일 때 power meter 측정 위치 및 가공 위치에서만 Laser on 할 수 있도록 Interlock 추가
2개 파일 변경됨
84 ■■■■■ 파일 변경됨
SHARP_CLAS_UI/500.Equipment/400.Module/200.Scanner/Scanner.cs 33 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SHARP_CLAS_UI/500.Equipment/Equipment.cs 51 ●●●● 패치 | 보기 | raw | blame | 히스토리
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)
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)
            {