Analyzer1 — Plataforma de protocolos y analizador virtual

Documento de arquitectura · 2026-03-30
Analisis completo del sistema de protocolos multi-bus, analizador virtual integrado y modelo OSI educativo

Vision general

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:

Operativo — Transporta datos reales a hardware fisico. Un adaptador MQTT ya lo hace; un adaptador ARINC 429 podria hacerlo con el hardware apropiado.
Simulador — Funciona en modo loopback sin hardware. Sim1 genera datos, el adaptador los codifica como si fueran frames reales, y el analizador los decodifica.
Formativo — Se puede inspeccionar cada frame bit a bit, ver la encapsulacion por capas OSI, comparar la codificacion entre protocolos, e inyectar errores para diagnostico.

Un alumno puede ver la misma temperatura EGT=620°C codificada simultaneamente como:

ProtocoloRepresentacionBytes
ARINC 429label:211 SDI:01 BNR:19bit SSM:00 P:14
MIL-STD-1553RT:05 SA:03 WC:01 data:0x26C4
MQTT 5topic: lru/eng1/egt payload: {"v":620,"ts":...}~50
OPC UAns=2;s=Engine.Left.EGT Float 620.0 Good~30
Modbus TCPunit:1 FC:03 reg:40001 val:620012
CAN 2.0BID:0x181 DLC:4 data:44 1A 80 008

Protocolos soportados

↑ Vision

Aviacion

ARINC 429

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).

MIL-STD-1553

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.

AFDX / ARINC 664 Part 7

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.

CANaerospace

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.

Industrial

OPC UA (Unified Architecture)

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.

Modbus RTU / TCP

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 / EtherCAT / CANopen

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.

TCP/IP — El protocolo fundacional

TCP/IP no es un protocolo mas en la lista — es la base sobre la que funcionan la mayoria de los demas

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.

Las 4 capas del modelo TCP/IP

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.

Encapsulacion — la matrioska digital

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 vs UDP — la decision fundamental

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.

TCP/IP como protocolo encapsulador universal

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.

Valor educativo en la LRU Platform

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.

Protocolos relacionados dentro del stack TCP/IP

ProtocoloCapaFuncionRelevancia educativa
IPv4 / IPv6InternetDireccionamiento y routingSubnetting, NAT, CIDR. IPv6 elimina NAT.
TCPTransporteEntrega fiable3-way handshake, sliding window, retransmission
UDPTransporteEntrega rapidaDatagramas, multicast, broadcast
ICMPInternetDiagnosticoping, traceroute, unreachable, TTL exceeded
ARPEnlaceIP → MACResolucion de direcciones en LAN
DNSAplicacionNombres → IPsResolucion jerarquica, caching, TTL
TLS/SSLPresentacionCifradoHandshake, certificados, MQTT over TLS
QUICTransporteUDP + fiabilidadHTTP/3, 0-RTT, multiplexing sin head-of-line blocking
DHCPAplicacionAsignacion IP autoLease, renewal, configuracion de red automatica

IoT / Web (ya implementados)

ProtocoloAdaptador existenteUso actual
MQTT 5MqttAdapterHardware ESP32, telemetria
WebSocketWebSocketAdapterBrowser ↔ Node-RED
STOMPStompAdapterRabbitMQ browser client
BLEBleAdapterSensores Bluetooth
SerialSerialAdapterWeb Serial API
HTTP PollingHttpPollingAdapterAPIs REST
LoopbackLoopbackAdapterTesting sin hardware
Capa de aplicacion Sim1 · Col4 · Debug1 · Registry · InstrumentBridge · Analyzer1 CommsManager — orquestador de adaptadores Protocolos sobre TCP/IP MQTT 5 :1883 OPC UA :4840 Modbus TCP :502 WebSocket :80/443 STOMP :61613 PROFINET TCP/RT TCP / IP TCP (fiable) UDP (rapido) IPv4 / IPv6 ICMP · ARP · DNS Protocolo universal — transporta MQTT, OPC UA, Modbus TCP, WebSocket, STOMP, AFDX, HTTP Ethernet 100/1G/10G WiFi 802.11 PPP · Fibra · 4G/5G Buses nativos (sin TCP/IP) ARINC 429 32bit · Bipolar RZ MIL-STD-1553 20bit · Manchester CAN 2.0 Diff pair Modbus RTU RS-485 BLE · Serial Wireless / UART AFDX / ARINC 664 — Ethernet determinista (hibrido: IP + avionica) EtherCAT — Ethernet industrial on-the-fly (hibrido: Eth sin IP) ProtocolAdapter interface (extiende CommsAdapter) encode() · decode() · inspect() · validate() · getWordSpec() · getOsiMapping() Modo operativo Modo simulacion Modo formacion TCP/IP es la capa transversal que transporta la mayoria de protocolos de aplicacion. Los buses nativos operan directamente sobre su capa fisica sin necesitar IP. Los hibridos combinan ambos mundos.

RabbitMQ — el broker central

↑ Protocolos

RabbitMQ no es un protocolo mas — es la infraestructura que hace posible que los protocolos se comuniquen entre si

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.

Papel en la arquitectura LRU

Productores de datos ESP32 HW MQTT publish Sim1 engine Virtual sensors Node-RED AMQP / flows Instructor Comandos remotos RabbitMQ 4.2.5 MQTT :1883 AMQP :5672 STOMP/WS :15674 Stream :5552 UI :15672 Exchanges → Bindings → Queues → Consumers Routing por topic · Persistencia · Retry · Dead letter · Stream replay Consumidores PWA (browser) STOMP/WS · MQTT/WS Analyzer1 Inspecciona trafico Node-RED Procesamiento flujos FDR recorder Stream persistencia Analyzer1 tap points — donde intercepta trafico 1. Interno (sin RabbitMQ): Sim1 → ProtocolAdapter → Analyzer1 directo en memoria 2. MQTT tap: suscripcion a topics wildcard (lru/#) via MqttAdapter del CommsManager 3. AMQP tap: cola dedicada con bindings a exchanges de interes (via Node-RED) 4. Stream replay: leer historico desde RabbitMQ Streams para analisis offline

Los 5 protocolos de RabbitMQ

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.

ProtocoloPuertoQuien lo usaPara que
MQTT 5.01883Hardware ESP32, simulacionTelemetria sensor → broker. Pub/sub por topics. QoS 0/1/2. Retained messages para ultimo valor conocido.
AMQP 0-9-15672Node-RED, servicios backendRouting avanzado: exchanges (direct, topic, fanout, headers), queues con bindings, dead letter, prefetch. El protocolo mas potente de RabbitMQ.
STOMP/WebSocket15674PWA browserEl unico protocolo que funciona directamente en un browser sin proxy. Frame-based: CONNECT, SUBSCRIBE, SEND, MESSAGE. Mapeado a queues AMQP internamente.
Streams5552FDR recorder, replayLog 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 HTTP15672Administracion, monitoringAPI REST para crear exchanges/queues, ver estadisticas, gestionar usuarios. Dashboard web.

RabbitMQ como gateway de protocolos

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).

RabbitMQ + Sim1 + Analyzer1 — flujo completo

Local (sin red): Sim1 genera EGT=620 → ProtocolAdapter.encode() crea ARINC 429 word → Analyzer1 lo inspecciona en memoria → InstrumentBridge mueve el gauge. Todo en el browser, sin RabbitMQ.
Distribuido (con red): Sim1 genera EGT=620 → SimulationCommsAdapter publica por MQTT topic sim/eng1/egt → RabbitMQ recibe → Node-RED procesa → PWA del alumno recibe por STOMP/WS → InstrumentBridge mueve el gauge. Analyzer1 intercepta en cualquier punto.
Grabacion: RabbitMQ Stream captura todos los mensajes con timestamp. Analyzer1 puede reproducir el stream en cualquier momento para analisis offline, como un FDR.
Multi-protocolo: El mismo dato viaja por MQTT (del ESP32), se traduce a AMQP (para Node-RED), se reenvía por STOMP/WS (al browser). Analyzer1 puede mostrar las tres representaciones simultaneamente — el alumno ve la traduccion en vivo.

Implicaciones para la plataforma de protocolos

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.

Arquitectura de buses — donde intercepta Analyzer1

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.

Modelo OSI × protocolos

↑ Protocolos

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 OSITCP/IPARINC 4291553MQTTOPC UAModbusCAN
7 AplicacionHTTP FTP DNSLabels + SSMTopics + QoSAddress spaceRegistros
6 PresentacionTLS / MIMEBNR / BCDJSON / binUA Binary
5 SesionPorts/socketsSin sesionBus ctrlCONNECTSecure chMaster/slave
4 TransporteTCP / UDPTCPTCP/UDPTCP/RTU
3 RedIP (v4/v6)Punto a puntoRT addr 5bitIPAFDX VLIP / serialCAN ID 29bit
2 EnlaceEthernet/WiFi32-bit word20-bit wordEthernetEth + BAGEthernetCAN frame
1 Fisica100/1G/10GBaseBipolar RZManchesterTCP/IP100Base-TXRS-485Diff 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.

Valor educativo por capa

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.

Triple vida — patron Debug1/Sim1

↑ OSI

Analyzer1 sigue el mismo patron arquitectonico que Debug1 y Sim1: un unico componente React que se renderiza en tres modos distintos.

Los tres modos

ModoPropActivacionLayout
Paginamode="page"Ruta /Analyzer1Pantalla completa. Sidebar con selector de protocolo, panel central con frame inspector y traffic monitor, tabs propias.
Overlaymode="overlay" via compactBoton 📡 en HeaderPanel flotante draggable/resizable. Muestra el panel activo sin sidebar. Mismo patron que Debug1Overlay/Sim1Overlay.
Tab embedmode="embed"Tab "Analyzer" en Sim1Minimo chrome. Solo frame inspector + mini traffic. Recibe datos directamente de Sim1 via props/context.

Patron implementado

Debug1 (referencia)

DebugContext (isOverlayOpen, toggleOverlay) → Debug1Overlay (createPortal + useDraggableResizable) → Debug1 mode="overlay". En paralelo: ruta /Debug1Debug1 mode="page". Boton 🐛 en Header.

Sim1 (referencia)

Sim1Context (isOverlayOpen, engineRunning) → Sim1Overlay (createPortal + useDraggableResizable) → Sim1 compact. En paralelo: ruta /Sim1Sim1. Boton 🔬 en Header.

Analyzer1 (nuevo)

Analyzer1Context (isOverlayOpen, activeProtocol, captureRunning) → Analyzer1OverlayAnalyzer1 compact. Ruta /Analyzer1Analyzer1 mode="page". Ademas: TabAnalyzer en Sim1 → Analyzer1 mode="embed". Boton 📡 en Header.

DebugContext isOverlayOpen Sim1Context engineRunning Analyzer1Context activeProtocol Pagina /Analyzer1 Route en Pages.tsx mode="page" Overlay flotante Analyzer1Overlay.tsx compact Tab en Sim1 TabAnalyzer.tsx mode="embed" Analyzer1.tsx — componente unico mode: 'page' | 'overlay' | 'embed' Sim1 → ProtocolAdapter encode → [TCP/IP encapsula si aplica] → Analyzer1 inspect → InstrumentBridge

Flujo de datos

1. Sim1 Engine genera valores de sensores (EGT=620°C) a 60fps.
2. ProtocolAdapter.encode() convierte el valor al formato nativo del protocolo (ARINC 429 word, MQTT payload, OPC UA node update).
3. TCP/IP encapsula (si el protocolo lo requiere). MQTT → TCP segment → IP datagram → Ethernet frame. ARINC 429 va directo sin IP. El analizador puede mostrar cada capa de encapsulacion.
4. Analyzer1 intercepta los frames codificados. Los decodifica, los muestra en el traffic monitor, permite inspeccion bit a bit. Para protocolos sobre TCP/IP, puede desplegar las capas OSI de cada frame.
5. InstrumentBridge recibe los datos (decodificados o directos) y mueve los instrumentos en Col4.

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.

Analizador de protocolos virtual

↑ Triple vida

El analizador virtual ofrece las funciones tipicas de un analizador de protocolos real (Wireshark, Saleae Logic, bus analyzer de aviacion) adaptadas para formacion.

Frame inspector

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.

Traffic monitor

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.

OSI drill-down

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%.

Funciones avanzadas (fases posteriores)

FuncionFaseDescripcion
Gateway view4Ver como un dato se traduce de protocolo A a protocolo B. ARINC 429 → MQTT: que se pierde, que se gana.
Bus topology4Mapa visual de los dispositivos en el bus, sus conexiones, y el trafico entre ellos.
Bandwidth stats4Uso de ancho de banda por protocolo, por canal, por sensor. Graficas en tiempo real.
Error injection5Inyectar errores: bits corruptos, CRC invalido, timeout de respuesta, SSM forzado (NCD/test/fail), label no reconocido.
Decode exercise6Dado un frame en binario, el alumno debe identificar protocolo, decodificar campos, encontrar el valor.
Encode exercise6Dado un valor y un protocolo, el alumno debe codificar el frame correctamente bit a bit.
Diagnostico6Dado un stream de trafico con errores, el alumno debe encontrar el fallo y explicar la causa.
Certificacion6Test evaluable por protocolo. Genera certificado si supera el 80%.

Plan de fases

↑ Analizador

Cada fase es funcional de forma independiente. La Fase 1 ya es util como herramienta educativa.

Fase 1 — Frame inspector + estructura base

Analyzer1Context.tsx — Provider con isOverlayOpen, activeProtocol, captureRunning.
Analyzer1Overlay.tsx — Panel flotante patron Debug1. createPortal + useDraggableResizable.
Analyzer1.tsx — Shell con mode prop. Selector de protocolo. Panel central.
ProtocolAdapter interface — encode(), decode(), inspect(), validate(), getWordSpec(), getOsiMapping().
Arinc429Adapter.ts — Primer protocolo. Encode/decode 32-bit words. Label database con 100+ labels standard.
FrameInspector.tsx — Panel visual: bits coloreados, campos anotados, tooltips, valor decodificado.
TabAnalyzer.tsx — Tab embed en Sim1 (obsMode === 'analyzer').
Integracion — App.tsx (provider + overlay), Header.tsx (boton 📡), routes (ruta /Analyzer1).

Fase 2 — Traffic monitor

TrafficMonitor.tsx — Timeline scrollable de frames. Columnas configurables.
Filtros — Por protocolo, label, sistema, status, rango de valor.
Trigger — Breakpoint cuando un valor cruza un umbral. Pausa el capture y resalta el frame.
Rate counter — Mensajes/segundo por canal con sparkline.

Fase 3 — Encapsulacion OSI

OsiDrill.tsx — Vista vertical de capas por frame seleccionado.
Overhead calculator — Bytes utiles vs bytes totales por capa.
Protocol comparison — Mismo dato en dos protocolos lado a lado.

Fase 4 — Multi-protocol

Adaptadores adicionales — TcpIpAdapter (stack completo con encapsulacion visual), Mil1553Adapter, MqttProtocolAdapter, OpcUaAdapter, ModbusAdapter, CanAdapter.
Gateway view — Traduccion entre protocolos.
Bus topology — Mapa visual de dispositivos y conexiones.

Fase 5 — Error injection

FaultInjector — Corrupcion de bits, CRC invalido, timeouts, SSM forzado.
Error detection — El analizador marca frames con errores y explica la anomalia.

Fase 6 — Exercises

Exercise engine — Generador de ejercicios parametricos por protocolo.
Evaluacion — Puntuacion, tiempo, repeticion, certificacion.

Mapa de ficheros

↑ Fases

Ficheros Fase 1

FicheroDestinoFuncion
Analyzer1Context.tsxsrc/contexts/Provider: overlay, protocolo activo, capture
Analyzer1.tsxsrc/pages/Analyzer1/Shell principal con mode prop
analyzer1.csssrc/pages/Analyzer1/Estilos (hereda temas de Sim1)
Analyzer1Overlay.tsxsrc/pages/Analyzer1/Panel flotante drag/resize
useAnalyzerState.tssrc/pages/Analyzer1/Estado central del analizador
index.tssrc/pages/Analyzer1/Barrel export
FrameInspector.tsxsrc/pages/Analyzer1/panels/Inspector visual bit a bit
ProtocolAdapter.tssrc/protocols/Interfaz base del adaptador
Arinc429Adapter.tssrc/protocols/ARINC 429: encode/decode/inspect
arinc429-labels.tssrc/protocols/Database de labels standard
TabAnalyzer.tsxsrc/pages/Sim1/tabs/Tab embed en Sim1

Ficheros a modificar

FicheroCambio
App.tsxAñadir Analyzer1Provider + Analyzer1Overlay
Header.tsxBoton 📡 con useAnalyzer1()
routes/index.tsRuta /Analyzer1
routes/types.tsPages.Analyzer1 = 'analyzer1'
sim1-shared-types.tsAñadir 'analyzer' a ObsTabId
Sim1.tsxImportar TabAnalyzer, añadir al switch de tabs

Interfaz ProtocolAdapter

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