sunspec/models/
model145.rs

1//! Extended Settings
2/// Extended Settings
3///
4/// Inverter controls extended settings
5#[derive(Debug)]
6#[cfg_attr(feature = "serde", derive(::serde::Serialize, ::serde::Deserialize))]
7pub struct Model145 {
8    /// Ramp Up Rate
9    ///
10    /// Ramp up rate as a percentage of max current.
11    pub nom_rmp_up_rte: Option<u16>,
12    /// NomRmpDnRte
13    ///
14    /// Ramp down rate as a percentage of max current.
15    pub nom_rmp_dn_rte: Option<u16>,
16    /// Emergency Ramp Up Rate
17    ///
18    /// Emergency ramp up rate as a percentage of max current.
19    pub emg_rmp_up_rte: Option<u16>,
20    /// Emergency Ramp Down Rate
21    ///
22    /// Emergency ramp down rate as a percentage of max current.
23    pub emg_rmp_dn_rte: Option<u16>,
24    /// Connect Ramp Up Rate
25    ///
26    /// Connect ramp up rate as a percentage of max current.
27    pub conn_rmp_up_rte: Option<u16>,
28    /// Connect Ramp Down Rate
29    ///
30    /// Connect ramp down rate as a percentage of max current.
31    pub conn_rmp_dn_rte: Option<u16>,
32    /// Default Ramp Rate
33    ///
34    /// Ramp rate specified in percent of max current.
35    pub a_gra: Option<u16>,
36    /// Ramp Rate Scale Factor
37    ///
38    /// Ramp Rate Scale Factor
39    pub rmp_sf: Option<i16>,
40}
41#[allow(missing_docs)]
42impl Model145 {
43    pub const NOM_RMP_UP_RTE: crate::Point<Self, Option<u16>> = crate::Point::new(0, 1, true);
44    pub const NOM_RMP_DN_RTE: crate::Point<Self, Option<u16>> = crate::Point::new(1, 1, true);
45    pub const EMG_RMP_UP_RTE: crate::Point<Self, Option<u16>> = crate::Point::new(2, 1, true);
46    pub const EMG_RMP_DN_RTE: crate::Point<Self, Option<u16>> = crate::Point::new(3, 1, true);
47    pub const CONN_RMP_UP_RTE: crate::Point<Self, Option<u16>> = crate::Point::new(4, 1, true);
48    pub const CONN_RMP_DN_RTE: crate::Point<Self, Option<u16>> = crate::Point::new(5, 1, true);
49    pub const A_GRA: crate::Point<Self, Option<u16>> = crate::Point::new(6, 1, true);
50    pub const RMP_SF: crate::Point<Self, Option<i16>> = crate::Point::new(7, 1, false);
51}
52impl crate::Model for Model145 {
53    const ID: u16 = 145;
54    fn from_data(data: &[u16]) -> Result<Self, crate::DecodeError> {
55        Ok(Self {
56            nom_rmp_up_rte: Self::NOM_RMP_UP_RTE.from_data(data)?,
57            nom_rmp_dn_rte: Self::NOM_RMP_DN_RTE.from_data(data)?,
58            emg_rmp_up_rte: Self::EMG_RMP_UP_RTE.from_data(data)?,
59            emg_rmp_dn_rte: Self::EMG_RMP_DN_RTE.from_data(data)?,
60            conn_rmp_up_rte: Self::CONN_RMP_UP_RTE.from_data(data)?,
61            conn_rmp_dn_rte: Self::CONN_RMP_DN_RTE.from_data(data)?,
62            a_gra: Self::A_GRA.from_data(data)?,
63            rmp_sf: Self::RMP_SF.from_data(data)?,
64        })
65    }
66    fn addr(models: &crate::Models) -> crate::ModelAddr<Self> {
67        models.m145
68    }
69}