2026-08-06 11:29:00 +09:00

7.7 KiB
Raw Blame History

05 · 설계 양식 시트·컬럼 스키마

재생산 방식 (2026-06-29 확정): 완전 독립 (ref 파일 불필요) xlsx는 xlsxfill.py 의 하드코딩 스타일 상수와 build_02설계_xlsx.py 의 PtoP 데이터만으로 처음부터(from scratch) 생성한다. ref 원본 xlsx 없이도 동일한 외형을 재현한다.

재생산 도구 (영구 보존)

  • xlsxfill.py — 같은 폴더. xlsxfill.py 내장 스타일 상수 + make_workbook / write_banner / write_header_row / write_data_rows / group_merge scratch-build API.

  • build_02설계_xlsx.py — 같은 폴더. PtoP 데이터 내장, 단독 실행으로 4개 xlsx 재생산.

    PYTHONUTF8=1 py .claude/skills/ubisam-deliverables/references/build_02설계_xlsx.py
    

    저장소 루트에서 한 줄로 실행한다. PYTHONUTF8을 별도 줄에 두면 적용되지 않는다.

    ⚠ 이 스크립트는 PTOP 소스 유래 재생산(ptop-deliverables) 전용이다. 타사 문서를 재생산하는 ubisam-deliverable-rebuild 경로에서는 쓰지 않는다 — 데이터가 코드에 하드코딩돼 있어 매핑표를 반영할 수 없다(ubisam-producer.md §2).

  • 전제조건: Python 3.9+, openpyxl >= 3.1 (pip install openpyxl)

공통 관례: ① 배너 B2=제목, B3=근거/부제 ② 미확정 값은 (제안) 표기 ③ 플랫폼 문구는 _meta/project.yaml에서 읽는다 (특정 문구를 여기에 하드코딩하지 않는다)


스타일 상수 (xlsxfill.py 하드코딩값)

구분 폰트 색상(fgColor) 테두리
배너 행(B2) 맑은 고딕 13pt Bold White(FFFFFF) FF1F4E78 (진네이비) medium all
부제 행(B3) 맑은 고딕 9pt 없음 medium L/R/T
헤더 행 맑은 고딕 11pt Bold White(FFFFFF) FF2E75B6 (파랑) medium 좌우, thin 상하
데이터 행(홀수) 맑은 고딕 10pt FFDDEBF7 (연파랑) medium 좌우, thin 상하
데이터 행(짝수) 맑은 고딕 10pt FFFFFFFF (흰색) medium 좌우, thin 상하
기능명세서 배너 맑은 고딕 14pt Bold 없음 medium all
기능명세서 헤더 맑은 고딕 11pt Bold 없음 thin all
기능명세서 데이터 맑은 고딕 11pt 없음 thin all
TactTime 헤더 맑은 고딕 11pt 없음 thin all
TactTime 데이터 맑은 고딕 11pt 없음 thin all

write_header_row(fill=None) — 배경 없음(기능명세서·TactTime 계열). 인자 생략 시 파랑(HEADER_FILL) 기본값. fill=_UNSET sentinel으로 구분. TODAY = datetime.date.today() — 실행일 자동 반영. 이력 셀(Update 컬럼)에 삽입. xlsxfill.py 가 아니라 build_02설계_xlsx.py:41 의 모듈 상수다 — 새 빌드 스크립트를 쓸 때는 xlsxfill 에서 임포트되지 않으므로 직접 정의해야 한다.


A. 모션축·IO 맵 정의서 (슬롯 02.설계/IO_DB설계/모션축_IO맵_정의서.xlsx)

3탭 고정

탭명 헤더(B4~) 데이터 시작행 PtoP 특이사항
통신·제어 구성 구분|대상|컨트롤러/디바이스|통신/버스|수량·범위|비고 B5 PLC=MXComponent, IO=보드타입 런타임 설정(미확정), Laser=IOGate, Scanner=RTC
모션축 정의(ACS) Axis|축명(논리)|용도|컨트롤러/통신|구동|행정/범위|최대속도|Home방식|Soft Limit|동기/단축|비고 B5 X/Y=ACS EtherCAT, Z=AuroraMotionBoard(보드타입 미확정), Scanner θ/XY=RTC. 행정·속도·Home=(제안)
I-O 맵(DI-DO) No|신호명|Type|권장모듈|슬롯/CH|Active|설명/인터락|비고 B5 DI 923 / DO 917 (PAIX_PTOP.cs — 채널 번호만. 벤더명은 이 파일에 없다)

B. PLC-PC 인터페이스 신호 정의서 (슬롯 02.설계/IO_DB설계/PLC_PC_인터페이스_신호정의서.xlsx)

4탭 고정

탭명 헤더(B4~) 데이터 시작행
통신 사양 항목|내용 B5
PC→PLC (Write) No|Seq/구분|신호명|방향|디바이스(제안)|Type|의미 / 트리거|응답·완료|비고 B5
PLC→PC (Read) 동일 B5
핸드셰이크 시퀀스 No|Seq|Step|주체|동작 / 신호|디바이스(제안)|비고 B5
  • Seq 구분 enum: Status · Alarm · Process · Request · Info · Control · Model · Interlock
  • 디바이스: 비트 M70000~(PC Write), M70500~(PLC Read). 워드 D70000~/D70500~. ⚠ 전부 (제안) 값이다 — 이 주소들은 .cs 소스에 0건이고 근거는 분석 문서뿐이다 (ptop-deliverables/references/source-map.md §A 참조). 산출물에 확정값처럼 적지 말 것.
  • PtoP 핸드셰이크: PLC_PAGE_CHANGE_REQ 단일 게이트 → Recipe 확정 → Page 3회 검증(200ms×3) → 리스트 업로드 → 발진 → 완료. 출처: SeqAutoRunPTOP.cs CheckPageNoComp — checknum > 2에서 break하므로 정확히 3회이고 각 회차에 Thread.Sleep(200)이 있다. plcPageNoList[0]/[1]/[2] 로그가 3회를 확증한다. ⚠ 같은 함수의 260618 주석은 "상한 하드코딩(>2) 제거 → Recipe 페이지 수로 가변 검증"이라고 적혀 있으나 코드는 아직 >2 고정이다(recipePageCount는 값 범위 검증에만 쓰인다). 주석을 근거로 "가변"이라 적지 말 것 (rules.md #1).

C. 기능명세서 / UI 설계 (슬롯 02.설계/UIUX_기능설계/기능명세서.xlsx)

8탭 고정 (우리 설비에 없는 탭도 양식 유지)

탭명 헤더(행5~) G3 배너 PtoP 내용
OverView no.|Content — SW 개요(Aurora·Win11·.NET·설비·모션·레이저·PLC·비전)
MainView Update|Funtion Area|Funtion Name|NO|Sub|Content "다음은 Main 화면…" AutoRun 시작/정지·페이지·Resume(bit15)·스캐너캔버스
RecipeView 동일 "다음은 Recipe 화면…" ActivateRecipe·변경이력·모델 편집
ManualView 동일 "다음은 Manual 화면…" ScannerOperation·ModelFinder·Calibration
DeviceView 동일 "다음은 Device 화면…" DeviceSetting·PLCBit/Word·IOInterface
SettingView 동일 "다음은 Setting 화면…" Equipment·Log·AutoBackup·Alarm·Stream
VisionView 동일 "다음은 Vision 화면…" (해당없음) — AuroraVision 미사용
Sequence 흐름 Update|Funtion Area|Processing Name|NO|Content — PLC_PAGE_CHANGE_REQ 게이트→Recipe→Page→ListUpload→발진→완료→루프백

D. TactTime 산정서 (슬롯 02.설계/시퀀스_인터록/TactTime_산정서.xlsx)

2탭 고정

탭명 좌측 컬럼 우측 컬럼 PtoP 내용
PC TactTime 공정|Unit|단위동작|T/T Working Process|상세합계|기준/참조합계 SeqAutoRunPTOP.cs 타이밍 (Page gate·Recipe·발진·완료)
PLC TactTime 동일 구조 — 미입수 → (제안)

E. Flow Chart (슬롯 02.설계/시퀀스_인터록/)

  • 형식: PPTX 흐름도. 메인 시퀀스: PLC_PAGE_CHANGE_REQ 단일게이트 → 리스트 업로드 → 발진 → 완료비트. 분기·인터락 표현.

enum 요약(양식 고정값)

  • I/O Type: DI · DO · AI · AO
  • 신호 Type: BIT · INT · INT32
  • PLC Seq 구분: Status · Alarm · Process · Request · Info · Control · Model · Interlock
  • 운영 모드: 수동 · 반자동 · 자동

재생산 도구 선택은 이 문서 상단의 ⚠ 박스를 따른다. ptop-deliverables(소스 유래) 경로에서만 build_02설계_xlsx.py를 저장소 루트에서 실행한다. ubisam-deliverable-rebuild(타사 문서 재생산) 경로에서는 이 스크립트를 쓰지 않고 xlsxfill.py 기반 신규 스크립트를 작성한다(ubisam-producer.md §2).