pub struct Status {
    pub heartbeat: Heartbeat,
    pub temperature_min_max: [Scalar; 2],
    pub available_charge: Scalar,
    pub error: Error,
    pub cell_voltages: Vec<f16, 255>,
}
Expand description

reg.udral.service.battery.Status.0.2

Size ranges from 16 to 526 bytes

This low-rate battery status should be published at least once per second.

Fields§

§heartbeat: Heartbeat

Note that the health code generally should not reflect the battery charge unless the service provider knows that the availability of energy in the battery is critical for the safe operation of the vehicle, which is usually not the case. For example, if the vehicle is equipped with several batteries that are discharged in series, one after another, the depletion of energy in the first battery is not a fault condition and it should not be reported as such. This follows from the good service design principles reviewed in https://opencyphal.org/guide.

The readiness state depicts the ability of the battery (or its power electronics) to deliver full rated power and whether the overdischarge protections are active. When the battery is not ENGAGED, it may limit the output power below the nominal rated value and disconnect the load should the charge level fall below the critical level. When the battery is ENGAGED, it is not permitted to limit the output power or energy regardless of the risk of damage. If the adaptive protection is not supported, the battery should always report its status as ENGAGED.

reg.udral.service.common.Heartbeat.0.1

Always aligned, size 16 bits

§temperature_min_max: [Scalar; 2]

The minimum and maximum readings of the pack temperature sensors. For example, if the pack is equipped with three distributed temperature sensors that read {288, 258.15, 360.5} K, the reported array value would be {258.15, 360.5} K. If there is only one temperature sensor, both elements shall be of the same value.

uavcan.si.unit.temperature.Scalar.1.0[2]

Always aligned, size 64 bits

§available_charge: Scalar

The estimated electric charge currently stored in the battery. This is intended for charging and maintenance only. Do not use this parameter for endurance prediction! Instead, use the correct energy type from the physics namespace. The depth of discharge (DoD), or the state of charge (SoC), can be derived by dividing this value by the nominal battery capacity reported in the Parameters message.

uavcan.si.unit.electric_charge.Scalar.1.0

Always aligned, size 32 bits

§error: Error

reg.udral.service.battery.Error.0.1

Always aligned, size 8 bits

§cell_voltages: Vec<f16, 255>

[volt] The voltages of individual cells in the battery pack.

saturated float16[<=255]

Always aligned, size ranges from 0 to 4080 bits

Implementations§

source§

impl Status

source

pub const MAX_CELLS: u8 = 255u8

Trait Implementations§

source§

impl DataType for Status

source§

const EXTENT_BYTES: Option<u32> = _

This type is delimited with an extent of 600 bytes.

source§

impl Deserialize for Status

source§

fn deserialize(cursor: &mut ReadCursor<'_>) -> Result<Self, DeserializeError>where Self: Sized,

Deserializes a value and returns it
source§

fn deserialize_from_bytes(bytes: &[u8]) -> Result<Self, DeserializeError>where Self: Sized,

A convenience function that creates a cursor around the provided bytes and calls deserialize
source§

impl Serialize for Status

source§

fn size_bits(&self) -> usize

Returns the size of the encoded form of this value, in bits Read more
source§

fn serialize(&self, cursor: &mut WriteCursor<'_>)

Serializes this value into a buffer Read more
source§

fn serialize_to_bytes(&self, bytes: &mut [u8])

A convenience function that creates a cursor around the provided bytes and calls serialize
source§

impl Message for Status

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.