{
  "id": "pq-observation.v1",
  "machineSlug": "proceso-pq",
  "version": 1,
  "access": "read",
  "freshnessSeconds": 15,
  "coherenceToleranceSeconds": 1,
  "signals": [
    {
      "key": "sys.machine.running",
      "label": "Maquina en marcha",
      "plcTag": "HMI_SYS_RUNNING",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.machine.stopped",
      "label": "Maquina detenida",
      "plcTag": "HMI_SYS_STOPPED",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.machine.faulted",
      "label": "Maquina en falla",
      "plcTag": "HMI_SYS_FAULTED",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.mode.auto",
      "label": "Modo automatico activo",
      "plcTag": "HMI_SYS_MODE_AUTO",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.mode.manual",
      "label": "Modo manual activo",
      "plcTag": "HMI_SYS_MODE_MANUAL",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.safety.ok",
      "label": "Seguridad general en estado OK",
      "plcTag": "HMI_SYS_SAFETY_OK",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.estop.active",
      "label": "Paro de emergencia activo",
      "plcTag": "HMI_SYS_ESTOP_ACTIVE",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.machine.ready",
      "label": "Maquina lista para producir",
      "plcTag": "HMI_SYS_MACHINE_READY",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.machine.busy",
      "label": "Maquina ocupada ejecutando secuencia",
      "plcTag": "HMI_SYS_MACHINE_BUSY",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.guards.closed",
      "label": "Guardas y puertas cerradas",
      "plcTag": "HMI_SYS_GUARDS_CLOSED",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.power.healthy",
      "label": "Alimentacion general en estado sano",
      "plcTag": "HMI_SYS_POWER_HEALTHY",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.watchdog.plc_counter",
      "label": "Contador de heartbeat incremental publicado por PLC",
      "plcTag": "HMI_WD_PLC_COUNTER",
      "type": "uint32",
      "category": "status",
      "unit": "count",
      "access": "read"
    },
    {
      "key": "sys.watchdog.plc_toggle",
      "label": "Bit alternante de heartbeat del PLC",
      "plcTag": "HMI_WD_PLC_TOGGLE",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z1.occupied",
      "label": "Ocupacion de Z1",
      "plcTag": "HMI_SLOT_Z1_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z2.occupied",
      "label": "Ocupacion de Z2",
      "plcTag": "HMI_SLOT_Z2_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z3.s1.occupied",
      "label": "Ocupacion de Z3-S1",
      "plcTag": "HMI_SLOT_Z3_S1_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z3.s2.occupied",
      "label": "Ocupacion de Z3-S2",
      "plcTag": "HMI_SLOT_Z3_S2_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z3.s3.occupied",
      "label": "Ocupacion de Z3-S3",
      "plcTag": "HMI_SLOT_Z3_S3_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z4.occupied",
      "label": "Ocupacion de Z4",
      "plcTag": "HMI_SLOT_Z4_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z5.s1.occupied",
      "label": "Ocupacion de Z5-S1",
      "plcTag": "HMI_SLOT_Z5_S1_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z5.s2.occupied",
      "label": "Ocupacion de Z5-S2",
      "plcTag": "HMI_SLOT_Z5_S2_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z5.s3.occupied",
      "label": "Ocupacion de Z5-S3",
      "plcTag": "HMI_SLOT_Z5_S3_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z7.occupied",
      "label": "Ocupacion de Z7",
      "plcTag": "HMI_SLOT_Z7_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "slot.z8.occupied",
      "label": "Ocupacion de Z8",
      "plcTag": "HMI_SLOT_Z8_OCC",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "flow.z1_to_z2.active",
      "label": "Transferencia activa Z1 a Z2",
      "plcTag": "HMI_FLOW_Z1_Z2",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "flow.z2_to_z3s1.active",
      "label": "Transferencia activa Z2 a Z3-S1",
      "plcTag": "HMI_FLOW_Z2_Z3_S1",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "flow.z3s1_to_z3s2.active",
      "label": "Transferencia activa Z3-S1 a Z3-S2",
      "plcTag": "HMI_FLOW_Z3_S1_Z3_S2",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "flow.z3s2_to_z3s3.active",
      "label": "Transferencia activa Z3-S2 a Z3-S3",
      "plcTag": "HMI_FLOW_Z3_S2_Z3_S3",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "flow.z3s3_to_z4.active",
      "label": "Transferencia activa Z3-S3 a Z4",
      "plcTag": "HMI_FLOW_Z3_S3_Z4",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "flow.z4_to_z5s1.active",
      "label": "Transferencia activa Z4 a Z5-S1",
      "plcTag": "HMI_FLOW_Z4_Z5_S1",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "flow.z5s1_to_z5s2.active",
      "label": "Transferencia activa Z5-S1 a Z5-S2",
      "plcTag": "HMI_FLOW_Z5_S1_Z5_S2",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "flow.z5s2_to_z5s3.active",
      "label": "Transferencia activa Z5-S2 a Z5-S3",
      "plcTag": "HMI_FLOW_Z5_S2_Z5_S3",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "flow.z5s3_to_z7.active",
      "label": "Transferencia activa Z5-S3 a Z7",
      "plcTag": "HMI_FLOW_Z5_S3_Z7",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "flow.z7_to_z8.active",
      "label": "Transferencia activa Z7 a Z8",
      "plcTag": "HMI_FLOW_Z7_Z8",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z2.at_top",
      "label": "Elevador 1 en posicion alta",
      "plcTag": "HMI_Z2_LIFT_AT_TOP",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z2.at_bottom",
      "label": "Elevador 1 en posicion baja",
      "plcTag": "HMI_Z2_LIFT_AT_BOTTOM",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z2.moving_up",
      "label": "Elevador 1 subiendo",
      "plcTag": "HMI_Z2_LIFT_MOVING_UP",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z2.moving_down",
      "label": "Elevador 1 bajando",
      "plcTag": "HMI_Z2_LIFT_MOVING_DOWN",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z7.at_top",
      "label": "Elevador 2 en posicion alta",
      "plcTag": "HMI_Z7_LIFT_AT_TOP",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z7.at_bottom",
      "label": "Elevador 2 en posicion baja",
      "plcTag": "HMI_Z7_LIFT_AT_BOTTOM",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z7.moving_up",
      "label": "Elevador 2 subiendo",
      "plcTag": "HMI_Z7_LIFT_MOVING_UP",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z7.moving_down",
      "label": "Elevador 2 bajando",
      "plcTag": "HMI_Z7_LIFT_MOVING_DOWN",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.clamp_active",
      "label": "Clamp neumatico activo",
      "plcTag": "HMI_Z4_CLAMP_CLOSED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.dip_lowering",
      "label": "Sistema hidraulico descendiendo al tanque",
      "plcTag": "HMI_Z4_DIP_LOWERING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.dip_submerged",
      "label": "Estiba sumergida en tanque PQ",
      "plcTag": "HMI_Z4_DIP_SUBMERGED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.dip_raising",
      "label": "Sistema hidraulico regresando desde el tanque",
      "plcTag": "HMI_Z4_DIP_RAISING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.pump.running",
      "label": "Bomba de recirculacion activa en tanque PQ",
      "plcTag": "HMI_Z4_PUMP_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z6.group.running",
      "label": "Grupo de abanicos de secado activo",
      "plcTag": "HMI_Z6_GROUP_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "fb.command.busy",
      "label": "Existe comando en curso o cola ocupada",
      "plcTag": "HMI_FB_CMD_BUSY",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "fb.command.request_id",
      "label": "Consecutivo retenido por PLC para correlacionar la ultima solicitud valida",
      "plcTag": "HMI_FB_CMD_REQUEST_ID",
      "type": "uint32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "fb.command.last_code_id",
      "label": "Codigo entero del ultimo comando procesado por PLC",
      "plcTag": "HMI_FB_CMD_LAST_CODE",
      "type": "int32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "fb.command.last_target_id",
      "label": "Codigo entero del ultimo equipo objetivo procesado por PLC",
      "plcTag": "HMI_FB_CMD_LAST_TARGET",
      "type": "int32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "fb.command.last_status_id",
      "label": "Codigo entero del ultimo estado de comando publicado por PLC",
      "plcTag": "HMI_FB_CMD_LAST_STATUS",
      "type": "int32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "fb.command.last_reason_id",
      "label": "Codigo entero de la razon o rechazo del ultimo comando",
      "plcTag": "HMI_FB_CMD_LAST_REASON",
      "type": "int32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "sys.machine.fault_code_id",
      "label": "Codigo entero de falla general publicado por PLC",
      "plcTag": "HMI_SYS_FAULT_CODE",
      "type": "int32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "raw.alarm.word0",
      "label": "Palabra de alarmas bits 0..31",
      "plcTag": "HMI_ALM_WORD[0]",
      "type": "uint32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "raw.alarm.word1",
      "label": "Palabra de alarmas bits 32..63",
      "plcTag": "HMI_ALM_WORD[1]",
      "type": "uint32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "raw.alarm.word2",
      "label": "Palabra de alarmas bits 64..95",
      "plcTag": "HMI_ALM_WORD[2]",
      "type": "uint32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "raw.alarm.word3",
      "label": "Palabra de alarmas bits 96..127",
      "plcTag": "HMI_ALM_WORD[3]",
      "type": "uint32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "counter.z1_admit_total",
      "label": "Total retenido de estibas admitidas y confirmadas en Z1",
      "plcTag": "HMI_CNT_Z1_ADMIT_TOTAL",
      "type": "uint32",
      "category": "counter",
      "unit": "estibas",
      "access": "read"
    },
    {
      "key": "counter.z4_dip_cycle_total",
      "label": "Total retenido de ciclos completos de inmersion terminados en condicion segura",
      "plcTag": "HMI_CNT_Z4_DIP_CYCLE_TOTAL",
      "type": "uint32",
      "category": "counter",
      "unit": "ciclos",
      "access": "read"
    },
    {
      "key": "counter.z8_discharge_total",
      "label": "Total retenido de estibas descargadas completamente por Z8",
      "plcTag": "HMI_CNT_Z8_DISCHARGE_TOTAL",
      "type": "uint32",
      "category": "counter",
      "unit": "estibas",
      "access": "read"
    },
    {
      "key": "counter.machine_run_seconds",
      "label": "Segundos retenidos con la maquina efectivamente en marcha",
      "plcTag": "HMI_CNT_MACHINE_RUN_SECONDS",
      "type": "uint32",
      "category": "counter",
      "unit": "s",
      "access": "read"
    },
    {
      "key": "act.z4.clamp_ready",
      "label": "Clamp listo para operar",
      "plcTag": "HMI_Z4_CLAMP_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.clamp_opened",
      "label": "Clamp abierto",
      "plcTag": "HMI_Z4_CLAMP_OPENED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.clamp_faulted",
      "label": "Clamp en falla",
      "plcTag": "HMI_Z4_CLAMP_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.dip_home",
      "label": "Mecanismo hidraulico de inmersion en home",
      "plcTag": "HMI_Z4_DIP_HOME",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.cape.outfeed_occupied",
      "label": "CAPE reporta estiba presente en la salida",
      "plcTag": "HMI_CAPE_OUTFEED_OCC",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.cape.hold_active",
      "label": "Retencion activa publicada por CAPE",
      "plcTag": "HMI_CAPE_HOLD_ACTIVE",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.cape.hold_reason_id",
      "label": "Codigo entero de causa prioritaria de retencion CAPE",
      "plcTag": "HMI_CAPE_HOLD_REASON",
      "type": "int32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.z1.access_blocked",
      "label": "Acceso Z1 activo con bloqueo operativo aplicado",
      "plcTag": "HMI_Z1_ACCESS_BLOCKED",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.z1.access_reset_required",
      "label": "Acceso Z1 requiere reset operativo antes de reanudar",
      "plcTag": "HMI_Z1_ACCESS_RESET_REQUIRED",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.z3.s2.polish_mode",
      "label": "Estacion Z3-CV02 en modo de pulido",
      "plcTag": "HMI_Z3_CV02_POLISH_MODE",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.z3.s2.polish_waiting",
      "label": "Tarima esperando confirmacion de pulido en Z3-CV02",
      "plcTag": "HMI_Z3_CV02_POLISH_WAITING",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.z3.s2.polish_confirmed",
      "label": "Pulido confirmado y listo para liberacion automatica",
      "plcTag": "HMI_Z3_CV02_POLISH_CONFIRMED",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.hyd.shared.owner_id",
      "label": "Owner actual del recurso hidraulico compartido Z2/Z7",
      "plcTag": "HMI_HYD_SHARED_OWNER",
      "type": "int32",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.hyd.shared.ready",
      "label": "Recurso hidraulico compartido listo para ser adquirido",
      "plcTag": "HMI_HYD_SHARED_READY",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.hyd.shared.running",
      "label": "Recurso hidraulico compartido comandado o activo",
      "plcTag": "HMI_HYD_SHARED_RUNNING",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.hyd.shared.faulted",
      "label": "Falla del recurso hidraulico compartido Z2/Z7",
      "plcTag": "HMI_HYD_SHARED_FAULTED",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.hyd.shared.z2_waiting",
      "label": "Z2 esperando arbitraje o disponibilidad del recurso compartido",
      "plcTag": "HMI_HYD_SHARED_Z2_WAITING",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "state.hyd.shared.z7_waiting",
      "label": "Z7 esperando arbitraje o disponibilidad del recurso compartido",
      "plcTag": "HMI_HYD_SHARED_Z7_WAITING",
      "type": "bool",
      "category": "status",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z6.fan01.running",
      "label": "Drying Fan 1 en marcha",
      "plcTag": "HMI_Z6_FAN01_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z6.fan01.ready",
      "label": "Drying Fan 1 listo",
      "plcTag": "HMI_Z6_FAN01_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z6.fan01.faulted",
      "label": "Drying Fan 1 en falla",
      "plcTag": "HMI_Z6_FAN01_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z6.fan02.running",
      "label": "Drying Fan 2 en marcha",
      "plcTag": "HMI_Z6_FAN02_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z6.fan02.ready",
      "label": "Drying Fan 2 listo",
      "plcTag": "HMI_Z6_FAN02_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z6.fan02.faulted",
      "label": "Drying Fan 2 en falla",
      "plcTag": "HMI_Z6_FAN02_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z6.fan03.running",
      "label": "Drying Fan 3 en marcha",
      "plcTag": "HMI_Z6_FAN03_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z6.fan03.ready",
      "label": "Drying Fan 3 listo",
      "plcTag": "HMI_Z6_FAN03_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z6.fan03.faulted",
      "label": "Drying Fan 3 en falla",
      "plcTag": "HMI_Z6_FAN03_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "protect.z1.ok",
      "label": "Cadena de proteccion de motores saludable para Z1",
      "plcTag": "HMI_Z1_MOTOR_PROTECTION_OK",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "protect.z2.ok",
      "label": "Cadena de proteccion de motores saludable para Z2",
      "plcTag": "HMI_Z2_MOTOR_PROTECTION_OK",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "protect.z3.ok",
      "label": "Cadena de proteccion de motores saludable para Z3",
      "plcTag": "HMI_Z3_MOTOR_PROTECTION_OK",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "protect.z4.ok",
      "label": "Cadena de proteccion de motores saludable para Z4",
      "plcTag": "HMI_Z4_MOTOR_PROTECTION_OK",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "protect.z5.ok",
      "label": "Cadena de proteccion de motores saludable para Z5",
      "plcTag": "HMI_Z5_MOTOR_PROTECTION_OK",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "protect.z6.ok",
      "label": "Cadena de proteccion de motores saludable para Z6",
      "plcTag": "HMI_Z6_MOTOR_PROTECTION_OK",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "protect.z7.ok",
      "label": "Cadena de proteccion de motores saludable para Z7",
      "plcTag": "HMI_Z7_MOTOR_PROTECTION_OK",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "protect.z8.ok",
      "label": "Cadena de proteccion de motores saludable para Z8",
      "plcTag": "HMI_Z8_MOTOR_PROTECTION_OK",
      "type": "bool",
      "category": "sensor",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z1.running",
      "label": "Estado de marcha de transportador de entrada z1",
      "plcTag": "HMI_Z1_CV_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z1.ready",
      "label": "Estado listo de transportador de entrada z1",
      "plcTag": "HMI_Z1_CV_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z1.faulted",
      "label": "Estado de falla de transportador de entrada z1",
      "plcTag": "HMI_Z1_CV_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z2.cv.running",
      "label": "Estado de marcha de transportador de plataforma z2",
      "plcTag": "HMI_Z2_CV_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z2.cv.ready",
      "label": "Estado listo de transportador de plataforma z2",
      "plcTag": "HMI_Z2_CV_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z2.cv.faulted",
      "label": "Estado de falla de transportador de plataforma z2",
      "plcTag": "HMI_Z2_CV_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z3.s1.running",
      "label": "Estado de marcha de transportador de entrada z3-1",
      "plcTag": "HMI_Z3_CV01_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z3.s1.ready",
      "label": "Estado listo de transportador de entrada z3-1",
      "plcTag": "HMI_Z3_CV01_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z3.s1.faulted",
      "label": "Estado de falla de transportador de entrada z3-1",
      "plcTag": "HMI_Z3_CV01_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z3.s2.running",
      "label": "Estado de marcha de transportador de entrada z3-2",
      "plcTag": "HMI_Z3_CV02_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z3.s2.ready",
      "label": "Estado listo de transportador de entrada z3-2",
      "plcTag": "HMI_Z3_CV02_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z3.s2.faulted",
      "label": "Estado de falla de transportador de entrada z3-2",
      "plcTag": "HMI_Z3_CV02_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z3.s3.running",
      "label": "Estado de marcha de transportador de entrada z3-3",
      "plcTag": "HMI_Z3_CV03_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z3.s3.ready",
      "label": "Estado listo de transportador de entrada z3-3",
      "plcTag": "HMI_Z3_CV03_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z3.s3.faulted",
      "label": "Estado de falla de transportador de entrada z3-3",
      "plcTag": "HMI_Z3_CV03_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.cv.running",
      "label": "Estado de marcha de transportador de estación z4",
      "plcTag": "HMI_Z4_CV_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.cv.ready",
      "label": "Estado listo de transportador de estación z4",
      "plcTag": "HMI_Z4_CV_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.cv.faulted",
      "label": "Estado de falla de transportador de estación z4",
      "plcTag": "HMI_Z4_CV_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z5.s1.running",
      "label": "Estado de marcha de transportador de salida z5-1",
      "plcTag": "HMI_Z5_CV01_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z5.s1.ready",
      "label": "Estado listo de transportador de salida z5-1",
      "plcTag": "HMI_Z5_CV01_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z5.s1.faulted",
      "label": "Estado de falla de transportador de salida z5-1",
      "plcTag": "HMI_Z5_CV01_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z5.s2.running",
      "label": "Estado de marcha de transportador de salida z5-2",
      "plcTag": "HMI_Z5_CV02_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z5.s2.ready",
      "label": "Estado listo de transportador de salida z5-2",
      "plcTag": "HMI_Z5_CV02_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z5.s2.faulted",
      "label": "Estado de falla de transportador de salida z5-2",
      "plcTag": "HMI_Z5_CV02_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z5.s3.running",
      "label": "Estado de marcha de transportador de salida z5-3",
      "plcTag": "HMI_Z5_CV03_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z5.s3.ready",
      "label": "Estado listo de transportador de salida z5-3",
      "plcTag": "HMI_Z5_CV03_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z5.s3.faulted",
      "label": "Estado de falla de transportador de salida z5-3",
      "plcTag": "HMI_Z5_CV03_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z7.cv.running",
      "label": "Estado de marcha de transportador de plataforma z7",
      "plcTag": "HMI_Z7_CV_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z7.cv.ready",
      "label": "Estado listo de transportador de plataforma z7",
      "plcTag": "HMI_Z7_CV_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z7.cv.faulted",
      "label": "Estado de falla de transportador de plataforma z7",
      "plcTag": "HMI_Z7_CV_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z8.running",
      "label": "Estado de marcha de transportador de salida z8",
      "plcTag": "HMI_Z8_CV_RUNNING",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z8.ready",
      "label": "Estado listo de transportador de salida z8",
      "plcTag": "HMI_Z8_CV_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z8.faulted",
      "label": "Estado de falla de transportador de salida z8",
      "plcTag": "HMI_Z8_CV_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z2.ready",
      "label": "Elevador 1 listo para operar",
      "plcTag": "HMI_Z2_LIFT_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z2.faulted",
      "label": "Elevador 1 en falla",
      "plcTag": "HMI_Z2_LIFT_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z7.ready",
      "label": "Elevador 2 listo para operar",
      "plcTag": "HMI_Z7_LIFT_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z7.faulted",
      "label": "Elevador 2 en falla",
      "plcTag": "HMI_Z7_LIFT_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.ready",
      "label": "Estación de inmersión lista",
      "plcTag": "HMI_Z4_DIP_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.faulted",
      "label": "Estación de inmersión en falla",
      "plcTag": "HMI_Z4_DIP_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.pump.ready",
      "label": "Bomba de recirculación lista",
      "plcTag": "HMI_Z4_PUMP_READY",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    },
    {
      "key": "act.z4.pump.faulted",
      "label": "Bomba de recirculación en falla",
      "plcTag": "HMI_Z4_PUMP_FAULTED",
      "type": "bool",
      "category": "actuator",
      "unit": null,
      "access": "read"
    }
  ],
  "alarms": [
    {
      "key": "alarm.sys_estop",
      "label": "Paro de emergencia",
      "word": 0,
      "bit": 0,
      "source": "Alm_Sys_Estop",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.sys_phase",
      "label": "Fallo de fases",
      "word": 0,
      "bit": 4,
      "source": "Alm_Sys_Phase",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.wd_timeout",
      "label": "Pérdida de comunicación HMI–PLC",
      "word": 0,
      "bit": 7,
      "source": "Alm_Wd_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z1_protection",
      "label": "Protección de motores Z1",
      "word": 1,
      "bit": 0,
      "source": "Alm_Z1_Protection",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_z1_z2_timeout",
      "label": "Tiempo excedido de transferencia Z1 → Z2",
      "word": 1,
      "bit": 1,
      "source": "Alm_Lnk_Z1_Z2_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z2lift_movetimeout",
      "label": "Tiempo excedido del elevador 1",
      "word": 1,
      "bit": 2,
      "source": "Alm_Z2Lift_MoveTimeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z2lift_positionconflict",
      "label": "Posiciones contradictorias del elevador 1",
      "word": 1,
      "bit": 3,
      "source": "Alm_Z2Lift_PositionConflict",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_z2_z3s1_timeout",
      "label": "Tiempo excedido de transferencia Z2 → Z3S1",
      "word": 1,
      "bit": 5,
      "source": "Alm_Lnk_Z2_Z3S1_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_z3s1_z3s2_timeout",
      "label": "Tiempo excedido de transferencia Z3S1 → Z3S2",
      "word": 1,
      "bit": 7,
      "source": "Alm_Lnk_Z3S1_Z3S2_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_z3s2_z3s3_timeout",
      "label": "Tiempo excedido de transferencia Z3S2 → Z3S3",
      "word": 1,
      "bit": 9,
      "source": "Alm_Lnk_Z3S2_Z3S3_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_z3s3_z4_timeout",
      "label": "Tiempo excedido de transferencia Z3S3 → Z4",
      "word": 1,
      "bit": 11,
      "source": "Alm_Lnk_Z3S3_Z4_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z4clamp_timeout",
      "label": "Tiempo excedido de sujeción",
      "word": 1,
      "bit": 13,
      "source": "Alm_Z4Clamp_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z4clamp_positionconflict",
      "label": "Posiciones contradictorias de sujeción",
      "word": 1,
      "bit": 14,
      "source": "Alm_Z4Clamp_PositionConflict",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z4dip_timeout",
      "label": "Tiempo excedido de inmersión",
      "word": 1,
      "bit": 15,
      "source": "Alm_Z4Dip_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z4dip_positionconflict",
      "label": "Posiciones contradictorias de inmersión",
      "word": 1,
      "bit": 16,
      "source": "Alm_Z4Dip_PositionConflict",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z2_protection",
      "label": "Protección de motores Z2",
      "word": 1,
      "bit": 18,
      "source": "Alm_Z2_Protection",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z3_protection",
      "label": "Protección de motores Z3",
      "word": 1,
      "bit": 19,
      "source": "Alm_Z3_Protection",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z4_protection",
      "label": "Protección de motores Z4",
      "word": 1,
      "bit": 20,
      "source": "Alm_Z4_Protection",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_cape_z1_timeout",
      "label": "Tiempo excedido de transferencia Cape → Z1",
      "word": 1,
      "bit": 21,
      "source": "Alm_Lnk_Cape_Z1_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_z4_z5s1_timeout",
      "label": "Tiempo excedido de transferencia Z4 → Z5S1",
      "word": 1,
      "bit": 22,
      "source": "Alm_Lnk_Z4_Z5S1_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_z5s1_z5s2_timeout",
      "label": "Tiempo excedido de transferencia Z5S1 → Z5S2",
      "word": 2,
      "bit": 1,
      "source": "Alm_Lnk_Z5S1_Z5S2_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_z5s2_z5s3_timeout",
      "label": "Tiempo excedido de transferencia Z5S2 → Z5S3",
      "word": 2,
      "bit": 3,
      "source": "Alm_Lnk_Z5S2_Z5S3_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_z5s3_z7_timeout",
      "label": "Tiempo excedido de transferencia Z5S3 → Z7",
      "word": 2,
      "bit": 6,
      "source": "Alm_Lnk_Z5S3_Z7_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z7lift_movetimeout",
      "label": "Tiempo excedido del elevador 2",
      "word": 2,
      "bit": 10,
      "source": "Alm_Z7Lift_MoveTimeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z7lift_positionconflict",
      "label": "Posiciones contradictorias del elevador 2",
      "word": 2,
      "bit": 11,
      "source": "Alm_Z7Lift_PositionConflict",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.lnk_z7_z8_timeout",
      "label": "Tiempo excedido de transferencia Z7 → Z8",
      "word": 2,
      "bit": 13,
      "source": "Alm_Lnk_Z7_Z8_Timeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z8_protection",
      "label": "Protección de motores Z8",
      "word": 2,
      "bit": 14,
      "source": "Alm_Z8_Protection",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z8_dischargetimeout",
      "label": "Tiempo excedido de descarga",
      "word": 2,
      "bit": 15,
      "source": "Alm_Z8_DischargeTimeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z5_protection",
      "label": "Protección de motores Z5",
      "word": 2,
      "bit": 16,
      "source": "Alm_Z5_Protection",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z6_protection",
      "label": "Protección de motores Z6",
      "word": 2,
      "bit": 17,
      "source": "Alm_Z6_Protection",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z7_protection",
      "label": "Protección de motores Z7",
      "word": 2,
      "bit": 18,
      "source": "Alm_Z7_Protection",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z4_hydpressurelow",
      "label": "Presión hidráulica baja",
      "word": 3,
      "bit": 2,
      "source": "Alm_Z4_HydPressureLow",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z4dip_exposetimeout",
      "label": "Tiempo excedido de exposición PQ",
      "word": 3,
      "bit": 3,
      "source": "Alm_Z4Dip_ExposeTimeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z6_drytimeout",
      "label": "Tiempo excedido de secado",
      "word": 3,
      "bit": 4,
      "source": "Alm_Z6_DryTimeout",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.z4_pqlevellow",
      "label": "Nivel de solución PQ bajo",
      "word": 3,
      "bit": 5,
      "source": "Alm_Z4_PqLevelLow",
      "severity": "critical",
      "access": "read"
    },
    {
      "key": "alarm.hydshared_vfdnothealthy",
      "label": "Variador hidráulico sin disponibilidad",
      "word": 3,
      "bit": 6,
      "source": "Alm_HydShared_VfdNotHealthy",
      "severity": "critical",
      "access": "read"
    }
  ],
  "zones": [
    {
      "id": "Z1",
      "label": "Entrada y carga",
      "slots": [
        "slot.z1.occupied"
      ],
      "motion": [
        "act.z1.running"
      ],
      "faults": [
        "act.z1.faulted"
      ],
      "protection": "protect.z1.ok"
    },
    {
      "id": "Z2",
      "label": "Elevador 1",
      "slots": [
        "slot.z2.occupied"
      ],
      "motion": [
        "act.z2.cv.running",
        "act.z2.moving_up",
        "act.z2.moving_down"
      ],
      "faults": [
        "act.z2.faulted",
        "act.z2.cv.faulted"
      ],
      "protection": "protect.z2.ok"
    },
    {
      "id": "Z3",
      "label": "Transporte de entrada y pulido",
      "slots": [
        "slot.z3.s1.occupied",
        "slot.z3.s2.occupied",
        "slot.z3.s3.occupied"
      ],
      "motion": [
        "act.z3.s1.running",
        "act.z3.s2.running",
        "act.z3.s3.running"
      ],
      "faults": [
        "act.z3.s1.faulted",
        "act.z3.s2.faulted",
        "act.z3.s3.faulted"
      ],
      "protection": "protect.z3.ok"
    },
    {
      "id": "Z4",
      "label": "Inmersión PQ",
      "slots": [
        "slot.z4.occupied"
      ],
      "motion": [
        "act.z4.cv.running",
        "act.z4.pump.running",
        "act.z4.dip_lowering",
        "act.z4.dip_raising"
      ],
      "faults": [
        "act.z4.faulted",
        "act.z4.cv.faulted",
        "act.z4.pump.faulted",
        "act.z4.clamp_faulted"
      ],
      "protection": "protect.z4.ok"
    },
    {
      "id": "Z5",
      "label": "Transporte de salida",
      "slots": [
        "slot.z5.s1.occupied",
        "slot.z5.s2.occupied",
        "slot.z5.s3.occupied"
      ],
      "motion": [
        "act.z5.s1.running",
        "act.z5.s2.running",
        "act.z5.s3.running"
      ],
      "faults": [
        "act.z5.s1.faulted",
        "act.z5.s2.faulted",
        "act.z5.s3.faulted"
      ],
      "protection": "protect.z5.ok"
    },
    {
      "id": "Z6",
      "label": "Secado",
      "slots": [],
      "motion": [
        "act.z6.fan01.running",
        "act.z6.fan02.running",
        "act.z6.fan03.running"
      ],
      "faults": [
        "act.z6.fan01.faulted",
        "act.z6.fan02.faulted",
        "act.z6.fan03.faulted"
      ],
      "protection": "protect.z6.ok"
    },
    {
      "id": "Z7",
      "label": "Elevador 2",
      "slots": [
        "slot.z7.occupied"
      ],
      "motion": [
        "act.z7.cv.running",
        "act.z7.moving_up",
        "act.z7.moving_down"
      ],
      "faults": [
        "act.z7.faulted",
        "act.z7.cv.faulted"
      ],
      "protection": "protect.z7.ok"
    },
    {
      "id": "Z8",
      "label": "Salida y descarga",
      "slots": [
        "slot.z8.occupied"
      ],
      "motion": [
        "act.z8.running"
      ],
      "faults": [
        "act.z8.faulted"
      ],
      "protection": "protect.z8.ok"
    }
  ],
  "unavailable": [
    {
      "key": "analog.pq_ppm",
      "label": "Concentración PQ",
      "unit": "ppm",
      "reason": "El PLC actual publica un cero fijo; no existe medición validada."
    },
    {
      "key": "analog.hydraulic_oil_pressure_bar",
      "label": "Presión de aceite hidráulico",
      "unit": "bar",
      "reason": "El PLC actual publica un cero fijo; falta adquisición y calidad."
    },
    {
      "key": "production.oee",
      "label": "OEE",
      "unit": "%",
      "reason": "Faltan tiempo planificado, ciclo ideal y conteos de calidad aprobados."
    },
    {
      "key": "production.recipe",
      "label": "Receta aplicada",
      "unit": null,
      "reason": "Las recetas de SQL no tienen confirmación de aplicación en PLC."
    },
    {
      "key": "sys.bypass.observation",
      "label": "Bypass del PLC",
      "unit": null,
      "reason": "El contrato de lectura PQ actual no expone los bypass individuales. No se puede afirmar que estén inactivos."
    }
  ],
  "semantics": {
    "running": "Orden o estado lógico del PLC; no confirma giro físico del motor.",
    "occupancy": "Ocupación lógica confirmada por la secuencia PLC; no identifica cada tarima.",
    "counters": "Totales retenidos del PLC; no son totales diarios ni por turno.",
    "scene": "Posiciones extremas confirmadas y ocupación. Sin interpolación temporal por Internet.",
    "events": "Transiciones observadas; pueden perderse pulsos entre muestras.",
    "liquid": "Superficie de referencia del diseño; no representa un nivel medido."
  },
  "provenance": {
    "referenceDate": "2026-10-01",
    "contractSha256": "c0b01491f61a365d2ad9aa6d4eddb94e2c0b5eea55f204f325998c3d432190d0",
    "alarmPublisherSha256": "a53a12d2bd4c25e485e8d6d029de97ad2c76ddd25f103a3b354a0ce1dbf5bcba",
    "statusPublisherSha256": "1c995e5dbe4c6d73aed83a3fd46073b61147b7221904d7b4c2308724cf710a99"
  },
  "origin": "production-only",
  "transport": {
    "endpoint": "/api/ingest.php",
    "method": "POST",
    "format": "application/json",
    "signatureVersion": 1,
    "sourceAdapters": [
      "windows-hmi",
      "ethernet-device",
      "other"
    ],
    "mode": "production",
    "schema": "/assets/data/pq-telemetry.v1.schema.json",
    "suggestedPublishSeconds": 5,
    "commands": false
  }
}
