IndustrialUpdated 2025-04-01
Equipment Monitoring
실시간 센서 수집 및 이상 감지 파이프라인
ESP32-S3PlatformIOFreeRTOS
Equipment Monitoring 상세 가이드
실시간 센서 수집 및 이상 감지 파이프라인 — CtrlFactory
1. 개념 (Concept)
1.1 설비 모니터링이란?
설비 모니터링(Equipment Monitoring)은 산업 현장의 기계·설비에 센서를 부착하여 상태를 실시간으로 수집·분석하고 이상 징후를 즉시 감지하는 시스템이다.
측정 대상: 진동 / 온도 / 전류 / 전력 / 음향방출(AE)
감지 방법: 임계값 비교 → FFT 주파수 분석 → AI 이상 감지
출력 결과: 알람 / Health Score / Work Order 자동 생성
1.2 모니터링 계층 구조
1.3 핵심 센서 스펙
| 센서 | 측정 대상 | 인터페이스 | 샘플링 | 감지 가능 이상 |
|---|---|---|---|---|
| ADXL345 | 3축 진동 가속도 | I2C / SPI | 최대 3.2kHz | 불균형, 베어링 결함 |
| MLX90614 | 비접촉 표면 온도 | I2C | 1Hz | 과열, 냉각 이상 |
| ACS712-20A | 전류 (직류/교류) | ADC | 1kHz | 과부하, 단락, 결상 |
| SCT-013 | 비접촉 AC 전류 | ADC | 1kHz | 전력 이상, 효율 저하 |
| MPU6050 | 6축 IMU (가속+자이로) | I2C | 최대 8kHz | 정밀 진동, 축 정렬 불량 |
| AMG8833 | 8×8 열화상 | I2C | 10fps | 열점(Hot Spot) 감지 |
2. 상세 내용 (Details)
2.1 진동 신호 처리 단계
2.2 다중 센서 I2C 버스 구성
2.3 FreeRTOS 멀티태스크 구조
2.4 MQTT 토픽 네임스페이스
2.5 임계값 알람 로직
2.6 데이터 수집 주기 설계
3. 구조 설명 (Architecture)
3.1 전체 데이터 파이프라인
3.2 Go gRPC Gateway 내부 구조
3.3 Spring Boot 설비 서비스 구조
3.4 실시간 수집 시퀀스 (정상 흐름)
3.5 이상 감지 시퀀스 (경보 흐름)
3.6 TimescaleDB 수집 스키마
3.7 Three.js 디지털 트윈 구조
3.8 공장 플로어 맵 SVG 구조
4. 응용 (Applications)
4.1 CtrlFactory 모니터링 전체 맵
4.2 설비 상태 머신
4.3 임계값 구성 계층
4.4 OTA 펌웨어 업데이트 플로우
4.5 멀티사이트 / 멀티테넌트 구조
4.6 Next.js 대시보드 컴포넌트 구성
부록. 빠른 참조
ESP32-S3 하드웨어 결선 요약
[I2C Bus — GPIO 8(SDA), GPIO 9(SCL), 400kHz]
ADXL345 0x53 진동 3축
MLX90614 0x5A 비접촉 온도
MPU6050 0x68 6축 IMU (선택)
[ADC — 12-bit, 분압기 필수 (5V→3.3V)]
GPIO 1 — ACS712-20A (전류, 직렬 삽입)
GPIO 2 — SCT-013 (AC 전류, 22Ω 부하저항)
[전원]
3.3V — 센서 전원 (I2C 풀업 4.7kΩ)
100nF 커패시터 — ADC 노이즈 필터링
MQTT 핵심 토픽 치트시트
발행 (ESP32 → 서버):
factory/{site}/{type}/{device} 센서 데이터 QoS 1
factory/{site}/status/{device} LWT: online/offline Retain
구독 (서버 → ESP32):
ctrl/{site}/cmd/{device} 제어 명령 QoS 2
ctrl/{site}/ota/{device} OTA 업데이트 QoS 2
ctrl/{site}/config/{device} 임계값 업데이트 QoS 2
Spring Boot 핵심 API
GET /api/machines 설비 목록 (site_id 쿼리)
GET /api/machines/{id} 설비 상세 + 최신 센서값
GET /api/machines/{id}/history 시계열 이력 (from/to)
GET /api/alerts 알람 목록 (severity 필터)
GET /api/alerts/stream SSE 실시간 알람
PUT /api/machines/{id}/threshold 임계값 업데이트 → MQTT 반영
POST /api/machines/{id}/acknowledge 알람 확인 처리
이상 감지 앙상블 결정 기준
| 조건 | 개수 | 결과 |
|---|---|---|
| 임계값 초과 + IF 이상 + AE 이상 | 3/3 | CRITICAL — 즉시 차단 |
| 임계값 초과 + (IF 또는 AE) 이상 | 2/3 | HIGH — 긴급 점검 |
| 임계값만 초과 | 1/3 | WARNING — 모니터링 강화 |
| IF + AE 이상 (임계값 미달) | 2/3 | MEDIUM — 점검 예약 |
| 정상 | 0/3 | NORMAL |