Modelo de Señales y Magnitudes

Documento de diseño — Fase 4 y arquitectura de largo plazo · LRU Platform · 2026-04-04 · v1.0

1. La realidad fisica que el software debe modelar

En un avion, la informacion fluye en ciclo: mundo fisico → sensores → señales → procesamiento → señales → actuadores → mundo fisico. En cada eslabon, la misma realidad se representa de forma diferente.

Cadena de representaciones — EGT motor izquierdo Fenomeno fisico Gases de escape ≈ 620°C Sensor — termopar tipo K ≈ 25.3 mV diferencial Acondicionamiento CJC + amplif. → 2.53 V Digitalizacion — ADC 12 bit Valor 2675 / 4095 (65.3%) Bus — ARINC 429 Label 211 · BNR 19b · SSM=OP Display — instrumento Aguja a 224° · escala en °C Tecnico mantenimiento Tecnico avionica Especialista protocolo Piloto / alumno Semantica Transduccion Protocolo Protocolo Presentacion

Cada representacion es legitima y necesaria en su contexto. El modelo de software debe poder expresar todas simultaneamente.

2. Clasificacion por direccion del flujo

Clasificacion por direccion del flujo Entradas (sensing) Mundo fisico → sistema Termopar (mV) RTD / Pt100 (Ω) 4-20 mA (corriente) ADC (voltaje → bits) Frecuencia (Hz) Discreto (on/off) Contador (pulsos) Magnitud semantica 620°C · 55 psi · 250 kt Fuente de verdad del modelo conv. conv. Salidas (actuation) Sistema → mundo fisico DAC (bits → voltaje) PWM (duty cycle) Rele / solenoide Servo (posicion) Valvula proporcional LED / display Comunicaciones / buses (transporte) Transportan magnitudes codificadas entre sistemas ARINC 429 MIL-STD-1553 AFDX / CAN MQTT / BLE RS-422 / SPI ARINC 818

3. Cantidad = Valor + Unidad + Dimension

Una cantidad fisica se expresa como Q = n × [U]. La unidad pertenece a una dimension (longitud, temperatura, presion). Dentro de una dimension, todas las unidades son interconvertibles.

Dos tipos de conversion: (1) Intra-dimension — factor lineal o afin, puramente matematica: m × 3.28084 = ft, °C × 1.8 + 32 = °F. (2) Inter-dimension — requiere modelo fisico: presion → altitud via atmosfera estandar ISA.

Ejemplo altitud: 10.000 m = 32.808 ft = FL 328 (convencion) = 264.4 hPa (via ISA) = 7.81 inHg. Las tres primeras son conversion de unidad, las dos ultimas conversion de dimension.

4. Los protocolos como capa de contrato

Insight clave: Los protocolos no son simplemente transporte — son contratos estables que persisten decadas y ponen de acuerdo a fabricantes de hardware con desarrolladores de software. Deben ser capa de primera clase.

ARINC 429 (1978) sigue en A320, 737, 787. MIL-STD-1553 (1973) sigue en F-16, F-35, ISS. El hardware cambio radicalmente pero label 203 sigue siendo altitud barometrica. Tres razones: certificacion (DO-160/178/254), interoperabilidad (Honeywell/Thales/Collins), inversion acumulada (ecosistema de 50 años).

Evolucion real: capas, no reemplazos. A380 usa AFDX + ARINC 429 respaldo. Los protocolos se apilan. En un avion moderno coexisten: discretas, ARINC 429 (100 kbps), 1553 (1 Mbps), AFDX (100 Mbps), CAN, ARINC 818, RS-422.

→ lru_analyzer_protocol_platform.html

5. Modelo de cuatro capas

Modelo de cuatro capas Capa semantica (quantities) Magnitudes, unidades, conversiones, rangos — "EGT = 620°C = 1148°F" ~nunca Capa de protocolo (contracts) ARINC 429, 1553, AFDX, 4-20mA, ADC — "Label 211, BNR 19b, 0.25°C/bit" decadas Capa de transduccion (adapters) Sensor → protocolo (in) · Protocolo → actuador (out) — funciones de transferencia años Capa fisica (hardware) ESP32, cables, firmware, BLE, MQTT — "Pin 34, 3.3V ref, 12 bits" meses
Principio: Cada capa solo conoce a su vecina. La semantica nunca menciona ADC. La fisica nunca menciona °C. El hardware evoluciona por su logica propia y el software por la suya. Los protocolos son el contrato estable que los conecta.

6. Relacion con las 4 fronteras de comunicacion

→ lru_bus_architecture.html — "Las 4 fronteras"
FronteraCapa del modeloMecanismo
F1 — In-memorySemantica + TransduccionVariables JS, React context. Sim1Bus opera aqui.
F2 — Inter-tabProtocoloBroadcastChannel, SharedWorker. Datos serializados.
F3 — RedProtocoloMQTT, WebSocket, STOMP, AMQP. CommsManager 8 adapters.
F4 — HardwareFisica + TransduccionARINC 429, BLE radio, señales electricas.
Sim1 + Analyzer1 simulan F4 in-memory (F1 aparentando ser F4). Este es el rol de la capa de transduccion virtual: modelar sensores reales sin hardware real.

7. Gap actual en la plataforma

→ lru_sim1_bridge_architecture.html — "4 Capas del Bridge"
AspectoSequenceEnginesim-catalog
DatosPuertos ADC (adc1, adc2)SensorIds (N1_L, OilP_L)
Valores0-4095 crudoRango real (85%, 55 psi)
TiempoFrames capturadosPerfiles declarativos

Donde esta el escalado hoy: sim-bridges.ts (Capa 2) define mapeos con rangos reales. useSimBridgeConnector (Capa 3) escala: ((real - min) / (max - min)) * 4095. Los clips (InstrumentBridge_03) esperan ADC crudo por closure de cfg1. El escalado es un parche que deberia ser propiedad del transductor.

→ InstrumentBridge.md — cfg1, closure de rangos ADC

8. Interfaces TypeScript propuestas

Capa semantica

interface QuantityDef {
  sensorId: string;              // 'EGT_L', 'ALT'
  quantity: string;              // 'temperature', 'altitude'
  dimension: string;             // 'Θ', 'L'
  primaryUnit: string;           // '°C', 'ft'
  range: [number, number];       // en unidad primaria
  nominalCruise?: number;
  thresholds?: SensorThresholds;
  conversions: Record<string, UnitConversion>;
  crossDimensionLinks?: CrossDimensionLink[];
}
interface UnitConversion {
  type: 'linear' | 'affine'; factor: number; offset?: number;
}
interface CrossDimensionLink {
  targetQuantity: string; model: string; fn: string;
}

Capa de protocolo

type ProtocolEncoding =
  | { bus: 'adc'; bits: number; range: [number, number] }
  | { bus: 'dac'; bits: number; range: [number, number] }
  | { bus: 'binary'; activeHigh: boolean }
  | { bus: 'pwm'; freqHz: number; dutyRange: [number, number] }
  | { bus: 'frequency'; fMin: number; fMax: number }
  | { bus: 'counter'; maxCount: number; rollover: boolean }
  | { bus: 'current'; range: '4-20mA' | '0-20mA' }
  | { bus: 'voltage'; range: '0-5V' | '0-10V' | '±10V' }
  | { bus: 'resistance'; element: 'Pt100' | 'NTC' }
  | { bus: 'thermocouple'; type: 'K' | 'J' | 'T' | 'E' }
  | { bus: 'arinc429'; label: number; encoding: 'BNR'|'BCD';
      dataBits: number; resolution: number; ssm: string }
  | { bus: 'milstd1553'; rt: number; sa: number; wordCount: number }
  | { bus: 'canbus'; msgId: number; startBit: number; length: number }
  | { bus: 'serial'; protocol: 'RS232'|'RS422'|'SPI'|'I2C' };
→ Alinear con ProtocolAdapter interface

Sensor completo unificado

interface SensorDefinition {
  sensorId: string;
  quantity: QuantityDef;         // que es
  protocols: ProtocolEncoding[]; // como viaja (multiples)
  transducer?: TransducerDef;    // como se mide
}

9. Motor de representaciones

represent(620, 'EGT_L') → {
  '°C': 620, '°F': 1148, 'K': 893.15,
  thermocouple_mV: 25.33, conditioned_V: 2.533,
  adc_12bit: 2675, adc_percent: 65.3,
  arinc429: { label: 0o211, ssm: 'OP', ... },
  rangePercent: 65.26, status: 'normal',
}

10. Dimension formativa

"Los instrumentos de medida son los ojos virtuales que extienden nuestros sentidos y nos ayudan a percibir dimensiones desconocidas."

VistaQuienQue ve
Instrumento virtualPiloto/alumnoAguja + valor numerico
Multi-unidadIngeniero620°C / 1148°F / 893K
TransductorTecnico mant.25.3 mV termopar K
DigitalizadoTecnico avionicaADC 2675/4095
Word busEspecialistaARINC 429 label 211 BNR
Estado operativoInstructor65% rango, zona normal

11. Conexion con Analyzer1

→ Tap points, ProtocolAdapter, frame inspector
Componente Analyzer1Relacion con el modelo
ProtocolAdapterSe alinea con ProtocolEncoding — cada adapter codifica/decodifica segun su bus
4 tap pointsMotor de representaciones genera datos para cada nivel
Frame inspectorARINC 429 (label, SDI, BNR/BCD, SSM, parity) viene del ProtocolEncoding
Comparacion protocolos"620" via MQTT = 70 bytes, via ARINC 429 = 4 bytes — represent() genera ambos
→ Sprint 3 (Analyzer1) y Sprint 4 (ARINC+MQTT) dependen de este modelo

12. Fase 4 — Secuencias

ComponenteFicheroEst.
Catalogo de magnitudessrc/simulation/quantities.ts~200 lin
SimSequenceRecordersrc/simulation/SimSequenceRecorder.ts~100
SimSequencePlayersrc/simulation/SimSequencePlayer.ts~80
SeqPanel UIsrc/pages/Sim1/panels/SeqPanel/~400
Migracion catalogo+bridgessim-catalog.ts + sim-bridges.tsrefactor

13. Plan de migracion incremental

FaseQueRuntime
InmediataDefinir interfaces. Migrar rangos sim-catalog → QuantityDefNada cambia
SiguienteMotor conversion unidades. HwObjPopup multi-unidadUI muestra °C y °F
SecuenciasRecorder/Player semanticos. SeqPanel en PanelGridGrabar/reproducir
Analyzer1Tipos bus (ARINC 429, 1553). Codificador/decodificadorInspeccion bit a bit

14. Criterio de aceptacion

Documentacion relacionada

lru_bus_architecture.html lru_sim1_bridge_architecture.html lru_analyzer_protocol_platform.html lru_roadmap_s6.html

LRU Platform — Modelo de Señales y Magnitudes — v1.0 — 2026-04-04