SHARP_CLAS_UI/100.Screen/Form_Maintenance_Laser.cs | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
SHARP_CLAS_UI/300.Etc_Screen/Form_Scanner_View.cs | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
SHARP_CLAS_UI/500.Equipment/400.Module/200.Scanner/Scanner.cs | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
SHARP_CLAS_UI/500.Equipment/700.Unit/200.Process/Ablation.cs | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
SHARP_CLAS_UI/500.Equipment/700.Unit/Base/AblationUnit.cs | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
SHARP_CLAS_UI/500.Equipment/Equipment.cs | ●●●●● 패치 | 보기 | raw | blame | 히스토리 |
SHARP_CLAS_UI/100.Screen/Form_Maintenance_Laser.cs
@@ -18,9 +18,13 @@ S1110_MEASURE_MODE_SET_W, S1120_MEASURE_MODE_SET_CHECK, S1130_ZERO_SET, S1150_STAY_POSITION_MOVE, S1160_POSITION_CHECK, S1210_SCANNER_POSITION_MOVE, S1210_SCANNER_POSITION_X_MOVE, S1220_SCANNER_MOVE_WAIT, S1230_SCANNER_POSITION_Z_MOVE, S1240_SCANNER_MOVE_WAIT, S1300_SCANNER_INIT, S1310_POWER_SET, S1320_LASER_ON, @@ -254,29 +258,80 @@ case En_Manual_Measure.S1130_ZERO_SET: { power_meter.Set_Zero(); Measure_Seq = En_Manual_Measure.S1210_SCANNER_POSITION_MOVE; Measure_Seq = En_Manual_Measure.S1150_STAY_POSITION_MOVE; break; } case En_Manual_Measure.S1210_SCANNER_POSITION_MOVE: case En_Manual_Measure.S1150_STAY_POSITION_MOVE: { double position = _Parent._equip.process.ablation.Get_Scanner_Z_A1_Stay_Position(); if (_Parent._equip.process.ablation.MotorZ.Move_Absolute_Pos(position, 500)) { Measure_Seq = En_Manual_Measure.S1160_POSITION_CHECK; } break; } case En_Manual_Measure.S1160_POSITION_CHECK: { double position = _Parent._equip.process.ablation.Get_Scanner_Z_A1_Stay_Position(); if (_Parent._equip.process.ablation.MotorZ.MotionComplete) { if (_Parent._equip.process.ablation.MotorZ.Is_Inposition(position, _Parent._equip.Setting.Inposition_Offset)) { Measure_Seq = En_Manual_Measure.S1210_SCANNER_POSITION_X_MOVE; } else { Measure_Seq = En_Manual_Measure.S1150_STAY_POSITION_MOVE; } } break; } case En_Manual_Measure.S1210_SCANNER_POSITION_X_MOVE: { if (_Parent._equip.process.ablation.Move_X_Power_Meter_Position()) { if (_Parent._equip.process.ablation.Move_Z_Power_Meter_Position()) { lb_Position_Move.BackColor = System.Drawing.Color.Lime; Measure_Seq = En_Manual_Measure.S1220_SCANNER_MOVE_WAIT; } } break; } case En_Manual_Measure.S1220_SCANNER_MOVE_WAIT: { if (_Parent._equip.process.ablation.MotorX.MotionComplete && _Parent._equip.process.ablation.MotorZ.MotionComplete) if (_Parent._equip.process.ablation.MotorX.MotionComplete) { if (_Parent._equip.process.ablation.Get_Is_Position_X_Power_Meter() && _Parent._equip.process.ablation.Get_Is_Position_Z_Power_Meter()) if (_Parent._equip.process.ablation.Get_Is_Position_X_Power_Meter()) { Measure_Seq = En_Manual_Measure.S1230_SCANNER_POSITION_Z_MOVE; } else { Measure_Seq = En_Manual_Measure.S1210_SCANNER_POSITION_X_MOVE; } } break; } case En_Manual_Measure.S1230_SCANNER_POSITION_Z_MOVE: { if (_Parent._equip.process.ablation.Move_X_Power_Meter_Position()) { Measure_Seq = En_Manual_Measure.S1240_SCANNER_MOVE_WAIT; } break; } case En_Manual_Measure.S1240_SCANNER_MOVE_WAIT: { if (_Parent._equip.process.ablation.MotorZ.MotionComplete) { if (_Parent._equip.process.ablation.Get_Is_Position_Z_Power_Meter()) { Measure_Seq = En_Manual_Measure.S1300_SCANNER_INIT; } else { Measure_Seq = En_Manual_Measure.S1230_SCANNER_POSITION_Z_MOVE; } } break; } SHARP_CLAS_UI/300.Etc_Screen/Form_Scanner_View.cs
@@ -127,6 +127,44 @@ tb_Waveform_Style.Text = ((Scanner_Recipe.Ablation_Style)_Parent._equip.Cur_Main_Recipe.process_info.Waveform).ToString(); } bool isInPosition = false; if (_Parent._equip.Cur_Main_Recipe != null && _Parent._equip.Cur_Main_Recipe.process_info != null && _Parent._equip.Cur_Main_Recipe.panel_type_info != null) { double scannerA1Position = _Parent._equip.Cur_Main_Recipe.process_info.Scanner_X_A1 + _Parent._equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_A1; double scannerA2Position = _Parent._equip.Cur_Main_Recipe.process_info.Scanner_X_A2 + _Parent._equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_A2; double scannerB1Position = _Parent._equip.Cur_Main_Recipe.process_info.Scanner_X_B1 + _Parent._equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_B1; double scannerB2Position = _Parent._equip.Cur_Main_Recipe.process_info.Scanner_X_B2 + _Parent._equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_X_B2; double stageA1Position = _Parent._equip.Cur_Main_Recipe.process_info.Scanner_Y_A1 + _Parent._equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_A1; double stageA2Position = _Parent._equip.Cur_Main_Recipe.process_info.Scanner_Y_A2 + _Parent._equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_A2; double stageB1Position = _Parent._equip.Cur_Main_Recipe.process_info.Scanner_Y_B1 + _Parent._equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_B1; double stageB2Position = _Parent._equip.Cur_Main_Recipe.process_info.Scanner_Y_B2 + _Parent._equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_B2; object value; _Parent._equip.sm.Get_Value(RS_Automation_Motor_Address.Ablation_X_Actual_Position, out value); double scannerPosition = double.Parse($"{value}"); _Parent._equip.sm.Get_Value(RS_Automation_Motor_Address.Ablation_Y_1_Actual_Position, out value); double stageAPosition = double.Parse($"{value}"); _Parent._equip.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) && (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 |= _Parent._equip.process.ablation.Get_Is_Position_X_Power_Meter() && _Parent._equip.process.ablation.Get_Is_Position_Z_Power_Meter(); } else { isInPosition |= _Parent._equip.process.ablation.Get_Is_Position_X_Power_Meter() && _Parent._equip.process.ablation.Get_Is_Position_Z_Power_Meter(); } foreach (Control control in Controls) { control.Enabled = isInPosition; } TimeSpan ts = DateTime.Now - dt; } catch (Exception ex) SHARP_CLAS_UI/500.Equipment/400.Module/200.Scanner/Scanner.cs
@@ -169,18 +169,29 @@ 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; double stageA1Position = _equip.Cur_Main_Recipe.process_info.Scanner_Y_A1 + _equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_A1; double stageA2Position = _equip.Cur_Main_Recipe.process_info.Scanner_Y_A2 + _equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_A2; double stageB1Position = _equip.Cur_Main_Recipe.process_info.Scanner_Y_B1 + _equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_B1; double stageB2Position = _equip.Cur_Main_Recipe.process_info.Scanner_Y_B2 + _equip.Cur_Main_Recipe.panel_type_info.Scanner_Offset_Y_B2; object value; _equip.sm.Get_Value(Position_Parameter_Address.Scanner_X_Power_Meter_Position, out value); _equip.sm.Get_Value(RS_Automation_Motor_Address.Ablation_X_Actual_Position, out value); double scannerPosition = double.Parse($"{value}"); _equip.sm.Get_Value(RS_Automation_Motor_Address.Ablation_Y_1_Actual_Position, out value); double stageAPosition = double.Parse($"{value}"); _equip.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); } else { isInPosition |= _equip.process.ablation.Get_Is_Position_X_Power_Meter() && _equip.process.ablation.Get_Is_Position_Z_Power_Meter(); } if (isInPosition) { SHARP_CLAS_UI/500.Equipment/700.Unit/200.Process/Ablation.cs
@@ -127,6 +127,7 @@ pauseDisableList.Add(AblationSteps.S5460_POWER_MEASUREMENT_END); pauseDisableList.Add(AblationSteps.S5470_LASER_OFF); pauseDisableList.Add(AblationSteps.S5480_LASER_OFF_CHECK); pauseDisableList.Add(AblationSteps.S6100_MOVE_WAIT); MotorX.Check_Jog_Interlock = Jog_Interlock_MotorX; MotorX.Check_Move_Interlock = Move_Interlock_MotorX; @@ -291,7 +292,7 @@ if (equipment.equip_mode == En_Equipment_Mode.Pause) { if (pauseDisableList.Contains(Step) != false) if (pauseDisableList.Contains(Step) == false) { UnitMode = En_Equipment_Mode.Pause; return; @@ -1395,7 +1396,7 @@ else { auto_power_view.Add_Info($"Power Meter Status Fail"); Step = AblationSteps.S5999_AUTO_POWER_END; Step = AblationSteps.S6000_MOVE_STAY_POSITION; } break; } @@ -1416,32 +1417,81 @@ case AblationSteps.S5130_ZERO_SET: { equipment.power_meter.Set_Zero(); Step = AblationSteps.S5210_SCANNER_POSITION_MOVE; Step = AblationSteps.S5150_MOVE_Z_STAY_POSITION; break; } case AblationSteps.S5210_SCANNER_POSITION_MOVE: case AblationSteps.S5150_MOVE_Z_STAY_POSITION: { double position = Get_Scanner_Z_A1_Stay_Position(); if (MotorZ.Move_Absolute_Pos(position, 500)) { Step = AblationSteps.S5160_POSITION_CHECK; } break; } case AblationSteps.S5160_POSITION_CHECK: { double position = Get_Scanner_Z_A1_Stay_Position(); if (MotorZ.MotionComplete) { if (MotorZ.Is_Inposition(position, equipment.Setting.Inposition_Offset)) { auto_power_view.Add_Info($"Scanner Position Z WAIT MOVE"); Step = AblationSteps.S5210_SCANNER_POSITION_X_MOVE; } else { Step = AblationSteps.S5150_MOVE_Z_STAY_POSITION; } } break; } case AblationSteps.S5210_SCANNER_POSITION_X_MOVE: { if (equipment.process.ablation.Move_X_Power_Meter_Position()) { if (equipment.process.ablation.Move_Z_Power_Meter_Position()) { Step = AblationSteps.S5220_SCANNER_MOVE_WAIT; } } break; } case AblationSteps.S5220_SCANNER_MOVE_WAIT: { if (equipment.process.ablation.MotorX.MotionComplete && equipment.process.ablation.MotorZ.MotionComplete) if (equipment.process.ablation.MotorX.MotionComplete) { if (equipment.process.ablation.Get_Is_Position_X_Power_Meter() && equipment.process.ablation.Get_Is_Position_Z_Power_Meter()) if (equipment.process.ablation.Get_Is_Position_X_Power_Meter()) { auto_power_view.Add_Info($"Scanner Position Move"); auto_power_view.Add_Info($"Scanner Position X Power meter Move"); Step = AblationSteps.S5230_SCANNER_POSITION_Z_MOVE; } else { Step = AblationSteps.S5210_SCANNER_POSITION_X_MOVE; } } break; } case AblationSteps.S5230_SCANNER_POSITION_Z_MOVE: { if (equipment.process.ablation.Move_Z_Power_Meter_Position()) { Step = AblationSteps.S5240_SCANNER_MOVE_WAIT; } break; } case AblationSteps.S5240_SCANNER_MOVE_WAIT: { if (equipment.process.ablation.MotorZ.MotionComplete) { if (equipment.process.ablation.Get_Is_Position_Z_Power_Meter()) { auto_power_view.Add_Info($"Scanner Position Z Power meter Move"); Step = AblationSteps.S5300_SCANNER_INIT; } else { Step = AblationSteps.S5210_SCANNER_POSITION_MOVE; Step = AblationSteps.S5230_SCANNER_POSITION_Z_MOVE; } } break; @@ -1571,7 +1621,7 @@ { //alarm. Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0942_POWER_COUNT_IS_EMPTY); Step = AblationSteps.S5999_AUTO_POWER_END; Step = AblationSteps.S6000_MOVE_STAY_POSITION; } double averager = lst_power.Average(); @@ -1599,7 +1649,7 @@ auto_power_view.Add_Info($"Max : {lst_power.Max()}"); auto_power_view.Add_Info($"Min : {lst_power.Min()}"); Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0940_TARGET_POWER_ERROR); Step = AblationSteps.S5999_AUTO_POWER_END; Step = AblationSteps.S6000_MOVE_STAY_POSITION; } break; } @@ -1726,7 +1776,7 @@ { //alarm. Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0942_POWER_COUNT_IS_EMPTY); Step = AblationSteps.S5999_AUTO_POWER_END; Step = AblationSteps.S6000_MOVE_STAY_POSITION; } double averager = lst_power.Average(); @@ -1743,7 +1793,7 @@ auto_power_view.Add_Info($"Max : {lst_power.Max()}"); auto_power_view.Add_Info($"Min : {lst_power.Min()}"); Step = AblationSteps.S5999_AUTO_POWER_END; Step = AblationSteps.S6000_MOVE_STAY_POSITION; } else { @@ -1769,7 +1819,7 @@ auto_power_view.Add_Info($"Max : {lst_power.Max()}"); auto_power_view.Add_Info($"Min : {lst_power.Min()}"); Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0941_RECIPE_POWER_ERROR); Step = AblationSteps.S5999_AUTO_POWER_END; Step = AblationSteps.S6000_MOVE_STAY_POSITION; } } break; @@ -1795,6 +1845,34 @@ Step = AblationSteps.S5410_RECIPE_POWER_SET; break; } case AblationSteps.S6000_MOVE_STAY_POSITION: { double position = Get_Scanner_Z_A1_Stay_Position(); if (MotorZ.Move_Absolute_Pos(position, 500)) { Step = AblationSteps.S6100_MOVE_WAIT; } break; } case AblationSteps.S6100_MOVE_WAIT: { double position = Get_Scanner_Z_A1_Stay_Position(); if (MotorZ.MotionComplete) { if (MotorZ.Is_Inposition(position, equipment.Setting.Inposition_Offset)) { auto_power_view.Add_Info($"Scanner Stay Position Move"); Step = AblationSteps.S5999_AUTO_POWER_END; } else { Step = AblationSteps.S6000_MOVE_STAY_POSITION; } } break; } case AblationSteps.S5999_AUTO_POWER_END: { Parameter_Power parameter = equipment.Power_Parameter.Clone(); SHARP_CLAS_UI/500.Equipment/700.Unit/Base/AblationUnit.cs
@@ -69,8 +69,12 @@ S5110_MEASURE_MODE_SET_W, S5120_MEASURE_MODE_SET_CHECK, S5130_ZERO_SET, S5210_SCANNER_POSITION_MOVE, S5150_MOVE_Z_STAY_POSITION, S5160_POSITION_CHECK, S5210_SCANNER_POSITION_X_MOVE, S5220_SCANNER_MOVE_WAIT, S5230_SCANNER_POSITION_Z_MOVE, S5240_SCANNER_MOVE_WAIT, S5300_SCANNER_INIT, S5310_TARGET_POWER_SET, S5320_LASER_ON, @@ -92,6 +96,8 @@ S5480_LASER_OFF_CHECK, S5490_ENERGEY_CHECK, S5510_RECIPE_POWER_CHANGE, S6000_MOVE_STAY_POSITION, S6100_MOVE_WAIT, S5999_AUTO_POWER_END, } 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,31 +1045,32 @@ 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) { @@ -1051,7 +1078,6 @@ { scanner.Set_Laser_Off(); Interlock_Manager.Add_Interlock_Msg("Laser can't on.", "Please move power meter position."); } } }