l5x 0.6.0

Parser for Rockwell Automation L5X files (Studio 5000 Logix Designer)
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
// Auto-generated L5X types - alarms category
// DO NOT EDIT - Generated by build script

use serde::{Serialize, Deserialize};
use super::*;

/// AlarmDefinitionCollectionAdaptorType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AlarmDefinitionCollectionAdaptor {
    /// Use attribute
    #[serde(rename = "@Use", default, skip_serializing_if = "Option::is_none")]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default, skip_serializing_if = "Option::is_none")]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// DatatypeAlarmDefinition element
    #[serde(rename = "DatatypeAlarmDefinition", default, skip_serializing_if = "Vec::is_empty")]
    pub datatype_alarm_definition: Vec<DatatypeAlarmDefinition>,
}

/// AlarmConfigType element
///
/// Note: Mixed content type
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AlarmConfig {
    /// Use attribute
    #[serde(rename = "@Use", default, skip_serializing_if = "Option::is_none")]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default, skip_serializing_if = "Option::is_none")]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// Messages element
    #[serde(rename = "Messages", default, skip_serializing_if = "Option::is_none")]
    pub messages: Option<AlarmMessageCollection>,
    /// AlarmClass element
    #[serde(rename = "AlarmClass", default, skip_serializing_if = "Option::is_none")]
    pub alarm_class: Option<String>,
    /// HMICmd element
    #[serde(rename = "HMICmd", default, skip_serializing_if = "Option::is_none")]
    pub hmicmd: Option<String>,
    /// HMIGroup element
    #[serde(rename = "HMIGroup", default, skip_serializing_if = "Option::is_none")]
    pub hmigroup: Option<String>,
    /// Text content
    #[serde(rename = "$text", default, skip_serializing_if = "Option::is_none")]
    pub text: Option<String>,
}

/// AlarmMessageCollectionType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AlarmMessageCollection {
    /// Use attribute
    #[serde(rename = "@Use", default, skip_serializing_if = "Option::is_none")]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default, skip_serializing_if = "Option::is_none")]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// Message element
    #[serde(rename = "Message", default, skip_serializing_if = "Vec::is_empty")]
    pub message: Vec<AlarmMessage>,
}

/// AlarmMessageType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AlarmMessage {
    /// Type attribute
    #[serde(rename = "@Type", default)]
    pub r#type: String,
    /// ID attribute
    #[serde(rename = "@ID", default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    /// Use attribute
    #[serde(rename = "@Use", default, skip_serializing_if = "Option::is_none")]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default, skip_serializing_if = "Option::is_none")]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// Text element
    #[serde(rename = "Text", default, skip_serializing_if = "Vec::is_empty")]
    pub text: Vec<TextWide>,
}

/// AlarmMessageTextType element
///
/// Note: Mixed content type
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AlarmMessageText {
    /// Lang attribute
    #[serde(rename = "@Lang", default, skip_serializing_if = "Option::is_none")]
    pub lang: Option<String>,
    /// Use attribute
    #[serde(rename = "@Use", default, skip_serializing_if = "Option::is_none")]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default, skip_serializing_if = "Option::is_none")]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// Text content
    #[serde(rename = "$text", default, skip_serializing_if = "Option::is_none")]
    pub text: Option<String>,
}

/// AlarmAnalogType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AlarmAnalog {
    /// EnableIn attribute
    #[serde(rename = "@EnableIn", default, skip_serializing_if = "Option::is_none")]
    pub enable_in: Option<String>,
    /// InFault attribute
    #[serde(rename = "@InFault", default, skip_serializing_if = "Option::is_none")]
    pub in_fault: Option<String>,
    /// HHEnabled attribute
    #[serde(rename = "@HHEnabled", default, skip_serializing_if = "Option::is_none")]
    pub hhenabled: Option<String>,
    /// HEnabled attribute
    #[serde(rename = "@HEnabled", default, skip_serializing_if = "Option::is_none")]
    pub henabled: Option<String>,
    /// LEnabled attribute
    #[serde(rename = "@LEnabled", default, skip_serializing_if = "Option::is_none")]
    pub lenabled: Option<String>,
    /// LLEnabled attribute
    #[serde(rename = "@LLEnabled", default, skip_serializing_if = "Option::is_none")]
    pub llenabled: Option<String>,
    /// AckRequired attribute
    #[serde(rename = "@AckRequired", default, skip_serializing_if = "Option::is_none")]
    pub ack_required: Option<String>,
    /// ProgAckAll attribute
    #[serde(rename = "@ProgAckAll", default, skip_serializing_if = "Option::is_none")]
    pub prog_ack_all: Option<String>,
    /// OperAckAll attribute
    #[serde(rename = "@OperAckAll", default, skip_serializing_if = "Option::is_none")]
    pub oper_ack_all: Option<String>,
    /// HHProgAck attribute
    #[serde(rename = "@HHProgAck", default, skip_serializing_if = "Option::is_none")]
    pub hhprog_ack: Option<String>,
    /// HHOperAck attribute
    #[serde(rename = "@HHOperAck", default, skip_serializing_if = "Option::is_none")]
    pub hhoper_ack: Option<String>,
    /// HProgAck attribute
    #[serde(rename = "@HProgAck", default, skip_serializing_if = "Option::is_none")]
    pub hprog_ack: Option<String>,
    /// HOperAck attribute
    #[serde(rename = "@HOperAck", default, skip_serializing_if = "Option::is_none")]
    pub hoper_ack: Option<String>,
    /// LProgAck attribute
    #[serde(rename = "@LProgAck", default, skip_serializing_if = "Option::is_none")]
    pub lprog_ack: Option<String>,
    /// LOperAck attribute
    #[serde(rename = "@LOperAck", default, skip_serializing_if = "Option::is_none")]
    pub loper_ack: Option<String>,
    /// LLProgAck attribute
    #[serde(rename = "@LLProgAck", default, skip_serializing_if = "Option::is_none")]
    pub llprog_ack: Option<String>,
    /// LLOperAck attribute
    #[serde(rename = "@LLOperAck", default, skip_serializing_if = "Option::is_none")]
    pub lloper_ack: Option<String>,
    /// ROCPosProgAck attribute
    #[serde(rename = "@ROCPosProgAck", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_prog_ack: Option<String>,
    /// ROCPosOperAck attribute
    #[serde(rename = "@ROCPosOperAck", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_oper_ack: Option<String>,
    /// ROCNegProgAck attribute
    #[serde(rename = "@ROCNegProgAck", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_prog_ack: Option<String>,
    /// ROCNegOperAck attribute
    #[serde(rename = "@ROCNegOperAck", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_oper_ack: Option<String>,
    /// ProgSuppress attribute
    #[serde(rename = "@ProgSuppress", default, skip_serializing_if = "Option::is_none")]
    pub prog_suppress: Option<String>,
    /// OperSuppress attribute
    #[serde(rename = "@OperSuppress", default, skip_serializing_if = "Option::is_none")]
    pub oper_suppress: Option<String>,
    /// ProgUnsuppress attribute
    #[serde(rename = "@ProgUnsuppress", default, skip_serializing_if = "Option::is_none")]
    pub prog_unsuppress: Option<String>,
    /// OperUnsuppress attribute
    #[serde(rename = "@OperUnsuppress", default, skip_serializing_if = "Option::is_none")]
    pub oper_unsuppress: Option<String>,
    /// HHOperShelve attribute
    #[serde(rename = "@HHOperShelve", default, skip_serializing_if = "Option::is_none")]
    pub hhoper_shelve: Option<String>,
    /// HOperShelve attribute
    #[serde(rename = "@HOperShelve", default, skip_serializing_if = "Option::is_none")]
    pub hoper_shelve: Option<String>,
    /// LOperShelve attribute
    #[serde(rename = "@LOperShelve", default, skip_serializing_if = "Option::is_none")]
    pub loper_shelve: Option<String>,
    /// LLOperShelve attribute
    #[serde(rename = "@LLOperShelve", default, skip_serializing_if = "Option::is_none")]
    pub lloper_shelve: Option<String>,
    /// ROCPosOperShelve attribute
    #[serde(rename = "@ROCPosOperShelve", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_oper_shelve: Option<String>,
    /// ROCNegOperShelve attribute
    #[serde(rename = "@ROCNegOperShelve", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_oper_shelve: Option<String>,
    /// ProgUnshelveAll attribute
    #[serde(rename = "@ProgUnshelveAll", default, skip_serializing_if = "Option::is_none")]
    pub prog_unshelve_all: Option<String>,
    /// HHOperUnshelve attribute
    #[serde(rename = "@HHOperUnshelve", default, skip_serializing_if = "Option::is_none")]
    pub hhoper_unshelve: Option<String>,
    /// HOperUnshelve attribute
    #[serde(rename = "@HOperUnshelve", default, skip_serializing_if = "Option::is_none")]
    pub hoper_unshelve: Option<String>,
    /// LOperUnshelve attribute
    #[serde(rename = "@LOperUnshelve", default, skip_serializing_if = "Option::is_none")]
    pub loper_unshelve: Option<String>,
    /// LLOperUnshelve attribute
    #[serde(rename = "@LLOperUnshelve", default, skip_serializing_if = "Option::is_none")]
    pub lloper_unshelve: Option<String>,
    /// ROCPosOperUnshelve attribute
    #[serde(rename = "@ROCPosOperUnshelve", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_oper_unshelve: Option<String>,
    /// ROCNegOperUnshelve attribute
    #[serde(rename = "@ROCNegOperUnshelve", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_oper_unshelve: Option<String>,
    /// ProgDisable attribute
    #[serde(rename = "@ProgDisable", default, skip_serializing_if = "Option::is_none")]
    pub prog_disable: Option<String>,
    /// OperDisable attribute
    #[serde(rename = "@OperDisable", default, skip_serializing_if = "Option::is_none")]
    pub oper_disable: Option<String>,
    /// ProgEnable attribute
    #[serde(rename = "@ProgEnable", default, skip_serializing_if = "Option::is_none")]
    pub prog_enable: Option<String>,
    /// OperEnable attribute
    #[serde(rename = "@OperEnable", default, skip_serializing_if = "Option::is_none")]
    pub oper_enable: Option<String>,
    /// AlarmCountReset attribute
    #[serde(rename = "@AlarmCountReset", default, skip_serializing_if = "Option::is_none")]
    pub alarm_count_reset: Option<String>,
    /// HHMinDurationEnable attribute
    #[serde(rename = "@HHMinDurationEnable", default, skip_serializing_if = "Option::is_none")]
    pub hhmin_duration_enable: Option<String>,
    /// HMinDurationEnable attribute
    #[serde(rename = "@HMinDurationEnable", default, skip_serializing_if = "Option::is_none")]
    pub hmin_duration_enable: Option<String>,
    /// LMinDurationEnable attribute
    #[serde(rename = "@LMinDurationEnable", default, skip_serializing_if = "Option::is_none")]
    pub lmin_duration_enable: Option<String>,
    /// LLMinDurationEnable attribute
    #[serde(rename = "@LLMinDurationEnable", default, skip_serializing_if = "Option::is_none")]
    pub llmin_duration_enable: Option<String>,
    /// In attribute
    #[serde(rename = "@In", default, skip_serializing_if = "Option::is_none")]
    pub r#in: Option<String>,
    /// HHLimit attribute
    #[serde(rename = "@HHLimit", default, skip_serializing_if = "Option::is_none")]
    pub hhlimit: Option<String>,
    /// HHSeverity attribute
    #[serde(rename = "@HHSeverity", default, skip_serializing_if = "Option::is_none")]
    pub hhseverity: Option<String>,
    /// HLimit attribute
    #[serde(rename = "@HLimit", default, skip_serializing_if = "Option::is_none")]
    pub hlimit: Option<String>,
    /// HSeverity attribute
    #[serde(rename = "@HSeverity", default, skip_serializing_if = "Option::is_none")]
    pub hseverity: Option<String>,
    /// LLimit attribute
    #[serde(rename = "@LLimit", default, skip_serializing_if = "Option::is_none")]
    pub llimit: Option<String>,
    /// LSeverity attribute
    #[serde(rename = "@LSeverity", default, skip_serializing_if = "Option::is_none")]
    pub lseverity: Option<String>,
    /// LLLimit attribute
    #[serde(rename = "@LLLimit", default, skip_serializing_if = "Option::is_none")]
    pub lllimit: Option<String>,
    /// LLSeverity attribute
    #[serde(rename = "@LLSeverity", default, skip_serializing_if = "Option::is_none")]
    pub llseverity: Option<String>,
    /// MinDurationPRE attribute
    #[serde(rename = "@MinDurationPRE", default, skip_serializing_if = "Option::is_none")]
    pub min_duration_pre: Option<String>,
    /// ShelveDuration attribute
    #[serde(rename = "@ShelveDuration", default, skip_serializing_if = "Option::is_none")]
    pub shelve_duration: Option<String>,
    /// MaxShelveDuration attribute
    #[serde(rename = "@MaxShelveDuration", default, skip_serializing_if = "Option::is_none")]
    pub max_shelve_duration: Option<String>,
    /// Deadband attribute
    #[serde(rename = "@Deadband", default, skip_serializing_if = "Option::is_none")]
    pub deadband: Option<String>,
    /// ROCPosLimit attribute
    #[serde(rename = "@ROCPosLimit", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_limit: Option<String>,
    /// ROCPosSeverity attribute
    #[serde(rename = "@ROCPosSeverity", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_severity: Option<String>,
    /// ROCNegLimit attribute
    #[serde(rename = "@ROCNegLimit", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_limit: Option<String>,
    /// ROCNegSeverity attribute
    #[serde(rename = "@ROCNegSeverity", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_severity: Option<String>,
    /// ROCPeriod attribute
    #[serde(rename = "@ROCPeriod", default, skip_serializing_if = "Option::is_none")]
    pub rocperiod: Option<String>,
    /// AssocTag1 attribute
    #[serde(rename = "@AssocTag1", default, skip_serializing_if = "Option::is_none")]
    pub assoc_tag1: Option<String>,
    /// AssocTag2 attribute
    #[serde(rename = "@AssocTag2", default, skip_serializing_if = "Option::is_none")]
    pub assoc_tag2: Option<String>,
    /// AssocTag3 attribute
    #[serde(rename = "@AssocTag3", default, skip_serializing_if = "Option::is_none")]
    pub assoc_tag3: Option<String>,
    /// AssocTag4 attribute
    #[serde(rename = "@AssocTag4", default, skip_serializing_if = "Option::is_none")]
    pub assoc_tag4: Option<String>,
    /// EnableOut attribute
    #[serde(rename = "@EnableOut", default, skip_serializing_if = "Option::is_none")]
    pub enable_out: Option<String>,
    /// InAlarm attribute
    #[serde(rename = "@InAlarm", default, skip_serializing_if = "Option::is_none")]
    pub in_alarm: Option<String>,
    /// AnyInAlarmUnack attribute
    #[serde(rename = "@AnyInAlarmUnack", default, skip_serializing_if = "Option::is_none")]
    pub any_in_alarm_unack: Option<String>,
    /// HHInAlarm attribute
    #[serde(rename = "@HHInAlarm", default, skip_serializing_if = "Option::is_none")]
    pub hhin_alarm: Option<String>,
    /// HHAcked attribute
    #[serde(rename = "@HHAcked", default, skip_serializing_if = "Option::is_none")]
    pub hhacked: Option<String>,
    /// HHInAlarmUnack attribute
    #[serde(rename = "@HHInAlarmUnack", default, skip_serializing_if = "Option::is_none")]
    pub hhin_alarm_unack: Option<String>,
    /// HInAlarm attribute
    #[serde(rename = "@HInAlarm", default, skip_serializing_if = "Option::is_none")]
    pub hin_alarm: Option<String>,
    /// HAcked attribute
    #[serde(rename = "@HAcked", default, skip_serializing_if = "Option::is_none")]
    pub hacked: Option<String>,
    /// HInAlarmUnack attribute
    #[serde(rename = "@HInAlarmUnack", default, skip_serializing_if = "Option::is_none")]
    pub hin_alarm_unack: Option<String>,
    /// LInAlarm attribute
    #[serde(rename = "@LInAlarm", default, skip_serializing_if = "Option::is_none")]
    pub lin_alarm: Option<String>,
    /// LAcked attribute
    #[serde(rename = "@LAcked", default, skip_serializing_if = "Option::is_none")]
    pub lacked: Option<String>,
    /// LInAlarmUnack attribute
    #[serde(rename = "@LInAlarmUnack", default, skip_serializing_if = "Option::is_none")]
    pub lin_alarm_unack: Option<String>,
    /// LLInAlarm attribute
    #[serde(rename = "@LLInAlarm", default, skip_serializing_if = "Option::is_none")]
    pub llin_alarm: Option<String>,
    /// LLAcked attribute
    #[serde(rename = "@LLAcked", default, skip_serializing_if = "Option::is_none")]
    pub llacked: Option<String>,
    /// LLInAlarmUnack attribute
    #[serde(rename = "@LLInAlarmUnack", default, skip_serializing_if = "Option::is_none")]
    pub llin_alarm_unack: Option<String>,
    /// ROCPosInAlarm attribute
    #[serde(rename = "@ROCPosInAlarm", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_in_alarm: Option<String>,
    /// ROCPosAcked attribute
    #[serde(rename = "@ROCPosAcked", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_acked: Option<String>,
    /// ROCPosInAlarmUnack attribute
    #[serde(rename = "@ROCPosInAlarmUnack", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_in_alarm_unack: Option<String>,
    /// ROCNegInAlarm attribute
    #[serde(rename = "@ROCNegInAlarm", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_in_alarm: Option<String>,
    /// ROCNegAcked attribute
    #[serde(rename = "@ROCNegAcked", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_acked: Option<String>,
    /// ROCNegInAlarmUnack attribute
    #[serde(rename = "@ROCNegInAlarmUnack", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_in_alarm_unack: Option<String>,
    /// Suppressed attribute
    #[serde(rename = "@Suppressed", default, skip_serializing_if = "Option::is_none")]
    pub suppressed: Option<String>,
    /// HHShelved attribute
    #[serde(rename = "@HHShelved", default, skip_serializing_if = "Option::is_none")]
    pub hhshelved: Option<String>,
    /// HShelved attribute
    #[serde(rename = "@HShelved", default, skip_serializing_if = "Option::is_none")]
    pub hshelved: Option<String>,
    /// LShelved attribute
    #[serde(rename = "@LShelved", default, skip_serializing_if = "Option::is_none")]
    pub lshelved: Option<String>,
    /// LLShelved attribute
    #[serde(rename = "@LLShelved", default, skip_serializing_if = "Option::is_none")]
    pub llshelved: Option<String>,
    /// ROCPosShelved attribute
    #[serde(rename = "@ROCPosShelved", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_shelved: Option<String>,
    /// ROCNegShelved attribute
    #[serde(rename = "@ROCNegShelved", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_shelved: Option<String>,
    /// Disabled attribute
    #[serde(rename = "@Disabled", default, skip_serializing_if = "Option::is_none")]
    pub disabled: Option<String>,
    /// HHInAlarmTime attribute
    #[serde(rename = "@HHInAlarmTime", default, skip_serializing_if = "Option::is_none")]
    pub hhin_alarm_time: Option<String>,
    /// HHAlarmCount attribute
    #[serde(rename = "@HHAlarmCount", default, skip_serializing_if = "Option::is_none")]
    pub hhalarm_count: Option<String>,
    /// HInAlarmTime attribute
    #[serde(rename = "@HInAlarmTime", default, skip_serializing_if = "Option::is_none")]
    pub hin_alarm_time: Option<String>,
    /// HAlarmCount attribute
    #[serde(rename = "@HAlarmCount", default, skip_serializing_if = "Option::is_none")]
    pub halarm_count: Option<String>,
    /// LInAlarmTime attribute
    #[serde(rename = "@LInAlarmTime", default, skip_serializing_if = "Option::is_none")]
    pub lin_alarm_time: Option<String>,
    /// LAlarmCount attribute
    #[serde(rename = "@LAlarmCount", default, skip_serializing_if = "Option::is_none")]
    pub lalarm_count: Option<String>,
    /// LLInAlarmTime attribute
    #[serde(rename = "@LLInAlarmTime", default, skip_serializing_if = "Option::is_none")]
    pub llin_alarm_time: Option<String>,
    /// LLAlarmCount attribute
    #[serde(rename = "@LLAlarmCount", default, skip_serializing_if = "Option::is_none")]
    pub llalarm_count: Option<String>,
    /// ROCPosInAlarmTime attribute
    #[serde(rename = "@ROCPosInAlarmTime", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_in_alarm_time: Option<String>,
    /// ROCPosAlarmCnt attribute
    #[serde(rename = "@ROCPosAlarmCnt", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_alarm_cnt: Option<String>,
    /// ROCNegInAlarmTime attribute
    #[serde(rename = "@ROCNegInAlarmTime", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_in_alarm_time: Option<String>,
    /// ROCNegAlarmCnt attribute
    #[serde(rename = "@ROCNegAlarmCnt", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_alarm_cnt: Option<String>,
    /// AckTime attribute
    #[serde(rename = "@AckTime", default, skip_serializing_if = "Option::is_none")]
    pub ack_time: Option<String>,
    /// RetToNormalTime attribute
    #[serde(rename = "@RetToNormalTime", default, skip_serializing_if = "Option::is_none")]
    pub ret_to_normal_time: Option<String>,
    /// AlarmCountResetTime attribute
    #[serde(rename = "@AlarmCountResetTime", default, skip_serializing_if = "Option::is_none")]
    pub alarm_count_reset_time: Option<String>,
    /// ShelveTime attribute
    #[serde(rename = "@ShelveTime", default, skip_serializing_if = "Option::is_none")]
    pub shelve_time: Option<String>,
    /// UnshelveTime attribute
    #[serde(rename = "@UnshelveTime", default, skip_serializing_if = "Option::is_none")]
    pub unshelve_time: Option<String>,
    /// InstructFault attribute
    #[serde(rename = "@InstructFault", default, skip_serializing_if = "Option::is_none")]
    pub instruct_fault: Option<String>,
    /// InFaulted attribute
    #[serde(rename = "@InFaulted", default, skip_serializing_if = "Option::is_none")]
    pub in_faulted: Option<String>,
    /// SeverityInv attribute
    #[serde(rename = "@SeverityInv", default, skip_serializing_if = "Option::is_none")]
    pub severity_inv: Option<String>,
    /// AlarmLimitsInv attribute
    #[serde(rename = "@AlarmLimitsInv", default, skip_serializing_if = "Option::is_none")]
    pub alarm_limits_inv: Option<String>,
    /// DeadbandInv attribute
    #[serde(rename = "@DeadbandInv", default, skip_serializing_if = "Option::is_none")]
    pub deadband_inv: Option<String>,
    /// ROCPosLimitInv attribute
    #[serde(rename = "@ROCPosLimitInv", default, skip_serializing_if = "Option::is_none")]
    pub rocpos_limit_inv: Option<String>,
    /// ROCNegLimitInv attribute
    #[serde(rename = "@ROCNegLimitInv", default, skip_serializing_if = "Option::is_none")]
    pub rocneg_limit_inv: Option<String>,
    /// ROCPeriodInv attribute
    #[serde(rename = "@ROCPeriodInv", default, skip_serializing_if = "Option::is_none")]
    pub rocperiod_inv: Option<String>,
    /// Use attribute
    #[serde(rename = "@Use", default, skip_serializing_if = "Option::is_none")]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default, skip_serializing_if = "Option::is_none")]
    pub custom_properties: Option<CustomPropertiesCollection>,
}

/// AlarmDigitalType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AlarmDigital {
    /// EnableIn attribute
    #[serde(rename = "@EnableIn", default, skip_serializing_if = "Option::is_none")]
    pub enable_in: Option<String>,
    /// In attribute
    #[serde(rename = "@In", default, skip_serializing_if = "Option::is_none")]
    pub r#in: Option<String>,
    /// InFault attribute
    #[serde(rename = "@InFault", default, skip_serializing_if = "Option::is_none")]
    pub in_fault: Option<String>,
    /// Condition attribute
    #[serde(rename = "@Condition", default, skip_serializing_if = "Option::is_none")]
    pub condition: Option<String>,
    /// AckRequired attribute
    #[serde(rename = "@AckRequired", default, skip_serializing_if = "Option::is_none")]
    pub ack_required: Option<String>,
    /// Latched attribute
    #[serde(rename = "@Latched", default, skip_serializing_if = "Option::is_none")]
    pub latched: Option<String>,
    /// ProgAck attribute
    #[serde(rename = "@ProgAck", default, skip_serializing_if = "Option::is_none")]
    pub prog_ack: Option<String>,
    /// OperAck attribute
    #[serde(rename = "@OperAck", default, skip_serializing_if = "Option::is_none")]
    pub oper_ack: Option<String>,
    /// ProgReset attribute
    #[serde(rename = "@ProgReset", default, skip_serializing_if = "Option::is_none")]
    pub prog_reset: Option<String>,
    /// OperReset attribute
    #[serde(rename = "@OperReset", default, skip_serializing_if = "Option::is_none")]
    pub oper_reset: Option<String>,
    /// ProgSuppress attribute
    #[serde(rename = "@ProgSuppress", default, skip_serializing_if = "Option::is_none")]
    pub prog_suppress: Option<String>,
    /// OperSuppress attribute
    #[serde(rename = "@OperSuppress", default, skip_serializing_if = "Option::is_none")]
    pub oper_suppress: Option<String>,
    /// ProgUnsuppress attribute
    #[serde(rename = "@ProgUnsuppress", default, skip_serializing_if = "Option::is_none")]
    pub prog_unsuppress: Option<String>,
    /// OperUnsuppress attribute
    #[serde(rename = "@OperUnsuppress", default, skip_serializing_if = "Option::is_none")]
    pub oper_unsuppress: Option<String>,
    /// OperShelve attribute
    #[serde(rename = "@OperShelve", default, skip_serializing_if = "Option::is_none")]
    pub oper_shelve: Option<String>,
    /// ProgUnshelve attribute
    #[serde(rename = "@ProgUnshelve", default, skip_serializing_if = "Option::is_none")]
    pub prog_unshelve: Option<String>,
    /// OperUnshelve attribute
    #[serde(rename = "@OperUnshelve", default, skip_serializing_if = "Option::is_none")]
    pub oper_unshelve: Option<String>,
    /// ProgDisable attribute
    #[serde(rename = "@ProgDisable", default, skip_serializing_if = "Option::is_none")]
    pub prog_disable: Option<String>,
    /// OperDisable attribute
    #[serde(rename = "@OperDisable", default, skip_serializing_if = "Option::is_none")]
    pub oper_disable: Option<String>,
    /// ProgEnable attribute
    #[serde(rename = "@ProgEnable", default, skip_serializing_if = "Option::is_none")]
    pub prog_enable: Option<String>,
    /// OperEnable attribute
    #[serde(rename = "@OperEnable", default, skip_serializing_if = "Option::is_none")]
    pub oper_enable: Option<String>,
    /// AlarmCountReset attribute
    #[serde(rename = "@AlarmCountReset", default, skip_serializing_if = "Option::is_none")]
    pub alarm_count_reset: Option<String>,
    /// UseProgTime attribute
    #[serde(rename = "@UseProgTime", default, skip_serializing_if = "Option::is_none")]
    pub use_prog_time: Option<String>,
    /// Severity attribute
    #[serde(rename = "@Severity", default, skip_serializing_if = "Option::is_none")]
    pub severity: Option<String>,
    /// MinDurationPRE attribute
    #[serde(rename = "@MinDurationPRE", default, skip_serializing_if = "Option::is_none")]
    pub min_duration_pre: Option<String>,
    /// ShelveDuration attribute
    #[serde(rename = "@ShelveDuration", default, skip_serializing_if = "Option::is_none")]
    pub shelve_duration: Option<String>,
    /// MaxShelveDuration attribute
    #[serde(rename = "@MaxShelveDuration", default, skip_serializing_if = "Option::is_none")]
    pub max_shelve_duration: Option<String>,
    /// ProgTime attribute
    #[serde(rename = "@ProgTime", default, skip_serializing_if = "Option::is_none")]
    pub prog_time: Option<String>,
    /// AssocTag1 attribute
    #[serde(rename = "@AssocTag1", default, skip_serializing_if = "Option::is_none")]
    pub assoc_tag1: Option<String>,
    /// AssocTag2 attribute
    #[serde(rename = "@AssocTag2", default, skip_serializing_if = "Option::is_none")]
    pub assoc_tag2: Option<String>,
    /// AssocTag3 attribute
    #[serde(rename = "@AssocTag3", default, skip_serializing_if = "Option::is_none")]
    pub assoc_tag3: Option<String>,
    /// AssocTag4 attribute
    #[serde(rename = "@AssocTag4", default, skip_serializing_if = "Option::is_none")]
    pub assoc_tag4: Option<String>,
    /// EnableOut attribute
    #[serde(rename = "@EnableOut", default, skip_serializing_if = "Option::is_none")]
    pub enable_out: Option<String>,
    /// InAlarm attribute
    #[serde(rename = "@InAlarm", default, skip_serializing_if = "Option::is_none")]
    pub in_alarm: Option<String>,
    /// Acked attribute
    #[serde(rename = "@Acked", default, skip_serializing_if = "Option::is_none")]
    pub acked: Option<String>,
    /// InAlarmUnack attribute
    #[serde(rename = "@InAlarmUnack", default, skip_serializing_if = "Option::is_none")]
    pub in_alarm_unack: Option<String>,
    /// Suppressed attribute
    #[serde(rename = "@Suppressed", default, skip_serializing_if = "Option::is_none")]
    pub suppressed: Option<String>,
    /// Shelved attribute
    #[serde(rename = "@Shelved", default, skip_serializing_if = "Option::is_none")]
    pub shelved: Option<String>,
    /// Disabled attribute
    #[serde(rename = "@Disabled", default, skip_serializing_if = "Option::is_none")]
    pub disabled: Option<String>,
    /// AlarmCount attribute
    #[serde(rename = "@AlarmCount", default, skip_serializing_if = "Option::is_none")]
    pub alarm_count: Option<String>,
    /// InAlarmTime attribute
    #[serde(rename = "@InAlarmTime", default, skip_serializing_if = "Option::is_none")]
    pub in_alarm_time: Option<String>,
    /// AckTime attribute
    #[serde(rename = "@AckTime", default, skip_serializing_if = "Option::is_none")]
    pub ack_time: Option<String>,
    /// RetToNormalTime attribute
    #[serde(rename = "@RetToNormalTime", default, skip_serializing_if = "Option::is_none")]
    pub ret_to_normal_time: Option<String>,
    /// AlarmCountResetTime attribute
    #[serde(rename = "@AlarmCountResetTime", default, skip_serializing_if = "Option::is_none")]
    pub alarm_count_reset_time: Option<String>,
    /// ShelveTime attribute
    #[serde(rename = "@ShelveTime", default, skip_serializing_if = "Option::is_none")]
    pub shelve_time: Option<String>,
    /// UnshelveTime attribute
    #[serde(rename = "@UnshelveTime", default, skip_serializing_if = "Option::is_none")]
    pub unshelve_time: Option<String>,
    /// InstructFault attribute
    #[serde(rename = "@InstructFault", default, skip_serializing_if = "Option::is_none")]
    pub instruct_fault: Option<String>,
    /// InFaulted attribute
    #[serde(rename = "@InFaulted", default, skip_serializing_if = "Option::is_none")]
    pub in_faulted: Option<String>,
    /// SeverityInv attribute
    #[serde(rename = "@SeverityInv", default, skip_serializing_if = "Option::is_none")]
    pub severity_inv: Option<String>,
    /// Use attribute
    #[serde(rename = "@Use", default, skip_serializing_if = "Option::is_none")]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default, skip_serializing_if = "Option::is_none")]
    pub custom_properties: Option<CustomPropertiesCollection>,
}