# loop1.cde 파일 분석 보고서

## 1. 파일 기본 정보

| 항목 | 값 |
|------|-----|
| 파일 경로 | `plans/hc900/loop1.cde` |
| 파일 크기 | 593,557 바이트 (~580KB) |
| 파일 형식 | 바이너리 (Honeywell proprietary) |
| 추출 가능한 문자열 | 198 줄 |

## 2. 파일 형식 식별

`.cde` 파일은 **Honeywell Experion HS / Foxboro I/A Series**의 **Control Definition (제어 정의)** 파일입니다.
HC900 컨트롤러의 제어 루프 구성 정보를 포함하는 바이너리 포맷입니다.

### 헤더 구조 (초기 바이트 분석)

```
Offset 0x0000: 0202 2000 4800 0b00  ...  (파일 마직 / 버전)
Offset 0x0018: 0001 006c            (식별자: 0x6c01)
Offset 0x001C: 0200 532b           (Unicode "S+")
Offset 0x0088: 69f7 21e4 69f7 2282 (타임스탬프 또는 체크섬)
Offset 0x0098: 0100 484a 0032 0063 (Unicode "HJ" + "2c")
```

## 3. 추출된 핵심 내용

### 3.1 제어 루프 정보

| 태그명 | 설명 |
|--------|------|
| `PID102` | PID 컨트롤러 블록 이름 |
| `PID102_WSP` | PID 컨트롤러 설정값 (Work Setpoint) |

### 3.2 컨트롤러 구성 요소

추출된 문자열에서 확인된 구성 영역:

| 영역 | 원문 | 설명 |
|------|------|------|
| CONFIG | CONFIG | 컨트롤러 일반 설정 |
| PROFIL | PROFIL | 프로파일 (운전 모드별 설정) |
| RECIPES | RECIPES | 레시피 관리 |
| SCHEDL | SCHEDL | 스케줄러 |
| SEQUEN | SEQUEN | 시퀀서 |
| STORAG | STORAG | 데이터 저장소 |
| FILE | FILE (x19) | 파일 관리 블록 |

### 3.3 기타 설정

| 항목 | 값 |
|------|-----|
| 컨트롤러 | CONTROLLER |
| 프로세스 구성 | Process Configuration#1 |
| 통신 | Custom Modbus Map |
| 파티션 | Undefined Partition |
| 신호 단위 | mA (4-20mA 아날로그 신호) |

## 4. 파일 구조 추정

```
loop1.cde (593,557 bytes)
├── Header (0x000 - 0x0FF)    : 파일 마직, 버전, 메타데이터
├── Block Definitions (0x100 - 0x31F) : 블록 정의 영역
├── Tag Index (0x320 - 0x4FF) : 태그 인덱스 (e.(, e.) 등 순차적 인덱스)
├── Configuration Data         : CONFIG, PROFIL, RECIPES 등 구성 데이터
├── Controller Properties      : CONTROLLER, Process Configuration#1
├── Communication Settings     : Custom Modbus Map
└── Padding/Reserved           : 나머지 영역
```

## 5. 분석 가능성 평가

### 가능한 분석
- ✅ 파일 형식 식별 (Honeywell Control Definition 파일)
- ✅ 주요 태그명 추출 (PID102, PID102_WSP)
- ✅ 구성 영역 식별 (CONFIG, PROFIL, RECIPES, SCHEDL, SEQUEN, STORAG)
- ✅ 컨트롤러 정보 확인 (Process Configuration#1, Custom Modbus Map)

### 제한사항
- ❌ **완전한 구조 파싱 불가**: Honeywell proprietary 바이너리 포맷으로 공식 스펙이 공개되지 않음
- ❌ **PID 파라미터 추출 불가**: Kp, Ki, Kd 등 제어 게인 값은 바이너리 인코딩되어 있음
- ❌ **블록 연결 관계 파악 불가**: 신호 흐름/와이어링 정보는 구조화되어 있음
- ❌ **모든 태그 목록 추출 불가**: 198줄의 문자열만 추출 가능 (전체 데이터의 일부)

## 6. 완전 파싱을 위한 방안

### 옵션 1: Honeywell 공식 도구 사용
- **System Management Application (SMA)**: Honeywell Experion HS 표준 관리 도구
- **Experion PKS Builder**: 제어 루프 구성을 시각적으로 확인 가능
- **CDE Export 기능**: SMA에서 XML/CSV로 내보내기 가능

### 옵션 2: 바이너리 파서 개발
- 파일 구조를 reverse engineering 하여 파서 작성 필요
- 동일한 HC900 시스템에서 추출한 여러 CDE 파일을 비교 분석
- Honeywell 문서 (Experion HS R530 HTM) 에서 힌트 수집

### 옵션 3: OPC UA를 통한 실시간 접근
- 이미 구축된 ExperionCrawler를 통해 OPC UA로 실시간 태그 값 접근
- CDE 파일 대신 OPC UA Address Space에서 메타데이터 조회
- 더 신뢰성 있는 데이터 소스

## 7. 결론

`loop1.cde` 파일은 **Honeywell HC900 컨트롤러의 제어 루프 정의 파일**로, PID102 컨트롤러 블록과 관련 설정을 포함합니다.

바이너리 포맷의 특성상 `strings` 명령어로 일부 텍스트만 추출 가능하고, 완전한 파싱은 Honeywell 공식 도구가 필요합니다.

ExperionCrawler 프로젝트에서는 이 파일 대신 **OPC UA를 통한 실시간 데이터 접근**이 더 실용적인 접근 방식입니다.
