2026-06-05 13:44:39 +09:00

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