Files
HECO2/doc/260602_소스_개발사양서_260520.md
T
jeon a502322188 chore: HERV 통합 저장소 재초기화 커밋
손상된 .git 히스토리(missing tree)로 재초기화 후 작업트리 전체 커밋.
.claude/ 만 제외(로컬 에이전트 설정). 구 저장소 백업(.git_corrupt_backup/) 포함.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 09:32:17 +09:00

6.2 KiB
Raw Blame History

소스 ↔ 개발사양서 비교 분석 (260520)

  • 작성일: 2026-06-02
  • 대상 사양서: 각실제어시스템_개발사양서_DL_동작로직_260520.pptx (2026.05.20, 전경선 수석)
  • 대상 소스: d:\project\nuvoton\HERV\program\User\ (Nuvoton NANO100SE3BN, arm-gnu-gcc 빌드)
  • 시스템: 각실제어 시스템(DL) — ERV 본체 + 각실 디퓨저(거실=room1, 침실13=room24)
  • 연관 문서: 260602_소스_개발사양서_260318.md

검증 방식: 핵심 항목(자동모드 풍량 산출, 쾌적조리, 스마트수면)은 소스 직접 확인.


0. 260318 → 260520 주요 변경점

  • 이력관리에 "2026.05.20 동작로직 수정 (26.04.28 DL 자료 기반) (9~10P)" 추가
  • 자동모드 로직 전면 개편 (슬라이드9~10):
    • 부하점수(Score) 기반 풍량 단수 결정
    • Eco / Normal / Turbo 모드별 임계값 (3세트)
    • 4종 센서 (CO2 / PM2.5 / PM10 / VOC) — PM10 추가
    • 거실 가중치 및 P_max 강제보상 삭제 → 점수 기반으로 직관적 동작
    • 히스테리시스(데드밴드) 모드·센서별 정의
  • 용어 변경: 전실모드 → 분산모드, 집중급기 → 집중모드
  • 배선도: 각실분배기 PBA가 휴벤ECO에 부착, AC전원 2구 필요

1. 일치 (260318과 동일 유지)

항목 사양(260520) 코드 위치
집중/분산 판정 dP = P_max P_2nd ≥ 2 → 집중, 아니면 분산, P_max=0 → 전체 OFF (vars[0].value - vars[1].value) >= 2 (qsort 내림차순) My_system.c:972, 1080
집중 시 댐퍼 P_max 실만 ON(100%), 나머지 OFF Focus_Mode 시 Focus_Room만 110, 타실 0 My_system.c:1126~
안심회복 침실1 음압(급기X/배기O), 환기 2단 선택실 SA=0/RA=110, 타실 SA=110/RA=0, Fan=2 My_system.c:732-770
공청 PM2.5 단계 014정지 / 1529 / 3049 / 5069 / 70~ m_PM2_5_Level 15/30/50/70 My_Uart.c:1323-1326
풍량 CMH 환기 100/150/200/250, 공청 80/100/120/150, 바이패스 150 단계 구조 동일, 공청 EA팬 OFF MyMotor.c:1294-1307
디퓨저 LED 댐퍼 1개라도 열리면 ON, 0~9 디밍, 단색 SA|RA≠0 → ON, Light_Bright 0~9 My_system.c:714-724
팬 VSP(환기 1~3단) 1단 EA56/SA57, 2단 61/63, 3단 67/69 s_FAN*_VEN_* 동일 MyControl.c:124-152

2. 핵심 불일치 — 자동모드 로직(26.04.28 개정) 미반영

현재 코드는 개정 전(점수기반 이전) 로직으로, 사양이 삭제하라고 명시한 P_max 기반 동작이 남아 있음.

2.1 풍량 단수 산출 방식 상이 (가장 큰 차이)

  • 사양 260520: 부하점수 Score = 4실 Level 합산(016) → **0: OFF / 14: 1단 / 58: 2단 / 912: 3단 / 13~16: 4단**
  • 코드 현재:
    • 분산: Tmp_Air_Volume = 4실 합산if(>=4) =4 (= min(합,4)) — My_system.c:935, 948
    • 집중: Tmp_Air_Volume = vars[0].value (= P_max) — My_system.c:1082
예시 (Score) 사양 최종단수 코드 최종단수
합 3 (1,1,1,0) 분산 1단 3단
합 6 (2,2,1,1) 분산 2단 4단(cap)
침실 단독 4 (집중) 1단 4단(P_max)
합 16 (4,4,4,4) 4단 4단

→ 슬라이드10 QA 진리표(7개 케이스)로 유닛 테스트 검증 필요.

2.2 Eco / Normal / Turbo 모드별 임계값 미구현

  • 사양: 모드별 CO2/PM2.5/PM10/VOC 임계표 3세트 (예: Normal CO2 0700 / 7011000 / 10011300 / 13011600 / 1601~)
  • 코드: 단일 임계값 m_*_Level(CO2 600/700/800/900) 한 세트, 모드 분기 없음

2.3 4종 센서 중 PM10 미사용

  • 사양: CO2 / PM2.5 / PM10 / VOC 4종으로 Level 산출
  • 코드: room_CVP_quality = CO2 | VOC | PM2.5 (3종). SEN66_pm10p0는 수신만 하고 Level 계산에 미사용 — My_system.c:890

2.4 히스테리시스(데드밴드) 부분 적용

  • 사양: 모드·센서별 하강 데드밴드 (CO2 50, PM2.5 2, PM10 5, VOC 5/3)
  • 코드: CO2만 CO2_Histeresys=50 적용, PM2.5/PM10/VOC 없음 — My_system.c:673

3. 260318부터 이어진 미반영 (260520에서도 동일)

항목 사양 260520 코드 위치
쾌적조리 ERV 풍량 3단 (각실 급기만 ON) Tmp_Air_Volume = 4 (4단), Set_Run_Mode = MODE_AUTO My_system.c:1026, 1030
스마트수면 1단 고정 / 초기 거실 CLOSE·침실 OPEN / 1시간마다 CO2≥1000 OPEN 구버전 "자동−1", 전용 댐퍼·CO2 1시간 로직 없음 My_system.c:1191-1200
공기질 색상등급 (구성 변경) Air_Quality_color_process() return(0) dead code My_system.c:1216

4. ⚠️ 확인 필요 (변동 없음)

  • 팬 VSP 4단: 코드 SA87/EA84 vs 사양(슬라이드11·12) SA86/EA85 (실측 기반) → EEPROM 저장값 확인 권장
  • 센서/제어 주기: 사양 "매 제어 주기(예 1분)" (슬라이드10) vs 코드 분배기 폴링 1초

5. 결론

260520의 핵심 개정(자동모드 점수기반 풍량 + Eco/Normal/Turbo + PM10 + 모드별 히스테리시스)은 현재 소스에 거의 미반영 상태. 다만 집중/분산 판정(dP≥2) 및 댐퍼 개폐 패턴은 이미 일치하므로, "풍량 단수 결정 로직"을 점수기반(Score 테이블 매핑)으로 교체하는 것이 핵심 작업.

후속 작업 후보(TODO)

  1. 자동모드 풍량을 Score(0~16) → 단수(0/1/2/3/4) 테이블 매핑으로 교체 (P_max·cap 방식 제거)
  2. Eco/Normal/Turbo 모드별 임계표 도입 (현재 단일 m_*_Level → 3세트)
  3. PM10(SEN66_pm10p0) Level 산출 반영 (3종 → 4종)
  4. PM2.5/PM10/VOC 히스테리시스 추가
  5. 쾌적조리 3단 수정, 스마트수면 26.03.18 로직 구현
  6. 슬라이드10 QA 진리표(7케이스) 기반 검증

부록. 주요 소스 위치

파일 역할
My_system.c 자동모드 풍량 산출(Air_Quality_damper_process), 집중/분산, 시나리오 모드(Ext_Run_Mode)
My_Uart.c 센서 임계값/기본값, 분배기 파싱(Diffuser_parsing), VSP 테스트
MyMotor.c 디퓨저 댐퍼, 팬 속도, BLDC_SPEED_TABLE
MyControl.c 팬 duty 기본값 / EEPROM
My_define.h 모드·핀·EEPROM 정의