Documento de arquitectura · 2026-03-30
Analisis completo del sistema de protocolos multi-bus, analizador virtual integrado y modelo OSI educativo
La LRU Platform evoluciona de un simulador de aviónica A320 a una plataforma de aprendizaje y operacion de protocolos de comunicacion que cubre aviacion, industria, IoT y buses de campo. El sistema de comunicaciones (CommsManager) se extiende para que cada protocolo sea simultaneamente:
Un alumno puede ver la misma temperatura EGT=620°C codificada simultaneamente como:
| Protocolo | Representacion | Bytes |
|---|---|---|
| ARINC 429 | label:211 SDI:01 BNR:19bit SSM:00 P:1 | 4 |
| MIL-STD-1553 | RT:05 SA:03 WC:01 data:0x26C | 4 |
| MQTT 5 | topic: lru/eng1/egt payload: {"v":620,"ts":...} | ~50 |
| OPC UA | ns=2;s=Engine.Left.EGT Float 620.0 Good | ~30 |
| Modbus TCP | unit:1 FC:03 reg:40001 val:6200 | 12 |
| CAN 2.0B | ID:0x181 DLC:4 data:44 1A 80 00 | 8 |
Bus unidireccional de 32 bits. Cada palabra es autocontenida: 8 bits label (identifica el parametro), 2 bits SDI (source/destination), 19 bits datos (BNR o BCD), 2 bits SSM (sign/status matrix: normal/NCD/test/fail), 1 bit paridad. Velocidad: 12.5 kHz (low speed) o 100 kHz (high speed). Un cable = una direccion. Sin negociacion, sin handshake. Determinista por diseño.
Uso en A320: ADIRU → PFD/ND (datos de aire, actitud), FMGC → FCU (plan de vuelo), LGCIU → ECAM (estado tren).
Bus bidireccional command/response. Un Bus Controller orquesta quien habla cuando. Cada terminal tiene direccion de 5 bits (31 dispositivos), 31 subaddresses por terminal. Palabras de 20 bits (16 datos + sync + parity). Dual redundant (bus A + bus B). Velocidad: 1 Mbps. Usado en aviacion militar, satelites, ISS.
Relevancia formativa: Enseña el concepto de bus controlado vs bus libre, redundancia, time-division multiplexing.
Evolucion Ethernet del A380/A350. Virtual Links con bandwidth reservado y scheduling deterministico. Cada VL tiene un ID fijo, un origen, destinos fijos, y un BAG (Bandwidth Allocation Gap) que garantiza latencia maxima. Switched full-duplex Ethernet 100Base-TX. Redundancia dual-lane.
Relevancia formativa: Puente entre Ethernet convencional y avionica determinista. Enseña QoS, virtual circuits, bandwidth reservation.
Protocolo CAN para aviacion ligera y UAVs. Basado en CAN 2.0B (29-bit identifiers). Definicion estandar de message IDs para parametros de vuelo. Ligero, bajo coste, ideal para experimental y UAV.
Protocolo de comunicacion industrial con modelo de informacion semantico. Cada servidor expone un Address Space — un grafo de nodos con tipos, atributos y relaciones. Un cliente puede descubrir que datos hay disponibles sin documentacion previa. Soporta lectura, escritura, suscripciones, eventos, metodos, y seguridad integrada.
Relevancia: El mas completo. Enseña modelado de informacion, descubrimiento, sesiones, seguridad. Companion specs para cada industria.
El abuelo de los protocolos industriales. Registros numerados (coils, discrete inputs, input registers, holding registers). Lectura/escritura directa por funcion (FC01-FC16). Sin metadatos — el significado de cada registro solo lo conoce la documentacion. RTU sobre RS-485, TCP sobre Ethernet.
Relevancia: Ubicuo, simple, excelente para enseñar el concepto basico de register-mapped I/O.
PROFINET: Real-time IO sobre Ethernet. Tres niveles: TCP/IP (no critico), RT (soft real-time), IRT (isochronous, <1ms). Usado en Siemens/industria europea.
EtherCAT: Procesamiento "on the fly" — el frame Ethernet pasa por cada nodo, cada uno lee/escribe sus datos sin almacenar-y-reenviar. Latencia extremadamente baja.
CANopen: Capa de aplicacion sobre CAN. PDOs (Process Data Objects) para datos ciclicos, SDOs (Service Data Objects) para configuracion. Object Dictionary estandarizado.
MQTT, OPC UA, Modbus TCP, WebSocket, STOMP, HTTP — todos viajan encapsulados dentro de TCP/IP. Incluso AFDX (avionica moderna del A380/A350) usa Ethernet/IP como capa de transporte. Entender TCP/IP es entender el medio universal de comunicacion digital del siglo XXI.
4. Aplicacion (OSI L5-L7): HTTP, FTP, SMTP, DNS, MQTT, OPC UA, Modbus TCP. La capa que ve el usuario y el programador. Cada protocolo de aplicacion define su propio formato de datos y semantica.
3. Transporte (OSI L4): TCP (fiable, ordenado, con control de flujo y congestion) y UDP (rapido, sin garantias, sin conexion). Los puertos (0-65535) identifican al proceso destino: HTTP=80, HTTPS=443, MQTT=1883, OPC UA=4840, Modbus=502, STOMP=61613.
2. Internet (OSI L3): IP (v4 e v6). Direccionamiento logico (IP addresses), fragmentacion, routing entre redes. Cada router lee solo esta capa para decidir el siguiente salto. Protocolos auxiliares: ICMP (ping, traceroute), ARP (IP→MAC), IGMP (multicast).
1. Acceso a red (OSI L1-L2): Ethernet, WiFi, PPP, fibra. El frame fisico con MAC addresses. CRC para deteccion de errores. Cada salto cambia las MAC (source/destination) pero mantiene las IP intactas.
Cada capa envuelve los datos de la capa superior con su propio header (y a veces trailer). Un dato de 7 bytes ("EGT=620") viaja asi:
Capa Header Payload Total
─────────────────────────────────────────────────────────────────────
Aplicacion MQTT (2-5B) {"v":620} (7B) ~12B
Transporte TCP (20B) [MQTT header + payload] ~32B
Internet IP (20B) [TCP header + MQTT + payload] ~52B
Enlace Eth (14B+4B) [IP + TCP + MQTT + payload] ~70B
─────────────────────────────────────────────────────────────────────
Overhead: 63B Dato util: 7B 90% overhead
Comparar con ARINC 429: el mismo dato ocupa 4 bytes con 0% overhead. TCP/IP paga ese coste a cambio de universalidad, routing, fiabilidad y compatibilidad con cualquier red.
TCP (Transmission Control Protocol): Conexion establecida (3-way handshake: SYN → SYN-ACK → ACK). Entrega garantizada y ordenada. Retransmision automatica de paquetes perdidos. Control de flujo (sliding window) y congestion (slow start, congestion avoidance). Ideal para: MQTT, OPC UA, HTTP, transferencia de ficheros, cualquier dato donde la integridad es critica.
UDP (User Datagram Protocol): Sin conexion, sin garantias. Envia datagramas y olvida. Sin retransmision, sin orden. Header minimo (8 bytes vs 20 de TCP). Ideal para: DNS, VoIP, video streaming, telemetria en tiempo real donde un dato viejo es peor que un dato perdido, NTP, SNMP.
Decision para la LRU Platform: La telemetria de alta frecuencia (60fps de sensores) podria usar UDP dentro de la red local — si se pierde un frame de EGT a 620.1°C, el siguiente a 620.2°C lo reemplaza. Pero MQTT ya maneja esto sobre TCP con QoS 0 (fire-and-forget). Para comunicacion entre instructor y alumno en maquinas diferentes, TCP garantiza que los comandos llegan.
Lo que hace unico a TCP/IP en nuestra plataforma es que no compite con los demas protocolos sino que los transporta:
MQTT viaja sobre TCP puerto 1883 (o 8883 con TLS). OPC UA sobre TCP puerto 4840. Modbus TCP sobre TCP puerto 502. WebSocket sobre TCP puerto 80/443 (upgrade desde HTTP). STOMP sobre TCP/WebSocket. Incluso los protocolos que no son nativamente IP pueden encapsularse: ARINC 429 sobre UDP para simulacion remota, CAN sobre TCP para gateways.
El analizador de protocolos puede mostrar esta encapsulacion visualmente: el alumno selecciona un mensaje MQTT y ve las 4 capas desplegables — la trama Ethernet que contiene el datagrama IP que contiene el segmento TCP que contiene el paquete MQTT que contiene el JSON con el valor del sensor.
Fase 1 — Overhead awareness: El alumno ve que enviar "620" via MQTT cuesta 70 bytes pero via ARINC 429 cuesta 4. Entiende visceralmente por que la aviacion clasica no usa IP.
Fase 2 — Wireshark virtual: El traffic monitor puede mostrar los paquetes a nivel TCP/IP: sequence numbers, ACKs, window sizes, retransmissions. El alumno ve como TCP recupera un paquete perdido.
Fase 3 — Comparativa de transporte: El mismo sensor enviado por TCP (fiable, 20B overhead) vs UDP (rapido, 8B overhead) vs WebSocket (persistent, 2B frame overhead tras handshake) vs QUIC (UDP + fiabilidad, 0-RTT).
Fase 4 — Tunneling y VPN: Como un protocolo industrial (Modbus RTU sobre RS-485) se puede encapsular en TCP/IP para control remoto: Modbus RTU → Modbus TCP gateway → TCP → IP → VPN → Internet → IP → TCP → Modbus TCP → PLC. Cada capa añade overhead pero gana alcance.
| Protocolo | Capa | Funcion | Relevancia educativa |
|---|---|---|---|
| IPv4 / IPv6 | Internet | Direccionamiento y routing | Subnetting, NAT, CIDR. IPv6 elimina NAT. |
| TCP | Transporte | Entrega fiable | 3-way handshake, sliding window, retransmission |
| UDP | Transporte | Entrega rapida | Datagramas, multicast, broadcast |
| ICMP | Internet | Diagnostico | ping, traceroute, unreachable, TTL exceeded |
| ARP | Enlace | IP → MAC | Resolucion de direcciones en LAN |
| DNS | Aplicacion | Nombres → IPs | Resolucion jerarquica, caching, TTL |
| TLS/SSL | Presentacion | Cifrado | Handshake, certificados, MQTT over TLS |
| QUIC | Transporte | UDP + fiabilidad | HTTP/3, 0-RTT, multiplexing sin head-of-line blocking |
| DHCP | Aplicacion | Asignacion IP auto | Lease, renewal, configuracion de red automatica |
| Protocolo | Adaptador existente | Uso actual |
|---|---|---|
| MQTT 5 | MqttAdapter | Hardware ESP32, telemetria |
| WebSocket | WebSocketAdapter | Browser ↔ Node-RED |
| STOMP | StompAdapter | RabbitMQ browser client |
| BLE | BleAdapter | Sensores Bluetooth |
| Serial | SerialAdapter | Web Serial API |
| HTTP Polling | HttpPollingAdapter | APIs REST |
| Loopback | LoopbackAdapter | Testing sin hardware |
Si TCP/IP es la carretera universal, RabbitMQ es la estacion central de clasificacion donde los mensajes se reciben, enrutan, almacenan y distribuyen a sus destinos. Cada protocolo llega a RabbitMQ por su propia puerta (MQTT por el puerto 1883, AMQP por el 5672, STOMP/WS por el 15674) y RabbitMQ los traduce internamente a un modelo comun de exchanges, queues y bindings.
RabbitMQ es unico porque habla 5 protocolos simultaneamente, cada uno en su puerto. Un mensaje publicado por MQTT desde un ESP32 puede ser consumido por AMQP desde Node-RED o por STOMP/WebSocket desde el browser — la traduccion es transparente.
| Protocolo | Puerto | Quien lo usa | Para que |
|---|---|---|---|
| MQTT 5.0 | 1883 | Hardware ESP32, simulacion | Telemetria sensor → broker. Pub/sub por topics. QoS 0/1/2. Retained messages para ultimo valor conocido. |
| AMQP 0-9-1 | 5672 | Node-RED, servicios backend | Routing avanzado: exchanges (direct, topic, fanout, headers), queues con bindings, dead letter, prefetch. El protocolo mas potente de RabbitMQ. |
| STOMP/WebSocket | 15674 | PWA browser | El unico protocolo que funciona directamente en un browser sin proxy. Frame-based: CONNECT, SUBSCRIBE, SEND, MESSAGE. Mapeado a queues AMQP internamente. |
| Streams | 5552 | FDR recorder, replay | Log append-only con offset-based consumption. Cada mensaje persiste. Multiples consumidores pueden leer el mismo stream en posiciones diferentes. Ideal para FDR: grabar todo, reproducir cualquier momento. |
| Management HTTP | 15672 | Administracion, monitoring | API REST para crear exchanges/queues, ver estadisticas, gestionar usuarios. Dashboard web. |
Este es el punto clave para Analyzer1: RabbitMQ ya traduce entre protocolos. Un ESP32 publica por MQTT en el topic lru/eng1/egt. RabbitMQ lo convierte internamente a un mensaje AMQP en el exchange amq.topic con routing key lru.eng1.egt. Node-RED lo consume por AMQP, lo procesa, y lo publica en otro exchange. La PWA lo recibe por STOMP/WebSocket.
Analyzer1 puede interceptar en cualquier punto de esta cadena:
Tap MQTT: Suscribirse a lru/# para ver todo el trafico hardware.
Tap AMQP: Crear una cola temporal con binding al exchange de interes — no afecta al flujo existente.
Tap Stream: Leer el stream historico para analisis post-mortem — como un FDR replay.
En cada tap point, Analyzer1 puede aplicar el ProtocolAdapter correspondiente para decodificar los datos: si viene por MQTT, aplica MqttProtocolAdapter para mostrar la estructura del paquete MQTT. Si viene por AMQP, muestra las propiedades AMQP (exchange, routing key, headers, delivery mode).
sim/eng1/egt → RabbitMQ recibe → Node-RED procesa → PWA del alumno recibe por STOMP/WS → InstrumentBridge mueve el gauge. Analyzer1 intercepta en cualquier punto.RabbitMQ es el unico componente que ya implementa la traduccion multi-protocolo en produccion. No es una simulacion — es infraestructura real funcionando. Cuando implementemos los ProtocolAdapters de aviacion (ARINC 429, 1553) e industrial (OPC UA, Modbus), estos pueden publicar y consumir por los mismos exchanges de RabbitMQ. Un adaptador ARINC 429 simulado publica frames binarios en un exchange dedicado; cualquier consumidor (Analyzer1, FDR, otro alumno) puede recibirlos por el protocolo que prefiera.
RabbitMQ Streams son el FDR natural. Append-only, offset-based, persistente. Un stream de simulacion graba todos los frames de todos los protocolos con timestamp. Reproducirlo es simplemente leer desde un offset — exactamente como funciona un FDR real.
El management API es util para Analyzer1. Puerto 15672 expone estadisticas en tiempo real: mensajes/segundo por queue, conexiones activas, exchanges con bindings. Analyzer1 puede consumir esta API para mostrar las estadisticas de trafico en el traffic monitor.
Analyzer1 opera en las fronteras de comunicacion de la plataforma. Para un analisis completo de las 4 fronteras, los buses disponibles, y cuando usar cada uno, ver el documento de arquitectura de buses.
F1 (in-memory): Analyzer1 lee del Sim1Bus directamente para generar frames con ProtocolAdapters. Sin latencia, sin serializar.
F3 (red): Analyzer1 suscribe a topics MQTT via CommsManager para ver trafico real del hardware.
F3 (replay): Analyzer1 lee RabbitMQ Streams para analisis post-mortem de sesiones grabadas.
Cada protocolo tiene capas educativamente relevantes donde reside la inteligencia del diseño. Las capas grises son transparentes (delegadas a infraestructura estandar como TCP/IP o Ethernet). Las capas coloreadas son las que enseñan algo especifico del protocolo.
| Capa OSI | TCP/IP | ARINC 429 | 1553 | MQTT | OPC UA | Modbus | CAN |
|---|---|---|---|---|---|---|---|
| 7 Aplicacion | HTTP FTP DNS | Labels + SSM | — | Topics + QoS | Address space | Registros | — |
| 6 Presentacion | TLS / MIME | BNR / BCD | — | JSON / bin | UA Binary | — | — |
| 5 Sesion | Ports/sockets | Sin sesion | Bus ctrl | CONNECT | Secure ch | Master/slave | — |
| 4 Transporte | TCP / UDP | — | — | TCP | TCP/UDP | TCP/RTU | — |
| 3 Red | IP (v4/v6) | Punto a punto | RT addr 5bit | IP | AFDX VL | IP / serial | CAN ID 29bit |
| 2 Enlace | Ethernet/WiFi | 32-bit word | 20-bit word | Ethernet | Eth + BAG | Ethernet | CAN frame |
| 1 Fisica | 100/1G/10GBase | Bipolar RZ | Manchester | TCP/IP | 100Base-TX | RS-485 | Diff pair |
Observar como TCP/IP tiene todas las capas coloreadas — es el unico protocolo del grupo que cubre todo el stack. MQTT, OPC UA y Modbus TCP delegan las capas 1-4 a TCP/IP; solo añaden logica en las capas superiores. ARINC 429 y CAN cubren las capas bajas sin necesitar TCP/IP. TCP/IP es el puente entre los dos mundos.
L7 Aplicacion: Como se nombran y organizan los datos. Labels ARINC vs topics MQTT vs nodos OPC UA. El alumno entiende por que unos son numeros fijos (labels) y otros son strings jerarquicos (topics).
L6 Presentacion: Como se codifican los valores. BNR (binary) vs BCD (decimal) vs JSON vs UA Binary. El mismo numero 620.0 ocupa 19 bits en ARINC, 4 bytes en float IEEE 754, o 7 caracteres en JSON.
L5 Sesion: Quien controla la conversacion. Bus controller (1553) vs broker (MQTT) vs sin sesion (ARINC). Concepto de polling vs pub/sub vs free-running.
L2 Enlace: Como se empaqueta un frame. Palabras fijas de 32 bits (ARINC) vs frames variables (Ethernet). Concepto de overhead: ARINC tiene 0% overhead, MQTT sobre TCP/IP tiene ~80% overhead para el mismo dato.
L1 Fisica: Como viajan los bits por el cable. Bipolar Return-to-Zero (ARINC) vs Manchester (1553) vs diferencial (CAN). El alumno ve la forma de onda y entiende por que cada codificacion existe.
Analyzer1 sigue el mismo patron arquitectonico que Debug1 y Sim1: un unico componente React que se renderiza en tres modos distintos.
| Modo | Prop | Activacion | Layout |
|---|---|---|---|
| Pagina | mode="page" | Ruta /Analyzer1 | Pantalla completa. Sidebar con selector de protocolo, panel central con frame inspector y traffic monitor, tabs propias. |
| Overlay | mode="overlay" via compact | Boton 📡 en Header | Panel flotante draggable/resizable. Muestra el panel activo sin sidebar. Mismo patron que Debug1Overlay/Sim1Overlay. |
| Tab embed | mode="embed" | Tab "Analyzer" en Sim1 | Minimo chrome. Solo frame inspector + mini traffic. Recibe datos directamente de Sim1 via props/context. |
DebugContext (isOverlayOpen, toggleOverlay) → Debug1Overlay (createPortal + useDraggableResizable) → Debug1 mode="overlay". En paralelo: ruta /Debug1 → Debug1 mode="page". Boton 🐛 en Header.
Sim1Context (isOverlayOpen, engineRunning) → Sim1Overlay (createPortal + useDraggableResizable) → Sim1 compact. En paralelo: ruta /Sim1 → Sim1. Boton 🔬 en Header.
Analyzer1Context (isOverlayOpen, activeProtocol, captureRunning) → Analyzer1Overlay → Analyzer1 compact. Ruta /Analyzer1 → Analyzer1 mode="page". Ademas: TabAnalyzer en Sim1 → Analyzer1 mode="embed". Boton 📡 en Header.
Analyzer1 es un observador no intrusivo — los datos fluyen de Sim1 a Col4 con o sin el. Si el analizador esta abierto, ve el trafico. Si esta cerrado, no afecta al rendimiento.
El analizador virtual ofrece las funciones tipicas de un analizador de protocolos real (Wireshark, Saleae Logic, bus analyzer de aviacion) adaptadas para formacion.
Visualizacion bit a bit de un frame individual. Cada campo coloreado y anotado. Para ARINC 429:
Bit: 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
├P─┤├──SSM──┤├────────────── DATA (BNR 19 bits) ──────────────┤├─SDI─┤├────── LABEL (octal) ───┤
Valor: 1 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1
Campo: P NCD 620.0°C (scaled BNR) 01 Label 211 (EGT)
Hover sobre cada campo muestra tooltip con: nombre, significado, rango valido, valor actual. Click abre documentacion del campo.
Timeline de mensajes en scroll continuo, estilo Wireshark. Columnas configurables:
Timestamp · Source · Protocol · Label/Topic · Data · Status · Decoded value
Filtros: por protocolo, por label/topic, por sistema, por status (normal/NCD/test/fail), por rango de valor. Trigger/breakpoint cuando un valor cruza un umbral. Rate counter (mensajes/segundo por canal). Color coding: verde=normal, ambar=caution, rojo=warning/fail.
Seleccionar un frame del traffic monitor y ver su encapsulacion por capas OSI. Vista vertical: cada capa muestra que bytes añade, cuantos bytes de overhead, y que funcion cumple. Click en una capa expande su detalle.
Ejemplo para un MQTT publish de EGT=620:
L7: {"v":620} (7 bytes utiles) → L5: MQTT PUBLISH header (2 bytes) → L4: TCP header (20 bytes) → L3: IP header (20 bytes) → L2: Ethernet frame (14 bytes) → L1: Preambulo (8 bytes). Total: 71 bytes para transportar 7 bytes de dato. Overhead: 90%.
Comparar con ARINC 429: L7: label+data (4 bytes) → L2: word (0 bytes extra) → L1: Bipolar RZ. Total: 4 bytes. Overhead: 0%.
| Funcion | Fase | Descripcion |
|---|---|---|
| Gateway view | 4 | Ver como un dato se traduce de protocolo A a protocolo B. ARINC 429 → MQTT: que se pierde, que se gana. |
| Bus topology | 4 | Mapa visual de los dispositivos en el bus, sus conexiones, y el trafico entre ellos. |
| Bandwidth stats | 4 | Uso de ancho de banda por protocolo, por canal, por sensor. Graficas en tiempo real. |
| Error injection | 5 | Inyectar errores: bits corruptos, CRC invalido, timeout de respuesta, SSM forzado (NCD/test/fail), label no reconocido. |
| Decode exercise | 6 | Dado un frame en binario, el alumno debe identificar protocolo, decodificar campos, encontrar el valor. |
| Encode exercise | 6 | Dado un valor y un protocolo, el alumno debe codificar el frame correctamente bit a bit. |
| Diagnostico | 6 | Dado un stream de trafico con errores, el alumno debe encontrar el fallo y explicar la causa. |
| Certificacion | 6 | Test evaluable por protocolo. Genera certificado si supera el 80%. |
Cada fase es funcional de forma independiente. La Fase 1 ya es util como herramienta educativa.
| Fichero | Destino | Funcion |
|---|---|---|
Analyzer1Context.tsx | src/contexts/ | Provider: overlay, protocolo activo, capture |
Analyzer1.tsx | src/pages/Analyzer1/ | Shell principal con mode prop |
analyzer1.css | src/pages/Analyzer1/ | Estilos (hereda temas de Sim1) |
Analyzer1Overlay.tsx | src/pages/Analyzer1/ | Panel flotante drag/resize |
useAnalyzerState.ts | src/pages/Analyzer1/ | Estado central del analizador |
index.ts | src/pages/Analyzer1/ | Barrel export |
FrameInspector.tsx | src/pages/Analyzer1/panels/ | Inspector visual bit a bit |
ProtocolAdapter.ts | src/protocols/ | Interfaz base del adaptador |
Arinc429Adapter.ts | src/protocols/ | ARINC 429: encode/decode/inspect |
arinc429-labels.ts | src/protocols/ | Database de labels standard |
TabAnalyzer.tsx | src/pages/Sim1/tabs/ | Tab embed en Sim1 |
| Fichero | Cambio |
|---|---|
App.tsx | Añadir Analyzer1Provider + Analyzer1Overlay |
Header.tsx | Boton 📡 con useAnalyzer1() |
routes/index.ts | Ruta /Analyzer1 |
routes/types.ts | Pages.Analyzer1 = 'analyzer1' |
sim1-shared-types.ts | Añadir 'analyzer' a ObsTabId |
Sim1.tsx | Importar TabAnalyzer, añadir al switch de tabs |
interface ProtocolAdapter extends CommsAdapter {
/** Identificador del protocolo */
protocol: string; // 'tcpip' | 'arinc429' | 'mil1553' | 'mqtt' | 'opcua' | 'modbus' | 'can'
/** Codifica un valor de sensor en el formato nativo del protocolo */
encode(sensorId: string, value: number, status: number): Uint8Array;
/** Decodifica un frame binario y devuelve los campos estructurados */
decode(buffer: Uint8Array): ProtocolFrame;
/** Genera una inspeccion visual: cada bit/byte coloreado y anotado */
inspect(buffer: Uint8Array): FrameInspection;
/** Valida un frame (CRC, paridad, rangos) */
validate(buffer: Uint8Array): ValidationResult;
/** Especificacion de un parametro (label, tipo, rango, resolucion, unidades) */
getWordSpec(labelOrId: number | string): WordSpec | null;
/** Mapeo OSI: que capas usa este protocolo y que funcion cumplen */
getOsiMapping(): OsiLayerMapping[];
}
interface ProtocolFrame {
protocol: string;
timestamp: number;
raw: Uint8Array;
fields: FrameField[];
decodedValue: number;
status: 'normal' | 'ncd' | 'test' | 'fail';
source?: string;
label?: number;
topic?: string;
}
interface FrameField {
name: string;
bitStart: number;
bitLength: number;
rawValue: number;
displayValue: string;
color: string; // para el inspector visual
description: string;
}
interface FrameInspection {
bits: InspectionBit[];
fields: FrameField[];
summary: string;
}
interface InspectionBit {
index: number;
value: 0 | 1;
fieldName: string;
color: string;
}
interface OsiLayerMapping {
layer: 1 | 2 | 3 | 4 | 5 | 6 | 7;
name: string;
relevant: boolean; // true si esta capa es educativamente relevante
protocol: string; // nombre del protocolo en esta capa
overhead: number; // bytes de overhead que añade
description: string;
}
LRU Platform — Analyzer1: Plataforma de protocolos y analizador virtual
2026-03-30 · Claude Opus 4.6
Simulacion · Estado tecnico · Buses · Estado docs · Traspaso s5b