feat: ACS Stage Manual View 추가 및 Motor 축 등록 완료
- WeldingCommon/Views/ACS/ UCStageManual, UCMotorAxses, UCStageMotorMoving 추가 (Scanner X축 전용, WeldingCommon 공통 View로 등록) - EquipmentSetup.cs ACS, AxisX2, AxisY1, AxisY2, AxisZ 등록 및 Initialized 확인 - Manual 메뉴에 Stage Manual 서브메뉴 추가 - AddInterlockCheck 주석 처리 (ACSMotor 지원 여부 이정인 선임 확인 필요)
This commit is contained in:
parent
8d1af44743
commit
b476476833
@ -159,6 +159,8 @@ namespace ILSOS_PrismaticScanner
|
|||||||
() => _plc, PLCMxComponentConfig.GetDefaultConfig(),
|
() => _plc, PLCMxComponentConfig.GetDefaultConfig(),
|
||||||
device => new UCPLCDevice() { DataContext = new UCPLCDeviceViewModel(AuroraEnv, _plc) });
|
device => new UCPLCDevice() { DataContext = new UCPLCDeviceViewModel(AuroraEnv, _plc) });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AlarmManager.Init(AuroraEnv);
|
AlarmManager.Init(AuroraEnv);
|
||||||
|
|
||||||
#region Common에 있는 Device를 등록한다. 26.04.06
|
#region Common에 있는 Device를 등록한다. 26.04.06
|
||||||
@ -186,10 +188,62 @@ namespace ILSOS_PrismaticScanner
|
|||||||
registry.Register(MotorIds.AxisZ, () => motorZ,
|
registry.Register(MotorIds.AxisZ, () => motorZ,
|
||||||
new ACSMotorConfig(MotorIds.AxisZ),
|
new ACSMotorConfig(MotorIds.AxisZ),
|
||||||
motor => new UCACSMotor(AuroraEnv.DeviceManager, motor.DeviceId));
|
motor => new UCACSMotor(AuroraEnv.DeviceManager, motor.DeviceId));
|
||||||
|
|
||||||
|
// ── 26.04.06 NDY 추가: DevGroup 적용 ──────────────────────────────
|
||||||
|
foreach (var device in registry.GetDevices())
|
||||||
|
{
|
||||||
|
if (device.DeviceId == DeviceIds.ACS ||
|
||||||
|
device.DeviceId == MotorIds.AxisX2 ||
|
||||||
|
device.DeviceId == MotorIds.AxisY1 ||
|
||||||
|
device.DeviceId == MotorIds.AxisY2 ||
|
||||||
|
device.DeviceId == MotorIds.AxisZ)
|
||||||
|
{
|
||||||
|
device.DevGroup = "ACS";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ──────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
// ── 26.04.06 NDY 추가: 인터락 ─────────────────────────────────────
|
||||||
|
// TODO: PLCControllerPrismaticScanner에 IsDoorOpen, IsEMO 있는지 확인 필요 - 없는 것 확인 완료
|
||||||
|
//PLC_DOOR_INTERLOCK = 6, // ← 도어 인터락
|
||||||
|
//PLC_EMO_STATUS = 7, // ← EMO
|
||||||
|
AddMotionInterlockCheck(_plc);
|
||||||
|
// ──────────────────────────────────────────────────────────────────
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// 인터락
|
||||||
|
private void AddMotionInterlockCheck(PLCControllerPrismaticScanner plc)
|
||||||
|
{
|
||||||
|
var motorIds = new[] {
|
||||||
|
MotorIds.AxisX2,
|
||||||
|
MotorIds.AxisY1,
|
||||||
|
MotorIds.AxisY2,
|
||||||
|
MotorIds.AxisZ
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var motorId in motorIds)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var motor = AuroraEnv.DeviceManager[motorId] as ACSMotor;
|
||||||
|
if (motor == null) continue;
|
||||||
|
|
||||||
|
//motor.AddInterlockCheck(("MotorInPos",
|
||||||
|
// () => !motor.ReadInposition()));
|
||||||
|
//motor.AddInterlockCheck(("IsDoorOpen",
|
||||||
|
// () => plc.ReadBit(PLCControllerPrismaticScanner.eBitInput.PLC_DOOR_INTERLOCK).data));
|
||||||
|
//motor.AddInterlockCheck(("IsEMO",
|
||||||
|
// () => plc.ReadBit(PLCControllerPrismaticScanner.eBitInput.PLC_EMO_STATUS).data));
|
||||||
|
|
||||||
|
//*** 인터락은 이정인 선임께 ACSMotor에 AddInterlockCheck가 있는지 확인 후 진행
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.W($"AddMotionInterlockCheck [{motorId}] 실패: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
public override void RegisterRecipes(RecipeRegister register)
|
public override void RegisterRecipes(RecipeRegister register)
|
||||||
{
|
{
|
||||||
register(CommonRecipeIds.ScannerObjectTeaching, new ScannerObjectTeachingRecipe(),
|
register(CommonRecipeIds.ScannerObjectTeaching, new ScannerObjectTeachingRecipe(),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user