Beispiel #1
0
 private void bUpdate2Set_Click(object sender, EventArgs e)
 {
     for (uint nz = 0; nz < Variable.NOZZLE_NUM; ++nz)
     {
         try
         {
             var        ctl    = (TextBox)(this.Controls.Find($"tZ{nz + 1}", true)[0]);
             Z_RunParam zparam = Form_Main.Instance.Z_RunParamMap[nz];
             zparam.PasteHeight = double.Parse(ctl.Text);
             Form_Main.Instance.Ini_Sys.IniWriteNumber("Position", $"PasteHeightZ{nz + 1}", zparam.PasteHeight);
         }
         catch { return; }
     }
 }
Beispiel #2
0
        private void CalPasueHeight(Z_RunParam zParam, ref PointF cur, ref Variable.VelMode vel)
        {
            zParam.MoveTrim(zParam.MoveDir * 0.5, vel);
            Thread.Sleep(500);

            if (!zParam.Check_vaccum.GetIO())
            {
                this.CalPasueHeight(zParam, ref cur, ref vel);
            }
            else
            {
                return;
            }
        }
        private void CalLoop()
        {
            while (!Exit)
            {
                if (!this.calQueue.IsEmpty)
                {
                    ResultItem item = null;
                    try
                    {
                        #region 计算
                        if (this.calQueue.TryDequeue(out item))
                        {
                            Stopwatch watch = new Stopwatch();
                            watch.Restart();

                            // 如果已有该吸嘴得计算结果顶替掉
                            Z_RunParam zParam = Form_Main.Instance.Z_RunParamMap[item.Nozzle];

                            var camera = Form_Main.Nozzle2Cam((int)item.Nozzle);

                            // 算法
                            zParam.CamResult = Form_Main.Instance.Auto_Detect1(ref Form_Main.Instance.Feeder[zParam.RUN_Nozzle_FeederIndex - 1].Label, zParam.CaptureImage, camera.Item1, (int)item.Nozzle);

                            Form_Main.Instance.CalNozzle(item.Nozzle, camera.Item1, camera.Item2);
                            zParam.CalFinished = true;

                            Form_Main.Instance.ShowVisionStatus((int)(item.Nozzle + 1), zParam.CamResult, zParam.CaptureImage);

                            Debug.WriteLine($"下视觉计算时间:{watch.ElapsedMilliseconds} ms");
                        }
                        #endregion
                    }
                    catch (Exception ex)
                    {
                        if (item != null)
                        {
                            // 如果已有该吸嘴得计算结果顶替掉
                            Z_RunParam zParam = Form_Main.Instance.Z_RunParamMap[item.Nozzle];
                            zParam.CalFinished             = true;
                            zParam.RUN_dNozzleDownVisionED = 4;
                            Form_Main.Instance.PutInLog("D://下视觉//", "Log", $"下视觉计算错误 {ex.Message} \n 错误所在:{ex.StackTrace} 吸嘴{item.Nozzle + 1},贴附信息{zParam.RUN_PasteInfoIndex},{zParam.RUN_PastePointIndex}");//
                        }
                    }
                }
                else
                {
                    Thread.Sleep(1);
                }
            }
        }
Beispiel #4
0
 private void bAutoSet_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show("是否以当前位置为贴附点进行,贴附高度确认!!", "Tips", MessageBoxButtons.YesNo) == DialogResult.Yes)
     {
         PointF cur = new PointF();
         cur.X = (float)Form_Main.Instance.X.Pos;
         cur.Y = (float)Form_Main.Instance.Y.Pos;
         Variable.VelMode vel = new Variable.VelMode(0, 100, 300, 300);
         for (uint nz = 0; nz < Variable.NOZZLE_NUM; ++nz)
         {
             Form_Main.Instance.XYGoPosTillStop(30000, Form_Main.Instance.NozzleToCamPoint(cur, (int)nz), vel);
             Z_RunParam zparam = Form_Main.Instance.Z_RunParamMap[nz];
             zparam.XI_vaccum.SetIO();
             this.CalPasueHeight(zparam, ref cur, ref vel);
             Thread.Sleep(500);
             var ctl = (TextBox)(this.Controls.Find($"tZ{nz + 1}", true)[0]);
             ctl.Text = zparam.Pos.ToString("f3");
             zparam.GoSafePos(vel);
             Thread.Sleep(2000);
             zparam.XI_vaccum.ResetIO();
         }
     }
 }
Beispiel #5
0
        private void bAutoSet_Click(object sender, EventArgs e)
        {
            if (this.cbLabelIndex.SelectedIndex < 0)
            {
                return;
            }
            int labelIndex = this.cbLabelIndex.SelectedIndex;

            //Task.Factory.StartNew(() =>
            //{
            try
            {
                var vel = Form_Main.VariableSys.VelMode_Current_Manual;
                parent.All_ZGoSafeTillStop(3000, vel);
                parent.XYGoPosTillStop(5000, Form_Main.VariableSys.pReadyPoint, vel);
                parent.Turn.GoPosTillStop(5000, Form_Main.VariableSys.dTurnXIAngle, vel);

                PointF camPt = new PointF();
                camPt.X = float.Parse(this.FeederCtrl.Rows[labelIndex].Cells[0].Value.ToString());
                camPt.Y = float.Parse(this.FeederCtrl.Rows[labelIndex].Cells[1].Value.ToString());

                PointF     nzPt    = parent.Nz1ToOther(camPt, this.Nozzle);
                double     zHeight = this.Feeder.XIHeight[labelIndex][this.Nozzle];
                double     xiAngle = this.Feeder.XI_Degree[this.Nozzle];
                Z_RunParam zParam  = parent.Z_RunParamMap[(uint)this.Nozzle];
                R_RunParam rParam  = parent.R_RunParamMap[(uint)this.Nozzle];

                zParam.PO_vaccum.ResetIO();
                zParam.XI_vaccum.ResetIO();

                parent.XYGoPosTillStop(5000, nzPt, vel);
                rParam.GoPosTillStop(5000, xiAngle, vel);

                if (this.Feeder.bReachXI)
                {
                    zParam.XI_vaccum.SetIO();
                }
                else
                {
                    zParam.XI_vaccum.ResetIO();
                }

                zParam.GoPosTillStop(5000, zHeight, vel);
                zParam.XI_vaccum.SetIO();
                Thread.Sleep(Form_Main.VariableSys.iDelay_BeforeXI);

                var camera = Form_Main.Nozzle2Cam(this.Nozzle);

                parent.LightON_Down_PASTE1(ref this.Feeder.Label);
                parent.SetShutter((int)this.Feeder.Label.Shutter1, camera.Item1);
                parent.All_ZGoSafeTillStop(5000, vel);
                if (!parent.All_ZReachOrg())
                {
                    return;
                }
                parent.XYGoPosTillStop(5000, Form_Main.VariableSys.pReadyPoint, vel);
                parent.Turn.GoPosTillStop(5000, Form_Main.VariableSys.dTurnPasteAngle, vel);

                // 拍照
                Thread.Sleep(Form_Main.VariableSys.iDownCamDelay);
                PointF curPos = Form_Main.VariableSys.pReadyPoint;
                CameraDefine.Instance[camera.Item1]._Session.Snap(parent.imageSet.Image);

                Variable.CamReturn cam = Form_Main.Instance.Auto_Detect1(ref this.Feeder.Label, parent.imageSet.Image, camera.Item1, this.Nozzle);

                if (cam.IsOK)
                {
                    // 识别出来的位置
                    PointF temp         = parent.Point2CCDCenter(curPos, new PointContour(cam.X, cam.Y), camera.Item1, camera.Item2);
                    PointF rotateCenter = parent.Point2CCDCenter(curPos, Form_Main.VariableSys.pDownRotateCenter[0], camera.Item1, camera.Item2);

                    /// 识别与吸嘴旋转中心的误差
                    PointF offset = new PointF();
                    offset.X = temp.X - rotateCenter.X;
                    offset.Y = temp.Y - rotateCenter.Y;

                    this.nOffsetX.Value = (decimal)offset.X;
                    this.nOffsetY.Value = (decimal)offset.Y;
                }
            }
            catch { }
            //});
        }