5.9 KiB
5.9 KiB
05 · 설계 양식 시트·컬럼 스키마
재생산 방식 (2026-06-29 확정): 완전 독립 (ref 파일 불필요) xlsx는
xlsxfill.py의 하드코딩 스타일 상수와build_02설계_xlsx.py의 PtoP 데이터만으로 처음부터(from scratch) 생성한다. ref 원본 xlsx 없이도 동일한 외형을 재현한다.재생산 도구 (영구 보존)
xlsxfill.py— 같은 폴더. LG PRI 스타일 상수 +make_workbook / write_banner / write_header_row / write_data_rows / group_mergescratch-build API.build_02설계_xlsx.py— 같은 폴더. PtoP 데이터 내장, 단독 실행으로 4개 xlsx 재생산.cd E:\Work\GIT\LGES-OC5-PtoP-Welder set PYTHONUTF8=1 py .claude/skills/ubisam-deliverables/references/build_02설계_xlsx.py- 전제조건: Python 3.9+, openpyxl >= 3.1 (
pip install openpyxl)공통 관례: ① 배너 B2=제목, B3=근거/부제 ② 미확정 값은
(제안)표기 ③ Aurora 고정 문구 "운영 SW는 LG PRI의 Aurora 플랫폼으로 개발"
스타일 상수 (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 컬럼)에 삽입.
A. 모션축·IO 맵 정의서 (슬롯 02.설계/IO_DB설계/모션축_IO맵_정의서.xlsx)
3탭 고정
| 탭명 | 헤더(B4~) | 데이터 시작행 | PtoP 특이사항 |
|---|---|---|---|
| 통신·제어 구성 | 구분|대상|컨트롤러/디바이스|통신/버스|수량·범위|비고 | B5 | PLC=MXComponent, IO=Ajin, Laser=IOGate, Scanner=RTC |
| 모션축 정의(ACS) | Axis|축명(논리)|용도|컨트롤러/통신|구동|행정/범위|최대속도|Home방식|Soft Limit|동기/단축|비고 | B5 | X/Y=ACS EtherCAT, Z=Ajin, Scanner θ/XY=RTC. 행정·속도·Home=(제안) |
| I-O 맵(Ajin) | No|신호명|Type|권장모듈|슬롯/CH|Active|설명/인터락|비고 | B5 | Ajin 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~. - PtoP 핸드셰이크: PAGE_REQ 단일 게이트 → Recipe 확정 → Page 3회 검증 → 리스트 업로드 → 발진 → 완료.
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 | — | PAGE_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 흐름도. 메인 시퀀스: PAGE_REQ 단일게이트 → 리스트 업로드 → 발진 → 완료비트. 분기·인터락 표현.
enum 요약(양식 고정값)
- I/O Type: DI · DO · AI · AO
- 신호 Type: BIT · INT · INT32
- PLC Seq 구분: Status · Alarm · Process · Request · Info · Control · Model · Interlock
- 운영 모드: 수동 · 반자동 · 자동
재생산 시 항상
build_02설계_xlsx.py를 실행할 것. 스크립트는 cwd=repo root 기준으로 실행.