118 lines
5.6 KiB
Markdown
118 lines
5.6 KiB
Markdown
# ExperionCrawler 프로젝트 소개
|
|
|
|
ExperionCrawler는 Honeywell Experion HS R530 시스템의 데이터를 효율적으로 수집, 저장 및 분석하기 위한 통합 데이터 플랫폼입니다. OPC UA 통신을 통해 실시간 및 히스토리 데이터를 수집하고, LLM 기반의 Text-to-SQL 및 RAG 시스템을 통해 사용자가 자연어로 산업 데이터를 조회할 수 있는 환경을 제공합니다.
|
|
|
|
## 🛠 개발 환경
|
|
|
|
- **하드웨어 구성**
|
|
- **HC900 Controller**: 제어 로직 수행 (CPU 만 있고, I/O 없슴)
|
|
- **Experion HS R530 서버**: 미니pc (Kmtec k6플러스) Windows 10 LTSC 2021 IoT Enterprise, R530 라이선스 Demo라서 300분 후 죽음
|
|
- **Nvidia DGX Spark**: 메인 서버 (Ubuntu 24.04), LLM
|
|
- **개발 PC**: Kmtech K8 Plus (Mini PC)
|
|
|
|
- **기술 스택**
|
|
- **Backend**: C# / .NET 8.0 (ASP.NET Core)
|
|
- **Communication**: OPC UA (Client & Server)
|
|
- **Database**: PostgreSQL / TimescaleDB (시계열 데이터 최적화)
|
|
- **AI/LLM**:
|
|
- **MCP Server**: Python 3 기반 (Model Context Protocol)
|
|
- **LLM**: Gemma4-32B-it (Vision 및 통합 지능 처리)
|
|
- **IDE**: VS Code + Roo Code + Local LLM (Gemma4, Qwen3 등)
|
|
|
|
---
|
|
|
|
## 🏗 System Architecture
|
|
|
|
ExperionCrawler는 데이터 수집 계층, 저장 계층, 지능형 인터페이스 계층의 3단계 구조로 설계되었습니다.
|
|
|
|
### 연결 환경 다이어그램
|
|
|
|
```mermaid
|
|
graph TD
|
|
subgraph "Field & Control Layer"
|
|
HC900[HC900 Controller] --> R530[Experion HS R530 Server]
|
|
end
|
|
|
|
subgraph "Data Collection Layer (ExperionCrawler)"
|
|
R530 -- "OPC UA (Client)" --> OPC_Client[ExperionOpcClient]
|
|
OPC_Client --> RT_Svc[Realtime Service]
|
|
OPC_Client --> Hist_Svc[History Service]
|
|
OPC_Client --> Fast_Svc[Fast Session Service]
|
|
|
|
OPC_Server[ExperionOpcServer] -- "OPC UA (Server)" --> External_Client[External OPC UA Clients]
|
|
end
|
|
|
|
subgraph "Storage & Intelligence Layer"
|
|
RT_Svc --> DB[(TimescaleDB / PostgreSQL)]
|
|
Hist_Svc --> DB
|
|
Fast_Svc --> DB
|
|
|
|
DB <--> MCP[MCP Server - Python]
|
|
MCP <--> LLM[Local LLM - Gemma4/Qwen3]
|
|
LLM <--> RAG[RAG System - Docs/Code]
|
|
end
|
|
|
|
subgraph "User Interface Layer"
|
|
WebUI[Web Dashboard] -- "REST API" --> WebAPI[ASP.NET Core API]
|
|
WebAPI --> RT_Svc
|
|
WebAPI --> Hist_Svc
|
|
WebAPI --> T2S[Text-to-SQL Service]
|
|
T2S <--> MCP
|
|
end
|
|
```
|
|
|
|
### 주요 구성 요소 설명
|
|
|
|
1. **OPC UA Engine**:
|
|
- `ExperionOpcClient`: R530 서버로부터 데이터를 읽어오는 클라이언트.
|
|
- `ExperionOpcServer`: 수집된 데이터를 가공한 결과를 외부 시스템에 다시 제공하는 서버 기능.(서버기능만 가공기능 LLM 중심으로 개발 예정)
|
|
|
|
2. **Data Pipeline**:
|
|
- **Realtime**: 실시간 태그 구독 및 DB 저장.(현재 약 1800개 포인트 등록)
|
|
- **History**: 과거 데이터 스냅샷 및 범위 조회.저장 간격 1분에 한번
|
|
- **Fast Session**: 고속 샘플링 데이터 수집 세션 관리. (현장에서 의심가는 포인트 분석을 위해 8개까지 등록해서 최소 1초마다 정해진 시간동안 DB에 저장, 동시3개 가능, 그래프 기능 탑재(초보수준))
|
|
|
|
3. **Intelligence (RAG & MCP)**:
|
|
- **MCP (Model Context Protocol)**: LLM이 DB 쿼리 실행, 파일 읽기 등 도구를 사용할 수 있게 하는 인터페이스.
|
|
- **Text-to-SQL**: 사용자의 자연어 질문을 분석하여 최적의 SQL 쿼리로 변환하고 실행.
|
|
- **RAG**: Experion HS R530 공식 문서 및 소스코드를 인덱싱하여 정확한 기술 답변 제공.
|
|
|
|
---
|
|
|
|
## 📈 프로젝트 진행 현황
|
|
|
|
### ✅ 완료된 사항
|
|
- [x] **OPC UA 통신 기반 구축**: R530 서버 연결 및 노드 브라우징 구현
|
|
- [x] **데이터 수집 파이프라인**: 실시간 구독, 히스토리 조회, Fast Session 기능 구현
|
|
- [x] **데이터베이스 설계**: TimescaleDB 기반 시계열 데이터 저장 구조 최적화
|
|
- [x] **Text-to-SQL 엔진**: 한국어 자연어 SQL 변환 및 실행 파이프라인 구축
|
|
- [x] **MCP 서버 통합**: Python 기반 MCP 서버를 통한 LLM-DB 연결 환경 조성
|
|
- [x] **인증서 관리**: OPC UA 보안 통신을 위한 인증서 생성 및 신뢰 관계 설정 자동화
|
|
- [x] **RAG 기능추가로 현장 관련 지식 자료 계속 추가 가능 - LLM이 사용하여 정보 제공
|
|
- [x]
|
|
|
|
### 🚀 향후 계획 (Roadmap)
|
|
- [ ] **P&ID 도면 분석 자동화**: DXF/PDF 도면에서 태그 정보를 추출하고 DB와 매핑하는 파이프라인 구축-> 현재 구현되어 있긴 하지만 너무 안습
|
|
- [ ] **지능형 태그 매핑**: P&ID 태그 Experion 시스템 태그 간의 AI 기반 자동 매핑
|
|
- [ ] **고도화된 RAG 시스템**: 제품 문서 및 도면 정보를 결합한 하이브리드 RAG 구현
|
|
- [ ] **UI/UX 개선**: 시계열 데이터 시각화(uPlot) 및 자연어 질의 인터페이스 고도화
|
|
- [ ] **시스템 안정화**: 대량 데이터 수집 시의 성능 최적화 및 예외 처리 강화
|
|
|
|
|
|
내부 ip address
|
|
Internet router : 192.168.0.1
|
|
개발pc 192.168.0.7
|
|
DGX Spark : 192.168.0.132
|
|
Experion 서버 : 192.168.0.50
|
|
HC900 : 192.168.0.20
|
|
|
|
외부 접속 방법
|
|
WireGuard 이용 내부 ip 할당 받아서, 접속하거나, Tailgate 이용해서 접속 가능 , 와이어가드가 편함
|
|
|
|
DGX Spark : ssh windpacer@192.168.0.132, pass :!6A1b8c9d!
|
|
내부IP로 Nvidia Sync프로그램 다운받아서 연결하면 편함
|
|
Tailgate로도 직접 액세스 가능함
|
|
UI 접속 : http://192.168.0.132:5000
|
|
|
|
|