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(); } }
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); }
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(); }
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(); } }