rust_openfmb_ops_protobuf/openfmb/commonmodule.rs
1/// This is a root class to provide common identification for all classes needing identification and
2/// naming attributes.
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct IdentifiedObject {
5 /// MISSING DOCUMENTATION!!!
6 #[prost(message, optional, tag="1")]
7 pub description: ::std::option::Option<::std::string::String>,
8 /// Master resource identifier issued by a model authority. The mRID must semantically be a UUID as
9 /// specified in RFC 4122. The mRID is globally unique.
10 #[prost(message, optional, tag="2")]
11 pub m_rid: ::std::option::Option<::std::string::String>,
12 /// The name is any free human readable and possibly non unique text naming the object.
13 #[prost(message, optional, tag="3")]
14 pub name: ::std::option::Option<::std::string::String>,
15}
16/// An electrical connection point (AC or DC) to a piece of conducting equipment. Terminals are
17/// connected at physical connection points called connectivity nodes.
18#[derive(Clone, PartialEq, ::prost::Message)]
19pub struct AcdcTerminal {
20 /// UML inherited base object
21 #[prost(message, optional, tag="1")]
22 pub identified_object: ::std::option::Option<IdentifiedObject>,
23 /// The connected status is related to a bus-branch model and the topological node to terminal
24 /// relation. True implies the terminal is connected to the related topological node and false implies
25 /// it is not. In a bus-branch model, the connected status is used to tell if equipment is disconnected
26 /// without having to change the connectivity described by the topological node to terminal relation. A
27 /// valid case is that conducting equipment can be connected in one end and open in the other. In
28 /// particular for an AC line segment, where the reactive line charging can be significant, this is a
29 /// relevant case.
30 #[prost(message, optional, tag="2")]
31 pub connected: ::std::option::Option<bool>,
32 /// The orientation of the terminal connections for a multiple terminal conducting equipment. The
33 /// sequence numbering starts with 1 and additional terminals should follow in increasing order. The
34 /// first terminal is the "starting point" for a two terminal branch.
35 #[prost(message, optional, tag="3")]
36 pub sequence_number: ::std::option::Option<i32>,
37}
38#[derive(Clone, PartialEq, ::prost::Message)]
39pub struct OptionalUnitSymbolKind {
40 #[prost(enumeration="UnitSymbolKind", tag="1")]
41 pub value: i32,
42}
43#[derive(Clone, PartialEq, ::prost::Message)]
44pub struct OptionalUnitMultiplierKind {
45 #[prost(enumeration="UnitMultiplierKind", tag="1")]
46 pub value: i32,
47}
48/// MISSING DOCUMENTATION!!!
49#[derive(Clone, PartialEq, ::prost::Message)]
50pub struct ActivePower {
51 /// MISSING DOCUMENTATION!!!
52 #[prost(message, optional, tag="1")]
53 pub multiplier: ::std::option::Option<OptionalUnitMultiplierKind>,
54 /// MISSING DOCUMENTATION!!!
55 #[prost(message, optional, tag="2")]
56 pub unit: ::std::option::Option<OptionalUnitSymbolKind>,
57 /// MISSING DOCUMENTATION!!!
58 #[prost(message, optional, tag="3")]
59 pub value: ::std::option::Option<f32>,
60}
61#[derive(Clone, PartialEq, ::prost::Message)]
62pub struct OptionalPhaseCodeKind {
63 #[prost(enumeration="PhaseCodeKind", tag="1")]
64 pub value: i32,
65}
66/// Analogue value (AnalogueValue)
67#[derive(Clone, PartialEq, ::prost::Message)]
68pub struct AnalogueValue {
69 /// Floating point representation of the measured value. The formula to convert between 'f' and the
70 /// process value (pVal) shall be: <i>pVal</i>='f'*10exp('Unit.multiplier') in ['Unit.SIUnit'].
71 #[prost(message, optional, tag="1")]
72 pub f: ::std::option::Option<f32>,
73 /// Integer representation of the measured value. The formula to convert between 'i' and the process
74 /// value (pVal) shall be: <i>pVal</i>=(('i'*'ScaledValueConfig.scaleFactor')+'ScaledValueConfig.offset'
75 /// in ['Unit.SIUnit'].
76 #[prost(message, optional, tag="2")]
77 pub i: ::std::option::Option<i32>,
78}
79#[derive(Clone, PartialEq, ::prost::Message)]
80pub struct OptionalValidityKind {
81 #[prost(enumeration="ValidityKind", tag="1")]
82 pub value: i32,
83}
84/// Describes some reasons in case 'validity' is not 'good'.
85#[derive(Clone, PartialEq, ::prost::Message)]
86pub struct DetailQual {
87 /// (default=false) If true, the value may not be a correct value due to a reference being out of
88 /// calibration. The server shall decide if validity shall be set to invalid or questionable (used for
89 /// measurand information and binary counter information only).
90 #[prost(bool, tag="1")]
91 pub bad_reference: bool,
92 /// (default=false) If true, a supervision function has detected an internal or external failure.
93 #[prost(bool, tag="2")]
94 pub failure: bool,
95 /// (default=false) If true, the value does not meet the stated accuracy of the source. EXAMPLE The
96 /// measured value of power factor may be noisy (inaccurate) when the current is very small.
97 #[prost(bool, tag="3")]
98 pub inaccurate: bool,
99 /// (default=false) If true, an evaluation function has detected an inconsistency.
100 #[prost(bool, tag="4")]
101 pub inconsistent: bool,
102 /// (default=false) If true, an update is not made during a specific time interval. The value may be
103 /// an old value that may have changed in the meantime. This specific time interval may be defined by an
104 /// allowed-age attribute. NOTE "Fail silent" errors, where the equipment stops sending data, will cause
105 /// setting this flag to true. In this case, the last received information was correct.
106 #[prost(bool, tag="5")]
107 pub old_data: bool,
108 /// (default=false) To prevent overloading of event driven communication channels, it is desirable
109 /// to detect and suppress oscillating (fast changing) binary inputs. If a signal changes in a defined
110 /// time (tosc) twice in the same direction (from 0 to 1 or from 1 to 0), then it shall be defined as an
111 /// oscillation and this attribute shall be set to true. If a configured number of transient changes is
112 /// detected, they shall be suppressed. In this time, the 'Quality.validity' shall be set to
113 /// 'questionable'. If the signal is still in the oscillating state after the defined number of changes,
114 /// the value shall be left in the state it was in when this flag was set. In this case, the 'Quality
115 /// validity' shall be changed from 'questionable' to 'invalid' and kept so as long as the signal is
116 /// oscillating. If the configuration is such that all transient changes should be suppressed, the
117 /// 'Quality.validity' shall be set immediately to 'invalid' and this flag to true (used for status
118 /// information only).
119 #[prost(bool, tag="6")]
120 pub oscillatory: bool,
121 /// (default=false) If true, the attribute to which the quality has been associated is beyond a
122 /// predefined range of values. The server shall decide if validity shall be set to invalid or
123 /// questionable (used for measurand information only). EXAMPLE A measured value may exceed a predefined
124 /// range, however the selected data type can still represent the value, for example the data type is a
125 /// 16-bit unsigned integer, the predefined range is 0 to 40 000, if the value is between 40 001 and 65
126 /// 535 it is considered to be out of range.
127 #[prost(bool, tag="7")]
128 pub out_of_range: bool,
129 /// (default=false) If true, the value of the attribute to which the quality has been associated is
130 /// beyond the capability of being represented properly (used for measurand information only). EXAMPLE A
131 /// measured value may exceed the range that may be represented by the selected data type, for example
132 /// the data type is a 16-bit unsigned integer and the value exceeds 65 535.
133 #[prost(bool, tag="8")]
134 pub overflow: bool,
135}
136#[derive(Clone, PartialEq, ::prost::Message)]
137pub struct OptionalSourceKind {
138 #[prost(enumeration="SourceKind", tag="1")]
139 pub value: i32,
140}
141/// Quality contains data that describe the quality of the data from the server. Quality of the data
142/// is also related to the mode of a logical node. Further details can be found in IEC 61850-7-4. The
143/// different quality attributes are <i>not</i> independent.The default value shall be applied if the
144/// functionality of the related attribute is not supported. The mapping may specify to exclude the
145/// attribute from the message if it is not supported or if the default value applies.
146#[derive(Clone, PartialEq, ::prost::Message)]
147pub struct Quality {
148 /// Describes some reasons in case 'validity' is not 'good'.
149 #[prost(message, optional, tag="1")]
150 pub detail_qual: ::std::option::Option<DetailQual>,
151 /// (default=false) If true, further update of the value has been blocked by an operator. The value
152 /// shall be the information that was acquired before blocking. If this flag is set, then the
153 /// 'detailQual.oldData' shall also be set. The operator shall use the data attribute 'CDC.blkEna' to
154 /// block the update of the value. NOTE Both an operator as well as an automatic function may freeze
155 /// communication updating as well as input updating. In both cases, 'detailQual.oldData' will be set.
156 /// If the blocking is done by an operator, then this flag is set additionally, and an operator activity
157 /// is required to clear the condition.
158 #[prost(bool, tag="2")]
159 pub operator_blocked: bool,
160 /// (default=process) Defines the source of a value. NOTE 1 Substitution may be done locally or via
161 /// the communication services. In the second case, specific attributes with a FC=SV are used. NOTE 2
162 /// There are various means to clear a substitution. As an example, a substitution that was done
163 /// following an invalid condition may be cleared automatically if the invalid condition is cleared.
164 /// However, this is a local issue and therefore not within the scope of this standard.
165 #[prost(enumeration="SourceKind", tag="3")]
166 pub source: i32,
167 /// (default=false) If true, the value is a test value. The processing of the test quality in the
168 /// client shall be as described in IEC 61850-7-4. This bit shall be completely independent from the
169 /// other bits within the quality descriptor.
170 #[prost(bool, tag="4")]
171 pub test: bool,
172 /// Validity of the value, as condensed information for the client. In case this value is not
173 /// 'good', some reasons may be found in the 'detailQual'.
174 #[prost(enumeration="ValidityKind", tag="5")]
175 pub validity: i32,
176}
177#[derive(Clone, PartialEq, ::prost::Message)]
178pub struct OptionalTimeAccuracyKind {
179 #[prost(enumeration="TimeAccuracyKind", tag="1")]
180 pub value: i32,
181}
182/// Information about the quality of the time source of the sending IED.
183#[derive(Clone, PartialEq, ::prost::Message)]
184pub struct TimeQuality {
185 /// If true, the time source of the sending device is unreliable and the value of the time stamp
186 /// shall be ignored.
187 #[prost(bool, tag="1")]
188 pub clock_failure: bool,
189 /// If true, the time source of the sending device is not synchronised with the external UTC time.
190 #[prost(bool, tag="2")]
191 pub clock_not_synchronized: bool,
192 /// If true, the value in 'P_Timestamp.SecondSinceEpoch' contains all leap seconds occurred.
193 /// Otherwise, it does not take into account the leap seconds that occurred before the initialization of
194 /// the time source of the device. Instead, the seconds since start of the epoch are calculated from the
195 /// current date assuming a constant day length of 86 400 seconds. Note: If a UTC time master clock is
196 /// used and accessible, this value should always be true.
197 #[prost(bool, tag="3")]
198 pub leap_seconds_known: bool,
199 /// Information about the quality of the time source of the sending IED.
200 #[prost(enumeration="TimeAccuracyKind", tag="4")]
201 pub time_accuracy: i32,
202}
203/// UTC time with the epoch of midnight (00:00:00) of 1970-01-01. The presentation is defined in the
204/// SCSMs.The NULL time stamp has all fields set to 0 (zero).The relation between a timestamp value, the
205/// synchronization of an internal time with an external time source (for example, UTC time), and other
206/// information related to time model are available as requirements in Clause 21.
207#[derive(Clone, PartialEq, ::prost::Message)]
208pub struct Timestamp {
209 /// Fractional of the current second when the value of time stamp has been determined. It shall be
210 /// calculated as (SUM from i=0 to 31 of bi*2**-(i+1)).
211 #[prost(uint32, tag="1")]
212 pub fraction: u32,
213 /// Second since epoch (1970-01-01T00:00:00Z)
214 #[prost(uint64, tag="2")]
215 pub seconds: u64,
216 /// IEC61850 time quality
217 #[prost(message, optional, tag="3")]
218 pub tq: ::std::option::Option<TimeQuality>,
219}
220/// Unit definition (Unit)
221#[derive(Clone, PartialEq, ::prost::Message)]
222pub struct Unit {
223 /// (default='') Unit multiplier.
224 #[prost(message, optional, tag="1")]
225 pub multiplier: ::std::option::Option<OptionalUnitMultiplierKind>,
226 /// SI unit of measure.
227 #[prost(enumeration="UnitSymbolKind", tag="2")]
228 pub si_unit: i32,
229}
230/// Measured value (MV)
231#[derive(Clone, PartialEq, ::prost::Message)]
232pub struct Mv {
233 /// Value of the magnitude based on a deadband calculation from the instantaneous value 'instMag'.
234 /// The value of 'mag' shall be updated to the current instantaneous value 'instMag' when the value has
235 /// changed according to the configuration parameter 'db'. If 'db'=0, 'mag'='instMag'.NOTE 1 This value
236 /// is typically used to create reports for analogue values. Such a report sent "by exception" is not
237 /// comparable to the transfer of sampled measured values as supported by the CDC SAV.NOTE 2 This 'mag'
238 /// is not the same as 'mag' of the constructed attribute class 'Vector'.
239 #[prost(message, optional, tag="1")]
240 pub mag: ::std::option::Option<AnalogueValue>,
241 /// Quality of the values in 'instMag', 'mag', 'range'.
242 #[prost(message, optional, tag="2")]
243 pub q: ::std::option::Option<Quality>,
244 /// Timestamp of the last refresh of the value in 'mag' or of the last change of the value in any of
245 /// 'range' or 'q'.
246 #[prost(message, optional, tag="3")]
247 pub t: ::std::option::Option<Timestamp>,
248 /// Unit for: 'instMag', 'mag', 'subMag', 'rangeC'.
249 #[prost(message, optional, tag="4")]
250 pub units: ::std::option::Option<Unit>,
251}
252/// IEC61850 logical node.
253#[derive(Clone, PartialEq, ::prost::Message)]
254pub struct LogicalNode {
255 /// UML inherited base object
256 #[prost(message, optional, tag="1")]
257 pub identified_object: ::std::option::Option<IdentifiedObject>,
258}
259/// LN: Generic process I/O Name: GGIO
260#[derive(Clone, PartialEq, ::prost::Message)]
261pub struct AnalogStatusGgio {
262 /// UML inherited base object
263 #[prost(message, optional, tag="1")]
264 pub logical_node: ::std::option::Option<LogicalNode>,
265 /// Generic analogue input <i>n</i>.
266 #[prost(message, optional, tag="2")]
267 pub an_in: ::std::option::Option<Mv>,
268 /// Phase code
269 #[prost(message, optional, tag="3")]
270 pub phase: ::std::option::Option<OptionalPhaseCodeKind>,
271}
272/// Analogue value control (AnalogueValueCtl)
273#[derive(Clone, PartialEq, ::prost::Message)]
274pub struct AnalogueValueCtl {
275 /// Floating point representation of the measured value. See 'AnalogueValue.f'.
276 #[prost(message, optional, tag="1")]
277 pub f: ::std::option::Option<f32>,
278 /// Integer representation of the measured value. See 'AnalogueValue.i'.
279 #[prost(message, optional, tag="2")]
280 pub i: ::std::option::Option<i32>,
281}
282/// This is a root class similar to IdentifiedObject but without the mRID. The reason to separate
283/// the two classes is because the mRID may need to be defined as a separate key field for technology
284/// such as the DDS implementation.
285#[derive(Clone, PartialEq, ::prost::Message)]
286pub struct NamedObject {
287 /// MISSING DOCUMENTATION!!!
288 #[prost(message, optional, tag="1")]
289 pub description: ::std::option::Option<::std::string::String>,
290 /// The name is any free human readable and possibly non unique text naming the object.
291 #[prost(message, optional, tag="2")]
292 pub name: ::std::option::Option<::std::string::String>,
293}
294/// The parts of a power system that are physical devices, electronic or mechanical.
295#[derive(Clone, PartialEq, ::prost::Message)]
296pub struct ApplicationSystem {
297 /// UML inherited base object
298 #[prost(message, optional, tag="1")]
299 pub named_object: ::std::option::Option<NamedObject>,
300 /// MISSING DOCUMENTATION!!!
301 #[prost(string, tag="2")]
302 pub m_rid: std::string::String,
303}
304/// Analogue setting (FC=SP) (ASG_SP)
305#[derive(Clone, PartialEq, ::prost::Message)]
306pub struct Asg {
307 /// The value of the analogue setting.
308 #[prost(message, optional, tag="1")]
309 pub set_mag: ::std::option::Option<AnalogueValueCtl>,
310 /// Unit for 'setMag', 'minVal', 'maxVal', 'stepSize'.
311 #[prost(message, optional, tag="2")]
312 pub units: ::std::option::Option<Unit>,
313}
314/// Binary counter reading (BCR)
315#[derive(Clone, PartialEq, ::prost::Message)]
316pub struct Bcr {
317 /// Binary counter status represented as an integer value; wraps to 0 at the maximum or minimum
318 /// value of INT64.
319 #[prost(int64, tag="1")]
320 pub act_val: i64,
321 /// Quality of the values in 'actVal', 'frVal'.
322 #[prost(message, optional, tag="2")]
323 pub q: ::std::option::Option<Quality>,
324 /// Timestamp of the last change of value in 'actVal' or 'q'.
325 #[prost(message, optional, tag="3")]
326 pub t: ::std::option::Option<Timestamp>,
327 /// Unit for value in 'pulsQty'.
328 #[prost(message, optional, tag="4")]
329 pub units: ::std::option::Option<OptionalUnitSymbolKind>,
330}
331/// Specialized 61850 SPS class
332#[derive(Clone, PartialEq, ::prost::Message)]
333pub struct StatusSps {
334 /// MISSING DOCUMENTATION!!!
335 #[prost(message, optional, tag="1")]
336 pub q: ::std::option::Option<Quality>,
337 /// MISSING DOCUMENTATION!!!
338 #[prost(bool, tag="2")]
339 pub st_val: bool,
340 /// MISSING DOCUMENTATION!!!
341 #[prost(message, optional, tag="3")]
342 pub t: ::std::option::Option<Timestamp>,
343}
344/// LN: Generic process I/O Name: GGIO
345#[derive(Clone, PartialEq, ::prost::Message)]
346pub struct BooleanStatusGgio {
347 /// UML inherited base object
348 #[prost(message, optional, tag="1")]
349 pub logical_node: ::std::option::Option<LogicalNode>,
350 /// If true, indication <i>n</i> is present.
351 #[prost(message, optional, tag="2")]
352 pub ind: ::std::option::Option<StatusSps>,
353 /// Phase code
354 #[prost(message, optional, tag="3")]
355 pub phase: ::std::option::Option<OptionalPhaseCodeKind>,
356}
357/// IEC61850-7-2 Service parameter for conditions checking
358#[derive(Clone, PartialEq, ::prost::Message)]
359pub struct CheckConditions {
360 /// InterlockCheck is used for the device to be controlled to check if other devices are in proper
361 /// state for the control command. One example is that 2 circuit breakers on a busbar need to be
362 /// interlocked so one is open and one is closed, but not both on.
363 #[prost(message, optional, tag="1")]
364 pub interlock_check: ::std::option::Option<bool>,
365 /// To check if a device is synchrous to the system.
366 #[prost(message, optional, tag="2")]
367 pub synchro_check: ::std::option::Option<bool>,
368}
369/// Vector definition (Vector)
370#[derive(Clone, PartialEq, ::prost::Message)]
371pub struct Vector {
372 /// (range=[-180...180]) Angle of the complex value (Unit.SIUnit='deg' and Unit.multiplier='');
373 /// angle reference is defined in the context where this type is used.
374 #[prost(message, optional, tag="1")]
375 pub ang: ::std::option::Option<AnalogueValue>,
376 /// Magnitude of the complex value.
377 #[prost(message, optional, tag="2")]
378 pub mag: ::std::option::Option<AnalogueValue>,
379}
380/// Complex measured value (CMV)
381#[derive(Clone, PartialEq, ::prost::Message)]
382pub struct Cmv {
383 /// Complex value based on a deadband calculation from the instantaneous value 'instCVal.mag'. The
384 /// deadband calculation is done both on 'instCVal.mag' (based on 'db') and on 'instCVal.ang' (based on
385 /// 'dbAng'), independently. See 'MV.mag'.
386 #[prost(message, optional, tag="1")]
387 pub c_val: ::std::option::Option<Vector>,
388 /// Quality of the values in 'instCVal', 'cVal', 'range', ‘rangeAng’.
389 #[prost(message, optional, tag="2")]
390 pub q: ::std::option::Option<Quality>,
391 /// Timestamp of the last refresh of the value in 'cVal' or of the last change of the value in any
392 /// of 'range', 'rangeAng' or 'q'.
393 #[prost(message, optional, tag="3")]
394 pub t: ::std::option::Option<Timestamp>,
395 /// Units for: 'instCVal.mag', 'cVal.mag', 'subCVal.mag', 'rangeC'.
396 #[prost(message, optional, tag="4")]
397 pub units: ::std::option::Option<Unit>,
398}
399/// Asset representation of a ConductingEquipment.
400#[derive(Clone, PartialEq, ::prost::Message)]
401pub struct ConductingEquipment {
402 /// UML inherited base object
403 #[prost(message, optional, tag="1")]
404 pub named_object: ::std::option::Option<NamedObject>,
405 /// MISSING DOCUMENTATION!!!
406 #[prost(string, tag="2")]
407 pub m_rid: std::string::String,
408}
409/// An AC electrical connection point to a piece of conducting equipment. Terminals are connected at
410/// physical connection points called connectivity nodes.
411#[derive(Clone, PartialEq, ::prost::Message)]
412pub struct Terminal {
413 /// UML inherited base object
414 #[prost(message, optional, tag="1")]
415 pub a_cdc_terminal: ::std::option::Option<AcdcTerminal>,
416 /// Represents the normal network phasing condition. If the attribute is missing three phases (ABC
417 /// or ABCN) shall be assumed.
418 #[prost(message, optional, tag="2")]
419 pub phases: ::std::option::Option<OptionalPhaseCodeKind>,
420}
421/// Reading associated with an equipment such as a recloser.
422#[derive(Clone, PartialEq, ::prost::Message)]
423pub struct ConductingEquipmentTerminalReading {
424 /// MISSING DOCUMENTATION!!!
425 #[prost(message, optional, tag="1")]
426 pub terminal: ::std::option::Option<Terminal>,
427}
428/// Specialized DPC 61850 CDC class
429#[derive(Clone, PartialEq, ::prost::Message)]
430pub struct ControlDpc {
431 /// Service parameter that determines the control activity ('false' for off, 'true' for on).
432 #[prost(bool, tag="1")]
433 pub ctl_val: bool,
434}
435/// UTC time with the epoch of midnight (00:00:00) of 1970-01-01. The presentation is defined in the
436/// SCSMs.The NULL time stamp has all fields set to 0 (zero).The relation between a timestamp value, the
437/// synchronization of an internal time with an external time source (for example, UTC time), and other
438/// information related to time model are available as requirements in Clause 21. ControlTimestamp is a
439/// timestamp for future time point so it does not contain the time quality as the one contained in the
440/// normal Timestamp data type.
441#[derive(Clone, PartialEq, ::prost::Message)]
442pub struct ControlTimestamp {
443 /// Fractional of the current second when the value of time stamp has been determined. It shall be
444 /// calculated as (SUM from i=0 to 31 of bi*2**-(i+1)).
445 #[prost(uint32, tag="1")]
446 pub fraction: u32,
447 /// Second since epoch (1970-01-01T00:00:00Z)
448 #[prost(uint64, tag="2")]
449 pub seconds: u64,
450}
451#[derive(Clone, PartialEq, ::prost::Message)]
452pub struct OptionalScheduleParameterKind {
453 #[prost(enumeration="ScheduleParameterKind", tag="1")]
454 pub value: i32,
455}
456/// Grid connect mode kind
457#[derive(Clone, PartialEq, ::prost::Message)]
458pub struct EngScheduleParameter {
459 /// Schedule parameter type
460 #[prost(enumeration="ScheduleParameterKind", tag="1")]
461 pub schedule_parameter_type: i32,
462 /// MISSING DOCUMENTATION!!!
463 #[prost(float, tag="2")]
464 pub value: f32,
465}
466/// Point definition (Point)
467#[derive(Clone, PartialEq, ::prost::Message)]
468pub struct SchedulePoint {
469 /// Schedule parameter
470 #[prost(message, repeated, tag="1")]
471 pub schedule_parameter: ::std::vec::Vec<EngScheduleParameter>,
472 /// Start time
473 #[prost(message, optional, tag="2")]
474 pub start_time: ::std::option::Option<ControlTimestamp>,
475}
476/// Curve shape setting (FC=SP) (CSG_SP)
477#[derive(Clone, PartialEq, ::prost::Message)]
478pub struct ScheduleCsg {
479 /// The array with the points specifying a time schedule
480 #[prost(message, repeated, tag="1")]
481 pub sch_pts: ::std::vec::Vec<SchedulePoint>,
482}
483/// OpenFMB specialization for control schedule using: LN: Schedule Name: FSCH
484#[derive(Clone, PartialEq, ::prost::Message)]
485pub struct ControlScheduleFsch {
486 /// Analog CSG
487 #[prost(message, optional, tag="1")]
488 pub val_acsg: ::std::option::Option<ScheduleCsg>,
489}
490/// OpenFMB specialization for logical node control
491#[derive(Clone, PartialEq, ::prost::Message)]
492pub struct LogicalNodeForControl {
493 /// UML inherited base object
494 #[prost(message, optional, tag="1")]
495 pub logical_node: ::std::option::Option<LogicalNode>,
496}
497/// LN: Schedule controller Name: FSCC F: Function (generic) SC: Schedule Controller C:
498/// Control (execution)
499#[derive(Clone, PartialEq, ::prost::Message)]
500pub struct ControlFscc {
501 /// UML inherited base object
502 #[prost(message, optional, tag="1")]
503 pub logical_node_for_control: ::std::option::Option<LogicalNodeForControl>,
504 /// MISSING DOCUMENTATION!!!
505 #[prost(message, optional, tag="2")]
506 pub control_schedule_fsch: ::std::option::Option<ControlScheduleFsch>,
507 /// MISSING DOCUMENTATION!!!
508 #[prost(message, optional, tag="3")]
509 pub island_control_schedule_fsch: ::std::option::Option<ControlScheduleFsch>,
510}
511/// Integer status setting (FC=SP) (ING_SP)
512#[derive(Clone, PartialEq, ::prost::Message)]
513pub struct ControlIng {
514 /// The value of the status setting.
515 #[prost(int32, tag="1")]
516 pub set_val: i32,
517 /// Unit for 'setVal', 'minVal', 'maxVal', 'stepSize'.
518 #[prost(message, optional, tag="2")]
519 pub units: ::std::option::Option<Unit>,
520}
521/// <<statistics>> Integer controlled step position information (ISC)
522#[derive(Clone, PartialEq, ::prost::Message)]
523pub struct ControlIsc {
524 /// Service parameter that determines the control activity.
525 #[prost(int32, tag="1")]
526 pub ctl_val: i32,
527}
528/// Generic control message info.
529#[derive(Clone, PartialEq, ::prost::Message)]
530pub struct MessageInfo {
531 /// UML inherited base object
532 #[prost(message, optional, tag="1")]
533 pub identified_object: ::std::option::Option<IdentifiedObject>,
534 /// MISSING DOCUMENTATION!!!
535 #[prost(message, optional, tag="2")]
536 pub message_time_stamp: ::std::option::Option<Timestamp>,
537}
538/// Generic control message info.
539#[derive(Clone, PartialEq, ::prost::Message)]
540pub struct ControlMessageInfo {
541 /// UML inherited base object
542 #[prost(message, optional, tag="1")]
543 pub message_info: ::std::option::Option<MessageInfo>,
544}
545/// Controllable single point (SPC)
546#[derive(Clone, PartialEq, ::prost::Message)]
547pub struct ControlSpc {
548 /// Service parameter that determines the control activity ('false' for off or deactivation, 'true'
549 /// for on or activation).
550 #[prost(bool, tag="1")]
551 pub ctl_val: bool,
552}
553/// The value of a control command which could either be a setpoint or a control schedule in curve.
554/// The attribute modBlk is used to tag out a device. if it is TRUE, any setpoints and control schedule
555/// in a message payload should be ignored. It should also be presented in a status profile. Any
556/// modBlk value change (i.e. TRUE to FALSE and vice versa) should trigger an event.
557#[derive(Clone, PartialEq, ::prost::Message)]
558pub struct ControlValue {
559 /// UML inherited base object
560 #[prost(message, optional, tag="1")]
561 pub identified_object: ::std::option::Option<IdentifiedObject>,
562 /// The attribute modBlk is used to tag out a device. if it is TRUE, any setpoints and control
563 /// schedule in a message payload should be ignored. It should also be presented in a status profile.
564 /// Any modBlk value change (i.e. TRUE to FALSE and vice versa) should trigger an event.
565 #[prost(message, optional, tag="2")]
566 pub mod_blk: ::std::option::Option<bool>,
567}
568/// Interval between two date and time points.
569#[derive(Clone, PartialEq, ::prost::Message)]
570pub struct DateTimeInterval {
571 /// End date and time of this interval.
572 #[prost(message, optional, tag="1")]
573 pub end: ::std::option::Option<i64>,
574 /// Start date and time of this interval.
575 #[prost(message, optional, tag="2")]
576 pub start: ::std::option::Option<i64>,
577}
578/// Phase to phase related measured values of a three-phase system (DEL)
579#[derive(Clone, PartialEq, ::prost::Message)]
580pub struct Del {
581 /// Value of phase A to phase B measurement.
582 #[prost(message, optional, tag="1")]
583 pub phs_ab: ::std::option::Option<Cmv>,
584 /// Value of phase B to phase C measurement.
585 #[prost(message, optional, tag="2")]
586 pub phs_bc: ::std::option::Option<Cmv>,
587 /// Value of phase C to phase A measurement.
588 #[prost(message, optional, tag="3")]
589 pub phs_ca: ::std::option::Option<Cmv>,
590}
591/// Generic user of energy - a point of consumption on the power system model.
592#[derive(Clone, PartialEq, ::prost::Message)]
593pub struct EnergyConsumer {
594 /// UML inherited base object
595 #[prost(message, optional, tag="1")]
596 pub conducting_equipment: ::std::option::Option<ConductingEquipment>,
597 /// MISSING DOCUMENTATION!!!
598 #[prost(message, optional, tag="2")]
599 pub operating_limit: ::std::option::Option<::std::string::String>,
600}
601#[derive(Clone, PartialEq, ::prost::Message)]
602pub struct OptionalCalcMethodKind {
603 #[prost(enumeration="CalcMethodKind", tag="1")]
604 pub value: i32,
605}
606/// Calc method kind
607#[derive(Clone, PartialEq, ::prost::Message)]
608pub struct EngCalcMethodKind {
609 /// The value of the status setting.
610 #[prost(enumeration="CalcMethodKind", tag="1")]
611 pub set_val: i32,
612}
613#[derive(Clone, PartialEq, ::prost::Message)]
614pub struct OptionalGridConnectModeKind {
615 #[prost(enumeration="GridConnectModeKind", tag="1")]
616 pub value: i32,
617}
618/// Grid connect mode kind
619#[derive(Clone, PartialEq, ::prost::Message)]
620pub struct EngGridConnectModeKind {
621 /// The value of the status setting.
622 #[prost(enumeration="GridConnectModeKind", tag="1")]
623 pub set_val: i32,
624 /// MISSING DOCUMENTATION!!!
625 #[prost(message, optional, tag="2")]
626 pub set_val_extension: ::std::option::Option<::std::string::String>,
627}
628#[derive(Clone, PartialEq, ::prost::Message)]
629pub struct OptionalPfSignKind {
630 #[prost(enumeration="PfSignKind", tag="1")]
631 pub value: i32,
632}
633/// Enumerated status setting (FC=SP) (ENG_SP)
634#[derive(Clone, PartialEq, ::prost::Message)]
635pub struct EngPfSignKind {
636 /// The value of the status setting.
637 #[prost(enumeration="PfSignKind", tag="1")]
638 pub set_val: i32,
639}
640#[derive(Clone, PartialEq, ::prost::Message)]
641pub struct OptionalBehaviourModeKind {
642 #[prost(enumeration="BehaviourModeKind", tag="1")]
643 pub value: i32,
644}
645/// Behavior mode kind. ENS stands for Enumerated status
646#[derive(Clone, PartialEq, ::prost::Message)]
647pub struct EnsBehaviourModeKind {
648 /// Quality of the value in 'stVal'.
649 #[prost(message, optional, tag="1")]
650 pub q: ::std::option::Option<Quality>,
651 /// Value of the data.
652 #[prost(enumeration="BehaviourModeKind", tag="2")]
653 pub st_val: i32,
654 /// Timestamp of the last change or update event of 'stVal' or the last change of value in 'q'.
655 #[prost(message, optional, tag="3")]
656 pub t: ::std::option::Option<Timestamp>,
657}
658#[derive(Clone, PartialEq, ::prost::Message)]
659pub struct OptionalDerGeneratorStateKind {
660 #[prost(enumeration="DerGeneratorStateKind", tag="1")]
661 pub value: i32,
662}
663/// DER generation state kind. ENS stands for Enumerated status
664#[derive(Clone, PartialEq, ::prost::Message)]
665pub struct EnsDerGeneratorStateKind {
666 /// Quality of the value in 'stVal'.
667 #[prost(message, optional, tag="1")]
668 pub q: ::std::option::Option<Quality>,
669 /// Value of the data.
670 #[prost(enumeration="DerGeneratorStateKind", tag="2")]
671 pub st_val: i32,
672 /// Timestamp of the last change or update event of 'stVal' or the last change of value in 'q'.
673 #[prost(message, optional, tag="3")]
674 pub t: ::std::option::Option<Timestamp>,
675}
676#[derive(Clone, PartialEq, ::prost::Message)]
677pub struct OptionalDynamicTestKind {
678 #[prost(enumeration="DynamicTestKind", tag="1")]
679 pub value: i32,
680}
681/// Dynamic test kind. ENS stands for Enumerated status
682#[derive(Clone, PartialEq, ::prost::Message)]
683pub struct EnsDynamicTestKind {
684 /// Quality of the value in 'stVal'.
685 #[prost(message, optional, tag="1")]
686 pub q: ::std::option::Option<Quality>,
687 /// Value of the data.
688 #[prost(enumeration="DynamicTestKind", tag="2")]
689 pub st_val: i32,
690 /// Timestamp of the last change or update event of 'stVal' or the last change of value in 'q'.
691 #[prost(message, optional, tag="3")]
692 pub t: ::std::option::Option<Timestamp>,
693}
694/// Grid connect event & status mode kind
695#[derive(Clone, PartialEq, ::prost::Message)]
696pub struct EnsGridConnectModeKind {
697 /// Actual Grid Connection Mode
698 #[prost(enumeration="GridConnectModeKind", tag="1")]
699 pub st_val: i32,
700 /// MISSING DOCUMENTATION!!!
701 #[prost(string, tag="2")]
702 pub st_val_extension: std::string::String,
703}
704#[derive(Clone, PartialEq, ::prost::Message)]
705pub struct OptionalHealthKind {
706 #[prost(enumeration="HealthKind", tag="1")]
707 pub value: i32,
708}
709/// <> Enumerated status (ENS)
710#[derive(Clone, PartialEq, ::prost::Message)]
711pub struct EnsHealthKind {
712 /// Textual description of the data. In case it is used within the CDC LPL, the description refers
713 /// to the logical node.
714 #[prost(message, optional, tag="1")]
715 pub d: ::std::option::Option<::std::string::String>,
716 /// Value of the data.
717 #[prost(enumeration="HealthKind", tag="2")]
718 pub st_val: i32,
719}
720/// MISSING DOCUMENTATION!!!
721#[derive(Clone, PartialEq, ::prost::Message)]
722pub struct Ess {
723 /// UML inherited base object
724 #[prost(message, optional, tag="1")]
725 pub conducting_equipment: ::std::option::Option<ConductingEquipment>,
726}
727/// Generic event message information
728#[derive(Clone, PartialEq, ::prost::Message)]
729pub struct EventMessageInfo {
730 /// UML inherited base object
731 #[prost(message, optional, tag="1")]
732 pub message_info: ::std::option::Option<MessageInfo>,
733}
734/// Event value
735#[derive(Clone, PartialEq, ::prost::Message)]
736pub struct EventValue {
737 /// UML inherited base object
738 #[prost(message, optional, tag="1")]
739 pub identified_object: ::std::option::Option<IdentifiedObject>,
740}
741/// The source where a forecast value is issued.
742#[derive(Clone, PartialEq, ::prost::Message)]
743pub struct ForecastValueSource {
744 /// UML inherited base object
745 #[prost(message, optional, tag="1")]
746 pub identified_object: ::std::option::Option<IdentifiedObject>,
747}
748/// Intelligent Electronic Device is a device with a microprocessor that can contain one or more
749/// (IEC61850) SERVERs. In the context of IEC61850, IED could be an electronic protection device, a
750/// controller or even a laptop/desktop computer. <b>Modelling note</b>: This class is not explicitly
751/// defined in IEC61850-7-2 (but only in SCL: IEC61850-6). However, it is an important concept that
752/// deserves its place in the meta-model. When the meta-model gets instantiated from a direct link to an
753/// IED with an IEC61850 SERVER, we typically create an instance of the meta-model IED per connection.
754/// When the meta-model gets instantiated from an SCL file, there is the full description of IED and its
755/// functions.
756#[derive(Clone, PartialEq, ::prost::Message)]
757pub struct ForecastIed {
758 /// UML inherited base object
759 #[prost(message, optional, tag="1")]
760 pub forecast_value_source: ::std::option::Option<ForecastValueSource>,
761 /// For control, this is an application ID, unique within communication system, and if the message
762 /// is transformed between gateway the original source application ID should be kept.
763 #[prost(string, tag="2")]
764 pub source_application_id: std::string::String,
765 /// Message publication date time
766 #[prost(int64, tag="3")]
767 pub source_date_time: i64,
768}
769/// Forecast value
770#[derive(Clone, PartialEq, ::prost::Message)]
771pub struct ForecastValue {
772 /// UML inherited base object
773 #[prost(message, optional, tag="1")]
774 pub identified_object: ::std::option::Option<IdentifiedObject>,
775}
776/// Intelligent Electronic Device is a device with a microprocessor that can contain one or more
777/// (IEC61850) SERVERs. In the context of IEC61850, IED could be an electronic protection device, a
778/// controller or even a laptop/desktop computer. <b>Modelling note</b>: This class is not explicitly
779/// defined in IEC61850-7-2 (but only in SCL: IEC61850-6). However, it is an important concept that
780/// deserves its place in the meta-model. When the meta-model gets instantiated from a direct link to an
781/// IED with an IEC61850 SERVER, we typically create an instance of the meta-model IED per connection.
782/// When the meta-model gets instantiated from an SCL file, there is the full description of IED and its
783/// functions.
784#[derive(Clone, PartialEq, ::prost::Message)]
785pub struct Ied {
786 /// UML inherited base object
787 #[prost(message, optional, tag="1")]
788 pub identified_object: ::std::option::Option<IdentifiedObject>,
789}
790/// <<statistics>> Integer status (INS)
791#[derive(Clone, PartialEq, ::prost::Message)]
792pub struct StatusIns {
793 /// Quality of the value in 'stVal'.
794 #[prost(message, optional, tag="1")]
795 pub q: ::std::option::Option<Quality>,
796 /// Value of the data.
797 #[prost(int32, tag="2")]
798 pub st_val: i32,
799 /// Timestamp of the last change or update event of 'stVal' or the last change of value in 'q'.
800 #[prost(message, optional, tag="3")]
801 pub t: ::std::option::Option<Timestamp>,
802 /// Units for: 'stVal', 'subVal'.
803 #[prost(message, optional, tag="4")]
804 pub units: ::std::option::Option<Unit>,
805}
806/// Status expressed in integer based on IEC61850 GGIO.
807#[derive(Clone, PartialEq, ::prost::Message)]
808pub struct IntegerStatusGgio {
809 /// UML inherited base object
810 #[prost(message, optional, tag="1")]
811 pub logical_node: ::std::option::Option<LogicalNode>,
812 /// Generic integer status input <i>n</i>.
813 #[prost(message, optional, tag="2")]
814 pub int_in: ::std::option::Option<StatusIns>,
815 /// Phase code
816 #[prost(message, optional, tag="3")]
817 pub phase: ::std::option::Option<OptionalPhaseCodeKind>,
818}
819/// Logical node for event and status
820#[derive(Clone, PartialEq, ::prost::Message)]
821pub struct LogicalNodeForEventAndStatus {
822 /// UML inherited base object
823 #[prost(message, optional, tag="1")]
824 pub logical_node: ::std::option::Option<LogicalNode>,
825 /// Behavior of the function
826 #[prost(message, optional, tag="2")]
827 pub beh: ::std::option::Option<EnsBehaviourModeKind>,
828 /// Asset health
829 #[prost(message, optional, tag="3")]
830 pub ee_health: ::std::option::Option<EnsHealthKind>,
831}
832/// The current state for a measurement. A state value is an instance of a measurement from a
833/// specific source. Measurements can be associated with many state values, each representing a
834/// different source for the measurement.
835#[derive(Clone, PartialEq, ::prost::Message)]
836pub struct MeasurementValue {
837 /// UML inherited base object
838 #[prost(message, optional, tag="1")]
839 pub identified_object: ::std::option::Option<IdentifiedObject>,
840}
841/// Physical asset that performs the metering role of the usage point. Used for measuring
842/// consumption and detection of events.
843#[derive(Clone, PartialEq, ::prost::Message)]
844pub struct Meter {
845 /// UML inherited base object
846 #[prost(message, optional, tag="1")]
847 pub conducting_equipment: ::std::option::Option<ConductingEquipment>,
848}
849/// Generic event message information
850#[derive(Clone, PartialEq, ::prost::Message)]
851pub struct OptimizationMessageInfo {
852 /// UML inherited base object
853 #[prost(message, optional, tag="1")]
854 pub message_info: ::std::option::Option<MessageInfo>,
855}
856/// Specialized 61850 MMTN LN class
857#[derive(Clone, PartialEq, ::prost::Message)]
858pub struct ReadingMmtn {
859 /// UML inherited base object
860 #[prost(message, optional, tag="1")]
861 pub logical_node: ::std::option::Option<LogicalNode>,
862 /// Apparent energy demand (direction: from busbar).
863 #[prost(message, optional, tag="2")]
864 pub dmd_v_ah: ::std::option::Option<Bcr>,
865 /// Reactive energy demand (direction: from busbar).
866 #[prost(message, optional, tag="3")]
867 pub dmd_v_arh: ::std::option::Option<Bcr>,
868 /// Real energy demand (direction: from busbar).
869 #[prost(message, optional, tag="4")]
870 pub dmd_wh: ::std::option::Option<Bcr>,
871 /// Apparent energy supply (default direction: towards busbar).
872 #[prost(message, optional, tag="5")]
873 pub sup_v_ah: ::std::option::Option<Bcr>,
874 /// Reactive energy supply (default direction: towards busbar).
875 #[prost(message, optional, tag="6")]
876 pub sup_v_arh: ::std::option::Option<Bcr>,
877 /// Real energy supply (default direction: towards busbar).
878 #[prost(message, optional, tag="7")]
879 pub sup_wh: ::std::option::Option<Bcr>,
880 /// Net apparent energy since last reset.
881 #[prost(message, optional, tag="8")]
882 pub tot_v_ah: ::std::option::Option<Bcr>,
883 /// Net reactive energy since last reset.
884 #[prost(message, optional, tag="9")]
885 pub tot_v_arh: ::std::option::Option<Bcr>,
886 /// Net real energy since last reset.
887 #[prost(message, optional, tag="10")]
888 pub tot_wh: ::std::option::Option<Bcr>,
889}
890/// Specialized 61850 MMTN LN class
891#[derive(Clone, PartialEq, ::prost::Message)]
892pub struct PhaseMmtn {
893 /// MISSING DOCUMENTATION!!!
894 #[prost(message, optional, tag="1")]
895 pub phs_a: ::std::option::Option<ReadingMmtn>,
896 /// MISSING DOCUMENTATION!!!
897 #[prost(message, optional, tag="2")]
898 pub phs_ab: ::std::option::Option<ReadingMmtn>,
899 /// MISSING DOCUMENTATION!!!
900 #[prost(message, optional, tag="3")]
901 pub phs_b: ::std::option::Option<ReadingMmtn>,
902 /// MISSING DOCUMENTATION!!!
903 #[prost(message, optional, tag="4")]
904 pub phs_bc: ::std::option::Option<ReadingMmtn>,
905 /// MISSING DOCUMENTATION!!!
906 #[prost(message, optional, tag="5")]
907 pub phs_c: ::std::option::Option<ReadingMmtn>,
908 /// MISSING DOCUMENTATION!!!
909 #[prost(message, optional, tag="6")]
910 pub phs_ca: ::std::option::Option<ReadingMmtn>,
911}
912/// Grid connect mode kind
913#[derive(Clone, PartialEq, ::prost::Message)]
914pub struct RampRate {
915 /// MISSING DOCUMENTATION!!!
916 #[prost(message, optional, tag="1")]
917 pub negative_reactive_power_kv_ar_per_min: ::std::option::Option<f32>,
918 /// MISSING DOCUMENTATION!!!
919 #[prost(message, optional, tag="2")]
920 pub negative_real_power_kw_per_min: ::std::option::Option<f32>,
921 /// MISSING DOCUMENTATION!!!
922 #[prost(message, optional, tag="3")]
923 pub positive_reactive_power_kv_ar_per_min: ::std::option::Option<f32>,
924 /// MISSING DOCUMENTATION!!!
925 #[prost(message, optional, tag="4")]
926 pub positive_real_power_kw_per_min: ::std::option::Option<f32>,
927}
928/// Generic reading message information
929#[derive(Clone, PartialEq, ::prost::Message)]
930pub struct ReadingMessageInfo {
931 /// UML inherited base object
932 #[prost(message, optional, tag="1")]
933 pub message_info: ::std::option::Option<MessageInfo>,
934}
935/// Specialized 61850 MMTR class
936#[derive(Clone, PartialEq, ::prost::Message)]
937pub struct ReadingMmtr {
938 /// UML inherited base object
939 #[prost(message, optional, tag="1")]
940 pub logical_node: ::std::option::Option<LogicalNode>,
941 /// Apparent energy demand (direction: from busbar).
942 #[prost(message, optional, tag="2")]
943 pub dmd_v_ah: ::std::option::Option<Bcr>,
944 /// Reactive energy demand (direction: from busbar).
945 #[prost(message, optional, tag="3")]
946 pub dmd_v_arh: ::std::option::Option<Bcr>,
947 /// Real energy demand (direction: from busbar).
948 #[prost(message, optional, tag="4")]
949 pub dmd_wh: ::std::option::Option<Bcr>,
950 /// Apparent energy supply (default direction: towards busbar).
951 #[prost(message, optional, tag="5")]
952 pub sup_v_ah: ::std::option::Option<Bcr>,
953 /// Reactive energy supply (default direction: towards busbar).
954 #[prost(message, optional, tag="6")]
955 pub sup_v_arh: ::std::option::Option<Bcr>,
956 /// Real energy supply (default direction: towards busbar).
957 #[prost(message, optional, tag="7")]
958 pub sup_wh: ::std::option::Option<Bcr>,
959 /// Net apparent energy since last reset.
960 #[prost(message, optional, tag="8")]
961 pub tot_v_ah: ::std::option::Option<Bcr>,
962 /// Net reactive energy since last reset.
963 #[prost(message, optional, tag="9")]
964 pub tot_v_arh: ::std::option::Option<Bcr>,
965 /// Net real energy since last reset.
966 #[prost(message, optional, tag="10")]
967 pub tot_wh: ::std::option::Option<Bcr>,
968}
969/// Phase to ground/neutral related measured values of a three-phase system (WYE)
970#[derive(Clone, PartialEq, ::prost::Message)]
971pub struct Wye {
972 /// Net current, as the algebraic sum of the instantaneous values of currents flowing through all
973 /// live conductors and the neutral of a circuit at one point of the electrical installation ('phsA
974 /// instCVal'+'phsB.instCVal'+'phsC.instCVal'+'neut.instCVal').
975 #[prost(message, optional, tag="1")]
976 pub net: ::std::option::Option<Cmv>,
977 /// Value of the measured phase neutral. If a direct measurement of this value is not available, it
978 /// is acceptable to substitute an estimate computed by creating the algebraic sum of the instantaneous
979 /// values of currents flowing through all live conductors ('phsA.instCVal'+'phsB.instCVal'+'phsC
980 /// instCVal'); in that case, 'neut'='res'.
981 #[prost(message, optional, tag="2")]
982 pub neut: ::std::option::Option<Cmv>,
983 /// Value of phase A.
984 #[prost(message, optional, tag="3")]
985 pub phs_a: ::std::option::Option<Cmv>,
986 /// Value of phase B.
987 #[prost(message, optional, tag="4")]
988 pub phs_b: ::std::option::Option<Cmv>,
989 /// Value of phase C.
990 #[prost(message, optional, tag="5")]
991 pub phs_c: ::std::option::Option<Cmv>,
992}
993/// Specialized 61850 MMXU LN class
994#[derive(Clone, PartialEq, ::prost::Message)]
995pub struct ReadingMmxu {
996 /// UML inherited base object
997 #[prost(message, optional, tag="1")]
998 pub logical_node: ::std::option::Option<LogicalNode>,
999 /// Phase to ground/phase to neutral three phase currents.
1000 #[prost(message, optional, tag="2")]
1001 pub a: ::std::option::Option<Wye>,
1002 /// Kind of statistical calculation, specifying how the data attributes that represent analogue
1003 /// values have been calculated. The calculation method shall be the same for all data objects of the
1004 /// logical node instance.If the value is 'PEAK_FUNDAMENTAL', angle may be present in a data object of
1005 /// complex measured value type (CMV, such as in WYE, DEL, etc.), otherwise angle is not used (if
1006 /// ‘TRUE_RMS’ and ‘RMS_FUNDAMENTAL’).If the value is 'unspecified', the dependent data objects may be
1007 /// meaningless.
1008 #[prost(message, optional, tag="3")]
1009 pub clc_mth: ::std::option::Option<EngCalcMethodKind>,
1010 /// Frequency [Hz].
1011 #[prost(message, optional, tag="4")]
1012 pub hz: ::std::option::Option<Mv>,
1013 /// Phase to ground/phase to neutral power factors.The power factor is defined as P (active power) /
1014 /// S (apparent power), so the value range is 0...1. If current (I) and voltage (U) are sinusoidal and
1015 /// displaced by the angle phi, then the power factor is |cos phi|, again with the value range 0...1.
1016 /// Therefore, for the power factor per phase, value is contained in 'mag' and 'ang' is not used.
1017 #[prost(message, optional, tag="5")]
1018 pub pf: ::std::option::Option<Wye>,
1019 /// Sign convention for power factor 'PF' (and reactive power 'VAr').
1020 #[prost(message, optional, tag="6")]
1021 pub pf_sign: ::std::option::Option<EngPfSignKind>,
1022 /// Phase to ground (line) voltages.
1023 #[prost(message, optional, tag="7")]
1024 pub ph_v: ::std::option::Option<Wye>,
1025 /// Phase to phase voltages.
1026 #[prost(message, optional, tag="8")]
1027 pub ppv: ::std::option::Option<Del>,
1028 /// Phase to ground/phase to neutral apparent powers S.
1029 #[prost(message, optional, tag="9")]
1030 pub va: ::std::option::Option<Wye>,
1031 /// Phase to ground/phase to neutral reactive powers Q.
1032 #[prost(message, optional, tag="10")]
1033 pub v_ar: ::std::option::Option<Wye>,
1034 /// Phase to ground/phase to neutral real powers P.
1035 #[prost(message, optional, tag="11")]
1036 pub w: ::std::option::Option<Wye>,
1037}
1038#[derive(Clone, PartialEq, ::prost::Message)]
1039pub struct OptionalDbPosKind {
1040 #[prost(enumeration="DbPosKind", tag="1")]
1041 pub value: i32,
1042}
1043/// Specialized 61850 DPS class
1044#[derive(Clone, PartialEq, ::prost::Message)]
1045pub struct StatusDps {
1046 /// Quality of the value in 'stVal'.
1047 #[prost(message, optional, tag="1")]
1048 pub q: ::std::option::Option<Quality>,
1049 /// Status value of the controllable data object.
1050 #[prost(enumeration="DbPosKind", tag="2")]
1051 pub st_val: i32,
1052 /// Timestamp of the last change of the value in any of 'stVal' or 'q'.
1053 #[prost(message, optional, tag="3")]
1054 pub t: ::std::option::Option<Timestamp>,
1055}
1056/// OpenFMB specialization for breaker, recloser and switch status and event profiles: LN: Circuit
1057/// breaker Name: XCBR
1058#[derive(Clone, PartialEq, ::prost::Message)]
1059pub struct StatusAndEventXcbr {
1060 /// UML inherited base object
1061 #[prost(message, optional, tag="1")]
1062 pub logical_node_for_event_and_status: ::std::option::Option<LogicalNodeForEventAndStatus>,
1063 /// MISSING DOCUMENTATION!!!
1064 #[prost(message, optional, tag="2")]
1065 pub dynamic_test: ::std::option::Option<EnsDynamicTestKind>,
1066 /// MISSING DOCUMENTATION!!!
1067 #[prost(message, optional, tag="3")]
1068 pub pos: ::std::option::Option<StatusDps>,
1069}
1070/// <<statistics>> Integer controlled step position information (ISC)
1071#[derive(Clone, PartialEq, ::prost::Message)]
1072pub struct StatusIsc {
1073 /// Quality of the value in 'valWTr'.
1074 #[prost(message, optional, tag="1")]
1075 pub q: ::std::option::Option<Quality>,
1076 /// Status value
1077 #[prost(int32, tag="2")]
1078 pub st_val: i32,
1079 /// Timestamp of the last change of the value in any of 'valWTr' or 'q'.
1080 #[prost(message, optional, tag="3")]
1081 pub t: ::std::option::Option<Timestamp>,
1082}
1083/// Generic status message information
1084#[derive(Clone, PartialEq, ::prost::Message)]
1085pub struct StatusMessageInfo {
1086 /// UML inherited base object
1087 #[prost(message, optional, tag="1")]
1088 pub message_info: ::std::option::Option<MessageInfo>,
1089}
1090/// Controllable single point (SPC)
1091#[derive(Clone, PartialEq, ::prost::Message)]
1092pub struct StatusSpc {
1093 /// Quality of the value in 'stVal'.
1094 #[prost(message, optional, tag="1")]
1095 pub q: ::std::option::Option<Quality>,
1096 /// Status value of the controllable data object.
1097 #[prost(bool, tag="2")]
1098 pub st_val: bool,
1099 /// Timestamp of the last change of the value in any of 'stVal' or 'q'.
1100 #[prost(message, optional, tag="3")]
1101 pub t: ::std::option::Option<Timestamp>,
1102}
1103/// Status value
1104#[derive(Clone, PartialEq, ::prost::Message)]
1105pub struct StatusValue {
1106 /// UML inherited base object
1107 #[prost(message, optional, tag="1")]
1108 pub identified_object: ::std::option::Option<IdentifiedObject>,
1109}
1110/// Visible string status (VSS)
1111#[derive(Clone, PartialEq, ::prost::Message)]
1112pub struct Vss {
1113 /// Quality of the value in 'stVal'.
1114 #[prost(message, optional, tag="1")]
1115 pub q: ::std::option::Option<Quality>,
1116 /// Value of the data.
1117 #[prost(string, tag="2")]
1118 pub st_val: std::string::String,
1119 /// Timestamp of the last change of the value in any of 'stVal' or 'q'.
1120 #[prost(message, optional, tag="3")]
1121 pub t: ::std::option::Option<Timestamp>,
1122}
1123/// LN: Generic process I/O Name: GGIO
1124#[derive(Clone, PartialEq, ::prost::Message)]
1125pub struct StringStatusGgio {
1126 /// UML inherited base object
1127 #[prost(message, optional, tag="1")]
1128 pub logical_node: ::std::option::Option<LogicalNode>,
1129 /// Phase code
1130 #[prost(message, optional, tag="2")]
1131 pub phase: ::std::option::Option<OptionalPhaseCodeKind>,
1132 /// String status
1133 #[prost(message, optional, tag="3")]
1134 pub str_in: ::std::option::Option<Vss>,
1135}
1136/// Point definition (Point)
1137#[derive(Clone, PartialEq, ::prost::Message)]
1138pub struct SwitchPoint {
1139 /// Switch position
1140 #[prost(message, optional, tag="1")]
1141 pub pos: ::std::option::Option<ControlDpc>,
1142 /// Start time
1143 #[prost(message, optional, tag="2")]
1144 pub start_time: ::std::option::Option<ControlTimestamp>,
1145}
1146/// Curve shape setting (FC=SP) (CSG_SP)
1147#[derive(Clone, PartialEq, ::prost::Message)]
1148pub struct SwitchCsg {
1149 /// The array with the points specifying a curve shape.
1150 #[prost(message, repeated, tag="1")]
1151 pub crv_pts: ::std::vec::Vec<SwitchPoint>,
1152}
1153/// OpenFMB specialization for control schedule using: LN: Schedule Name: FSCH
1154#[derive(Clone, PartialEq, ::prost::Message)]
1155pub struct SwitchControlScheduleFsch {
1156 /// Discrete value in SwitchCSG type
1157 #[prost(message, optional, tag="1")]
1158 pub val_dcsg: ::std::option::Option<SwitchCsg>,
1159}
1160#[derive(Clone, PartialEq, ::prost::Message)]
1161pub struct OptionalStateKind {
1162 #[prost(enumeration="StateKind", tag="1")]
1163 pub value: i32,
1164}
1165/// The units defined for usage in the CIM.
1166#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1167#[repr(i32)]
1168pub enum UnitSymbolKind {
1169 /// Dimension less quantity, e.g. count, per unit, etc.
1170 None = 0,
1171 /// Length in meter.
1172 Meter = 2,
1173 /// Mass in gram.
1174 Gram = 3,
1175 /// Current in ampere.
1176 Amp = 5,
1177 /// Plane angle in degrees.
1178 Deg = 9,
1179 /// Plane angle in radians.
1180 Rad = 10,
1181 /// Relative temperature in degrees Celsius. In the SI unit system the symbol is ºC. Electric charge
1182 /// is measured in coulomb that has the unit symbol C. To distinguish degree Celsius form coulomb the
1183 /// symbol used in the UML is degC. Reason for not using ºC is the special character º is difficult to
1184 /// manage in software.
1185 DegC = 23,
1186 /// Capacitance in farad.
1187 Farad = 25,
1188 /// Time in seconds.
1189 Sec = 27,
1190 /// Inductance in Henry.
1191 Henry = 28,
1192 /// Voltage in volt.
1193 V = 29,
1194 /// Resistance in ohm.
1195 Ohm = 30,
1196 /// Energy in joule.
1197 Joule = 31,
1198 /// Force in newton.
1199 Newton = 32,
1200 /// Frequency in hertz.
1201 Hz = 33,
1202 /// Active power in watt.
1203 W = 38,
1204 /// Pressure in pascal (n/m2).
1205 Pa = 39,
1206 /// Area in square meters.
1207 M2 = 41,
1208 /// Conductance in siemens.
1209 Siemens = 53,
1210 /// Apparent power in volt ampere.
1211 Va = 61,
1212 /// Reactive power in volt ampere reactive.
1213 VAr = 63,
1214 /// Power factor
1215 WPerVa = 65,
1216 /// Apparent energy in volt ampere hours.
1217 VAh = 71,
1218 /// Real energy in what hours.
1219 Wh = 72,
1220 /// Reactive energy in volt ampere reactive hours.
1221 VArh = 73,
1222 /// MISSING DOCUMENTATION!!!
1223 HzPerS = 75,
1224 /// MISSING DOCUMENTATION!!!
1225 WPerS = 81,
1226 /// Other enum not listed
1227 Other = 100,
1228 /// Amp hour
1229 Ah = 106,
1230 /// Time in minutes.
1231 Min = 159,
1232 /// Time in hours.
1233 Hour = 160,
1234 /// Volume in cubic meters.
1235 M3 = 166,
1236 /// Watts per square meter
1237 WPerM2 = 179,
1238 /// Relative temperature in degree fahrenheit.
1239 DegF = 279,
1240 /// Mile per hour
1241 Mph = 500,
1242}
1243/// The unit multipliers defined for the CIM.
1244#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1245#[repr(i32)]
1246pub enum UnitMultiplierKind {
1247 /// No multiplier or equivalently multiply by 1.
1248 None = 0,
1249 /// Other enum not listed
1250 Other = 1,
1251 /// Centi 10**-2.
1252 Centi = 2,
1253 /// Deci 10**-1.
1254 Deci = 3,
1255 /// Giga 10**9.
1256 Giga = 4,
1257 /// Kilo 10**3.
1258 Kilo = 5,
1259 /// Mega 10**6.
1260 Mega = 6,
1261 /// Micro 10**-6.
1262 Micro = 7,
1263 /// Milli 10**-3.
1264 Milli = 8,
1265 /// Nano 10**-9.
1266 Nano = 9,
1267 /// Pico 10**-12.
1268 Pico = 10,
1269 /// Tera 10**12.
1270 Tera = 11,
1271}
1272/// Enumeration of phase identifiers. Allows designation of phases for both transmission and
1273/// distribution equipment, circuits and loads. Residential and small commercial loads are often served
1274/// from single-phase, or split-phase, secondary circuits. For example of s12N, phases 1 and 2 refer to
1275/// hot wires that are 180 degrees out of phase, while N refers to the neutral wire. Through single
1276/// phase transformer connections, these secondary circuits may be served from one or two of the primary
1277/// phases A, B, and C. For three-phase loads, use the A, B, C phase codes instead of s12N.
1278#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1279#[repr(i32)]
1280pub enum PhaseCodeKind {
1281 /// Not applicable
1282 None = 0,
1283 /// Other enum not listed
1284 Other = 1,
1285 /// Neutral phase.
1286 N = 16,
1287 /// Phase C.
1288 C = 32,
1289 /// Phases C and neutral.
1290 Cn = 33,
1291 /// Phases A and C.
1292 Ac = 40,
1293 /// Phases A, C and neutral.
1294 Acn = 41,
1295 /// Phase B.
1296 B = 64,
1297 /// Phases B and neutral.
1298 Bn = 65,
1299 /// Phases B and C.
1300 Bc = 66,
1301 /// Phases B, C, and neutral.
1302 Bcn = 97,
1303 /// Phase A.
1304 A = 128,
1305 /// Phases A and neutral.
1306 An = 129,
1307 /// Phases A and B.
1308 Ab = 132,
1309 /// Phases A, B, and neutral.
1310 Abn = 193,
1311 /// Phases A, B, and C.
1312 Abc = 224,
1313 /// Phases A, B, C, and N.
1314 Abcn = 225,
1315 /// Secondary phase 2.
1316 S2 = 256,
1317 /// Secondary phase 2 and neutral.
1318 S2N = 257,
1319 /// Secondary phase 1.
1320 S1 = 512,
1321 /// Secondary phase 1 and neutral.
1322 S1N = 513,
1323 /// Secondary phase 1 and 2.
1324 S12 = 768,
1325 /// Secondary phases 1, 2, and neutral.
1326 S12N = 769,
1327}
1328/// Validity of the value, as condensed information for the client. In case this value is not
1329/// 'good', some reasons may be found in the 'detailQual'.
1330#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1331#[repr(i32)]
1332pub enum ValidityKind {
1333 /// Supervision function has detected no abnormal condition of either the acquisition function or
1334 /// the information source.
1335 Good = 0,
1336 /// Supervision function has detected an abnormal condition of the acquisition function or the
1337 /// information source (missing or non-operating updating devices). The value is not defined under this
1338 /// condition. It shall be used to indicate to the client that the value may be incorrect and shall not
1339 /// be used. EXAMPLE If an input unit detects an oscillation of one input it will mark the related
1340 /// information as invalid.
1341 Invalid = 1,
1342 /// Reserved
1343 Reserved = 2,
1344 /// Supervision function has detected any abnormal behaviour. However, the value could still be
1345 /// valid. It is client's responsibility to determine whether the values should be used.
1346 Questionable = 3,
1347}
1348/// (default=process) Defines the source of a value. NOTE 1 Substitution may be done locally or via
1349/// the communication services. In the second case, specific attributes with a FC=SV are used. NOTE 2
1350/// There are various means to clear a substitution. As an example, a substitution that was done
1351/// following an invalid condition may be cleared automatically if the invalid condition is cleared.
1352/// However, this is a local issue and therefore
1353#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1354#[repr(i32)]
1355pub enum SourceKind {
1356 /// The value is provided by an input function from the process I/O or is calculated from some
1357 /// application function.
1358 Process = 0,
1359 /// The value is provided by an operator input or by an automatic source.
1360 Substituted = 1,
1361}
1362/// Validity of the value, as condensed information for the client. In case this value is not
1363/// 'good', some reasons may be found in the 'detailQual'.
1364#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1365#[repr(i32)]
1366pub enum TimeAccuracyKind {
1367 /// Undefined
1368 Undefined = 0,
1369 /// 10 ms (class T0)
1370 T0 = 7,
1371 /// 1 ms (class T1)
1372 T1 = 10,
1373 /// 100 us (class T2)
1374 T2 = 14,
1375 /// 25 us (class T3)
1376 T3 = 16,
1377 /// 4 us (class T4)
1378 T4 = 18,
1379 /// 1 us (class T5)
1380 T5 = 20,
1381 /// Undefined
1382 Unspecified = 31,
1383}
1384/// ESS function kind
1385#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1386#[repr(i32)]
1387pub enum ScheduleParameterKind {
1388 /// MISSING DOCUMENTATION!!!
1389 None = 0,
1390 /// Other enum not listed
1391 Other = 1,
1392 /// MISSING DOCUMENTATION!!!
1393 ANetMag = 2,
1394 /// MISSING DOCUMENTATION!!!
1395 ANeutMag = 3,
1396 /// MISSING DOCUMENTATION!!!
1397 APhsAMag = 4,
1398 /// MISSING DOCUMENTATION!!!
1399 APhsBMag = 5,
1400 /// MISSING DOCUMENTATION!!!
1401 APhsCMag = 6,
1402 /// MISSING DOCUMENTATION!!!
1403 HzMag = 7,
1404 /// MISSING DOCUMENTATION!!!
1405 PfNetMag = 8,
1406 /// MISSING DOCUMENTATION!!!
1407 PfNeutMag = 9,
1408 /// MISSING DOCUMENTATION!!!
1409 PfPhsAMag = 10,
1410 /// MISSING DOCUMENTATION!!!
1411 PfPhsBMag = 11,
1412 /// MISSING DOCUMENTATION!!!
1413 PfPhsCMag = 12,
1414 /// MISSING DOCUMENTATION!!!
1415 PhVNetAng = 13,
1416 /// MISSING DOCUMENTATION!!!
1417 PhVNetMag = 14,
1418 /// MISSING DOCUMENTATION!!!
1419 PhVNeutAng = 15,
1420 /// MISSING DOCUMENTATION!!!
1421 PhVNeutMag = 16,
1422 /// MISSING DOCUMENTATION!!!
1423 PhVPhsAAng = 17,
1424 /// MISSING DOCUMENTATION!!!
1425 PhVPhsAMag = 18,
1426 /// MISSING DOCUMENTATION!!!
1427 PhVPhsBAng = 19,
1428 /// MISSING DOCUMENTATION!!!
1429 PhVPhsBMag = 20,
1430 /// MISSING DOCUMENTATION!!!
1431 PhVPhsCAng = 21,
1432 /// MISSING DOCUMENTATION!!!
1433 PhVPhsCMag = 22,
1434 /// MISSING DOCUMENTATION!!!
1435 PpvPhsAbAng = 23,
1436 /// MISSING DOCUMENTATION!!!
1437 PpvPhsAbMag = 24,
1438 /// MISSING DOCUMENTATION!!!
1439 PpvPhsBcAng = 25,
1440 /// MISSING DOCUMENTATION!!!
1441 PpvPhsBcMag = 26,
1442 /// MISSING DOCUMENTATION!!!
1443 PpvPhsCaAng = 27,
1444 /// MISSING DOCUMENTATION!!!
1445 PpvPhsCaMag = 28,
1446 /// MISSING DOCUMENTATION!!!
1447 VaNetMag = 29,
1448 /// MISSING DOCUMENTATION!!!
1449 VaNeutMag = 30,
1450 /// MISSING DOCUMENTATION!!!
1451 VaPhsAMag = 31,
1452 /// MISSING DOCUMENTATION!!!
1453 VaPhsBMag = 32,
1454 /// MISSING DOCUMENTATION!!!
1455 VaPhsCMag = 33,
1456 /// MISSING DOCUMENTATION!!!
1457 VArNetMag = 34,
1458 /// MISSING DOCUMENTATION!!!
1459 VArNeutMag = 35,
1460 /// MISSING DOCUMENTATION!!!
1461 VArPhsAMag = 36,
1462 /// MISSING DOCUMENTATION!!!
1463 VArPhsBMag = 37,
1464 /// MISSING DOCUMENTATION!!!
1465 VArPhsCMag = 38,
1466 /// MISSING DOCUMENTATION!!!
1467 WNetMag = 39,
1468 /// MISSING DOCUMENTATION!!!
1469 WNeutMag = 40,
1470 /// MISSING DOCUMENTATION!!!
1471 WPhsAMag = 41,
1472 /// MISSING DOCUMENTATION!!!
1473 WPhsBMag = 42,
1474 /// MISSING DOCUMENTATION!!!
1475 WPhsCMag = 43,
1476}
1477/// Calculation method (CalcMethodKind enumeration)
1478#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1479#[repr(i32)]
1480pub enum CalcMethodKind {
1481 /// Undefined enum value which can be used for Protobuf generation and be consistent with other
1482 /// technologies.
1483 Undefined = 0,
1484 /// All analogue values (i.e., all common attributes 'i' and 'f') meet the sampling and filtering
1485 /// characteristics specified in IEEE C37.118.1 for P-CLASS.
1486 PClass = 11,
1487 /// All analogue values (i.e., all common attributes 'i' and 'f') meet the sampling and filtering
1488 /// characteristics specified in IEEE C37.118.1 for M-CLASS.
1489 MClass = 12,
1490 /// All analogue values are [F(t+T)-F(t)] for a calculation interval T (in the same unit as the
1491 /// original entity). Note: The client can still calculate rate so: RATE = DIFF/T.
1492 Diff = 13,
1493}
1494/// Power system connect modes to the power grid (GridConnectModeKind)
1495#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1496#[repr(i32)]
1497pub enum GridConnectModeKind {
1498 /// Undefined
1499 Undefined = 0,
1500 /// Current-source inverter (CSI)
1501 Csi = 1,
1502 /// Voltage-controlled voltage-source inverter (VC-VSI)
1503 VcVsi = 2,
1504 /// Current-controlled voltage-source inverter (CC-VSI)
1505 CcVsi = 3,
1506 /// Not applicable / Unknown
1507 None = 98,
1508 /// MISSING DOCUMENTATION!!!
1509 Other = 99,
1510 /// Voltage source inverter regulating to P and Q references (VSI PQ)
1511 VsiPq = 2000,
1512 /// Voltage source inverter regulating to voltage and frequency references paralleling other
1513 /// generation and not grid forming (VSI VF).
1514 VsiVf = 2001,
1515 /// Voltage source inverter regulating to voltage and frequency references as primary grid forming
1516 /// generation (VSI ISO).
1517 VsiIso = 2002,
1518}
1519/// Power factor sign (PFSignKind enumeration)
1520#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1521#[repr(i32)]
1522pub enum PfSignKind {
1523 /// Undefined enum value which can be used for Protobuf generation and be consistent with other
1524 /// technologies.
1525 Undefined = 0,
1526 /// All analogue values are [F(t+T)-F(t)] for a calculation interval T (in the same unit as the
1527 /// original entity). Note: The client can still calculate rate so: RATE = DIFF/T.
1528 Iec = 1,
1529 /// All analogue values (i.e., all common attributes 'i' and 'f') meet the sampling and filtering
1530 /// characteristics specified in IEEE C37.118.1 for M-CLASS.
1531 Eei = 2,
1532}
1533/// Behaviour or mode (BehaviourModeKind enumeration)
1534#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1535#[repr(i32)]
1536pub enum BehaviourModeKind {
1537 /// Undefined
1538 Undefined = 0,
1539 /// Normal enabled state.
1540 On = 1,
1541 /// Process is passively supervised.
1542 Blocked = 2,
1543 /// Function is operated but results are indicated as test results.
1544 Test = 3,
1545 /// Function is operated in test mode, but with no impact to the process.
1546 TestBlocked = 4,
1547 /// Function is inactive but shows its configuration capability.
1548 Off = 5,
1549}
1550/// DER operational state (DERGeneratorStateKind)
1551#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1552#[repr(i32)]
1553pub enum DerGeneratorStateKind {
1554 /// Undefined enum value which can be used for Protobuf generation and be consistent with other
1555 /// technologies.
1556 Undefined = 0,
1557 /// MISSING DOCUMENTATION!!!
1558 NotOperating = 1,
1559 /// MISSING DOCUMENTATION!!!
1560 Operating = 2,
1561 /// MISSING DOCUMENTATION!!!
1562 StartingUp = 3,
1563 /// MISSING DOCUMENTATION!!!
1564 ShuttingDown = 4,
1565 /// MISSING DOCUMENTATION!!!
1566 AtDisconnectLevel = 5,
1567 /// MISSING DOCUMENTATION!!!
1568 RampingInPower = 6,
1569 /// MISSING DOCUMENTATION!!!
1570 RampingInReactivePower = 7,
1571 /// MISSING DOCUMENTATION!!!
1572 Standby = 8,
1573 /// MISSING DOCUMENTATION!!!
1574 NotApplicableUnknown = 98,
1575 /// MISSING DOCUMENTATION!!!
1576 Other = 99,
1577}
1578/// Dynamic test status (see IEC61850-7-2 section 20.2.1 Direct control with normal security, state
1579/// machine diagram) A simplified state machine diagram (from Herb F.) is provided.
1580#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1581#[repr(i32)]
1582pub enum DynamicTestKind {
1583 /// None
1584 None = 0,
1585 /// Testing status
1586 Testing = 1,
1587 /// Operating status
1588 Operating = 2,
1589 /// Failed status
1590 Failed = 3,
1591}
1592/// State kind
1593#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1594#[repr(i32)]
1595pub enum HealthKind {
1596 /// MISSING DOCUMENTATION!!!
1597 None = 0,
1598 /// No problems, normal operation ("green").
1599 Ok = 1,
1600 /// Minor problems, but in safe operating mode ("yellow"). The exact meaning is a local issue,
1601 /// depending on the dedicated function/device.
1602 Warning = 2,
1603 /// Severe problem, no operation possible ("red").
1604 Alarm = 3,
1605}
1606/// Double point position status
1607#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1608#[repr(i32)]
1609pub enum DbPosKind {
1610 /// Transient status
1611 Transient = 0,
1612 /// Closed status
1613 Closed = 1,
1614 /// Open status
1615 Open = 2,
1616 /// Invalid status
1617 Invalid = 3,
1618}
1619/// State kind
1620#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1621#[repr(i32)]
1622pub enum StateKind {
1623 /// MISSING DOCUMENTATION!!!
1624 Off = 0,
1625 /// MISSING DOCUMENTATION!!!
1626 On = 1,
1627 /// MISSING DOCUMENTATION!!!
1628 Standby = 2,
1629}