10 Commits

Author SHA1 Message Date
3b8e64b9be feat: 레이저 출사중 표시 및 출사조건 로그 (ISSUE-260904-01)
메뉴얼/레시피 화면에 DI Laser_EMISSION_ON(10) 기반 출사중 램프 추가. 260904 현장 실측으로 DI 10 이 DO 9 의 에코가 아닌 실제 발진 피드백임을 확증하여 LaserIOControl 주석도 정정. 출사조건 스냅샷은 [LaserCond] 로그로 4개 시점(ShotOn/Heartbeat/ShotOff/DoorForceOff)에 기록. 표시·기록 전용이며 출사 차단 로직은 변경 없음.
2026-09-04 14:13:13 +09:00
5799872867 chore: PLC 모드 3비트(M70501/2/3) 실사용 여부 진단계측 로그 추가
배경: 2026-08-12 현장 로그에 PLC_AUTO_REQ / PLC_MANUAL_REQ 를 직접 찍는 흔적이 없어,
      PLC 가 REQ 를 준 것인지 PC 가 자체 버튼으로 움직인 것인지 사후 판별이 불가능했다.
      기존 rising edge 분기는 ON 전이만 찍으므로 OFF 전이·상시 ON 여부도 알 수 없다.

추가:
- CheckPLCCommand 진입부에 M70501(AUTO_STATUS) / M70502(AUTO_REQ) / M70503(MANUAL_REQ)
  의 ON/OFF 양방향 전이 로그. ChangeChecker 키를 ON/OFF 2개로 분리해 잡는다.
  "AUTO/MANUAL 동시 ON -> return" 가드보다 앞에 두어 동시 ON 구간도 남긴다.
- EVENT_AUTO_RUN_START_REQUEST / STOP_REQUEST 발행 지점에 발행 사실 로그 2줄.

변화가 없으면 한 줄도 남지 않으므로 100ms 주기여도 로그 폭주는 없다.

원복: "[진단계측 2026-08-13]" region 통째로 삭제 + rising edge 분기의 Log.W 2줄 삭제.
      PLC 측 회신(REQ 선행 문제 확인요청 3문항)으로 판정이 끝나면 제거할 것.
2026-08-26 11:57:08 +09:00
5be34e612e feat: 본 레이저 단일 발진기 전환 - IO 채널 재정의 및 enum 단일화
레이저 발진기 교체(임시 Core/Ring 2대 -> 본 레이저 Max MFMC-2000/2000M 1대)에
따른 IO 재정의. 현장 적용 후 정상 동작 확인.

- ePrismaticDIAddress / ePrismaticDOAddress 를 본 레이저 38핀 커넥터 매뉴얼 기준으로
  재정의. 상태 신호 8개 -> 4개. 도면(엑셀) 라벨 오기도 함께 정정
  (Laser_FIRE -> Laser_MAIN_PWR_STATE)
- PAIX_PTOP / SeqAutoRunPTOP 의 중복 enum 정의 제거.
  WeldingCommon 의 PAIX_PrismaticScanner 를 IO 채널 번호의 단일 소스로 통일
- 발진 게이트를 Core/Ring_Control 2발 -> Laser_REMOTE 1발로 변경
  (ExecuteWelding ON/OFF, 정지 시 해제)
- DO 8 충돌 제거: Auto 시작 시 PCLBADReadyStatus(=8) write 삭제.
  본 레이저 배선에서 DO 8 = Laser_AC_KEY 라 그대로 두면 Auto 시작이
  레이저 AC KEY 릴레이를 켠다. LBAD 는 미등록 디바이스라 무의미
- GetLaserReady() 를 Laser_READY 단독 판정으로 변경
- 가이드빔 DO 를 EX_Red_Control -> Laser_GUIDE_BEAM_CONTROL 로 전환
- IO Board 에 설정 화면(UCIOInterfaceView) 연결
- IsLaserReady 표시를 DO Laser_REMOTE 되읽기로 확정 (260826 협의, 현장 미검증)

원복: 각 파일의 "260824 이전 원본" region 을 살리고 아래 블록을 제거하면 된다.
2026-08-26 11:45:40 +09:00
e0e5416975 fix: PLC 기동 시 210002 오알람 차단 — Livetimer 초기화 및 모니터 타이머 기동 위치 이동
PLCController.DoActivate() 가 PLC 연결을 열기 전에 _monitorPlcInterfaceMap 을
기동해, 연결 확립 전 LiveStatusUpdate() 가 돌면서
ALARM_DEVICE_PLC_DISCONNECT(210002) 오알람이 매 기동마다 발생했다.

원인
- Livetimer 가 초기화되지 않아 DateTime.MinValue 상태 → (Now - MinValue) 가
  항상 10000ms 를 초과해 워치독이 오판. 임계값 조정으로는 해결 불가.
- MicroTimer 첫 콜백이 주기(100ms) 뒤가 아니라 Start() 직후(약 1ms)라
  경합이 아니라 100% 재현되는 결정적 버그.

실측 (2026-08-10 16:12:25.904)
  Livetimer=0001-01-01, elapsed=63921975145904ms,
  isLive=False, IsActivated=False, IsConnected=False

조치
- _monitorPlcInterfaceMap.Start() 를 base.DoActivate() 성공 이후로 이동
- Livetimer = DateTime.Now 로 기준시각 확보 후 타이머 기동
- 두 조치는 각각 단독으로는 무효. 반드시 함께 적용해야 한다.
- 수정 전/후를 #region 2개(검색: 260810 기동 오알람)로 기록해 원복 가능

검증: 2026-08-10 현장 재기동 확인 — 기동 시 210002 미발생

미해결(별건): Livetimer 이중 용도, ReadBit .err 무시, ClearAlarm 부재,
SeqAlarmMonitor 의 무지연 루프 및 Laser/Chiller 즉시 알람

상세: docs/분석_PLC210002_기동오알람_260810.md
작업일지: docs/작업일지/2026_08_10.md
2026-08-10 16:37:27 +09:00
to3796zw
e61e99f9ab feat: bit15 보강·양극 미사용 정리·로그 개편
- D70002(PC_RECIPE_NO): 동일 레시피여도 매 핸드셰이크 에코 유지
- 정지 시 에코워드(Page/Recipe No) 0 초기화 제거(보존)
- bit15 Manual 전환 시 레시피 활성화+로드, bit15 ON 중 AUTO_REQ 자동시작 무시
- [AutoRun Resume] PC bit15(0x0F) 1초 펄스 OFF
- 양극(P) 미사용: PC_AUTO_STATUS_P/양극 용접 핸드셰이크 제거, 용접 응답 음극 통일
- 공유 eCommon READY(0x0F) 제거(PTOP enum은 유지)
- SeqAutoRunPTOP 로그 설명형 개편(노드 Start/End 제거)
- 빌드 0오류. Recipe/Page 수정분은 현장 미적용(추후 검증 예정)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 20:15:43 +09:00
e28f915b44 fix: 현장 확정 PLC맵 정합 — bit15=Weld_01 Ready 명칭 정정 + 확정 DeviceMap
- bit15(0x0F): 임시명 MODE_CHANGE → 확정명 WELD_READY_REQ/ACK (Weld_01 Ready, Resume 트리거 겸용)
- 원래 Ready(0x10) → WELD_TRIGGER_REQ/ACK (용접 발진). 주소 불변=동작 동일, 명칭만 정정
- 양극 _P(0x73) 미러 제거(현장 단일블록), 공통 enum 동기화
- 수정: PTOP/공통 PLCController.Address.cs, SeqAutoRunPTOP/ComponentWeld/Prismatic/TestRun/WaitWeldOrChangePage, UCMainAutoRunViewModel
- 현장 확정 PLC DeviceMap CSV 4종 추가, 작업일지 갱신

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 17:23:41 +09:00
95ef7b97c0 fix: PLCController.Address eCommon* enum 원복 (빌드 정상화)
89e9a02 "PLCController.Address 통일"이 base WeldingCommon의
eCommonBitInput/Output, eCommonWordInput/Output 선언만 eBit*/eWord*로
리네임하면서 소비처(Logic/시퀀스 등 60+곳)가 CS0246으로 깨지고,
PTOP enum과 using static 충돌(CS0104)까지 유발했음.
base를 eCommon*로 원복해 빌드 정상화 (이름 통일은 별도 과제).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 20:32:23 +09:00
89e9a02ed0 feat : PLCController.Address 통일 2026-06-18 17:12:25 +09:00
42c5565249 feat: PLC Recipe Change 핸드셰이크 구현 (SeqAutoRunPTOP) + 주소 정합
근거: 가이드 + Excel 260618(빨간셀 M70509/M70009/D70502/D70002). Page Change 미러링.
- 주소 enum: PLC_RECIPE_CHANGE_REQ(0x09)/PC_RECIPE_CHANGE_COMPLETE(0x09)/
  PLC_RECIPE_NO(idx2)/PC_RECIPE_NO(idx2). 공용 eCommonBitOutput 동기화.
  충돌: SeqStatusMonitor RMS_USED 읽기 주석, SeqAutoRunPrismatic 참조 이름만 교체.
- 시퀀스: CheckRecipeNo(논블로킹 Decision) + CheckRecipeNoComp(.Id 1:1 조회/활성화/
  반영폴링/에코·완료비트), Builder 흐름·엣지·루프백, 리셋 비트·워드, _RecipeManager Enter 확보.
- Page 검증 상한 하드코딩 제거 → 활성 Recipe Layers.Count() 가변.
- (별도) D:\ILSOSConfig\...\External\PLC CSV 디바이스맵 4종 라벨 정합(.bak260618 백업).

빌드는 VS Rebuild로 검증 필요(레거시 포함). STEP5 UI/PLC 사양 최종정합은 후속.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 15:31:43 +09:00
d28e76c2fe file update 2026-06-05 13:44:39 +09:00