PLC는 PC 에코 워드가 0이면 레이저 출사 신호를 내지 않는다(2026-08-20 PLC측 확정).
bit15 가접 운전은 페이지마다 정지하므로 OnSeqActionStop의 무조건 0 초기화가
페이지마다 0/0 창을 열었고, PC는 다음 PAGE_CHANGE_REQ를 받아야만 재에코한다.
0 초기화는 SeqStatusMonitor가 Auto OFF 시에만 담당하도록 일원화.
- 260813: ResyncRecipePage 노드 추가. ResumeMode·시뮬·PLC 워드 무효 시
재동기를 생략하고 CheckPageNo 의 REQ 대기로 넘긴다.
재동기 상한 10초(RESYNC_TIMEOUT_SEC) 초과 시 수렴 미완으로 포기.
- 260818: CheckPageNoComp 를 outer while 로 감싸 Page 수렴 후 PLC 의
Recipe/Page 를 다시 읽어 PC 확정값과 대조. 어긋나면 Recipe 부터
재확정 후 Page 재수렴.
260812 15:17:29 로그 대응 — Page 수렴 중 PLC 가 Page 를 6→2 로 바꾸며
Recipe 도 함께 바꿨을 때 PC 가 옛 Recipe(22)를 에코한 채 남아
PLC_WELD_TRIGGER_REQ 가 오지 않고 타임아웃만 반복되던 문제.
원복: 각 region 통째로 삭제 (260818 은 outer while 제거 후 들여쓰기 복원).
OnSeqActionStop()에서 PC_RECIPE_NO/PC_PAGE_NO를 0으로 초기화한다. ResumeMode 여부와 무관하게 지운다 - 재기동 시 CheckRecipeNoComp -> CheckPageNoComp가 PLC 워드를 다시 읽어 재에코하므로 핸드셰이크는 성립.
- 260805/260806 주석 원문과 if(!ResumeMode) 로그 블록은 그대로 보존
- SeqStatusMonitor의 Auto OFF 초기화와 중복이며, 거기 있던 M70515 보존 예외는 이번 코드가 무시 -> bit15 Resume은 보존값 상실
- 빌드/런타임 미검증. 문제 시 260811 region 삭제로 원복
작업일지: docs/작업일지/2026_08_11.md
CheckPageNoComp 에코 수렴 루프에서 PC_PAGE_NO 를 쓴 직후 되읽어 비교하면
PLC 데이터 업데이트 주기가 반영되기 전 값을 읽어 수렴 판정이 흔들릴 수 있다.
WriteWord 이후 되읽기 전에 200ms 대기를 넣는다.
대상: SeqAutoRunPTOP.cs CheckPageNoComp() "4. 되읽어 수렴 확인" 직전
PLC가 PC 에코 넘버(PC_PAGE_NO/PC_RECIPE_NO) 일치를 상시 확인하는 것으로 확정(260806)됨에 따라, PC 책임을 검증에서 '정확히 읽고 → 내부 상태 갱신 → 에코'로 전환.
- CheckRecipeNoComp/CheckPageNoComp를 수렴 루프로 재작성 (에코 후 되읽어 일치 확인, 어긋나면 재읽기, 맞는 즉시 다음 노드로)
- 에코 없이 return 하던 경로 제거 (RecipeNo=0/미등록 → 에코 안 하고 재시도)
- 범위 밖 PageNo: 3초 무한대기 → 200ms 재읽기, 에코 안 함
- Page 3회 수집(600ms)·Recipe 800ms 재폴링 제거 → 정상 흐름 지연 0
- while 탈출 후 context.Stopped 가드 추가
- ReadOutWord(eWordOutput) 헬퍼 추가 (ReadOutBit 패턴 준용)
- 시뮬레이션 가드: IsSimul이면 수렴 생략 (PLC 워드가 항상 0이라 못 빠져나감)
구버전은 #region 260806 으로 전량 주석 보존 — 원복 시 블록 교체.
분석: docs/분석/2026/08/06/
- 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>
Use Interlock ON 시 ① 안전구역 게이트(기존) 유지 + ② 레시피별 방향 차단(신규). Recipe 폴더의 Recipe_Laser_Interlock.json(Front/Down 0/1)에 저장하고, 경로는 FieldHelper.json과 동일 소스(DB.Dao.SystemRecipe.WorkRecipeFile) 사용. Auto/Manual 양쪽 적용(Manual은 ①+② 신규), VM 체크박스는 레시피 전환 시 Background 우선순위 재로드로 stale 방지.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
각도에 따라 발진 위치가 달라져, Front/Down angle 평균을 임계값으로
Front/Down offset을 자동 선택해 적용(자동·수동 발진 공통).
- LaserInterlock: Horizontal/Vertical → Front/Down angle 로 변경
- SystemParameter: CellCenterOffset X/Y → Front/Down offset X/Y (4개)
- LaserAngleOffsetSelector 헬퍼 신규 + 선택값 LOG
- PLC 미연결 시 Front offset fallback
주의: 설정 프로퍼티명 변경으로 기존 저장값 자동 이관 안 됨(재입력 필요)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Auto(SeqAutoRunPTOP)가 CellMeasureCenterOffset을 0으로 넘겨
매뉴얼(SeqComponentTeachingRun)과 발진 위치가 어긋남.
매뉴얼과 동일 수식(CellPosMeasureCenterOffset + CellCenterOffset)
으로 변경하여 자동/매뉴얼 발진 위치 정합.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Auto(SeqAutoRunPTOP.ExecuteWelding)가 발진 직전 보정테이블을 선택하지
않아 직전 상태로 발진 → 매뉴얼과 위치 어긋남. ExecuteList 직전
SelectCorrectionTable(1) 명시 추가(장비측 보정도 테이블 1 기준 정합).
2026-06-23 작업일지 추가.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
M70509(Scout Enable) 상시 ON 시, 용접 트리거(M70516) 감지 후 pre scout,
발진 완료 후 완료비트 송신 전 post scout 수행(각각 SeqScoutNormal 재사용,
0.1초 후 진행). M70509 OFF면 기존과 동일하게 용접만.
- eBitInput 0x09: PLC_RECIPE_CHANGE_REQ(미사용) → PLC_SCOUT_ENABLE 재정의
- 용접 완료비트(ACK off/BUSY off/COMPLETE on)를 WriteWeldComplete 노드로
분리해 post scout 뒤에 송신
- 이미지 파일명 접미어: {기존}_auto_{recipeNo}_{pageNo}_{pre|post}.PNG
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 산출물 23. SW 점검결과 xlsx: SW Version 작업이력 추가(핸드셰이크/bit15 Resume/RecipeNo 등),
IO List bit15 신규(M70515 PLC_WELD_READY_REQ / M70015 PC_WELD_READY_ACK)·rename 반영
- architecture.md §8 용어 정리(가접 용접 = Tack Welding) 추가
- docs/분석 2026/06/22: AuroraUIComponent 재사용 UC·메인 View 도식 분석
- 기타 산출물 문서(DR 회의록·SOP·ILSOSConfig 등) 및 작업일지 포함
- SeqAutoRunPTOP.cs: 기존 로컬 변경 포함
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- CheckPageNoComp: PC_PAGE_NO 에코값과 현재 PLC_PAGE_NO 비교해
일치 시 PC_PAGE_CHANGE_COMPLETE=true, 불일치 시 false (기존 무조건 false)
→ 동일 Recipe/Page 반복 시 완료 ACK 전달
- SeqStatusMonitor: PLC/PC Auto State OFF 에지 감시 →
PC_RECIPE_NO/PC_PAGE_NO 0 초기화. 단 PC Auto OFF는
M70515(Weld_01 Ready) 살아있으면 보존(Resume 시나리오)
- ExecuteWelding: 완료비트 송신 간 딜레이 5→50ms 여유 확보
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- CheckRecipeNoComp: 동일레시피 시 PLC_RECIPE_NO 재폴링(늦은 갱신 대응),
recipe==null(0/미등록) 널 가드 추가, 에코는 활성 레시피 기준으로 null-safe 처리
- OnSeqActionStop: PC_ERROR_CODE 0 쓰기 삭제(WriteDWord가 인접 PC_PAGE_NO까지
0으로 덮던 버그 해소) → 정지 시 에코워드 보존
- CheckInitCondition: ResumeMode 핸드셰이크 스킵 제거(옵션A) → bit15 후 PLC가
주는 새 Recipe/Page를 정상 핸드셰이크로 처리. Resume 주석/로그도 정정
- 빌드 0오류
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 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>
PLC가 Page Change bit(0x08) 하나만 트리거로 보내면 Recipe No와
Page No를 함께 읽어 Recipe를 먼저 전환한 뒤 Page를 전환하도록 변경.
Recipe Change bit(0x09)는 트리거로 미사용(enum 정의는 보존).
- CheckRecipeNo Decision 제거, 흐름 재배선(CheckPageNo→Recipe→Page)
- Recipe No 1회 읽기, 0/음수/미등록/동일이면 전환 생략(정지 안 함)
- 실제 전환 시 ActivateRecipe 후 Dispatcher.Invoke(OnActiveReloaded)로
Model.Layers 동기 갱신 + 페이지 검증/레이어 선택을 UI 스레드 직렬화
(ActivateRecipe-Layers 비동기 race 차단)
- PC_RECIPE_CHANGE_COMPLETE 미사용 처리, PC_RECIPE_NO 에코는 유지
VS Rebuild(Debug|x64) EXITCODE=0 확인.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
현장 PLC 미연결로 임시 주석 처리했던 CheckCondition_Interlock()의
High(중대) 알람 인터락 블록을 원복. 현장 PLC 연결 완료에 따라 정상 동작.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 분석 문서 4종 추가 (docs/분석/2026/06/19):
알람부 종합 / MX Component PLC 연결 / AjinIO.ReadDoBit / 가이드빔 TruPulse(ExtPilotOnOff 미구현)
- AjinIO.ReadDoBit(int): 스텁(return true) 유지 + 구현(ReadDiBit 패턴) 주석 보존
- SeqComponentTeachingRun: 중알람 인터락 임시 주석 (현장 PLC 미연결 우회, 추후 원복)
- 레시피 Guide Beam: DO 17 read/write + IsConnected 가드 주석 (필요시 주석 토글 운용)
- 작업일지 2026-06-19 정리
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 작업일지: 레이저 미발진 + Analog만 살려 Power Cal 파일 생성 가능 여부 요청 기록
- docs PLC 인터페이스 폴더 정리(구 _260617 폴더 → 신규 폴더로 이동)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>