rust_openfmb_ops_protobuf/openfmb/
essmodule.rs

1/// Specialized 61850 ZBAT class  LN: Battery   Name: ZBAT
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct EssEventZbat {
4    /// UML inherited base object
5    #[prost(message, optional, tag="1")]
6    pub logical_node_for_event_and_status: ::std::option::Option<super::commonmodule::LogicalNodeForEventAndStatus>,
7    /// If true, the battery is in overcharge (voltage or current) condition.
8    #[prost(message, optional, tag="2")]
9    pub bat_hi: ::std::option::Option<super::commonmodule::StatusSps>,
10    /// If true, the battery voltage or charge has dropped below a pre-set level.
11    #[prost(message, optional, tag="3")]
12    pub bat_lo: ::std::option::Option<super::commonmodule::StatusSps>,
13    /// MISSING DOCUMENTATION!!!
14    #[prost(message, optional, tag="4")]
15    pub bat_st: ::std::option::Option<super::commonmodule::StatusSps>,
16    /// State of charge (in percentage)
17    #[prost(message, optional, tag="5")]
18    pub soc: ::std::option::Option<super::commonmodule::Mv>,
19    /// If stVal TRUE, the device is in standby.
20    #[prost(message, optional, tag="6")]
21    pub stdby: ::std::option::Option<super::commonmodule::StatusSps>,
22}
23/// ESS inverter high level function to maintain frequency within dead bands.
24#[derive(Clone, PartialEq, ::prost::Message)]
25pub struct FrequencyRegulation {
26    /// uint/0.01Hz  Frequency regulation is performed when the grid frequency goes beyond the dead
27    /// bands. The dead bands are defined as follows: Upper DB = frequency set point + dead band plus Lower
28    /// DB = frequency set point – dead band minus
29    #[prost(message, optional, tag="1")]
30    pub frequency_dead_band_minus: ::std::option::Option<f32>,
31    /// uint/0.01Hz  Frequency regulation is performed when the grid frequency goes beyond the dead
32    /// bands. The dead bands are defined as follows: Upper DB = frequency set point + dead band plus Lower
33    /// DB = frequency set point – dead band minus
34    #[prost(message, optional, tag="2")]
35    pub frequency_dead_band_plus: ::std::option::Option<f32>,
36    /// Control value (TRUE or FALSE)
37    #[prost(message, optional, tag="3")]
38    pub frequency_regulation_ctl: ::std::option::Option<bool>,
39    /// uint/0.01Hz  Target frequency
40    #[prost(message, optional, tag="4")]
41    pub frequency_set_point: ::std::option::Option<f32>,
42    /// uint/0.01Hz  Other modes of operation, such as peak shaving, smoothing or SOC management may
43    /// operate if the grid frequency is within the stable band. Upper stable band = frequency set point +
44    /// band plus Lower stable band = frequency set point – band minus
45    #[prost(message, optional, tag="5")]
46    pub grid_frequency_stable_band_minus: ::std::option::Option<f32>,
47    /// uint/0.01Hz  Other modes of operation, such as peak shaving, smoothing or SOC management may
48    /// operate if the grid frequency is within the stable band. Upper stable band = frequency set point +
49    /// band plus Lower stable band = frequency set point – band minus
50    #[prost(message, optional, tag="6")]
51    pub grid_frequency_stable_band_plus: ::std::option::Option<f32>,
52    /// uint/0.1%  The droops define the reaction of the PCS to under/over frequency events. A droop of
53    /// 1% means that the PCS will output 100% power if the frequency is 1% of the nominal frequency away
54    /// from the upper or lower dead band. The minimum droop value possible is 0.8%.
55    #[prost(message, optional, tag="7")]
56    pub over_frequency_droop: ::std::option::Option<f32>,
57    /// uint/0.1%  The droops define the reaction of the PCS to under/over voltage events. A droop of 1%
58    /// means that the PCS will output 100% power if the voltage is 1% of the nominal voltage away from the
59    /// upper or lower dead band. The minimum droop value possible is 0.8%.
60    #[prost(message, optional, tag="8")]
61    pub under_frequency_droop: ::std::option::Option<f32>,
62}
63/// ESS inverter high level function to maintain power level by charging or discharging
64#[derive(Clone, PartialEq, ::prost::Message)]
65pub struct PeakShaving {
66    /// uint/1kW  If the supervised power goes below this limit, the ESS will charge to maintain this limit.
67    #[prost(message, optional, tag="1")]
68    pub base_shaving_limit: ::std::option::Option<f32>,
69    /// Control value (TRUE or FALSE)
70    #[prost(message, optional, tag="2")]
71    pub peak_shaving_ctl: ::std::option::Option<bool>,
72    /// uint/1kW  If the supervised power goes above this limit, the ESS will discharge to maintain this
73    /// limit.
74    #[prost(message, optional, tag="3")]
75    pub peak_shaving_limit: ::std::option::Option<f32>,
76    /// uint/1kW  If the supervised power is between the band defined by these two limits then SOC
77    /// management is allowed.
78    #[prost(message, optional, tag="4")]
79    pub soc_management_allowed_high_limit: ::std::option::Option<f32>,
80    /// uint/1kW  If the supervised power is between the band defined by these two limits then SOC
81    /// management is allowed.
82    #[prost(message, optional, tag="5")]
83    pub soc_management_allowed_low_limit: ::std::option::Option<f32>,
84}
85/// ESS inverter high level function to shut down ESS if SOC exceeds high or low limits.
86#[derive(Clone, PartialEq, ::prost::Message)]
87pub struct SocLimit {
88    /// uint/1%  These limits define the operational range of the battery. If a lineup reaches the SOC
89    /// high limit, the inverter’s output is reduced to 0. Charging is then blocked until the hysteresis is
90    /// overcome. The same logic applies to the SOC low limit, except that after the ramp down is complete,
91    /// discharging is blocked until the hysteresis is overcome.
92    #[prost(message, optional, tag="1")]
93    pub soc_high_limit: ::std::option::Option<f32>,
94    /// uint/1%  These limits define the operational range of the battery. If a lineup reaches the SOC
95    /// high limit, the inverter’s output is reduced to 0. Charging is then blocked until the hysteresis is
96    /// overcome. The same logic applies to the SOC low limit, except that after the ramp down is complete,
97    /// discharging is blocked until the hysteresis is overcome.
98    #[prost(message, optional, tag="2")]
99    pub soc_high_limit_hysteresis: ::std::option::Option<f32>,
100    /// Control value (TRUE or FALSE)
101    #[prost(message, optional, tag="3")]
102    pub soc_limit_ctl: ::std::option::Option<bool>,
103    /// uint/1%  These limits define the operational range of the battery. If a lineup reaches the SOC
104    /// high limit, the inverter’s output is reduced to 0. Charging is then blocked until the hysteresis is
105    /// overcome. The same logic applies to the SOC low limit, except that after the ramp down is complete,
106    /// discharging is blocked until the hysteresis is overcome.
107    #[prost(message, optional, tag="4")]
108    pub soc_low_limit: ::std::option::Option<f32>,
109    /// uint/1%  These hysteresis define the release conditions for the block charge or discharge
110    /// initiated by the SOC limits.For example, assume a SOC low limit of 10% and a SOC low limit
111    /// hysteresis of 2% and that discharging is blocked because the batteries SOC reached the SOC low
112    /// limit, discharging will only be allowed again after the battery’s SOC reaches 13%.
113    #[prost(message, optional, tag="5")]
114    pub soc_low_limit_hysteresis: ::std::option::Option<f32>,
115}
116/// ESS inverter high level function to maintain SOC within dead bands
117#[derive(Clone, PartialEq, ::prost::Message)]
118pub struct SocManagement {
119    /// uint/1%  Define a dead band (DB) around the SOC set point. When the battery SOC goes outside the
120    /// dead band, the SOC management executes and bring the SOC back to the set point. Upper DB = set point
121    /// + dead band plus Lower DB = set point – dead band minus
122    #[prost(message, optional, tag="1")]
123    pub soc_dead_band_minus: ::std::option::Option<f32>,
124    /// uint/1%  Define a dead band (DB) around the SOC set point. When the battery SOC goes outside the
125    /// dead band, the SOC management executes and bring the SOC back to the set point. Upper DB = set point
126    /// + dead band plus Lower DB = set point – dead band minus
127    #[prost(message, optional, tag="2")]
128    pub soc_dead_band_plus: ::std::option::Option<f32>,
129    /// Control value (TRUE or FALSE)
130    #[prost(message, optional, tag="3")]
131    pub soc_management_ctl: ::std::option::Option<bool>,
132    /// uint/1kW  Set point used for SOC maintenance
133    #[prost(message, optional, tag="4")]
134    pub soc_power_set_point: ::std::option::Option<f32>,
135    /// uint/1%  SOC Target in percentage (%).
136    #[prost(message, optional, tag="5")]
137    pub soc_set_point: ::std::option::Option<f32>,
138}
139/// Voltage regulation function
140#[derive(Clone, PartialEq, ::prost::Message)]
141pub struct VoltageRegulation {
142    /// uint/0.1%  The droops define the reaction of the PCS to under/over voltage events. A droop of 1%
143    /// means that the PCS will output 100% power if the voltage is 1% of the nominal voltage away from the
144    /// upper or lower dead band. The minimum droop value possible is 0.8%.
145    #[prost(message, optional, tag="1")]
146    pub over_voltage_droop: ::std::option::Option<f32>,
147    /// uint/0.1%  The droops define the reaction of the PCS to under/over voltage events. A droop of 1%
148    /// means that the PCS will output 100% power if the voltage is 1% of the nominal voltage away from the
149    /// upper or lower dead band. The minimum droop value possible is 0.8%.
150    #[prost(message, optional, tag="2")]
151    pub under_voltage_droop: ::std::option::Option<f32>,
152    /// uint/0.1V  Voltage regulation is performed when the grid voltage goes beyond the dead bands. The
153    /// dead bands are defined as follows: Upper DB = voltage set point + dead band plus Lower DB = voltage
154    /// set point – dead band minus
155    #[prost(message, optional, tag="3")]
156    pub voltage_dead_band_minus: ::std::option::Option<f32>,
157    /// uint/0.1V  Voltage regulation is performed when the grid voltage goes beyond the dead bands. The
158    /// dead bands are defined as follows: Upper DB = voltage set point + dead band plus Lower DB = voltage
159    /// set point – dead band minus
160    #[prost(message, optional, tag="4")]
161    pub voltage_dead_band_plus: ::std::option::Option<f32>,
162    /// uint/0.1V  Other modes of operation, such as peak shaving, smoothing or SOC management may
163    /// operate if the grid frequency is within the stable band. Upper stable band = frequency set point +
164    /// band plus Lower stable band = frequency set point – band minus
165    #[prost(message, optional, tag="5")]
166    pub voltage_set_point: ::std::option::Option<f32>,
167}
168/// ESS inverter high level function to maintain voltage within droop dead bands.
169#[derive(Clone, PartialEq, ::prost::Message)]
170pub struct VoltageDroop {
171    /// Control value (TRUE or FALSE)
172    #[prost(message, optional, tag="1")]
173    pub voltage_droop_ctl: ::std::option::Option<bool>,
174    /// Voltage regulation
175    #[prost(message, optional, tag="2")]
176    pub voltage_regulation: ::std::option::Option<VoltageRegulation>,
177}
178/// ESS inverter high level function to maintain voltage within dead bands.
179#[derive(Clone, PartialEq, ::prost::Message)]
180pub struct VoltagePi {
181    /// Control value (TRUE or FALSE)
182    #[prost(message, optional, tag="1")]
183    pub voltage_pi_ctl: ::std::option::Option<bool>,
184    /// Voltage regulation
185    #[prost(message, optional, tag="2")]
186    pub voltage_regulation: ::std::option::Option<VoltageRegulation>,
187}
188/// ESS inverter high level function to reduce (smooth) charging or discharging rate of change.
189#[derive(Clone, PartialEq, ::prost::Message)]
190pub struct CapacityFirming {
191    /// Control value (TRUE or FALSE)
192    #[prost(message, optional, tag="1")]
193    pub capacity_firming_ctl: ::std::option::Option<bool>,
194    /// uint/1kW/min  If the supervised power increases at a rate higher that the rate defined by these
195    /// limits, the ESS will discharge/charge at an opposite dp/dt to reduce (smooth) the rate of change at
196    /// the PCC
197    #[prost(message, optional, tag="2")]
198    pub limit_negative_dp_dt: ::std::option::Option<f32>,
199    /// uint/1kW/min  If the supervised power increases at a rate higher that the rate defined by these
200    /// limits, the ESS will discharge/charge at an opposite dp/dt to reduce (smooth) the rate of change at
201    /// the PCC
202    #[prost(message, optional, tag="3")]
203    pub limit_positive_dp_dt: ::std::option::Option<f32>,
204}
205/// ESS inverter high level functions.
206#[derive(Clone, PartialEq, ::prost::Message)]
207pub struct EssFunction {
208    /// ESS inverter high level function to reduce (smooth) charging or discharging rate of change.
209    #[prost(message, optional, tag="1")]
210    pub capacity_firming: ::std::option::Option<CapacityFirming>,
211    /// ESS inverter high level function to maintain frequency within dead bands.
212    #[prost(message, optional, tag="2")]
213    pub frequency_regulation: ::std::option::Option<FrequencyRegulation>,
214    /// ESS inverter high level function to maintain power level by charging or discharging
215    #[prost(message, optional, tag="3")]
216    pub peak_shaving: ::std::option::Option<PeakShaving>,
217    /// ESS inverter high level function to shut down ESS if SOC exceeds high or low limits.
218    #[prost(message, optional, tag="4")]
219    pub soc_limit: ::std::option::Option<SocLimit>,
220    /// ESS inverter high level function to maintain SOC within dead bands
221    #[prost(message, optional, tag="5")]
222    pub soc_management: ::std::option::Option<SocManagement>,
223    /// ESS inverter high level function to maintain voltage within droop dead bands.
224    #[prost(message, optional, tag="6")]
225    pub voltage_droop: ::std::option::Option<VoltageDroop>,
226    /// ESS inverter high level function to maintain voltage within dead bands.
227    #[prost(message, optional, tag="7")]
228    pub voltage_pi: ::std::option::Option<VoltagePi>,
229}
230/// Point definition (Point)
231#[derive(Clone, PartialEq, ::prost::Message)]
232pub struct EssPointStatus {
233    /// Black start enable
234    #[prost(message, optional, tag="1")]
235    pub black_start_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
236    /// Enable frequency set point
237    #[prost(message, optional, tag="2")]
238    pub frequency_set_point_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
239    /// ESS function parameter
240    #[prost(message, optional, tag="3")]
241    pub function: ::std::option::Option<EssFunction>,
242    /// Grid connect mode
243    #[prost(message, optional, tag="4")]
244    pub mode: ::std::option::Option<super::commonmodule::EngGridConnectModeKind>,
245    /// Black start enable
246    #[prost(message, optional, tag="5")]
247    pub pct_hz_droop: ::std::option::Option<f32>,
248    /// Black start enable
249    #[prost(message, optional, tag="6")]
250    pub pct_v_droop: ::std::option::Option<f32>,
251    /// Ramp rates
252    #[prost(message, optional, tag="7")]
253    pub ramp_rates: ::std::option::Option<super::commonmodule::RampRate>,
254    /// Enable reactive power set point
255    #[prost(message, optional, tag="8")]
256    pub reactive_pwr_set_point_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
257    /// Enable real power set point
258    #[prost(message, optional, tag="9")]
259    pub real_pwr_set_point_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
260    /// ESS state
261    #[prost(message, optional, tag="10")]
262    pub state: ::std::option::Option<super::commonmodule::OptionalStateKind>,
263    /// Synchronize back to grid
264    #[prost(message, optional, tag="11")]
265    pub sync_back_to_grid: ::std::option::Option<super::commonmodule::ControlDpc>,
266    /// Transition to island on grid loss enable
267    #[prost(message, optional, tag="12")]
268    pub trans_to_islnd_on_grid_loss_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
269    /// Enable voltage set point
270    #[prost(message, optional, tag="13")]
271    pub voltage_set_point_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
272}
273/// Specialized 61850 ZGEN class
274#[derive(Clone, PartialEq, ::prost::Message)]
275pub struct EssEventAndStatusZgen {
276    /// UML inherited base object
277    #[prost(message, optional, tag="1")]
278    pub logical_node_for_event_and_status: ::std::option::Option<super::commonmodule::LogicalNodeForEventAndStatus>,
279    /// DC Power On/Off Status; True = DC power on
280    #[prost(message, optional, tag="2")]
281    pub aux_pwr_st: ::std::option::Option<super::commonmodule::StatusSps>,
282    /// MISSING DOCUMENTATION!!!
283    #[prost(message, optional, tag="3")]
284    pub dynamic_test: ::std::option::Option<super::commonmodule::EnsDynamicTestKind>,
285    /// Emergency stop
286    #[prost(message, optional, tag="4")]
287    pub emg_stop: ::std::option::Option<super::commonmodule::StatusSps>,
288    /// Generator is synchronized to EPS, or not; True = Synchronized
289    #[prost(message, optional, tag="5")]
290    pub gn_syn_st: ::std::option::Option<super::commonmodule::StatusSps>,
291    /// Point status
292    #[prost(message, optional, tag="6")]
293    pub point_status: ::std::option::Option<EssPointStatus>,
294}
295/// Specialized 61850 ZGEN class for ESS event profile
296#[derive(Clone, PartialEq, ::prost::Message)]
297pub struct EssEventZgen {
298    /// UML inherited base object
299    #[prost(message, optional, tag="1")]
300    pub e_ss_event_and_status_zgen: ::std::option::Option<EssEventAndStatusZgen>,
301}
302/// ESS event
303#[derive(Clone, PartialEq, ::prost::Message)]
304pub struct EssEvent {
305    /// UML inherited base object
306    #[prost(message, optional, tag="1")]
307    pub event_value: ::std::option::Option<super::commonmodule::EventValue>,
308    /// MISSING DOCUMENTATION!!!
309    #[prost(message, optional, tag="2")]
310    pub ess_event_zbat: ::std::option::Option<EssEventZbat>,
311    /// MISSING DOCUMENTATION!!!
312    #[prost(message, optional, tag="3")]
313    pub ess_event_zgen: ::std::option::Option<EssEventZgen>,
314}
315/// ESS event profile
316#[derive(Clone, PartialEq, ::prost::Message)]
317pub struct EssEventProfile {
318    /// UML inherited base object
319    #[prost(message, optional, tag="1")]
320    pub event_message_info: ::std::option::Option<super::commonmodule::EventMessageInfo>,
321    /// MISSING DOCUMENTATION!!!
322    #[prost(message, optional, tag="2")]
323    pub ess: ::std::option::Option<super::commonmodule::Ess>,
324    /// MISSING DOCUMENTATION!!!
325    #[prost(message, optional, tag="3")]
326    pub ess_event: ::std::option::Option<EssEvent>,
327    /// MISSING DOCUMENTATION!!!
328    #[prost(message, optional, tag="4")]
329    pub ied: ::std::option::Option<super::commonmodule::Ied>,
330}
331/// ESS reading value
332#[derive(Clone, PartialEq, ::prost::Message)]
333pub struct EssReading {
334    /// UML inherited base object
335    #[prost(message, optional, tag="1")]
336    pub conducting_equipment_terminal_reading: ::std::option::Option<super::commonmodule::ConductingEquipmentTerminalReading>,
337    /// MISSING DOCUMENTATION!!!
338    #[prost(message, optional, tag="2")]
339    pub phase_mmtn: ::std::option::Option<super::commonmodule::PhaseMmtn>,
340    /// MISSING DOCUMENTATION!!!
341    #[prost(message, optional, tag="3")]
342    pub reading_mmtr: ::std::option::Option<super::commonmodule::ReadingMmtr>,
343    /// MISSING DOCUMENTATION!!!
344    #[prost(message, optional, tag="4")]
345    pub reading_mmxu: ::std::option::Option<super::commonmodule::ReadingMmxu>,
346}
347/// ESS reading profile
348#[derive(Clone, PartialEq, ::prost::Message)]
349pub struct EssReadingProfile {
350    /// UML inherited base object
351    #[prost(message, optional, tag="1")]
352    pub reading_message_info: ::std::option::Option<super::commonmodule::ReadingMessageInfo>,
353    /// MISSING DOCUMENTATION!!!
354    #[prost(message, optional, tag="2")]
355    pub ess: ::std::option::Option<super::commonmodule::Ess>,
356    /// MISSING DOCUMENTATION!!!
357    #[prost(message, optional, tag="3")]
358    pub ess_reading: ::std::option::Option<EssReading>,
359    /// MISSING DOCUMENTATION!!!
360    #[prost(message, optional, tag="4")]
361    pub ied: ::std::option::Option<super::commonmodule::Ied>,
362}
363/// Specialized 61850 ZBAT
364#[derive(Clone, PartialEq, ::prost::Message)]
365pub struct EssStatusZbat {
366    /// UML inherited base object
367    #[prost(message, optional, tag="1")]
368    pub logical_node_for_event_and_status: ::std::option::Option<super::commonmodule::LogicalNodeForEventAndStatus>,
369    /// Battery system status &ndash; True: on
370    #[prost(message, optional, tag="2")]
371    pub bat_st: ::std::option::Option<super::commonmodule::StatusSps>,
372    /// MISSING DOCUMENTATION!!!
373    #[prost(message, optional, tag="3")]
374    pub gri_mod: ::std::option::Option<super::commonmodule::EngGridConnectModeKind>,
375    /// State of charge (in percentage)
376    #[prost(message, optional, tag="4")]
377    pub soc: ::std::option::Option<super::commonmodule::Mv>,
378    /// MISSING DOCUMENTATION!!!
379    #[prost(message, optional, tag="5")]
380    pub stdby: ::std::option::Option<super::commonmodule::StatusSps>,
381}
382/// Specialized 61850 ZGEN class
383#[derive(Clone, PartialEq, ::prost::Message)]
384pub struct EssStatusZgen {
385    /// UML inherited base object
386    #[prost(message, optional, tag="1")]
387    pub e_ss_event_and_status_zgen: ::std::option::Option<EssEventAndStatusZgen>,
388}
389/// ESS status
390#[derive(Clone, PartialEq, ::prost::Message)]
391pub struct EssStatus {
392    /// UML inherited base object
393    #[prost(message, optional, tag="1")]
394    pub status_value: ::std::option::Option<super::commonmodule::StatusValue>,
395    /// MISSING DOCUMENTATION!!!
396    #[prost(message, optional, tag="2")]
397    pub ess_status_zbat: ::std::option::Option<EssStatusZbat>,
398    /// MISSING DOCUMENTATION!!!
399    #[prost(message, optional, tag="3")]
400    pub ess_status_zgen: ::std::option::Option<EssStatusZgen>,
401}
402/// ESS status profile
403#[derive(Clone, PartialEq, ::prost::Message)]
404pub struct EssStatusProfile {
405    /// UML inherited base object
406    #[prost(message, optional, tag="1")]
407    pub status_message_info: ::std::option::Option<super::commonmodule::StatusMessageInfo>,
408    /// MISSING DOCUMENTATION!!!
409    #[prost(message, optional, tag="2")]
410    pub ess: ::std::option::Option<super::commonmodule::Ess>,
411    /// MISSING DOCUMENTATION!!!
412    #[prost(message, optional, tag="3")]
413    pub ess_status: ::std::option::Option<EssStatus>,
414    /// MISSING DOCUMENTATION!!!
415    #[prost(message, optional, tag="4")]
416    pub ied: ::std::option::Option<super::commonmodule::Ied>,
417}
418/// Point definition (Point)
419#[derive(Clone, PartialEq, ::prost::Message)]
420pub struct EssPoint {
421    /// Black start enable
422    #[prost(message, optional, tag="1")]
423    pub black_start_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
424    /// Enable frequency set point
425    #[prost(message, optional, tag="2")]
426    pub frequency_set_point_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
427    /// ESS function parameter
428    #[prost(message, optional, tag="3")]
429    pub function: ::std::option::Option<EssFunction>,
430    /// Grid connect mode
431    #[prost(message, optional, tag="4")]
432    pub mode: ::std::option::Option<super::commonmodule::EngGridConnectModeKind>,
433    /// Black start enable
434    #[prost(message, optional, tag="5")]
435    pub pct_hz_droop: ::std::option::Option<f32>,
436    /// Black start enable
437    #[prost(message, optional, tag="6")]
438    pub pct_v_droop: ::std::option::Option<f32>,
439    /// Ramp rates
440    #[prost(message, optional, tag="7")]
441    pub ramp_rates: ::std::option::Option<super::commonmodule::RampRate>,
442    /// Enable reactive power set point
443    #[prost(message, optional, tag="8")]
444    pub reactive_pwr_set_point_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
445    /// Enable real power set point
446    #[prost(message, optional, tag="9")]
447    pub real_pwr_set_point_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
448    /// Reset device
449    #[prost(message, optional, tag="10")]
450    pub reset: ::std::option::Option<super::commonmodule::ControlDpc>,
451    /// ESS state
452    #[prost(message, optional, tag="11")]
453    pub state: ::std::option::Option<super::commonmodule::OptionalStateKind>,
454    /// Synchronize back to grid
455    #[prost(message, optional, tag="12")]
456    pub sync_back_to_grid: ::std::option::Option<super::commonmodule::ControlDpc>,
457    /// Transition to island on grid loss enable
458    #[prost(message, optional, tag="13")]
459    pub trans_to_islnd_on_grid_loss_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
460    /// Enable voltage set point
461    #[prost(message, optional, tag="14")]
462    pub voltage_set_point_enabled: ::std::option::Option<super::commonmodule::ControlDpc>,
463    /// Start time
464    #[prost(message, optional, tag="15")]
465    pub start_time: ::std::option::Option<super::commonmodule::ControlTimestamp>,
466}
467/// Curve shape setting (FC=SP) (CSG_SP)
468#[derive(Clone, PartialEq, ::prost::Message)]
469pub struct Esscsg {
470    /// The array with the points specifying a curve shape.
471    #[prost(message, repeated, tag="1")]
472    pub crv_pts: ::std::vec::Vec<EssPoint>,
473}
474/// OpenFMB specialization for control schedule using:  LN: Schedule   Name: FSCH
475#[derive(Clone, PartialEq, ::prost::Message)]
476pub struct EssControlScheduleFsch {
477    /// Discrete value in ESSCSG type
478    #[prost(message, optional, tag="1")]
479    pub val_dcsg: ::std::option::Option<Esscsg>,
480}
481/// Specialized 61850 FSCC class.  LN: Schedule controller   Name: FSCC
482#[derive(Clone, PartialEq, ::prost::Message)]
483pub struct EssControlFscc {
484    /// UML inherited base object
485    #[prost(message, optional, tag="1")]
486    pub control_fscc: ::std::option::Option<super::commonmodule::ControlFscc>,
487    /// MISSING DOCUMENTATION!!!
488    #[prost(message, optional, tag="2")]
489    pub ess_control_schedule_fsch: ::std::option::Option<EssControlScheduleFsch>,
490}
491/// ESS control class
492#[derive(Clone, PartialEq, ::prost::Message)]
493pub struct EssControl {
494    /// UML inherited base object
495    #[prost(message, optional, tag="1")]
496    pub control_value: ::std::option::Option<super::commonmodule::ControlValue>,
497    /// MISSING DOCUMENTATION!!!
498    #[prost(message, optional, tag="2")]
499    pub check: ::std::option::Option<super::commonmodule::CheckConditions>,
500    /// MISSING DOCUMENTATION!!!
501    #[prost(message, optional, tag="3")]
502    pub ess_control_fscc: ::std::option::Option<EssControlFscc>,
503}
504/// ESS control profile
505#[derive(Clone, PartialEq, ::prost::Message)]
506pub struct EssControlProfile {
507    /// UML inherited base object
508    #[prost(message, optional, tag="1")]
509    pub control_message_info: ::std::option::Option<super::commonmodule::ControlMessageInfo>,
510    /// MISSING DOCUMENTATION!!!
511    #[prost(message, optional, tag="2")]
512    pub ess: ::std::option::Option<super::commonmodule::Ess>,
513    /// MISSING DOCUMENTATION!!!
514    #[prost(message, optional, tag="3")]
515    pub ess_control: ::std::option::Option<EssControl>,
516    /// MISSING DOCUMENTATION!!!
517    #[prost(message, optional, tag="4")]
518    pub ied: ::std::option::Option<super::commonmodule::Ied>,
519}