From 154cfce360a831d18f3f21b4e1101b4e13440b74 Mon Sep 17 00:00:00 2001 From: 천호석 <hosuk1418@naver.com> Date: 화, 11 10월 2022 13:19:52 +0900 Subject: [PATCH] 검사 개조, Measurement 후 Width 검사 추가. Recipe 위치 좌표 추가, 검사 Parameter 추가. --- SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs | 84 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 83 insertions(+), 1 deletions(-) diff --git a/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs b/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs index 1b67dbb..4dc7cad 100644 --- a/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs +++ b/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs @@ -616,6 +616,39 @@ sm.Set_Value(Vision_Address.AOI_PC_System_Time_Sync_Result, system_time_sync_Ack.result); break; } + case 301: + { + WidthMeasurementResultAck measurement_result_Ack; + vision_control.Recv_WidthMeasurement_Result(Recvdata, out measurement_result_Ack); + + if (measurement_result_Ack.moduleIdx == (int)En_Module_Idx.Left) + { + WriteClientLog($"[Recv]Width Measurement Left Result, Result : {measurement_result_Ack.measurement_result}, Mark1Width : {measurement_result_Ack.Mark1Width}, Mark2Width : {measurement_result_Ack.Mark2Width}, Mark3Width : {measurement_result_Ack.Mark3Width}, Mark4Width : {measurement_result_Ack.Mark4Width}"); + sm.Set_Value(Vision_Address.Measurement_Left_Result, measurement_result_Ack.measurement_result); + sm.Set_Value(Vision_Address.Measurement_Left_Mark_1_Point_1, measurement_result_Ack.Mark1Width); + sm.Set_Value(Vision_Address.Measurement_Left_Mark_2_Point_1, measurement_result_Ack.Mark2Width); + sm.Set_Value(Vision_Address.Measurement_Left_Mark_3_Point_1, measurement_result_Ack.Mark3Width); + sm.Set_Value(Vision_Address.Measurement_Left_Mark_4_Point_1, measurement_result_Ack.Mark4Width); + sm.Set_Bit(Vision_Address.Measurement_Left_Ack, true); + } + break; + } + case 302: + { + WidthMeasurementResultAck measurement_result_Ack; + vision_control.Recv_WidthMeasurement_Result(Recvdata, out measurement_result_Ack); + if (measurement_result_Ack.moduleIdx == (int)En_Module_Idx.Right) + { + WriteClientLog($"[Recv]Width Measurement Right Result, Result : {measurement_result_Ack.measurement_result}, Mark1Width : {measurement_result_Ack.Mark1Width}, Mark2Width : {measurement_result_Ack.Mark2Width}, Mark3Width : {measurement_result_Ack.Mark3Width}, Mark4Width : {measurement_result_Ack.Mark4Width}"); + sm.Set_Value(Vision_Address.Measurement_Right_Result, measurement_result_Ack.measurement_result); + sm.Set_Value(Vision_Address.Measurement_Right_Mark_1_Point_1, measurement_result_Ack.Mark1Width); + sm.Set_Value(Vision_Address.Measurement_Right_Mark_2_Point_1, measurement_result_Ack.Mark2Width); + sm.Set_Value(Vision_Address.Measurement_Right_Mark_3_Point_1, measurement_result_Ack.Mark3Width); + sm.Set_Value(Vision_Address.Measurement_Right_Mark_4_Point_1, measurement_result_Ack.Mark4Width); + sm.Set_Bit(Vision_Address.Measurement_Right_Ack, true); + } + break; + } case 100: { VisionAliveAck vision_alive_Ack; @@ -732,7 +765,7 @@ /// Send Grab Start Req /// </summary> /// <param name="ModelIdx">移대찓�씪 Module Idx (0: Left, 1: Right)</param> - /// <param name="MarkIdx">留덊겕 �쐞移� (0:Left, 1: Right)</param> + /// <param name="MarkIdx">留덊겕 �쐞移� (0:Left, 1:Left, 2:Right, 3:Right)</param> /// <param name="MotorOffsetX">�쁽�옱 Motor Position X</param> /// <param name="MotorOffsetY">�쁽�옱 Motor Position Y</param> public bool Send_Measurement_Grab_Start_Req(int ModelIdx, int MarkIdx, double MotorOffsetX, double MotorOffsetY) @@ -768,6 +801,55 @@ return SendData(vision_control.Send_Command_Req(CmdType, SeqType, ModuleIdx, Slot_No, PnlIdx, PanelID)); } + + /// <summary> + /// Send Grab Ready Req + /// </summary> + /// <param name="SeqType">臾쇰쪟 Sequence Type</param> + /// <param name="ModuleIdx">移대찓�씪 Module Idx (0: Left, 1: Right)</param> + /// <param name="GrabDir">�떒異� Grab(Default), 1: �떒異� Grab</param> + /// <param name="PnlDir">0: �떒硫� 臾쇰쪟 �쓲由� 諛⑺뼢, 1: �옣硫� 臾쇰쪟 �쓲由� 諛⑺뼢</param> + /// <param name="StageNo">�쁽�옱 寃��궗瑜� �쐞�븳 Panel�씠 濡쒕뵫�맂 Stage 踰덊샇</param> + /// <param name="SlotNo">Tray Slot 踰덊샇</param> + /// <param name="PnlIdx">Tray �궡 Panel�씠 �쐞移섑븳 Idx 踰덊샇</param> + /// <param name="PanelID">Panel�쓣 �떇蹂꾪븯湲곗쐞�븳 ID (*�뾾�뒗 寃쎌슦 NULL)</param> + public bool Send_WidthMeasurement_Grab_Ready_Req(int ModuleIdx, int GrabDir, int PnlDir, int StageNo, int SlotNo, int PnlIdx, string PanelID) + { + int SeqType = 4; + + sm.Set_Bit(Vision_Address.Measurement_Grab_Ready_Ack, false); + + if (ModuleIdx == 0) + sm.Set_Bit(Vision_Address.Measurement_Left_Ack, false); + else + sm.Set_Bit(Vision_Address.Measurement_Right_Ack, false); + + WriteClientLog($"[Send]Measurement Grab Ready, ModuleIdx : {ModuleIdx}, GrabDir : {GrabDir}, PnlDir : {PnlDir}, StageNo : {StageNo}, SlotNo : {SlotNo}, PnlIdx : {PnlIdx}, PanelID : {PanelID}"); + + return SendData(vision_control.Send_Grab_Ready_Req(SeqType, ModuleIdx, GrabDir, PnlDir, StageNo, SlotNo, PnlIdx, PanelID)); + } + + /// <summary> + /// Send Grab Start Req + /// </summary> + /// <param name="ModelIdx">移대찓�씪 Module Idx (0: Left, 1: Right)</param> + /// <param name="MarkIdx">留덊겕 �쐞移� (0:Left, 1:Left, 2:Right, 3:Right)</param> + /// <param name="MotorOffsetX">�쁽�옱 Motor Position X</param> + /// <param name="MotorOffsetY">�쁽�옱 Motor Position Y</param> + public bool Send_WidthMeasurement_Grab_Start_Req(int ModelIdx, int MarkIdx, double MotorOffsetX, double MotorOffsetY) + { + int SeqType = 4; + + if (ModelIdx == 0) + sm.Set_Bit(Vision_Address.Measurement_Grab_Start_Left_Ack, false); + else + sm.Set_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack, false); + + WriteClientLog($"[Send]Measurement Grab Start, ModelIdx : {ModelIdx}, MarkIdx : {MarkIdx}, MotorOffsetX : {MotorOffsetX}, MotorOffsetY : {MotorOffsetY}"); + + return SendData(vision_control.Send_Grab_Start_Req(SeqType, ModelIdx, MarkIdx, MotorOffsetX, MotorOffsetY)); + } + /// <summary> /// Send Motor Pos Move Ack /// </summary> -- Gitblit v1.9.3