7.7 KiB
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_mergescratch-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=_UNSETsentinel으로 구분.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 9PAIX_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.csCheckPageNoComp—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).