to3796zw 9c1daaee1d fix: Busy bit 위치 변경 및 Scanner Cam 팝업 모션 수정
- Laser On Display 타이밍을 맞추기 위해 PC_WELD_BUSY bit
  기록 위치 변경 (SeqAutoRunPTOP)
- 레시피 Scanner Cam 팝업(WDScannerCamMotion)을 직접 실행
  모드(publishMode:false)로 변경하고, 창 표시 시 모니터
  타이머/Limit 초기화를 호출해 모션 미동작·좌표 0 고정 해소
- 작업일지 2026-06-26 추가, Laser Interface 문서 갱신

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 15:02:21 +09:00

2.1 KiB

작업일지 — 2026-06-26

1. Laser Display On 타이밍 관련 busy bit 위치 변경

  • Laser Display On 타이밍을 맞추기 위해 busy bit 위치를 변경.
  • (상세 구현 내용 추후 보완)

2. 레시피 Scanner Cam 팝업 모션/좌표 표시 수정

  • 증상: 레시피 화면 Scanner Cam 팝업(WDScannerCamMotion)에서 방향 Jog·Move X/Y 모션이 동작하지 않고, 갈보모터 X/Y 값이 0으로 고정됨. (CAM 영상 자체는 정상)
  • 원인:
    • 팝업이 UCScannerMotionViewModel을 publishMode: true(이벤트 발행 전용)로 띄움 → 실제 이동은 매뉴얼 측 execute VM이 수행하는 구조.
    • execute VM의 Limit(CommandPosLimitMin/MaxX/Y)는 매뉴얼 화면이 보일 때(VisibleChanged → Init_XYLimitPos)만 설정되는데, 팝업 조작 시 매뉴얼 화면은 비표시 → Limit가 0 → CheckOverLimitPos가 모든 목표를 "범위 초과"로 reject → 조용히 무동작.
    • 팝업의 X/Y 표시는 _MonitorTimer로 갱신되나, 타이머는 UCScannerMotion.xaml의 IsVisible 트리거 → VisibleChanged로만 시작됨. 창 호스팅(코드비하인드 DataContext 주입 + Show/Hide)에선 이 트리거가 발동하지 않아 타이머 미작동 → 값 0 고정.
  • 수정: WeldingComponents/WeldingCommon/Views/Recipes/WDScannerCamMotion.xaml.cs 한 파일만 변경.
    • VM 참조 필드(_MotionVM) 추가.
    • 생성자: publishMode: true → publishMode: false(매뉴얼과 동일한 직접 실행 모드)로 생성 + 참조 보관.
    • Window_IsVisibleChanged에서 _MotionVM.CMD_VisibleChanged.Execute(isVisible) 호출 → 모니터 타이머 시작 + Init_XYLimitPos() 보장.
  • 결과(기대): 팝업 모션이 매뉴얼 Scanner 화면과 동일하게 동작, X/Y 실시간 표시. UCScannerMotionViewModel은 무수정(매뉴얼 로직 100% 재사용).
  • 검증: WeldingCommon Debug|x64 컴파일 통과(에러 0).
  • 남은 작업: 실기 동작 확인 후, 미사용이 된 publish 우회 경로(ScannerCommandMoveParam·PublishMotion·EVENT_SCANNER_COMMAND_MOVE 구독/핸들러·_PublishMode 분기) dead code 정리 예정.