Mensajes DroneCAN

Esta sección documenta los mensajes DroneCAN que el Bridge publica o recibe.

Mensajes publicados

Todos los mensajes se publican a 1 Hz salvo LogMessage, que se emite por evento.

Mensaje

Instancias

Propósito

uavcan.protocol.NodeStatus

1

Salud general del Bridge.

uavcan.equipment.power.BatteryInfo

3

Telemetría de las dos baterías LiPo y de la reserva H2.

ardupilot.equipment.power.BatteryInfoAux

1

Información auxiliar de la reserva H2 que permite usar BATT3_*_MAH como porcentaje de H2 para configurar failsafes.

uavcan.equipment.power.CircuitStatus

5

Tensiones y corrientes individuales de cada bus, salida del convertidor DC-DC conectado a la pila de combustible y de la propia pila.

uavcan.protocol.debug.LogMessage

Evento

Mensajes de estado y alertas (ver catálogo completo de mensajes de log).

uavcan.protocol.NodeStatus

Campos relevantes:

  • mode: siempre OPERATIONAL.

  • health: OK, WARNING o ERROR según la situación del sistema. Es el campo que Mission Planner refleja en el estado del nodo.

  • vendor_specific_status_code: código de 16 bits con alertas combinadas del sistema (versión 2 del formato). La codificación es:

    Bits

    Campo

    Significado

    Byte alto (15:8)

    Nibbles de alertas de la pila (idénticos a la versión 1):

    15:14

    FC_uv

    Alerta de subtensión de la pila (0-2).

    13:12

    FC_ht

    Alerta de temperatura de la pila (0-2).

    11:10

    FC_fan

    Alerta del ventilador de la pila (0-2).

    9:8

    FC_h2p

    Alerta de H2 baja de la pila (0-2).

    Byte bajo (7:0)

    Bits de salud del bridge (nuevo en la versión 2):

    7

    INA219_FAULT

    Fallo de comunicación con algún sensor INA219.

    6

    FC_ALERT_FAULT

    Alerta de fallo de la pila (subtensión o temperatura).

    5

    NO_FC_TELEMETRY

    Sin telemetría de la pila de combustible.

    4

    PRESSURE_FAULT

    Fallo del sensor de presión de H2.

    3

    BATT_CRIT

    Tensión crítica en BATT1 o BATT2.

    2

    BATT_OVER

    Sobretensión en BATT1 o BATT2.

    1

    BATT_OC

    Sobrecorriente en BATT1 o BATT2.

    0

    NO_HYB_TELEMETRY

    Sin telemetría de hibridación.

    Los siguientes indicadores se publican exclusivamente a través de otros campos y no aparecen en vendor_specific_status_code: presión de H2 baja o crítica (BatteryInfoAux), batería baja (BatteryInfo.status_flags como NEED_SERVICE), desequilibrio entre buses, y estado inesperado de la pila.

uavcan.equipment.power.BatteryInfo

Se publican tres instancias:

battery_id

Significado

voltage

current

state_of_charge_pct

1

LiPo bus 1

tensión real

corriente real

derivado de la tensión

2

LiPo bus 2

tensión real

corriente real

derivado de la tensión

3

Reserva H2

0

0

derivado de la presión de H2

La instancia 3 publica voltage = 0 y current = 0 de manera intencional: así ArduPilot no integra una corriente irreal sobre el «depósito» de H2. La tensión y corriente eléctricas reales de la pila están en CircuitStatus (circuito 5).

Para battery_id = 3 también se publica:

  • temperature: temperatura de la pila.

  • full_charge_capacity_wh = 100 Wh (valor nominal sintético).

  • remaining_capacity_wh: 0-100 según el porcentaje de H2 disponible.

  • status_flags: incorpora avisos relevantes de la pila y del sensor de presión.

Para las baterías LiPo (battery_id = 1 y battery_id = 2), status_flags sigue la siguiente codificación:

Bit

Valor

Campo

Condición

0

1

IN_USE

La batería está entregando corriente al sistema (|I| > 0,2 A con histéresis 0,1 A).

5

32

OVERLOAD

Sobrecorriente o sobretensión de la batería.

7

128

NEED_SERVICE

Tensión crítica de la batería. Valor informativo: no dispara failsafe por sí mismo (los failsafes LiPo se configuran con BATT*_LOW_VOLT / BATT*_CRT_VOLT).

8

256

BMS_ERROR

Fallo de lectura del sensor INA219 de esa batería.

Para battery_id = 3 (reserva H2 / pila de combustible), status_flags utiliza la siguiente codificación:

Bit

Valor

Campo

Condición

0

1

IN_USE

La pila de combustible está en estado RUNNING.

8

256

BMS_ERROR

Error de comunicación con la pila de combustible.

ardupilot.equipment.power.BatteryInfoAux

Se publica una única instancia, asociada a battery_id = 3. Sus campos están a cero salvo:

  • battery_id = 3.

  • nominal_voltage = 1000 V (valor sintético).

El propósito de este mensaje es engañar al cálculo interno de consumed_mah de ArduPilot para que BATT3_LOW_MAH y BATT3_CRT_MAH se comporten como porcentaje de H2 con el fin de configurar failsafes basados en el hidrógeno restante en la botella. Ver reserva de H2 como porcentaje para el detalle.

uavcan.equipment.power.CircuitStatus

Se publican cinco instancias:

circuit_id

Significado

voltage

current

1

Salida DC-DC del bus 1

no medida

2

Bus 1

3

Salida DC-DC del bus 2

no medida

4

Bus 2

5

Pila de combustible

El circuito 5 además activa el flag de subtensión cuando la pila reporta Fault_UV. Estos valores no se ven directamente en Mission Planner sin el script Lua opcional; ver configurar Mission Planner.

uavcan.protocol.debug.LogMessage

Mensajes de estado y alertas emitidos por evento bajo distintos tags (h2:fc, h2:hyb, h2:can, h2:health, h2:sd, h2:ota). El catálogo completo, con texto literal, severidad y acción recomendada, está en catálogo completo de mensajes de log.

Mensajes recibidos

Mensaje

Propósito

uavcan.equipment.hardpoint.Command

Comando de inicio/parada de la pila enviado desde el autopiloto a través del relé configurado.

Servicios disponibles

Servicio

Uso

uavcan.protocol.GetNodeInfo

Identificación del nodo Bridge (nombre, versión SW/HW, UID).

uavcan.protocol.RestartNode

Reinicio remoto del Bridge.

uavcan.protocol.param.GetSet

Lectura/escritura de parámetros del Bridge.

uavcan.protocol.param.ExecuteOpcode

Guardar o restaurar parámetros.

uavcan.protocol.file.BeginFirmwareUpdate

Inicio de actualización de firmware (OTA).

uavcan.protocol.file.GetInfo / Read

Acceso a los logs internos en MicroSD (uso interno de soporte).