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/100.Screen/Form_Main.cs | 5 SHARP_CLAS_UI/500.Equipment/600.Info/200.System_Parameter/Parameter_Setting.cs | 6 SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Control.cs | 43 + SHARP_CLAS_UI/500.Equipment/600.Info/200.System_Parameter/Parameter_Mode.cs | 4 SHARP_CLAS_UI/500.Equipment/600.Info/000.Panel_Info/Panel_Info.cs | 8 SHARP_CLAS_UI/100.Screen/Form_Parameter_System.cs | 38 + SHARP_CLAS_UI/500.Equipment/100.Memory_Address/Memory_Address.cs | 4 SHARP_CLAS_UI/100.Screen/Form_Parameter_System.Designer.cs | 249 ++++++-- SHARP_CLAS_UI/500.Equipment/500.Recipe/200.Vision_Info/Vision_Info_Recipe.cs | 26 SHARP_CLAS_UI/500.Equipment/Equipment.cs | 21 SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Define.cs | 22 SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.Designer.cs | 236 +++++++ SHARP_CLAS_UI/500.Equipment/700.Unit/300.After/AoiStage.cs | 4 SHARP_CLAS_UI/500.Equipment/700.Unit/400.Unloader/ULD_Handler_1.cs | 854 +++++++++++++++++++++++++--- SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.cs | 60 ++ SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs | 84 ++ SHARP_CLAS_UI/500.Equipment/700.Unit/Base/Handler.cs | 58 + SHARP_CLAS_UI/500.Equipment/400.Module/300.CIM/CIM_Client.cs | 9 18 files changed, 1,533 insertions(+), 198 deletions(-) diff --git a/SHARP_CLAS_UI/100.Screen/Form_Main.cs b/SHARP_CLAS_UI/100.Screen/Form_Main.cs index 99c8b9a..b9854f8 100644 --- a/SHARP_CLAS_UI/100.Screen/Form_Main.cs +++ b/SHARP_CLAS_UI/100.Screen/Form_Main.cs @@ -22,7 +22,8 @@ public int ULD_Tray_Empty_Count; public int ULD_Tray_Ok_Count; public int ULD_Tray_Ng_Count; - + public int Width_Measurement_Count; + bool update_check; #endregion @@ -438,6 +439,8 @@ ULD_Tray_Ok_Count = int.Parse($"{value}"); if (_Parent.sm.Get_Value(Process_Memory_Address.ULD_Tray_Ng_Count, out value)) ULD_Tray_Ng_Count = int.Parse($"{value}"); + if (_Parent.sm.Get_Value(Process_Memory_Address.Width_Measurement_Count, out value)) + Width_Measurement_Count = int.Parse($"{value}"); } catch (Exception) { diff --git a/SHARP_CLAS_UI/100.Screen/Form_Parameter_System.Designer.cs b/SHARP_CLAS_UI/100.Screen/Form_Parameter_System.Designer.cs index 7971e54..33e2ced 100644 --- a/SHARP_CLAS_UI/100.Screen/Form_Parameter_System.Designer.cs +++ b/SHARP_CLAS_UI/100.Screen/Form_Parameter_System.Designer.cs @@ -31,6 +31,10 @@ this.label1 = new System.Windows.Forms.Label(); this.pnl_Mode = new System.Windows.Forms.Panel(); this.panel16 = new System.Windows.Forms.Panel(); + this.panel64 = new System.Windows.Forms.Panel(); + this.btn_Width_Measurement_Notuse = new System.Windows.Forms.Button(); + this.btn_Width_Measurement_Use = new System.Windows.Forms.Button(); + this.label28 = new System.Windows.Forms.Label(); this.panel6 = new System.Windows.Forms.Panel(); this.btn_Auto_Power_Notuse = new System.Windows.Forms.Button(); this.btn_Auto_Power_Use = new System.Windows.Forms.Button(); @@ -108,6 +112,16 @@ this.lb_AGV = new System.Windows.Forms.Label(); this.lb_Mode = new System.Windows.Forms.Label(); this.pnl_Setting = new System.Windows.Forms.Panel(); + this.panel62 = new System.Windows.Forms.Panel(); + this.label26 = new System.Windows.Forms.Label(); + this.panel63 = new System.Windows.Forms.Panel(); + this.tb_Width_Measurement_Count = new System.Windows.Forms.TextBox(); + this.label27 = new System.Windows.Forms.Label(); + this.panel60 = new System.Windows.Forms.Panel(); + this.label24 = new System.Windows.Forms.Label(); + this.panel61 = new System.Windows.Forms.Panel(); + this.tb_Cleaning_Count = new System.Windows.Forms.TextBox(); + this.label25 = new System.Windows.Forms.Label(); this.panel58 = new System.Windows.Forms.Panel(); this.label22 = new System.Windows.Forms.Label(); this.panel59 = new System.Windows.Forms.Panel(); @@ -224,13 +238,9 @@ this.tb_Vision_Connect_Time = new System.Windows.Forms.TextBox(); this.lb_Vision_Connect_Time = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); - this.panel60 = new System.Windows.Forms.Panel(); - this.label24 = new System.Windows.Forms.Label(); - this.panel61 = new System.Windows.Forms.Panel(); - this.tb_Cleaning_Count = new System.Windows.Forms.TextBox(); - this.label25 = new System.Windows.Forms.Label(); this.pnl_Mode.SuspendLayout(); this.panel16.SuspendLayout(); + this.panel64.SuspendLayout(); this.panel6.SuspendLayout(); this.panel38.SuspendLayout(); this.panel37.SuspendLayout(); @@ -250,6 +260,10 @@ this.panel15.SuspendLayout(); this.panel14.SuspendLayout(); this.pnl_Setting.SuspendLayout(); + this.panel62.SuspendLayout(); + this.panel63.SuspendLayout(); + this.panel60.SuspendLayout(); + this.panel61.SuspendLayout(); this.panel58.SuspendLayout(); this.panel59.SuspendLayout(); this.panel51.SuspendLayout(); @@ -291,8 +305,6 @@ this.panel1.SuspendLayout(); this.panel3.SuspendLayout(); this.panel4.SuspendLayout(); - this.panel60.SuspendLayout(); - this.panel61.SuspendLayout(); this.SuspendLayout(); // // label1 @@ -320,6 +332,7 @@ // panel16 // this.panel16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel16.Controls.Add(this.panel64); this.panel16.Controls.Add(this.panel6); this.panel16.Controls.Add(this.panel38); this.panel16.Controls.Add(this.panel37); @@ -345,6 +358,52 @@ this.panel16.Name = "panel16"; this.panel16.Size = new System.Drawing.Size(870, 791); this.panel16.TabIndex = 35; + // + // panel64 + // + this.panel64.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel64.Controls.Add(this.btn_Width_Measurement_Notuse); + this.panel64.Controls.Add(this.btn_Width_Measurement_Use); + this.panel64.Controls.Add(this.label28); + this.panel64.Location = new System.Drawing.Point(660, 268); + this.panel64.Name = "panel64"; + this.panel64.Size = new System.Drawing.Size(205, 51); + this.panel64.TabIndex = 63; + // + // btn_Width_Measurement_Notuse + // + this.btn_Width_Measurement_Notuse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_Width_Measurement_Notuse.Location = new System.Drawing.Point(104, 25); + this.btn_Width_Measurement_Notuse.Name = "btn_Width_Measurement_Notuse"; + this.btn_Width_Measurement_Notuse.Size = new System.Drawing.Size(95, 21); + this.btn_Width_Measurement_Notuse.TabIndex = 43; + this.btn_Width_Measurement_Notuse.Text = "NOT USE"; + this.btn_Width_Measurement_Notuse.UseVisualStyleBackColor = true; + this.btn_Width_Measurement_Notuse.Click += new System.EventHandler(this.btn_Skip_Mode_Click); + // + // btn_Width_Measurement_Use + // + this.btn_Width_Measurement_Use.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_Width_Measurement_Use.Location = new System.Drawing.Point(3, 25); + this.btn_Width_Measurement_Use.Name = "btn_Width_Measurement_Use"; + this.btn_Width_Measurement_Use.Size = new System.Drawing.Size(95, 21); + this.btn_Width_Measurement_Use.TabIndex = 42; + this.btn_Width_Measurement_Use.Text = "USE"; + this.btn_Width_Measurement_Use.UseVisualStyleBackColor = true; + this.btn_Width_Measurement_Use.Click += new System.EventHandler(this.btn_Skip_Mode_Click); + // + // label28 + // + this.label28.BackColor = System.Drawing.Color.Silver; + this.label28.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label28.Dock = System.Windows.Forms.DockStyle.Top; + this.label28.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label28.Location = new System.Drawing.Point(0, 0); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(203, 22); + this.label28.TabIndex = 41; + this.label28.Text = "WIDTH MEASUREMENT"; + this.label28.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // panel6 // @@ -1225,6 +1284,7 @@ // this.pnl_Setting.BackColor = System.Drawing.Color.White; this.pnl_Setting.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_Setting.Controls.Add(this.panel62); this.pnl_Setting.Controls.Add(this.panel60); this.pnl_Setting.Controls.Add(this.panel58); this.pnl_Setting.Controls.Add(this.panel51); @@ -1244,6 +1304,110 @@ this.pnl_Setting.Name = "pnl_Setting"; this.pnl_Setting.Size = new System.Drawing.Size(880, 850); this.pnl_Setting.TabIndex = 5; + // + // panel62 + // + this.panel62.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel62.Controls.Add(this.label26); + this.panel62.Controls.Add(this.panel63); + this.panel62.Location = new System.Drawing.Point(439, 529); + this.panel62.Name = "panel62"; + this.panel62.Size = new System.Drawing.Size(417, 51); + this.panel62.TabIndex = 61; + // + // label26 + // + this.label26.BackColor = System.Drawing.Color.Silver; + this.label26.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label26.Dock = System.Windows.Forms.DockStyle.Top; + this.label26.Location = new System.Drawing.Point(0, 0); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(415, 20); + this.label26.TabIndex = 35; + this.label26.Text = "Width Measurement Count"; + this.label26.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel63 + // + this.panel63.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel63.Controls.Add(this.tb_Width_Measurement_Count); + this.panel63.Controls.Add(this.label27); + this.panel63.Location = new System.Drawing.Point(3, 23); + this.panel63.Name = "panel63"; + this.panel63.Size = new System.Drawing.Size(407, 21); + this.panel63.TabIndex = 42; + // + // tb_Width_Measurement_Count + // + this.tb_Width_Measurement_Count.Location = new System.Drawing.Point(231, -1); + this.tb_Width_Measurement_Count.Name = "tb_Width_Measurement_Count"; + this.tb_Width_Measurement_Count.Size = new System.Drawing.Size(175, 21); + this.tb_Width_Measurement_Count.TabIndex = 34; + this.tb_Width_Measurement_Count.Text = "0"; + this.tb_Width_Measurement_Count.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_Width_Measurement_Count.Leave += new System.EventHandler(this.SettingData_Leave); + // + // label27 + // + this.label27.Dock = System.Windows.Forms.DockStyle.Left; + this.label27.Location = new System.Drawing.Point(0, 0); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(227, 19); + this.label27.TabIndex = 33; + this.label27.Text = "Width Measurement Count"; + this.label27.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel60 + // + this.panel60.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel60.Controls.Add(this.label24); + this.panel60.Controls.Add(this.panel61); + this.panel60.Location = new System.Drawing.Point(440, 472); + this.panel60.Name = "panel60"; + this.panel60.Size = new System.Drawing.Size(417, 51); + this.panel60.TabIndex = 61; + // + // label24 + // + this.label24.BackColor = System.Drawing.Color.Silver; + this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label24.Dock = System.Windows.Forms.DockStyle.Top; + this.label24.Location = new System.Drawing.Point(0, 0); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(415, 20); + this.label24.TabIndex = 35; + this.label24.Text = "Cleaning Count Parameter"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel61 + // + this.panel61.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel61.Controls.Add(this.tb_Cleaning_Count); + this.panel61.Controls.Add(this.label25); + this.panel61.Location = new System.Drawing.Point(3, 23); + this.panel61.Name = "panel61"; + this.panel61.Size = new System.Drawing.Size(407, 21); + this.panel61.TabIndex = 42; + // + // tb_Cleaning_Count + // + this.tb_Cleaning_Count.Location = new System.Drawing.Point(231, -1); + this.tb_Cleaning_Count.Name = "tb_Cleaning_Count"; + this.tb_Cleaning_Count.Size = new System.Drawing.Size(175, 21); + this.tb_Cleaning_Count.TabIndex = 34; + this.tb_Cleaning_Count.Text = "0"; + this.tb_Cleaning_Count.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_Cleaning_Count.Leave += new System.EventHandler(this.SettingData_Leave); + // + // label25 + // + this.label25.Dock = System.Windows.Forms.DockStyle.Left; + this.label25.Location = new System.Drawing.Point(0, 0); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(227, 19); + this.label25.TabIndex = 33; + this.label25.Text = "Cleaning Count"; + this.label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // panel58 // @@ -2450,58 +2614,6 @@ this.label2.Text = "�뼚 Setting"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // - // panel60 - // - this.panel60.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panel60.Controls.Add(this.label24); - this.panel60.Controls.Add(this.panel61); - this.panel60.Location = new System.Drawing.Point(440, 472); - this.panel60.Name = "panel60"; - this.panel60.Size = new System.Drawing.Size(417, 51); - this.panel60.TabIndex = 61; - // - // label24 - // - this.label24.BackColor = System.Drawing.Color.Silver; - this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.label24.Dock = System.Windows.Forms.DockStyle.Top; - this.label24.Location = new System.Drawing.Point(0, 0); - this.label24.Name = "label24"; - this.label24.Size = new System.Drawing.Size(415, 20); - this.label24.TabIndex = 35; - this.label24.Text = "Cleaning Count Parameter"; - this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // panel61 - // - this.panel61.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panel61.Controls.Add(this.tb_Cleaning_Count); - this.panel61.Controls.Add(this.label25); - this.panel61.Location = new System.Drawing.Point(3, 23); - this.panel61.Name = "panel61"; - this.panel61.Size = new System.Drawing.Size(407, 21); - this.panel61.TabIndex = 42; - // - // tb_Cleaning_Count - // - this.tb_Cleaning_Count.Location = new System.Drawing.Point(231, -1); - this.tb_Cleaning_Count.Name = "tb_Cleaning_Count"; - this.tb_Cleaning_Count.Size = new System.Drawing.Size(175, 21); - this.tb_Cleaning_Count.TabIndex = 34; - this.tb_Cleaning_Count.Text = "0"; - this.tb_Cleaning_Count.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); - this.tb_Cleaning_Count.Leave += new System.EventHandler(this.SettingData_Leave); - // - // label25 - // - this.label25.Dock = System.Windows.Forms.DockStyle.Left; - this.label25.Location = new System.Drawing.Point(0, 0); - this.label25.Name = "label25"; - this.label25.Size = new System.Drawing.Size(227, 19); - this.label25.TabIndex = 33; - this.label25.Text = "Cleaning Count"; - this.label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // // Form_Parameter_System // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); @@ -2515,6 +2627,7 @@ this.Text = "Form_System_Parameter"; this.pnl_Mode.ResumeLayout(false); this.panel16.ResumeLayout(false); + this.panel64.ResumeLayout(false); this.panel6.ResumeLayout(false); this.panel38.ResumeLayout(false); this.panel37.ResumeLayout(false); @@ -2534,6 +2647,12 @@ this.panel15.ResumeLayout(false); this.panel14.ResumeLayout(false); this.pnl_Setting.ResumeLayout(false); + this.panel62.ResumeLayout(false); + this.panel63.ResumeLayout(false); + this.panel63.PerformLayout(); + this.panel60.ResumeLayout(false); + this.panel61.ResumeLayout(false); + this.panel61.PerformLayout(); this.panel58.ResumeLayout(false); this.panel59.ResumeLayout(false); this.panel59.PerformLayout(); @@ -2606,9 +2725,6 @@ this.panel3.PerformLayout(); this.panel4.ResumeLayout(false); this.panel4.PerformLayout(); - this.panel60.ResumeLayout(false); - this.panel61.ResumeLayout(false); - this.panel61.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -2817,5 +2933,14 @@ private System.Windows.Forms.Panel panel61; private System.Windows.Forms.TextBox tb_Cleaning_Count; private System.Windows.Forms.Label label25; + private System.Windows.Forms.Panel panel62; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Panel panel63; + private System.Windows.Forms.TextBox tb_Width_Measurement_Count; + private System.Windows.Forms.Label label27; + private System.Windows.Forms.Panel panel64; + private System.Windows.Forms.Button btn_Width_Measurement_Notuse; + private System.Windows.Forms.Button btn_Width_Measurement_Use; + private System.Windows.Forms.Label label28; } } \ No newline at end of file diff --git a/SHARP_CLAS_UI/100.Screen/Form_Parameter_System.cs b/SHARP_CLAS_UI/100.Screen/Form_Parameter_System.cs index e40b7ee..86ead03 100644 --- a/SHARP_CLAS_UI/100.Screen/Form_Parameter_System.cs +++ b/SHARP_CLAS_UI/100.Screen/Form_Parameter_System.cs @@ -178,6 +178,15 @@ mode.Plasma_Skip = true; } + if(btn_Width_Measurement_Use == (Button)sender) + { + mode.Width_Measurement_Skip = false; + } + else if (btn_Width_Measurement_Notuse == (Button)sender) + { + mode.Width_Measurement_Skip = true; + } + if (btn_LD_Stacker_Use == (Button)sender) { mode.LD_Stacker_Skip = false; @@ -331,12 +340,15 @@ btn_Measurement_Use.Text = resLanguage.USE; btn_Measurement_Notuse.Text = resLanguage.NOT_USE; - + btn_Ablation_Use.Text = resLanguage.USE; btn_Ablation_Notuse.Text = resLanguage.NOT_USE; btn_Plasma_Use.Text = resLanguage.USE; btn_Plasma_Notuse.Text = resLanguage.NOT_USE; + + btn_Width_Measurement_Use.Text = resLanguage.USE; + btn_Width_Measurement_Notuse.Text = resLanguage.NOT_USE; btn_LD_Stacker_Use.Text = resLanguage.USE; btn_LD_Stacker_Notuse.Text = resLanguage.NOT_USE; @@ -499,6 +511,9 @@ btn_Plasma_Use.BackColor = !mode.Plasma_Skip ? mod.Plasma_Skip == mode.Plasma_Skip ? System.Drawing.Color.DodgerBlue : System.Drawing.Color.Red : System.Drawing.Color.White; btn_Plasma_Notuse.BackColor = mode.Plasma_Skip ? mod.Plasma_Skip == mode.Plasma_Skip ? System.Drawing.Color.DodgerBlue : System.Drawing.Color.Red : System.Drawing.Color.White; + btn_Width_Measurement_Use.BackColor = !mode.Width_Measurement_Skip ? mod.Width_Measurement_Skip == mode.Width_Measurement_Skip ? System.Drawing.Color.DodgerBlue : System.Drawing.Color.Red : System.Drawing.Color.White; + btn_Width_Measurement_Notuse.BackColor = mode.Width_Measurement_Skip ? mod.Width_Measurement_Skip == mode.Width_Measurement_Skip ? System.Drawing.Color.DodgerBlue : System.Drawing.Color.Red : System.Drawing.Color.White; + btn_LD_Stacker_Use.BackColor = !mode.LD_Stacker_Skip ? mod.LD_Stacker_Skip == mode.LD_Stacker_Skip ? System.Drawing.Color.DodgerBlue : System.Drawing.Color.Red : System.Drawing.Color.White; btn_LD_Stacker_Notuse.BackColor = mode.LD_Stacker_Skip ? mod.LD_Stacker_Skip == mode.LD_Stacker_Skip ? System.Drawing.Color.DodgerBlue : System.Drawing.Color.Red : System.Drawing.Color.White; @@ -660,6 +675,12 @@ tb_Cleaning_Count.Text = setting.Cleaning_Count.ToString(); } + if (ActiveControl == null || ActiveControl.Name != "tb_Width_Measurement_Count") + { + tb_Width_Measurement_Count.Text = setting.Width_Measurement_Count.ToString(); + } + + tb_Film_Judge_Speed.BackColor = setting.Film_Judge_Speed == set.Film_Judge_Speed ? System.Drawing.Color.White : System.Drawing.Color.Red; tb_Pre_Align_Speed.BackColor = setting.Pre_Align_Speed == set.Pre_Align_Speed ? System.Drawing.Color.White : System.Drawing.Color.Red; tb_Fine_Align_Speed.BackColor = setting.Fine_Align_Speed == set.Fine_Align_Speed ? System.Drawing.Color.White : System.Drawing.Color.Red; @@ -693,7 +714,9 @@ tb_Handler_Pitch.BackColor = setting.Handler_Pitch == set.Handler_Pitch ? System.Drawing.Color.White : System.Drawing.Color.Red; tb_Cleaning_Count.BackColor = setting.Cleaning_Count == set.Cleaning_Count ? System.Drawing.Color.White : System.Drawing.Color.Red; + tb_Width_Measurement_Count.BackColor = setting.Width_Measurement_Count == set.Width_Measurement_Count ? System.Drawing.Color.White : System.Drawing.Color.Red; } + #endregion private void tb_Film_Judge_Speed_Leave(object sender, EventArgs e) @@ -1095,6 +1118,19 @@ break; } + case "tb_Width_Measurement_Count": + { + int.TryParse(tb.Text, out int_data); + + if (int_data < 0) + { + int_data = 0; + } + + setting.Width_Measurement_Count = int_data; + + break; + } } } } diff --git a/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.Designer.cs b/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.Designer.cs index 33373ab..7d3979d 100644 --- a/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.Designer.cs +++ b/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.Designer.cs @@ -180,6 +180,7 @@ this.pnl_Vision_Info_Recipe = new System.Windows.Forms.Panel(); this.tabControl3 = new System.Windows.Forms.TabControl(); this.tabPage3 = new System.Windows.Forms.TabPage(); + this.cb_AoiMark34Use = new System.Windows.Forms.CheckBox(); this.lb_Aoi_measurement = new System.Windows.Forms.Label(); this.tb_AOI_Mark3_X = new System.Windows.Forms.TextBox(); this.tb_AOI_Mark3_Y = new System.Windows.Forms.TextBox(); @@ -278,7 +279,22 @@ this.lv_Vision_Info_Recipes = new System.Windows.Forms.ListView(); this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.btn_Vision_Info_Refresh = new System.Windows.Forms.Button(); - this.cb_AoiMark34Use = new System.Windows.Forms.CheckBox(); + this.tabPage6 = new System.Windows.Forms.TabPage(); + this.label11 = new System.Windows.Forms.Label(); + this.tb_Width_AOI_Mark3_X = new System.Windows.Forms.TextBox(); + this.tb_Width_AOI_Mark1_X = new System.Windows.Forms.TextBox(); + this.tb_Width_AOI_Mark3_Y = new System.Windows.Forms.TextBox(); + this.tb_Width_AOI_Mark1_Y = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.tb_Width_AOI_Mark4_X = new System.Windows.Forms.TextBox(); + this.tb_Width_AOI_Mark4_Y = new System.Windows.Forms.TextBox(); + this.tb_Width_AOI_Mark2_X = new System.Windows.Forms.TextBox(); + this.label14 = new System.Windows.Forms.Label(); + this.tb_Width_AOI_Mark2_Y = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); this.pnl_Tray_Info_Recipe.SuspendLayout(); this.panel5.SuspendLayout(); this.panel4.SuspendLayout(); @@ -302,6 +318,7 @@ this.tabControl1.SuspendLayout(); this.tab_PreAlignOffset.SuspendLayout(); this.tab_LoaderHandler1Position.SuspendLayout(); + this.tabPage6.SuspendLayout(); this.SuspendLayout(); // // pnl_Tray_Info_Recipe @@ -2014,6 +2031,7 @@ // tabControl3 // this.tabControl3.Controls.Add(this.tabPage3); + this.tabControl3.Controls.Add(this.tabPage6); this.tabControl3.Controls.Add(this.tabPage4); this.tabControl3.Location = new System.Drawing.Point(3, 435); this.tabControl3.Name = "tabControl3"; @@ -2046,6 +2064,17 @@ this.tabPage3.TabIndex = 0; this.tabPage3.Text = "AOI Position"; this.tabPage3.UseVisualStyleBackColor = true; + // + // cb_AoiMark34Use + // + this.cb_AoiMark34Use.AutoSize = true; + this.cb_AoiMark34Use.Location = new System.Drawing.Point(6, 138); + this.cb_AoiMark34Use.Name = "cb_AoiMark34Use"; + this.cb_AoiMark34Use.Size = new System.Drawing.Size(94, 16); + this.cb_AoiMark34Use.TabIndex = 200; + this.cb_AoiMark34Use.Text = "Mark3,4 Use"; + this.cb_AoiMark34Use.UseVisualStyleBackColor = true; + this.cb_AoiMark34Use.CheckedChanged += new System.EventHandler(this.cb_AoiMark34Use_CheckedChanged); // // lb_Aoi_measurement // @@ -2154,7 +2183,7 @@ this.tabPage4.Location = new System.Drawing.Point(4, 22); this.tabPage4.Name = "tabPage4"; this.tabPage4.Padding = new System.Windows.Forms.Padding(3); - this.tabPage4.Size = new System.Drawing.Size(442, 141); + this.tabPage4.Size = new System.Drawing.Size(442, 166); this.tabPage4.TabIndex = 1; this.tabPage4.Text = "AOI Offset"; this.tabPage4.UseVisualStyleBackColor = true; @@ -3154,16 +3183,183 @@ this.btn_Vision_Info_Refresh.UseVisualStyleBackColor = true; this.btn_Vision_Info_Refresh.Click += new System.EventHandler(this.btn_Vision_Info_Refresh_Click); // - // cb_AoiMark34Use + // tabPage6 // - this.cb_AoiMark34Use.AutoSize = true; - this.cb_AoiMark34Use.Location = new System.Drawing.Point(6, 138); - this.cb_AoiMark34Use.Name = "cb_AoiMark34Use"; - this.cb_AoiMark34Use.Size = new System.Drawing.Size(94, 16); - this.cb_AoiMark34Use.TabIndex = 200; - this.cb_AoiMark34Use.Text = "Mark3,4 Use"; - this.cb_AoiMark34Use.UseVisualStyleBackColor = true; - this.cb_AoiMark34Use.CheckedChanged += new System.EventHandler(this.cb_AoiMark34Use_CheckedChanged); + this.tabPage6.Controls.Add(this.label11); + this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark3_X); + this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark1_X); + this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark3_Y); + this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark1_Y); + this.tabPage6.Controls.Add(this.label12); + this.tabPage6.Controls.Add(this.label13); + this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark4_X); + this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark4_Y); + this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark2_X); + this.tabPage6.Controls.Add(this.label14); + this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark2_Y); + this.tabPage6.Controls.Add(this.label15); + this.tabPage6.Controls.Add(this.label16); + this.tabPage6.Controls.Add(this.label17); + this.tabPage6.Location = new System.Drawing.Point(4, 22); + this.tabPage6.Name = "tabPage6"; + this.tabPage6.Padding = new System.Windows.Forms.Padding(3); + this.tabPage6.Size = new System.Drawing.Size(442, 166); + this.tabPage6.TabIndex = 2; + this.tabPage6.Text = "Width AOI Position"; + this.tabPage6.UseVisualStyleBackColor = true; + // + // label11 + // + this.label11.BackColor = System.Drawing.Color.LightCoral; + this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label11.Location = new System.Drawing.Point(3, 5); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(167, 21); + this.label11.TabIndex = 214; + this.label11.Text = "AOI MEASUREMENT"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Width_AOI_Mark3_X + // + this.tb_Width_AOI_Mark3_X.Location = new System.Drawing.Point(177, 84); + this.tb_Width_AOI_Mark3_X.Name = "tb_Width_AOI_Mark3_X"; + this.tb_Width_AOI_Mark3_X.Size = new System.Drawing.Size(123, 21); + this.tb_Width_AOI_Mark3_X.TabIndex = 200; + this.tb_Width_AOI_Mark3_X.Text = "0"; + this.tb_Width_AOI_Mark3_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tb_Width_AOI_Mark3_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged); + // + // tb_Width_AOI_Mark1_X + // + this.tb_Width_AOI_Mark1_X.Location = new System.Drawing.Point(177, 29); + this.tb_Width_AOI_Mark1_X.Name = "tb_Width_AOI_Mark1_X"; + this.tb_Width_AOI_Mark1_X.Size = new System.Drawing.Size(123, 21); + this.tb_Width_AOI_Mark1_X.TabIndex = 201; + this.tb_Width_AOI_Mark1_X.Text = "0"; + this.tb_Width_AOI_Mark1_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tb_Width_AOI_Mark1_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged); + // + // tb_Width_AOI_Mark3_Y + // + this.tb_Width_AOI_Mark3_Y.Location = new System.Drawing.Point(306, 84); + this.tb_Width_AOI_Mark3_Y.Name = "tb_Width_AOI_Mark3_Y"; + this.tb_Width_AOI_Mark3_Y.Size = new System.Drawing.Size(123, 21); + this.tb_Width_AOI_Mark3_Y.TabIndex = 202; + this.tb_Width_AOI_Mark3_Y.Text = "0"; + this.tb_Width_AOI_Mark3_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tb_Width_AOI_Mark3_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged); + // + // tb_Width_AOI_Mark1_Y + // + this.tb_Width_AOI_Mark1_Y.Location = new System.Drawing.Point(306, 29); + this.tb_Width_AOI_Mark1_Y.Name = "tb_Width_AOI_Mark1_Y"; + this.tb_Width_AOI_Mark1_Y.Size = new System.Drawing.Size(123, 21); + this.tb_Width_AOI_Mark1_Y.TabIndex = 203; + this.tb_Width_AOI_Mark1_Y.Text = "0"; + this.tb_Width_AOI_Mark1_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tb_Width_AOI_Mark1_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged); + // + // label12 + // + this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label12.Location = new System.Drawing.Point(3, 84); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(167, 21); + this.label12.TabIndex = 204; + this.label12.Text = "AOI MARK3 [mm]"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label13 + // + this.label13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label13.Location = new System.Drawing.Point(3, 29); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(167, 21); + this.label13.TabIndex = 205; + this.label13.Text = "AOI MARK 1 [mm]"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Width_AOI_Mark4_X + // + this.tb_Width_AOI_Mark4_X.Location = new System.Drawing.Point(177, 111); + this.tb_Width_AOI_Mark4_X.Name = "tb_Width_AOI_Mark4_X"; + this.tb_Width_AOI_Mark4_X.Size = new System.Drawing.Size(123, 21); + this.tb_Width_AOI_Mark4_X.TabIndex = 206; + this.tb_Width_AOI_Mark4_X.Text = "0"; + this.tb_Width_AOI_Mark4_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tb_Width_AOI_Mark4_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged); + // + // tb_Width_AOI_Mark4_Y + // + this.tb_Width_AOI_Mark4_Y.Location = new System.Drawing.Point(306, 111); + this.tb_Width_AOI_Mark4_Y.Name = "tb_Width_AOI_Mark4_Y"; + this.tb_Width_AOI_Mark4_Y.Size = new System.Drawing.Size(123, 21); + this.tb_Width_AOI_Mark4_Y.TabIndex = 208; + this.tb_Width_AOI_Mark4_Y.Text = "0"; + this.tb_Width_AOI_Mark4_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tb_Width_AOI_Mark4_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged); + // + // tb_Width_AOI_Mark2_X + // + this.tb_Width_AOI_Mark2_X.Location = new System.Drawing.Point(177, 56); + this.tb_Width_AOI_Mark2_X.Name = "tb_Width_AOI_Mark2_X"; + this.tb_Width_AOI_Mark2_X.Size = new System.Drawing.Size(123, 21); + this.tb_Width_AOI_Mark2_X.TabIndex = 207; + this.tb_Width_AOI_Mark2_X.Text = "0"; + this.tb_Width_AOI_Mark2_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tb_Width_AOI_Mark2_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged); + // + // label14 + // + this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label14.Location = new System.Drawing.Point(3, 111); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(167, 21); + this.label14.TabIndex = 210; + this.label14.Text = "AOI MARK4 [mm]"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Width_AOI_Mark2_Y + // + this.tb_Width_AOI_Mark2_Y.Location = new System.Drawing.Point(306, 56); + this.tb_Width_AOI_Mark2_Y.Name = "tb_Width_AOI_Mark2_Y"; + this.tb_Width_AOI_Mark2_Y.Size = new System.Drawing.Size(123, 21); + this.tb_Width_AOI_Mark2_Y.TabIndex = 209; + this.tb_Width_AOI_Mark2_Y.Text = "0"; + this.tb_Width_AOI_Mark2_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tb_Width_AOI_Mark2_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged); + // + // label15 + // + this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label15.Location = new System.Drawing.Point(3, 56); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(167, 21); + this.label15.TabIndex = 211; + this.label15.Text = "AOI MARK2 [mm]"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label16 + // + this.label16.BackColor = System.Drawing.Color.LightCoral; + this.label16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label16.Location = new System.Drawing.Point(306, 5); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(123, 21); + this.label16.TabIndex = 213; + this.label16.Text = "ULD HANDLER 1 Y"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label17 + // + this.label17.BackColor = System.Drawing.Color.LightCoral; + this.label17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label17.Location = new System.Drawing.Point(177, 5); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(123, 21); + this.label17.TabIndex = 212; + this.label17.Text = "ULD HANDLER 1 X"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // Form_Recipe_Type // @@ -3231,6 +3427,8 @@ this.tab_PreAlignOffset.PerformLayout(); this.tab_LoaderHandler1Position.ResumeLayout(false); this.tab_LoaderHandler1Position.PerformLayout(); + this.tabPage6.ResumeLayout(false); + this.tabPage6.PerformLayout(); this.ResumeLayout(false); } @@ -3488,5 +3686,21 @@ private System.Windows.Forms.TextBox tb_AOI_Mark4_Y; private System.Windows.Forms.Label label8; private System.Windows.Forms.CheckBox cb_AoiMark34Use; + private System.Windows.Forms.TabPage tabPage6; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TextBox tb_Width_AOI_Mark3_X; + private System.Windows.Forms.TextBox tb_Width_AOI_Mark1_X; + private System.Windows.Forms.TextBox tb_Width_AOI_Mark3_Y; + private System.Windows.Forms.TextBox tb_Width_AOI_Mark1_Y; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.TextBox tb_Width_AOI_Mark4_X; + private System.Windows.Forms.TextBox tb_Width_AOI_Mark4_Y; + private System.Windows.Forms.TextBox tb_Width_AOI_Mark2_X; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.TextBox tb_Width_AOI_Mark2_Y; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label17; } } \ No newline at end of file diff --git a/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.cs b/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.cs index 1fd29db..6b39340 100644 --- a/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.cs +++ b/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.cs @@ -707,6 +707,46 @@ cur_vision_info_recipe.AOI_Mark4_Y = value_double; break; } + case "tb_Width_AOI_Mark1_X": + { + cur_vision_info_recipe.Width_AOI_Mark1_X = value_double; + break; + } + case "tb_Width_AOI_Mark1_Y": + { + cur_vision_info_recipe.Width_AOI_Mark1_Y = value_double; + break; + } + case "tb_Width_AOI_Mark2_X": + { + cur_vision_info_recipe.Width_AOI_Mark2_X = value_double; + break; + } + case "tb_Width_AOI_Mark2_Y": + { + cur_vision_info_recipe.Width_AOI_Mark2_Y = value_double; + break; + } + case "tb_Width_AOI_Mark3_X": + { + cur_vision_info_recipe.Width_AOI_Mark3_X = value_double; + break; + } + case "tb_Width_AOI_Mark3_Y": + { + cur_vision_info_recipe.Width_AOI_Mark3_Y = value_double; + break; + } + case "tb_Width_AOI_Mark4_X": + { + cur_vision_info_recipe.Width_AOI_Mark4_X = value_double; + break; + } + case "tb_Width_AOI_Mark4_Y": + { + cur_vision_info_recipe.Width_AOI_Mark4_Y = value_double; + break; + } case "tb_AOI_Before_Left_T": { cur_vision_info_recipe.AOI_Before_Left_T = value_double; @@ -1871,6 +1911,15 @@ tb_AOI_Mark4_Y.Text = cur_vision_info_recipe.AOI_Mark4_Y.ToString(); cb_AoiMark34Use.Checked = cur_vision_info_recipe.AoiMark34Use; + + tb_Width_AOI_Mark1_X.Text = cur_vision_info_recipe.Width_AOI_Mark1_X.ToString(); + tb_Width_AOI_Mark1_Y.Text = cur_vision_info_recipe.Width_AOI_Mark1_Y.ToString(); + tb_Width_AOI_Mark2_X.Text = cur_vision_info_recipe.Width_AOI_Mark2_X.ToString(); + tb_Width_AOI_Mark2_Y.Text = cur_vision_info_recipe.Width_AOI_Mark2_Y.ToString(); + tb_Width_AOI_Mark3_X.Text = cur_vision_info_recipe.Width_AOI_Mark3_X.ToString(); + tb_Width_AOI_Mark3_Y.Text = cur_vision_info_recipe.Width_AOI_Mark3_Y.ToString(); + tb_Width_AOI_Mark4_X.Text = cur_vision_info_recipe.Width_AOI_Mark4_X.ToString(); + tb_Width_AOI_Mark4_Y.Text = cur_vision_info_recipe.Width_AOI_Mark4_Y.ToString(); tb_AOI_Before_Left_T.Text = cur_vision_info_recipe.AOI_Before_Left_T.ToString(); tb_AOI_Before_Right_T.Text = cur_vision_info_recipe.AOI_Before_Right_T.ToString(); @@ -1994,7 +2043,16 @@ tb_AOI_Mark3_Y.BackColor = cur_vision_info_recipe.AOI_Mark3_Y == recipe.AOI_Mark3_Y ? Color.White : Color.Red; tb_AOI_Mark4_X.BackColor = cur_vision_info_recipe.AOI_Mark4_X == recipe.AOI_Mark4_X ? Color.White : Color.Red; tb_AOI_Mark4_Y.BackColor = cur_vision_info_recipe.AOI_Mark4_Y == recipe.AOI_Mark4_Y ? Color.White : Color.Red; - + + tb_Width_AOI_Mark1_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark1_X == recipe.Width_AOI_Mark1_X ? Color.White : Color.Red; + tb_Width_AOI_Mark1_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark1_Y == recipe.Width_AOI_Mark1_Y ? Color.White : Color.Red; + tb_Width_AOI_Mark2_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark2_X == recipe.Width_AOI_Mark2_X ? Color.White : Color.Red; + tb_Width_AOI_Mark2_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark2_Y == recipe.Width_AOI_Mark2_Y ? Color.White : Color.Red; + tb_Width_AOI_Mark3_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark3_X == recipe.Width_AOI_Mark3_X ? Color.White : Color.Red; + tb_Width_AOI_Mark3_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark3_Y == recipe.Width_AOI_Mark3_Y ? Color.White : Color.Red; + tb_Width_AOI_Mark4_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark4_X == recipe.Width_AOI_Mark4_X ? Color.White : Color.Red; + tb_Width_AOI_Mark4_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark4_Y == recipe.Width_AOI_Mark4_Y ? Color.White : Color.Red; + tb_AOI_Before_Left_T.BackColor = cur_vision_info_recipe.AOI_Before_Left_T == recipe.AOI_Before_Left_T ? Color.White : Color.Red; tb_AOI_Before_Right_T.BackColor = cur_vision_info_recipe.AOI_Before_Right_T == recipe.AOI_Before_Right_T ? Color.White : Color.Red; tb_AOI_After_Left_T.BackColor = cur_vision_info_recipe.AOI_After_Left_T == recipe.AOI_After_Left_T ? Color.White : Color.Red; diff --git a/SHARP_CLAS_UI/500.Equipment/100.Memory_Address/Memory_Address.cs b/SHARP_CLAS_UI/500.Equipment/100.Memory_Address/Memory_Address.cs index 422dbc6..89b6922 100644 --- a/SHARP_CLAS_UI/500.Equipment/100.Memory_Address/Memory_Address.cs +++ b/SHARP_CLAS_UI/500.Equipment/100.Memory_Address/Memory_Address.cs @@ -116,6 +116,8 @@ public static SharedmemoryAddressInfo Power_Meter_Max = new SharedmemoryAddressInfo(226, MemberTypes.DOUBLE); public static SharedmemoryAddressInfo Power_Meter_Min = new SharedmemoryAddressInfo(234, MemberTypes.DOUBLE); public static SharedmemoryAddressInfo Power_Meter_Count = new SharedmemoryAddressInfo(242, MemberTypes.INT); + + public static SharedmemoryAddressInfo Width_Measurement_Count = new SharedmemoryAddressInfo(246, MemberTypes.INT); } /// <summary> @@ -3519,7 +3521,7 @@ public static SharedmemoryAddressInfo Measurement_Right_Mark_4_Point_2 = new SharedmemoryAddressInfo(6787, MemberTypes.DOUBLE); - //Measurement 6800 ~ 7100 + //Measurement 6800 ~ 7000 public static SharedmemoryAddressInfo Measurement_Grab_Ready_Ack = new SharedmemoryAddressInfo(6800, MemberTypes.BIT); public static SharedmemoryAddressInfo Measurement_Grab_Ready_Result = new SharedmemoryAddressInfo(6801, MemberTypes.INT); 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> diff --git a/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Control.cs b/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Control.cs index c615bca..ad858db 100644 --- a/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Control.cs +++ b/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Control.cs @@ -473,6 +473,49 @@ Ack = new MeasurementResultAck(Result_MsgIndex, Result_ModuleIdx, Result_MeasureResult, Result_Mark1Point1, Result_Mark1Point2, Result_Mark2Point1, Result_Mark2Point2, Result_Mark3Point1, Result_Mark3Point2, Result_Mark4Point1, Result_Mark4Point2, Result_MarkDistance, Result_AlignResult); } + public void Recv_WidthMeasurement_Result(byte[] Recvdata, out WidthMeasurementResultAck Ack) + { + byte[] size = new byte[4]; + byte[] command = new byte[2]; + byte[] MsgIndex = new byte[4]; //TimeStamp (HHMMSSmsmsms) + byte[] ModuleIdx = new byte[4]; //移대찓�씪 Module Idx (0: Left, 1: Right) + byte[] MeasureResult = new byte[4]; //0 : Fail, 1 : Success + byte[] Mark1Width = new byte[8]; //Mark1�쓽 �꼻�씠 + byte[] Mark2Width = new byte[8]; //Mark2�쓽 �꼻�씠 + byte[] Mark3Width = new byte[8]; //Mark3�쓽 �꼻�씠 + byte[] Mark4Width = new byte[8]; //Mark4�쓽 �꼻�씠 + + int copylength = 0; + Array.Copy(Recvdata, size, size.Length); + copylength += size.Length; + Array.Copy(Recvdata, copylength, command, 0, command.Length); + copylength += command.Length; + Array.Copy(Recvdata, copylength, MsgIndex, 0, MsgIndex.Length); + copylength += MsgIndex.Length; + Array.Copy(Recvdata, copylength, ModuleIdx, 0, ModuleIdx.Length); + copylength += ModuleIdx.Length; + Array.Copy(Recvdata, copylength, MeasureResult, 0, MeasureResult.Length); + copylength += MeasureResult.Length; + Array.Copy(Recvdata, copylength, Mark1Width, 0, Mark1Width.Length); + copylength += Mark1Width.Length; + Array.Copy(Recvdata, copylength, Mark2Width, 0, Mark2Width.Length); + copylength += Mark2Width.Length; + Array.Copy(Recvdata, copylength, Mark3Width, 0, Mark3Width.Length); + copylength += Mark3Width.Length; + Array.Copy(Recvdata, copylength, Mark4Width, 0, Mark4Width.Length); + copylength += Mark4Width.Length; + + int Result_MsgIndex = BitConverter.ToInt32(MsgIndex, 0); + int Result_ModuleIdx = BitConverter.ToInt32(ModuleIdx, 0); + int Result_MeasureResult = BitConverter.ToInt32(MeasureResult, 0); + double Result_Mark1Width = BitConverter.ToDouble(Mark1Width, 0); + double Result_Mark2Width = BitConverter.ToDouble(Mark2Width, 0); + double Result_Mark3Width = BitConverter.ToDouble(Mark3Width, 0); + double Result_Mark4Width = BitConverter.ToDouble(Mark4Width, 0); + + Ack = new WidthMeasurementResultAck(Result_MsgIndex, Result_ModuleIdx, Result_MeasureResult, Result_Mark1Width, Result_Mark2Width, Result_Mark3Width, Result_Mark4Width); + } + public void Recv_Fine_Align_Result(byte[] Recvdata, out FineAlignResultAck Ack) { byte[] size = new byte[4]; diff --git a/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Define.cs b/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Define.cs index 17964fb..413fba8 100644 --- a/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Define.cs +++ b/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Define.cs @@ -163,6 +163,28 @@ } } + public struct WidthMeasurementResultAck + { + public int msg_Index { get; private set; } + public int moduleIdx { get; private set; } + public int measurement_result { get; private set; } + public double Mark1Width { get; private set; } + public double Mark2Width { get; private set; } + public double Mark3Width { get; private set; } + public double Mark4Width { get; private set; } + + public WidthMeasurementResultAck(int msg_Index = 0, int moduleIdx = 0, int measurement_result = 0, double mark1Width = 0, double mark2Width = 0, double mark3Width = 0, double mark4Width = 0) + { + this.msg_Index = msg_Index; + this.moduleIdx = moduleIdx; + this.measurement_result = measurement_result; + this.Mark1Width = mark1Width; + this.Mark2Width = mark2Width; + this.Mark3Width = mark3Width; + this.Mark4Width = mark4Width; + } + } + public struct MotorPosMoveReq { public int msg_Index{ get; private set; } diff --git a/SHARP_CLAS_UI/500.Equipment/400.Module/300.CIM/CIM_Client.cs b/SHARP_CLAS_UI/500.Equipment/400.Module/300.CIM/CIM_Client.cs index b661511..8609d98 100644 --- a/SHARP_CLAS_UI/500.Equipment/400.Module/300.CIM/CIM_Client.cs +++ b/SHARP_CLAS_UI/500.Equipment/400.Module/300.CIM/CIM_Client.cs @@ -578,12 +578,7 @@ string data_17 = info.Measurement_Result ? string.Empty : $"{(int)(En_Judgement_Reason.Ng):d7}"; string data_etc = string.Empty; - - //for (int i = 18; i < 380; i++) - //{ - // data_etc += ","; - //} - + for (int i = 18; i < 81; i++) { data_etc += $","; @@ -613,8 +608,6 @@ Set_Command_Ack(En_Cim_Command.PREND, false); send_datas.Enqueue(new Cim_Send_Data(En_Cim_Command.PREND, command)); return true; - - //return Check_Receive_Data(command, En_Cim_Command.PREND); } public bool Send_Panel_Tray_In(string seq_num, string tray_id, string panel_id, string location, En_Port_ID port_id) diff --git a/SHARP_CLAS_UI/500.Equipment/500.Recipe/200.Vision_Info/Vision_Info_Recipe.cs b/SHARP_CLAS_UI/500.Equipment/500.Recipe/200.Vision_Info/Vision_Info_Recipe.cs index 7a54b92..ba4a06d 100644 --- a/SHARP_CLAS_UI/500.Equipment/500.Recipe/200.Vision_Info/Vision_Info_Recipe.cs +++ b/SHARP_CLAS_UI/500.Equipment/500.Recipe/200.Vision_Info/Vision_Info_Recipe.cs @@ -56,6 +56,15 @@ public double AOI_Mark4_Y { get; set; } public bool AoiMark34Use { get; set; } + public double Width_AOI_Mark1_X { get; set; } + public double Width_AOI_Mark1_Y { get; set; } + public double Width_AOI_Mark2_X { get; set; } + public double Width_AOI_Mark2_Y { get; set; } + public double Width_AOI_Mark3_X { get; set; } + public double Width_AOI_Mark3_Y { get; set; } + public double Width_AOI_Mark4_X { get; set; } + public double Width_AOI_Mark4_Y { get; set; } + public double AOI_Before_Left_T { get; set; } public double AOI_Before_Right_T { get; set; } @@ -114,6 +123,15 @@ AOI_Mark4_Y = 0; AoiMark34Use = false; + Width_AOI_Mark1_X = 0; + Width_AOI_Mark1_Y = 0; + Width_AOI_Mark2_X = 0; + Width_AOI_Mark2_Y = 0; + Width_AOI_Mark3_X = 0; + Width_AOI_Mark3_Y = 0; + Width_AOI_Mark4_X = 0; + Width_AOI_Mark4_Y = 0; + AOI_Before_Left_T = 0; AOI_Before_Right_T = 0; AOI_After_Left_T = 0; @@ -170,6 +188,14 @@ info.AOI_Mark4_X = this.AOI_Mark4_X; info.AOI_Mark4_Y = this.AOI_Mark4_Y; info.AoiMark34Use = this.AoiMark34Use; + info.Width_AOI_Mark1_X = this.Width_AOI_Mark1_X; + info.Width_AOI_Mark1_Y = this.Width_AOI_Mark1_Y; + info.Width_AOI_Mark2_X = this.Width_AOI_Mark2_X; + info.Width_AOI_Mark2_Y = this.Width_AOI_Mark2_Y; + info.Width_AOI_Mark3_X = this.Width_AOI_Mark3_X; + info.Width_AOI_Mark3_Y = this.Width_AOI_Mark3_Y; + info.Width_AOI_Mark4_X = this.Width_AOI_Mark4_X; + info.Width_AOI_Mark4_Y = this.Width_AOI_Mark4_Y; info.AOI_Before_Left_T = this.AOI_Before_Left_T; info.AOI_Before_Right_T = this.AOI_Before_Right_T; info.AOI_After_Left_T = this.AOI_After_Left_T; diff --git a/SHARP_CLAS_UI/500.Equipment/600.Info/000.Panel_Info/Panel_Info.cs b/SHARP_CLAS_UI/500.Equipment/600.Info/000.Panel_Info/Panel_Info.cs index 5e2e6b5..284caf7 100644 --- a/SHARP_CLAS_UI/500.Equipment/600.Info/000.Panel_Info/Panel_Info.cs +++ b/SHARP_CLAS_UI/500.Equipment/600.Info/000.Panel_Info/Panel_Info.cs @@ -59,6 +59,14 @@ public double Mark4Point1 { get; set; } public double Mark4Point2 { get; set; } + public bool WidthMeasurement_Ack { get; set; } + public bool WidthMeasurement_Result { get; set; } + + public double Mark1Width { get; set; } + public double Mark2Width { get; set; } + public double Mark3Width { get; set; } + public double Mark4Width { get; set; } + public int Stage_Num { get; set; } public DateTime Start_Time { get; set; } diff --git a/SHARP_CLAS_UI/500.Equipment/600.Info/200.System_Parameter/Parameter_Mode.cs b/SHARP_CLAS_UI/500.Equipment/600.Info/200.System_Parameter/Parameter_Mode.cs index 698c075..448a60f 100644 --- a/SHARP_CLAS_UI/500.Equipment/600.Info/200.System_Parameter/Parameter_Mode.cs +++ b/SHARP_CLAS_UI/500.Equipment/600.Info/200.System_Parameter/Parameter_Mode.cs @@ -12,6 +12,7 @@ public bool Measurement_Skip { get; set; } public bool Ablation_Skip { get; set; } public bool Plasma_Skip { get; set; } + public bool Width_Measurement_Skip { get; set; } public bool LD_Stacker_Skip { get; set; } public bool ULD_Stacker_Skip { get; set; } public bool Film_Judge_Mode { get; set; } @@ -20,6 +21,7 @@ public bool Ablation_Stage_2_1_Skip { get; set; } public bool Ablation_Stage_2_2_Skip { get; set; } public bool Auto_Power_Skip { get; set; } + public Parameter_Mode() { Agv_Skip = false; @@ -30,6 +32,7 @@ Pre_Align_Skip = false; Fine_Align_Skip = false; Measurement_Skip = false; + Width_Measurement_Skip = false; Ablation_Skip = false; Plasma_Skip = false; LD_Stacker_Skip = false; @@ -54,6 +57,7 @@ mode.Pre_Align_Skip = this.Pre_Align_Skip; mode.Fine_Align_Skip = this.Fine_Align_Skip; mode.Measurement_Skip = this.Measurement_Skip; + mode.Width_Measurement_Skip = this.Width_Measurement_Skip; mode.Ablation_Skip = this.Ablation_Skip; mode.Plasma_Skip = this.Plasma_Skip; mode.LD_Stacker_Skip = this.LD_Stacker_Skip; diff --git a/SHARP_CLAS_UI/500.Equipment/600.Info/200.System_Parameter/Parameter_Setting.cs b/SHARP_CLAS_UI/500.Equipment/600.Info/200.System_Parameter/Parameter_Setting.cs index 4c6af3a..dd6be6d 100644 --- a/SHARP_CLAS_UI/500.Equipment/600.Info/200.System_Parameter/Parameter_Setting.cs +++ b/SHARP_CLAS_UI/500.Equipment/600.Info/200.System_Parameter/Parameter_Setting.cs @@ -38,8 +38,10 @@ public double Stage_2_2_Power_Offset { get; set; } public double Handler_Pitch { get; set; } - + public int Cleaning_Count { get; set;} + public int Width_Measurement_Count { get; set; } + public Parameter_Setting() { Film_Judge_Speed = 0; @@ -79,6 +81,7 @@ Handler_Pitch = 0; Cleaning_Count = 0; + Width_Measurement_Count = 0; } public Parameter_Setting Clone() @@ -117,6 +120,7 @@ setting.Stage_2_2_Power_Offset = this.Stage_2_2_Power_Offset; setting.Handler_Pitch = this.Handler_Pitch; setting.Cleaning_Count = this.Cleaning_Count; + setting.Width_Measurement_Count = this.Width_Measurement_Count; return setting; } diff --git a/SHARP_CLAS_UI/500.Equipment/700.Unit/300.After/AoiStage.cs b/SHARP_CLAS_UI/500.Equipment/700.Unit/300.After/AoiStage.cs index e3cff38..e6916ec 100644 --- a/SHARP_CLAS_UI/500.Equipment/700.Unit/300.After/AoiStage.cs +++ b/SHARP_CLAS_UI/500.Equipment/700.Unit/300.After/AoiStage.cs @@ -61,7 +61,7 @@ } } } - + public bool IsMotorT1LoadPosition { get @@ -784,7 +784,7 @@ } } } - + public void Seq_Stage1Step() { switch (_stage1Step) diff --git a/SHARP_CLAS_UI/500.Equipment/700.Unit/400.Unloader/ULD_Handler_1.cs b/SHARP_CLAS_UI/500.Equipment/700.Unit/400.Unloader/ULD_Handler_1.cs index 0e68f2b..7c20ed7 100644 --- a/SHARP_CLAS_UI/500.Equipment/700.Unit/400.Unloader/ULD_Handler_1.cs +++ b/SHARP_CLAS_UI/500.Equipment/700.Unit/400.Unloader/ULD_Handler_1.cs @@ -1106,6 +1106,9 @@ var isAoiPanel1MeasurementAck = aoiStage.Stage1.IsExist == false || aoiStage.Panel1.Measurement_Ack; var isAoiPanel2MeasurementAck = aoiStage.Stage2.IsExist == false || aoiStage.Panel2.Measurement_Ack; + var isAoiPanel1WidthMeasurementAck = aoiStage.Stage1.IsExist == false || aoiStage.Panel1.WidthMeasurement_Ack; + var isAoiPanel2WidthMeasurementAck = aoiStage.Stage2.IsExist == false || aoiStage.Panel2.WidthMeasurement_Ack; + switch (Step) { case UnloaderHandler1Steps.S4000_MEASUREMENT_START: @@ -1674,13 +1677,25 @@ if (isAoiPanel1MeasurementAck && isAoiPanel2MeasurementAck) { - if (equipment.cim_mode == En_Cim_Mode.Online) + //AOI �셿猷�. -> Width meausrement �뿬湲곗뿉 異붽� �빐�빞 �맆�벏..? + + if (equipment.Mode.Width_Measurement_Skip || equipment.WidthMeasurementCount < equipment.Setting.Width_Measurement_Count) { - Step = UnloaderHandler1Steps.S4600_PANEL_LEFT_CIM_SEND; + equipment.WidthMeasurementCount = equipment.WidthMeasurementCount + 1; + + if (equipment.cim_mode == En_Cim_Mode.Online) + { + Step = UnloaderHandler1Steps.S4800_PANEL_LEFT_CIM_SEND; + } + else + { + Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; + } } else { - Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; + measurement_retry_cnt = 0; + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; } } else @@ -1690,7 +1705,7 @@ if (measurement_retry_cnt >= equipment.Setting.Vision_Retry_Count) { - Step = UnloaderHandler1Steps.S4700_USER_COMMAND_START; + Step = UnloaderHandler1Steps.S4560_USER_COMMAND_START; } else { @@ -1708,7 +1723,7 @@ { if (sequenceChangedTime.Minute > 5) { - Step = UnloaderHandler1Steps.S4700_USER_COMMAND_START; + Step = UnloaderHandler1Steps.S4560_USER_COMMAND_START; } } else if (measurement_retry_cnt == equipment.Setting.Vision_Retry_Count) @@ -1717,7 +1732,7 @@ Tact_Move.Stop(); equipment.Write_Tact_Time_Log($"ULD Handler 1, AOI Reading [End]"); equipment.Write_Tact_Time_Log($"ULD Handler 1, AOI Reading [Tact : {Tact_Move.Seconds} (sec)]"); - Step = UnloaderHandler1Steps.S4700_USER_COMMAND_START; + Step = UnloaderHandler1Steps.S4560_USER_COMMAND_START; } else { @@ -1732,100 +1747,7 @@ break; } - case UnloaderHandler1Steps.S4600_PANEL_LEFT_CIM_SEND: - { - if (equipment.cim_mode != En_Cim_Mode.Online) - { - Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; - return; - } - - Panel_Info info1 = equipment.after.AoiStage.Panel1; - - if (equipment.after.AoiStage.Stage1.IsExist == false || info1.IsPanelIdRead == false) - { - Step = UnloaderHandler1Steps.S4620_PANEL_RIGHT_CIM_SEND; - return; - } - else - { - if (equipment.cim_client.Send_Process_End("E123456", info1)) - { - Step = UnloaderHandler1Steps.S4610_PANEL_LEFT_CIM_SEND_WAIT; - } - } - - break; - } - case UnloaderHandler1Steps.S4610_PANEL_LEFT_CIM_SEND_WAIT: - { - if (equipment.cim_mode != En_Cim_Mode.Online) - { - Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; - return; - } - - if (equipment.cim_client.Get_Command_Ack(En_Cim_Command.PREND)) - { - if (equipment.cim_client.Get_Command_Result(En_Cim_Command.PREND)) - { - Step = UnloaderHandler1Steps.S4620_PANEL_RIGHT_CIM_SEND; - } - else - { - Step = UnloaderHandler1Steps.S4600_PANEL_LEFT_CIM_SEND; - } - } - - break; - } - case UnloaderHandler1Steps.S4620_PANEL_RIGHT_CIM_SEND: - { - if (equipment.cim_mode != En_Cim_Mode.Online) - { - Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; - return; - } - - Panel_Info info2 = equipment.after.AoiStage.Panel2; - - if (equipment.after.AoiStage.Stage2.IsExist == false || info2.IsPanelIdRead == false) - { - Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; - } - else - { - if(equipment.cim_client.Send_Process_End("E123456", info2)) - { - Step = UnloaderHandler1Steps.S4630_PANEL_RIGHT_CIM_SEND_WAIT; - } - } - - break; - } - case UnloaderHandler1Steps.S4630_PANEL_RIGHT_CIM_SEND_WAIT: - { - if (equipment.cim_mode != En_Cim_Mode.Online) - { - Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; - return; - } - - if (equipment.cim_client.Get_Command_Ack(En_Cim_Command.PREND)) - { - if (equipment.cim_client.Get_Command_Result(En_Cim_Command.PREND)) - { - Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; - } - else - { - Step = UnloaderHandler1Steps.S4620_PANEL_RIGHT_CIM_SEND; - } - } - - break; - } - case UnloaderHandler1Steps.S4700_USER_COMMAND_START: + case UnloaderHandler1Steps.S4560_USER_COMMAND_START: { var aoistage = equipment.after.AoiStage; Panel_Info info1 = aoistage.Panel1; @@ -1844,10 +1766,10 @@ measurement_user_command = new Form_User_Command_Set("Measurement"); measurement_user_command_show = true; - Step = UnloaderHandler1Steps.S4710_USER_COMMAND_WAIT; + Step = UnloaderHandler1Steps.S4570_USER_COMMAND_WAIT; break; } - case UnloaderHandler1Steps.S4710_USER_COMMAND_WAIT: + case UnloaderHandler1Steps.S4570_USER_COMMAND_WAIT: { var aoistage = equipment.after.AoiStage; Panel_Info info1 = aoistage.Panel1; @@ -1948,6 +1870,734 @@ } break; } + case UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY: + { + Tact_Move.Start(); + equipment.Write_Tact_Time_Log($"ULD Handler 1, AOI Ready [Start]"); + + var info = equipment.after.AoiStage.Panel1; + + if (isAoiPanel1WidthMeasurementAck) + { + Step = UnloaderHandler1Steps.S4602_RIGHT_CAMERA_GRAB_READY; + return; + } + + if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Ready_Req(0, 0, 0, info.Stage_Num, info.Tray_Num, info.Panel_Num, info.Panel_ID)) + Step = UnloaderHandler1Steps.S4601_LEFT_CAMERA_GRAB_READY_WAIT; + + break; + } + case UnloaderHandler1Steps.S4601_LEFT_CAMERA_GRAB_READY_WAIT: + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Ready_Ack)) + { + Step = UnloaderHandler1Steps.S4602_RIGHT_CAMERA_GRAB_READY; + } + else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + break; + } + case UnloaderHandler1Steps.S4602_RIGHT_CAMERA_GRAB_READY: + { + if (sequenceChangedTime.Seconds < 0.1) break; + + var info = equipment.after.AoiStage.Panel2; + + if (isAoiPanel2WidthMeasurementAck) + { + Tact_Move.Stop(); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Ready [End]"); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Ready [Tact : {Tact_Move.Seconds} (sec)]"); + + Step = UnloaderHandler1Steps.S4610_MOVE_MEASUREMENT_MARK1_POSITION; + return; + } + + if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Ready_Req(1, 0, 0, info.Stage_Num, info.Tray_Num, info.Panel_Num, info.Panel_ID)) + Step = UnloaderHandler1Steps.S4603_RIGHT_CAMERA_GRAB_READY_WAIT; + + break; + } + case UnloaderHandler1Steps.S4603_RIGHT_CAMERA_GRAB_READY_WAIT: + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Ready_Ack)) + { + Tact_Move.Stop(); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Ready [End]"); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Ready [Tact : {Tact_Move.Seconds} (sec)]"); + + Step = UnloaderHandler1Steps.S4610_MOVE_MEASUREMENT_MARK1_POSITION; + } + else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + break; + } + case UnloaderHandler1Steps.S4610_MOVE_MEASUREMENT_MARK1_POSITION: + { + Tact_Move.Start(); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading Position [Start]"); + + if (MotorX.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark1_X, 500) && MotorY.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark1_Y, 500)) + Step = UnloaderHandler1Steps.S4611_POSITION_CHECK; + break; + } + case UnloaderHandler1Steps.S4611_POSITION_CHECK: + { + if (MotorX.MotionComplete && MotorY.MotionComplete) + { + if (MotorX.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark1_X, equipment.Setting.Inposition_Offset) && MotorY.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark1_Y, equipment.Setting.Inposition_Offset)) + { + Tact_Move.Stop(); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading Position [End]"); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading Position [Tact : {Tact_Move.Seconds} (sec)]"); + + vision_delay.Start(); + Step = UnloaderHandler1Steps.S4612_LEFT_CAMERA_MARK_1_GRAB_START; + } + else + { + Step = UnloaderHandler1Steps.S4610_MOVE_MEASUREMENT_MARK1_POSITION; + } + } + break; + } + case UnloaderHandler1Steps.S4612_LEFT_CAMERA_MARK_1_GRAB_START: + { + if (vision_delay.Seconds < equipment.Setting.Vision_Move_Delay) return; + + Tact_Move.Start(); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [Start]"); + + var info = equipment.after.AoiStage.Panel1; + + if (isAoiPanel1WidthMeasurementAck) + { + Step = UnloaderHandler1Steps.S4614_RIGHT_CAMERA_MARK_1_GRAB_START; + return; + } + + if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(0, 0, MotorX.Position, MotorY.Position)) + Step = UnloaderHandler1Steps.S4613_LEFT_CAMERA_MARK_1_GRAB_WAIT; + + break; + } + case UnloaderHandler1Steps.S4613_LEFT_CAMERA_MARK_1_GRAB_WAIT: + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Left_Ack)) + { + Step = UnloaderHandler1Steps.S4614_RIGHT_CAMERA_MARK_1_GRAB_START; + } + else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + + break; + } + case UnloaderHandler1Steps.S4614_RIGHT_CAMERA_MARK_1_GRAB_START: + { + if (sequenceChangedTime.Seconds < 0.1) return; + + var info = equipment.after.AoiStage.Panel2; + + if (isAoiPanel2WidthMeasurementAck) + { + Step = UnloaderHandler1Steps.S4620_MOVE_MEASUREMENT_MARK2_POSITION; + return; + } + + if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(1, 0, MotorX.Position, MotorY.Position)) + Step = UnloaderHandler1Steps.S4615_RIGHT_CAMERA_MARK_1_GRAB_WAIT; + + break; + } + case UnloaderHandler1Steps.S4615_RIGHT_CAMERA_MARK_1_GRAB_WAIT: + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack)) + { + Step = UnloaderHandler1Steps.S4620_MOVE_MEASUREMENT_MARK2_POSITION; + } + else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + break; + } + case UnloaderHandler1Steps.S4620_MOVE_MEASUREMENT_MARK2_POSITION: + { + if (sequenceChangedTime.Seconds < equipment.Setting.Vision_Move_Delay) break; + + if (MotorX.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark2_X, 500) && MotorY.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark2_Y, 500)) + Step = UnloaderHandler1Steps.S4621_POSITION_CHECK; + break; + } + case UnloaderHandler1Steps.S4621_POSITION_CHECK: + { + if (MotorX.MotionComplete && MotorY.MotionComplete) + { + if (MotorX.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark2_X, equipment.Setting.Inposition_Offset) && MotorY.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark2_Y, equipment.Setting.Inposition_Offset)) + { + vision_delay.Start(); + Step = UnloaderHandler1Steps.S4622_LEFT_CAMERA_MARK_2_GRAB_START; + } + else + { + Step = UnloaderHandler1Steps.S4620_MOVE_MEASUREMENT_MARK2_POSITION; + } + } + break; + } + case UnloaderHandler1Steps.S4622_LEFT_CAMERA_MARK_2_GRAB_START: + { + if (vision_delay.Seconds < equipment.Setting.Vision_Move_Delay) return; + + var info = equipment.after.AoiStage.Panel1; + + if (isAoiPanel1WidthMeasurementAck) + { + Step = UnloaderHandler1Steps.S4624_RIGHT_CAMERA_MARK_2_GRAB_START; + return; + } + + if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(0, 1, MotorX.Position, MotorY.Position)) + Step = UnloaderHandler1Steps.S4623_LEFT_CAMERA_MARK_2_GRAB_WAIT; + + break; + } + case UnloaderHandler1Steps.S4623_LEFT_CAMERA_MARK_2_GRAB_WAIT: + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Left_Ack)) + { + Step = UnloaderHandler1Steps.S4624_RIGHT_CAMERA_MARK_2_GRAB_START; + } + else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + break; + } + case UnloaderHandler1Steps.S4624_RIGHT_CAMERA_MARK_2_GRAB_START: + { + if (sequenceChangedTime.Seconds < 0.1) return; + + var info = equipment.after.AoiStage.Panel2; + + if (isAoiPanel2WidthMeasurementAck) + { + sequenceChangedTime.Start(); + + if (equipment.Cur_Main_Recipe.vision_info.AoiMark34Use) + { + Step = UnloaderHandler1Steps.S4630_MOVE_MEASUREMENT_MARK3_POSITION; + } + else + { + Step = UnloaderHandler1Steps.S4650_MEASUREMENT_CHECK; + } + return; + } + + if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(1, 1, MotorX.Position, MotorY.Position)) + Step = UnloaderHandler1Steps.S4625_RIGHT_CAMERA_MARK_2_GRAB_WAIT; + + break; + } + case UnloaderHandler1Steps.S4625_RIGHT_CAMERA_MARK_2_GRAB_WAIT: + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack)) + { + if (equipment.Cur_Main_Recipe.vision_info.AoiMark34Use) + { + Step = UnloaderHandler1Steps.S4630_MOVE_MEASUREMENT_MARK3_POSITION; + } + else + { + Step = UnloaderHandler1Steps.S4650_MEASUREMENT_CHECK; + } + } + else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + break; + } + case UnloaderHandler1Steps.S4630_MOVE_MEASUREMENT_MARK3_POSITION: + { + if (sequenceChangedTime.Seconds < equipment.Setting.Vision_Move_Delay) break; + + if (MotorX.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark3_X, 500) && MotorY.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark3_Y, 500)) + Step = UnloaderHandler1Steps.S4631_POSITION_CHECK; + break; + } + case UnloaderHandler1Steps.S4631_POSITION_CHECK: + { + if (MotorX.MotionComplete && MotorY.MotionComplete) + { + if (MotorX.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark3_X, equipment.Setting.Inposition_Offset) && MotorY.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark3_Y, equipment.Setting.Inposition_Offset)) + { + vision_delay.Start(); + Step = UnloaderHandler1Steps.S4632_LEFT_CAMERA_MARK_3_GRAB_START; + } + else + { + Step = UnloaderHandler1Steps.S4630_MOVE_MEASUREMENT_MARK3_POSITION; + } + } + break; + } + case UnloaderHandler1Steps.S4632_LEFT_CAMERA_MARK_3_GRAB_START: + { + if (vision_delay.Seconds < equipment.Setting.Vision_Move_Delay) return; + + var info = equipment.after.AoiStage.Panel1; + + if (isAoiPanel1WidthMeasurementAck) + { + Step = UnloaderHandler1Steps.S4634_RIGHT_CAMERA_MARK_3_GRAB_START; + return; + } + + if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(0, 2, MotorX.Position, MotorY.Position)) + Step = UnloaderHandler1Steps.S4633_LEFT_CAMERA_MARK_3_GRAB_WAIT; + + break; + } + case UnloaderHandler1Steps.S4633_LEFT_CAMERA_MARK_3_GRAB_WAIT: + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Left_Ack)) + { + Step = UnloaderHandler1Steps.S4634_RIGHT_CAMERA_MARK_3_GRAB_START; + } + else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + break; + } + case UnloaderHandler1Steps.S4634_RIGHT_CAMERA_MARK_3_GRAB_START: + { + if (sequenceChangedTime.Seconds < 0.1) return; + + var info = equipment.after.AoiStage.Panel2; + + if (isAoiPanel2WidthMeasurementAck) + { + sequenceChangedTime.Start(); + Step = UnloaderHandler1Steps.S4640_MOVE_MEASUREMENT_MARK4_POSITION; + return; + } + + if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(1, 2, MotorX.Position, MotorY.Position)) + Step = UnloaderHandler1Steps.S4635_RIGHT_CAMERA_MARK_3_GRAB_WAIT; + + break; + } + case UnloaderHandler1Steps.S4635_RIGHT_CAMERA_MARK_3_GRAB_WAIT: + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack)) + { + Step = UnloaderHandler1Steps.S4640_MOVE_MEASUREMENT_MARK4_POSITION; + } + else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + break; + } + case UnloaderHandler1Steps.S4640_MOVE_MEASUREMENT_MARK4_POSITION: + { + if (sequenceChangedTime.Seconds < equipment.Setting.Vision_Move_Delay) break; + + if (MotorX.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark4_X, 500) && MotorY.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark4_Y, 500)) + Step = UnloaderHandler1Steps.S4641_POSITION_CHECK; + break; + } + case UnloaderHandler1Steps.S4641_POSITION_CHECK: + { + if (MotorX.MotionComplete && MotorY.MotionComplete) + { + if (MotorX.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark4_X, equipment.Setting.Inposition_Offset) && MotorY.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark4_Y, equipment.Setting.Inposition_Offset)) + { + vision_delay.Start(); + Step = UnloaderHandler1Steps.S4642_LEFT_CAMERA_MARK_4_GRAB_START; + } + else + { + Step = UnloaderHandler1Steps.S4640_MOVE_MEASUREMENT_MARK4_POSITION; + } + } + break; + } + case UnloaderHandler1Steps.S4642_LEFT_CAMERA_MARK_4_GRAB_START: + { + if (vision_delay.Seconds < equipment.Setting.Vision_Move_Delay) return; + + var info = equipment.after.AoiStage.Panel1; + + if (isAoiPanel1WidthMeasurementAck) + { + Step = UnloaderHandler1Steps.S4644_RIGHT_CAMERA_MARK_4_GRAB_START; + return; + } + + if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(0, 3, MotorX.Position, MotorY.Position)) + Step = UnloaderHandler1Steps.S4643_LEFT_CAMERA_MARK_4_GRAB_WAIT; + + break; + } + case UnloaderHandler1Steps.S4643_LEFT_CAMERA_MARK_4_GRAB_WAIT: + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Left_Ack)) + { + Step = UnloaderHandler1Steps.S4644_RIGHT_CAMERA_MARK_4_GRAB_START; + } + else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + break; + } + case UnloaderHandler1Steps.S4644_RIGHT_CAMERA_MARK_4_GRAB_START: + { + if (sequenceChangedTime.Seconds < 0.1) return; + + var info = equipment.after.AoiStage.Panel2; + + if (isAoiPanel2WidthMeasurementAck) + { + sequenceChangedTime.Start(); + Step = UnloaderHandler1Steps.S4650_MEASUREMENT_CHECK; + return; + } + + if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(1, 3, MotorX.Position, MotorY.Position)) + Step = UnloaderHandler1Steps.S4645_RIGHT_CAMERA_MARK_4_GRAB_WAIT; + + break; + } + case UnloaderHandler1Steps.S4645_RIGHT_CAMERA_MARK_4_GRAB_WAIT: + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack)) + { + Step = UnloaderHandler1Steps.S4650_MEASUREMENT_CHECK; + } + else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + break; + } + case UnloaderHandler1Steps.S4650_MEASUREMENT_CHECK: + { + var aoistage = equipment.after.AoiStage; + var info1 = aoistage.Panel1; + var info2 = aoistage.Panel2; + + object value; + bool result; + if ((isAoiPanel1WidthMeasurementAck || equipment.sm.Get_Bit(Vision_Address.Measurement_Left_Ack)) + && (isAoiPanel2WidthMeasurementAck || equipment.sm.Get_Bit(Vision_Address.Measurement_Right_Ack))) + { + if (aoistage.Stage1.IsExist && info1.WidthMeasurement_Ack == false) + { + info1.WidthMeasurement_Ack = true; + + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Left_Result, out result)) + { + info1.WidthMeasurement_Result = result; + + info1.End_Time = DateTime.Now; + + equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_1_Point_1, out value); + info1.Mark1Point1 = double.Parse(value.ToString()); + equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_2_Point_1, out value); + info1.Mark2Point1 = double.Parse(value.ToString()); + equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_3_Point_1, out value); + info1.Mark3Point1 = double.Parse(value.ToString()); + equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_4_Point_1, out value); + info1.Mark4Point1 = double.Parse(value.ToString()); + + aoistage.Panel1 = info1; + + isAoiPanel1WidthMeasurementAck = aoiStage.Stage1.IsExist == false || aoiStage.Panel1.WidthMeasurement_Ack; + } + else + { + return; + } + } + + if (aoistage.Stage2.IsExist && info2.WidthMeasurement_Ack == false) + { + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Right_Align_Result)) + { + info2.WidthMeasurement_Ack = true; + + if (equipment.sm.Get_Bit(Vision_Address.Measurement_Right_Result, out result)) + { + info2.Measurement_Result = result; + + info2.End_Time = DateTime.Now; + + equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_1_Point_1, out value); + info2.Mark1Point1 = double.Parse(value.ToString()); + equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_2_Point_1, out value); + info2.Mark2Point1 = double.Parse(value.ToString()); + equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_3_Point_1, out value); + info2.Mark3Point1 = double.Parse(value.ToString()); + equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_4_Point_1, out value); + info2.Mark4Point1 = double.Parse(value.ToString()); + + aoistage.Panel2 = info2; + + isAoiPanel2WidthMeasurementAck = aoiStage.Stage2.IsExist == false || aoiStage.Panel2.WidthMeasurement_Ack; + } + else + { + return; + } + } + } + + Tact_Move.Stop(); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [End]"); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [Tact : {Tact_Move.Seconds} (sec)]"); + + if (isAoiPanel1WidthMeasurementAck && isAoiPanel2WidthMeasurementAck) + { + if (equipment.cim_mode == En_Cim_Mode.Online) + { + Step = UnloaderHandler1Steps.S4800_PANEL_LEFT_CIM_SEND; + } + else + { + Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; + } + } + else + { + equipment.Aoi_vision.WriteClientLog("no align result"); + measurement_retry_cnt++; + + if (measurement_retry_cnt >= equipment.Setting.Vision_Retry_Count) + { + Step = UnloaderHandler1Steps.S4700_USER_COMMAND_START; + } + else + { + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + } + } + else + { + if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout) + { + measurement_retry_cnt++; + + if (measurement_retry_cnt == equipment.Setting.Vision_Retry_Count) + { + equipment.Aoi_vision.WriteClientLog("no ack result"); + Tact_Move.Stop(); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [End]"); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [Tact : {Tact_Move.Seconds} (sec)]"); + Step = UnloaderHandler1Steps.S4700_USER_COMMAND_START; + } + else + { + equipment.Aoi_vision.WriteClientLog("no ack result"); + Tact_Move.Stop(); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [End]"); + equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [Tact : {Tact_Move.Seconds} (sec)]"); + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + } + } + + break; + } + case UnloaderHandler1Steps.S4700_USER_COMMAND_START: + { + var aoistage = equipment.after.AoiStage; + Panel_Info info1 = aoistage.Panel1; + Panel_Info info2 = aoistage.Panel2; + + if (aoistage.Stage1.IsExist && info1.WidthMeasurement_Ack == false) + { + Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0886_MEASUREMENT_LEFT_ERROR); + } + + if (aoistage.Stage2.IsExist && info2.WidthMeasurement_Ack == false) + { + Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0887_MEASUREMENT_RIGHT_ERROR); + } + + measurement_user_command = new Form_User_Command_Set("Measurement"); + measurement_user_command_show = true; + + Step = UnloaderHandler1Steps.S4700_USER_COMMAND_WAIT; + break; + } + case UnloaderHandler1Steps.S4700_USER_COMMAND_WAIT: + { + var aoistage = equipment.after.AoiStage; + Panel_Info info1 = aoistage.Panel1; + Panel_Info info2 = aoistage.Panel2; + + + if (measurement_user_command.Command_Type == En_User_Command.Scrap) + { + if (aoistage.Stage1.IsExist && info1.Measurement_Ack == false) + { + aoistage.Panel1 = new Panel_Info(); + aoistage.Stage_1_Scrap(); + equipment.Aoi_vision.Send_Measurement_Command_Req(0, 0, info1.Tray_Num, info1.Panel_Num, info1.Panel_ID); + } + + if (aoistage.Stage2.IsExist && info2.Measurement_Ack == false) + { + aoistage.Panel2 = new Panel_Info(); + aoistage.Stage_2_Scrap(); + equipment.Aoi_vision.Send_Measurement_Command_Req(0, 1, info2.Tray_Num, info2.Panel_Num, info2.Panel_ID); + } + + Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; + } + else if (measurement_user_command.Command_Type == En_User_Command.Retry) + { + if (aoistage.Stage1.IsExist && info1.Measurement_Ack == false) + { + equipment.Aoi_vision.Send_Measurement_Command_Req(1, 0, info1.Tray_Num, info1.Panel_Num, info1.Panel_ID); + } + + if (aoistage.Stage2.IsExist && info2.Measurement_Ack == false) + { + equipment.Aoi_vision.Send_Measurement_Command_Req(1, 1, info2.Tray_Num, info2.Panel_Num, info2.Panel_ID); + } + + measurement_retry_cnt = 0; + Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY; + } + else if (measurement_user_command.Command_Type == En_User_Command.Skip) + { + if (aoistage.Stage1.IsExist && info1.Measurement_Ack == false) + { + equipment.sm.Set_Bit(Vision_Address.Measurement_Left_Ack, true); + equipment.sm.Set_Bit(Vision_Address.Measurement_Left_Align_Result, true); + equipment.sm.Set_Bit(Vision_Address.Measurement_Left_Result, false); + equipment.Aoi_vision.Send_Measurement_Command_Req(2, 0, info1.Tray_Num, info1.Panel_Num, info1.Panel_ID); + } + + if (aoistage.Stage2.IsExist && info2.Measurement_Ack == false) + { + equipment.sm.Set_Bit(Vision_Address.Measurement_Right_Ack, true); + equipment.sm.Set_Bit(Vision_Address.Measurement_Right_Align_Result, true); + equipment.sm.Set_Bit(Vision_Address.Measurement_Right_Result, false); + equipment.Aoi_vision.Send_Measurement_Command_Req(2, 1, info2.Tray_Num, info2.Panel_Num, info2.Panel_ID); + } + + Step = UnloaderHandler1Steps.S4650_MEASUREMENT_CHECK; + } + break; + } + case UnloaderHandler1Steps.S4800_PANEL_LEFT_CIM_SEND: + { + if (equipment.cim_mode != En_Cim_Mode.Online) + { + Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; + return; + } + + Panel_Info info1 = equipment.after.AoiStage.Panel1; + + if (equipment.after.AoiStage.Stage1.IsExist == false || info1.IsPanelIdRead == false) + { + Step = UnloaderHandler1Steps.S4820_PANEL_RIGHT_CIM_SEND; + return; + } + else + { + if (equipment.cim_client.Send_Process_End("E123456", info1)) + { + Step = UnloaderHandler1Steps.S4810_PANEL_LEFT_CIM_SEND_WAIT; + } + } + + break; + } + case UnloaderHandler1Steps.S4810_PANEL_LEFT_CIM_SEND_WAIT: + { + if (equipment.cim_mode != En_Cim_Mode.Online) + { + Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; + return; + } + + if (equipment.cim_client.Get_Command_Ack(En_Cim_Command.PREND)) + { + if (equipment.cim_client.Get_Command_Result(En_Cim_Command.PREND)) + { + Step = UnloaderHandler1Steps.S4820_PANEL_RIGHT_CIM_SEND; + } + else + { + Step = UnloaderHandler1Steps.S4800_PANEL_LEFT_CIM_SEND; + } + } + + break; + } + case UnloaderHandler1Steps.S4820_PANEL_RIGHT_CIM_SEND: + { + if (equipment.cim_mode != En_Cim_Mode.Online) + { + Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; + return; + } + + Panel_Info info2 = equipment.after.AoiStage.Panel2; + + if (equipment.after.AoiStage.Stage2.IsExist == false || info2.IsPanelIdRead == false) + { + Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; + } + else + { + if (equipment.cim_client.Send_Process_End("E123456", info2)) + { + Step = UnloaderHandler1Steps.S4830_PANEL_RIGHT_CIM_SEND_WAIT; + } + } + + break; + } + case UnloaderHandler1Steps.S4830_PANEL_RIGHT_CIM_SEND_WAIT: + { + if (equipment.cim_mode != En_Cim_Mode.Online) + { + Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; + return; + } + + if (equipment.cim_client.Get_Command_Ack(En_Cim_Command.PREND)) + { + if (equipment.cim_client.Get_Command_Result(En_Cim_Command.PREND)) + { + Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END; + } + else + { + Step = UnloaderHandler1Steps.S4820_PANEL_RIGHT_CIM_SEND; + } + } + + break; + } case UnloaderHandler1Steps.S4999_MEASUREMENT_END: { Tact_AOI.Stop(); diff --git a/SHARP_CLAS_UI/500.Equipment/700.Unit/Base/Handler.cs b/SHARP_CLAS_UI/500.Equipment/700.Unit/Base/Handler.cs index 7aec7d1..31fd863 100644 --- a/SHARP_CLAS_UI/500.Equipment/700.Unit/Base/Handler.cs +++ b/SHARP_CLAS_UI/500.Equipment/700.Unit/Base/Handler.cs @@ -261,13 +261,61 @@ S4550_MEASUREMENT_CHECK, - S4600_PANEL_LEFT_CIM_SEND, - S4610_PANEL_LEFT_CIM_SEND_WAIT, - S4620_PANEL_RIGHT_CIM_SEND, - S4630_PANEL_RIGHT_CIM_SEND_WAIT, + S4560_USER_COMMAND_START, + S4570_USER_COMMAND_WAIT, + + //Width Measurment Sequence 異붽�. + /* + * Camera ready, 4600 ~ + * �쐞移� �씠�룞諛� Grab 1 ~ 4 + * 醫낅즺 �솗�씤. + * Ok, Retry or Pass �솗�씤. , 4700 ~ + * CIM 蹂닿퀬 �솗�씤. + */ + S4600_LEFT_CAMERA_GRAB_READY, + S4601_LEFT_CAMERA_GRAB_READY_WAIT, + S4602_RIGHT_CAMERA_GRAB_READY, + S4603_RIGHT_CAMERA_GRAB_READY_WAIT, + + S4610_MOVE_MEASUREMENT_MARK1_POSITION, + S4611_POSITION_CHECK, + S4612_LEFT_CAMERA_MARK_1_GRAB_START, + S4613_LEFT_CAMERA_MARK_1_GRAB_WAIT, + S4614_RIGHT_CAMERA_MARK_1_GRAB_START, + S4615_RIGHT_CAMERA_MARK_1_GRAB_WAIT, + + S4620_MOVE_MEASUREMENT_MARK2_POSITION, + S4621_POSITION_CHECK, + S4622_LEFT_CAMERA_MARK_2_GRAB_START, + S4623_LEFT_CAMERA_MARK_2_GRAB_WAIT, + S4624_RIGHT_CAMERA_MARK_2_GRAB_START, + S4625_RIGHT_CAMERA_MARK_2_GRAB_WAIT, + + S4630_MOVE_MEASUREMENT_MARK3_POSITION, + S4631_POSITION_CHECK, + S4632_LEFT_CAMERA_MARK_3_GRAB_START, + S4633_LEFT_CAMERA_MARK_3_GRAB_WAIT, + S4634_RIGHT_CAMERA_MARK_3_GRAB_START, + S4635_RIGHT_CAMERA_MARK_3_GRAB_WAIT, + + S4640_MOVE_MEASUREMENT_MARK4_POSITION, + S4641_POSITION_CHECK, + S4642_LEFT_CAMERA_MARK_4_GRAB_START, + S4643_LEFT_CAMERA_MARK_4_GRAB_WAIT, + S4644_RIGHT_CAMERA_MARK_4_GRAB_START, + S4645_RIGHT_CAMERA_MARK_4_GRAB_WAIT, + + S4650_MEASUREMENT_CHECK, S4700_USER_COMMAND_START, - S4710_USER_COMMAND_WAIT, + S4700_USER_COMMAND_WAIT, + //============================== + + S4800_PANEL_LEFT_CIM_SEND, + S4810_PANEL_LEFT_CIM_SEND_WAIT, + S4820_PANEL_RIGHT_CIM_SEND, + S4830_PANEL_RIGHT_CIM_SEND_WAIT, + S4999_MEASUREMENT_END, //======================== AOI PICK ============================ diff --git a/SHARP_CLAS_UI/500.Equipment/Equipment.cs b/SHARP_CLAS_UI/500.Equipment/Equipment.cs index e05e9b7..d7af1b8 100644 --- a/SHARP_CLAS_UI/500.Equipment/Equipment.cs +++ b/SHARP_CLAS_UI/500.Equipment/Equipment.cs @@ -366,7 +366,24 @@ sm.Set_Value(Process_Memory_Address.ULD_Tray_Ng_Count, value); } } - + + public int WidthMeasurementCount + { + get + { + int count; + object value; + + sm.Get_Value(Process_Memory_Address.Width_Measurement_Count, out value); + int.TryParse($"{value}", out count); + return count; + } + set + { + sm.Set_Value(Process_Memory_Address.Width_Measurement_Count, value); + } + } + public Main_Recipe Cur_Main_Recipe { get @@ -547,7 +564,7 @@ private User_Info _user; private SequenceTimer _modeChangeTime = new SequenceTimer(); - private string _programVersion = "001.001.005"; + private string _programVersion = "001.002.000"; #endregion #region Construct -- Gitblit v1.9.3