chore: HERV 통합 저장소 재초기화 커밋
손상된 .git 히스토리(missing tree)로 재초기화 후 작업트리 전체 커밋. .claude/ 만 제외(로컬 에이전트 설정). 구 저장소 백업(.git_corrupt_backup/) 포함. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# 소스 ↔ 개발사양서 비교 분석 (260520)
|
||||
|
||||
- **작성일**: 2026-06-02
|
||||
- **대상 사양서**: `각실제어시스템_개발사양서_DL_동작로직_260520.pptx` (2026.05.20, 전경선 수석)
|
||||
- **대상 소스**: `d:\project\nuvoton\HERV\program\User\` (Nuvoton NANO100SE3BN, arm-gnu-gcc 빌드)
|
||||
- **시스템**: 각실제어 시스템(DL) — ERV 본체 + 각실 디퓨저(거실=room1, 침실1~3=room2~4)
|
||||
- **연관 문서**: `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 단계 | 0~14정지 / 15~29 / 30~49 / 50~69 / 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 합산(0~16) →
|
||||
**0: OFF / 1~4: 1단 / 5~8: 2단 / 9~12: 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 0~700 / 701~1000 / 1001~1300 / 1301~1600 / 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 정의 |
|
||||
Reference in New Issue
Block a user