Exemple #1
0
        public void Glue(GlueTargets glueTargets, GlueParameter gluePara)
        {
            lock (_motionLocker)
            {
                ClearInterpolationBuffer();

                PointInfo gluePoint;
                PointInfo risePoint;

                for (int i = 0; i < 4; i++)
                {
                    gluePoint = new PointInfo()
                    {
                        X = glueTargets.PointTargets[i].X,
                        Y = glueTargets.PointTargets[i].Y,
                        Z = glueTargets.PointTargets[i].Z + gluePara.GlueRadius,
                    };
                    AddPoint(gluePoint);
                    AddDigitalOutput(OutputState.On);
                    if (i == 0)
                    {
                        AddDelay(gluePara.PreShotTime);
                    }
                    else
                    {
                        AddDelay(gluePara.PreShotTime - gluePara.SecondLineLessPreShot);
                    }
                    AddDelay(gluePara.GluePeriod);
                    AddDigitalOutput(OutputState.Off);

                    risePoint = new PointInfo()
                    {
                        X = glueTargets.PointTargets[i].X,
                        Y = glueTargets.PointTargets[i].Y,
                        Z = glueTargets.PointTargets[i].Z + gluePara.RiseGlueHeight,
                    };
                    AddPoint(risePoint, gluePara.RiseGlueSpeed);
                    AddDelay(gluePara.CloseGlueDelay);
                }

                var lastRise = new PointInfo()
                {
                    X = glueTargets.PointTargets[3].X,
                    Y = glueTargets.PointTargets[3].Y,
                    Z = glueTargets.PointTargets[3].Z + 20,
                };
                AddPoint(lastRise);

                CheckEnoughSpace();
                StartInterpolation();
                WaitTillInterpolationEnd();
            }
        }
Exemple #2
0
        public double[] GetSurfaceDistance(GlueTargets targets)
        {
            //First neck surface height, second spring surface height.
            double[] result = new double[2];

            double[] laserHeight = new double[4];

            int index = 0;

            MoveToTarget(targets.LaserTargets[index]);
            Delay(100);
            laserHeight[index] = GetNeedleToWorkSurfaceHeight();

            index++;
            MoveToTarget(targets.LaserTargets[index]);
            Delay(100);
            laserHeight[index] = GetNeedleToWorkSurfaceHeight();

            index++;
            MoveToTarget(targets.LaserTargets[index]);
            Delay(100);
            laserHeight[index] = GetNeedleToWorkSurfaceHeight();

            index++;
            MoveToTarget(targets.LaserTargets[index]);
            Delay(100);
            laserHeight[index] = GetNeedleToWorkSurfaceHeight();

            //check data reliablity.
            double[] errors = new double[laserHeight.Length - 1];
            for (int i = 0; i < laserHeight.Length - 1; i++)
            {
                errors[i] = laserHeight[i + 1] - laserHeight[i];
            }

            foreach (var err in errors)
            {
                if (err > 0.1)
                {
                    throw new LaserException("Laser height not reliable" + Helper.ConvertToJsonString(laserHeight));
                }
            }

            return(laserHeight);
        }
Exemple #3
0
        public void GlueOld(GlueTargets glueTargets, GlueParameter gluePara)
        {
            ClearInterpolationBuffer();

            #region First point.
            //Go to first point and delay.
            int index      = 0;
            var firstPoint = new PointInfo()
            {
                X = glueTargets.ArcTargets[index].XStart,
                Y = glueTargets.ArcTargets[index].YStart,
                Z = glueTargets.ArcTargets[index].Z + gluePara.GlueHeightOffset[index],
            };
            AddPoint(firstPoint);
            AddDigitalOutput(OutputState.On);
            AddDelay(gluePara.PreShotTime);

            AddArc(glueTargets.ArcTargets[index], gluePara.GlueSpeed);
            //Todo  Pre close to avoid sharp ending.
            AddDigitalOutput(OutputState.Off);

            var firstRise = new PointInfo()
            {
                X = glueTargets.ArcTargets[index].XEnd,
                Y = glueTargets.ArcTargets[index].YEnd,
                Z = glueTargets.ArcTargets[index].Z + gluePara.RiseGlueHeight,
            };
            AddPoint(firstRise, gluePara.RiseGlueSpeed);

            AddDelay(gluePara.CloseGlueDelay);
            #endregion

            #region Second point.
            index++;
            var secondPoint = new PointInfo()
            {
                X = glueTargets.ArcTargets[index].XStart,
                Y = glueTargets.ArcTargets[index].YStart,
                Z = glueTargets.ArcTargets[index].Z + gluePara.GlueHeightOffset[index],
            };
            AddPoint(secondPoint);
            AddDigitalOutput(OutputState.On);
            AddDelay(gluePara.PreShotTime - gluePara.SecondLineLessPreShot);

            AddArc(glueTargets.ArcTargets[index], gluePara.GlueSpeed);
            //Todo  Pre close to avoid sharp ending.
            AddDigitalOutput(OutputState.Off);

            var secondRise = new PointInfo()
            {
                X = glueTargets.ArcTargets[index].XEnd,
                Y = glueTargets.ArcTargets[index].YEnd,
                Z = glueTargets.ArcTargets[index].Z + gluePara.RiseGlueHeight,
            };
            AddPoint(secondRise, gluePara.RiseGlueSpeed);

            AddDelay(gluePara.CloseGlueDelay);
            #endregion

            #region third point.
            index++;
            var thirdPoint = new PointInfo()
            {
                X = glueTargets.ArcTargets[index].XStart,
                Y = glueTargets.ArcTargets[index].YStart,
                Z = glueTargets.ArcTargets[index].Z + gluePara.GlueHeightOffset[index],
            };
            AddPoint(thirdPoint);
            AddDigitalOutput(OutputState.On);
            AddDelay(gluePara.PreShotTime - gluePara.SecondLineLessPreShot);

            AddArc(glueTargets.ArcTargets[index], gluePara.GlueSpeed);
            //Todo  Pre close to avoid sharp ending.
            AddDigitalOutput(OutputState.Off);

            var thirdRise = new PointInfo()
            {
                X = glueTargets.ArcTargets[index].XEnd,
                Y = glueTargets.ArcTargets[index].YEnd,
                Z = glueTargets.ArcTargets[index].Z + gluePara.RiseGlueHeight,
            };
            AddPoint(thirdRise, gluePara.RiseGlueSpeed);

            AddDelay(gluePara.CloseGlueDelay);
            #endregion

            #region fourth point.
            index++;
            var fourthPoint = new PointInfo()
            {
                X = glueTargets.ArcTargets[index].XStart,
                Y = glueTargets.ArcTargets[index].YStart,
                Z = glueTargets.ArcTargets[index].Z + gluePara.GlueHeightOffset[index],
            };
            AddPoint(fourthPoint);
            AddDigitalOutput(OutputState.On);
            AddDelay(gluePara.PreShotTime - gluePara.SecondLineLessPreShot);

            AddArc(glueTargets.ArcTargets[index], gluePara.GlueSpeed);
            //Todo  Pre close to avoid sharp ending.
            AddDigitalOutput(OutputState.Off);

            var fourthRise = new PointInfo()
            {
                X = glueTargets.ArcTargets[index].XEnd,
                Y = glueTargets.ArcTargets[index].YEnd,
                Z = glueTargets.ArcTargets[index].Z + gluePara.RiseGlueHeight,
            };
            AddPoint(fourthRise, gluePara.RiseGlueSpeed);

            AddDelay(gluePara.CloseGlueDelay);
            #endregion

            var finishRise = new PointInfo()
            {
                X = glueTargets.ArcTargets[index].XEnd,
                Y = glueTargets.ArcTargets[index].YEnd,
                Z = glueTargets.ArcTargets[index].Z + gluePara.RiseGlueHeight + 20,
            };
            AddPoint(finishRise, 10);

            CheckEnoughSpace();
            StartInterpolation();
            WaitTillInterpolationEnd();
        }
Exemple #4
0
        public void Glue(GlueTargets glueTargets, GlueParameter gluePara)
        {
            lock (_motionLocker)
            {
                ClearInterpolationBuffer();

                #region First point.
                AddPoint(glueTargets.GroupPoints.Group1Points[0]);
                AddDigitalOutput(OutputState.On);
                AddDelay(gluePara.PreShotTime);

                //for (int i = 0; i < glueTargets.GroupPoints.Group1Points.Length; i++)
                //{
                //    AddPoint(glueTargets.GroupPoints.Group1Points[i], gluePara.GlueSpeed, gluePara.GlueSpeed);
                //}
                AddPoint(glueTargets.GroupPoints.Group1Points[10], gluePara.GlueSpeed, gluePara.GlueSpeed);

                AddDigitalOutput(OutputState.Off);
                glueTargets.GroupPoints.Group1Points[glueTargets.GroupPoints.Group1Points.Length - 2].Z +=
                    gluePara.RiseGlueHeight;
                AddPoint(glueTargets.GroupPoints.Group1Points[glueTargets.GroupPoints.Group1Points.Length - 2],
                         gluePara.RiseGlueSpeed, 0);
                AddDelay(gluePara.CloseGlueDelay);
                #endregion

                #region Second point.
                AddPoint(glueTargets.GroupPoints.Group2Points[0]);
                AddDigitalOutput(OutputState.On);
                AddDelay(gluePara.PreShotTime - -gluePara.SecondLineLessPreShot);

                //for (int i = 0; i < glueTargets.GroupPoints.Group2Points.Length; i++)
                //{
                //    AddPoint(glueTargets.GroupPoints.Group2Points[i], gluePara.GlueSpeed, gluePara.GlueSpeed);
                //}
                AddPoint(glueTargets.GroupPoints.Group2Points[10], gluePara.GlueSpeed, gluePara.GlueSpeed);

                AddDigitalOutput(OutputState.Off);
                glueTargets.GroupPoints.Group2Points[glueTargets.GroupPoints.Group2Points.Length - 2].Z +=
                    gluePara.RiseGlueHeight;
                AddPoint(glueTargets.GroupPoints.Group2Points[glueTargets.GroupPoints.Group2Points.Length - 2],
                         gluePara.RiseGlueSpeed, 0);
                AddDelay(gluePara.CloseGlueDelay);
                #endregion

                #region Third point.
                AddPoint(glueTargets.GroupPoints.Group3Points[0]);
                AddDigitalOutput(OutputState.On);
                AddDelay(gluePara.PreShotTime - -gluePara.SecondLineLessPreShot);

                //for (int i = 0; i < glueTargets.GroupPoints.Group3Points.Length; i++)
                //{
                //    AddPoint(glueTargets.GroupPoints.Group3Points[i], gluePara.GlueSpeed, gluePara.GlueSpeed);
                //}
                AddPoint(glueTargets.GroupPoints.Group3Points[10], gluePara.GlueSpeed, gluePara.GlueSpeed);

                AddDigitalOutput(OutputState.Off);
                glueTargets.GroupPoints.Group3Points[glueTargets.GroupPoints.Group3Points.Length - 2].Z +=
                    gluePara.RiseGlueHeight;
                AddPoint(glueTargets.GroupPoints.Group3Points[glueTargets.GroupPoints.Group3Points.Length - 2],
                         gluePara.RiseGlueSpeed, 0);
                AddDelay(gluePara.CloseGlueDelay);
                #endregion

                #region Fourth point.
                AddPoint(glueTargets.GroupPoints.Group4Points[0]);
                AddDigitalOutput(OutputState.On);
                AddDelay(gluePara.PreShotTime - -gluePara.SecondLineLessPreShot);

                //for (int i = 0; i < glueTargets.GroupPoints.Group4Points.Length; i++)
                //{
                //    AddPoint(glueTargets.GroupPoints.Group4Points[i], gluePara.GlueSpeed, gluePara.GlueSpeed);
                //}
                AddPoint(glueTargets.GroupPoints.Group4Points[10], gluePara.GlueSpeed, gluePara.GlueSpeed);

                AddDigitalOutput(OutputState.Off);
                glueTargets.GroupPoints.Group4Points[glueTargets.GroupPoints.Group4Points.Length - 2].Z +=
                    gluePara.RiseGlueHeight;
                AddPoint(glueTargets.GroupPoints.Group4Points[glueTargets.GroupPoints.Group4Points.Length - 2],
                         gluePara.RiseGlueSpeed, 0);
                AddDelay(gluePara.CloseGlueDelay);
                #endregion

                glueTargets.GroupPoints.Group4Points[glueTargets.GroupPoints.Group4Points.Length - 1].Z += 20;
                AddPoint(glueTargets.GroupPoints.Group4Points[glueTargets.GroupPoints.Group4Points.Length - 1]);

                CheckEnoughSpace();
                StartInterpolation();
                WaitTillInterpolationEnd();
            }
        }