168 lines
5.7 KiB
Markdown
168 lines
5.7 KiB
Markdown
# 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:
|
|
```bash
|
|
pip install pyserial matplotlib tkinter
|
|
```
|
|
|
|
## Instalación y Uso
|
|
|
|
1. Clonar o descargar el proyecto
|
|
2. Instalar dependencias:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
3. Ejecutar la aplicación:
|
|
```bash
|
|
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 guardada
|
|
- `maselli_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
|
|
1. Configurar tipo de conexión y parámetros
|
|
2. Seleccionar función de simulación (Lineal/Sinusoidal)
|
|
3. Ajustar tiempo de ciclo según necesidad
|
|
4. Iniciar simulación
|
|
|
|
### Como Monitor (Trace)
|
|
1. Configurar conexión según el dispositivo a monitorear
|
|
2. Iniciar Trace
|
|
3. Los datos se mostrarán en tiempo real y se guardarán en CSV
|
|
|
|
### Como Gateway (NetCom)
|
|
1. Configurar puerto COM del dispositivo físico
|
|
2. Configurar conexión de red destino
|
|
3. Iniciar Gateway
|
|
4. 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
|
|
|
|
1. **Arquitectura modular**: Código dividido en módulos especializados
|
|
2. **Tiempo de ciclo configurable**: Control más intuitivo de la velocidad de simulación
|
|
3. **Gráfico de Trace mejorado**: Visualización dual de Brix y mA
|
|
4. **Modo NetCom**: Nueva funcionalidad de gateway/bridge con sniffer integrado
|
|
5. **Mejor manejo de errores**: Validación robusta y recuperación de errores
|
|
6. **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.
|