Files
test_demo/MX-PD-盘古 - new/PanGu.DieBonderApp/MainShell/PageCalib/HeightMeasure/Service/HeightMeasureMotionService.cs

83 lines
3.4 KiB
C#
Raw Normal View History

using MainShell.Hardware;
using MainShell.Motion;
using MainShell.HeightMeasure.Model;
using MaxwellFramework.Core.Attributes;
using MXJM.Parameter.Maintance;
using System;
namespace MainShell.HeightMeasure.Service
{
[Singleton]
public class HeightMeasureMotionService
{
private readonly HardwareManager _hardware;
private readonly SafeAxisMotion _safeAxisMotion;
private readonly StagePlatformMotionService _stagePlatformMotionService;
public HeightMeasureMotionService(HardwareManager hardware, SafeAxisMotion safeAxisMotion, StagePlatformMotionService stagePlatformMotionService)
{
_hardware = hardware ?? throw new ArgumentNullException(nameof(hardware));
_safeAxisMotion = safeAxisMotion ?? throw new ArgumentNullException(nameof(safeAxisMotion));
_stagePlatformMotionService = stagePlatformMotionService ?? throw new ArgumentNullException(nameof(stagePlatformMotionService));
}
public void MoveCalibrationAndStagePlatformHeights(double czCalibrationHeight, double stageDatumHeight)
{
_safeAxisMotion.MoveAbs(AxisName.Axis_SZ, czCalibrationHeight);
_stagePlatformMotionService.MoveFlat(stageDatumHeight);
}
public void MoveWsAvoidance(double xPosition, double yPosition)
{
_safeAxisMotion.SafeMove(
MotionMoveRequest.ForAxis(GetRequiredAxis(_hardware.Axis_X2, nameof(_hardware.Axis_X2)), xPosition),
MotionMoveRequest.ForAxis(GetRequiredAxis(_hardware.Axis_Y2, nameof(_hardware.Axis_Y2)), yPosition));
}
public void MovePhsAndNeedle(double xPosition, double yPosition, double zPosition)
{
_safeAxisMotion.SafeMove(
MotionMoveRequest.ForAxis(GetRequiredAxis(_hardware.Axis_X1, nameof(_hardware.Axis_X1)), xPosition),
MotionMoveRequest.ForAxis(GetRequiredAxis(_hardware.Axis_Y1, nameof(_hardware.Axis_Y1)), yPosition));
_safeAxisMotion.MoveAbs(GetRequiredAxis(_hardware.Axis_Z1, nameof(_hardware.Axis_Z1)), zPosition);
}
public void MoveGlassMeasurePoint(TeachPoint point)
{
if (point == null)
{
throw new ArgumentNullException(nameof(point));
}
MovePhsAndNeedle(point.X, point.Y, point.Z);
}
public void MoveWaferMeasurePoint(TeachPoint point)
{
if (point == null)
{
throw new ArgumentNullException(nameof(point));
}
MoveWsAvoidance(point.X, point.Y);
_safeAxisMotion.MoveAbs(GetRequiredAxis(_hardware.Axis_Z1, nameof(_hardware.Axis_Z1)), point.Z);
}
public void MoveWaferMeasurePose(double xPosition, double yPosition)
{
_safeAxisMotion.SafeMove(
MotionMoveRequest.ForAxis(GetRequiredAxis(_hardware.Axis_X1, nameof(_hardware.Axis_X1)), xPosition),
MotionMoveRequest.ForAxis(GetRequiredAxis(_hardware.Axis_Y1, nameof(_hardware.Axis_Y1)), yPosition));
}
private static MwFramework.Device.IAxis GetRequiredAxis(MwFramework.Device.IAxis axis, string axisPropertyName)
{
if (axis == null)
{
throw new InvalidOperationException(string.Format("Axis '{0}' is not available.", axisPropertyName));
}
return axis;
}
}
}