- 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>
- 분석(191351): 동시수신 대응 단일 PAGE 게이트 핸드셰이크 확정안(8장)
+ ActivateRecipe→Layers 비동기 2-홉 race 분석, 대응안 A/B/C
- 작업지시서(2026_06_21): 4노드→1노드 통합 구현 절차/검증/완료기준
- 작업일지: 19:xx 분석 + 일일요약 추가 (원격 PLC PC I/O Check 섹션 병합)
- 소스 미수정 (문서만)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
현장 PLC 미연결로 임시 주석 처리했던 CheckCondition_Interlock()의
High(중대) 알람 인터락 블록을 원복. 현장 PLC 연결 완료에 따라 정상 동작.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
타설비(비전/물류) 템플릿 잔재를 PTOP(레이저 용접) 프로젝트 소스 기준으로 교체.
- SW Version: PTOP 점검 항목(IO Check/PLC Interface/Scout Field 등)
- Device: PLC(Melsec)/Scanner(RTC)/Laser/Ajin IO
- IO List: PLC 인터페이스 신호 74건 (PLCController.Address.cs + PLC 명세서 검증
주소 매핑 — PC출력 M/D70000+, PC입력 70500+; 예 M70509/D70510)
- Sequence: SeqAutoRunPTOP 핸드셰이크/용접/모니터링/Safety/UI
- Overall: PTOP 기능 트리, Motor List는 PLC측 회신 대기 표기
- 서식/수식/병합 보존(openpyxl), 원본 백업은 UnTrackedLocalFiles
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
사유: 분석 문서가 다른 PC에서 풀 받을 때 사라지면 안 되어 git에 포함 유지.
- .gitignore의 /docs/분석/ 제외 규칙 제거
- docs/분석 전체 재추적(기존 22 + 금일 신규 3 = 25개)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- /docs/분석/ 을 .gitignore에 추가 (로컬 전용 분석 문서, 커밋 제외)
- 기존 추적되던 docs/분석 22개 파일 git rm --cached (로컬 파일은 유지)
- Doc/산출물문서/양식/ 폴더 생성 (추후 필수 제출 2종 드롭 위치, README 포함)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
증상: 레시피 전환 후에도 이전 레시피의 Scout Field 영역이 그대로 적용됨.
원인: RecipeFieldScan(싱글톤)은 페이지명으로만 키잉되어 레시피 식별자가 없고,
ReloadRecipe에서 필드 재로드가 주석 처리됨. 또한 UpdateWeldingLinesRecipe →
콤보박스 SelectedIndexChanged → SaveAndLoadFieldScanFromLasaDb 경로가
WorkRecipeFile은 새 경로/싱글톤은 stale인 상태로 SaveFieldHelper를 호출해
이전 레시피 데이터를 새 레시피 FieldHelper.json에 덮어쓰는 손상까지 유발.
- 가드 플래그(_suppressPageFieldSync) 추가, 콤보박스 핸들러 저장 호출을 가드
- ReloadRecipe에서 UpdateWeldingLinesRecipe를 try/finally로 감싸 전환 중 저장 억제
- 로드 전용 LoadFieldScanFromLasaDb 추가, 전환 후 새 레시피 필드만 싱글톤에 로드
- 기존 소스는 삭제 없이 주석/가드로 보존
- 빌드 검증: MSBuild Debug|x64 솔루션 오류 0개, 현장 동작 확인 완료
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
증상: 운전화면 페이지 이동 후에도 SeqScoutNormal이 이전 페이지(보통 0)의
스카우트 필드로 동작.
원인: LoadScoutField()가 GUI 캐시 selectedIndexNo 의존 — WinForms 티칭
콤보에서만 갱신되어 운전화면/자동운전 경로에선 stale.
- SeqScoutNormal_InitParam에 PageIndex 추가, 실행 시점 라이브 페이지
(GetCurrentPageIndex)를 호출부(Recipe/Test VM)에서 명시 주입
- MainPage: LoadScoutField(int) 오버로드 + GetCurrentPageIndex() 추가
- 폴백: 페이지 없으면 selectedIndexNo 로드, 그래도 null이면 빈 리스트(NRE 방지)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- FieldHelper.json 분석 및 selectedIndexNo stale 버그 원인 정리
- A안(SeqScoutNormal PageIndex 주입) 수정안 작업지시서 작성 (소스 미수정, null 가드 포함)
- 작업일지 16:30 항목 + 주말 출근(06.20~06.21) 기록
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 15:04 Laser Head Theta 각도 인터락 추가 (0e73086)
- 15:25 Scout Image Sleep Time 사용자 설정 추가 (e263ab8)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
같은 행 이동과 행 전환 이동(먼 거리)의 대기시간을 RowIdx 기준으로 분리.
- SystemParameter: ScoutSameRowSleepMs(150)/ScoutRowChangeSleepMs(300) 추가
- Recipe View > Scout Image 그룹에 입력 UI 2줄 + 즉시 저장
- SeqScoutNormal.CaptureNextPosition: prevRowIdx 추적해 행 전환 시 분기
- 공유(WeldingCommon)라 같은행은 150(기존동일), 행전환 기본 300ms
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- UCScannerObjectTeachingControlBoxViewModel.OnMonitoring:
IsGuidBeam = _IODevice.ReadDO(17) 를 try 블록 안으로 이동, catch 에서 IsGuidBeam=false
→ IO 미연결(시뮬/개발PC)에서 Recipe View 진입 시 미처리 예외로 앱 종료되던 문제 해결
- AjinIO.ReadDoBit(int): 스텁(return true) → AxdoReadOutport 실제 구현 활성화
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
실제 repo와 어긋난 상위 아키텍처 문서를 현행 구조로 정정.
- 모듈명 ILSOS_PrismaticPTOP → ILSOS_PrismaticRD_PTOP 리네임 반영
- 삭제된 형제 모듈(Scanner/Gun/CleanLaser) 기술 정리
- PTOP 폴더구조·EquipDef ID·빌드 출력경로를 실제값으로 갱신
- architecture.md 200줄 이하로 슬림화(하네스 절 요약)
- CLAUDE.md에 Aurora 레퍼런스 README @import 연결
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
클린 빌드 시 AuroraACS/AuroraPLC에서 'using AuroraMotor' CS0246 발생.
- AuroraACS.csproj: AuroraMotor HintPath를 미존재 경로에서 실제
출력 위치(_out\x64-Debug)로 수정
- ILSOS_All.sln: 두 프로젝트에 AuroraMotor 빌드 순서 의존성 추가
(느슨한 DLL 참조라 병렬 빌드 시 레이스로 먼저 컴파일되던 문제)
Co-Authored-By: Claude Opus 4.8 (1M context) <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>
External/Aurora/bin 커밋 예외, .gitignore 자체 커밋(-f) 규칙을 GIT_RULES.md로 정리하고 architecture.md에 @import 연결
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
시뮬 모드가 아니고 IO보드가 없으면 IODevice._iOUnit이 null이라
OnMonitoring의 ReadDI(11/15)에서 NRE 발생(현장 PC에서 레시피 메뉴 진입 시).
IsConnected()로 미연결을 선검사해 폴링을 스킵, 프로그램이 꺼지지 않도록 함.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>