Harmonic Analysis for Detection of Electronic Signatures
Herramienta de escritorio Java/JavaFX para caracterización espectral de calidad de energía en alimentadores de media tensión (23 kV) mediante el protocolo IEC 61850.
Registra el espectro armónico H1–H50, THD de tensión y corriente, secuencias simétricas y potencia activa/reactiva/aparente a través de medidores compatibles (ION 7400 y similares). Incluye un clasificador de firma espectral basado en umbrales bibliográficos (IEEE 519-2022, IEC 61000-3-6, IEC 61000-3-12) validados en laboratorio con patrones de energía replicados; la clasificación opera en pocos ciclos de red y fue exitosa para cargas individuales en condiciones de laboratorio.
La caracterización espectral se realiza mediante capturas de espectro completo cada 60 segundos, acumuladas en una base de datos SQLite local. Esta colección continua está diseñada para alimentar en el futuro un modelo de aprendizaje automático que esperamos sea capaz de identificar patrones de carga en condiciones de campo reales, incluyendo composiciones mixtas de usuarios.
Nota de alcance: para cargas solapadas (varios usuarios en el mismo feeder), la firma espectral resultante es la superposición de todas ellas. La dominancia mínima necesaria depende de la clase (medida en mezcla sintética bajo la ley de suma de IEC 61000-3-6, ver
docs/estudio_dominancia.md): ~97% para CRYPTO_MINING_PFC (la reactiva del fondo contamina Q/S), ~52–71% para las clases espectrales (CRYPTO_MINING, DATA_CENTER, INDUSTRIAL). Los umbrales del clasificador fueron replicados en laboratorio con patrones controlados; no sustituyen una campaña de medición en campo bajo IEC 61000-4-30.
De uso libre bajo licencia GPL v3.
Desarrollado por Emilio Medina.
- Conexión MMS/ACSE a medidores IEC 61850 (ION 7400 y compatibles)
- Lectura de nodos lógicos MMXU, MHAI, MSQI, MMTR, MSTA
- Espectro de armónicos hasta el orden 50 (fases A, B, C) — solo datos reales del IED, sin estimaciones
- THD de tensión y corriente
- Secuencias simétricas (positiva, negativa, cero)
- Energía activa, reactiva y aparente (BCR, FC=ST)
- Demanda máxima y factor de potencia
- Si el IED no expone el array MHAI.HA, el gráfico de barras muestra un aviso y solo THD/CV/FP están disponibles
- Árbol de decisión multivariable: CV = σ(I)/μ(I), THD_I, H3/H1, H5/H1, H7/H1, H11/H1, FP
- Nota 23 kV: los transformadores Dyn (23000/380 V) atrapan el H3 balanceado (secuencia cero) en el delta; la clase LIGHTING requiere H3 medido y desde MT rara vez es alcanzable — la iluminación masiva vista de cabecera se reporta como electrónica ligera/mixta
- Patrones implementados: carga lineal, iluminación LED, SMPS alta densidad, rectificador 6-pulsos, electrónica ligera, mixta
- Clasificación en pocos ciclos de red; validada en laboratorio con patrones de energía replicados
- Suavizado temporal con histéresis: la clase reportada es la mayoría de una ventana deslizante
(15 muestras por defecto) y solo conmuta con supermayoría ≥2/3 — elimina el parpadeo de clase
en bordes de umbral (cuantificado en
docs/estudio_roc.md); la GUI muestra la estabilidad (%) - Índice de electrónica 0–100 (score compuesto)
- Análisis de resonancia LC por feeder
- Requiere array MHAI.HA para las dimensiones H5/H1, H7/H1, H11/H1; sin él la clasificación opera solo sobre CV, THD_I y FP
- Requiere dominancia ≥80% en el feeder para cargas solapadas
- Captura de espectro completo H1–H50 cada 60 segundos por alimentador
- Registro continuo en SQLite: sesiones, mediciones, espectros, alarmas
- Exportación CSV compatible con pipelines de aprendizaje automático
- Diseñado para construir datasets de caracterización espectral en campo, como base de un modelo ML futuro de identificación de patrones de carga
- Monitoreo simultáneo de hasta N alimentadores
- Panel consolidado con semáforos de estado por alimentador
- Base de datos SQLite local (sesiones, mediciones, alarmas)
- Exportación CSV por rango de tiempo
- Visor COMTRADE con gráfico de forma de onda y FFT
- Modo Demo integrado: genera perfiles realistas sin hardware conectado
- Ocho perfiles de carga:
crypto_mining,linear_load,data_center,industrial,lighting,mixed_electronic,normal_load,electronic_light
Descarga gratuita: https://adoptium.net O la distribución Liberica JRE 17 (https://bell-sw.com/pages/downloads/)
Incluido en el ejecutable distribuido (jpackage con JRE embebido). Para desarrollo: https://gluonhq.com/products/javafx/
- ION 7400: Host
169.254.0.10, Puerto102, IEDcbo2, Prefijo MMXUM03_, LDLD0 - Cualquier IED que exponga MMXU / MHAI / MSQI / MMTR vía MMS
- IEDs sin nodo MHAI.HA funcionan normalmente; el gráfico de armónicos muestra un aviso y trabaja con los datos disponibles (THD, CV, FP)
Sin hardware, usar el Modo Demo integrado.
Descargar HADES_v1.0_Windows.rar de la sección Releases, extraer y ejecutar:
HarmonicMonitor.exe
No requiere Java instalado (JRE embebido).
mvn clean package -DskipTests
java --module-path /ruta/javafx-sdk-17/lib --add-modules javafx.controls,javafx.fxml \
-jar target/harmonic-monitor-1.0.0-jar-with-dependencies.jar
.\compile_ps2.ps1 # compila fuentes
.\run.bat # ejecuta
El árbol de decisión del clasificador tiene tests JUnit 5 (los 10 perfiles de
docs/tabla_patrones_armonicos.md más casos de borde del vector PFC):
.\compile_ps2.ps1 # compilar fuentes principales primero
.\run_tests.ps1 # compila y ejecuta los tests (descarga JUnit si falta)
Con Maven: mvn test.
src/main/java/com/harmonicmonitor/
app/ # Punto de entrada (HarmonicMonitorApp.java)
comm/ # Comunicación IEC 61850 (IEC61850Communicator, MeasurementPoller)
analysis/ # Análisis armónico (HarmonicAnalyzer, ElectronicLoadDetector,
| # ResonanceAnalyzer, SpectralRecorder)
alarm/ # Motor de alarmas (AlarmEngine)
storage/ # Persistencia SQLite y exportación CSV (DataStorage)
simulator/ # Simulación interna (IonSimServer, SimulatorLauncher)
comtrade/ # Parser y visor COMTRADE
gui/ # Paneles JavaFX (MultiFeederMonitorPanel, HarmonicsPanel,
# DiscoveryPanel, FeederMgmtPanel, ComtradePanel, ...)
simulator/
generic_meter_sim.cid # Archivo SCL del simulador IEC 61850
templates/ # Perfiles JSON de carga (8 perfiles)
| Parámetro | Valor |
|---|---|
| Host | 169.254.0.10 |
| Puerto | 102 |
| IED Name | cbo2 |
| Prefijo MMXU | M03_ |
| LD Instance | LD0 |
HADES se distribuye bajo la GNU General Public License v3. Ver archivo LICENSE para el texto completo.
Las dependencias de terceros tienen sus propias licencias. Ver THIRD_PARTY_LICENSES.md para el detalle.