4.7 KiB
4.7 KiB
작업일지 — 2026-06-21
1. 가접 레시피(20~23) 추가 — 시퀀스 무수정 방식 확정
- 가접을 시퀀스로 추가하지 않고 레시피 번호만 추가해서 처리. (레시피 활성화+페이지별 용접 행위가 동일하므로)
- 코드 검증: 레시피 조회
.Id1:1(하드코딩 없음), 페이지 검증Layers.Count()가변 → 노드 수정 불필요, 레시피 데이터만 추가. - Recipe Number 시트 구조 (
…_260621_가접용접추가.xlsx):- 11: 양극/음극 탭 비드(기존, 2P) · 31: 상면(기존, 2P) · 32: 하면(기존, 2P)
- 20: Pre 가변 전면(가접) / 21: 전면 본접 / 22: Pre 가변 후면(가접) / 23: 후면 본접 (각 1~5P)
- PRE(가접)→본접을 레시피 쌍으로 분리(전면 20→21, 후면 22→23).
2. Recipe/Page 핸드셰이크 — 이미 구현·커밋 확인 (25edd79)
- 현장 결정: PLC가 전환마다 RECIPE_REQ는 안 주고 양극에서 PAGE_REQ만 줌.
- 동작 = Page 신호만 체크 → Recipe/Page WORD 읽기 → RecipeNum 변화 시 활성화 → PageNum 받고 → ACK 송신. (이미
SeqAutoRunPTOP.cs에 반영됨)CheckPageNo:PLC_PAGE_CHANGE_REQ만 대기CheckRecipeNoComp:PLC_RECIPE_NO읽기 → 0/미등록/현재활성 동일이면 스킵, 다를 때만ActivateRecipe+Dispatcher.Invoke(OnActiveReloaded)동기 Layers 재로드(stale 방지) +PC_RECIPE_NO에코CheckPageNoComp:PLC_PAGE_NO3회 검증 →Layers.Count()범위검증 →PC_PAGE_NO에코 +PC_PAGE_CHANGE_COMPLETE(ACK)
- 인터페이스와 1:1 일치: PAGE 핸드셰이크
M70508/M70608(REQ)·M70008/M70108(COMPLETE), 워드D70502/D70501(PLC) ↔D70002/D70001(PC 에코). 레시피 COMP 비트(M70509/M70009)는 미사용(워드 에코만).
3. 기동 시 디바이스 연결 vs 알람체크 타이밍 (분석단계, 소스 미수정)
- 증상: 기동 직후 연결 확립 전에 알람이 뜸.
- 결론: 순서는 이미 "활성화 → 알람모니터"로 맞음(
OnStartUpawait ActivateDevices()후SeqAlarmMonitor.Start()). 진짜 갭은Activate()≠Connected— 첫 알람 루프가 연결 전GetConnected()=false를 읽어 오알람. - 비대칭: PLC는
PLC_LIVE_STATUS2000ms grace 있음 / Laser·OCT·Chiller·LBAD는 즉시 알람(grace 없음) → 오알람 주범. - 권고 레버:
SeqAlarmMonitor.StartNode에 연결확립 대기 게이트 추가(권장) > no-opWaitTime노드 활용 >OnStartUp에서 연결 await.
4. bit15(MODECHANGE) 기능 구현 — 팝업 + Auto→Manual + Resume (빌드 0오류, 커밋 ff4fc03)
보완항목 확정: 1=작업지시서, 2=(나)작업자 수동 RunWelding, 3=작업지시서, 4=작업지시서, 5=현행유지.
- bit 정의: 입력
PLC_MODE_CHANGE=0x0F(M70515)/_P=0x73(M70615), 출력PC_MODE_CHANGE=0x0F(M70015)/_P=0x73(M70115). - 정지 보존(#1):
OnSeqActionStop에서ResumeMode면PC_PAGE_NO/RECIPE_NO=0쓰기 스킵(에코 보존). - 확인 핸들러(#2-나):
ResumeMode=true→Stop(보존)→팝업(MessageDialog.ShowOK-only)→Manual 전환. 레시피 이미 활성이라 재활성/롤백 안 함. 가변 용접은 작업자가 Manual에서 직접. - 핸드셰이크 스킵(#3):
CheckInitCondition에서ResumeMode면SEQ_SET_PARAMS_UPLOAD_WELDING_LIST_SEQ로 분기(+Flow 엣지). - 출력 bit15 수명(#4):
OnAutoRunResume에서 ON+Auto 재개,CheckCycleStop에서 한 사이클 후 OFF+ResumeMode=false. - 감지(#5):
UCMainAutoRunViewModel.OnMonitoring(화면 타이머) 현행 유지. - 버튼 [AutoRun Resume] = Equipment Status 그룹 좌측,
IsModeChangeActive(bit15 ON) 때만 표시. 확인창 없이 즉시 재개. - 재용접 중복은 PLC가 레이저 차단으로 합의(option2).
5. 미확정 / 확인 필요 (다음 액션)
- 현장 실증 전 — 빌드만 통과. bit15 흐름·레시피 전환·실제 Laser 발진은 현장 테스트 필요.
- PLC 협의:
- 출력
PC_MODE_CHANGE(bit15) false 처리 위치 — 현재CheckCycleStop. 대안: 다음PAGE_CHANGE_REQ수신 블록에서 false (PLC 인식 타이밍과 합의 후 확정). - bit15 주소(M70515/M70615/M70015/M70115) 실맵 대조.
- bit15 발생 정책: 가변 페이지마다 vs 가변 레시피당 1회.
- 출력
- 레시피 시트 "Pre 가변" 표기가 PRE 가접 오타인지 확인.
- 20~23 페이지 수 미확정(코드는
Layers.Count()가변 대응). - 알람 타이밍:
device.Activate()가 연결완료까지 동기인지/개시만인지 디바이스별 확인. - 제품 1개 = Recipe×Page 사이클 예상 시나리오:
docs/분석/2026/06/21/121750_제품1개_recipe_page_사이클_예상시나리오.md.