58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
using Aurora.Api.Devices;
|
|
using Hermes;
|
|
using VisionCommon;
|
|
|
|
namespace WeldingCommon.Vision.Device {
|
|
/// <summary>
|
|
/// 얼라인 모션 매니저
|
|
/// </summary>
|
|
public class AlignMotionManager : MotionManager<SubSysInfo> {
|
|
/// <summary>
|
|
/// 생성자
|
|
/// </summary>
|
|
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());
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 샘플 장비 모션 - UVW 얼라인 모션 제어
|
|
/// </summary>
|
|
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();
|
|
}
|
|
}
|
|
}
|