Go to file
Miguel 5e2149b9d4 Actualización de application_events.json con nuevos eventos para la creación y activación de datasets, así como la gestión de sesiones de plot. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_config.json, plc_datasets.json y system_state.json. Se implementaron mejoras en la interfaz de usuario para la visualización de datos en tiempo real y se optimizó el código en plotting.js para una mejor gestión de gráficos. 2025-08-10 00:38:08 +02:00
.cursor/rules Actualización de eventos en application_events.json para mejorar la gestión de sesiones de plot y el sistema de streaming. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_datasets.json, plot_sessions.json, system_state.json y estilos CSS. Se realizaron mejoras en la interfaz de usuario en index.html y se optimizó el código en plotting.js para un mejor rendimiento y claridad en la gestión de datos de streaming. 2025-08-04 00:55:52 +02:00
.doc Implementación de un sistema de reconexión automática para el PLC con backoff exponencial, permitiendo la reanudación de streaming y grabación de datasets tras desconexiones. Se añadieron nuevos endpoints API para gestionar el estado de reconexión y habilitar/deshabilitar esta funcionalidad. Se actualizaron los archivos de configuración y estado del sistema, así como la interfaz de usuario para reflejar el estado de reconexión y mejorar la experiencia del usuario. 2025-08-04 18:26:22 +02:00
.images Implementadas mejoras significativas en el sistema de streaming y grabación de CSV. Se añadió un control independiente para la grabación de CSV, permitiendo la organización automática de archivos por hora. Se implementó un sistema de persistencia del estado del sistema y recuperación automática, mejorando la fiabilidad en entornos industriales. Además, se integró el logo de SIDEL en la interfaz y se realizaron ajustes en el diseño para una mejor experiencia de usuario. 2025-07-17 14:32:45 +02:00
core Actualización de application_events.json con nuevos eventos para la creación y activación de datasets, así como la gestión de sesiones de plot. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_config.json, plc_datasets.json y system_state.json. Se implementaron mejoras en la interfaz de usuario para la visualización de datos en tiempo real y se optimizó el código en plotting.js para una mejor gestión de gráficos. 2025-08-10 00:38:08 +02:00
records/17-07-2025 Se implementó un sistema de registro de eventos persistente con almacenamiento en disco y visualización en tiempo real en la interfaz web. Se añadieron nuevas funcionalidades para la carga y guardado del estado del sistema, así como mejoras en la gestión de instancias únicas y recuperación automática. Además, se realizaron ajustes en la interfaz para mostrar el registro de eventos, incluyendo opciones de filtrado y limpieza de la vista. 2025-07-17 15:47:48 +02:00
static Actualización de application_events.json con nuevos eventos para la creación y activación de datasets, así como la gestión de sesiones de plot. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_config.json, plc_datasets.json y system_state.json. Se implementaron mejoras en la interfaz de usuario para la visualización de datos en tiempo real y se optimizó el código en plotting.js para una mejor gestión de gráficos. 2025-08-10 00:38:08 +02:00
templates Actualización de application_events.json con nuevos eventos para la creación, eliminación y actualización de sesiones de plot. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_datasets.json, plot_sessions.json y system_state.json. Se implementaron controles de tasa de refresco y ventana de tiempo en la interfaz de usuario, mejorando la experiencia de usuario en la visualización de datos en tiempo real. Además, se integró el plugin de zoom en los gráficos para una mejor interacción. 2025-08-09 01:05:19 +02:00
web_test Actualización de archivos de configuración y estado del sistema, incluyendo la adición de nuevos eventos en application_events.json para la gestión de sesiones de plot y mejoras en el sistema de streaming. Se implementaron funciones de depuración en plotting.js y se ajustaron las fechas de última actualización en varios archivos. Además, se mejoró la interfaz de usuario en index.html y se realizaron ajustes en la gestión de sesiones en PlotManager para optimizar la experiencia del usuario. 2025-07-22 09:24:25 +02:00
.gitignore Actualización de archivos de configuración y estado del sistema, incluyendo la adición de nuevos eventos en application_events.json para la gestión de sesiones de plot. Se modificó el comportamiento por defecto de las sesiones en PlotManager para que se inicien automáticamente, mejorando la experiencia del usuario. Se implementaron funciones de depuración en plotting.js y se ajustaron las fechas de última actualización en varios archivos. Además, se eliminó el formulario de creación de plots en index.html para simplificar la interfaz. 2025-07-21 15:12:37 +02:00
CHARTJS_STREAMING_INTEGRATION.md Actualización de archivos de configuración y estado del sistema, incluyendo la adición de nuevos eventos en application_events.json para la gestión de sesiones de plot y mejoras en el sistema de streaming. Se implementaron funciones de depuración en plotting.js y se ajustaron las fechas de última actualización en varios archivos. Además, se mejoró la interfaz de usuario en index.html y se realizaron ajustes en la gestión de sesiones en PlotManager para optimizar la experiencia del usuario. 2025-07-22 09:24:25 +02:00
CONSOLE_CLEANUP_SUMMARY.md Actualización de application_events.json con nuevos eventos para la gestión de sesiones de plot y el sistema de streaming. Se ajustaron las fechas de última actualización en plc_datasets.json y system_state.json. Se eliminaron mensajes de depuración en plotting.js para mejorar la claridad del código. 2025-08-04 01:02:39 +02:00
EJEMPLO_USO_PLOTTING.md Actualización de eventos en application_events.json para mejorar la gestión de sesiones de plot y el sistema de streaming. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_datasets.json, plot_sessions.json, system_state.json y estilos CSS. Se realizaron mejoras en la interfaz de usuario en index.html y se optimizó el código en plotting.js para un mejor rendimiento y claridad en la gestión de datos de streaming. 2025-08-04 00:55:52 +02:00
PLOTTING_FINALIZATION_SUMMARY.md Actualización de eventos en application_events.json para mejorar la gestión de sesiones de plot y el sistema de streaming. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_datasets.json, plot_sessions.json, system_state.json y estilos CSS. Se realizaron mejoras en la interfaz de usuario en index.html y se optimizó el código en plotting.js para un mejor rendimiento y claridad en la gestión de datos de streaming. 2025-08-04 00:55:52 +02:00
PLOTTING_FIXES_FINAL.md Actualización de eventos en application_events.json para mejorar la gestión de sesiones de plot y el sistema de streaming. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_datasets.json, plot_sessions.json, system_state.json y estilos CSS. Se realizaron mejoras en la interfaz de usuario en index.html y se optimizó el código en plotting.js para un mejor rendimiento y claridad en la gestión de datos de streaming. 2025-08-04 00:55:52 +02:00
PLOTTING_FIXES_RESUMEN.md Actualización de eventos en application_events.json para mejorar la gestión de sesiones de plot y el sistema de streaming. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_datasets.json, plot_sessions.json, system_state.json y estilos CSS. Se realizaron mejoras en la interfaz de usuario en index.html y se optimizó el código en plotting.js para un mejor rendimiento y claridad en la gestión de datos de streaming. 2025-08-04 00:55:52 +02:00
PLOTTING_STATUS_FINAL.md Actualización de eventos en application_events.json para mejorar la gestión de sesiones de plot y el sistema de streaming. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_datasets.json, plot_sessions.json, system_state.json y estilos CSS. Se realizaron mejoras en la interfaz de usuario en index.html y se optimizó el código en plotting.js para un mejor rendimiento y claridad en la gestión de datos de streaming. 2025-08-04 00:55:52 +02:00
PLOTTING_SYSTEM.md Implementación de un sistema de plotting en tiempo real con soporte para múltiples sesiones y un sistema de triggers basado en variables booleanas. Se añadieron nuevos endpoints API para gestionar sesiones de plotting, así como mejoras en la interfaz de usuario para facilitar la creación y control de plots. Se actualizaron los estilos CSS y se integraron nuevas funcionalidades en el frontend para una experiencia de usuario más intuitiva. Además, se realizaron ajustes en los archivos de configuración y estado del sistema para reflejar estos cambios. 2025-07-21 09:26:41 +02:00
README.md Primera Version 2025-07-16 16:37:51 +02:00
REAL_TIME_STREAMING.md Actualización del sistema de streaming en tiempo real, añadiendo controles para la transmisión de variables y estado en la interfaz de usuario. Se implementaron mejoras en la gestión de conexiones SSE, permitiendo la transmisión continua de datos y actualizaciones automáticas. Además, se ajustaron los archivos de configuración y estado del sistema para reflejar los cambios recientes, y se mejoró la experiencia del usuario con nuevos indicadores de estado y mensajes informativos. 2025-07-20 11:32:59 +02:00
STREAMING_TROUBLESHOOTING.md Actualización de archivos de configuración y estado del sistema, incluyendo la adición de nuevos eventos en application_events.json para la gestión de sesiones de plot y mejoras en el sistema de streaming. Se implementaron funciones de depuración en plotting.js y se ajustaron las fechas de última actualización en varios archivos. Además, se mejoró la interfaz de usuario en index.html y se realizaron ajustes en la gestión de sesiones en PlotManager para optimizar la experiencia del usuario. 2025-07-22 09:24:25 +02:00
application_events.json Actualización de application_events.json con nuevos eventos para la creación y activación de datasets, así como la gestión de sesiones de plot. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_config.json, plc_datasets.json y system_state.json. Se implementaron mejoras en la interfaz de usuario para la visualización de datos en tiempo real y se optimizó el código en plotting.js para una mejor gestión de gráficos. 2025-08-10 00:38:08 +02:00
main.py Actualización de application_events.json con nuevos eventos para la gestión de datasets y sesiones de plot. Se mejoró el manejo de errores en la conexión al PLC en main.py, proporcionando detalles adicionales en caso de fallo. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_config.json y plc_datasets.json. Se realizaron mejoras en la interfaz de usuario para reflejar el estado de conexión y se optimizó el código en plotting.js para una mejor gestión de datos en tiempo real. 2025-08-08 18:30:27 +02:00
plc_config.json Actualización de application_events.json con nuevos eventos para la creación y activación de datasets, así como la gestión de sesiones de plot. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_config.json, plc_datasets.json y system_state.json. Se implementaron mejoras en la interfaz de usuario para la visualización de datos en tiempo real y se optimizó el código en plotting.js para una mejor gestión de gráficos. 2025-08-10 00:38:08 +02:00
plc_datasets.json Actualización de application_events.json con nuevos eventos para la creación y activación de datasets, así como la gestión de sesiones de plot. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_config.json, plc_datasets.json y system_state.json. Se implementaron mejoras en la interfaz de usuario para la visualización de datos en tiempo real y se optimizó el código en plotting.js para una mejor gestión de gráficos. 2025-08-10 00:38:08 +02:00
plot_sessions.json Actualización de application_events.json con nuevos eventos para la creación y activación de datasets, así como la gestión de sesiones de plot. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_config.json, plc_datasets.json y system_state.json. Se implementaron mejoras en la interfaz de usuario para la visualización de datos en tiempo real y se optimizó el código en plotting.js para una mejor gestión de gráficos. 2025-08-10 00:38:08 +02:00
requirements.txt Implementación de un sistema de plotting en tiempo real con soporte para múltiples sesiones y un sistema de triggers basado en variables booleanas. Se añadieron nuevos endpoints API para gestionar sesiones de plotting, así como mejoras en la interfaz de usuario para facilitar la creación y control de plots. Se actualizaron los estilos CSS y se integraron nuevas funcionalidades en el frontend para una experiencia de usuario más intuitiva. Además, se realizaron ajustes en los archivos de configuración y estado del sistema para reflejar estos cambios. 2025-07-21 09:26:41 +02:00
system_state.json Actualización de application_events.json con nuevos eventos para la creación y activación de datasets, así como la gestión de sesiones de plot. Se ajustaron las fechas de última actualización en varios archivos de configuración, incluyendo plc_config.json, plc_datasets.json y system_state.json. Se implementaron mejoras en la interfaz de usuario para la visualización de datos en tiempo real y se optimizó el código en plotting.js para una mejor gestión de gráficos. 2025-08-10 00:38:08 +02:00

README.md

PLC S7-315 Streamer & Logger

Sistema web para monitoreo y streaming en tiempo real de datos de PLC Siemens S7-315 hacia PlotJuggler.

🚀 Características

  • Interfaz Web Moderna: Control completo desde navegador
  • Configuración Dinámica: PLC, UDP y variables configurables en tiempo real
  • Streaming en Vivo: Datos enviados a PlotJuggler vía UDP JSON
  • Logging Completo: Registro de todas las operaciones y datos
  • Soporte Multiples Tipos: REAL, INT, DINT, BOOL
  • Estado en Tiempo Real: Monitoreo del estado de conexión y streaming

📋 Requisitos

Hardware

  • PLC Siemens S7-315 conectado a la red
  • PC con Windows y miniconda

Software

  • Python 3.8+
  • PlotJuggler (para visualización de datos)
  • Bibliotecas snap7 de Siemens

🛠️ Instalación

1. Clonar o descargar el proyecto

git clone <repository-url>
cd S7_snap7_Stremer_n_Log

2. Crear entorno virtual con miniconda

conda create -n plc_streamer python=3.10
conda activate plc_streamer

3. Instalar dependencias

pip install -r requirements.txt

4. Instalar bibliotecas snap7 de Siemens

  • Descargar snap7 library desde: https://snap7.sourceforge.net/
  • Extraer y copiar snap7.dll a la carpeta del sistema o proyecto
  • En Windows, típicamente en C:\Windows\System32\ o en el directorio del proyecto

🎯 Uso

1. Iniciar el servidor

python main.py

2. Acceder a la interfaz web

Abrir navegador en: http://localhost:5000

3. Configuración del PLC

  1. Ir a la sección "Configuración PLC S7-315"
  2. Introducir:
    • IP del PLC: Dirección IP del PLC (ej: 192.168.1.100)
    • Rack: Número de rack (típicamente 0)
    • Slot: Número de slot (típicamente 2)
  3. Hacer clic en "Guardar Configuración"
  4. Hacer clic en "Conectar PLC"

4. Configurar Gateway UDP para PlotJuggler

  1. Ir a la sección "Configuración Gateway UDP"
  2. Configurar:
    • Host UDP: 127.0.0.1 (localhost)
    • Puerto UDP: 9870 (puerto por defecto de PlotJuggler)
    • Intervalo de Muestreo: Tiempo entre lecturas (ej: 0.1s = 10Hz)
  3. Hacer clic en "Guardar Configuración"

5. Añadir Variables del PLC

  1. Ir a la sección "Variables del PLC"
  2. Para cada variable añadir:
    • Nombre Variable: Nombre descriptivo (ej: temperatura)
    • Data Block (DB): Número del DB (ej: 1 para DB1)
    • Offset: Posición en bytes dentro del DB
    • Tipo de Dato: REAL, INT, DINT, o BOOL
  3. Hacer clic en "Añadir Variable"

6. Iniciar Streaming

  1. Ir a la sección "Control de Streaming"
  2. Hacer clic en "Iniciar Streaming"
  3. Los datos se enviarán automáticamente a PlotJuggler

📊 Configuración de PlotJuggler

1. Instalar PlotJuggler

2. Configurar recepción UDP

  1. Abrir PlotJuggler
  2. Ir a: StreamingStart streaming
  3. Seleccionar UDP Server
  4. Configurar:
    • Port: 9870 (mismo que en la configuración)
    • Protocol: JSON
  5. Hacer clic en Start

3. Visualizar datos

  • Los datos aparecerán automáticamente en el panel izquierdo
  • Arrastrar variables al área de gráficos para visualizar

🏗️ Estructura del Proyecto

S7_snap7_Stremer_n_Log/
├── main.py              # Aplicación Flask principal
├── templates/
│   └── index.html       # Interfaz web
├── requirements.txt     # Dependencias Python
├── README.md           # Este archivo
├── plc_data.log        # Log de datos (generado automáticamente)
└── .doc/
    └── example.py      # Ejemplo de referencia

🔧 API Endpoints

La aplicación expone los siguientes endpoints:

  • POST /api/plc/config - Actualizar configuración PLC
  • POST /api/udp/config - Actualizar configuración UDP
  • POST /api/plc/connect - Conectar al PLC
  • POST /api/plc/disconnect - Desconectar del PLC
  • POST /api/variables - Añadir variable
  • DELETE /api/variables/<name> - Eliminar variable
  • POST /api/streaming/start - Iniciar streaming
  • POST /api/streaming/stop - Detener streaming
  • POST /api/sampling - Actualizar intervalo de muestreo
  • GET /api/status - Obtener estado actual

📝 Logging

El sistema genera dos tipos de logs:

  1. Log de aplicación: Eventos del sistema, conexiones, errores
  2. Log de datos: Valores de variables con timestamp

Los logs se guardan en plc_data.log y también se muestran en consola.

🛡️ Consideraciones de Seguridad

  • El servidor Flask está configurado para desarrollo (debug=True)
  • Para producción, desactivar modo debug y configurar adecuadamente
  • Verificar que la red del PLC sea segura
  • Utilizar firewalls apropiados

🐛 Solución de Problemas

Error de conexión al PLC

  • Verificar IP, rack y slot del PLC
  • Comprobar conectividad de red (ping <ip_plc>)
  • Verificar que el PLC esté configurado para permitir conexiones Ethernet

Error snap7.dll

  • Descargar snap7 library desde el sitio oficial
  • Copiar snap7.dll al directorio del sistema o proyecto

PlotJuggler no recibe datos

  • Verificar puerto UDP (debe coincidir en ambas aplicaciones)
  • Comprobar firewall de Windows
  • Verificar que PlotJuggler esté configurado para JSON

Variables no se leen correctamente

  • Verificar offset y tipo de dato
  • Confirmar estructura del Data Block en el PLC
  • Comprobar que el DB existe y tiene el tamaño suficiente

📞 Soporte

Para problemas o mejoras, revisar:

  • Logs en plc_data.log
  • Consola del servidor Flask
  • Herramientas de desarrollo del navegador

📄 Licencia

Este proyecto está destinado para uso interno y educativo.