using Aurora.Api.Devices;
using Hermes;
using VisionCommon;
namespace WeldingCommon.Vision.Device {
///
/// 얼라인 모션 매니저
///
public class AlignMotionManager : MotionManager {
///
/// 생성자
///
public AlignMotionManager() {
SetMotions();
}
private void SetMotions() {
// 예) 모든 SubSystem에 대해 DefaultMotion 설정
foreach (eUnitId unitId in VisionRecipeManager.GetUnitIds()) {
foreach (SubSysInfo subSysInfo in VisionRecipeManager.GetSubSysInfos(unitId)) {
SetMotion(subSysInfo, new DefaultMotion());
}
}
// 예) UVW Align 시스템 (Unit1, SubSys1)
//var subSysInfo1 = VisionRecipeManager.GetSubSysInfo(eUnitId.Unit1, eSubSysId.SubSys1);
//SetMotion(subSysInfo1, new UvwAlignMotion());
}
}
///
/// 샘플 장비 모션 - UVW 얼라인 모션 제어
///
public class UvwAlignMotion : IMotion {
public int RelMove(Position delta) {
// delta 만큼 상대위치 이동 한다.
return E1.OK;
}
public int AbsMove(Position position) {
// 요청한 위치로 이동한다.
return E1.OK;
}
public int MovePosition(ePositionType positionType) {
// 1. 레시피 또는 모델에서 ePositionType에 맞는 포지션을 가져온다.
// 예) 비전 얼라인 측정을 위한 티칭 포지션
// 2. 포지션으로 AbsMove 절대 위치 이동한다.
return E1.OK;
}
public Position GetPosition() {
// 현재 모터 위치를 가져온다.
return new Position();
}
}
}