|
||
---|---|---|
.. | ||
CAMBIOS.md | ||
README.md |
README.md
Maselli Protocol Simulator/Tracer/NetCom Gateway
Descripción General
Aplicación de escritorio basada en Python para simular, monitorear y hacer bridge de dispositivos que utilizan el protocolo ADAM/Maselli. La aplicación soporta comunicación Serial (RS485/RS232), TCP y UDP, proporcionando una interfaz gráfica intuitiva construida con Tkinter.
Características Principales
1. Modo Simulador
- Emula un dispositivo Maselli enviando paquetes de datos en protocolo ADAM
- Patrones de generación de datos:
- Lineal: Onda triangular entre valores mínimo y máximo
- Sinusoidal: Onda sinusoidal suave
- Manual: Envío de valores individuales mediante slider o entrada directa
- Tiempo de ciclo configurable: Define el tiempo total para completar un ciclo de simulación
- Muestras por ciclo ajustables para control fino de la resolución
- Visualización en tiempo real de valores Brix y mA
- Gráfico dual con ejes Y independientes para Brix (azul) y mA (rojo)
2. Modo Trace
- Escucha y registra datos entrantes de dispositivos Maselli reales
- Parseo automático de mensajes del protocolo ADAM
- Conversión mA ↔ Brix basada en mapeo configurable
- Registro de datos en archivo CSV con campos:
- Timestamp
- Dirección ADAM
- Valor mA
- Valor Brix calculado
- Validez del checksum
- Mensaje raw
- Gráfico mejorado: Muestra tanto Brix como mA en tiempo real
- Estadísticas de mensajes recibidos y errores de checksum
3. Modo NetCom (Gateway)
- Actúa como puente transparente entre:
- Un puerto COM físico (configurable)
- Una conexión de red (TCP/UDP usando la configuración compartida)
- Función Sniffer:
- Log detallado de todo el tráfico en ambas direcciones
- Identificación visual de la dirección del tráfico (COM→NET, NET→COM)
- Parseo opcional de mensajes ADAM para mostrar valores interpretados
- Filtros de visualización configurables
- Estadísticas de transferencias y errores
Estructura Modular
MaselliSimulatorApp/
├── main.py # Punto de entrada
├── maselli_app.py # Aplicación principal y GUI
├── protocol_handler.py # Manejo del protocolo ADAM
├── connection_manager.py # Gestión de conexiones
├── config_manager.py # Gestión de configuración
├── utils.py # Utilidades comunes
└── tabs/
├── __init__.py
├── simulator_tab.py # Lógica del simulador
├── trace_tab.py # Lógica del trace
└── netcom_tab.py # Lógica del gateway
Protocolo ADAM
Formato de mensaje:
#AA[valor_mA][checksum]\r
#
: Carácter inicial (opcional en respuestas)AA
: Dirección del dispositivo (2 caracteres)valor_mA
: Valor en mA (6 caracteres, formato XX.XXX)checksum
: Suma de verificación (2 caracteres hex)\r
: Carácter de fin
Requisitos
- Python 3.7+
- Bibliotecas requeridas:
pip install pyserial matplotlib tkinter
Instalación y Uso
- Clonar o descargar el proyecto
- Instalar dependencias:
pip install -r requirements.txt
- Ejecutar la aplicación:
python main.py
Configuración
Parámetros de Conexión
- Serial: Puerto COM y velocidad de baudios
- TCP/UDP: Dirección IP y puerto
Mapeo Brix ↔ mA
- Min Brix [4mA]: Valor Brix correspondiente a 4mA
- Max Brix [20mA]: Valor Brix correspondiente a 20mA
- Interpolación lineal para valores intermedios
Configuración del Simulador
- Dirección ADAM: 2 caracteres (ej: "01")
- Tiempo de ciclo: Duración total de un ciclo completo de simulación
- Muestras/ciclo: Número de puntos por ciclo (resolución)
Configuración NetCom
- Puerto COM físico: Puerto para el dispositivo real
- Baud Rate: Velocidad del puerto COM físico
Archivos Generados
maselli_simulator_config.json
: Configuración guardadamaselli_trace_YYYYMMDD_HHMMSS.csv
: Datos capturados en modo Trace
Iconos
La aplicación buscará automáticamente archivos de icono en el directorio raíz:
icon.png
(recomendado)icon.ico
(Windows)icon.gif
Uso Típico
Como Simulador
- Configurar tipo de conexión y parámetros
- Seleccionar función de simulación (Lineal/Sinusoidal)
- Ajustar tiempo de ciclo según necesidad
- Iniciar simulación
Como Monitor (Trace)
- Configurar conexión según el dispositivo a monitorear
- Iniciar Trace
- Los datos se mostrarán en tiempo real y se guardarán en CSV
Como Gateway (NetCom)
- Configurar puerto COM del dispositivo físico
- Configurar conexión de red destino
- Iniciar Gateway
- Monitorear el tráfico bidireccional en el log
Notas de Desarrollo
- La aplicación usa threading para operaciones de comunicación sin bloquear la GUI
- Los gráficos se actualizan mediante matplotlib animation
- El protocolo ADAM es parseado con validación de checksum opcional
- Todos los módulos están diseñados para ser reutilizables
Mejoras Respecto a la Versión Original
- Arquitectura modular: Código dividido en módulos especializados
- Tiempo de ciclo configurable: Control más intuitivo de la velocidad de simulación
- Gráfico de Trace mejorado: Visualización dual de Brix y mA
- Modo NetCom: Nueva funcionalidad de gateway/bridge con sniffer integrado
- Mejor manejo de errores: Validación robusta y recuperación de errores
- Estadísticas detalladas: Contadores de mensajes, errores y transferencias
Licencia
Este proyecto es de código abierto. Úselo bajo su propia responsabilidad.
Autor
Desarrollado para monitoreo y simulación de dispositivos Maselli con protocolo ADAM.