You are on page 1of 566

1

2 DRAFT
3
4 ANSI C12.19-2012
5
6
7
8
9
10
11
12
13
14
15
16 American National Standard
17
18
19 For Utility Industry
20 End Device
21 Data Tables
22
23
24
25
26
27
28
29
30
31 Secretariat:
32
33 National Electrical Manufacturers Association
34
35 IEEE Number: 1377-2012
36 Measurement Canada Number: MC12.19-2012
37
38 Approved XXXX XX, XXXX
39 Revised October 17, 2012
40
41 American National Standards Institute, Inc.
42
DRAFT ANSI C12.19-2012

43 NOTICE AND DISCLAIMER


44
45 The information in this publication was considered technically sound by the consensus of persons
46 engaged in the development and approval of the document at the time it was developed. Consensus
47 does not necessarily mean that there is unanimous agreement among every person participating in the
48 development of this document.
49
50 NEMA standards and guideline publications, of which the document contained herein is one, are
51 developed through a voluntary consensus standards development process. This process brings together
52 volunteers and/or seeks out the views of persons who have an interest in the topic covered by this
53 publication. While NEMA administers the process and establishes rules to promote fairness in the
54 development of consensus, it does not write the document and it does not independently test, evaluate,
55 or verify the accuracy or completeness of any information or the soundness of any judgments contained
56 in its standards and guideline publications.
57
58 NEMA disclaims liability for any personal injury, property, or other damages of any nature whatsoever,
59 whether special, indirect, consequential, or compensatory, directly or indirectly resulting from the
60 publication, use of, application, or reliance on this document. NEMA disclaims and makes no guaranty or
61 warranty, express or implied, as to the accuracy or completeness of any information published herein,
62 and disclaims and makes no warranty that the information in this document will fulfill any of your particular
63 purposes or needs. NEMA does not undertake to guarantee the performance of any individual
64 manufacturer or seller’s products or services by virtue of this standard or guide.
65
66 In publishing and making this document available, NEMA is not undertaking to render professional or
67 other services for or on behalf of any person or entity, nor is NEMA undertaking to perform any duty owed
68 by any person or entity to someone else. Anyone using this document should rely on his or her own
69 independent judgment or, as appropriate, seek the advice of a competent professional in determining the
70 exercise of reasonable care in any given circumstances. Information and other standards on the topic
71 covered by this publication may be available from other sources, which the user may wish to consult for
72 additional views or information not covered by this publication.
73
74 NEMA has no power, nor does it undertake to police or enforce compliance with the contents of this
75 document. NEMA does not certify, test, or inspect products, designs, or installations for safety or health
76 purposes. Any certification or other statement of compliance with any health or safety-related information
77 in this document shall not be attributable to NEMA and is solely the responsibility of the certifier or maker
78 of the statement.
DRAFT ANSI C12.19-2012

79
80
81
Approval of an American National Standard requires verification by
AMERICAN ANSI that the requirements for due process, consensus, and other
NATIONAL criteria for approval have been met by the standards developer.

STANDARD Consensus is established when, in the judgment of the ANSI Board of


Standards Review, substantial agreement has been reached by directly
and materially affected interests. Substantial agreement means much
more than a simple majority, but not necessarily unanimity. Consensus
requires that all views and objections be considered, and that a
concerted effort be made toward their resolution.

The use of American National Standards is completely voluntary; their


existence does not in any respect preclude anyone, whether he has
approved the standards or not, from manufacturing, marketing,
purchasing, or using products, processes, or procedures not conforming
to the standards.

The American National Standards Institute does not develop standards


and will in no circumstances give an interpretation of any American
National Standard. Moreover, no person shall have the right or
authority to issue an interpretation of an American National Standard in
the name of the American National Standards Institute. Requests for
interpretations should be addressed to the secretariat or sponsor whose
name appears on the title page of this standard.

Caution Notice: This American National Standard may be revised or


withdrawn at any time. The procedures of the American National
Standards Institute require that action be taken periodically to reaffirm,
revise, or withdraw this standard. Purchasers of American National
Standards may receive current information on all standards by calling or
writing the American National Standards Institute.

82 Published by
83
84 National Electrical Manufacturers Association
85 1300 North 17th Street, Rosslyn, VA 22209
86
87 Copyright 2012 by National Electrical Manufacturers Association
88 All rights reserved including translation into other languages, reserved under the Universal Copyright
89 Convention, the Berne Convention for the Protection of Literary and Artistic Works, and the International
90 and Pan American Copyright Conventions.
91
92 No part of this publication may be reproduced in any form, in an electronic retrieval system or otherwise, without the
93 prior written permission of the publisher.
94
95 Printed in the United States of America

i
DRAFT ANSI C12.19-2012

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 This page intentionally left blank.

ii
DRAFT ANSI C12.19-2012

119 Table of Contents


120
121 Page

122 1 Overview ............................................................................................................................................................... 1


123 1.1 Scope ............................................................................................................................................................. 1
124 1.2 Purpose ..........................................................................................................................................................1
125 2 Normative references .............................................................................................................................................2
126 3 Definitions ............................................................................................................................................................. 4
127 4 General ................................................................................................................................................................ 12
128 4.1 Standard Tables ........................................................................................................................................... 12
129 4.1.1 Standard Tables grouping .................................................................................................................... 12
130 4.1.2 Standard Tables properties................................................................................................................... 12
131 4.1.3 Standard Procedure properties ............................................................................................................. 13
132 4.2 Manufacturer Tables .................................................................................................................................... 14
133 4.2.1 Manufacturer Tables grouping ............................................................................................................. 14
134 4.2.2 Manufacturer Tables properties ........................................................................................................... 14
135 4.2.3 Manufacturer Procedure properties ...................................................................................................... 15
136 4.3 Packed Record, Bit Field, and Element properties ...................................................................................... 16
137 4.4 Extended User-defined Tables properties .................................................................................................... 16
138 5 Syntax .................................................................................................................................................................. 17
139 5.1 Descriptive syntax ....................................................................................................................................... 17
140 6 Special data types ................................................................................................................................................ 18
141 6.1 Character set selection ................................................................................................................................. 18
142 6.2 Noninteger formats ...................................................................................................................................... 18
143 6.2.1 STRING Numbers ............................................................................................................................... 19
144 6.3 Date and time formats .................................................................................................................................. 20
145 6.3.1 HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME types ............................. 20
146 6.3.2 RDATE type ........................................................................................................................................ 25
147 6.3.3 DATE Type ......................................................................................................................................... 27
148 6.4 Common table or procedure identifier formats ............................................................................................ 28
149 6.4.1 TABLE_IDA_BFLD bit field .............................................................................................................. 28
150 6.4.2 TABLE_IDB_BFLD bit field .............................................................................................................. 29
151 6.4.3 TABLE_IDC_BFLD bit field .............................................................................................................. 30
152 6.4.4 SOURCE_SELECT_RCD ................................................................................................................... 30
153 7 Compliance and compatibility ............................................................................................................................. 32
154 7.1 Compliance .................................................................................................................................................. 32
155 7.2 Backward and forward compatibility........................................................................................................... 33
156 8 Table transportation issues .................................................................................................................................. 34
157 8.1 Minimum services and parameters .............................................................................................................. 34
158 8.1.1 Read Service ........................................................................................................................................ 34
159 8.1.2 Write Service ....................................................................................................................................... 35
160 8.1.3 Partial table access using the Index/Element-count method ................................................................ 36
161 8.1.4 Partial table access using the Offset/Octet-count method .................................................................... 38
162 8.1.5 Index count access method examples .................................................................................................. 39
163 8.2 Pending Event description ........................................................................................................................... 39
164 8.3 List management description ....................................................................................................................... 42

iii
DRAFT ANSI C12.19-2012

165 9 Tables .................................................................................................................................................................. 45


166 9.1 Decade 0: General Configuration Tables ..................................................................................................... 45
167 9.1.1 Table 00 General Configuration Table ................................................................................................ 45
168 9.1.2 Table 01 General Manufacturer Identification Table ........................................................................... 51
169 9.1.3 Table 02 Device Nameplate Table ....................................................................................................... 52
170 9.1.4 Table 03 End Device Mode Status Table............................................................................................. 60
171 9.1.5 Table 04 Pending Status Table ............................................................................................................ 63
172 9.1.6 Table 05 Device Identification Table................................................................................................... 65
173 9.1.7 Table 06 Utility Information Table ...................................................................................................... 66
174 9.1.8 Table 07 Procedure Initiate Table ........................................................................................................ 69
175 9.1.9 Table 08 Procedure Response Table .................................................................................................... 74
176 9.1.10 Standard Procedures ............................................................................................................................ 79
177 9.1.10.1 Procedure 00 Cold Start ............................................................................................................................... 79
178 9.1.10.2 Procedure 01 Warm Start ............................................................................................................................. 79
179 9.1.10.3 Procedure 02 Save Configuration ................................................................................................................ 79
180 9.1.10.4 Procedure 03 Clear Data .............................................................................................................................. 79
181 9.1.10.5 Procedure 04 Reset List Pointers ................................................................................................................. 79
182 9.1.10.6 Procedure 05 Update Last Read Entry ......................................................................................................... 80
183 9.1.10.7 Procedure 06 Change End Device Mode ..................................................................................................... 81
184 9.1.10.8 Procedure 07 Clear Standard Status Flags ................................................................................................... 82
185 9.1.10.9 Procedure 08 Clear Manufacturer Status Flags ............................................................................................ 82
186 9.1.10.10 Procedure 09 Remote Reset ......................................................................................................................... 83
187 9.1.10.11 Procedure 10 Set Date and/or Time ............................................................................................................. 84
188 9.1.10.12 Procedure 11 Execute Diagnostics Procedure.............................................................................................. 87
189 9.1.10.13 Procedure 12 Activate All Pending Tables .................................................................................................. 87
190 9.1.10.14 Procedure 13 Activate Specific Pending Table(s)........................................................................................ 87
191 9.1.10.15 Procedure 14 Clear All Pending Tables ....................................................................................................... 87
192 9.1.10.16 Procedure 15 Clear Specific Pending Table(s) ............................................................................................ 88
193 9.1.10.17 Procedure 16 Start Load Profile ................................................................................................................... 88
194 9.1.10.18 Procedure 17 Stop Load Profile ................................................................................................................... 88
195 9.1.10.19 Procedure 18 Log In .................................................................................................................................... 88
196 9.1.10.20 Procedure 19 Log Out.................................................................................................................................. 89
197 9.1.10.21 Procedure 20 Initiate an Immediate Call ...................................................................................................... 89
198 9.1.10.22 Procedure 21 Direct Load Control ............................................................................................................... 90
199 9.1.10.23 Procedure 22 Modify Credit ........................................................................................................................ 91
200 9.1.10.24 Procedure 23 Reserved ................................................................................................................................ 91
201 9.1.10.25 Procedure 24 Reserved ................................................................................................................................ 91
202 9.1.10.26 Procedure 25 Reserved ................................................................................................................................ 92
203 9.1.10.27 Procedure 26 Reserved ................................................................................................................................ 92
204 9.1.10.28 Procedure 27 Clear Pending Call Status ...................................................................................................... 92
205 9.1.10.29 Procedure 28 Start Quality-of-service Monitors .......................................................................................... 92
206 9.1.10.30 Procedure 29 Stop Quality-of-service Monitors .......................................................................................... 92
207 9.1.10.31 Procedure 30 Start Secured Register ............................................................................................................ 92
208 9.1.10.32 Procedure 31 Stop Secured Register ............................................................................................................ 94
209 9.1.10.33 Procedure 32 Set Precision Date and/or Time ............................................................................................. 95
210 9.2 Decade 1: Data Source Tables ..................................................................................................................... 97
211 9.2.1 Table 10 Data Source Dimension Limits Table ................................................................................... 98
212 9.2.2 Table 11 Actual Data Sources Limiting Table................................................................................... 101
213 9.2.3 Table 12 Units of Measure Entry Table ............................................................................................. 103
214 9.2.4 Table 13 Demand Control Table........................................................................................................ 112
215 9.2.5 Table 14 Data Control Table.............................................................................................................. 114
216 9.2.6 Table 15 Constants Table .................................................................................................................. 115
217 9.2.7 Table 16 Source Definition Table ...................................................................................................... 121
218 9.2.8 Table 17 Transformer Loss Compensation Table .............................................................................. 123
219 9.3 Decade 2: Register Tables ......................................................................................................................... 125
220 9.3.1 Table 20 Register Dimension Limits Table ....................................................................................... 125
221 9.3.2 Table 21 Actual Register Limiting Table .......................................................................................... 128
222 9.3.3 Table 22 Data Selection Table ........................................................................................................... 130
iv
DRAFT ANSI C12.19-2012

223 9.3.4 Table 23 Current Register Data Table ............................................................................................... 132


224 9.3.5 Table 24 Previous Season Data Table ............................................................................................... 134
225 9.3.6 Table 25 Previous Demand Reset Data Table.................................................................................... 135
226 9.3.7 Table 26 Self-read Data Table ........................................................................................................... 136
227 9.3.8 Table 27 Present Register Selection Table ........................................................................................ 138
228 9.3.9 Table 28 Present Register Data Table ................................................................................................ 139
229 9.4 Decade 3: Local Display Tables ................................................................................................................ 140
230 9.4.1.1 Table 30 Display Dimension Limits Table..................................................................................................... 140
231 9.4.2 Table 31 Actual Display Limiting Table ........................................................................................... 142
232 9.4.3 Table 32 Display Source Table .......................................................................................................... 144
233 9.4.4 Table 33 Primary Display List Table ................................................................................................. 145
234 9.4.5 Table 34 Secondary Display List Table ............................................................................................. 147
235 9.5 Decade 4: Security Tables ......................................................................................................................... 149
236 9.5.1 Table 40 Security Dimension Limits Table ....................................................................................... 149
237 9.5.2 Table 41 Actual Security Limiting Table .......................................................................................... 151
238 9.5.3 Table 42 Security Table ..................................................................................................................... 152
239 9.5.4 Table 43 Default Access Control Table ............................................................................................. 154
240 9.5.5 Table 44 Access Control Table .......................................................................................................... 156
241 9.5.6 Table 45 Key Table............................................................................................................................ 158
242 9.5.7 Table 46 Reserved ............................................................................................................................. 158
243 9.5.8 Table 47 Reserved ............................................................................................................................. 158
244 9.6 Decade 5: Time and Time-of-Use Tables .................................................................................................. 159
245 9.6.1 Table 50 Time and TOU Dimension Limits Table ............................................................................ 161
246 9.6.2 Table 51 Actual Time and TOU Limiting Table ............................................................................... 164
247 9.6.3 Table 52 Clock Table ......................................................................................................................... 167
248 9.6.4 Table 53 Time Offset Table ............................................................................................................... 169
249 9.6.5 Table 54 Calendar Table .................................................................................................................... 170
250 9.6.6 Table 55 Clock State Table ................................................................................................................ 176
251 9.6.7 Table 56 Time Remaining Table ....................................................................................................... 178
252 9.6.8 Table 57 Precision Clock State Table ................................................................................................ 179
253 9.7 Decade 6: Load Profile Tables................................................................................................................... 180
254 9.7.1 Table 60 Load Profile Dimension Limits Table ................................................................................ 180
255 9.7.2 Table 61 Actual Load Profile Limiting Table .................................................................................... 185
256 9.7.3 Table 62 Load Profile Control Table ................................................................................................. 189
257 9.7.4 Table 63 Load Profile Status Table ................................................................................................... 193
258 9.7.5 Table 64 Load Profile Data Set One Table ........................................................................................ 196
259 9.7.6 Table 65 Load Profile Data Set Two Table ....................................................................................... 200
260 9.7.7 Table 66 Load Profile Data Set Three Table ..................................................................................... 203
261 9.7.8 Table 67 Load Profile Data Set Four Table ....................................................................................... 206
262 9.8 Decade 7: History Log and Event Log Tables ........................................................................................... 209
263 9.8.1 Table 70 Log Dimension Limits Table .............................................................................................. 212
264 9.8.2 Table 71 Actual Log Limiting Table ................................................................................................. 215
265 9.8.3 Table 72 Events Identification Table ................................................................................................. 218
266 9.8.4 Table 73 History Log Control Table .................................................................................................. 219
267 9.8.5 Table 74 History Log Data Table ...................................................................................................... 221
268 9.8.6 Table 75 Event Log Control Table .................................................................................................... 224
269 9.8.7 Table 76 Event Log Data Table ......................................................................................................... 226
270 9.8.8 Table 77 Event Log and Signatures Enable Table ............................................................................. 229
271 9.8.9 Table 78 End Device Program State Table ........................................................................................ 232
272 9.8.10 Table 79 Event Counters Table.......................................................................................................... 236
273 9.9 Decade 8: User-defined Tables .................................................................................................................. 237
274 9.9.1 Table 80 User-defined Tables Dimension Limits Table .................................................................... 237
275 9.9.2 Table 81 Actual User-defined Tables Limiting Table ....................................................................... 240
276 9.9.3 Table 82 User-defined Tables List Table........................................................................................... 242
277 9.9.4 Table 83 User-defined Tables Selections Table................................................................................. 244
v
DRAFT ANSI C12.19-2012

278 9.9.5 Table 84 User-defined Table Zero ..................................................................................................... 245


279 9.9.6 Table 85 User-defined Table One ...................................................................................................... 246
280 9.9.7 Table 86 User-defined Table Two ..................................................................................................... 247
281 9.9.8 Table 87 User-defined Table Three ................................................................................................... 248
282 9.9.9 Table 88 User-defined Table Four ..................................................................................................... 249
283 9.9.10 Table 89 User-defined Table Five ..................................................................................................... 250
284 9.10 Decade 9: Telephone Control Tables ......................................................................................................... 251
285 9.10.1 Table 90 Telephone Dimension Limits Table .................................................................................... 251
286 9.10.2 Table 91 Actual Telephone Limiting Table ....................................................................................... 254
287 9.10.3 Table 92 Telephone Global Parameters Table ................................................................................... 256
288 9.10.4 Table 93 Telephone Call Originate Parameters Table ....................................................................... 258
289 9.10.5 Table 94 Telephone Call Originate Schedule Table .......................................................................... 261
290 9.10.6 Table 95 Telephone Call Answer Parameters .................................................................................... 264
291 9.10.7 Table 96 Originating Telephone Call Purpose ................................................................................... 266
292 9.10.8 Table 97 Last Telephone Call Status ................................................................................................. 268
293 9.10.9 Table 98 Telephone Call Originate Status ......................................................................................... 270
294 9.11 Decade 10: Unassigned .............................................................................................................................. 272
295 9.12 Decade 11: Load Control and Pricing Tables ............................................................................................ 273
296 9.12.1 Table 110 Load Control Dimension Limits Table ............................................................................. 274
297 9.12.2 Table 111 Actual Load Control Limiting Table ................................................................................ 277
298 9.12.3 Table 112 Load Control Status .......................................................................................................... 279
299 9.12.4 Table 113 Load Control Configuration .............................................................................................. 281
300 9.12.5 Table 114 Load Control Schedule ..................................................................................................... 283
301 9.12.6 Table 115 Load Control Conditions .................................................................................................. 286
302 9.12.7 Table 116 Prepayment Status............................................................................................................. 289
303 9.12.8 Table 117 Prepayment Control .......................................................................................................... 290
304 9.12.9 Table 118 Billing Control .................................................................................................................. 291
305 9.13 Decade 12: Reserved ................................................................................................................................. 293
306 9.14 Decade 13: Reserved ................................................................................................................................. 293
307 9.15 Decade 14: Extended User-defined Tables ................................................................................................ 294
308 9.15.1 Table 140 Extended User-defined Tables Function Limiting Table .................................................. 295
309 9.15.2 Table 141 Extended User-defined Tables Actual Limits Table ......................................................... 297
310 9.15.3 Table 142 Extended User-defined Selections Table .......................................................................... 298
311 9.15.4 Table 143 Extended User-defined Constants Table ........................................................................... 305
312 9.16 Decade 15: Quality-of-service ................................................................................................................... 306
313 9.16.1 Table 150 Quality-of-service Dimension Limits Table ..................................................................... 309
314 9.16.2 Table 151 Actual Quality-of-Service Limiting Table ........................................................................ 317
315 9.16.3 Table 152 Quality-of-service Control Table ...................................................................................... 324
316 9.16.4 Table 153 Quality-of-service Incidents Table.................................................................................... 337
317 9.16.5 Table 154 Quality-of-service Log Table ............................................................................................ 340
318 9.16.6 Table 155 Asynchronous Time-Domain Waveforms Table .............................................................. 342
319 9.16.7 Table 156 Asynchronous Frequency-Domain Spectrum Table ......................................................... 345
320 9.16.8 Table 157 Periodic Time Domain Waveforms Table ........................................................................ 349
321 9.16.9 Table 158 Periodic Frequency-Domain Spectrum Table ................................................................... 352
322 9.17 Decade 16: One-way Devices .................................................................................................................... 355
323 9.17.1 Table 160 One-way Dimension Limits Table .................................................................................... 355
324 9.17.2 Table 161 Actual One-way Table ...................................................................................................... 359
325 9.17.3 Table 162 One-way Control Table .................................................................................................... 362
326 9.17.4 Table 163 One-way Data Status Table .............................................................................................. 365
327 9.17.5 Table 164 One-way Commands/Responses/Extended User-defined Tables Table ........................... 368
328 Annex A (informative) Reserved Device Classes for meter equipment manufacturers implementing ANSI
329 C12.19-1997 devices ................................................................................................................................................. 370
330 Annex B (normative) History and event log codes ............................................................................................... 371

vi
DRAFT ANSI C12.19-2012

331 B.1 Codes ......................................................................................................................................................... 371


332 B.2 Logger arguments implementation details ................................................................................................. 373
333 B.3 Logger codes interpretation details ............................................................................................................ 376
334 Annex C (normative) Default Sets for Decade Tables .......................................................................................... 381
335 Annex D (normative) Indices for partial table read/write access .......................................................................... 387
336 Annex E (informative) Event Logger implementation ......................................................................................... 389
337 E.1 Background ................................................................................................................................................ 389
338 E.2 Signature algorithm ................................................................................................................................... 390
339 Annex F (informative) Transformer losses compensation ................................................................................... 392
340 F.1 Transformer losses consideration .............................................................................................................. 392
341 F.1.1 No-load loss and exciting current ...................................................................................................... 392
342 F.1.2 Load loss ............................................................................................................................................ 392
343 F.1.3 Transformer losses compensation ...................................................................................................... 392
344 F.2 Transformer loss compensation calculations ............................................................................................. 393
345 F.3 Transformer loss compensation calculation example ................................................................................ 394
346 Annex G (normative) Document-form descriptive syntax .................................................................................... 395
347 G.1 General notes on symbols, rules, and their meaning .................................................................................. 395
348 G.2 Extended BNF symbols and meaning ........................................................................................................ 395
349 G.3 Flow of information ................................................................................................................................... 402
350 G.4 Identifiers ................................................................................................................................................... 402
351 G.5 Basic data types ......................................................................................................................................... 407
352 G.5.1 Basic data type definitions ................................................................................................................. 409
353 G.5.2 Data type handling ............................................................................................................................. 411
354 G.5.2.1 Signed integers .......................................................................................................................................... 412
355 G.5.2.2 Characters and strings ................................................................................................................................ 412
356 G.5.2.3 Noninteger numbers................................................................................................................................... 412
357 G.5.2.4 Date and time formats ................................................................................................................................ 412
358 G.6 References to types, constants, and values ................................................................................................ 413
359 G.6.1 Scoping rules ..................................................................................................................................... 413
360 G.6.1.1 Predefined STD and TDL scopes .............................................................................................................. 413
361 G.6.1.2 Container scopes ........................................................................................................................................ 415
362 G.6.2 References to values .......................................................................................................................... 416
363 G.6.3 Value .................................................................................................................................................. 419
364 G.7 Conditionals ............................................................................................................................................... 422
365 G.7.1 IF statements ...................................................................................................................................... 422
366 G.7.2 SWITCH statements .......................................................................................................................... 422
367 G.8 BIT FIELD type ......................................................................................................................................... 422
368 G.9 SET type .................................................................................................................................................... 423
369 G.10 ARRAY type ............................................................................................................................................. 424
370 G.11 PACKED RECORD type .......................................................................................................................... 424
371 G.12 Constants ................................................................................................................................................... 425
372 G.13 Tables......................................................................................................................................................... 425
373 G.14 Procedures ................................................................................................................................................. 425
374 G.15 Single-Line Math Expressions ................................................................................................................... 427
375 G.16 Properties ................................................................................................................................................... 429
376 G.17 Document Form Starting Production Rule ................................................................................................ 430
377 Annex H (informative) Date-time elements conversion algorithm (TM_FORMAT=3 and TM_FORMAT=4) . 431
378 Annex I (normative) XML file format of TDL and EDL files ............................................................................ 433
379 I.1 Overview of the TDL/EDL XML document framework ........................................................................... 433
380 I.1.1 TDL/EDL files and terminology ............................................................................................................ 433
vii
DRAFT ANSI C12.19-2012

381 I.2 TDL XML File Format of the TDL Document .......................................................................................... 438
382 I.2.1 <tdl> Root Element................................................................................................................................ 438
383 I.2.1.1 <tdl> DTD...................................................................................................................................................... 438
384 I.2.1.2 <tdl> Attributes .............................................................................................................................................. 438
385 I.2.1.3 <tdl> Document Form .................................................................................................................................... 439
386 I.2.2 <description> element ........................................................................................................................... 439
387 I.2.2.1 <description> DTD ........................................................................................................................................ 440
388 I.2.2.2 <description> Attributes ................................................................................................................................ 440
389 I.2.2.3 <description> Child Elements ........................................................................................................................ 440
390 I.2.2.4 <description> Child DTDs ............................................................................................................................. 440
391 I.2.2.5 <description> Child Elements Summary........................................................................................................ 442
392 I.2.2.6 <p> Attributes ................................................................................................................................................ 443
393 I.2.2.7 <blockquote> Attributes ................................................................................................................................ 443
394 I.2.2.8 <ol> Attributes ............................................................................................................................................... 443
395 I.2.2.9 <ul> Attributes ............................................................................................................................................... 443
396 I.2.2.10 <ol> and <ul> subelement usage ............................................................................................................... 444
397 I.2.2.11 <dt> and <dd> subelement usage of <dl>.................................................................................................. 444
398 I.2.2.12 <object> Attributes .................................................................................................................................... 444
399 I.2.2.13 <table> Attributes ...................................................................................................................................... 445
400 I.2.2.14 <caption>, <col>, <thead>, <tfoot> and <tbody> sub-element usage of <table> ...................................... 445
401 I.2.2.15 <description> Document Form .................................................................................................................. 446
402 I.2.2.16 <extension> Element ................................................................................................................................. 447
403 I.2.2.17 <extension> DTD ...................................................................................................................................... 447
404 I.2.2.18 <extension> Attributes .............................................................................................................................. 447
405 I.2.2.19 <extension> Document Form .................................................................................................................... 447
406 I.2.3 <assert> Element ................................................................................................................................... 448
407 I.2.3.1 <assert> DTD (named) ................................................................................................................................... 448
408 I.2.3.2 <assert> Attributes ......................................................................................................................................... 448
409 I.2.4 <enumerator> Element .......................................................................................................................... 448
410 I.2.4.1 <enumerator> DTD (named) .......................................................................................................................... 448
411 I.2.4.2 <enumerator> Attributes (named) .................................................................................................................. 449
412 I.2.4.3 <enumerator> Document Form (named) ........................................................................................................ 451
413 I.2.5 Constant enumerated values of <enumerator> (named) ........................................................................ 452
414 I.2.5.1 Constant enumerated values DTD .................................................................................................................. 452
415 I.2.5.2 <enumerator> DTD (un-named) .................................................................................................................... 452
416 I.2.6 <enum> Element (Child of <enumerator>) ........................................................................................... 452
417 I.2.6.1 <enum> DTD ................................................................................................................................................. 453
418 I.2.6.2 <enum> Attributes ......................................................................................................................................... 453
419 I.2.6.3 <enum> Document Form ............................................................................................................................... 453
420 I.2.7 <default> element (Child of <enumerator> element) ............................................................................ 454
421 I.2.7.1 <default> DTD ............................................................................................................................................... 454
422 I.2.7.2 <default> Attributes ....................................................................................................................................... 454
423 I.2.7.3 <default> Document Form ............................................................................................................................. 454
424 I.2.8 <packedRecord> Element ...................................................................................................................... 454
425 I.2.8.1 <packedRecord> DTD ................................................................................................................................... 455
426 I.2.8.2 <packedRecord> Attributes ........................................................................................................................... 455
427 I.2.8.3 <packedRecord> Document Form ................................................................................................................. 457
428 I.2.9 <element> Element (Child of <packedRecord>) ................................................................................... 458
429 I.2.9.1 <element> DTD ............................................................................................................................................. 458
430 I.2.9.2 <element> Attributes...................................................................................................................................... 458
431 I.2.9.3 <element> Document Form ........................................................................................................................... 459
432 I.2.10 <array> Element (Child of <packedRecord>) ................................................................................... 460
433 I.2.10.1 <array> DTD ............................................................................................................................................. 460
434 I.2.10.2 <array> Attributes...................................................................................................................................... 460
435 I.2.10.3 <array> Document Form ........................................................................................................................... 462
436 I.2.11 <set> Element (Child of <packedRecord> element) .......................................................................... 462
437 I.2.11.1 <set> DTD ................................................................................................................................................. 462
438 I.2.11.2 <set> Attributes ......................................................................................................................................... 463
439 I.2.11.3 <set> Document Form ............................................................................................................................... 464
440 I.2.12 <if> Element (Child of <packedRecord>) ......................................................................................... 464
viii
DRAFT ANSI C12.19-2012

441 I.2.12.1 <if> DTD (Child of <packedRecord>) ...................................................................................................... 464


442 I.2.12.2 <if> Attributes (Child of <packedRecord>)............................................................................................... 464
443 I.2.12.3 <if> Document Form ................................................................................................................................. 465
444 I.2.12.4 <then> Element (Child of <packedRecord>/<if>) ..................................................................................... 465
445 I.2.12.5 <then> DTD .............................................................................................................................................. 465
446 I.2.12.6 <then> Attributes ....................................................................................................................................... 465
447 I.2.12.7 <then> Document Form............................................................................................................................. 465
448 I.2.13 <else> Element (Child of <packedRecord>/<if>) ............................................................................. 465
449 I.2.13.1 <else> DTD ............................................................................................................................................... 465
450 I.2.13.2 <else> Attributes ....................................................................................................................................... 465
451 I.2.13.3 <else> Document Form ............................................................................................................................. 465
452 I.2.14 <switch> Element (Child of <packedRecord>) ................................................................................. 467
453 I.2.14.1 <switch> DTD ........................................................................................................................................... 467
454 I.2.14.2 <switch> Attributes ................................................................................................................................... 467
455 I.2.14.3 <switch> Document Form ......................................................................................................................... 467
456 I.2.14.4 <case> Element (Child of <packedRecord>/<switch>) ............................................................................. 467
457 I.2.14.5 <case> DTD .............................................................................................................................................. 467
458 I.2.14.6 <case> Attributes ....................................................................................................................................... 468
459 I.2.14.7 <case> Document Form............................................................................................................................. 468
460 I.2.14.8 <default> element (Child of <packedRecord>/<switch>) ......................................................................... 468
461 I.2.14.9 <default> DTD .......................................................................................................................................... 468
462 I.2.14.10 <default> Attributes ................................................................................................................................... 468
463 I.2.14.11 <default> Document Form ........................................................................................................................ 468
464 I.2.15 <bitField> element ............................................................................................................................. 470
465 I.2.15.1 <bitField> DTD ......................................................................................................................................... 470
466 I.2.15.2 <bitField> Attributes ................................................................................................................................. 471
467 I.2.15.3 <bitField> Document Form ....................................................................................................................... 473
468 I.2.16 <subElement> Element (Child of <bitField>) ................................................................................... 474
469 I.2.16.1 <subElement> DTD ................................................................................................................................... 474
470 I.2.16.2 <subElement> Attributes ........................................................................................................................... 475
471 I.2.16.3 <subElement> Document Form Equivalent ............................................................................................... 476
472 I.2.17 <if> Element (Child of <bitField>) ................................................................................................... 476
473 I.2.17.1 <if> DTD ................................................................................................................................................... 476
474 I.2.17.2 <if> Attributes ........................................................................................................................................... 476
475 I.2.17.3 <if> Document Form ................................................................................................................................. 476
476 I.2.18 <then> Element (Child of <bitField>/<if>) ....................................................................................... 477
477 I.2.18.1 <then> DTD .............................................................................................................................................. 477
478 I.2.18.2 Attributes ................................................................................................................................................... 477
479 I.2.18.3 <then> Document Form............................................................................................................................. 477
480 I.2.19 <else> Element (Child of <bitField>/<if>) ........................................................................................ 477
481 I.2.19.1 <else> DTD definition ............................................................................................................................... 477
482 I.2.19.2 <else> Attributes ....................................................................................................................................... 477
483 I.2.19.3 <else> Document Form ............................................................................................................................. 477
484 I.2.20 <switch> Element (Child of <bitField>)............................................................................................ 477
485 I.2.20.1 <switch> DTD ........................................................................................................................................... 478
486 I.2.20.2 <switch> Attributes ................................................................................................................................... 478
487 I.2.20.3 <switch> Document Form ......................................................................................................................... 478
488 I.2.21 <case> Element (Child of <bitField>/<switch>) ............................................................................... 478
489 I.2.21.1 <case> DTD .............................................................................................................................................. 478
490 I.2.21.2 <case> Attributes ....................................................................................................................................... 478
491 I.2.21.3 <case> Document Form............................................................................................................................. 478
492 I.2.22 <default> Element (Child of <bitField>/<switch>) ........................................................................... 478
493 I.2.22.1 <default> DTD .......................................................................................................................................... 479
494 I.2.22.2 <default> Attributes ................................................................................................................................... 479
495 I.2.22.3 <default> Document Form ........................................................................................................................ 479
496 I.2.23 <decade> Element (Child of <tdl>) ................................................................................................... 479
497 I.2.23.1 <decade> DTD .......................................................................................................................................... 479
498 I.2.23.2 <decade> Attributes................................................................................................................................... 479
499 I.2.23.3 <decade> Document Form ........................................................................................................................ 480
500 I.2.24 <table> Element (Child of <tdl> or <decade>).................................................................................. 480
ix
DRAFT ANSI C12.19-2012

501 I.2.24.1 <table> DTD .............................................................................................................................................. 480


502 I.2.24.2 <table> Attributes ...................................................................................................................................... 481
503 I.2.24.3 <table> Document Form ............................................................................................................................ 483
504 I.2.25 <procedure> Element (Child of <tdl> or <decade>) ......................................................................... 484
505 I.2.25.1 <procedure> DTD...................................................................................................................................... 485
506 I.2.25.2 <procedure> Attributes .............................................................................................................................. 485
507 I.2.25.3 <procedure> Document Form.................................................................................................................... 486
508 I.2.26 <extend> Element (Child of <procedure>) ........................................................................................ 487
509 I.2.26.1 <extend> DTD definition .......................................................................................................................... 487
510 I.2.26.2 <extend> Attributes ................................................................................................................................... 488
511 I.2.26.3 <extend> Document Form ......................................................................................................................... 488
512 I.2.27 <qualify> Element (Child of <tdl>) ................................................................................................... 488
513 I.2.27.1 <qualify> DTD .......................................................................................................................................... 488
514 I.2.27.2 <qualify> Attributes .................................................................................................................................. 488
515 I.2.27.3 <qualify> Document Form ........................................................................................................................ 488
516 I.2.28 <table> element (Child of <qualify> element) .................................................................................. 489
517 I.2.28.1 <table> DTD definition ............................................................................................................................. 489
518 I.2.28.2 <table> Attributes ...................................................................................................................................... 489
519 I.2.29 <procedure> Element (Child of <qualify>) ....................................................................................... 489
520 I.2.29.1 <procedure> DTD...................................................................................................................................... 490
521 I.2.29.2 <procedure> Attributes .............................................................................................................................. 490
522 I.2.30 <element> Element (Child of <qualify>) .......................................................................................... 490
523 I.2.30.1 <element> DTD ......................................................................................................................................... 490
524 I.2.30.2 <element> Attributes ................................................................................................................................. 491
525 I.2.31 <packedRecord> Element (Child of <qualify>) ................................................................................ 491
526 I.2.31.1 <packedRecord> DTD ............................................................................................................................... 491
527 I.2.31.2 Attributes ................................................................................................................................................... 491
528 I.2.32 <bitField> Element (Child of <qualify>) ........................................................................................... 491
529 I.2.32.1 <bitField> DTD ......................................................................................................................................... 492
530 I.2.32.2 <bitField> Attributes ................................................................................................................................. 492
531 I.2.33 <assert> Element (Child of <qualify>) .............................................................................................. 492
532 I.2.33.1 <assert> DTD ............................................................................................................................................ 492
533 I.2.33.2 <assert> Attributes..................................................................................................................................... 492
534 I.3 EDL XML Format ..................................................................................................................................... 492
535 I.3.1 Overview ............................................................................................................................................... 492
536 I.3.2 <edl> Root Element ............................................................................................................................... 493
537 I.3.2.1 <edl> DTD ..................................................................................................................................................... 493
538 I.3.2.2 <edl> Attributes ............................................................................................................................................. 494
539 I.3.2.3 <edl> Document Form ................................................................................................................................... 494
540 I.3.3 <description> Element (Child of <edl>) ................................................................................................ 494
541 I.3.3.1 <description> DTD ........................................................................................................................................ 495
542 I.3.3.2 <description> Document Form ...................................................................................................................... 495
543 I.3.4 Pseudo Element Names ......................................................................................................................... 495
544 I.3.5 Resolving Second Edition XML Schema Constraints ........................................................................... 496
545 I.3.5.1 The Schema Constraints Problem .................................................................................................................. 496
546 I.3.5.2 Resolution of The Schema Constraints Problem ............................................................................................ 497
547 I.3.6 <${if-switch-clause}> Element ............................................................................................................. 497
548 I.3.6.1 <${if-switch-clause}> DTD ........................................................................................................................... 497
549 I.3.7 <defaultSet> Element (Child of <edl>) ................................................................................................. 497
550 I.3.7.1 <defaultSet> DTD .......................................................................................................................................... 498
551 I.3.7.2 <defaultSet> Attributes .................................................................................................................................. 498
552 I.3.7.3 <defaultSet> Document Form ........................................................................................................................ 498
553 I.3.8 <${limitingTableName}> Element (Child of <defaultSet>) ................................................................. 500
554 I.3.8.1 <${limitingTableName}> DTD ..................................................................................................................... 500
555 I.3.8.2 <${limitingTableName}> Attributes ............................................................................................................. 501
556 I.3.8.3 <${limitingTableName}> Document Form ................................................................................................... 501
557 I.3.9 <data> Element (Child of <edl>) ........................................................................................................... 501
558 I.3.9.1 <data> DTD ................................................................................................................................................... 501
559 I.3.9.2 <data> Document Form ................................................................................................................................. 501
x
DRAFT ANSI C12.19-2012

560 I.3.10 <${tableName}> Element ................................................................................................................. 501


561 I.3.10.1 <${tableName}> DTD .............................................................................................................................. 501
562 I.3.10.2 <${tableName}> Attributes ....................................................................................................................... 502
563 I.3.10.3 <${tableName}>Document Form.............................................................................................................. 502
564 I.3.11 <${elementName}> Element ............................................................................................................. 502
565 I.3.11.1 <${elementName}> DTD .......................................................................................................................... 502
566 I.3.11.2 <${elementName}> Attributes .................................................................................................................. 502
567 I.3.11.3 <${elementName}> Document Form ........................................................................................................ 503
568 I.3.12 <entry> Element ................................................................................................................................ 503
569 I.3.12.1 <entry> DTD ............................................................................................................................................. 504
570 I.3.12.2 <entry> Attributes...................................................................................................................................... 504
571 I.3.12.3 <entry> Document Form ........................................................................................................................... 504
572 I.3.13 <pendingHeader> element ................................................................................................................. 505
573 I.3.13.1 <pendingHeader> DTD ............................................................................................................................. 505
574 I.3.13.2 <pendingHeader> Document Form ........................................................................................................... 506
575 I.4 EDL XML Form Encoding of Final Element Values ................................................................................ 506
576 Annex J (normative) Universal Identifier ............................................................................................................ 508
577 Annex K (informative) Algorithms for the conversion of Table Element values to engineering units ................. 509
578 K.1 Locating conversion factors from Decade 1 .............................................................................................. 509
579 K.2 De-normalizing interval data elements ...................................................................................................... 512
580 K.3 Converting to engineering units at the point of metering .......................................................................... 513
581 K.4 Converting to engineering units at the point of delivery ............................................................................ 515
582 K.5 Assigning engineering units ....................................................................................................................... 515
583 K.6 Assigning fundamental engineering units .................................................................................................. 515
584 K.7 Table value to engineering units conversion: An example ........................................................................ 516
585 Annex L (informative) Registering or updating DEVICE CLASS OID ............................................................... 519
586 L.1 Binding a Device Class to End Device operating model ........................................................................... 519
587 L.2 End Devices referencing the Standard’s Device Class .............................................................................. 522
588 L.3 Practical examples and use-cases............................................................................................................... 522
589 L.3.1 Examples: Initial registration condition—an empty TDL.................................................................. 522
590 L.3.1.1 Case 1: Exposing manufacturer’s content ...................................................................................................... 522
591 L.3.1.2 Case 2: Changing End Device behavior ......................................................................................................... 526
592 L.3.2 Examples: Initial registration conditions—nonempty TDL ............................................................... 528
593 L.3.2.1 Case 1: Appending a new element to an existing table .................................................................................. 529
594 L.3.2.2 Case 2: Inserting a new element into an existing table ................................................................................... 531
595 L.3.2.3 Case 3: Modifying an element of an existing table ........................................................................................ 532
596 L.3.2.4 Case 4: Modifying a constant element in a table ............................................................................................ 533
597 L.3.2.5 Case 5: Adding a new Table to an End Device .............................................................................................. 535
598 Annex M (informative) Bibliography .................................................................................................................... 537
599 Annex N (informative) Historical Background ..................................................................................................... 538
600 N.1 Foreword of American National Standard C12.19-1997 ........................................................................... 538
601 N.2 Foreword of American National Standard C12.19-2008 ........................................................................... 540
602
603

xi
DRAFT ANSI C12.19-2012

604 Table of Figures


605
606 Figure 4-1—Possible combinations of FLC, FLC+1, and Decade Tables .................................................................. 12
607 Figure 4-2—Default Standard Tables properties ......................................................................................................... 13
608 Figure 4-3—Default Standard Tables 7, 8, and Procedures properties ........................................................................ 14
609 Figure 4-4—Default Manufacturer Tables properties ................................................................................................. 15
610 Figure 4-5—Default Manufacturer Procedures properties .......................................................................................... 15
611 Figure E-1—Detailed signature computation algorithm ............................................................................................ 391
612 Figure G-1—Octet bit ordering ................................................................................................................................. 402
613 Figure G-2—Multi-byte ordering .............................................................................................................................. 402
614 Figure G-3—Subtypes and bit field bit ordering ....................................................................................................... 422
615 Figure G-4—Set Octets and bit ordering ................................................................................................................... 423
616 Figure G-5—Single-dimension array ordering .......................................................................................................... 424
617 Figure I-1—Production of the Document Form (Document Format of Section 9.0, “Tables”) from the TDL XML
618 File ....................................................................................................................................................... 434
619 Figure I-2—Production of Exchange Data Language (EDL) validation schema file from a TDL XML File .......... 434
620 Figure I-3—Production of the Document Form (Document Format of Annex C, “Default Sets for Decade Tables”)
621 from the EDL XML Default Sets file ................................................................................................... 434
622 Figure I-4—Production of final element indices (Document Format of Annex D, “Indices for partial table read/write
623 access”) from a TDL XML file ............................................................................................................ 435
624 Figure I-5—From XML to AMI application—the pathways for using C12.19 Standard and Manufacturer-defined
625 TDL/XML tables for Documentation, EDL, and AMI application processing ................................... 436
626 Figure K-1—A typical electricity meter installation ................................................................................................. 514
627 Figure L-1—A registered End Device instance ......................................................................................................... 520
628 Figure L-2—Device Class re-registration decision-making process flow ................................................................. 521
629
630

xii
DRAFT ANSI C12.19-2012

631 Foreword (This Foreword is not part of American National Standard C12.19-2012.)
632 The ANSI C12.19 standard provides a common data structure and descriptors for use in transferring data
633 to and from utility End Devices, typically meters and head-ends. It has been developed with
634 consideration of input from utilities, meter vendors, automated meter reading service companies, ANSI,
635 Measurement Canada (for Industry Canada), NEMA, IEEE, Utilimetrics, NIST, SGIP, AEIC, and other
636 interested parties nationally and internationally. This release of the Standard accommodates the concept
637 of an advanced metering infrastructure (AMI) such as that identified by the Office of Electricity Delivery
638 and Energy Reliability of the U.S. Department of Energy; the Smart Metering Initiative of the Ontario
639 Ministry of Energy (Canada) and the stated requirements of Measurement Canada for the approval of a
640 metering device for use in Canada.
641
642 ANSI C12.19 Tables are organized into functional groups known as decades (nominally ten Tables per
643 decade). The ANSI C12.19 Standard contains up to 2040 “Standard Tables” that are fully described in
644 the Standard. In addition, provisions were made for an additional 2040 “Manufacturers’ Tables” so that
645 future innovations can be implemented utilizing the extension framework and mechanisms specified by
646 the semantic model of this ANSI C12.19 Standard. These mechanisms facilitate the possibility of future
647 inclusion of Manufacturer-defined Tables into future publications of the Standard. The Standard provides
648 the means for the inclusion of Manufacturer-defined Tables into End Devices through designation of new
649 Device Classes.
650
651 Another set of 2040 “Extended User-defined Tables” is available for End Devices that have a need for
652 extremely low communications overhead and a high need for compaction of data. The User Defined
653 Tables and the Extended User-defined Tables aggregate elements of information from other Tables
654 (Standard Tables Elements or Manufacturer Table Elements). These “Formal Elements” can be bundled
655 into “virtual” Tables for transmission.
656
657 The Standard defines “Pending” attributes for Standard Tables, Manufacturer Tables, Standard
658 Procedures, Manufacturer Procedures and Extended User-defined Tables; for use in applications such as
659 End Device deferred programming, and End Device firmware upgrades with activation and roll-back
660 capabilities. The Pending Tables also facilitate event driven and synchronized actionable communication
661 for use by enterprise systems (such as head-end system) that communicate with a multitude of C12.19
662 devices in an AMI network of a Smart Grid.
663
664 The Standard’s flexibility presents a challenge to system developers, to equipment vendors, and to
665 utilities and customers alike. System developers must continue to provide the capability of processing
666 multiple data formats from the End Devices. The obvious advantage of ANSI C12.19 is that the semantic
667 rules and semantic model of the Table structures can be published using machine-readable TDL/XML
668 (structure) and EDL/XML (enterprise exchange data) Forms, in addition to the human readable (Standard
669 Document) Forms. TDL/XML and EDL/XML together with their derivative products (such as the human
670 readable forms) are expected to be accessible through accredited registries via the Internet or other
671 readily available means.
672
673 All registration authorities that recognize registrars are governed by ANSI C12 and IEEE SCC31. To be
674 recognized, any registration authority is expected to adhere to the requirements specified in this standard.
675 See Annex J, “(normative) Universal Identifier”.
676
677 The ANSI C12.19 Standard provides mechanisms and identifies means to access the Table data. For
678 this reason, it is expected that data acquisition AMI products should be capable of processing data from
679 any End Device that follows the access rules defined by ANSI C12.19 and associated communication
680 protocols (such as ANSI C12.18, ANSI C12.21 and ANSI C12.22) and services. The End Device’s table
681 of contents is provisioned by ANSI C12.19 Table 0 – General Configuration Table. Access to Standard
682 Table 0, function limiting Tables (of the Decades), and information found in device control Tables can be
683 combined with ANSI C12.19 Device Class information to gain the necessary information about “End
684 Devices” for improved efficiency and interoperability.
xiii
DRAFT ANSI C12.19-2012

685
686 Although this Standard covers a broad range of functionality, it does not follow that implementations of
687 the Standard need to be large or complex. Implementers and users are encouraged to choose an
688 appropriate functionality subset that is suitable for their needs. Therefore, it is very unlikely for any one
689 End Device to embed all tables or even the majority of the tables described herein. Implementers and
690 users are encouraged to deploy their desired functionalities using complete and consistent suites of
691 Standard Tables from Standard Decades to the largest extent practical for the desired functionality of the
692 device.
693
694 The third release of this Standard is a minor release in that it establishes a new baseline document that
695 includes all of the corrections that were applied in Annex N, “Listing of editorial errors and errors of
696 omission in ANSI C12.19-2008” of IEEE Std 1377™-2012.
697
698 The notable differences and corrections that exist in this release of the standard relative to its
699 predecessor ANSI C12.19-2008 are listed below:
700
701 1. Document is formatted according to IEEE Standards Template.
702 2. New clause “1.1 Purpose” was introduced to clause “1 Scope”.
703 3. Introduced new references to clause “2 Normative Reference”
704 a. AEICGL : 2010 – Smart Grid/AEIC AMI Interoperability Standard Guidelines for ANSI
705 C12.19 / IEEE 1377 / MC12.19 End Device Communications and Supporting Enterprise
706 Devices, Network and related accessories, The Association of Edison Illuminating
707 Companies (AEIC), v2.0, 2010.
708 b. ANSI C12.19, American National Standard for Utility Industry End Device Data Tables.
709 c. ANSI C12.19-1997, American National Standard for Utility Industry End Device Data
710 Tables.
711 d. ANSI C12.19-2008, American National Standard for Utility Industry End Device Data
712 Tables
713 e. FERC-727-728-2008, Federal Energy Regulatory Commission, Survey on Demand
714 Response, Time-Based Rate Programs/Tariffs and Advanced Metering Infrastructure
715 Glossary, FERC-727 and FERC-728, OMB Control Nos. 1902-0214 & 1902-0213.
716 f. IEEE Std 1377™-1998, IEEE Standard for Utility Industry End Device Data Tables
717 g. MC S-EG-02-2010, Measurement Canada Specifications for Approval of Physical Sealing
718 Provisions for Electricity and Gas Meters, S-EG-02 (rev. 1).
719 h. XHTML-2002, XHTML 1.0 The Extensible HyperText Markup Language (Second
720 Edition). W3C Recommendation 26, 2000, revised 2002.
721 i. XML-2006, Extensible Markup Language (XML) 1.1 (Second Edition), W3C
722 Recommendation 16.
723 j. XMLSchema-2004, XML Schema Part 1: Structures (Second Edition), W3C
724 Recommendation 28.
725 k. XMLSig-2008, XML Signature Syntax and Processing (Second Edition), W3C
726 Recommendation 10.
727 4. Moved references to URLs into page footnotes.
728 5. Moved clause “2.2 Other” to “Annex M – (informative) Bibliography”.
729 6. Added reference to the “IEEE-SA Standards Definitions Database” in clause “3 Definitions”.
730 7. Remove numbers from the definitions in clause “3 Definitions”.
731 8. Replaced Procedure Property “extend” with “type” in clause “4.2.3 Manufacturer Procedure
732 Properties”.
733 9. Replaced all references to word “byte” with “Octet”
734 10. Introduced Element-name aliases for backward compatibility with ANSI C12.19-1997, ANSI
735 C12.19-2008 and IEEE Std 1377-1998.
736 11. Introduced allowance for GEN_CONFIG_TBL.MODEL_SELECT of 1 in clause “6.4.4
737 SOURCE_SELECT_RCD”.
738 12. Swapped the terms “target” and “initiating” in clause “8.1.1 Read Service”.
739 13. Corrected the description of Offset/Octet-Count Method in clause “8.1.1 Read Service”.
xiv
DRAFT ANSI C12.19-2012

740 14. Corrected the description of Offset/Octet-Count Method in clause “8.1.2 Write Service”.
741 15. Corrected the TDL Type Definitions syntax in clause “8.2 Pending Event Description”.
742 16. Added missing descriptions to TDL Element Descriptions in clause “8.2 Pending Event
743 Description”.
744 17. Corrected the TDL Element Descriptions true/false and high/low sense in clause “8.2 List
745 Management Description”.
746 18. Updated MODEL_SELECT in clause “9.1.1 Table 00 General Configuration Table” to provide
747 reference to the AEIC Guidelines Version 2 [AEICGL : 2010].
748 19. Updated the description of DEVICE_CLASS in clause “9.1.1 Table 00 General Configuration
749 Table” to indicate that the last arc tracks the value of MODEL_SELECT.
750 20. Updated the descriptions of STD_VERSION_NO and STD_REVISION_NO in clause “9.1.1 Table
751 00 General Configuration Table”.
752 21. Corrected duplication in syntax of Table 04 Type Definitions in clause “9.1.5 Table 04 Pending
753 Status Table”.
754 22. Recast and updated descriptions of GPS COORDINATE_1, COORDINATE_2 and
755 COORDINATE_3 in terms of definitely structured STRINGs in clause “9.1.7 Table 06 Utility
756 Information Table”.
757 23. Corrected and replaced the terms “off/on” with “disconnect/connect” in the definition of
758 NEW_LEVEL in clause “9.1.10.22 Procedure 21 Direct Load Control”.
759 24. Updated Decade 1 Data Description in clause “9.2 Decade 1: Data Source Tables” to correctly
760 reflect changes in MODEL_SELECT values.
761 25. Corrected UOM values above 220 in clause “9.2.3 Table 12 Units of Measure Entry Table”.
762 26. Corrected ID_RESOURCE values above 23 in clause “9.2.3 Table 12 Units of Measure Entry
763 Table”.
764 27. Added security best practice recommendation to note in clause “9.5.3 Table 42 Security Table”.
765 28. Added security best practice recommendation to note in clause “9.5.6 Table 45 Key Table”
766 29. Corrected description of TIME_ZONE_OFFSET in clause “9.6.4 Table 53 Time Offset Table”.
767 30. Introduced SIG_ALGORITHM Element to facilitate the introduction of hash functions that comply
768 with FIPS PUB 180-2 in clause “9.8.1 Table 70 Log Dimension Limits Table”.
769 31. Introduced SIG_ALGORITHM Element to facilitate the introduction of hash functions that comply
770 with FIPS PUB 180-2 in clause “9.8.2 Table 70 Actual Log Limiting Table”.
771 32. Revised hash function algorithm descriptions in clause “9.8.9 Table 78 End Device Program State
772 Table” to reflect the changes made to ACT_LOG_TBL and ACT_LOG_TBL Elements
773 SIG_ALGORITHM.
774 33. Corrected description of Element LEVEL_SUPPORTED_FLAG in clause “9.12.3 Table 112 Load
775 Control Status”.
776 34. Added citations IEEE Std 1159-1995 (R2001) and IEEE Std 519-1992 description section of
777 clause “9.16 Decade 15: Quality-of-service”.
778 35. Corrected Table role and accessibility properties and reorganized descriptions in clause
779 “9.16.4Table 153 Quality-of-service Incidents Table”
780 36. Corrected Table role and accessibility properties in clause “9.16.5 Table 154 Quality-of-service
781 Log Table”.
782 37. Corrected Table role and accessibility properties in clause “9.17.4 Table 163 One-way Data
783 Table”.
784 38. Modified unit of measures in COMMODITY_OUTAGE_DUTY_BFLD from seconds to minutes in
785 clause “9.17.4 Table 163 One-way Data Table”.
786 39. Updated the algorithm description of Element READ_VALUE in clause “B.2 Logger Arguments
787 Implementation Details”.
788 40. Revised BNF definition of constIdentifier in clause “G.4 Identifiers”.
789 41. Corrected BNF definition of element in clause “G.6.1.2 Container scopes”.
790 42. Deleted BNF definitions of constType and constMember and associated example from clause
791 “G.12 Constants” to reflect revisions to constIdentifier to clause “G.4 Identifiers”.
792 43. Revised BNF definitions of syntax from clause “G.17 Document Form Starting Production Rule” to
793 reflect revisions to constIdentifier to clause “G.4 Identifiers”.
794 44. Corrected DTD definitions for object and table in clause “I.2.1.7 <description> Child DTDs”.
xv
DRAFT ANSI C12.19-2012

795 45. Inserted missing description for object in clause “I.2.1.15 <object> Attributes”.
796 46. Inserted missing description for table in clause “I.2.1.16 <table> Attributes”.
797 47. Inserted missing descriptions for table members in clause “I.2.1.17 <caption>, <col>, <thead>,
798 <tfoot> and <tbody> sub-element usage of <table>”.
799 48. Updated examples in clause “I.2.1.18 <description> Document Form”.
800 49. Revised DTD definition of enumerator in clause “I.2.1.25 <enumerator> DTD (named)” to reflect
801 revisions to constIdentifier to clause “G.4 Identifiers”.
802 50. Deleted definition of <positional> in clause “I.2.1.27 <enumerator> DTD (named)” to reflect
803 revisions to constIdentifier to clause “G.4 Identifiers”.
804 51. Revised clause “I.2.1.28 Constant enumerated values DTD”.
805 52. Revised clause “I.2.1.29 <enumerator> DTD (un-named)”.
806 53. Revised clause “I.2.1.30 <enum> DTD”.
807 54. Revised clause “I.2.1.31 <enum> Attributes”.
808 55. Updated example in clause “I.2.1.32 <enum> Document Form”.
809 56. Corrected definition of element in clause “I.2.1.39 <element> DTD”.
810 57. Corrected definition of else in clause “I.2.1.55 <else> DTD”.
811 58. Corrected definition of switch in clause “I.2.1.58 <switch> DTD”.
812 59. Corrected definition of case in clause “I.2.1.62 <case> DTD”.
813 60. Corrected definitions in clause “I.2.1.69 <bitField> DTD”.
814 61. Corrected definition of switch in clause “I.2.1.84 <switch> DTD”.
815 62. Corrected definition of table in clause “I.2.1.108 <table> DTD definition”.
816 63. Corrected definition of packedRecord in clause “I.2.1.114 < packedRecord > DTD”.
817 64. Corrected definition of bitField in clause “I.2.1.116 <bitField> DTD”.
818 65. Corrected definition of tableName in clause “I.3.1.5 <description> Document Form”.
819 66. Inserted copyright notice in clause “I.3.1.5 <description> Document Form”.
820 67. Inserted documentation about schema constraints issues in clause “I.3.1.6 The Schema
821 Constraints Problem”.
822 68. Corrected type mapping in clause “I.4 EDL XML Form Encoding of Final Element Values”.
823 69. Updated device class registration information in clause “ANNEX J: Universal Identifier”.
824 70. Corrected section numbering in clause “ANNEX L: Registering or Updating DEVICE CLASS
825 OID”.
826
827
828 Members of ASC 12 SC 17 WG2 wish to thank and extend their deepest appreciation for the significant
829 contribution of the balloting members of IEEE P1377, the AEIC AMTIT members, NIST and SGIP/PAP5
830 and SGIP/PAP6 members, who provided invaluable input into the making of this revision of the Standard.
831
832 Interpretation requests for, questions about, or suggestions for improvement to this Standard are
833 welcome. They should be sent to:
834
835 National Electrical Manufacturers Association
836 Vice President, Technical Services
837 1300 North 17th Street
838 Suite 1752
839 Rosslyn, VA 22209
840
841 The Secretariat of the Accredited Standards Committee on Electricity Metering, C12, is held by the National
842 Electrical Manufacturers Association (NEMA) and the National Institute of Standards and Technology. At the
843 time this standard was processed and approved, the C12 Committee had the following members:
844
845 Tom Nelson, Chairman
846 Paul Orr, Secretary
847
848 Organization Represented: Name of Representative:
849
850 Georgia Power Larry Barto
xvi
DRAFT ANSI C12.19-2012

851 Underwriters Laboratories, Inc. Ron Breschini


852 Itron, Inc. Brent Cain
853 GE Energy Curt Crittenden
854 Florida Power & Light Co. Jim DeMars
855 Public Service Electric & Gas David Ellis
856 Radian Research, Inc. Tim Everidge
857 Milbank Manufacturing Shawn Glasgow
858 Technology for Energy Corporation Bill Hardy
859 Schweitzer Engineering Labs, Inc. Bob Hughes
860 Oncor Group Brad Johnson
861 Center for Neighborhood Technology Lawrence Kotewa
862 Austin Energy Herman Millican
863 Future DOS R&D, Inc. Avygdor Moise
864 Duke Energy Company Tim Morgan
865 Natl Inst. of Standards & Technology Tom Nelson
866 Pacific Gas & Electric Company D. Young Nguyen
867 Xcel Energy EMC Dan Nordell
868 Plexus Dave Scott
869 EnerNex Aaron F. Snyder
870 Sensus Metering George Steiner
871 Baltimore Gas & Electric Company Jim Thurber
872 Tucker Engineering Richard D. Tucker
873 Trilliant Networks, Inc. Michel Veillette
874 Landis+Gyr John Voisine
875 Watthour Engineering Co. H.A. Wall
876
877 The following members of Working Group 2 of Subcommittee 17 worked on the development of this
878 revision of the standard:
879
880 Avygdor Moise, Chairman
881 Aaron Snyder, Co-Vice Chairman
882 Kostas Tolios, Co-Vice Chairman
883 Michael Anderson, past Vice Chairman
884 Terry L. Penn, Editor
885 Paul Orr, Secretary
886
Organizations Represented: Name of Representative:

Aclara PLS David Haynes


American Electric Power Maryam Larijani
Center for Neighborhood Technology Lawrence Kotewa
Consumers Energy David Jirikovic
DTE Energy Kostas Tolios
Elster metering Jeff Richardson
Elster Solutions Edward J. Beroset
EnerNex Aaron F. Snyder
EnerNex Erich Gunther
Future DOS R&D, Inc. Avygdor Moise
GE Energy Virginia Zinkowski
Itron, Inc. Brent Cain
JECARRCO, LLC Jack Carr
Landis+Gyr Jeremiah Dole
Landis+Gyr Michael Anderson
Oncor Brad Johnson
Sensus Marc Keyes

xvii
DRAFT ANSI C12.19-2012

Organizations Represented: Name of Representative:


Silver Springs Networks Brad Gilbert
Southern Company Terry L. Penn
Trilliant Networks Michel Veillette
Tucker Engineering Associates Inc. Richard D. Tucker
887
888

xviii
DRAFT ANSI C12.19-2012

889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910 This page intentionally left blank.
911
912
913
914

xix
915 AMERICAN NATIONAL STANDARD ANSI C12.19-2012
916
917 Utility Industry End Device Data Tables
918
919

920 1 Overview

921 1.1 Scope

922 This standard defines a Table structure for utility application data to be passed between an End Device and any other
923 device. It neither defines device design criteria nor specifies the language or protocol used to transport that data. The
924 Tables defined in this standard represent a data structure that shall be used to transport the data, not necessarily the
925 data storage format used inside the End Device.

926 1.2 Purpose

927 The Utility Industry has a need for a standard that provides an interoperable “plug-and-play” environment for field
928 metering devices. The purpose of this standard is to define the framework and data structures for transporting Utility
929 End Device data to and from End Devices and for use by enterprise systems.

930 This standard is intended to accommodate the concept of an advanced metering infrastructure such as that identified
931 by the Office of Electricity Delivery and Energy Reliability of the U.S. Department of Energy; the Smart Metering
932 Initiative of the Ontario Ministry of Energy (Canada); and the stated requirements of Measurement Canada for the
933 approval of a metering device for use in Canada.

934 This standard is to provide a uniform, structured, and adaptive data model, such that Utility End Devices and
935 ancillary devices (e.g., home appliances and communication technology) can operate in a “plug-and-play” and
936 multisource enterprise Advanced Metering Infrastructure (AMI) environment.

937 This standard extends the definitions provided by IEEE Std 1377-1998 to include provisions for enterprise-level
938 asset management, data management, and uniform data exchange capability, through the use of common and
939 managed Extensible Markup Language (XML)/Table Definition Language (TDL) and XML/Exchange Data
940 Language (EDL) End Device Class models.

1
DRAFT ANSI C12.19-2012

941 2 Normative references


942 The following referenced documents are indispensable for the application of this document (i.e., they must be
943 understood and used, so each referenced document is cited in text and its relationship to this document is explained).
944 For dated references, only the edition cited applies. For undated references, the latest edition of the referenced
945 document (including any amendments or corrigenda) applies.

946 AEICGL-2010, Smart Grid/AEIC AMI Interoperability Standard Guidelines for ANSI C12.19 / IEEE 1377 /
947 MC12.19 End Device Communications and Supporting Enterprise Devices, Network and Related Accessories, The
948 Association of Edison Illuminating Companies (AEIC), v2.0, 2010.1

949 ANSI C12.10-2011, American National Standard for Physical Aspects of Watthour Meters—Safety Standard.2

950 ANSI C12.19, American National Standard for Utility Industry End Device Data Tables.

951 ANSI C12.19-1997, American National Standard for Utility Industry End Device Data Tables.

952 ANSI C12.19-2008, American National Standard for Utility Industry End Device Data Tables.

953 ANSI X9.31-1998, Public Key Cryptography Using Reversible Algorithms for the Financial Services Industry
954 (rDSA).

955 AS 4140-1995, Australian Standard, Metering and Utility Information Exchange—Glossary of Terms.3

956 ECMA 94-1996, 8-Bit Single-Byte Coded Graphic Character Sets—Latin Alphabets No. 1 to No. 4-2nd Edition.4

957 FERC-727-728-2008, Federal Energy Regulatory Commission, Survey on Demand Response, Time-Based Rate
958 Programs/Tariffs and Advanced Metering Infrastructure Glossary, FERC-727 and FERC-728, OMB Control Nos.
959 1902-0214 & 1902-0213.5

960 IEEE Std 1377™-1998, IEEE Standard for Utility Industry End Device Data Tables.6, 7

961 IEEE Std 519™-1992, IEEE Recommended Practices and Requirements for Harmonic Control in Electrical Power
962 Systems.

963 IEEE Std 754™-2008, IEEE Standard for Binary Floating-Point Arithmetic.

964 IEEE Std 1159™-1995, IEEE Recommended Practice for Monitoring Electric Power Quality.

965 IEEE Std C57.123™-2010, IEEE Guide for Transformer Loss Measurement.

966 IEC 62053-23-2003, Electricity Metering Equipment (a.c.)—Particular Requirements—Part 23: Static Meters for
967 Reactive Energy (classes 2 and 3).8

1
AEIC publications are available from The Association of Edison Illuminating Companies (http://www.aeic.org/). This document is available
from http://www.aeic.org/meter_service/AEICSmartGridStandardv2-11-19-10.pdf.
2
ANSI publications are available from the American National Standards Institute (http://www.ansi.org/).
3
AS publications are available from Standards Australia (http://www.standards.org.au/Pages/default.aspx).
4
ECMA publications are available from the European Computer Manufacturers Association (http://www.ecma-international.org/).
5
FERC publications are available from the Federal Energy Regulatory Commission (http://www.ferc.gov/).
6
IEEE publications are available from The Institute of Electrical and Electronics Engineers (http://standards.ieee.org/).
7
The IEEE standards or products referred to in this clause are trademarks of The Institute of Electrical and Electronics Engineers, Inc.
8
IEC publications are available from the International Electrotechnical Commission (http://www.iec.ch/). IEC publications are also available in
the United States from the American National Standards Institute (http://www.ansi.org/).
2
DRAFT ANSI C12.19-2012

968 IEC/TR 61000-2-1-1990, Electromagnetic Compatibility (EMC)—Part 2: Environment—Section 1: Description of


969 the Environment—Electromagnetic Environment for Low-frequency Conducted Disturbances and Signalling in
970 Public Power Supply Systems.

971 ISO 8859-1-1998, Information Technology—8-bit Single-byte Coded Graphic Character Sets—Part 1: Latin
972 Alphabet No 1.9

973 ISO/IEC 646-1991, Information Technology—ISO 7-bit Coded Character Set for Information Interchange.10

974 ISO/IEC 7498-1-1994, Information Technology—Open Systems Interconnection—Basic Reference Model: The
975 Basic Model.

976 ISO/IEC 10118-1-2000, Information Technology—Security Techniques—Hash-functions—Part 1: General.

977 ISO/IEC 10118-2-2000, Information Technology—Security Techniques—Hash-functions—Part 2: Hash-Functions


978 Using an n-bit Block Cipher.

979 ISO/IEC 10646-2011, Information Technology—Universal Multiple-Octet Coded Character Set (UCS).

980 MC S-EG-02-2010, Measurement Canada Specifications for Approval of Physical Sealing Provisions for Electricity
981 and Gas Meters, S-EG-02 (rev. 1).11

982 XHTML-2002, XHTML 1.0 The Extensible HyperText Markup Language (Second Edition). W3C
983 Recommendation 26, 2000, revised 2002.12

984 XML-2006, Extensible Markup Language (XML) 1.1 (Second Edition), W3C Recommendation 16.13

985 XMLSchema-2004, XML Schema Part 1: Structures (Second Edition), W3C Recommendation 28.14

986 XMLSig-2008, XML Signature Syntax and Processing (Second Edition), W3C Recommendation 10.15

9
ISO publications are available from the ISO Central Secretariat (http://www.iso.org/). ISO publications are also available in the United States
from the American National Standards Institute (http://www.ansi.org/).
10
ISO/IEC publications are available from the ISO Central Secretariat (http://www.iso.org/). ISO publications are also available in the United
States from the American National Standards Institute (http://www.ansi.org/).
11
MC publications are available from Measurement Canada (http://www.ic.gc.ca/eic/site/mc-mc.nsf/eng/home).
12
World Wide Web (W3) Consortium publications are available from the World Wide Web Consortium (http://www.w3.org/). This document is
available at http://www.w3.org/TR/xhtml1.
13
This document is available at http://www.w3.org/TR/xml11.
14
This document is available at http://www.w3.org/TR/xmlschema-1.
15
This document is available at http://www.w3.org/TR/xmldsig-core.
Normative references 3
DRAFT ANSI C12.19-2012

987 3 Definitions
988 For the purposes of this document, the following terms and definitions apply. The IEEE Standards Dictionary
989 Online [B10] should be consulted for terms not defined in this clause. 16, 17

990 The definitions used in this standard have been derived from the sources cited in Clause 2, “Normative references”,
991 with the exception of those introduced in this standard revision, labeled “[New]”.

992 ACTUAL (ACT): The programmed functional capabilities of an End Device. [ANSI C12.19-1997]

993 Address: Those inputs whose states select a particular cell or group of cells. [IEEE Standards Dictionary]

994 Advanced Metering Infrastructure (AMI): Defined as the communications hardware and software and associated
995 system and data management software that creates a network between advanced meters and utility business systems
996 and which allows collection and distribution of information to customers and other parties such as competitive retail
997 providers, in addition to providing it to the utility itself. [FERC-727-728-2008]

998 Alias: An alternative name of a Table, Procedure, Element, or a derived type. An alias name can be used as an
999 alternative when making references to Tables, Procedures, Elements, or derived types. Example: Table 0 of
1000 ANSI C12.19-1997 contains the Element MANUFACTURER, whereas this standard renamed it to
1001 DEVICE_CLASS, and defined it to be an alias to MANUFACTURER for backward compatibility. All references
1002 to MANUFACTURER and DEVICE_CLASS refer to the same Element.

1003 ARRAY: In text form, “Array” or “array,” a grouping of repetitions of the same data type, used to describe a single
1004 Element. [New]

1005 BIT FIELD (BFLD): In text form, “Bit Field” or “bit field” is a collection of data subelements, each spanning one
1006 or more of bits, that may not be aligned on an Octet boundary nor span an integral multiple of Octets. Multiple
1007 occurrences of these subelements are grouped (packed) together so that the entire collection of bits ends on an Octet
1008 boundary. For purposes of transmission, the entire group of bits is treated as an Atomic Element having the type of
1009 unsigned integer. [New]

1010 Block: A collection of interval-based Register values spanning one or more channels. [New]

1011 Channel: A single path for the collection of interval-based Register values over a period of time. [New]

1012 Clock: A device that generates periodic signals used for synchronization. A device that measures and indicates time.
1013 A register whose content changes at regular intervals in such a way as to measure time. [ANSI C12.19-1997]

1014 Count: The number of Octets selected when using the Offset/Octet-count partial Table access method.
1015 [ANSI C12.19-1997]

1016 Cumulative Demand: Summation of Maximum Demands during the preceding periods is indicated during the
1017 period after the meter has had a demand reset performed and before it has been reset again. Note that the maximum
1018 demand for any one demand interval is equal or proportional to the difference between the accumulated readings
1019 before and after reset. [IEEE Standards Dictionary]

1020 Customer: The purchaser/user of a product or service supplied by a service provider or utility. [AS 4140-1995]

1021 Data Encryption: The changing of the form of a data stream such that only the intended recipient can read or alter
1022 the information and detect unauthorized messages. [ANSI C12.19-1997]
16
The IEEE Standards Dictionary Online subscription is available at http://www.ieee.org/portal/innovate/products/standard/
standards_dictionary.html.
17
The numbers in brackets correspond to those of the bibliography in Error! Reference source not found..
4
DRAFT ANSI C12.19-2012

1023 Decade: A functional grouping of Tables by application into groups of ten. The Tables are numbered “X0” through
1024 “X9”, with “X” representing the Decade number. [ANSI C12.19-1997]

1025 Default Set: Element-values provided when FLC Tables or FLC+1 Tables of any Decade are not used by the End
1026 Device. This standard provides Default Set Element-values for all FLC and FLC+1 Table-elements. End Device
1027 vendors may provide Default Set Element-values for any Manufacturer-defined Decades FLC and FLC+1 using
1028 EDL. [New]

1029 Demand: The consumption (e.g., energy and volume) recorded during the integration time period divided by the
1030 integration time period. [ANSI C12.19-1997]

1031 Demand, Block: An average value (e.g., Watthours/hours) occurring over a Demand period specified by the End
1032 Device. This value may be used by the End Device for maximum or minimum registration computation.
1033 [ANSI C12.19-1997]

1034 Demand, Maximum: The highest Demand measured over a selected period of time. Also referred to as “Peak
1035 Demand.” [ANSI C12.19-1997]

1036 Demand, Minimum: The lowest Demand measured over a selected period of time. [ANSI C12.19-1997]

1037 Demand, Present: Demand occurring during the present Demand interval or subinterval (e.g., Watts or VA).
1038 [ANSI C12.19-1997]

1039 Demand, Sliding Window (Rolling-Interval): The Block Demand calculated over an integration period that
1040 includes subintervals of previous Demand calculations. [ANSI C12.19-1997]

1041 Deprecated: Outdated or superseded. Deprecated syntax. Tables or Elements that are defined in the standard or in
1042 the Manufacturer reference documentation of the End Device (TDL) and are clearly marked as deprecated in the
1043 document.

1044 DIMENSION (DIM): The maximum functional capability designed into an End Device. (See the discussion in
1045 4.1.1, “Standard Tables grouping”, on the Function Limiting Control (FLC) Table.) [ANSI C12.19-1997]

1046 Document Type Definition (DTD): The XML document type declaration contains or points to markup declarations
1047 that provide a grammar for a class of documents. This grammar is known as a document type definition or DTD.
1048 The document type declaration can point to an external subset (a special kind of external entity) containing markup
1049 declarations, can contain the markup declarations directly in an internal subset, or can do both. The DTD for a
1050 document consists of both subsets taken together. [Reprinted from W3C Recommendation, Extensible Markup
1051 Language (XML) 1.1 (Second Edition)18 © 2006 W3C, XML-2006]

1052 Element: The union of all Atomic Elements that share the same index prefix. An Element can be any type, a set, an
1053 array, or a selection from an array. [ANSI C12.19-1997]

1054 Element, Atomic: A restricted subset of an Element that is the smallest component of an Element that can be
1055 transmitted as an integral number of Octets without loss of its meaning or interpretation during transmission, in
1056 accordance with Octet ordering and bit packing. [New]

1057 Element, Final: An innermost expression of an Atomic Element or a Sub-element. This expression can be used to
1058 retrieve a single value. Only Final Elements can be used in calculations. Decade names, Table names, Procedure
1059 names, and constants are also Final Elements, when used in a calculation. The value returned by Decade, Table, and
1060 Procedure names is their corresponding number. The value returned by a constant is the constant’s assigned value.
1061 [New]

18
This document is available at http://www.w3.org/TR/xml11.
Definitions 5
DRAFT ANSI C12.19-2012

1062 Element, Volatile: A Table Element whose values may change asynchronously by means other than reading or
1063 writing Tables. Two consecutive reads of the same Table Element may yield different values due to real-time
1064 changes to the End Device Register, sensed values, state, or status. [New]

1065 Element-count: The number of Elements selected when using the Index/Element-count partial Table access
1066 method. The Elements selected are derived from the serialization of all Elements, starting with the one identified by
1067 the index, sequentially, which share part or all of the selection index prefix. [ANSI C12.19-1997]

1068 End Device: The closest device to the sensor or control point within a metering application communication system
1069 that is compliant with the Utility Industry End Device Data Tables. [ANSI C12.19-1997]

1070 End Device Agent: The entity responsible for managing the End Device operations and programs. It is capable of
1071 affecting change to the End Device program. It is also responsible for keeping a record of all End Device
1072 programming parameters, constants, change history, and event logger records. The End Device Agent is also
1073 responsible for maintaining and demonstrating continuity between metrological data records and End Device
1074 programs, exclusively through the use of Utility Industry End Device Data Tables. [ANSI C12.19-1997]

1075 Event: A noteworthy occurrence that has a location in time and space, and does not have duration. Event parameters
1076 include information about the state of the End Device before the Event, after the Event, the Event time, and related
1077 Event-identifying information. Event parameters can be made available for inspection directly or indirectly through
1078 a calculable derivative. [Adopted from ANSI C12.19-1997 and The Unified Modeling Reference Language Manual
1079 [B10]]

1080 Event Instance: A specific occurrence of an Event. Each Event Instance is characterized by a set of Event
1081 parameters There are four kinds of Event Instances: Call Event, Change Event, Signal Event, and Time Event.
1082 [Adopted from ANSI C12.19-1997 and The Unified Modeling Reference Language Manual [B10]]

1083 Event Logger Data: The entire content of all Tables designated as Program Tables, all associated pointers, and all
1084 signatures that are expressed by or implied by Event Logger Record for a specific Event. The Event Logger Data
1085 originates initially inside the End Device, but it may extend into the End Device Agent record-keeping system.
1086 [ANSI C12.19-1997]

1087 Event Logger Record: The pointers and signatures that are expressed by or implied by
1088 EVENT_LOG_DATA_TBL.EVENT_LOG_RCD and EVENT_LOG_DATA_TBL.EVENT_ENTRY_RCD to
1089 define the Event Logger Data for a specific Event. [New]

1090 Event, Call: An Event Instance caused by receipt of an explicit synchronous request (e.g., a request to write a Table
1091 by a communication protocol). [Adopted from The Unified Modeling Reference Language Manual [B10]]

1092 Event, Change: An Event Instance caused by change in the value of a Boolean expression (e.g., tamper detect and
1093 change in metering mode). [Adopted from The Unified Modeling Reference Language Manual [B10]]

1094 Event, Signal: An Event Instance caused by explicitly named asynchronous communication among Objects (e.g.,
1095 advancing list pointers as a result of execution of an advance list pointers procedure). [Adopted from The Unified
1096 Modeling Reference Language Manual [B10]]

1097 Event, Time: An Event Instance caused by the occurrence of an absolute time or the passage of a relative amount of
1098 time (e.g., time-of-use schedule invoking a self-read). [Adopted from The Unified Modeling Reference Language
1099 Manual [B10]]

1100 Exchange Data Language (EDL): For encoding, import, and export of Default Sets defined by this standard, Table
1101 Element values retrieved from an End Device, Table Element values to be stored in an End Device, Manufacturer
1102 constant Element-values, and Utility or Customer site-specific constant Element-values that need to be known by
1103 application. The Exchange Data Language Element-values are encoded using XML. [New]

6
DRAFT ANSI C12.19-2012

1104 Extensible Markup Language (XML): A recommendation for a lexical grammar produced by the World Wide
1105 Web Consortium (W3C). XML describes a class of data objects called XML documents and partially describes the
1106 behavior of computer programs that process them. XML is an application profile or restricted form of SGML, the
1107 Standard Generalized Markup Language [ISO 8879]. By construction, XML documents are conforming SGML
1108 documents. [Reprinted from W3C Recommendation, Extensible Markup Language (XML) 1.1 (Second Edition) ©
1109 2006 W3C, XML-2006]

1110 Index: A unique sequence of numbers used to select a Table Element. An Index may be represented in dot-notation
1111 format (text transmission form) or as in binary array (binary transmission form). An Index may reference any Table
1112 Element. [ANSI C12.19-1997]

1113 Interharmonics: Frequencies between the harmonics of the power frequency voltage and current that can be
1114 observed but are not an integer multiple of the fundamental frequency. They can appear as discrete frequencies or as
1115 a wide-band spectrum. [Adapted from IEC/TR 61000-2-1-1990 and the IEEE Standards Dictionary]

1116 Load Profile: The recording, storage, and analysis of consumption data over a period of time for a particular
1117 installation. [ANSI C12.19-1997]

1118 Meter: A device that measures and records the consumption or usage of the product/service. [ANSI C12.19-1997]

1119 Metrological Adjustment: Any physical means or methods designed or used, whether directly or indirectly,
1120 whether intentionally or unintentionally, to alter or correct the measurement characteristics of an End Device or any
1121 of its subsystems that are used for trade measurement purposes. This includes altering or replacing Registers,
1122 components, connections, or internal working parts of the End Device. It also includes the alteration of any
1123 Metrological Parameter that would be made available from the End Device or any of its outputs. Metrological
1124 Adjustments manifest themselves in changes to Metrological Tables. [Adopted from MC S-EG-06-2011 [B7] and
1125 Utility Industry Standard Tables User’s Guide [B8]]

1126 Mode, Factory: A superset of Meter Shop Mode where, in addition, manufacturer limited functions and parameters
1127 are also available for modification. [New]

1128 Mode, Meter Shop: The operating state of the End Device where revenue metering is prohibited. The entry state
1129 and the exit state of the End Device may be unrelated and untraceable. An exit from Meter Shop Mode represents a
1130 new initial state for the End Device. While operating in Meter Shop Mode, all operational safeguards such as
1131 logging, security, and accumulation may be disabled. [New]

1132 Mode, Metering: The operating state of the End Device wherein measured or input quantities are accumulated for
1133 the purpose of revenue metering. [New]

1134 Mode, Test: The operating state of the End Device wherein the Metering Mode state parameters are saved prior to
1135 entry and restored upon exit. [New, Adopted from ANSI C12.1-2001]

1136 Object: A Table Object or an Element Object. [Revised]

1137 Object, Element: An Atomic Element, an Element, a Sub-element, or a Final Element of a Table that can be
1138 described, encoded, or communicated using this standard. [New]

1139 Object, Table: A Table and all the Elements it contains that can be described, encoded, or communicated according
1140 to this standard. When the Table referenced is a Pending Table, then the Table Object includes the Pending Header.
1141 [New]

1142 Octet: A sequence of eight bits. [ANSI C12.19-1997]

Definitions 7
DRAFT ANSI C12.19-2012

1143 Offset: The number of Octets, relative to the beginning of a Table, that precede the desired Element. When the
1144 Table is a Pending Table, then Offset zero (0) is the first Element at the beginning of the Table following the
1145 Pending Table header. [ANSI C12.19-1997]

1146 Override: In the context of declaration of type, a relaxed variation of the Replace attribute in that Overridden types
1147 have different Offsets and Indices from those of the referenced Elements, and thus, they can expose additional
1148 details to the internal structure of Elements that were otherwise opaque. [New]

1149 Packed Record: In text form, “Packed Record,” or any variation thereof, a group of Element types,
1150 anyElementType, created as a new derived data type. [New]

1151 Procedure: An action that can be performed by the End Device. A Procedure is initiated by writing to Standard
1152 Table 07, and the result may be retrieved by reading Standard Table 08. [New]

1153 Procedure, Manufacturer: A Procedure whose structure and actions are defined by an individual End Device
1154 manufacturer. [New]

1155 Procedure, Metrological: A Procedure whose action causes a change to a Metrological Parameter or results in a
1156 Metrological Adjustment. [New]

1157 Procedure, Standard: A Procedure whose structure and actions are defined by this standard. [New]

1158 Quadrant: Divisions of the plane formed by the representation of active power (watts), reactive power (VAR), and
1159 vector apparent power (voltamperes) in a Cartesian coordinate system. In this standard, the convention used is that
1160 the vectors rotate counter clockwise and the quadrants are numbered as shown in the diagram below. For clarity, the
1161 diagram includes both the Handbook definition and the IEC terminology in parentheses. It should be noted that the
1162 ANSI terms are with respect to the utility (e.g., “delivered” means delivered by the utility) and the IEC 62053 terms
1163 are with respect to the consumer (e.g., “imported” means imported by the consumer). [Adapted from the Handbook
1164 for Electricity Metering [B3], IEC 62053-23-2003, and the CRC Standard Mathematical Tables and Formulae [B1]]

Delivered VAR
(Q+, Import ReactivePower)

Quadrant 2 Quadrant 1
Leading current Lagging current
Capacitive Inductive

Received Watts Delivered Watts


(P-, Export Power) (P+, Import Power)

Quadrant 3 Quadrant 4
Lagging current Leading current
Inductive Capacitive

Received VAR
(Q-, Export ReactivePower)
1165

8
DRAFT ANSI C12.19-2012

1166 Redefine: Used in the context of declaration of type. The new type definition is constrained by the referenced type
1167 definition whereby the new definition shall have identical Element content, types, Indices, and Offsets to those
1168 found in the referenced type. The referenced type is left unaffected. This feature is useful when defining ACT
1169 Tables, then reusing only the Element types (not the Element names or descriptions) of the DIM Tables to define
1170 actual limits Tables. The local redefinition feature is subject to the following constraints:

1171 A type can be Redefined any number of times. Redefinition of a type that has already been previously
1172 redefined elsewhere is possible.
1173 New types based on Redefined types can be defined in the same Table Definition Language (TDL)
1174 document that defines the referenced type.
1175 Redefinition of a Replaced packed record is possible.
1176 Redefinitions are processed after Replacements and Overrides.

1177 Register: A device for use with a meter that indicates or records units of the delivered commodity or other quantity
1178 measured. Registers in End Devices are often spoken of according to the units involved, such as accumulation
1179 (energy, volume, mass), Demand, Time-of-use (TOU), instantaneous values, or other(s) as appropriate. [New,
1180 portions adopted from ANSI C12.1-2001 and ANSI C12.19-1997]

1181 Register, Secured: A Volatile Element whose transmitted value can be encoded by the End Device as a one-way
1182 hash in response to a Read Service request from an initiator. The purpose of the encoding is to detect whether the
1183 value transmitted was subsequently altered and to enable the receiver to verify the authenticity of the value in a
1184 manner that is independent from the transport protocol used. The Reading of a Secured Register may generate a
1185 Read Secured Register or Read Secured Table event within the End Device. [New]

1186 Replace: The action whereby an older type definition shall be replaced by (i.e., mapped to) a new type definition.
1187 Any reference to the old definition shall resolve to the new definition. This feature enables one standard to be
1188 derived from another standard and for a manufacturer of End Devices to define (thus document) opaque fields that
1189 are defined by the referenced standard and implemented in the End Device. The replacement feature is subject to the
1190 following constraints:

1191 A referenced type can be Replaced only once in any one instance of an End Device Table Definition
1192 Language (TDL) definition; therefore, Replacement of a type that has already been previously
1193 replaced elsewhere is not possible.
1194 The Replaced type cannot be defined in the same TDL document that defines the original type.
1195 Replaced types have identical Element Offsets and Indices as those of the referenced Elements;
1196 however, they can expose additional details to the internal structure of Elements that were otherwise
1197 opaque.
1198 A Replaced type cannot be Overridden in the same TDL document.
1199 [New]

1200 Reserved: Qualifier applied to one or more Elements or values indicating they are not available for use with this
1201 standard. The use of a Reserved Element or value shall render an application noncompliant with this standard.
1202 [New]

1203 Seal: An item or process that has the purpose of providing marketplace integrity and confidence against End Device
1204 tampering and as such it has three main functions: (1) to secure an End Device so that access or changes to
1205 Metrological Adjustments and Sealable Parameters will be detectable; (2) to identify the date and organization that
1206 verified the End Device (this information is necessary for the administration and enforcement of legislation, for
1207 complaint or dispute investigation purposes, and for seal period and seal extension purposes); and (3) to act as a

Definitions 9
DRAFT ANSI C12.19-2012

1208 deterrent to the unauthorized access or changing of metrologically sensitive adjustments and Sealable Parameters.
1209 Seals may be implemented as Physical Seals and/or as Logical Seals. [Adopted from MC S-EG-02-2010]

1210 Seal, Logical (Event Loggable): A Seal that comprises firmware and software mechanisms that work together to
1211 secure access to an End Device’s Metrological Adjustments and Sealable Parameters. This standard provides Event
1212 Log Tables for the management of Seals. [New]

1213 Seal, Physical: A physical mechanism that is used to secure access to an End Device’s Metrological Adjustments
1214 and Sealable Parameters. [New]

1215 Sealable Parameter: A Metrological Parameter that is secured or protected from alteration by a Seal. [New]

1216 Season: A calendar-specified period used for activation of rate schedules. [ANSI C12.19-1997]

1217 Secured Read: Reading of a Secured Register from an End Device that is capable of generating an End Device
1218 Secured Register event, provided that this capability was enabled in the End Device. [New]

1219 Self-read: A copy of Elements from one Table to another Table inside of an End Device, often at periodic intervals,
1220 triggered by an Event. [New]

1221 SET: A collection of Booleans, eight Booleans per Octet. Each Boolean member of the SET is a Final Element.
1222 [New]

1223 Signature: Often referred to as a hash-code; an n-bit sequence that is generated using an algorithm on the content of
1224 an End Device Table or a group of End Device Tables. The resulting sequence of bits is truncated to a small number
1225 of bits (e.g., 128 bits). A good hash function will enable (1) detection of file (or table) content corruption
1226 (unauthorized change) and (2) authentication of the End Device Agent who created the file (or Table).
1227 [ANSI C12.19-1997]

1228 Strict: In the context of declaration of type. When a type is created and the Replace, Redefine, or Override attribute
1229 is used and strictness is asserted (TRUE), then the search rule for the target type shall be strictly applied. A strict
1230 search requires that the implied or explicit target scope contains the Replaced, Redefined, or Overridden type. A
1231 nonstrict search requires that the implied or explicit target scope is where the search starts in the End Device Table
1232 Definition Language (TDL) document scope hierarchy. This search is carried out in such a manner that the first
1233 encounter of the target type within any of the parent scopes will be considered a match for the sought Replaced or
1234 Redefined type. [New]

1235 STRING: An Atomic Array of Octets to be interpreted as characters dependent on CHAR_FORMAT. See 6.1,
1236 “Character set ”. [New]

1237 Sub-element: A subset of an Atomic Element, which is a single bit of a SET or a member of a BIT FIELD.
1238 [ANSI C12.19-1997]

1239 Table: Functionally related utility application data Elements, grouped together into a single data structure for
1240 transport. [ANSI C12.19-1997]

1241 Table Definition Language (TDL): Syntax used for detailing the standard’s or an End Device’s Table structure,
1242 defined types, and constraints in a machine-readable format. The Table Definition Language is encoded using
1243 Extensible Markup Language (XML). [new]

1244 Table, Extended User-defined (EUDT): An extension on UDTs to add up to 2040 virtual Tables that can select
1245 from, or reference into, Standard Tables and Manufacturer Tables. Extended User-defined Tables shall not refer to,
1246 or select from, Extended User-defined Tables. [New]

10
DRAFT ANSI C12.19-2012

1247 Table, Function Limiting Control (FLC): The first Table in each Decade. This Table specifies the limits designed
1248 into an End Device with respect to Elements used within that Decade. [ANSI C12.19-1997]

1249 Table, Manufacturer: A Table whose structure is defined by an individual End Device manufacturer. [New]

1250 Table, Metrological: A Table that contains at least one Element that is also a Metrological Parameter. [New]

1251 Table, Pending: Tables that have yet to be activated through conditions specified by the EVENT_CODE and
1252 trigger conditions in the EVENT_STORAGE_RCD in the Pending Event Description of the End Device. [New]

1253 Table, Program: An End Device Table that contains setup, configuration, or general product or record-keeping
1254 information about the End Device. Programming Tables shall not contain sensory information, End Device state
1255 information, or End Device logs that are volatile and change in the normal course of operation of the End Device.
1256 [New]

1257 Table, Secured: A Table that contains Secured Register. [New]

1258 Table, Standard: A Table whose structure is defined by this standard. [New]

1259 Table, User-defined (UDT): A Table whose Elements values that are derived from references (for writing) or
1260 Element values (for reading) into a temporary common area, which enables applications to make references to
1261 Tables and Table Elements that are present or implied to be present in an End Device. The Elements gathered may
1262 then be retrieved, and the Elements referenced may be written, as if the standard provided an explicit Table and
1263 descriptive syntax to express the resulting User-defined Table structure. [New]

1264 Tariff: A published list of rate schedules and terms and conditions. [ANSI C12.19-1997]

1265 Tier: A consumption-based or time-based rate range for the commodity. [New]

1266 Time-Of-Use (TOU) Metering: The use of metering equipment to separately record metered or measured
1267 quantities according to a time schedule. [ANSI C12.19-1997]

1268 Undefined: Qualifier applied to one or more Elements or values that are not defined by this standard. The use of an
1269 Undefined Element or value shall not affect compliance with this standard; however, the outcome is indeterminate.
1270 [New]

1271 Utility: A provider of electricity, gas, water, telecommunications, or related services to a community. [ANSI
1272 C12.19-1997]

1273

Definitions 11
DRAFT ANSI C12.19-2012

1274 4 General

1275 4.1 Standard Tables

1276 Standard Tables are those whose structures are specified by this standard. They should be used for both End Device
1277 programming and reading. The Tables provide control Tables as well as data Tables for a wide variety of functions
1278 to be implemented in addition to those presently defined. This standard provides for a total of 2040 Standard Tables,
1279 although not all are defined.

1280 4.1.1 Standard Tables grouping

1281 The Standard Tables are grouped together in Decades, with each Decade covering a general area of functionality.
1282 The first Table of each Decade, beginning with Decade 1, is referred to as a Function Limiting Control (FLC) Table.
1283 The purpose of the FLC Table is to specify the designed DIMENSION (DIM) limits (maximum limits) for Elements
1284 used within the Decade for the End Device.

1285 If present, the Table immediately following an FLC table is called the FLC+1 Table. The FLC+1 Table defines the
1286 ACTUAL (ACT) limits used for Elements in the current configuration of the End Device.

1287 If the FLC+1 Table is not present, the ACT limits are identical to the designed DIM limits specified in the FLC
1288 Table.

1289 If the FLC and FLC+1 Tables are not used in a Decade, then the limits are defined by a default set of values. The
1290 Default Sets for a particular Decade are defined within this standard in Annex C, “(normative) Default Sets for
1291 Decade Tables”. Possible combinations of FLC, FLC+1, and Decade Tables are defined in Figure 4-1.

FLC Table FLC+1 Table FLC+n Table Where ACT Values Are Found
A Not Used Not Used Not Used None - Decade not used
B Not Used Not Used Used Default set, per Standard
C Not Used Used Not Used Decade FLC+1 Table**
D Not Used Used Used Decade FLC+1 Table
E Used Not Used Not Used Decade FLC Table**
F Used Not Used Used Decade FLC Table
G Used Used Not Used Decade FLC+1 Table**
H Used Used Used Decade FLC+1 Table
1292 ** Not recommended practice.

1293 Figure 4-1—Possible combinations of FLC, FLC+1, and Decade Tables

1294 4.1.2 Standard Tables properties

1295 All Standard Tables assume a set of properties that are defined by this standard. Listed below are the Tables’ default
1296 properties to be assumed when not explicitly qualified by this standard. The default Table properties are shown in
1297 Figure 4-2.

12
DRAFT ANSI C12.19-2012

Global Default Table Property Value


Table Required FLC Table FLC+1 Table FLC+n Table (n>1)
Property*
name Yes
number Yes
label No Table name Table name Table name
type Yes
role No “LIMITING” “ACTUAL” “UNDEFINED”
associate No Scope of the Decade where Scope of the Decade where Scope of the Decade where
defined defined defined
atomic No “false” “false” “false”
accessibility No “READONLY” “READWRITE” “READWRITE”
deprecated No “false” “false” “false”
metrological No “false” “false” “false”
volatile** No “AUTO_AS_PER_ROLE” “AUTO_AS_PER_ROLE” “AUTO_AS_PER_ROLE”
class*** No “STD” “STD” “STD”
1298 * For more information, see I.2.25, “<procedure> Element (Child of <tdl> or <decade>)”.
1299 ** When the volatile attribute is set to “AUTO_AS_PER_ROLE”, then the values shall be assumed for Table volatility based on
1300 their assumed role as follows:
1301 role = “UNDEFINED” implies volatility is “true”.
1302 role = “LIMITING” implies volatility is “false”.
1303 role = “ACTUAL” implies volatility is “false”.
1304 role = “CONTROL” implies volatility is “false”.
1305 role = “DATA” implies volatility is “true”.
1306 role = “PRIVATE” implies volatility is “true”.
1307 *** A tag that identifies an application run-time class (module) that should be used to manage this Table. Standard classes
1308 defined are STD.UDT, STD.EUDT, and STD.

1309 Figure 4-2—Default Standard Tables properties

1310 4.1.3 Standard Procedure properties

1311 All Standard Procedures (Table 7, Table 8, and procedures defined within) assume a set of properties that are
1312 defined by this standard. Listed below are the default properties to be assumed when not explicitly qualified by this
1313 standard. The default Procedure properties are shown in Figure 4-3.

General / Standard Tables 13


Standard Procedure properties
DRAFT ANSI C12.19-2012

Global Default Procedure Property Value


Procedure Required Table 7 / Procedure Request Table 8 / Procedure Response
Property*
name Yes
number Yes
label No TABLE name / Procedure Name TABLE name / Procedure Name
type Yes
role No “CONTROL” “DATA”
associate No Scope of Procedure where defined then Scope of Procedure where defined then
PROC_INITIATE_TBL. STD_PARM_RCD PROC_RESPONSE_TBL. STD_RESP_RCD
then its parents’ scope then its parents’ scope

atomic No “true” “true”


accessibility No “READWRITE” “READONLY”
deprecated No “false” “false”
metrological No “false” “false”
volatile No “AUTO_AS_PER_ROLE” “AUTO_AS_PER_ROLE”
class No “STD” “STD”
target Yes Not Applicable / “PROC_INITIATE_TBL. Not Applicable / “PROC_RESPONSE_TBL.
STD_PARM_RCD” STD_RESP_RCD”

strict No Not applicable / “true” Not applicable / “true”

1314 * For more information see I.2.25, “<procedure> Element (Child of <tdl> or <decade>)”.

1315 Figure 4-3—Default Standard Tables 7, 8, and Procedures properties

1316 4.2 Manufacturer Tables

1317 Manufacturer Tables are those structures specified by individual End Device vendors. They should be used to
1318 introduce innovations or to provide customer-requested data structures that are not defined by this standard. It is
1319 noted that the standard also provides for the latter to be accomplished in a limited manner through user-defined
1320 Tables (Decade 8) and extended user-defined Tables (Decade 14). Manufacturer Tables also provide a path for new
1321 functions to evolve into a Standard Tables.

1322 4.2.1 Manufacturer Tables grouping

1323 This standard provides access for a total of 2040 Manufacturer Tables. When Manufacturer Tables may introduce
1324 new Decades, then the implementation guidance enumerated in Figure 4-1 shall be followed. When Manufacturer
1325 Tables are introduced singly (i.e., as FLC+n Tables), they shall be associated with an existing Decade. More details
1326 are found in I.2, “TDL XML File Format of the TDL Document”, and more specifically see the associate attribute
1327 described in I.2.25, “<procedure> Element (Child of <tdl> or <decade>)”.

1328 4.2.2 Manufacturer Tables properties

1329 All Manufacturer Tables assume a set of properties that are defined by this standard. Listed below are the Tables’
1330 default properties to be assumed when not explicitly qualified by the manufacturer’s TDL. The default Manufacturer
1331 Table properties are shown in Figure 4-4.

14
DRAFT ANSI C12.19-2012

Mfg. Table Required Global Default Table


Property* Property Value
name Yes
number Yes
label No Table name
type Yes
role No “UNDEFINED”
associate No Scope of the TDL or Decade
where defined
atomic No “false”
accessibility No “READWRITE”
deprecated No “false”
metrological No “false”
volatile No “AUTO_AS_PER_ROLE”
class* No “STD”
1332 *A tag that identifies an application run-time class (module) that should
1333 be used to manage this Manufacturer Table. STD signifies that the
1334 Standards Table-read and Table-write and TDL rules apply, with no
1335 additional assumptions for interpretation. Other predefined algorithms
1336 are STD.UDT and STD.EUDT.

1337 Figure 4-4—Default Manufacturer Tables properties

1338 4.2.3 Manufacturer Procedure properties

1339 All Manufacturer Procedures share, by default, a set of properties that are defined by this standard. Listed below are
1340 the default properties to be assumed when not explicitly qualified by the Manufacturer’s TDL. The default
1341 Procedure properties are shown in Figure 4-5.

Global Default Procedure Property Value


Procedure Required MFG Procedure Request MFG Procedure Response
Property
name Yes
number Yes
label No Procedure Name Procedure Name
type Yes
role No “CONTROL” “DATA”
associate No Scope of Procedure where defined then Scope of Procedure where defined then
PROC_INITIATE_TBL. MFG_PARM_RCD PROC_RESPONSE_TBL. MFG_RESP_RCD
then its parents’ scope then its parents’ scope

atomic No “true” “true”


accessibility No “READWRITE” “READWRITE”
deprecated No “false” “false”
metrological No “false” “false”
volatile No “AUTO_AS_PER_ROLE” “AUTO_AS_PER_ROLE”
class No “STD” “STD”
target Yes “PROC_INITIATE_TBL. MFG_PARM_RCD” “PROC_RESPONSE_TBL. MFG_RESP_RCD”

strict No “true” “true”

1342 Figure 4-5—Default Manufacturer Procedures properties

General / Manufacturer Tables 15


Manufacturer Procedure properties
DRAFT ANSI C12.19-2012

1343 4.3 Packed Record, Bit Field, and Element properties

1344 Packed Records, Bit Fields, and the contained Element definitions also have default properties. These default
1345 properties are fully described in Annex I, “(normative) XML file format of TDL and EDL files”.

1346 4.4 Extended User-defined Tables properties

1347 Extended User-defined Tables default properties are identical to the properties shown in 4.1.2, “Standard Tables
1348 properties”, except for the class=“STD.EUDT”. The class “STD.EUDT” invokes the standard’s processing
1349 requirements for Extended User-defined Tables.

1350

16
DRAFT ANSI C12.19-2012

1351 5 Syntax

1352 5.1 Descriptive syntax

1353 Describing data definitions is usually accomplished within the confines of a given language and the grammar rules
1354 of that language. Since the data definitions embodied within this document are meant to be independent of a specific
1355 language and capable of being implemented within the confines of any language, a method for describing the data
1356 definitions has been adopted. The descriptive syntax is expressed using the Extended BNF definitions defined in
1357 Annex G, “(normative) Document-form descriptive syntax”. The definition syntax is a merge between the traditional
1358 Backus Naur Format and XML simple BNF as described in XML-2006, with extensions that facilitate the binding of
1359 production rules needed for the definition of the published pseudo PASCAL text (Clause 9, “Tables”) and the
1360 machine-readable XML based TDL. In addition, the Extended BNF syntax provides definitions for constraints on
1361 binary transmission and interpretation of types.

Syntax / Descriptive syntax 17


DRAFT ANSI C12.19-2012

1362 6 Special data types


1363 In order to add flexibility to the definition of some of the data types used within the tables, special data types are
1364 provided. The selection of special data type definitions are placed in GEN_CONFIG_TBL (Table 00) and remain
1365 in effect for all Tables. This clause defines the encoding used to transmit the special data type. All special data types,
1366 just like built-in types, are Atomic.

1367 6.1 Character set selection

1368 This selection is used to determine the encoding of characters that are used in the Tables.
1369 GEN_CONFIG_TBL.FORMAT_CONTROL_1.CHAR_FORMAT is the controlling selector for the encoding
1370 of CHAR, STRING, FLOAT_CHAR6, FLOAT_CHAR12, and FLOAT_CHAR21.

1371 TDL Type Definitions

1372 { Enumerator CHAR_FORMAT_ENUM }

1373 TDL Element Descriptions

1374 Identifier Value Definition


1375 CHAR_FORMAT_ENUM

1376 0 Reserved.

1377 1 ISO 7-bit coded character set for information interchange, per
1378 ISO/IEC 646-1991, a fixed-width encoding using 8 bits as its
1379 base unit for length calculations and UINT8 as the base unit
1380 for transmission.

1381 2 ISO 8-bit coded character as per ISO 8859-1-1998 or ECMA


1382 94-1996 Latin 1 character set, a fixed-width encoding using
1383 8 bits as its base unit for length calculations and UINT8 as the
1384 base unit for transmission.

1385 3 UTF-8 as per BNF.utf8., variable-width encoding using 8 bits


1386 as its base unit for length calculations and UINT8 as the base
1387 unit for transmission. This type maximizes compatibility with
1388 CHAR_FORMATs 1 and 2 as per Section 2.5, “Encoding
1389 Forms / UTF-8” and Section 15.9, “Specials” of The Unicode
1390 Standard [B13]. In UTF-8, the byte order mark, BOM,
1391 corresponds to the byte sequence [#xEF] [#xBB] [#xBF]. The
1392 BOM of UTF-8 shall be permitted only when it can be
1393 accommodated by the size of the element [at least three (3)
1394 Octets], but it shall be ignored (not produce displayable text)
1395 by the processing application.

1396 4..7 Reserved.

1397 6.2 Noninteger formats

1398 This selection is used to determine the structure of noninteger numbers used in the Tables. The Table Elements
1399 GEN_CONFIG_TBL.FORMAT_CONTROL_3.NI_FORMAT1 and GEN_CONFIG_TBL.FORMAT_
1400 CONTROL_3.NI_FORMAT2 are the controlling selectors for the built-in types NI_FMAT1 and NI_FMAT2.

18
DRAFT ANSI C12.19-2012

1401 They provide the final associations between BNF.anyFloat noninteger data types and the actual atomic encoding
1402 used to transmit NI_FMAT1 and NI_FMAT2 data items as defined below.

1403 TDL Type Definitions

1404 { Enumerator NI_FORMAT_ENUM }

1405 TDL Element Descriptions

1406 Identifier Value Definition


1407 NI_FORMAT_ENUM Values that may be assumed by
1408 GEN_CONFIG_TBL.FORMAT_CONTROL_3.NI_FORMAT1
1409 (which controls the interpretation of the built-in type NI_FMAT1)
1410 and
1411 GEN_CONFIG_TBL.FORMAT_CONTROL_3.NI_FORMAT2
1412 (which controls the interpretation of the built-in type NI_FMAT2).
1413 0 FLOAT64
1414 1 FLOAT32
1415 2 FLOAT_CHAR12 (A STRING Number)
1416 3 FLOAT_CHAR6 (A STRING Number)
1417 4 INT32 (Implied decimal point between fourth and fifth digits from
1418 least significant digit. For example, 0.0001 is represented as 1)
1419 5 FIXED_BCD6
1420 6 FIXED_BCD4
1421 7 INT24
1422 8 INT32
1423 9 INT40
1424 10 INT48
1425 11 INT64
1426 12 FIXED_BCD8
1427 13 FLOAT_CHAR21 (A STRING Number)
1428 14..15 Reserved

1429 6.2.1 STRING Numbers

1430 When STRING is used and GEN_CONFIG_TBL.FORMAT_CONTROL_3.NI_FORMAT1 or


1431 GEN_CONFIG_TBL.FORMAT_CONTROL_3.NI_FORMAT2 has a value of 2, 3, or 13, the number shall be
1432 represented according to BNF.floatingPointStringNumber.

1433 A STRING number (BNF.floatingPointStringNumber) representation can have any number of leading spaces,
1434 followed by an optional plus or minus sign, followed by a mandatory one or more digits, followed by an optional
1435 period and zero or more digits, followed by an optional exponent. An exponent is composed of the letter “E”, “e”;
1436 followed by an optional plus or minus sign, followed by a mandatory one or more digits. Any number of spaces can
1437 lead or follow the BNF.floatingPointStringNumber, but spaces shall not be embedded within. This format ensures
1438 that clear identification of any BNF.floatingPointStringNumber is possible in a stream (sequence) of
1439 BNF.floatingPointStringNumber+, using the space character as a separator.

1440 Examples:

1441 Valid production based on BNF.floatingPointStringNumber


1442 ‘+1.0E-7’
1443 ‘123.6478e+03’
1444 ‘1.2345’
1445 ‘1.0E-3’
Special data types / Noninteger formats 19
STRING Numbers
DRAFT ANSI C12.19-2012

1446 Invalid production based on BNF.floatingPointStringNumber


1447 ‘.5’
1448 ‘e+03’
1449 ‘e3’
1450 ‘-1.e3’

1451 6.3 Date and time formats

1452 This selection is used to determine the structure of dates and times used in the tables. The Element
1453 GEN_CONFIG_TBL.FORMAT_CONTROL_2.TM_FORMAT is the controlling selector for HTIME_DATE,
1454 LTIME_DATE, STIME_DATE, TIME, STIME, and HTIME.

1455 TDL Type Definitions

1456 { Enumerator TM_FORMAT_ENUM }

1457 TDL Element Descriptions

1458 Identifier Value Definition

1459 TM_FORMAT_ENUM Values that may be assumed by


1460 GEN_CONFIG_TBL.FORMAT_CONTROL_2.
1461 TM_FORMAT (which controls the interpretation of the built-
1462 in types HTIME_DATE, LTIME_DATE, STIME_DATE,
1463 TIME, STIME, and HTIME).
1464 0 No clock in the End Device.
1465 1 BCD type with discrete fields for year, month, day, hour,
1466 minute seconds, and fractional seconds.
1467 2 UINT8 type with discrete fields for year, month, day, hour,
1468 minute seconds, and fractional seconds.
1469 3 UINT32 counters where HTIME_DATE, LTIME_DATE,
1470 and STIME_DATE types are encoded relative to 01/01/1970
1471 @ 00:00:00 UTC, with discrete fields for minutes and fraction
1472 of a minute.
1473 4 UINT32 counters where HTIME_DATE, LTIME_DATE,
1474 and STIME_DATE types are encoded relative to 01/01/1970
1475 @ 00:00:00 UTC), with discrete fields for seconds and
1476 fraction of a second.
1477 5..7 Reserved.

1478 6.3.1 HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME types

1479 The date and time structures are described next as packed records, but they are transmitted as Atomic Table
1480 Elements.

1481 TDL Type Definitions

1482 TYPE HTIME_DATE_RCD = PACKED RECORD


1483 SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
1484 CASE 0 : NIL : NIL;
1485 CASE 1 : YEAR : BCD;
1486 MONTH : BCD;
1487 DAY : BCD;
1488 HOUR : BCD;

20
DRAFT ANSI C12.19-2012

1489 MINUTE : BCD;


1490 SECOND : BCD;
1491 BCD_SEC_FRACTION : BCD(3);
1492 CASE 2 : YEAR : UINT8;
1493 MONTH : UINT8;
1494 DAY : UINT8;
1495 HOUR : UINT8;
1496 MINUTE : UINT8;
1497 SECOND : UINT8;
1498 UINT_SEC_FRACTION : UINT24;
1499 CASE 3 : U_TIME : UINT32;
1500 SECOND : UINT8;
1501 UINT_SEC_FRACTION : UINT24;
1502 CASE 4 : U_TIME_SEC : UINT32;
1503 U_SEC_FRACTION : UINT32;
1504 END;
1505 END;

1506 TYPE LTIME_DATE_RCD = PACKED RECORD


1507 SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
1508 CASE 0 : NIL : NIL;
1509 CASE 1 : YEAR : BCD;
1510 MONTH : BCD;
1511 DAY : BCD;
1512 HOUR : BCD;
1513 MINUTE : BCD;
1514 SECOND : BCD;
1515 CASE 2 : YEAR : UINT8;
1516 MONTH : UINT8;
1517 DAY : UINT8;
1518 HOUR : UINT8;
1519 MINUTE : UINT8;
1520 SECOND : UINT8;
1521 CASE 3 : U_TIME : UINT32;
1522 SECOND : UINT8
1523 CASE 4 : U_TIME_SEC : UINT32;
1524 END;
1525 END;

1526 TYPE STIME_DATE_RCD = PACKED RECORD


1527 SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
1528 CASE 0 : NIL : NIL;
1529 CASE 1 : YEAR : BCD;
1530 MONTH : BCD;
1531 DAY : BCD;
1532 HOUR : BCD;
1533 MINUTE : BCD;
1534 CASE 2 : YEAR : UINT8;
1535 MONTH : UINT8;
1536 DAY : UINT8;
1537 HOUR : UINT8;
1538 MINUTE : UINT8;
1539 CASE 3 : U_TIME : UINT32;
1540 CASE 4 : U_TIME_SEC : UINT32;
1541 END;
1542 END;
Special data types / Date and time formats 21
HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME types
DRAFT ANSI C12.19-2012

1543 TYPE HTIME_RCD = PACKED RECORD


1544 SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
1545 CASE 0 : NIL : NIL;
1546 CASE 1 : HOUR : BCD;
1547 MINUTE : BCD;
1548 SECOND : BCD;
1549 BCD_SEC_FRACTION : BCD(3);
1550 CASE 2 : HOUR : UINT8;
1551 MINUTE : UINT8;
1552 SECOND : UINT8;
1553 UINT_SEC_FRACTION : UINT24;
1554 CASE 3 : D_TIME : UINT32;
1555 U_SEC_FRACTION : UINT32;
1556 CASE 4 : D_TIME : UINT32;
1557 U_SEC_FRACTION : UINT32;
1558 END;
1559 END;

1560 TYPE TIME_RCD = PACKED RECORD


1561 SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
1562 CASE 0 : NIL : NIL;
1563 CASE 1 : HOUR : BCD;
1564 MINUTE : BCD;
1565 SECOND : BCD;
1566 CASE 2 : HOUR : UINT8;
1567 MINUTE : UINT8;
1568 SECOND : UINT8;
1569 CASE 3 : D_TIME : UINT32;
1570 CASE 4 : D_TIME : UINT32;
1571 END;
1572 END;

1573 TYPE STIME_RCD = PACKED RECORD


1574 SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
1575 CASE 0 : NIL : NIL;
1576 CASE 1 : HOUR : BCD;
1577 MINUTE : BCD;
1578 CASE 2 : HOUR : UINT8;
1579 MINUTE : UINT8;
1580 CASE 3 : D_TIME : UINT32;
1581 CASE 4 : D_TIME : UINT32;
1582 END;
1583 END;

1584 TDL Element Descriptions

1585 Identifier Value Definition

1586 HTIME_DATE_RCD High-precision (sub-second) time stamp. This is the prototype


1587 definition of the built-in type HTIME_DATE.

1588 YEAR 00..89 Years 2000..2089.


1589 90..99 Years 1990..1999.
1590 >100 Reserved.

22
DRAFT ANSI C12.19-2012

1591 MONTH 0 Reserved.


1592 1..12 Month of year.
1593 >12 Reserved.

1594 DAY 0 Reserved.


1595 1..31 Day of month.
1596 >31 Reserved.

1597 HOUR 00..23 Hour of day, 24-hour basis.


1598 >23 Reserved.

1599 MINUTE 00..59 Minute of hour.


1600 >59 Reserved.

1601 SECOND 00..59 Seconds of minute.


1602 >59 Reserved.

1603 BCD_SEC_FRACTION 0..999999 The sub-minute portion of SECOND expressed in units of


1604 1 / 1 000 000 of a second.

1605 UINT_SEC_FRACTION 0..16777215 The sub-minute portion of SECOND expressed in units of


1606 1 / 16 777 216 of a second.

1607 U_TIME 0..4294967295 Time in minutes since 01/01/1970 @ 00:00:00 GMT.

1608 U_TIME_SEC 0..4294967295 Time in seconds since 01/01/1970 @ 00:00:00 GMT.

1609 U_SEC_FRACTION 0..4294967295 The sub-second portion of U_TIME_SEC expressed in units


1610 of 1 / 4 294 967 296 of a second.

1611 LTIME_DATE_RCD Normal-precision (seconds) time stamp. This is the prototype


1612 definition of the built-in type LTIME_DATE.

1613 YEAR 00..89 Years 2000..2089.


1614 90..99 Years 1990..1999.
1615 >100 Reserved.

1616 MONTH 0 Reserved.


1617 1..12 Month of year.
1618 >12 Reserved.

1619 DAY 0 Unassigned.


1620 1..31 Day of month.
1621 >31 Reserved.

1622 HOUR 00..23 Hour of day, 24-hour basis.


1623 >23 Reserved.

1624 MINUTE 00..59 Minute of hour.


1625 >59 Reserved.

1626 SECOND 00..59 Seconds of minute.


1627 >59 Reserved.

Special data types / Date and time formats 23


HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME types
DRAFT ANSI C12.19-2012

1628 U_TIME 0..4294967295 Time in minutes since 01/01/1970 @ 00:00:00 GMT.

1629 U_TIME_SEC 0..4294967295 Time in seconds since 01/01/1970 @ 00:00:00 GMT.

1630 STIME_DATE_RCD Low-precision (minutes) time stamp. This is the prototype


1631 definition of the built-in type STIME_DATE.

1632 YEAR 00..89 Years 2000..2089.


1633 90..99 Years 1990..1999.
1634 >100 Reserved.

1635 MONTH 0 Reserved.


1636 1..12 Month of year.
1637 >12 Reserved.

1638 DAY 0 Unassigned.


1639 1..31 Day of month.
1640 >31 Reserved.
1641 HOUR 00..23 Hour of day, 24-hour basis.
1642 >23 Reserved.
1643 MINUTE 00..59 Minute of hour.
1644 >59 Reserved.
1645 U_TIME 0..4294967295 Time in minutes since 01/01/1970 @ 00:00:00 GMT.
1646 HTIME_RCD High-precision (sub-second) time interval or localized time.
1647 This is the prototype definition of the built-in type HTIME.

1648 HOUR 00..23 Hour of day, 24-hour basis.


1649 >23 Reserved.

1650 MINUTE 00..59 Minute of hour.


1651 >59 Reserved.

1652 SECOND 00..59 Seconds of minute.


1653 >59 Reserved.

1654 BCD_SEC_FRACTION 0..999999 The sub-minute portion of SECOND expressed in units of


1655 1 / 1 000 000 of a second.

1656 UINT_SEC_FRACTION 0..16777215 The sub-minute portion of SECOND expressed in units of


1657 1 / 16 777 216 of a second.

1658 D_TIME 0..4294967295 Time in seconds since 00:00:00 localized time.

1659 U_SEC_FRACTION 0..4294967295 The sub-second portion of D_TIME expressed in units of


1660 1 / 4 294 967 296 of a second.

1661 TIME_RCD Normal-precision (seconds) time interval or localized time.


1662 This is the prototype definition of the built-in type TIME.

1663 HOUR 00..23 Hour of day, 24-hour basis.


1664 >23 Reserved.

24
DRAFT ANSI C12.19-2012

1665 MINUTE 00..59 Minute of hour.


1666 >59 Reserved.

1667 SECOND 00..59 Seconds of minute.


1668 >59 Reserved.

1669 D_TIME 0..4294967295 Time in seconds since 00:00:00 localized time.

1670 STIME_RCD Low-precision (minutes) time interval or localized time. This


1671 is the prototype definition of the built-in type STIME.

1672 HOUR 00..23 Hour of day, 24-hour basis.


1673 >23 Reserved.

1674 MINUTE 00..59 Minute of hour.


1675 >59 Reserved.

1676 D_TIME 0..4294967295 Time in seconds since 00:00:00 localized time.

1677 6.3.2 RDATE type

1678 This type defines a recurrent date. This recurrence can be yearly, monthly, or weekly, based on a constant cycle of
1679 days or minutes.

1680 TDL Type Definitions

1681 TYPE RDATE_BFLD = BIT FIELD OF UINT16


1682 MONTH : UINT(0..3);
1683 SWITCH .MONTH OF
1684 CASE 0 :
1685 PERIOD_IN_MINUTES : UINT(4..15);
1686 CASE 1..13 :
1687 OFFSET : UINT(4..7);
1688 WEEKDAY : UINT(8..10);
1689 DAY : UINT(11..15);
1690 CASE 14 :
1691 FILLER1 : FILL(4..7);
1692 WEEKDAY : UINT(8..10);
1693 FILLER2 : FILL(11..15);
1694 CASE 15 :
1695 PERIOD_IN_DAYS : UINT(4..9);
1696 DELTA : UINT(10..15);
1697 END;
1698 END;
1699

Special data types / Date and time formats 25


RDATE type
DRAFT ANSI C12.19-2012

1700 TDL Element Descriptions

1701 Identifier Value Definition

1702 RDATE_BFLD This is the prototype definition of the built-in type RDATE.

1703 MONTH 0 Action is repeated each PERIOD_IN_MINUTES. The


1704 starting date and time shall be supplied separately.
1705 1 Action is repeated each January.
1706 2 Action is repeated each February.
1707 3 Action is repeated each March.
1708 4 Action is repeated each April.
1709 5 Action is repeated each May.
1710 6 Action is repeated each June.
1711 7 Action is repeated each July.
1712 8 Action is repeated each August.
1713 9 Action is repeated each September.
1714 10 Action is repeated each October.
1715 11 Action is repeated each November.
1716 12 Action is repeated each December.
1717 13 Action is repeated monthly.
1718 14 Action is repeated weekly.
1719 15 Action is repeated each PERIOD_IN_DAYS referenced by
1720 an ANCHOR_DATE plus DELTA. The ANCHOR_DATE
1721 shall be supplied separately.

1722 PERIOD_IN_MINUTES 0..4095 0 to 4095 minutes (or 68 hours).

1723 OFFSET 0 No offset.


1724 1 Advance to WEEKDAY before date entered.
1725 2 Postpone to the first WEEKDAY on or after date entered.
1726 3 Postpone to the second WEEKDAY on or after date entered.
1727 4 Postpone to the third WEEKDAY on or after date entered.
1728 5 Postpone to the fourth WEEKDAY on or after date entered.
1729 6 Postpone to the last WEEKDAY of the MONTH on or after
1730 date entered.
1731 7 Observe on date entered as well as day following date entered.
1732 8 Postpone to Monday if Sunday.
1733 9 Advance to Friday if Sunday.
1734 10 Postpone to Monday if Saturday.
1735 11 Advance to Friday if Saturday.
1736 12 Postpone to Monday if Sunday or Saturday.
1737 13 Advance to Friday if Sunday or Saturday.
1738 14 Postpone to Monday if Sunday, advance to Friday if Saturday.
1739 15 Do not observe date entered. Observe on day following date
1740 entered.

1741 WEEKDAY 0 Sunday


1742 1 Monday.
1743 2 Tuesday.
1744 3 Wednesday.
1745 4 Thursday.
1746 5 Friday.
1747 6 Saturday.
1748 7 Reserved.
26
DRAFT ANSI C12.19-2012

1749 DAY 0 Reserved.


1750 1..31 Day of month.

1751 PERIOD_IN_DAYS 0..63 0 to 63 days.

1752 DELTA 0..63 0 to 63 days.

1753 6.3.3 DATE Type

1754 This type defines a nonrecurrent date in the localized time using a field having the same size as the recurrent date
1755 type "RDATE".

1756 TDL Type Definitions

1757 TYPE DATE_BFLD = BIT FIELD OF UINT16


1758 YEAR : UINT(0..6);
1759 MONTH : UINT(7..10);
1760 DAY : UINT(11..15);
1761 END;

1762 TDL Element Descriptions

1763 Identifier Value Definition

1764 DATE_BFLD This is the prototype definition of the built-in type DATE.

1765 YEAR 00..89 Years 2000..2089.


1766 90..99 Years 1990..1999.
1767 >100 Reserved.

1768 MONTH 0 Reserved.


1769 1..12 Month of year.
1770 >12 Reserved.

1771 DAY 0 Reserved.


1772 1..31 Day of month.

Special data types / Date and time formats 27


DATE Type
DRAFT ANSI C12.19-2012

1773 6.4 Common table or procedure identifier formats

1774 These types are provided to ease the specification of table access parameters and to provide consistent specification
1775 of these table access parameters throughout the document.

1776 6.4.1 TABLE_IDA_BFLD bit field

1777 Type TABLE_IDA_BFLD provides the table or procedure number; a flag indicating standard or manufacturer table
1778 or procedure; a flag indicating pending status; a flag indicating extended-user-defined table and two additional fields
1779 for definition and use within the defining data structure. When the EUDT_FLAG flag is set, then MFG_FLAG
1780 shall be set to zero.

1781 TDL Type Definitions

1782 TYPE TABLE_IDA_BFLD = BIT FIELD OF UINT16


1783 TBL_PROC_NBR : UINT(0..10);
1784 MFG_FLAG : BOOL(11);
1785 PENDING_FLAG : BOOL(12);
1786 EUDT_FLAG : BOOL(13);
1787 FLAG2 : BOOL(14);
1788 FLAG3 : BOOL(15);
1789 END;

1790 TDL Element Descriptions

1791 Identifier Value Definition


1792 TABLE_IDA_BFLD
1793 TBL_PROC_NBR 0..2039 Table number or Procedure number selected or identified.

1794 MFG_FLAG Alias: STD_VS_MFG_FLAG.


1795 FALSE The Table or Procedure selected or identified by
1796 TBL_PROC_NBR is defined by this standard.
1797 TRUE The Table or Procedure selected or identified by
1798 TBL_PROC_NBR is defined by the End Device
1799 manufacturer.

1800 PENDING_FLAG FALSE The Table or Procedure selected or identified by


1801 TBL_PROC_NBR is an active instance of a Table or
1802 Procedure of the End Device.
1803 TRUE The Table or Procedure selected or identified by
1804 TBL_PROC_NBR is a pending (deferred) instance of a Table
1805 or Procedure of the End Device.

1806 EUDT_FLAG Alias: FLAG1.


1807 FALSE The entity selected or identified by TBL_PROC_NBR shall
1808 be an instance of a Table within the End Device. This table
1809 shall be listed in one of the sets
1810 GEN_CONFIG_TBL.STD_TBLS_USED or
1811 GEN_CONFIG_TBL.MFG_TBLS_USED.
1812 TRUE The entity selected or identified by TBL_PROC_NBR shall
1813 be an instance of an extended-user-defined Table of the End
1814 Device.

28
DRAFT ANSI C12.19-2012

1815 FLAG2 General-purpose flag to be Redefined where used.


1816 FALSE As defined where used.
1817 TRUE As defined where used.

1818 FLAG3 General-purpose flag to be Redefined where used.


1819 FALSE As defined where used.
1820 TRUE As defined where used.

1821 6.4.2 TABLE_IDB_BFLD bit field

1822 Type TABLE_IDB_BFLD provides the table or procedure number; a flag indicating standard or manufacturer table
1823 or procedure; and a 4-bit unsigned integer for definition and use within the defining data structure.

1824 TDL Type Definitions

1825 TYPE TABLE_IDB_BFLD = BIT FIELD OF UINT16


1826 TBL_PROC_NBR : UINT(0..10);
1827 MFG_FLAG : BOOL(11);
1828 SELECTOR : UINT(12..15);
1829 END;

1830 TDL Element Descriptions

1831 Identifier Value Definition


1832 TABLE_IDB_BFLD
1833 TBL_PROC_NBR 0..2039 Table number or Procedure number selected or identified. This
1834 reference number shall be to an active Table or Procedure of
1835 the End Device; i.e., it shall not reference a pending Table,
1836 pending Procedure, or extended-user-defined Table.

1837 MFG_FLAG Alias: STD_VS_MFG_FLAG.


1838 FALSE The Table or Procedure selected or identified by
1839 TBL_PROC_NBR is defined by this standard.
1840 TRUE The Table or Procedure selected or identified by
1841 TBL_PROC_NBR is defined by the End Device
1842 manufacturer.

1843 SELECTOR 0..15 A general-purpose selector that is encoded as an enumerated


1844 Sub-element which shall be Redefined where used.

Special data types / Common table or procedure identifier formats 29


TABLE_IDB_BFLD bit field
DRAFT ANSI C12.19-2012

1845 6.4.3 TABLE_IDC_BFLD bit field

1846 Type TABLE_IDC_BFLD provides the table or procedure number; a flag indicating standard or manufacturer; a
1847 flag indicating table or procedure; and three additional fields for definition and use within the defining data
1848 structure.

1849 TDL Type Definitions

1850 TYPE TABLE_IDC_BFLD = BIT FIELD OF UINT16


1851 TBL_PROC_NBR : UINT(0..10);
1852 MFG_FLAG : BOOL(11);
1853 PROC_FLAG : BOOL(12);
1854 FLAG1 : BOOL(13);
1855 FLAG2 : BOOL(14);
1856 FLAG3 : BOOL(15);
1857 END;

1858 TDL Element Descriptions

1859 Identifier Value Definition


1860 TABLE_IDC_BFLD
1861 TBL_PROC_NBR 0..2039 Table number or Procedure number selected or identified. This
1862 reference number shall be to an active Table or Procedure of
1863 the End Device. i.e., it shall not reference a pending Table,
1864 pending Procedure or extended-user-defined Table.

1865 MFG_FLAG Alias: STD_VS_MFG_FLAG.


1866 FALSE The Table or Procedure selected or identified by
1867 TBL_PROC_NBR is defined by this standard.
1868 TRUE The Table or Procedure selected or identified by
1869 TBL_PROC_NBR is defined by the End Device
1870 manufacturer.

1871 PROC_FLAG FALSE The TBL_PROC_NBR is a table number.


1872 TRUE The TBL_PROC_NBR is a procedure number.

1873 FLAG1 General-purpose flag to be Redefined where used.


1874 FALSE As defined where used.
1875 TRUE As defined where used.

1876 FLAG2 General-purpose flag to be Redefined where used.


1877 FALSE As defined where used.
1878 TRUE As defined where used.

1879 FLAG3 General-purpose flag to be Redefined where used.


1880 FALSE As defined where used.
1881 TRUE As defined where used.

1882 6.4.4 SOURCE_SELECT_RCD

1883 Type SOURCE_SELECT_RCD provides a data source selection index and related qualifiers that describe the data
1884 source completely and unambiguously used in selections of data sources in control areas. This data type is used each
1885 time a measurement needs to be selected from a source defined in Decade 1.
30
DRAFT ANSI C12.19-2012

1886 TDL Type Definitions

1887 TYPE SOURCE_SELECT_RCD = PACKED RECORD


1888 SWITCH GEN_CONFIG_TBL.MODEL_SELECT OF
1889 CASE 0..1 :
1890 SOURCE_INDEX : UINT8;
1891 END;
1892 END;

1893 TDL Element Descriptions

1894 Identifier Value Definition


1895 SOURCE_SELECT_RCD
1896 SOURCE_INDEX 0..255 When MODEL_SELECT is set to 0 or 1, this index selects a
1897 source defined in Decade 1 using 8-bit selection indices.

Special data types / Common table or procedure identifier formats 31


SOURCE_SELECT_RCD
DRAFT ANSI C12.19-2012

1898 7 Compliance and compatibility

1899 7.1 Compliance

1900 An End Device is considered to be in compliance with this standard if all of the following conditions are met:

1901 a) Two-way communicating End Devices shall accept and act upon all services defined in Clause 8,
1902 “Table transportation issues”.

1903 b) The DEVICE_CLASS field in GEN_CONFIG_TBL (Table 00) shall contain a relative universal
1904 object identifier relative to the End Device class registered root context.

1905 c) Two-way communicating End Devices shall transmit GEN_CONFIG_TBL (Table 00) on request.

1906 d) One-way communicating End Devices shall include the DEVICE_CLASS field in each of their
1907 transmissions. In addition, these End Devices shall be registered using the TDL file format. This file
1908 shall contain the definition of the corresponding Table 00 and any other Tables necessary to
1909 understand all possible valid unsolicited messages.

1910 e) Any Table transported between an End Device and any other device shall be either a Standard Table as
1911 defined by this standard or a Manufacturer Table defined by the End Device manufacturer. All
1912 Standard and Manufacturer Tables supported for the current End Device implementation shall be
1913 specified in GEN_CONFIG_TBL (Table 00). A Table shall be considered to be supported if and only
1914 if it is specified in GEN_CONFIG_TBL (Table 00).

1915 f) Any procedure written to the End Device shall be either a procedure as defined by this standard or a
1916 manufacturer procedure defined by the device manufacturer. All standard and manufacturer procedures
1917 supported for the current End Device implementation shall be specified in GEN_CONFIG_TBL
1918 (Table 00).

1919 g) Some Standard Tables contain data structures that can be collapsed by a control flag. The control flag
1920 shall be determinable based on this standard. Collapsed Elements shall not be transported. An array of
1921 zero (0) Elements is a collapsed Element.

1922 h) An End Device is not required to use every data structure within a Table; however, it shall transport all
1923 noncollapsed data structures within a Table. Unused fields are considered in compliance if Octet Count
1924 and format are correct and if manufacturers identify unused fields. It is recommended that unused
1925 fields be filled with zeros or spaces.

1926 i) This standard specifies variable formats for some data structures. The variable formats shall be
1927 consistent with the format as specified in GEN_CONFIG_TBL (Table 00). Refer to Clause 5,
1928 “Syntax”, and Clause 6, “Special data types”, for details.

1929 j) Function Limiting Tables (FLCs) and Actual Function Limiting Tables (FLC+1) specify the designed
1930 and usable limits for variables used within a given Decade. The permissible combinations of these
1931 Tables are listed in Figure 4-1.

1932

32
DRAFT ANSI C12.19-2012

1933 7.2 Backward and forward compatibility

1934 Any future revision of this standard shall be backward compatible with the previous two (2) revisions of the
1935 standard according to the governing standard’s revision cycle requirement. It is recommended that new
1936 implementations of the standard avoid using Deprecated Elements and attributes whenever practical. Forward
1937 compatibility is not ensured as Deprecated Elements may become obsolete in future versions of the standard or End
1938 Device.

1939 Element extensions to the tail end of the Tables of the previous versions of this standard are defined in a manner that
1940 does not change the structure of the Tables Elements defined by the previous standard version. Also, when Element
1941 fields were modified, the changes do not impact the interoperation of those Elements according to the previous
1942 standard version.

Compliance and compatibility / Backward and forward compatibility 33


DRAFT ANSI C12.19-2012

1943 8 Table transportation issues


1944 The effective transport of Table structures is dependent only on the presence of basic Read and Write services (e.g.,
1945 those as defined in ANSI C12.18, ANSI C12.21, and ANSI C12.22). While the marketplace may dictate the
1946 incorporation of more sophisticated services, it is left to the implementers of specific protocol stacks to select the
1947 specific Read and Write services to be included.

1948 8.1 Minimum services and parameters

1949 8.1.1 Read Service

1950 The Read Service causes the transfer of data from the target device to the initiating device and is required for two-
1951 way communications.

1952 Read Service Request The Read Service Request shall be capable of both a complete
1953 and a partial Table read. This is accomplished by one required
1954 parameter and optional parameters. The required parameter is
1955 a Table Identifier. Optional parameters define partial Table
1956 retrieval.
1957 Identifier Value Definition
1958 Table Identifier This parameter has a range of 0 to 65 535 and is further
1959 subdivided.
1960 0..2039 Provides access to Standard Tables 00 to 2039.
1961 2048..4087 Provides access to Manufacturer Tables 00 to 2039.
1962 4096..6135 Provides access to Standard Pending Tables 00 to 2039.
1963 6144..8183 Provides access to Manufacturer Pending Tables 00 to 2039.
1964 8192..10231 Provides access to User-defined Tables 00 to 2039.
1965 12288..14327 Provides access to User-defined Pending Tables 00 to 2039.

1966 All others values are Reserved.

1967 The maximum number of Decades supported is 204 (10


1968 Tables per Decade) resulting in the standard supporting a
1969 maximum of 2040 tables in each of the Standard, Standard
1970 Pending, Manufacturer, and Manufacturer Pending groups of
1971 Tables. The User-defined Tables do not use the Decade
1972 structure since they represent a sequential set of views of
1973 selections from other Tables.

1974 Partial Table Retrieval The retrieval of a portion of a Table, a partial Table, is
1975 possible through the use of one of two methods, the
1976 Index/Element count method, and Offset/Octet-count method.
1977 The absence of either of these methods implies the entire
1978 Table shall be read.

1979 Index/Element-Count Method The Index/Element-count method is based on accommodating


1980 a minimum of five (5) indices relative to the beginning of the
1981 Table data structure, and optionally a count of the number of
1982 elements to read starting at that index. Each index shall range
1983 from zero (0) to a maximum of 65 535. The range of the count
1984 of the number of elements read from that index point is zero
1985 (0) to a maximum of 65 535 elements. A zero for the count
1986 value or the absence of the count value shall cause the

34
DRAFT ANSI C12.19-2012

1987 remaining portion of the table to be read starting at the stated


1988 index value (for additional details, see 8.1.3, “Partial table
1989 access using the Index/Element-count method”).

1990 Offset/Octet-Count Method The Offset/Octet-count method is based on supplying an offset


1991 from the beginning of the selected Table and, optionally, a
1992 count of the number of Octets to read from the offset point.

1993 The range of the offset shall be zero (0) to at least 65 535
1994 Octets. The range of the count of the number of Octets to read
1995 from the offset point shall be zero (0) to at least 65 535 Octets.
1996 A zero (0) for the count value or the absence of the count
1997 value shall cause the remaining portion of the Table to be read
1998 starting at the offset point (for additional details, see 8.1.5,
1999 “Index count access method examples”). The count does not
2000 include the pending header length for pending Tables.

2001 Read Service Response


2002 Data The Read Service Response shall contain as a minimum the
2003 Table data selected by the aforementioned parameters supplied
2004 with the Read Service Request.

2005 When the Read Service Request Table Identifier specifies a


2006 Pending Table, a 6-Octet pending event description precedes
2007 the requested information. The pending event description
2008 parameters are described in 8.2, “Pending Event description”.

2009 8.1.2 Write Service

2010 The Write Service causes the transfer of unrequested data to a target device from the initiating device and is required
2011 for both one- and two-way communications.

2012 Write Service Request The Write Service Request shall be capable of both a complete
2013 and a partial Table write. This is accomplished by one
2014 required parameter and partial Table Identifiers and the write
2015 data field. The required parameter is a Table Identifier.
2016 Optional parameters define partial Table write.
2017 Identifier Value Definition
2018 Table Identifier This parameter has a range of 0 to 65 535 and is further
2019 subdivided as follows:
2020 0..2039 Provides access to Standard Tables 00 to 2039.
2021 2048..4087 Provides access to Manufacturer Tables 00 to 2039.
2022 4096..6135 Provides access to Standard Pending Tables 00 to 2039.
2023 Several additional parameters are required for writing to a
2024 Pending Table. These parameters are appended to the front of
2025 the Table data to be written. These parameters are described in
2026 8.2, “Pending Event description”.
2027 6144..8183 Provides access to Manufacturer Pending Tables 00 to 2039.
2028 Several additional parameters are required for writing to a
2029 Pending Table. These parameters are appended to the front of
2030 the Table data to be written as a pending event description.
2031 The pending event description parameters are described in 8.2,
2032 “Pending Event description”.
2033 8192..10231 Provides access to User-defined Tables 00 to 2039.
Table transportation issues / Minimum services and parameters 35
Write Service
DRAFT ANSI C12.19-2012

2034 12288..14327 Provides access to User-defined pending Tables 00 to 2039.

2035 All other values are Reserved.

2036 The maximum number of Decades supported is 204 (10


2037 Tables per Decade) resulting in the standard supporting a
2038 maximum of 2040 Tables in each of the Standard, Standard
2039 Pending, Manufacturer, and Manufacturer Pending groups of
2040 Tables. The User-defined Tables do not use the Decade
2041 structure since they represent a sequential set of views of
2042 selections from other Tables.

2043 Partial Table Identifier The writing of a portion of a Table, a partial Table, is possible
2044 through the use of one of two methods, the Index/Element-
2045 count method and Offset/Octet-count method. The absence of
2046 either of these methods implies the entire Table shall be
2047 written.

2048 Index/Element-count Method The Index/Element-count Method is based on accommodating


2049 a minimum of five indices relative to the beginning of the
2050 Table data structure and, optionally, a count of the number of
2051 elements to write starting at the index point. Each index shall
2052 range from zero (0) to a maximum of 65 535. The range of the
2053 count of the number of elements to write shall range from zero
2054 (0) to a maximum of 65 535. A zero for the count value or the
2055 absence of the count value shall imply writing the remaining
2056 portion of the Table from the index point (for additional
2057 details, see 8.1.3, “Partial table access using the
2058 Index/Element-count method”).

2059 Offset/Octet-Count Method The Offset/Octet-count method is based on supplying an offset


2060 from the beginning of the selected Table and, optionally, a
2061 count of the number of Octets to write to the offset point.

2062 The range of the offset shall be zero (0) to at least 65 535
2063 Octets. The range of the count of the number of Octets to write
2064 to the offset point shall be zero (0) to at least 65 535 Octets. A
2065 zero for the count value or the absence of the count value shall
2066 cause the remaining portion of the Table to be written from the
2067 offset point (for additional details, see 8.1.5, “Index count
2068 access method examples”). The count includes the pending
2069 header length for pending Tables.

2070 Data The data field contains the information to write.

2071 When the Write Service Request Table Identifier specifies a


2072 Pending Table, a 6-Octet pending event description precedes
2073 the information in the data field.

2074 Write Service Response No response is required to the Write Service Request.

2075 8.1.3 Partial table access using the Index/Element-count method

2076 This subclause defines the rule-set for selecting Elements of a Table when using an Element index and an Element

36
DRAFT ANSI C12.19-2012

2077 count:

2078 a) An index sets up a start of selection into a table object relative to the beginning of the table as follows:

2079 1) Each member of a PACKED RECORD gets a unique number.


2080 2) The positional number of the first element of a PACKED RECORD is assigned the value zero.
2081 3) The positional numbers of subsequent elements in the same PACKED RECORD are
2082 incremented by one for each subsequent element in the PACKED RECORD.
2083 4) Each subelement of a BIT FIELD is assigned a unique positional number.
2084 5) The positional number of the first subelement of a BIT FIELD is assigned the value zero.
2085 6) The positional numbers of subsequent subelements in the same BIT FIELD are incremented by
2086 one for each subsequent subelement in the BIT FIELD, independent of the bit range assigned to
2087 the subelement.
2088 7) Positional numbers are assigned independently of any IF or SWITCH statements that may be
2089 present inside PACKED RECORDs or BIT FIELDs, as if the elements or subelements were
2090 not enclosed within any IF or SWITCH statements.
2091 8) One level of index is appended to the index of the parent’s element index for use in elements and
2092 final elements selections.
2093 9) Selections of Boolean members within a SET are referenced in the same way as array members
2094 of a one-dimensional array.
2095 10) For elements of an ARRAY, one level of index is appended to the index of the array.

2096 b) Selection based on an index method using element count = 1 will deliver the whole selected element.

2097 c) For the purpose of binary transmission, index cannot select into a subelement or final elements that are not
2098 atomic, with the exception of SETs, where the first Octet selected for transmission is that computed by
2099 integer division of the atomic index number requested by eight (8), and the number of elements is the
2100 number of bits requested.

2101 d) For the purpose of transmission, an index selection into a nonexisting element shall result in an
2102 “Inappropriate Action Requested” error. However, it is permissible to append zeros at the end of an index
2103 to indicate the desired access level of an index selection within the table element hierarchy.

2104 e) When element-count > 1, the application shall return up to element-count elements at the same or higher
2105 hierarchical level of the index used to initiate the request traversing all element types serially.

2106 f) When element-count > (number of elements available for transmission), the number of elements
2107 transmitted will be limited to the maximum number of elements available at the same or higher
2108 hierarchical level of the index used to initiated the request. The response element-count shall be adjusted
2109 to reflect the actual number of elements transferred in the response.

2110 g) The number of numeric segments that make up the index (using trailing zero segments if necessary) defines
2111 the initial hierarchical level for element serialization and for element-count interpretation.

2112 h) For the purpose of transmission, as a part of a request, element-count = 0 shall be interpreted as all data to
2113 be written or all data requested.

2114 i) For the purpose of transmission, as a part of a response, element-count = 0 shall be interpreted as no data
2115 was written, or no data was received.

Table transportation issues / Minimum services and parameters 37


Partial table access using the Index/Element-count method
DRAFT ANSI C12.19-2012

2116 j) For the purpose of transmission, as a part of a write request, element-count shall correctly represent the
2117 actual number of elements requested to be written, at the hierarchical level of the selection start index.

2118 k) For the purpose of transmission, as a part of a read request, element-count represents the maximum
2119 number of elements requested.

2120 l) For the purpose of transmission, the counter shall not count elements that are not present in the table by
2121 virtue of the elements themselves being excluded from the data stream through the use of the IF or
2122 SWITCH conditional statements.

2123 m) For the purpose of transmission, the counter shall not count elements that are not present in the table by
2124 virtue of themselves being excluded from the data stream through the use of zero length arrays, sets,
2125 strings, binaries, or bcd.

2126 n) Generally, for the purpose of transmission, any element whose size is zero shall not be a candidate for
2127 transmission and shall not be counted.

2128 o) The element-count counts elements and not Octets.

2129 p) If the respondent application does not support the transmission elements at the requested index level, or the
2130 respondent application cannot deliver the element requested from an ARRAY, the respondent application
2131 shall assert the error condition “Inappropriate Action Requested”. The requester may then attempt a retry of
2132 the read/write request on an index of an element that is higher or lower in hierarchy relative to the index of
2133 the failed attempt.

2134 8.1.4 Partial table access using the Offset/Octet-count method

2135 This subclause defines the rule-set for selecting Elements of a Table when using an Element Octet offset and an
2136 Element Octet count.

2137 a) An offset sets up a start of selection into a table object relative to the beginning of the table.

2138 b) Offset zero (0) is the Octet offset to the first Octet of the first object in the table as prescribed by the object
2139 data type and the value of DATA_ORDER, found in the GEN_CONFIG_TBL (Table 00).

2140 c) When count > 1, the application shall return up to count Octets from the offset used to initiate the request,
2141 traversing all element types serially, where each element will be transferred according to its type and the
2142 value of DATA_ORDER, found in the GEN_CONFIG_TBL (Table 00).

2143 d) When count > (number of Octets available for transmission), the number of Octets transmitted will be
2144 limited to the maximum number of Octets available. The response count shall be adjusted to reflect the
2145 actual number of Octets transferred in the response.

2146 e) For the purpose of transmission, as a part of a read request, count = 0 shall be interpreted as all data
2147 requested.

2148 f) For the purpose of transmission, as a part of a response, count = 0 shall be interpreted as no data was
2149 written, or no data was received.

2150 g) For the purpose of transmission, as a part of a write request, Octet count shall correctly represent the actual
2151 number of Octets requested to be written starting at the table offset requested.

2152 h) For the purpose of transmission, as a part of a read request, count represents the maximum number of
2153 Octets requested.

38
DRAFT ANSI C12.19-2012

2154 i) For the purpose of transmission, the counter shall not count elements that are not present in the table by
2155 virtue of themselves being excluded from the data stream through the use of zero length arrays, sets,
2156 strings, binaries, or bcd.

2157 j) Generally, for the purpose of transmission, any element whose size is zero shall not be a candidate for
2158 transmission and shall not be counted.

2159 k) The Octet counter counts Octets and not elements.

2160 l) If the respondent application does not support the transmission of Octets at the requested offset, then the
2161 respondent application shall assert the error condition “Inappropriate Action Requested”.

2162 8.1.5 Index count access method examples

2163 The following are examples for the use of the Index/Element-Count method to select data.

Example 1 Example 2 Example 3 Example 4


Index = 1.0 Index = 1, Index = 1.2.0, Index = 1.2,
Element-Count = 2 Element-Count = 2 or Element-Count = 4 Element-Count = 4
Index = 1.0, or
Element-Count = 4 Index = 1.2.0,
Element-Count = 5
0 0 0 0
1.0 (Selected) 1.0 (Selected) 1.0 1.0
1.1 (Selected) 1.1 (Selected) 1.1 1.1
1.2 1.2 (Selected) 1.2 (Selected) 1.2 (Selected)
2 2 (Selected) 2 (Selected) 2 (Selected)
3.0 3.0 3.0 (Selected) 3.0 (Selected)
3.1.0 3.1.0 3.1.0 (Selected) 3.1.0 (Selected)
3.1.1 3.1.1 3.1.1 3.1.1 (Selected)
3.2 3.2 3.2 3.2
4 4 4 4

2164 8.2 Pending Event description

2165 This standard supports the transmission of a set of shadow Tables, known as Pending Tables. Data read from or
2166 written to a Pending Table is identical in format to the data read from or written to regular Tables (Standard Tables
2167 or Manufacturer Tables), except for the addition of the fixed length Pending Event Description that is placed ahead
2168 of the Table data during transmission, as defined below.

2169 TDL Type Definitions

2170 TYPE PE_STATUS_BFLD = BIT FIELD OF UINT8


2171 EVENT_CODE : UINT(0..3);
2172 SELF_READ_FLAG : BOOL(4);
2173 DEMAND_RESET_FLAG : BOOL(5);
2174 RESERVED : FILL(6..7);
2175 END;

2176 TYPE PE_STIME_DATE_RCD = PACKED RECORD


2177 SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
2178 CASE 0: RESERVED : ARRAY[5] of FILL8;
2179 CASE 1: YEAR : BCD;
2180 MONTH : BCD;
2181 DAY : BCD;

Table transportation issues / Pending Event description 39


DRAFT ANSI C12.19-2012

2182 HOUR : BCD;


2183 MINUTE : BCD;
2184 CASE 2: YEAR : UINT8;
2185 MONTH : UINT8;
2186 DAY : UINT8;
2187 HOUR : UINT8;
2188 MINUTE : UINT8;
2189 CASE 3: U_TIME : UINT32;
2190 FILL : FILL8;
2191 CASE 4: U_TIME_SEC :UINT32;
2192 FILL : FILL8;
2193 END;
2194 END;

2195 TYPE EVENT_STORAGE_RCD = PACKED RECORD


2196 SWITCH .EVENT_SELECTOR.EVENT_CODE OF
2197 CASE 0: PE_STIME_DATE : STD.PE_STIME_DATE_RCD;
2198 CASE 1: WEEKS : UINT8;
2199 DAYS : UINT8;
2200 HOURS : UINT8;
2201 MINUTES : UINT8;
2202 SECONDS : UINT8;
2203 CASE 2: MFG_CODE : BINARY(4);
2204 MFG_EVENT_CODE : UINT8;
2205 END;
2206 END;

2207 TYPE PENDING_EVENT_DESC_RCD = PACKED RECORD


2208 EVENT_SELECTOR : STD.PE_STATUS_BFLD;
2209 EVENT_STORAGE : STD.EVENT_STORAGE_RCD;
2210 END;

2211 TDL Element Descriptions

2212 Identifier Value Definition

2213 PE_STATUS_BFLD Selectors indicating action to be performed upon activation of


2214 selected Pending Table.

2215 EVENT_CODE Element that specifies the condition upon which the Pending
2216 Table shall be made active. The trigger condition is stored in
2217 the EVENT_STORAGE record.
2218 0 Pending Table is activated based on an absolute time
2219 contained in the EVENT_STORAGE record. The time is
2220 interpreted as STIME_DATE.
2221 1 Pending Table is activated based on a relative time contained
2222 in the EVENT_STORAGE record.
2223 2 Pending Table is activated based on a Manufacturer defined
2224 trigger contained in the EVENT_STORAGE record.
2225 3..15 Reserved.

2226 SELF_READ_FLAG FALSE Do not perform a Self-read before Pending Table is activated.
2227 TRUE Perform a Self-read, if capable, before Pending Table is
2228 activated.

40
DRAFT ANSI C12.19-2012

2229 DEMAND_RESET_FLAG FALSE Do not perform a demand reset before Pending Table is
2230 activated.
2231 TRUE Perform a demand reset, if capable, before Pending Table is
2232 activated.

2233 RESERVED Reserved.

2234 PE_STIME_DATE_RCD Fields and interpretation of the pending event short time and
2235 date format is identical to that of STIME_DATE, except that
2236 the data structure length is fixed in length.

2237 EVENT_STORAGE_RCD Pending event trigger condition that causes a Pending Table to
2238 become active. The size of EVENT_STORAGE_RCD
2239 always occupies five Octets and is transmitted as ARRAY[5]
2240 of UINT8. The actual interpretation of this record is
2241 controlled by the content of
2242 EVENT_SELECTOR.EVENT_CODE as follows:

2243 0 Pending Table activation date is encoded as


2244 STD.PE_STIME_DATE_RCD, year, month, day, hour,
2245 and minute, in the format of STIME_DATE, padded to
2246 fill an ARRAY[5] of UINT8. The STIME_DATE
2247 occupies the low index array elements.

2248 1 Pending Table activation delay in WEEKS, DAYS,


2249 HOURS, MINUTES, and SECONDS represented as a
2250 UINT8. The activation of the Pending Table shall occur
2251 after the cumulative value of (((((WEEKS × 7) + DAYS)
2252 × 24) + HOURS) × 60 + MINUTES) × 60 + SECONDS
2253 seconds. For more details, see the definitions of the
2254 individual Elements below. End Devices that do not
2255 implement a real-time clock may start the countdown to
2256 Pending Table activation immediately upon receipt of the
2257 Pending Table.

2258 2 Four-Octet manufacturer code as per


2259 GEN_CONFIG_TBL.DEVICE_CLASS, followed by a
2260 1-Octet manufacturer-specific event code
2261 (MFG_EVENT_CODE).

2262 PE_STIME_DATE Encoded as STD.PE_STIME_DATE_RCD, year, month,


2263 day, hour, and minute, in the format of STIME_DATE,
2264 padded to fill an ARRAY[5] of UINT8. The STIME_DATE
2265 occupies the low index array elements.

2266 WEEKS 0..255 The number of weeks to wait (in addition to DAYS, HOURS,
2267 MINUTES, and SECONDS) until the Pending Table is
2268 activated. End Devices that implement a real-time clock shall
2269 start the Pending Table activation count-down at the beginning
2270 of the next week (on Sunday 00:00:00 hours) if SECONDS,
2271 MINUTES, HOURS, and DAYS are zero (0) and WEEKS is
2272 not zero (0). The Pending Table Shall activate upon receipt of
2273 the Pending Table, without delay, if SECONDS, MINUTES,
2274 HOURS, DAYS, and WEEKS are all zero (0).

Table transportation issues / Pending Event description 41


DRAFT ANSI C12.19-2012

2275 DAYS 0..255 The number of days to wait (in addition to WEEKS, HOURS,
2276 MINUTES, and SECONDS) until the Pending Table is
2277 activated. End Devices that implement a real-time clock shall
2278 start the Pending Table activation countdown at the beginning
2279 of the next day (at 00:00:00 hours) if SECONDS, MINUTES,
2280 and HOURS are zero (0) and DAYS is not zero (0).

2281 HOURS 0..255 The number of hours to wait (in addition to WEEKS, DAYS,
2282 MINUTES, and SECONDS) until the Pending Table is
2283 activated. End Devices that implement a real-time clock shall
2284 start the Pending Table activation countdown at the beginning
2285 of the next hour if SECONDS and MINUTES are zero (0)
2286 and HOURS is not zero (0).

2287 MINUTES 0..255 The number of minutes to wait (in addition to WEEKS,
2288 DAYS, HOURS, and SECONDS) until the Pending Table is
2289 activated. End Devices that implement a real-time clock shall
2290 start the Pending Table activation countdown at the beginning
2291 of the next minute if SECONDS is zero (0) and MINUTES is
2292 not zero (0).

2293 SECONDS 0..255 The number of seconds to wait (in addition to WEEKS,
2294 DAYS, HOURS, and MINUTES) until the Pending Table is
2295 activated. The End Device shall start the Pending Table
2296 activation countdown immediately if SECONDS, MINUTES,
2297 HOURS, DAYS, and WEEKS are all zero (0).

2298 MFG_CODE Four-Octet manufacturer code as per


2299 GEN_CONFIG_TBL.DEVICE_CLASS.

2300 MFG_EVENT_CODE 0..255 Manufacturer-specific event code.

2301 PENDING_EVENT_DESC_RCD Any Table’s PENDING_EVENT_DESC =


2302 PENDING_EVENT_DESC_RCD.

2303 EVENT_SELECTOR Status bits indicating various conditions associated with a


2304 Pending Table.

2305 EVENT_STORAGE Trigger condition that causes a Pending Table to become


2306 active. It always occupies five Octets and is transmitted as
2307 ARRAY[5] of UINT8.

2308 8.3 List management description

2309 The following declarations are of value to any list management system that requires a capability for issuing an
2310 advance warning or notification when a list is about to overflow or when a list contains a minimum number of
2311 events.

2312 TDL Type Definitions

2313 TYPE LIST_OVERFLOW_CONTROL_BFLD = BIT FIELD OF UINT8


2314 PERCENT_OR_VALUE_FLAG : BOOL(0);
2315 LOW_OVERFLOW_INDICATION_FLAG : BOOL(1);
2316 HIGH_OVERFLOW_INDICATION_FLAG : BOOL(2);

42
DRAFT ANSI C12.19-2012

2317 REPEAT_OVERFLOW_INDICATION_FLAG : BOOL(3);


2318 FILLER : FILL(4..7);
2319 END;

2320 TYPE LIST_OVERFLOW_CONTROL_RCD = PACKED RECORD


2321 LIST_OVERFLOW_ENABLE : STD.LIST_OVERFLOW_CONTROL_BFLD;
2322 IF .LIST_OVERFLOW_ENABLE.LOW_OVERFLOW_INDICATION_FLAG == TRUE THEN
2323 LOW_THRESHOLD : UINT16;
2324 END;
2325 IF .LIST_OVERFLOW_ENABLE.HIGH_OVERFLOW_INDICATION_FLAG == TRUE THEN
2326 HIGH_THRESHOLD : UINT16;
2327 IF .LIST_OVERFLOW_ENABLE.REPEAT_OVERFLOW_INDICATION_FLAG == TRUE THEN
2328 REPEAT_INTERVAL : UINT16;
2329 MAX_REPEATS : UINT16;
2330 END;
2331 END;
2332 END;

2333 TDL Element Descriptions

2334 Identifier Value Definition


2335 LIST_OVERFLOW_CONTROL_BFLD A bit field that contains selections and enabling mechanisms
2336 for list overflow management.

2337 PERCENT_OR_VALUE_FLAG A selector that provides an interpretation for the controlling


2338 values of the limiting values exposed by
2339 LOW_OVERFLOW_INDICATION_FLAG,
2340 HIGH_OVERFLOW_INDICATION_FLAG, and
2341 REPEAT_OVERFLOW_INDICATION_FLAG.
2342 FALSE Number of entries. The controlling value is the number of
2343 entries in the list.
2344 TRUE Percent of full list.
2345 The controlling value is expressed in percent of full list size.

2346 LOW_OVERFLOW_INDICATION_FLAG A selector for low limit list overflow threshold.


2347 FALSE Low threshold value indication is not available.
2348 List management warnings, such as notification on overflow,
2349 are not possible based on low threshold value.
2350 TRUE Low threshold value indication is available.
2351 List management warnings, such as notification on overflow,
2352 are possible based on low threshold value.

2353 HIGH_OVERFLOW_INDICATION_FLAG A selector for high limit list overflow threshold.


2354 FALSE High threshold value indication is not available.
2355 List management warnings, such as notification on overflow,
2356 are not possible based on high threshold value.
2357 TRUE High threshold value indication is available.
2358 List management warnings, such as notification on overflow,
2359 are possible based on high threshold value.

2360 REPEAT_OVERFLOW_INDICATION_FLAG A selector for repeat interval following the issuance


2361 of a high limit list overflow indication.

Table transportation issues / List management description 43


DRAFT ANSI C12.19-2012

2362 FALSE Repeat threshold value not available.


2363 List management, such as notification on overflow, is not
2364 possible following initial high threshold report.
2365 TRUE Repeat threshold value available.
2366 List management, such as notification on overflow, is possible
2367 following initial high threshold report.

2368 LIST_OVERFLOW_CONTROL_RCD A general list management control element used by End


2369 Devices to manage the action taken as a result of list
2370 overflows.

2371 LIST_OVERFLOW_ENABLE See STD.LIST_OVERFLOW_CONTROL_BFLD.

2372 LOW_THRESHOLD 0..65535 The low threshold value or percent of full list size (see
2373 .LIST_OVERFLOW_ENABLE.
2374 PERCENT_OR_VALUE_FLAG) used to sense a possible
2375 list overflow.

2376 HIGH_THRESHOLD 0..65535 The high threshold value or percent of full list size (see
2377 .LIST_OVERFLOW_ENABLE.
2378 PERCENT_OR_VALUE_FLAG) used to sense a possible
2379 list overflow.

2380 REPEAT_INTERVAL 0..65535 The repeat threshold value or percent of full list size (see
2381 .LIST_OVERFLOW_ENABLE.
2382 PERCENT_OR_VALUE_FLAG) used to re-trigger a sense-
2383 report of a possible list overflow, following an initial trigger
2384 based on HIGH_THRESHOLD.

2385 MAX_REPEATS 0..65535 The maximum number of times an overflow condition shall
2386 re-trigger following detection if not serviced and cleared.
2387

44
DRAFT ANSI C12.19-2012

2388 9 Tables

2389 9.1 Decade 0: General Configuration Tables

2390 Decade 0 Name

2391 GEN_CONFIG_DEC

2392 Decade 0 Data Description

2393 This Decade contains tables associated with End Device configuration, identification, procedures and responses, and
2394 information required for data manipulation due to hardware configurations.

2395 9.1.1 Table 00 General Configuration Table

2396 Table 00 Data Description

2397 GEN_CONFIG_TBL (Table 00) contains general End Device configuration information. It also establishes the
2398 total set of tables, procedures, and the selection of special types used in the End Device. If a default set is used, it is
2399 indicated by this table.

2400 Global Default Table Property Overrides: atomic = “true”, role=“CONTROL”, accessibility=“READONLY”

2401 Table 00 Type Definitions

2402 TYPE FORMAT_CONTROL_1_BFLD = BIT FIELD OF UINT8


2403 DATA_ORDER : UINT(0..0);
2404 CHAR_FORMAT : UINT(1..3);
2405 MODEL_SELECT : UINT(4..6);
2406 FILLER : FILL(7..7);
2407 END;

2408 TYPE FORMAT_CONTROL_2_BFLD = BIT FIELD OF UINT8


2409 TM_FORMAT : UINT(0..2);
2410 DATA_ACCESS_METHOD : UINT(3..4);
2411 ID_FORM : UINT(5..5);
2412 INT_FORMAT : UINT(6..7);
2413 END;

2414 TYPE FORMAT_CONTROL_3_BFLD = BIT FIELD OF UINT8


2415 NI_FORMAT1 : UINT(0..3);
2416 NI_FORMAT2 : UINT(4..7);
2417 END;

2418 TYPE GEN_CONFIG_RCD = PACKED RECORD


2419 FORMAT_CONTROL_1 : FORMAT_CONTROL_1_BFLD;
2420 FORMAT_CONTROL_2 : FORMAT_CONTROL_2_BFLD;
2421 FORMAT_CONTROL_3 : FORMAT_CONTROL_3_BFLD;
2422 DEVICE_CLASS : BINARY(4);
2423 NAMEPLATE_TYPE : UINT8;
2424 DEFAULT_SET_USED : UINT8;
2425 MAX_PROC_PARM_LENGTH : UINT8;
2426 MAX_RESP_DATA_LEN : UINT8;

Tables / Decade 0: General Configuration Tables 45


Table 00 General Configuration Table
DRAFT ANSI C12.19-2012

2427 STD_VERSION_NO : UINT8;


2428 STD_REVISION_NO : UINT8;
2429 DIM_STD_TBLS_USED : UINT8;
2430 DIM_MFG_TBLS_USED : UINT8;
2431 DIM_STD_PROC_USED : UINT8;
2432 DIM_MFG_PROC_USED : UINT8;
2433 DIM_MFG_STATUS_USED : UINT8;
2434 NBR_PENDING : UINT8;
2435 STD_TBLS_USED : SET(GEN_CONFIG_TBL.DIM_STD_TBLS_USED);
2436 MFG_TBLS_USED : SET(GEN_CONFIG_TBL.DIM_MFG_TBLS_USED);
2437 STD_PROC_USED : SET(GEN_CONFIG_TBL.DIM_STD_PROC_USED);
2438 MFG_PROC_USED : SET(GEN_CONFIG_TBL.DIM_MFG_PROC_USED);
2439 STD_TBLS_WRITE : SET(GEN_CONFIG_TBL.DIM_STD_TBLS_USED);
2440 MFG_TBLS_WRITE : SET(GEN_CONFIG_TBL.DIM_MFG_TBLS_USED);
2441 END;

2442 TABLE 0 GEN_CONFIG_TBL = GEN_CONFIG_RCD;

2443 Table 00 Element Descriptions

2444 Identifier Value Definition


2445 FORMAT_CONTROL_1_BFLD
2446 DATA_ORDER Element to define order of multi-Octet numeric data transfer.
2447 0 Least significant Octet first.
2448 1 Most significant Octet first.

2449 CHAR_FORMAT Character set selection as described in 6.1, “Character set


2450 selection”. See STD.CHAR_FORMAT_ENUM.

2451 MODEL_SELECT Unsigned binary code where:


2452 0 A code indicating the data source selection model selects
2453 sources as an 8-bit index into the SOURCES_TBL
2454 (Table 16).
2455 1 Same as MODEL_SELECT code 0, but in addition the
2456 implementer asserts that the End Device interoperability
2457 model is compliant with the AEIC Guidelines Version 2
2458 (AEICGL-2010).
2459 2..7 Reserved.

2460 FORMAT_CONTROL_2_BFLD
2461 TM_FORMAT Data representation format selector for use by
2462 HTIME_DATE, LTIME_DATE, STIME_DATE, TIME,
2463 STIME, and HTIME. See STD. TM_FORMAT_ENUM.

2464 DATA_ACCESS_METHOD Element to designate method of passing the table data after
2465 GEN_CONFIG_TBL (Table 00) has been interrogated.
2466 0 Full table access only. No partial table access methods are
2467 supported.
2468 1 Full table access and offset-count access methods are
2469 supported.
2470 2 Full table access and index-count methods are supported.
2471 3 Both methods 1 and 2 of data access methods are supported.

46
DRAFT ANSI C12.19-2012

2472 ID_FORM Indicates the format of the identifier fields defined in


2473 Decade 00.
2474 0 STRING.
2475 1 BCD.

2476 INT_FORMAT Indicates the format of signed integer types.


2477 0 Signed integer types are represented in two’s complement
2478 format.
2479 1 Signed integer types are represented in one’s complement
2480 format.
2481 2 Signed integer types are represented in sign/magnitude format.
2482 3 Reserved.

2483 FORMAT_CONTROL_3_BFLD
2484 NI_FORMAT1 Indicates the type of noninteger value used throughout the
2485 tables where specified as NI_FMAT1. Refer to 6.2,
2486 “Noninteger formats”, for details. See
2487 STD.NI_FORMAT_ENUM.

2488 NI_FORMAT2 Indicates the type of noninteger value throughout the tables
2489 where shown as NI_FMAT2. Refer to 6.2, “Noninteger
2490 formats”, for details. See STD.NI_FORMAT_ENUM.

2491 GEN_CONFIG_RCD
2492 FORMAT_CONTROL_1 See FORMAT_CONTROL_1_BFLD.

2493 FORMAT_CONTROL_2 See FORMAT_CONTROL_2_BFLD.

2494 FORMAT_CONTROL_3 See FORMAT_CONTROL_3_BFLD.

2495 DEVICE_CLASS A group of End Devices sharing the same table structure. This
2496 Element contains a relative universal object identifier derived
2497 from the following structure:
2498 <device-class-root-oid>.<class>
2499 The <class> (DEVICE_CLASS) is registered in a manner
2500 that it shall be unique among all ANSI C12.19
2501 implementations, within a registered root context. This
2502 numeric sequence is encoded according to ISO 8825-1-1997
2503 “Basic Encoding Rules”. The value to be used for this Element
2504 by unregistered End Devices that implement this standard
2505 shall be “0.2.0.x”, where x is identical to the value transmitted
2506 by MODEL_SELECT. For registered End Devices, refer to
2507 Annex J, “(normative) Universal Identifier”.
2508 Example:
2509 <class> = 35.0.0.0
2510 DEVICE_CLASS = 23H 00H 00H 00H.
2511 Relative UID ASN.1 Encoding = 0DH 04H 23H 00H 00H 00H.

2512 For ANSI C12.19-1997 End Device MANUFACTURER


2513 codes, refer to Annex A, “(informative) Reserved Device
2514 Classes for meter equipment manufacturers implementing
2515 ANSI C12.19-1997 devices”.
2516 Alias: MANUFACTURER.
Tables / Decade 0: General Configuration Tables 47
Table 00 General Configuration Table
DRAFT ANSI C12.19-2012

2517 NAMEPLATE_TYPE Entry used to select the nameplate record structure to be used
2518 in DEVICE_NAMEPLATE_TBL (Table 02).
2519 0 Gas.
2520 1 Water.
2521 2 Electric.
2522 3..255 Reserved.

2523 DEFAULT_SET_USED Indicates which, if any, Default Sets are used. See Annex C,
2524 “(normative) Default Sets for Decade Tables”, for the default
2525 set definitions.
2526 0 Default Sets are not used. See 4.1, “Standard Tables”,
2527 Figure 4-1, conditions C through H for more details.
2528 1 Default set #1, Simple Meter Register, in use.
2529 2 Default set #2, Simple Demand Meter, in use.
2530 3 Default set #3, Simple TOU Meter, in use.
2531 4 Default set #4, Simple Profile Recorder, in use.
2532 5..255 Reserved.

2533 MAX_PROC_PARM_LENGTH
2534 0..255 Manufacturer-defined maximum length for argument
2535 parameters passed to procedures in PROC_INITIATE_TBL
2536 (Table 07).

2537 MAX_RESP_DATA_LEN 0..255 Manufacturer-defined maximum length representing length


2538 returned by procedures in PROC_RESPONSE_TBL
2539 (Table 08).

2540 STD_VERSION_NO A number that designates the version of the particular industry
2541 set of Standard Tables.
2542 0 Pre-release or informal release document.
2543 1 Original Standard Table Set, first release of the standard,
2544 ANSI C12.19-1997. If the Decade 9 tables are implemented,
2545 this implies the use of ANSI C12.21-1999.
2546 2 Second Standard Table Set, second release of the standard as
2547 defined by this document. If Decade 12 or Decade 13 tables
2548 are implemented, this implies the use of ANSI C12.22-2008.
2549 3..255 Reserved.

2550 STD_REVISION_NO A number that designates a minor change to a version of this


2551 standard. Within a given version of this standard, all revisions
2552 with a lower revision number shall be backward compatible. If
2553 this is not true, then a new version number shall be required.
2554 0 Representing both STD_VERSION_NO = 1 and
2555 STD_VERSION_NO = 2.
2556 1 The revision number of this revision of the standard
2557 (STD_VERSION_NO = 2).
2558 2..255 Reserved.

2559 DIM_STD_TBLS_USED 0..255 The number of Octets required to represent the set of standard
2560 tables used in GEN_CONFIG_TBL.STD_TBLS_USED
2561 (Table 00). This is a mechanism to allow the table identifier
2562 set to expand in size from simple devices to complex devices.

2563 DIM_MFG_TBLS_USED 0..255 The number of Octets required to represent the set of
2564 manufacturer tables used in
48
DRAFT ANSI C12.19-2012

2565 GEN_CONFIG_TBL.MFG_TBLS_USED (Table 00). This


2566 is a mechanism to allow the table identifier set to expand in
2567 size from simple devices to complex devices.

2568 DIM_STD_PROC_USED 0..255 The number of Octets required to represent the set of standard
2569 procedures used in
2570 GEN_CONFIG_TBL.STD_PROC_USED (Table 00). This
2571 is a mechanism to allow the standard-defined procedure
2572 identifier set to expand in size.

2573 DIM_MFG_PROC_USED 0..255 The number of Octets required to represent the set of
2574 manufacturer procedures used in
2575 GEN_CONFIG_TBL.MFG_PROC_USED (Table 00). This
2576 is a mechanism to allow the manufacturer-defined procedure
2577 identifier set to expand in size.

2578 DIM_MFG_STATUS_USED
2579 0..255 The number of Octets allocated for indicating manufacturer-
2580 specific status flags.

2581 NBR_PENDING 0..255 The number of pending status sets in


2582 PENDING_STATUS_TBL (Table 04).

2583 STD_TBLS_USED This set Element indicates which of the Standard Tables are
2584 implemented by the End Device. Tables are represented by
2585 bit-indices 0 through (8*DIM_STD_TBLS_USED-1).
2586 FALSE The Standard Table represented by this SET index is not
2587 available from the End Device.
2588 TRUE The Standard Table represented by this SET index is
2589 implemented, and it is available from the End Device.

2590 MFG_TBLS_USED This set Element indicates which of the Manufacturer Tables
2591 are implemented by the End Device. Tables are represented by
2592 bit-indices 0 through (8*DIM_MFG_TBLS_USED-1).
2593 FALSE The Manufacturer Table represented by this SET index is not
2594 available from the End Device.
2595 TRUE The Manufacturer Table represented by this SET index is
2596 implemented, and it is available from the End Device.

2597 STD_PROC_USED This set Element indicates which of the Standard Procedures
2598 are implemented by the End Device. Procedures are
2599 represented by bit-indices 0 through
2600 (8*DIM_STD_PROC_USED-1).
2601 FALSE The Standard Procedure represented by this SET index is not
2602 implemented by the End Device.
2603 TRUE The Standard Procedure represented by this SET index is
2604 implemented the End Device.

2605 MFG_PROC_USED This set Element indicates which of the Manufacturer’s


2606 Procedures are implemented by the End Device. Procedures
2607 are represented by bit-indices 0 through
2608 (8*DIM_MFG_PROC_USED-1).
2609 FALSE The Manufacturer Procedure represented by this SET index is
2610 not implemented by the End Device.

Tables / Decade 0: General Configuration Tables 49


Table 00 General Configuration Table
DRAFT ANSI C12.19-2012

2611 TRUE The Manufacturer Procedure represented by this SET index is


2612 implemented the End Device.

2613 STD_TBLS_WRITE This set Element indicates which of the Standard Tables are
2614 capable of being written to. Tables are represented by bit-
2615 indices 0 through (8*DIM_STD_TBLS_USED-1).
2616 FALSE The Standard Table represented by this SET index cannot be
2617 written.
2618 TRUE The Standard Table represented by this SET index may be
2619 written (as constrained by other security and access
2620 provisions).

2621 MFG_TBLS_WRITE This set Element indicates which of the Manufacturer’s Tables
2622 are capable of being written to. Tables are represented by bits
2623 0 through (8*DIM_MFG_TBLS_USED-1).
2624 FALSE The Manufacturer Table represented by this SET index cannot
2625 be written.
2626 TRUE The Manufacturer Table represented by this SET index may
2627 be written (as constrained by other security and access
2628 provisions).

50
DRAFT ANSI C12.19-2012

2629 9.1.2 Table 01 General Manufacturer Identification Table

2630 Table 01 Data Description

2631 GENERAL_MFG_ID_TBL (Table 01) is a general manufacturer identification data table for Water, Gas, and
2632 Electric Utility End Devices. The values of the data items shall be set up by the manufacturer and left unchanged
2633 since they are determined by the functionality of the device.

2634 Global Default Table Property Overrides: Role=“CONTROL”, Accessibility=“READONLY”

2635 Table 01 Type Definitions

2636 TYPE MANUFACTURER_IDENT_RCD = PACKED RECORD


2637 MANUFACTURER : STRING(4);
2638 ED_MODEL : STRING(8);
2639 HW_VERSION_NUMBER : UINT8;
2640 HW_REVISION_NUMBER : UINT8;
2641 FW_VERSION_NUMBER : UINT8;
2642 FW_REVISION_NUMBER : UINT8;
2643 IF GEN_CONFIG_TBL.ID_FORM THEN
2644 MFG_SERIAL_NUMBER : BCD(8);
2645 ELSE
2646 MFG_SERIAL_NUMBER : STRING(16);
2647 END;
2648 END;

2649 TABLE 1 GENERAL_MFG_ID_TBL = MANUFACTURER_IDENT_RCD;

2650 Table 01 Element Descriptions

2651 Identifier Value Definition


2652 MANUFACTURER_IDENT_RCD
2653 MANUFACTURER Acronym for the manufacturer name.

2654 ED_MODEL Model identifier of the End Device left justified. For example
2655 “ENG M3”.

2656 HW_VERSION_NUMBER 0..255 Manufacturer’s hardware version number. Implies functional


2657 changes.

2658 HW_REVISION_NUMBER 0..255 Manufacturer’s hardware revision number. Implies product


2659 corrections or improvements. Recommended use of “0” to
2660 designate prototyping device.

2661 FW_VERSION_NUMBER 0..255 Manufacturer’s firmware version number. Changes in value


2662 imply functional differences.

2663 FW_REVISION_NUMBER 0..255 Manufacturer’s firmware revision number. Changes in value


2664 imply product corrections or improvements. Recommend use
2665 of “0” to designate preproduction or prototyping software.
2666 MFG_SERIAL_NUMBER Manufacturer’s serial number for the End Device.

Tables / Decade 0: General Configuration Tables 51


Table 01 General Manufacturer Identification Table
DRAFT ANSI C12.19-2012

2667 9.1.3 Table 02 Device Nameplate Table

2668 Table 02 Data Description

2669 DEVICE_NAMEPLATE_TBL (Table 02) is the nameplate data table. This table contains a record structure for
2670 each type of End Device (e.g., water, gas, or electric). The structure to be used is specified in
2671 GEN_CONFIG_TBL.NAMEPLATE_TYPE (Table 00). This table currently has nameplate structures defined for
2672 an electric meter, a gas meter, and a water meter.

2673 Global Default Table Property Overrides: Role=“CONTROL”

2674 Table 02 Type Definitions

2675 TYPE W_WATER_DEVICE_BFLD = BIT FIELD OF UINT16


2676 W_ED_TYPE : UINT(0..2);
2677 W_FLUID_TYPE : UINT(3..6);
2678 W_ED_DRIVE : UINT(7..10);
2679 W_ED_PIPE_SIZE : UINT(11..15);
2680 END;

2681 TYPE G_ED_TYPE_BFLD = BIT FIELD OF UINT8


2682 G_ED_TYPE : UINT(0..2);
2683 G_MECH_FORM : UINT(3..5);
2684 G_ENG_METRIC : UINT(6..6);
2685 FILLER : FILL(7..7);
2686 END;

2687 TYPE G_PRESSURE_RCD = PACKED RECORD


2688 G_MAX_PRESS : NI_FMAT2;
2689 G_UOM_PRESS : UINT8;
2690 END;

2691 TYPE G_FLOW_RCD = PACKED RECORD


2692 G_MAX_FLOW : NI_FMAT2;
2693 G_UOM_FLOW : UINT8;
2694 END;

2695 TYPE G_SIZE_BFLD = BIT FIELD OF UINT8


2696 G_GEAR_DRIVE : UINT(0..2);
2697 G_INPUT_OUTPUT_PIPE : UINT(3..7);
2698 END;

2699 TYPE G_COMPENSATION_BFLD = BIT FIELD OF UINT8


2700 G_COMP_TEMP : UINT(0..4);
2701 G_COMP_PRESS : UINT(5..7);
2702 END;

2703 TYPE G_GAS_DEVICE_RCD = PACKED RECORD


2704 G_ED_TYPE : G_ED_TYPE_BFLD;
2705 G_MAX_PRESS : G_PRESSURE_RCD;
2706 G_FLOW : G_FLOW_RCD;
2707 G_GEAR_PIPE_SIZE : G_SIZE_BFLD;
2708 G_COMPENSATION : G_COMPENSATION_BFLD;
2709 END;

52
DRAFT ANSI C12.19-2012

2710 TYPE E_ELEMENTS_BFLD = BIT FIELD OF UINT16


2711 E_FREQ : UINT(0..2);
2712 E_NO_OF_ELEMENTS : UINT(3..5);
2713 E_BASE_TYPE : UINT(6..9);
2714 E_ACCURACY_CLASS : UINT(10..15);
2715 END;

2716 TYPE E_VOLTS_BFLD = BIT FIELD OF UINT8


2717 E_ELEMENTS_VOLTS : UINT(0..3);
2718 E_ED_SUPPLY_VOLTS : UINT(4..7);
2719 END;

2720 TYPE E_AMPS_RCD = PACKED RECORD


2721 E_CLASS_MAX_AMPS : STRING(6);
2722 E_TA : STRING(6);
2723 END;

2724 TYPE E_ELECTRIC_DEVICE_RCD = PACKED RECORD


2725 E_KH : STRING(6);
2726 E_KT : STRING(6);
2727 E_INPUT_SCALAR : UINT8;
2728 E_ED_CONFIG : STRING(5);
2729 E_ELEMENTS : E_ELEMENTS_BFLD;
2730 E_VOLTS : E_VOLTS_BFLD;
2731 E_AMPS : E_AMPS_RCD;
2732 END;

2733 TYPE DEVICE_DEFINITION_RCD = PACKED RECORD


2734 SWITCH GEN_CONFIG_TBL.NAMEPLATE_TYPE OF
2735 CASE 0 : G_GAS_DEVICE : G_GAS_DEVICE_RCD;
2736 CASE 1 : W_WATER_DEVICE : W_WATER_DEVICE_BFLD;
2737 CASE 2 : E_ELECTRIC_DEVICE : E_ELECTRIC_DEVICE_RCD;
2738 DEFAULT : RESERVED : NIL;
2739 END;
2740 END;

2741 TABLE 2 DEVICE_NAMEPLATE_TBL = DEVICE_DEFINITION_RCD;

2742 Table 02 Element Descriptions

2743 Identifier Value Definition


2744 W_WATER_DEVICE_BFLD Elements that are generally associated with Water Utility End
2745 Devices. The values of the data items shall be set up by the
2746 manufacturer and left unchanged since they are determined by
2747 the functionality of the device.

2748 W_ED_TYPE Code representing water End Device type.


2749 0 Meter.
2750 1 Valve.
2751 2 Pressure Regulator.
2752 3 Pressure gauge.
2753 4 Backflow.
2754 5 Other.
2755 6..7 Reserved.

Tables / Decade 0: General Configuration Tables 53


Table 02 Device Nameplate Table
DRAFT ANSI C12.19-2012

2756 W_FLUID_TYPE Code representing type of fluid measured by water End


2757 Device.
2758 0 Potable water.
2759 1 Hot water.
2760 2 Non-potable water.
2761 3 Sewage primary water.
2762 4 Sewage secondary water.
2763 5 Sewage tertiary water.
2764 6 Other.
2765 7 Reserved.

2766 W_ED_DRIVE Code representing water End Device drive.


2767 0 Piston.
2768 1 Disc.
2769 2 Multi-jet.
2770 3 Turbine.
2771 4 Compound.
2772 5 Propeller.
2773 6 Ultra-sonic.
2774 7 Magnetic-coupled.
2775 8 Differential pressure.
2776 9 Mass.
2777 10 Variable area.
2778 11 Open channel.
2779 12 Oscillatory.
2780 13 Other.
2781 14..15 Reserved.

2782 W_ED_PIPE_SIZE Code representing End Device pipe size.


2783 English Metric.
2784 0 1/2" 13 mm.
2785 1 5/8" 15 mm.
2786 2 3/4" 20 mm.
2787 3 1" 25 mm.
2788 4 1 1/2" 40 mm.
2789 5 2" 50 mm.
2790 6 3" 80 mm.
2791 7 4" 100 mm.
2792 8 6" 160 mm.
2793 9 8" 200 mm.
2794 10 10" 250 mm.
2795 11 12" 300 mm.
2796 12 14" 350 mm.
2797 13 16" 400 mm.
2798 14 18" 450 mm.
2799 15 20" 500 mm.
2800 16 22" Not standard.
2801 17 24" 600 mm.
2802 18 26" Not standard.
2803 19 28" Not standard.
2804 20 30" Not standard.
2805 21 32" 800 mm.
2806 22 34" Not standard.
2807 23 36" 900 mm.
2808 24 40" 1000 mm.
54
DRAFT ANSI C12.19-2012

2809 25 48" 1200 mm.


2810 26..31 Reserved.

2811 G_ED_TYPE_BFLD
2812 G_ED_TYPE Code representing gas End Device type.
2813 0 Unclassified.
2814 1 Gas meter.
2815 2 Gas pressure regulator.
2816 3 Sensor.
2817 4 Load shed device.
2818 5 Cathodic protection unit.
2819 6..7 Reserved.

2820 G_MECH_FORM Unsigned binary number identifying the primary mechanical


2821 design principle of the device depending on the value of
2822 G_ED_TYPE.
2823 For G_ED_TYPE = 1.
2824 0 Unclassified.
2825 1 Bellows meter.
2826 2 Rotary.
2827 3 Turbine meter.
2828 4 Fluidic oscillator.
2829 5 Anemometer.
2830 6..7 Reserved.
2831 For G_ED_TYPE = 2.
2832 0 Unclassified.
2833 1 Diaphragm.
2834 2..7 Reserved.
2835 For G_ED_TYPE = 3.
2836 0 Unclassified.
2837 1 Physical parameter to voltage.
2838 2 Physical parameter to current.
2839 3 Physical parameter to frequency.
2840 4 Open/closed switch.
2841 5..7 Reserved.
2842 For G_ED_TYPE = 5.
2843 0 Unclassified.
2844 1 Pipe to soil.
2845 2 Impedance.
2846 3..7 Reserved.

2847 G_ENG_METRIC 0 English.


2848 1 Metric.

2849 G_PRESSURE_RCD
2850 G_MAX_PRESS End Device maximum design pressure.

2851 G_UOM_PRESS See UOM_ENTRY_TBL.UOM_ID_CODES_ENUM.

2852 G_FLOW_RCD
2853 G_MAX_FLOW End Device maximum design flow rate.

2854 G_UOM_FLOW See UOM_ENTRY_TBL.UOM_ID_CODES_ENUM.

2855 G_SIZE_BFLD
Tables / Decade 0: General Configuration Tables 55
Table 02 Device Nameplate Table
DRAFT ANSI C12.19-2012

2856 G_GEAR_DRIVE Code representing gas meter gear drive size.


2857 English Metric.
2858 0 None None.
3
2859 1 1/2 ft 0.01 or 0.015 m3.
3
2860 2 1 ft 0.02 m3.
3
2861 3 2 ft 0.05 m3.
3
2862 4 5 ft 0.1 m3.
3
2863 5 10 ft 0.2 m3.
3
2864 6 100 ft 1.0 m3.
3
2865 7 1000 ft 10 m3.

2866 G_INPUT_OUTPUT_PIPE Code representing gas meter internal pipe diameter (ID).
2867 English Metric.
2868 0 None None.
2869 1 1/2" 13 mm.
2870 2 5/8" 15 mm.
2871 3 3/4" 20 mm.
2872 4 1" 25 mm.
2873 5 1 1/2" 40 mm.
2874 6 2" 50 mm.
2875 7 4" 100 mm.
2876 8 6" 150 mm.
2877 9 8" 200 mm.
2878 10 10" 250 mm.
2879 11 12" 300 mm.
2880 12 14" 350 mm.
2881 13 16" 400 mm.
2882 14 18" 450 mm.
2883 15 20" 500 mm.
2884 16 22" Not standard.
2885 17 24" 600 mm.
2886 18 26" Not standard.
2887 19 28" Not standard.
2888 20 30" 750 mm.
2889 21 32" Not standard.
2890 22 34" Not standard.
2891 23 36" 900 mm.
2892 24..31 Reserved.

2893 G_COMPENSATION_BFLD
2894 G_COMP_TEMP Code representing the gas meter temperature compensation
2895 type.
2896 0 Uncompensated.
2897 1 Mechanical.
2898 2 Sensor.
2899 3..31 Reserved.

2900 G_COMP_PRESS Code representing the gas meter pressure compensation type.
2901 0 Uncompensated.
2902 1 Mechanical.
2903 2 Sensor.
2904 3..7 Reserved.

56
DRAFT ANSI C12.19-2012

2905 G_GAS_DEVICE_RCD Elements that are generally associated with Gas Utility End
2906 Devices. The values of the data items shall be set up by the
2907 manufacturer and left unchanged since they are determined by
2908 the functionality of the device.
2909 G_ED_TYPE See G_ED_TYPE_BFLD.

2910 G_MAX_PRESS See G_PRESSURE_RCD.

2911 G_FLOW See G_FLOW_RCD.

2912 G_GEAR_PIPE_SIZE See G_SIZE_BFLD.

2913 G_COMPENSATION See G_COMPENSATION_BFLD.

2914 E_ELEMENTS_BFLD Contains binary codes physically describing the End Device.

2915 E_FREQ Power frequency rating code.


2916 0 DC.
2917 1 25 Hz.
2918 2 50 Hz.
2919 3 50 or 60 Hz.
2920 4 60 Hz.
2921 5 400 Hz.
2922 6 Reserved.
2923 7 Unclassified.

2924 E_NO_OF_ELEMENTS Number of commodity measuring elements per measuring


2925 input to the End Device. This code indicates the number of
2926 elements.
2927 0 None.
2928 1 1 element.
2929 2 2 elements.
2930 3 2.5 elements.
2931 4 3 elements.
2932 5 6 elements.
2933 6 1.5 elements.
2934 7 Reserved.

2935 E_BASE_TYPE Indicates the type of meter base.


2936 0 None.
2937 1 S-base (socket).
2938 2 A-base (ANSI bottom connected).
2939 3 K-base.
2940 4 IEC bottom connected.
2941 5 switchboard.
2942 6 rack mount.
2943 7 B-base.
2944 8 P-base (Canadian Standard).
2945 9..15 Reserved.

2946 E_ACCURACY_CLASS 0..63 ANSI solid state meter standard accuracy class definitions.

2947 E_VOLTS_BFLD Contains binary codes describing meter root-mean-square


2948 (RMS) voltages.

Tables / Decade 0: General Configuration Tables 57


Table 02 Device Nameplate Table
DRAFT ANSI C12.19-2012

2949 E_ELEMENTS_VOLTS Meter element voltage code. This binary code indicates the
2950 End Device voltage class.
2951 0 None.
2952 1 69.3.
2953 2 72.
2954 3 120.
2955 4 208.
2956 5 240.
2957 6 277.
2958 7 480.
2959 8 120 through 277.
2960 9 120 through 480.
2961 10 347.
2962 11 600.
2963 12..15 Reserved.

2964 E_ED_SUPPLY_VOLTS External supply voltage code. This Element identifies the End
2965 Device supply voltage.
2966 0 Internal.
2967 1 69.3 AC.
2968 2 72 AC.
2969 3 120 AC.
2970 4 208 AC.
2971 5 240 AC.
2972 6 277 AC.
2973 7 480 AC.
2974 8 120 through 277 AC.
2975 9 120 through 480 AC.
2976 10 48 DC.
2977 11 25 DC.
2978 12 250 DC.
2979 13 347 AC.
2980 14 600 AC.
2981 15 Reserved.

2982 E_AMPS_RCD
2983 E_CLASS_MAX_AMPS End Device class or IEC max amp rating.

2984 E_TA The RMS amperage test amps (TA) specified by the
2985 manufacturer for the main test and/or adjustment of the meter.

2986 E_ELECTRIC_DEVICE_RCD Elements that are generally associated with Electric Utility
2987 End Devices. The values of the data items shall be set up by
2988 the manufacturer and left unchanged since they are determined
2989 by the functionality of the device.

2990 E_KH Watt-hours per revolution (may be represented as unit-hours


2991 per equivalent revolution).

2992 E_KT The commodity amount selected for the test pulse output.

2993 E_INPUT_SCALAR 0..255 Divisor by which to scale input values. For example, if input
2994 consists of pulses, an E_INPUT_SCALAR value of 2 would
2995 cause the pulse stream to be divided by 2.

58
DRAFT ANSI C12.19-2012

2996 E_ED_CONFIG Form number per ANSI C12.10-2011 characters.

2997 E_ELEMENTS See E_ELEMENTS_BFLD.

2998 E_VOLTS See E_VOLTS_BFLD.

2999 E_AMPS See E_AMPS_RCD.

3000 DEVICE_DEFINITION_RCD This is a full device nameplate data structure configured as a


3001 switch statement for selection of water, gas, or electric End
3002 Devices. The selection Element is
3003 GEN_CONFIG_TBL.NAMEPLATE_TYPE (Table 00).

3004 G_GAS_DEVICE Element present when the End Device is a gas meter. See
3005 G_GAS_DEVICE_RCD for details.

3006 W_WATER_DEVICE Element present when the End Device is a water meter. See
3007 W_WATER_DEVICE_BFLD for details.

3008 E_ELECTRIC_DEVICE Element present when the End Device is an electricity meter.
3009 See E_ELECTRIC_DEVICE_RCD for details.

Tables / Decade 0: General Configuration Tables 59


Table 02 Device Nameplate Table
DRAFT ANSI C12.19-2012

3010 9.1.4 Table 03 End Device Mode Status Table

3011 Table 03 Data Description

3012 ED_MODE_STATUS_TBL (Table 03) provides the current operating mode and status of various conditions in the
3013 End Device. It allows for both standard- and manufacturer-specific status definitions.

3014 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

3015 Table 03 Type Definitions

3016 TYPE ED_MODE_BFLD = BIT FIELD OF UINT8


3017 METERING_FLAG : BOOL(0);
3018 TEST_MODE_FLAG : BOOL(1);
3019 METER_SHOP_MODE_FLAG : BOOL(2);
3020 FACTORY_FLAG : BOOL(3);
3021 FILLER : FILL(4..7);
3022 END;

3023 TYPE ED_STD_STATUS1_BFLD = BIT FIELD OF UINT16


3024 UNPROGRAMMED_FLAG : BOOL(0);
3025 CONFIGURATION_ERROR_FLAG : BOOL(1);
3026 SELF_CHK_ERROR_FLAG : BOOL(2);
3027 RAM_FAILURE_FLAG : BOOL(3);
3028 ROM_FAILURE_FLAG : BOOL(4);
3029 NONVOL_MEM_FAILURE_FLAG : BOOL(5);
3030 CLOCK_ERROR_FLAG : BOOL(6);
3031 MEASUREMENT_ERROR_FLAG : BOOL(7);
3032 LOW_BATTERY_FLAG : BOOL(8);
3033 LOW_LOSS_POTENTIAL_FLAG : BOOL(9);
3034 DEMAND_OVERLOAD_FLAG : BOOL(10);
3035 POWER_FAILURE_FLAG : BOOL(11);
3036 TAMPER_DETECT_FLAG : BOOL(12);
3037 REVERSE_ROTATION_FLAG : BOOL(13);
3038 FILLER : FILL(14..15);
3039 END;

3040 TYPE ED_STD_STATUS2_BFLD = BIT FIELD OF UINT8


3041 FILLER : FILL(0..7);
3042 END;

3043 TYPE ED_MFG_STATUS_RCD = PACKED RECORD


3044 ED_MFG_STATUS : SET(GEN_CONFIG_TBL.DIM_MFG_STATUS_USED);
3045 END;

3046 TYPE ED_MODE_STATUS_RCD = PACKED RECORD


3047 ED_MODE : ED_MODE_BFLD;
3048 ED_STD_STATUS1 : ED_STD_STATUS1_BFLD;
3049 ED_STD_STATUS2 : ED_STD_STATUS2_BFLD;
3050 ED_MFG_STATUS : ED_MFG_STATUS_RCD;
3051 END;

3052 TABLE 3 ED_MODE_STATUS_TBL = ED_MODE_STATUS_RCD;

60
DRAFT ANSI C12.19-2012

3053 Table 03 Element Descriptions

3054 Identifier Value Definition

3055 ED_MODE_BFLD
3056 METERING_FLAG FALSE End Device is not in Metering Mode.
3057 TRUE End Device is in Metering Mode. The
3058 METER_SHOP_MODE_FLAG cannot be true while this
3059 flag is true.

3060 TEST_MODE_FLAG FALSE End Device is not in Test Mode.


3061 TRUE End Device is in Test Mode.

3062 METER_SHOP_MODE_FLAG
3063 FALSE End Device is not in Meter Shop Mode.
3064 TRUE End Device is in Meter Shop Mode. The
3065 METERING_FLAG cannot be true while this flat is true.

3066 FACTORY_FLAG FALSE End Device is not in Factory Mode.


3067 TRUE End Device is in Factory Mode.

3068 ED_STD_STATUS1_BFLD
3069 UNPROGRAMMED_FLAG
3070 FALSE End Device is programmed.
3071 TRUE End Device is not programmed, or it is in a factory default
3072 state.

3073 CONFIGURATION_ERROR_FLAG
3074 FALSE End Device did not detect a configuration error.
3075 TRUE End Device did detect a configuration error.

3076 SELF_CHK_ERROR_FLAG
3077 FALSE End Device did not detect a self-check error.
3078 TRUE End Device did detect a self-check error.

3079 RAM_FAILURE_FLAG FALSE End Device did not detect a RAM Memory failure.
3080 TRUE End Device did detect a RAM Memory failure.

3081 ROM_FAILURE_FLAG FALSE End Device did not detect a ROM memory failure.
3082 TRUE End Device did detect a ROM Memory failure.

3083 NONVOL_MEM_FAILURE_FLAG
3084 FALSE End Device did not detect a nonvolatile memory failure.
3085 TRUE End Device did detect a nonvolatile memory failure.

3086 CLOCK_ERROR_FLAG FALSE End Device did not detect a clock error.
3087 TRUE End Device did detect a clock error.

3088 MEASUREMENT_ERROR_FLAG
3089 FALSE End Device did not detect a measurement element error.
3090 TRUE End Device did detect a measurement element error.

3091 LOW_BATTERY_FLAG FALSE End Device did not detect a low battery error.
3092 TRUE End Device did detect a low battery error.

Tables / Decade 0: General Configuration Tables 61


Table 03 End Device Mode Status Table
DRAFT ANSI C12.19-2012

3093 LOW_LOSS_POTENTIAL_FLAG
3094 FALSE End Device did not detect a potential that is below a
3095 predetermined value.
3096 TRUE End Device did detect a device potential that is below a
3097 predetermined value.

3098 DEMAND_OVERLOAD_FLAG
3099 FALSE End Device did not detect a demand threshold overload.
3100 TRUE End Device did detect a demand threshold overload.

3101 POWER_FAILURE_FLAG
3102 FALSE End Device did not detect a power failure.
3103 TRUE End Device did detect a power failure.

3104 TAMPER_DETECT_FLAG
3105 FALSE End Device did not detect tamper activity.
3106 TRUE End Device did detect tamper activity.

3107 REVERSE_ROTATION_FLAG
3108 FALSE End Device did not detect reverse rotation.
3109 TRUE End Device did detect reverse rotation.

3110 ED_STD_STATUS2_BFLD Standard status code bit field 2 is a placeholder for future
3111 expansion.

3112 ED_MFG_STATUS_RCD
3113 ED_MFG_STATUS Set containing the manufacturer-specific status flags.

3114 ED_MODE_STATUS_RCD
3115 ED_MODE See ED_MODE_BFLD.

3116 ED_STD_STATUS1 See ED_STD_STATUS1_BFLD.

3117 ED_STD_STATUS2 See ED_STD_STATUS2_BFLD.

3118 ED_MFG_STATUS See ED_MFG_STATUS_RCD.


3119

62
DRAFT ANSI C12.19-2012

3120 9.1.5 Table 04 Pending Status Table

3121 Table 04 Data Description

3122 PENDING_STATUS_TBL (Table 04) is established to provide an indication of the tables present in the End
3123 Device with a pending status. Information contained within this table includes table number, manufacturer or
3124 standard table indicator, conditions (events) upon which activation of a pending table is to occur, self-read or
3125 demand reset upon activation indicators, and several additional status Elements.

3126 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

3127 Table 04 Type Definitions

3128 TYPE ENTRY_ACTIVATION_RCD = PACKED RECORD


3129 EVENT : EVENT_RCD;
3130 TABLE_SELECTOR : TABLE_IDA_BFLD;
3131 END;

3132 TYPE PENDING_ACTIVATION_RCD = PACKED RECORD


3133 STANDARD_PENDING : SET(GEN_CONFIG_TBL.DIM_STD_TBLS_USED);
3134 MANUFACT_PENDING : SET(GEN_CONFIG_TBL.DIM_MFG_TBLS_USED);
3135 LAST_ACTIVATION_DATE_TIME : STIME_DATE;
3136 NBR_PENDING_ACTIVATION : UINT8;
3137 PENDING_TABLES :
3138 ARRAY[GEN_CONFIG_TBL.NBR_PENDING] OF
3139 ENTRY_ACTIVATION_RCD;
3140 END;

3141 TABLE 4 PENDING_STATUS_TBL = PENDING_ACTIVATION_RCD;

3142 Table 04 Element Descriptions

3143 Identifier Value Definition

3144 EVENT_RCD Redefines: STD.PENDING_EVENT_DESC_RCD.

3145 EVENT_SELECTOR Status bits indicating various conditions associated with a


3146 Pending Table.

3147 EVENT_STORAGE Trigger condition that causes a Pending Table to become


3148 active. It always occupies five (5) Octets and is transmitted as
3149 ARRAY[5] of UINT8.

3150 ENTRY_ACTIVATION_RCD
3151 EVENT Details of the event that triggers pending table activation(s).

3152 TABLE_SELECTOR Element containing the table number, the standard or


3153 manufacturer flag, and the pending flag. The pending flag, if
3154 set, indicates that the associated table has not been activated.

3155 PENDING_ACTIVATION_RCD
3156 STANDARD_PENDING This set Element indicates which of the standard tables are
3157 capable of being written with a pending status.

Tables / Decade 0: General Configuration Tables 63


Table 04 Pending Status Table
DRAFT ANSI C12.19-2012

3158 MANUFACT_PENDING This set Element indicates which of the manufacturer tables
3159 are capable of being written with a pending status.

3160 LAST_ACTIVATION_DATE_TIME Date and time of the last pending table activated.

3161 NBR_PENDING_ACTIVATION
3162 0..255 Number of activation events in the
3163 PENDING_STATUS_TBL structure that have yet to be
3164 activated.

3165 PENDING_TABLES List of pending tables and associated activation triggers.

64
DRAFT ANSI C12.19-2012

3166 9.1.6 Table 05 Device Identification Table

3167 Table 05 Data Description

3168 DEVICE_IDENT_TBL (Table 05) This table provides the unique identifier for the device as specified by the user.

3169 Global Default Table Property Overrides: Role=“CONTROL”

3170 Table 05 Type Definitions

3171 TYPE IDENT_RCD = PACKED RECORD


3172 IF GEN_CONFIG_TBL.ID_FORM != 0 THEN
3173 IDENTIFICATION : BCD(10);
3174 ELSE
3175 IDENTIFICATION : STRING(20);
3176 END;
3177 END;

3178 TABLE 5 DEVICE_IDENT_TBL = IDENT_RCD;

3179 Table 05 Element Descriptions

3180 Identifier Value Definition


3181 IDENT_RCD
3182 IDENTIFICATION String of twenty (20) characters or twenty (20) BCD digits
3183 used to uniquely identify the device. This Element is the same
3184 as UTIL_INFO_TBL.DEVICE_ID when they both are
3185 available.

Tables / Decade 0: General Configuration Tables 65


Table 05 Device Identification Table
DRAFT ANSI C12.19-2012

3186 9.1.7 Table 06 Utility Information Table

3187 Table 06 Data Description

3188 UTIL_INFO_TBL (Table 06) is for utility use in providing additional End Device identifying or tracking
3189 information.

3190 Global Default Table Property Overrides: Role=“CONTROL”

3191 Table 06 Type Definitions

3192 TYPE UTIL_INFO_RCD = PACKED RECORD


3193 OWNER_NAME : STRING(20);
3194 UTILITY_DIV : STRING(20);
3195 IF GEN_CONFIG_TBL.ID_FORM THEN
3196 SERVICE_POINT_ID : BCD(10);
3197 ELEC_ADDR : BCD(10);
3198 DEVICE_ID : BCD(10);
3199 UTIL_SER_NO : BCD(10);
3200 CUSTOMER_ID : BCD(10);
3201 ELSE
3202 SERVICE_POINT_ID : STRING(20);
3203 ELEC_ADDR : STRING(20);
3204 DEVICE_ID : STRING(20);
3205 UTIL_SER_NO : STRING(20);
3206 CUSTOMER_ID : STRING(20);
3207 END;
3208 COORDINATE_1 : STRING(10);
3209 COORDINATE_2 : STRING (10);
3210 COORDINATE_3 : STRING (10);
3211 TARIFF_ID : STRING(8);
3212 EX1_SW_VENDOR : STRING(4);
3213 EX1_SW_VERSION_NUMBER : UINT8;
3214 EX1_SW_REVISION_NUMBER : UINT8;
3215 EX2_SW_VENDOR : STRING(4);
3216 EX2_SW_VERSION_NUMBER : UINT8;
3217 EX2_SW_REVISION_NUMBER : UINT8;
3218 PROGRAMMER_NAME : STRING(10);
3219 MISC_ID : STRING(30);
3220 IF GEN_CONFIG_TBL.STD_VERSION_NO >= 2 THEN
3221 IF GEN_CONFIG_TBL.TM_FORMAT != 0 THEN
3222 FW_LOAD_DATE : DATE;
3223 END;
3224 END;
3225 END;

3226 TABLE 6 UTIL_INFO_TBL = UTIL_INFO_RCD;

66
DRAFT ANSI C12.19-2012

3227 Table 06 Element Descriptions

3228 Identifier Value Definition

3229 UTIL_INFO_RCD
3230 OWNER_NAME Up to twenty (20) characters. All printable characters are
3231 valid.

3232 UTILITY_DIV Utility division number. Up to sixteen (16) characters. All


3233 printable characters are valid.

3234 SERVICE_POINT_ID Up to twenty (20) characters or BCD digits. ID number


3235 attached to the service point.

3236 ELEC_ADDR End Device logical electrical address for mapping and study
3237 purposes. This is used by the utility as information only.

3238 DEVICE_ID The ID attached to the hardware. Twenty (20) characters or


3239 twenty (20) BCD digits. This DEVICE_ID shall have the
3240 same value and interpretation as
3241 DEVICE_IDENT_TBL.IDENTIFICATION.

3242 UTIL_SER_NO Utility-specified serial number. Up to twenty (20) characters


3243 or twenty (20) BCD digits.

3244 CUSTOMER_ID Up to twenty (20) characters or twenty (20) BCD digits. All
3245 printable characters are valid if characters.

3246 COORDINATE_1 Generalized mapping coordinate x. Encoded a floating point


3247 string number (see BNF.floatingPointCHAR in G.5.1, “Basic
3248 data type definitions”, for encoding details) to hold the
3249 LATITUDE_N (in decimal degrees and fraction of a degree,
3250 positive values are North of the equator). For example, the
3251 latitude 33° 45′ 18″ N, may be encoded as COORDINATE_1
3252 = “33.755” (Atlanta WGS84). When coordinates are not in
3253 use, this element should be filled with ten (10) spaces (20H).

3254 COORDINATE_2 Generalized mapping coordinate y. Generalized mapping


3255 coordinate x. Encoded a floating point string number (see
3256 BNF.floatingPointCHAR in G.5.1, “Basic data type
3257 definitions”, for encoding details) to hold the LONGITUDE_E
3258 (in decimal degrees and fraction of a degree, positive values
3259 are east of the Prime Meridian). For example, the longitude
3260 84° 23′ 24″ W may be encoded as COORDINATE_2 =
3261 “-84.39” (Atlanta WGS84). When coordinates are not in use,
3262 this element should be filled with ten (10) spaces (20H).

3263 COORDINATE_3 Generalized mapping coordinate z. Encoded a floating point


3264 string number (see BNF.floatingPointCHAR in G.5.1, “Basic
3265 data type definitions”, for encoding details) to hold the
3266 ALTITUDE_M (in meters and fraction of a meter, positive
3267 values are above sea level). For example, the altitude 308 m
3268 may be encoded as COORDINATE_3 = “308.0” (Atlanta

Tables / Decade 0: General Configuration Tables 67


Table 06 Utility Information Table
DRAFT ANSI C12.19-2012

3269 WGS84). When coordinates are not in use, this element should
3270 be filled with ten (10) spaces (20H).

3271 TARIFF_ID Identification of the billing tariff.

3272 EX1_SW_VENDOR Name of manufacturer that provided


3273 configuration/programming software.

3274 EX1_SW_VERSION_NUMBER
3275 0..255 Configuration/programming software version number,
3276 unsigned binary number. Changes in value imply functional
3277 differences.

3278 EX1_SW_REVISION_NUMBER
3279 0..255 Configuration/programming software revision number,
3280 unsigned binary number. Changes in value imply product
3281 corrections or improvements. Recommend use of “0” to
3282 designate preproduction or prototyping software.

3283 EX2_SW_VENDOR Name of the manufacturer that provided


3284 configuration/programming software.

3285 EX2_SW_VERSION_NUMBER
3286 0..255 Configuration/programming software version number.
3287 Changes in value imply functional differences.

3288 EX2_SW_REVISION_NUMBER
3289 0..255 Configuration/programming software revision number,
3290 unsigned binary number. Changes in value imply product
3291 corrections or improvements. Recommend use of “0” to
3292 designate preproduction or prototyping software.

3293 PROGRAMMER_NAME Name of the last programmer or programming device.

3294 MISC_ID Thirty characters, free form. All printable characters are
3295 allowed. This could be used to contain approval number,
3296 verification number, bar code, etc.

3297 FW_LOAD_DATE Date of the last End Device firmware loading in the field. The
3298 initial value, if the End Device was not updated yet in the
3299 field, shall be left to the discretion of the Manufacturer. This
3300 may be used to track End Devices that have suspect firmware,
3301 as an example.

68
DRAFT ANSI C12.19-2012

3302 9.1.8 Table 07 Procedure Initiate Table

3303 Table 07 Data Description

3304 PROC_INITIATE_TBL (Table 07) allows for the execution of commands using the table structure. To execute a
3305 command, a procedure identifier (PROC), a sequence number (SEQ_NBR), and an optional parameter list (PARM)
3306 are written into this table. The response to the command is placed in PROC_RESPONSE_TBL (Table 08) and is
3307 available to be read. As a minimum response, all commands shall produce an echo of the procedure identifier
3308 (PROC), an echo of the sequence number (SEQ_NBR), and a result code in the procedure response table
3309 (Table 08). When the End Device supports more than one concurrent session or association, then the binding
3310 between procedure initiation and procedure response shall be limited to the session or association that initiated the
3311 procedure. The processing of procedure initiates and procedure responses of any session or association shall not
3312 interfere with another concurrent session or association. If a procedure initiate request is followed by another
3313 procedure initiate request, the procedure response for the first procedure initiate request may be lost. Note that the
3314 scope of the Procedure request parameters (defined in 9.1.10, “Standard Procedures”) needs to be specified
3315 absolutely when referenced in syntax within the context of PROC_INITIATE_TBL (Table 7), since the scope of
3316 the Procedure Initiate Table is different from the scope of any one Procedure definition.

3317 Global Default Table Property Overrides: Atomic = “true”, Role=“CONTROL”

3318 Table 07 Type Definitions

3319 TYPE STD_PARM_RCD = PACKED RECORD


3320 IF PROC.TBL_PROC_NBR == COLD_START_PROC THEN
3321 PROC_DATA_0 : NIL;
3322 END;

3323 IF PROC.TBL_PROC_NBR == WARM_START_PROC THEN


3324 PROC_DATA_1 : NIL;
3325 END;

3326 IF PROC.TBL_PROC_NBR == SAVE_CONFIGURATION_PROC THEN


3327 PROC_DATA_2 : NIL;
3328 END;

3329 IF PROC.TBL_PROC_NBR == CLEAR_DATA_PROC THEN


3330 PROC_DATA_3 : NIL;
3331 END;

3332 IF PROC.TBL_PROC_NBR == RESET_LIST_POINTERS_PROC THEN


3333 PROC_DATA_4 : RESET_LIST_POINTERS_PROC.PARM_DATA_RCD;
3334 END;

3335 IF PROC.TBL_PROC_NBR == UPDATE_LAST_READ_ENTRY_PROC THEN


3336 PROC_DATA_5 :
3337 UPDATE_LAST_READ_ENTRY_PROC.
3338 PARM_DATA_RCD;
3339 END;

3340 IF PROC.TBL_PROC_NBR == CHANGE_END_DEVICE_MODE_PROC THEN


3341 PROC_DATA_6 :
3342 CHANGE_END_DEVICE_MODE_PROC.
3343 PARM_DATA_RCD;
3344 END;
Tables / Decade 0: General Configuration Tables 69
Table 07 Procedure Initiate Table
DRAFT ANSI C12.19-2012

3345 IF PROC.TBL_PROC_NBR == CLEAR_STANDARD_STATUS_FLAGS_PROC THEN


3346 PROC_DATA_7 : NIL;
3347 END;

3348 IF PROC.TBL_PROC_NBR == CLEAR_MANUFACTURER_STATUS_FLAGS_PROC THEN


3349 PROC_DATA_8 : NIL;
3350 END;

3351 IF PROC.TBL_PROC_NBR == REMOTE_RESET_PROC THEN


3352 PROC_DATA_9 : REMOTE_RESET_PROC.PARM_DATA_RCD;
3353 END;

3354 IF PROC.TBL_PROC_NBR == SET_DATE_TIME_PROC THEN


3355 PROC_DATA_10 : SET_DATE_TIME_PROC.PARM_DATA_RCD;
3356 END;

3357 IF PROC.TBL_PROC_NBR == EXECUTE_DIAGNOSTICS_PROC THEN


3358 PROC_DATA_11 : NIL;
3359 END;

3360 IF PROC.TBL_PROC_NBR == ACTIVATE_ALL_PENDING_TABLES_PROC THEN


3361 PROC_DATA_12 : NIL;
3362 END;

3363 IF PROC.TBL_PROC_NBR == ACTIVATE_SPECIFIC_PENDING_TABLE_PROC THEN


3364 PROC_DATA_13 :
3365 ACTIVATE_SPECIFIC_PENDING_TABLE_PROC.
3366 PARM_DATA_RCD;
3367 END;

3368 IF PROC.TBL_PROC_NBR == CLEAR_ALL_PENDING_TABLES_PROC THEN


3369 PROC_DATA_14 : NIL;
3370 END;

3371 IF PROC.TBL_PROC_NBR == CLEAR_SPECIFIC_PENDING_TABLE_PROC THEN


3372 PROC_DATA_15 :
3373 CLEAR_SPECIFIC_PENDING_TABLE_PROC.
3374 PARM_DATA_RCD;
3375 END;

3376 IF PROC.TBL_PROC_NBR == START_LOAD_PROFILE_PROC THEN


3377 PROC_DATA_16 : NIL;
3378 END;

3379 IF PROC.TBL_PROC_NBR == STOP_LOAD_PROFILE_PROC THEN


3380 PROC_DATA_17 : NIL;
3381 END;

3382 IF PROC.TBL_PROC_NBR == LOGIN_PROC THEN


3383 PROC_DATA_18 : LOGIN_PROC.PARM_DATA_RCD;
3384 END;

3385 IF PROC.TBL_PROC_NBR == LOGOUT_PROC THEN


3386 PROC_DATA_19 : NIL;
3387 END;
70
DRAFT ANSI C12.19-2012

3388 IF PROC.TBL_PROC_NBR == INITIATE_AN_IMMEDIATE_CALL_PROC THEN


3389 PROC_DATA_20 :
3390 INITIATE_AN_IMMEDIATE_CALL_PROC.
3391 PARM_DATA_RCD;
3392 END;

3393 IF PROC.TBL_PROC_NBR == DIRECT_LOAD_CONTROL_PROC THEN


3394 PROC_DATA_21 :
3395 DIRECT_LOAD_CONTROL_PROC. PARM_DATA_RCD;
3396 END;

3397 IF PROC.TBL_PROC_NBR == MODIFY_CREDIT_PROC THEN


3398 PROC_DATA_22 : MODIFY_CREDIT_PROC.PARM_DATA_RCD;
3399 END;

3400 { Procedures 23-26 are reserved. }

3401 IF PROC.TBL_PROC_NBR == CLEAR_PENDING_CALL_STATUS_PROC THEN


3402 PROC_DATA_27 : NIL;
3403 END;

3404 IF PROC.TBL_PROC_NBR == START_QUALITY_SERVICE_PROC THEN


3405 PROC_DATA_28 : NIL;
3406 END;

3407 IF PROC.TBL_PROC_NBR == STOP_QUALITY_SERVICE_PROC THEN


3408 PROC_DATA_29 : NIL;
3409 END;

3410 IF PROC.TBL_PROC_NBR == START_SECURED_REGISTER_PROC THEN


3411 PROC_DATA_30 :
3412 START_SECURED_REGISTER_PROC.
3413 PARM_DATA_RCD;
3414 END;

3415 IF PROC.TBL_PROC_NBR == STOP_SECURED_REGISTER_PROC THEN


3416 PROC_DATA_31 :
3417 STOP_SECURED_REGISTER_PROC.
3418 PARM_DATA_RCD;
3419 END;

3420 IF PROC.TBL_PROC_NBR == SET_HTIME_DATE_PROC THEN


3421 PROC_DATA_32 : SET_HTIME_DATE_PROC.PARM_DATA_RCD;
3422 END;
3423 END;

3424 TYPE MFG_PARM_RCD = PACKED RECORD


3425 { NO PROCEDURES DEFINED. }
3426 END;

3427 TYPE PARM_RCD = PACKED RECORD


3428 IF PROC.MFG_FLAG == FALSE THEN
3429 STANDARD: STD_PARM_RCD;
3430 END;
3431
Tables / Decade 0: General Configuration Tables 71
Table 07 Procedure Initiate Table
DRAFT ANSI C12.19-2012

3432 IF PROC.MFG_FLAG == TRUE THEN


3433 MANUFACTURER: MFG_PARM_RCD;
3434 END;
3435 END;

3436 TYPE PROC_FORMAT_RCD = PACKED RECORD


3437 PROC : TABLE_IDB_BFLD;
3438 SEQ_NBR : UINT8;
3439 PARM : PARM_RCD;
3440 END;

3441 TABLE 7 PROC_INITIATE_TBL = PROC_FORMAT_RCD;

3442 Table 07 Element Descriptions

3443 Identifier Value Definition

3444 TABLE_IDB_BFLD Redefines: STD.TABLE_IDB_BFLD.

3445 TBL_PROC_NBR 0..2039 Procedure number to be executed.

3446 MFG_FLAG Alias: STD_VS_MFG_FLAG.


3447 FALSE Procedure selected by TBL_PROC_NBR is a standard-
3448 defined procedure.
3449 TRUE Procedure selected by TBL_PROC_NBR is a manufacturer-
3450 defined procedure.

3451 SELECTOR Describes how the response to the procedure is handled.


3452 0 Post response in PROC_RESPONSE_TBL (Table 08) on
3453 completion.
3454 1 Post response in PROC_RESPONSE_TBL (Table 08) on
3455 exception.
3456 2 Do not post response in PROC_RESPONSE_TBL
3457 (Table 08).
3458 3 Post response in PROC_RESPONSE_TBL (Table 08)
3459 immediately and post another response in
3460 PROC_RESPONSE_TBL (Table 08) on completion.
3461 4..15 Reserved.

3462 STD_PARM_RCD The placeholder for the Elements of all Standard-defined


3463 Procedure parameters. Each Standard-procedure’s request
3464 parameter extends this packed record by adding a conditional
3465 PROC_DATA_x element whose index x is the Standard
3466 procedure number expressed without leading zeros. This
3467 definition applies to version 1.0 of the Standard since the
3468 version 1.0 Standard is unclear in regard to the assignment of
3469 procedure indices. For more details on the procedure-specific
3470 parameters, see 9.1.10, “Standard Procedures”.

3471 MFG_PARM_RCD The placeholder for the Elements of all Manufacturer-defined


3472 Procedure parameters. Each Manufacturer-procedure’s request
3473 parameter extends this packed record by adding a conditional
3474 PROC_DATA_x element whose index x is the Manufacturer
3475 procedure number expressed without leading zeros. This
3476 definition applies to version 1.0 of the Standard since the
72
DRAFT ANSI C12.19-2012

3477 version 1.0 Standard is unclear in regard to the assignment of


3478 procedure indices. This Standard does not define any
3479 manufacturer Procedures.

3480 PARM_RCD
3481 STANDARD See STD_PARM_RCD.

3482 MANUFACTURER See MFG_PARM_RCD.

3483 PROC_FORMAT_RCD
3484 PROC Bit field indicating procedure number to be executed and
3485 whether the procedure is a standard-defined procedure or a
3486 manufacturer-defined procedure. It also defines the response
3487 format.

3488 SEQ_NBR 0..255 The sequence number is supplied by initiator of the procedure.
3489 It shall be returned with the procedure response in
3490 PROC_RESPONSE_TBL (Table 08) as a means of
3491 coordination.

3492 PARM Argument for procedure as defined for individual procedures


3493 according to 9.1.10, “Standard Procedures”.

Tables / Decade 0: General Configuration Tables 73


Table 07 Procedure Initiate Table
DRAFT ANSI C12.19-2012

3494 9.1.9 Table 08 Procedure Response Table

3495 Table 08 Data Description

3496 PROC_RESPONSE_TBL (Table 08) is a complementary table to PROC_INITIATE_TBL (Table 07). This table
3497 contains a response, which gets posted to Table 08 as a result of a write to PROC_INITIATE_TBL (Table 07).
3498 When the End Device supports more than one concurrent session or association, then the binding between procedure
3499 initiation and procedure response shall be limited to the session or association that initiated the procedure. If a
3500 procedure initiate request is followed by another procedure initiate request (within a session or association), the
3501 procedure response for the first initiated procedure may be lost. However, receipt of the first sequence number
3502 (SEQ_NBR) instead of a later sequence number indicates that one or more reads of Table 08 may be required to
3503 recover the related procedure response. Also the content of the procedure response table following termination of a
3504 session or association is not defined by this standard. Note that the scope of the Procedure response parameters
3505 (defined in 9.1.10) needs to be specified absolutely when referenced in syntax within the context of
3506 PROC_RESPONSE_TBL (Table 08), since the scope of the Procedure Response Table is different from the scope
3507 of any one Procedure definition.

3508 Global Default Table Property Overrides: Atomic = “true”, Role=“DATA”

3509 Table 08 Type Definitions

3510 TYPE STD_RESP_RCD = PACKED RECORD


3511 IF PROC.TBL_PROC_NBR == COLD_START_PROC THEN
3512 PROC_DATA_0 : NIL;
3513 END;

3514 IF PROC.TBL_PROC_NBR == WARM_START_PROC THEN


3515 PROC_DATA_1 : NIL;
3516 END;

3517 IF PROC.TBL_PROC_NBR == SAVE_CONFIGURATION_PROC THEN


3518 PROC_DATA_2 : NIL;
3519 END;

3520 IF PROC.TBL_PROC_NBR == CLEAR_DATA_PROC THEN


3521 PROC_DATA_3 : NIL;
3522 END;

3523 IF PROC.TBL_PROC_NBR == RESET_LIST_POINTERS_PROC THEN


3524 PROC_DATA_4 : NIL;
3525 END;

3526 IF PROC.TBL_PROC_NBR == UPDATE_LAST_READ_ENTRY_PROC THEN


3527 PROC_DATA_5 : NIL;
3528 END;

3529 IF PROC.TBL_PROC_NBR == CHANGE_END_DEVICE_MODE_PROC THEN


3530 PROC_DATA_6 : CHANGE_END_DEVICE_MODE_PROC.RESP_DATA_RCD;
3531 END;

3532 IF PROC.TBL_PROC_NBR == CLEAR_STANDARD_STATUS_FLAGS_PROC THEN


3533 PROC_DATA_7 : CLEAR_STANDARD_STATUS_FLAGS_PROC.RESP_DATA_RCD;
3534 END;

74
DRAFT ANSI C12.19-2012

3535 IF PROC.TBL_PROC_NBR == CLEAR_MANUFACTURER_STATUS_FLAGS_PROC THEN


3536 PROC_DATA_8 : CLEAR_MANUFACTURER_STATUS_FLAGS_PROC.RESP_DATA_RCD;
3537 END;

3538 IF PROC.TBL_PROC_NBR == REMOTE_RESET_PROC THEN


3539 PROC_DATA_9 : REMOTE_RESET_PROC.RESP_DATA_RCD;
3540 END;

3541 IF PROC.TBL_PROC_NBR == SET_DATE_TIME_PROC THEN


3542 PROC_DATA_10 : SET_DATE_TIME_PROC.RESP_DATA_RCD;
3543 END;

3544 IF PROC.TBL_PROC_NBR == EXECUTE_DIAGNOSTICS_PROC THEN


3545 PROC_DATA_11 : NIL;
3546 END;

3547 IF PROC.TBL_PROC_NBR == ACTIVATE_ALL_PENDING_TABLES_PROC THEN


3548 PROC_DATA_12 : NIL;
3549 END;

3550 IF PROC.TBL_PROC_NBR == ACTIVATE_SPECIFIC_PENDING_TABLE_PROC THEN


3551 PROC_DATA_13 : NIL;
3552 END;

3553 IF PROC.TBL_PROC_NBR == CLEAR_ALL_PENDING_TABLES_PROC THEN


3554 PROC_DATA_14 : NIL;
3555 END;

3556 IF PROC.TBL_PROC_NBR == CLEAR_SPECIFIC_PENDING_TABLE_PROC THEN


3557 PROC_DATA_15 : NIL;
3558 END;

3559 IF PROC.TBL_PROC_NBR == START_LOAD_PROFILE_PROC THEN


3560 PROC_DATA_16 : NIL;
3561 END;

3562 IF PROC.TBL_PROC_NBR == STOP_LOAD_PROFILE_PROC THEN


3563 PROC_DATA_17 : NIL;
3564 END;

3565 IF PROC.TBL_PROC_NBR == LOGIN_PROC THEN


3566 PROC_DATA_18 : NIL;
3567 END;

3568 IF PROC.TBL_PROC_NBR == LOGOUT_PROC THEN


3569 PROC_DATA_19 : NIL;
3570 END;

3571 IF PROC.TBL_PROC_NBR == INITIATE_AN_IMMEDIATE_CALL_PROC THEN


3572 PROC_DATA_20 : NIL;
3573 END;

3574 IF PROC.TBL_PROC_NBR == DIRECT_LOAD_CONTROL_PROC THEN


3575 PROC_DATA_21 : NIL;
3576 END;
Tables / Decade 0: General Configuration Tables 75
Table 08 Procedure Response Table
DRAFT ANSI C12.19-2012

3577 IF PROC.TBL_PROC_NBR == MODIFY_CREDIT_PROC THEN


3578 PROC_DATA_22 : MODIFY_CREDIT_PROC. RESP_DATA_RCD;
3579 END;

3580 { Procedures 23-26 are reserved. }

3581 IF PROC.TBL_PROC_NBR == CLEAR_PENDING_CALL_STATUS_PROC THEN


3582 PROC_DATA_27 : NIL;
3583 END;

3584 IF PROC.TBL_PROC_NBR == START_QUALITY_SERVICE_PROC THEN


3585 PROC_DATA_28 : NIL;
3586 END;

3587 IF PROC.TBL_PROC_NBR == STOP_QUALITY_SERVICE_PROC THEN


3588 PROC_DATA_29 : NIL;
3589 END;

3590 IF PROC.TBL_PROC_NBR == START_SECURED_REGISTER_PROC THEN


3591 PROC_DATA_30 : START_SECURED_REGISTER_PROC.RESP_DATA_RCD;
3592 END;

3593 IF PROC.TBL_PROC_NBR == STOP_SECURED_REGISTER_PROC THEN


3594 PROC_DATA_31 : STOP_SECURED_REGISTER_PROC.RESP_DATA_RCD;
3595 END;

3596 IF PROC.TBL_PROC_NBR == SET_HTIME_DATE_PROC THEN


3597 PROC_DATA_32 : SET_HTIME_DATE_PROC.RESP_DATA_RCD;
3598 END;
3599 END;

3600 TYPE MFG_RESP_RCD = PACKED RECORD


3601 { NO PROCEDURES DEFINED }
3602 END;

3603 TYPE RESP_DATA_RCD = PACKED RECORD


3604 IF PROC.MFG_FLAG == FALSE THEN
3605 STANDARD : STD_RESP_RCD;
3606 END;
3607 IF PROC.MFG_FLAG == TRUE THEN
3608 MANUFACTURER : MFG_RESP_RCD;
3609 END;
3610 END;

3611 TYPE PROC_RESPONSE_RCD = PACKED RECORD


3612 PROC : TABLE_IDB_BFLD;
3613 SEQ_NBR : UINT8;
3614 RESULT_CODE : UINT8;
3615 RESP_DATA : RESP_DATA_RCD;
3616 END;

76
DRAFT ANSI C12.19-2012

3617 TABLE 8 PROC_RESPONSE_TBL = PROC_RESPONSE_RCD;

3618 Table 08 Element Descriptions

3619 Identifier Value Definition

3620 TABLE_IDB_BFLD Redefines: STD.TABLE_IDB_BFLD.

3621 TBL_PROC_NBR 0..2039 Procedure number executed by End Device.

3622 MFG_FLAG Alias: STD_VS_MFG_FLAG.


3623 FALSE Procedure was a standard procedure.
3624 TRUE Procedure was a manufacturer-defined procedure.

3625 SELECTOR 0..15 Not used in PROC_RESPONSE_TBL (Table 08). See


3626 PROC_INITIATE_TBL (Table 07).

3627 STD_RESP_RCD The placeholder for the Elements of all Standard-defined


3628 Procedure responses. Each Standard procedure’s response data
3629 extends this packed record by adding a conditional
3630 PROC_DATA_x element whose index x is the Standard
3631 procedure number expressed without leading zeros. This
3632 definition also applies to version 1.0 of the Standard since the
3633 version 1.0 Standard is unclear in regard to the assignment of
3634 procedure indices. For more details on the procedure-specific
3635 responses, see 9.1.10, “Standard Procedures”.

3636 MFG_RESP_RCD The placeholder for the Elements of all Manufacturer-defined


3637 Procedure responses. Each Manufacturer-procedure’s response
3638 data extends this packed record by adding a conditional
3639 PROC_DATA_x element whose index x is the Manufacturer
3640 procedure number expressed without leading zeros. This
3641 definition also applies to version 1.0 of the Standard since the
3642 version 1.0 Standard is unclear in regard to the assignment of
3643 procedure indices. This Standard does not define any
3644 manufacturer Procedures.

3645 RESP_DATA_RCD
3646 STANDARD See STD_RESP_RCD.

3647 MANUFACTURER See MFG_RESP_RCD.

3648 PROC_RESPONSE_RCD
3649 PROC Bit field indicating procedure number executed and whether
3650 the procedure was a standard-defined or a manufacturer-
3651 defined.

3652 SEQ_NBR 0..255 Supplied by initiator of the procedure


3653 PROC_INITIATE_TBL (Table 07). Returned with response
3654 as a means of coordination.

3655 RESULT_CODE Code which identifies the status of the procedure execution.
3656 The codes are defined as follows:
3657 0 Procedure completed.

Tables / Decade 0: General Configuration Tables 77


Table 08 Procedure Response Table
DRAFT ANSI C12.19-2012

3658 1 Procedure accepted but not fully completed.


3659 2 Invalid parameter for known procedure, procedure was
3660 ignored.
3661 3 Procedure conflicts with current device setup, procedure was
3662 ignored.
3663 4 Timing constraint, procedure was ignored.
3664 5 No authorization for requested procedure, procedure was
3665 ignored.
3666 6 Unrecognized procedure, procedure was ignored.
3667 7..255 Reserved.

3668 RESP_DATA Procedure response record as defined for individual


3669 procedures in PROC_INITIATE_TBL (Table 07).
3670 RESP_DATA_RCD is posted if procedure was successfully
3671 completed (RESULT_CODE = 0) and SELECTOR in
3672 PROC_INITIATE_TBL (Table 07) is not set to a value of 2.

78
DRAFT ANSI C12.19-2012

3673 9.1.10 Standard Procedures

3674 The following procedures are defined as standard procedures by this document. MFG_FLAG shall be set to
3675 FALSE.

3676 9.1.10.1 Procedure 00 Cold Start

3677 Procedure 00 Data Description

3678 This procedure causes the End Device to return to a manufacturer default known state. All data values, programs,
3679 and conditions may be lost. Communication may be broken. If an Event Log exists, an attempt shall be made to
3680 retain it.

3681 Procedure 00 Type Definitions

3682 PROCEDURE 0 COLD_START_PROC;

3683 9.1.10.2 Procedure 01 Warm Start

3684 Procedure 01 Data Description

3685 This procedure causes the End Device to return to a “power-up” state. Communication may be broken.

3686 Procedure 01 Type Definitions

3687 PROCEDURE 1 WARM_START_PROC;

3688 9.1.10.3 Procedure 02 Save Configuration

3689 Procedure 02 Data Description

3690 This procedure causes the End Device to save its active configuration.

3691 Procedure 02 Type Definitions

3692 PROCEDURE 2 SAVE_CONFIGURATION_PROC;

3693 9.1.10.4 Procedure 03 Clear Data

3694 Procedure 03 Data Description

3695 This procedure causes the End Device to purge generated data fields but retain programming fields. Data fields to be
3696 purged are specified by the device manufacturer.

3697 Procedure 03 Type Definitions

3698 PROCEDURE 3 CLEAR_DATA_PROC;

3699

3700 9.1.10.5 Procedure 04 Reset List Pointers

3701 Procedure 04 Data Description


Tables / Decade 0: General Configuration Tables 79
Standard Procedures
DRAFT ANSI C12.19-2012

3702 When this procedure is invoked, the End Device attempts to reset list control Elements to their initial state. To
3703 execute this procedure, the initiator shall in addition be required to have access permission to the procedure and
3704 write access permission to the table containing the selected list(s).

3705 Note that when PARM_DATA_RCD.LIST is set to 1,2,8,9,10,11,12 or 11, then the related
3706 LAST_ENTRY_SEQ_NBR Element may be reset to zero. When PARM_DATA_RCD.LIST is set to 3,4,5,6 or 7,
3707 then the related LAST_BLOCK_SEQ_NBR Element may be reset to zero.

3708 Procedure 04 Type Definitions

3709 TYPE PARM_DATA_RCD = PACKED RECORD


3710 LIST : UINT8;
3711 END;

3712 PROCEDURE 4 RESET_LIST_POINTERS_PROC


3713 REQUEST = PARM_DATA_RCD;

3714 Procedure 04 Element Descriptions

3715 Identifier Value Definition

3716 PARM_DATA_RCD
3717 LIST 0 Reserved.
3718 1 EVENT_LOG_DATA_TBL (Table 76).
3719 2 SELF_READ_DATA_TBL (Table 26).
3720 3 LP_DATA_SET1_TBL (Table 64).
3721 4 LP_DATA_SET2_TBL (Table 65).
3722 5 LP_DATA_SET3_TBL (Table 66).
3723 6 LP_DATA_SET4_TBL (Table 67).
3724 7 LP_DATA_SET1_TBL (Table 64) and
3725 LP_DATA_SET2_TBL (Table 65) and
3726 LP_DATA_SET3_TBL (Table 66) and
3727 LP_DATA_SET4_TBL (Table 67).
3728 8 HISTORY_LOG_DATA_TBL (Table 74).
3729 9 QUALITY_LOG_TBL (Table 154).
3730 10 TD_ASYNC_TBL (Table 155).
3731 11 FD_ASYNC_TBL (Table 156).
3732 12 TIME_DOMAIN_TBL (Table 157).
3733 13 FREQUENCY_DOMAIN_TBL (Table 158).
3734 14..127 Reserved.
3735 128..254 Reserved for Manufacturer’s Lists.
3736 255 All lists except EVENT_LOG_DATA_TBL (Table 76).

3737 9.1.10.6 Procedure 05 Update Last Read Entry

3738 Procedure 05 Data Description

3739 When this procedure is invoked, the End Device attempts to reduce the list Element NBR_UNREAD_ENTRIES by
3740 the value specified. To execute this procedure, the initiator shall in addition be required to have access to the
3741 procedure and write access to the table containing the selected list(s).

3742 Note that when PARM_DATA_RCD.LIST is set to 1,2,8,9,10,11,12 or 11, then the related
3743 LAST_ENTRY_SEQ_NBR Element shall not reset to zero. When PARM_DATA_RCD.LIST is set to 3,4,5,6 or
3744 7, then the related LAST_BLOCK_SEQ_NBR Element shall not reset to zero.

80
DRAFT ANSI C12.19-2012

3745 Procedure 05 Type Definitions

3746 TYPE PARM_DATA_RCD = PACKED RECORD


3747 LIST : UINT8;
3748 ENTRIES_READ : UINT16;
3749 END;

3750 PROCEDURE 5 UPDATE_LAST_READ_ENTRY_PROC


3751 REQUEST = PARM_DATA_RCD;

3752 Procedure 05 Element Descriptions

3753 Identifier Value Definition

3754 PARM_DATA_RCD
3755 LIST 0 Reserved.
3756 1 EVENT_LOG_DATA_TBL (Table 76).
3757 2 SELF_READ_DATA_TBL (Table 26).
3758 3 LP_DATA_SET1_TBL (Table 64).
3759 4 LP_DATA_SET2_TBL (Table 65).
3760 5 LP_DATA_SET3_TBL (Table 66).
3761 6 LP_DATA_SET4_TBL (Table 67).
3762 7 LP_DATA_SET1_TBL (Table 64) and
3763 LP_DATA_SET2_TBL (Table 65) and
3764 LP_DATA_SET3_TBL (Table 66) and
3765 LP_DATA_SET4_TBL (Table 67).
3766 8 HISTORY_LOG_DATA_TBL (Table 74).
3767 9 QUALITY_LOG_TBL (Table 154).
3768 10 TD_ASYNC_TBL (Table 155).
3769 11 FD_ASYNC_TBL (Table 156).
3770 12 TIME_DOMAIN_TBL (Table 157).
3771 13 FREQUENCY_DOMAIN_TBL (Table 158).
3772 14..127 Reserved.
3773 128..254 Reserved for Manufacturer’s Lists.
3774 255 All lists except EVENT_LOG_DATA_TBL (Table 76).

3775 ENTRIES_READ 0..65535 Number of entries confirmed.

3776 9.1.10.7 Procedure 06 Change End Device Mode

3777 Procedure 06 Data Description

3778 This procedure changes the operational modes of the End Device.

3779 Procedure 06 Type Definitions

3780 TYPE PARM_DATA_RCD = PACKED RECORD


3781 ED_MODE : ED_MODE_STATUS_TBL.ED_MODE_BFLD;
3782 END;

3783 TYPE RESP_DATA_RCD = PACKED RECORD


3784 ED_MODE : ED_MODE_STATUS_TBL.ED_MODE_BFLD;
3785 END;

3786 PROCEDURE 6 CHANGE_END_DEVICE_MODE_PROC


Tables / Decade 0: General Configuration Tables 81
Standard Procedures
DRAFT ANSI C12.19-2012

3787 REQUEST = PARM_DATA_RCD


3788 RESPONSE = RESP_DATA_RCD;

3789 Procedure 06 Element Descriptions

3790 Identifier Value Definition

3791 PARM_DATA_RCD
3792 ED_MODE See ED_MODE_STATUS_TBL.ED_MODE (Table 03).
3793 This Element contains the desired mode.

3794 RESP_DATA_RCD
3795 ED_MODE See ED_MODE_STATUS_TBL.ED_MODE (Table 03).
3796 This Element contains the mode resulting from the execution
3797 of this Procedure.

3798 9.1.10.8 Procedure 07 Clear Standard Status Flags

3799 Procedure 07 Data Description

3800 When invoked, this procedure causes the End Device to attempt to clear all standard status flags.

3801 Procedure 07 Type Definitions

3802 TYPE RESP_DATA_RCD = PACKED RECORD


3803 ED_STD_STATUS_1 : ED_MODE_STATUS_TBL.ED_STD_STATUS1_BFLD;
3804 ED_STD_STATUS_2 : ED_MODE_STATUS_TBL.ED_STD_STATUS2_BFLD;
3805 END;
3806
3807 PROCEDURE 7 CLEAR_STANDARD_STATUS_FLAGS_PROC
3808 RESPONSE = RESP_DATA_RCD;

3809 Procedure 07 Element Descriptions

3810 Identifier Value Definition


3811 RESP_DATA_RCD The End Device resulting status flags following the execution
3812 of this Procedure.

3813 ED_STD_STATUS_1 See ED_MODE_STATUS_TBL.


3814 ED_STD_STATUS1_BFLD (Table 03).

3815 ED_STD_STATUS_2 See ED_MODE_STATUS_TBL.


3816 ED_STD_STATUS2_BFLD (Table 03).

3817

3818 9.1.10.9 Procedure 08 Clear Manufacturer Status Flags

3819 Procedure 08 Data Description

3820 When invoked, the End Device attempts to clear all manufacturer status flags.

3821 Procedure 08 Type Definitions

82
DRAFT ANSI C12.19-2012

3822 TYPE RESP_DATA_RCD = PACKED RECORD


3823 ED_MFG_STATUS : ED_MODE_STATUS_TBL. ED_MFG_STATUS_RCD;
3824 END;

3825 PROCEDURE 8 CLEAR_MANUFACTURER_STATUS_FLAGS_PROC


3826 RESPONSE = RESP_DATA_RCD;

3827 Procedure 08 Element Descriptions

3828 Identifier Value Definition

3829 RESP_DATA_RCD
3830 ED_MFG_STATUS See ED_MODE_STATUS_TBL.
3831 ED_MFG_STATUS_RCD (Table 03).

3832 9.1.10.10 Procedure 09 Remote Reset

3833 Procedure 09 Data Description

3834 When invoked, this procedure attempts to perform the specified combination of resets. The following resets are
3835 supported: Self-read, Demand Reset, and Season Change.

3836 Procedure 09 Type Definitions

3837 TYPE ACTION_FLAG_BFLD = BIT FIELD OF UINT8


3838 DEMAND_RESET_FLAG : BOOL(0);
3839 SELF_READ_FLAG : BOOL(1);
3840 SEASON_CHANGE_FLAG : BOOL(2);
3841 NEW_SEASON : UINT(3..6);
3842 FILLER : FILL(7..7);
3843 END;

3844 TYPE PARM_DATA_RCD = PACKED RECORD


3845 ACTION_FLAG : ACTION_FLAG_BFLD;
3846 END;

3847 TYPE RESP_DATA_RCD = PACKED RECORD


3848 SUCCESS_FLAG : ACTION_RESPONSE_FLAG_BFLD;
3849 END;

3850 PROCEDURE 9 REMOTE_RESET_PROC


3851 REQUEST = PARM_DATA_RCD
3852 RESPONSE = RESP_DATA_RCD;
3853

Tables / Decade 0: General Configuration Tables 83


Standard Procedures
DRAFT ANSI C12.19-2012

3854 Procedure 09 Element Descriptions

3855 Identifier Value Definition

3856 ACTION_FLAG_BFLD
3857 DEMAND_RESET_FLAG FALSE Do not perform a demand reset.
3858 TRUE Perform a demand reset.

3859 SELF_READ_FLAG FALSE Do not perform a Self-read.


3860 TRUE Perform a Self-read.

3861 SEASON_CHANGE_FLAG
3862 FALSE Do not perform a change to the new season specified.
3863 TRUE Perform a change to the new season specified.

3864 NEW_SEASON 0..15 Season to change to if SEASON_CHANGE_FLAG = TRUE.

3865 PARM_DATA_RCD
3866 ACTION_FLAG Bit mask denotes the reset actions to perform.

3867 ACTION_RESPONSE_FLAG_BFLD Redefines: ACTION_FLAG_BFLD.

3868 DEMAND_RESET_FLAG FALSE Did not perform a demand reset.


3869 TRUE Performed a demand reset.

3870 SELF_READ_FLAG FALSE Did not perform a Self-read.


3871 TRUE Performed a Self-read.

3872 SEASON_CHANGE_FLAG
3873 FALSE Did not perform a change to the new season specified.
3874 TRUE Performed a change to the new season specified.

3875 NEW_SEASON 0..15 The season number the End Device changed to if
3876 SEASON_CHANGE_FLAG = TRUE.

3877 RESP_DATA_RCD
3878 SUCCESS_FLAG Indicates which “resets” were successful by setting
3879 corresponding bits.

3880 9.1.10.11 Procedure 10 Set Date and/or Time

3881 Procedure 10 Data Description

3882 This procedure is used to set the date and/or time in the End Device. It is important to note that the new date-time
3883 field within this procedure REQUEST (DATE_TIME) might be transported using a different time reference (End
3884 Device operational time, Standard time, or UTC) from the one published by the Clock Table (Table 52), Clock State
3885 Table (Table 55), or Precision Clock State Table (Table 57). See the introduction of Decade 5 for more information.

3886

84
DRAFT ANSI C12.19-2012

3887 Procedure 10 Type Definitions

3888 TYPE SET_MASK_BFLD = BIT FIELD OF UINT8


3889 SET_TIME_FLAG : BOOL(0);
3890 SET_DATE_FLAG : BOOL(1);
3891 SET_TIME_DATE_QUAL : BOOL(2);
3892 FILLER : FILL(3..7);
3893 END;

3894 TYPE PARM_DATA_RCD = PACKED RECORD


3895 SET_MASK : SET_MASK_BFLD;
3896 DATE_TIME : LTIME_DATE;
3897 TIME_DATE_QUAL : TIME_DATE_QUAL_BFLD;
3898 END;

3899 TYPE RESP_DATA_RCD = PACKED RECORD


3900 DEV_DATE_TIME_BEFORE : LTIME_DATE;
3901 DEV_DATE_TIME_AFTER : LTIME_DATE;
3902 END;

3903 PROCEDURE 10 SET_DATE_TIME_PROC


3904 REQUEST = PARM_DATA_RCD
3905 RESPONSE = RESP_DATA_RCD;

3906 Procedure 10 Element Descriptions

3907 Identifier Value Definition


3908 SET_MASK_BFLD
3909 SET_TIME_FLAG FALSE Do not set time.
3910 TRUE Set time.

3911 SET_DATE_FLAG FALSE Do not set date.


3912 TRUE Set date.

3913 SET_TIME_DATE_QUAL FALSE Do not set time date qualifier.


3914 TRUE Set time date qualifier.

3915 TIME_DATE_QUAL_BFLD Redefines: CLOCK_TBL.TIME_DATE_QUAL_BFLD.

3916 DAY_OF_WEEK Current day of the week.


3917 0 Sunday.
3918 1 Monday.
3919 2 Tuesday.
3920 3 Wednesday.
3921 4 Thursday.
3922 5 Friday.
3923 6 Saturday.
3924 7 Do not set DAY_OF_WEEK.

3925 DST_FLAG FALSE The DATE_TIME Element is not within a daylight saving
3926 time period.
3927 TRUE The DATE_TIME Element is within a daylight saving time
3928 period.

Tables / Decade 0: General Configuration Tables 85


Standard Procedures
DRAFT ANSI C12.19-2012

3929 GMT_FLAG FALSE Reserved.


3930 TRUE Shall be set to true.

3931 TM_ZN_APPLIED_FLAG This field and the following one (DST_APPLIED_FLAG)


3932 define the time reference (End Device operational time,
3933 Standard time or UTC time) used during the transport of the
3934 new date-time field (DATE_TIME).
3935 FALSE The DATE_TIME Element does not include time zone offset
3936 adjustment.
3937 TRUE The DATE_TIME Element includes time zone offset
3938 adjustment.

3939 DST_APPLIED_FLAG FALSE The DATE_TIME Element does not include daylight saving
3940 adjustment.
3941 TRUE The DATE_TIME Element includes daylight saving
3942 adjustment.

3943 DST_SUPPORTED_FLAG FALSE Disable Daylight Saving Time tracking.


3944 TRUE Enable Daylight Saving Time tracking.

3945 PARM_DATA_RCD
3946 SET_MASK Bit mask denotes the actions to perform.

3947 DATE_TIME New date and time.

3948 TIME_DATE_QUAL See TIME_DATE_QUAL_BFLD.

3949 RESP_DATA_RCD
3950 DEV_DATE_TIME_BEFORE Date and time in the End Device just before set-date-time
3951 procedure was executed. This field is transported according to
3952 TIME_DATE_QUAL found in any one of the Clock Table
3953 (Table 52), Clock State Table (Table 55), or Precision Clock
3954 State Table (Table 57).

3955 DEV_DATE_TIME_AFTER Date and time in the End Device just after set-date-time
3956 procedure was executed. This field is transported according to
3957 TIME_DATE_QUAL in any one of the Clock Table
3958 (Table 52), Clock State Table (Table 55), or Precision Clock
3959 State Table (Table 57).
3960

86
DRAFT ANSI C12.19-2012

3961 9.1.10.12 Procedure 11 Execute Diagnostics Procedure

3962 Procedure 11 Data Description

3963 This procedure initiates an End Device diagnostic procedure.

3964 Procedure 11 Type Definitions

3965 PROCEDURE 11 EXECUTE_DIAGNOSTICS_PROC;

3966 9.1.10.13 Procedure 12 Activate All Pending Tables

3967 Procedure 12 Data Description

3968 This procedure causes the End Device to immediately activate all pending tables regardless of activation trigger(s).

3969 Procedure 12 Type Definitions

3970 PROCEDURE 12 ACTIVATE_ALL_PENDING_TABLES_PROC;

3971 9.1.10.14 Procedure 13 Activate Specific Pending Table(s)

3972 Procedure 13 Data Description

3973 This procedure causes the End Device to immediately activate any pending table(s) with the specified activation
3974 trigger.

3975 Procedure 13 Type Definitions

3976 TYPE PARM_DATA_RCD = PACKED RECORD


3977 EVENT : PENDING_STATUS_TBL.EVENT_RCD;
3978 END;

3979 PROCEDURE 13 ACTIVATE_SPECIFIC_PENDING_TABLE_PROC


3980 REQUEST = PARM_DATA_RCD;

3981 Procedure 13 Element Descriptions

3982 Identifier Value Definition


3983 PARM_DATA_RCD
3984 EVENT See PENDING_STATUS_TBL.EVENT_RCD (Table 04).

3985 9.1.10.15 Procedure 14 Clear All Pending Tables

3986 Procedure 14 Data Description

3987 This procedure causes the End Device to immediately clear the pending state of all pending tables.

3988 Procedure 14 Type Definitions

3989 PROCEDURE 14 CLEAR_ALL_PENDING_TABLES_PROC;

Tables / Decade 0: General Configuration Tables 87


Standard Procedures
DRAFT ANSI C12.19-2012

3990 9.1.10.16 Procedure 15 Clear Specific Pending Table(s)

3991 Procedure 15 Data Description

3992 This procedure causes the End Device to immediately clear the pending status of all pending table(s) with the
3993 specified activation trigger.

3994 Procedure 15 Type Definitions

3995 TYPE PARM_DATA_RCD = PACKED RECORD


3996 EVENT : PENDING_STATUS_TBL.EVENT_RCD;
3997 END;

3998 PROCEDURE 15 CLEAR_SPECIFIC_PENDING_TABLE_PROC


3999 REQUEST = PARM_DATA_RCD;

4000 Procedure 15 Element Descriptions

4001 Identifier Value Definition


4002 PARM_DATA_RCD
4003 EVENT See PENDING_STATUS_TBL.EVENT_RCD (Table 04).

4004 9.1.10.17 Procedure 16 Start Load Profile

4005 Procedure 16 Data Description

4006 This procedure starts all defined load profile sets.

4007 Procedure 16 Type Definitions

4008 PROCEDURE 16 START_LOAD_PROFILE_PROC;

4009 9.1.10.18 Procedure 17 Stop Load Profile

4010 Procedure 17 Data Description

4011 This procedure stops all active load profile sets.

4012 Procedure 17 Type Definitions

4013 PROCEDURE 17 STOP_LOAD_PROFILE_PROC;

4014 9.1.10.19 Procedure 18 Log In

4015 Procedure 18 Data Description

4016 When invoked, this procedure establishes the active USER_ID that is used in the HISTORY_LOG_DATA_TBL
4017 (Table 74) and in the EVENT_LOG_DATA_TBL (Table 76) and supplies a password.

4018

88
DRAFT ANSI C12.19-2012

4019 Procedure 18 Type Definitions

4020 TYPE PARM_DATA_RCD = PACKED RECORD


4021 USER_ID : UINT16;
4022 PASSWORD : BINARY(20);
4023 END;

4024 PROCEDURE 18 LOGIN_PROC


4025 REQUEST = PARM_DATA_RCD;

4026 Procedure 18 Element Descriptions

4027 Identifier Value Definition


4028 PARM_DATA_RCD
4029 USER_ID 0..65535 ID associated with current user.
4030 Note that USER_ID of zero and USER_ID of one should be
4031 avoided since it represents an End Device initiated event and
4032 manually initiated event, respectively, in the loggers.

4033 PASSWORD Password supplied. The first Octet of the password shall be
4034 placed in the lowest index position of the Element.

4035 9.1.10.20 Procedure 19 Log Out

4036 Procedure 19 Data Description

4037 Deactivates the USER_ID and password.

4038 Procedure 19 Type Definitions

4039 PROCEDURE 19 LOGOUT_PROC;

4040 9.1.10.21 Procedure 20 Initiate an Immediate Call

4041 Procedure 20 Data Description

4042 This procedure causes the End Device to immediately initiate a call with the phone number specified. Call windows
4043 are ignored.

4044 Procedure 20 Type Definitions

4045 TYPE PARM_DATA_RCD = PACKED RECORD


4046 PHONE_NUMBER_INDEX : UINT8;
4047 END;

4048 PROCEDURE 20 INITIATE_AN_IMMEDIATE_CALL_PROC


4049 REQUEST = PARM_DATA_RCD;
4050

Tables / Decade 0: General Configuration Tables 89


Standard Procedures
DRAFT ANSI C12.19-2012

4051 Procedure 20 Element Descriptions

4052 Identifier Value Definition


4053 PARM_DATA_RCD
4054 PHONE_NUMBER_INDEX 0..6 Selection of which phone number to use for the call
4055 originating procedure. This value is an index to the
4056 PHONE_NUMBERS array in table
4057 ORIGINATE_PARAMETERS_TBL (Table 93).

4058 9.1.10.22 Procedure 21 Direct Load Control

4059 Procedure 21 Data Description

4060 This procedure provides direct load control through a communication link. The load control directive data structure
4061 used by this procedure is shared by all other methods supported in the load control Decade.

4062 Procedure 21 Type Definitions

4063 TYPE PARM_DATA_RCD = PACKED RECORD


4064 NEW_LEVEL : UINT8;
4065 TO_SET :
4066 SET((ACT_LOAD_CONTROL_TBL.
4067 NBR_OF_CONTROL_POINTS + 7) / 8);
4068 IF ACT_LOAD_CONTROL_TBL.DURATION_SUPPORTED_FLAG THEN
4069 DURATION : TIME;
4070 END;
4071 IF ACT_LOAD_CONTROL_TBL.RANDOMIZATION_SUPPORTED_FLAG THEN
4072 RANDOMIZATION_PERIOD : TIME;
4073 END;
4074 END;

4075 PROCEDURE 21 DIRECT_LOAD_CONTROL_PROC


4076 REQUEST = PARM_DATA_RCD;

4077 Procedure 21 Element Descriptions

4078 Identifier Value Definition


4079 PARM_DATA_RCD
4080 NEW_LEVEL 0..100 New level (0% to 100%) requested for the selected control
4081 points. For control points that do not support level, where
4082 LEVEL_SUPPORTED_FLAG in the Load control status
4083 table (Table 112) is FALSE, NEW_LEVEL lower than 50%
4084 means disconnect the load and greater than or equal to 50%
4085 means connect the load.

4086 TO_SET List of control points selected.


4087 FALSE This control point is not affected by this load control directive.
4088 TRUE This control point is affected by this load control directive.

4089 DURATION Period of time before automatically restoring the original state
4090 of the selected control points. Duration set to 00:00:00 means
4091 no duration and produces a permanent state change.

90
DRAFT ANSI C12.19-2012

4092 RANDOMIZATION_PERIOD The upper bound allowable for the randomization period in
4093 minutes. The requested load control directive shall be asserted
4094 within 0 to RANDOMIZATION_PERIOD minutes, based
4095 on a random value computed by some means.

4096 9.1.10.23 Procedure 22 Modify Credit

4097 Procedure 22 Data Description

4098 This procedure is used to modify the PREPAYMENT_STATUS_TBL.REMAINING_CREDIT as defined in


4099 table “Prepayment status table” (Table 116).

4100 Procedure 22 Type Definitions

4101 TYPE PARM_DATA_RCD = PACKED RECORD


4102 OPERATION : UINT8;
4103 VALUE : NI_FMAT1;
4104 END;

4105 TYPE RESP_DATA_RCD = PACKED RECORD


4106 NEW_REMAINING_CREDIT : NI_FMAT1;
4107 END;

4108 PROCEDURE 22 MODIFY_CREDIT_PROC


4109 REQUEST = PARM_DATA_RCD
4110 RESPONSE = RESP_DATA_RCD;

4111 Procedure 22 Element Descriptions

4112 Identifier Value Definition


4113 PARM_DATA_RCD
4114 OPERATION Operation requested on the
4115 PREPAYMENT_STATUS_TBL.REMAINING_CREDIT
4116 value.
4117 0 Add to credit.
4118 1 Subtract from credit.
4119 2 Adjust credit.
4120 3..255 Reserved.

4121 VALUE Parameter of this operation.

4122 RESP_DATA_RCD
4123 NEW_REMAINING_CREDIT PREPAYMENT_STATUS_TBL.REMAINING_CREDIT
4124 available after processing this request.

4125 9.1.10.24 Procedure 23 Reserved

4126 Reserved for ANSI C12.22.

4127 9.1.10.25 Procedure 24 Reserved

4128 Reserved for ANSI C12.22.

Tables / Decade 0: General Configuration Tables 91


Standard Procedures
DRAFT ANSI C12.19-2012

4129 9.1.10.26 Procedure 25 Reserved

4130 Reserved for ANSI C12.22.

4131 9.1.10.27 Procedure 26 Reserved

4132 Reserved for ANSI C12.22.

4133 9.1.10.28 Procedure 27 Clear Pending Call Status

4134 Procedure 27 Data Description

4135 This procedure causes the End Device to immediately clear all pending call reasons in Table 98 Originate Status.

4136 Procedure 27 Type Definitions

4137 PROCEDURE 27 CLEAR_PENDING_CALL_STATUS_PROC;

4138 9.1.10.29 Procedure 28 Start Quality-of-service Monitors

4139 Procedure 28 Data Description

4140 This procedure starts all Quality-of-service reporting.

4141 Procedure 28 Type Definitions

4142 PROCEDURE 28 START_QUALITY_SERVICE_PROC;

4143 9.1.10.30 Procedure 29 Stop Quality-of-service Monitors

4144 Procedure 29 Data Description

4145 This procedure stops all active Quality-of-service reporting.

4146 Procedure 29 Type Definitions

4147 PROCEDURE 29 STOP_QUALITY_SERVICE_PROC;

4148 9.1.10.31 Procedure 30 Start Secured Register

4149 Procedure 30 Data Description

4150 This procedure enables event logging (if implemented) of secure register reads (if implemented) and volatile data
4151 freezing (if implemented), in Event Log Data Table (Table 76), to facilitate End Device reading.

4152 Procedure 30 Type Definitions

4153 TYPE SECURED_READ_REQ_BFLD = BIT FIELD OF UINT16


4154 SECURED_REGISTER_FLAG : BOOL(0);
4155 DATA_FREEZE_FLAG : BOOL(1);
4156 RESERVED : FILL(2..15);
4157 END;

4158

92
DRAFT ANSI C12.19-2012

4159 TYPE PARM_DATA_RCD = PACKED RECORD


4160 READ_ENABLE : SECURED_READ_REQ_BFLD;
4161 SECURED_READ_MAX : UINT16;
4162 END;

4163 PROCEDURE 30 START_SECURED_REGISTER_PROC


4164 REQUEST = PARM_DATA_RCD
4165 RESPONSE = RESP_DATA_RCD;

4166 Procedure 30 Element Descriptions

4167 Identifier Value Definition


4168 SECURED_READ_REQ_BFLD Bit field use to indicate the secured read related operational
4169 parameters being enabled.

4170 SECURED_REGISTER_FLAG
4171 FALSE The operational state of the secured register read is left
4172 unchanged.
4173 TRUE Begin secured read operations. The End Device shall generate
4174 End Device secured register events (Read Secured Register or
4175 Read Secured Table) following the transfer of a secured
4176 register Table or Element to an End-Device reader, provided
4177 that this feature is implemented by the End Device. Event
4178 logging of secured-register reads shall cease immediately upon
4179 invocation of the “Stop Secured Register” procedure,
4180 termination of the communication session that invoked the
4181 “Start Secured Register” procedure, or upon reaching the
4182 maximum number of secured read operations that were
4183 permitted for this session or association.

4184 DATA_FREEZE_FLAG FALSE The operational state of the data freeze is left unchanged.
4185 TRUE Create a frozen (unchanging) copy of all volatile End Device
4186 data values. Following acceptance of this optional capability,
4187 all values read from the End Device shall be nonchanging and
4188 coincident. The data shall remain frozen while the number of
4189 active sessions plus active communication associations that
4190 initiated a data freeze is greater than zero (0).

4191 PARM_DATA_RCD
4192 READ_ENABLE See request SECURED_READ_REQ_BFLD.

4193 SECURED_READ_MAX The maximum number of Event Log entries estimated as


4194 needed to report the upcoming secured read events.
4195 0 Reserved.
4196 1..65535 The maximum number of events requested.

4197 SECURED_READ_RESP_BFLD Bit field used to indicate the secured read related operations
4198 enabled status.
4199 Redefines: SECURED_READ_REQ_BFLD.
4200 SECURED_REGISTER_FLAG
4201 FALSE Secured read Event Logging is disabled.
4202 TRUE Secured read Event Logging is enabled.

Tables / Decade 0: General Configuration Tables 93


Standard Procedures
DRAFT ANSI C12.19-2012

4203 DATA_FREEZE_FLAG FALSE End Device Table data is not frozen (the End Device shall
4204 report real-time data values).
4205 TRUE End Device Table data is frozen (the End Device
4206 shall continue normal data processing in the background to
4207 prevent loss of data).

4208 RESP_DATA_RCD Procedure response data.


4209 Redefines: PARM_DATA_RCD.

4210 READ_ENABLE See response SECURED_READ_RESP_BFLD.

4211 SECURED_READ_MAX The maximum number of Event Log entries available to report
4212 the upcoming secured read events.
4213 0 The maximum number of secured register reading events has
4214 been reached.
4215 1..65535 The remaining number of secured register reading events that
4216 can be recorded.

4217 9.1.10.32 Procedure 31 Stop Secured Register

4218 Procedure 31 Data Description

4219 This procedure disables event logging (if implemented) of secure register reads (if implemented) and volatile data
4220 freezing (if implemented), in Event Log Data Table (Table 76), to reinstate nonsecured End Device reading.

4221 Procedure 31 Type Definitions

4222 TYPE PARM_DATA_RCD = PACKED RECORD


4223 READ_DISABLE : SECURED_READ_REQ_BFLD;
4224 END;

4225 PROCEDURE 31 STOP_SECURED_REGISTER_PROC


4226 REQUEST = PARM_DATA_RCD
4227 RESPONSE = RESP_DATA_RCD;

4228 Procedure 31 Element Descriptions

4229 Identifier Value Definition


4230 SECURED_READ_REQ_BFLD Bit field used to indicate the secured read related operations
4231 parameters being disabled. Redefines:
4232 START_SECURED_REGISTER_PROC.
4233 SECURED_READ_REQ_BFLD.
4234 SECURED_REGISTER_FLAG
4235 FALSE The operational state of the secured register read is left
4236 unchanged.
4237 TRUE Stop secured read operations.

4238 DATA_FREEZE_FLAG FALSE The operational state of the data freeze is left unchanged.
4239 TRUE Unfreeze all volatile End Device data values.

4240 PARM_DATA_RCD
4241 READ_DISABLE See request SECURED_READ_REQ_BFLD.

94
DRAFT ANSI C12.19-2012

4242 SECURED_READ_RESP_BFLD Bit field used to indicate the secured read related operations
4243 completion status.
4244 Redefines: SECURED_READ_REQ_BFLD.

4245 SECURED_REGISTER_FLAG
4246 FALSE Secured read Event Logging is disabled.
4247 TRUE Secured read Event Logging is enabled.

4248 DATA_FREEZE_FLAG FALSE End Device Table data not frozen (the End Device shall report
4249 real-time data values).
4250 TRUE End Device Table data copy is frozen (the End Device shall
4251 continue normal data processing in the background to prevent
4252 loss of data).

4253 RESP_DATA_RCD Procedure response data.


4254 Redefines: START_SECURED_REGISTER_PROC.
4255 PARM_DATA_RCD.

4256 READ_ENABLE See response SECURED_READ_RESP_BFLD.

4257 SECURED_READ_MAX The total number of Event Log entries created to report the
4258 secured read events since the last initiation of the Stop
4259 Secured Register procedure in Event Log Data Table
4260 (Table 76).
4261 0 No events recorded.
4262 1..65535 The actual number of secured register reading events recorded.

4263 9.1.10.33 Procedure 32 Set Precision Date and/or Time

4264 Procedure 32 Data Description

4265 This procedure is used to set the date and/or time in the End Device with higher precision than that provided by
4266 Procedure 10, SET_DATE_TIME_PROC. It is important to note that the new date-time field within this procedure
4267 REQUEST (DATE_TIME) can be transported using a different time reference (End Device operational time,
4268 Standard time, or UTC) from the one published by the Clock Table (Table 52), Clock State Table (Table 55), or
4269 Precision Clock State Table (Table 57). See the introduction of Decade 5 for more information.

4270 Procedure 32 Type Definitions

4271 TYPE PARM_DATA_RCD = PACKED RECORD


4272 SET_MASK : SET_DATE_TIME_PROC.SET_MASK_BFLD;
4273 DATE_TIME : HTIME_DATE;
4274 TIME_DATE_QUAL : SET_DATE_TIME_PROC.TIME_DATE_QUAL_BFLD;
4275 END;

4276 TYPE RESP_DATA_RCD = PACKED RECORD


4277 DEV_DATE_TIME_BEFORE : HTIME_DATE;
4278 DEV_DATE_TIME_AFTER : HTIME_DATE;
4279 END;

4280 PROCEDURE 32 SET_HTIME_DATE_PROC


4281 REQUEST = PARM_DATA_RCD;
4282 RESPONSE = RESP_DATA_RCD;

4283 Procedure 32 Element Descriptions


Tables / Decade 0: General Configuration Tables 95
Standard Procedures
DRAFT ANSI C12.19-2012

4284 Identifier Value Definition


4285 PARM_DATA_RCD
4286 SET_MASK Bit mask denotes the actions to perform. See
4287 SET_DATE_TIME_PROC.SET_MASK_BFLD

4288 DATE_TIME New date and time.

4289 TIME_DATE_QUAL See


4290 SET_DATE_TIME_PROC.TIME_DATE_QUAL_BFLD.

4291 RESP_DATA_RCD
4292 DEV_DATE_TIME_BEFORE Date and time in the End Device just before set-date-time
4293 procedure was executed. This field is transported according to
4294 TIME_DATE_QUAL found in any one of the Clock Table
4295 (Table 52), Clock State Table (Table 55), or Precision Clock
4296 State Table (Table 57).

4297 DEV_DATE_TIME_AFTER Date and time in the End Device just after set-date-time
4298 procedure was executed. This field is transported according to
4299 TIME_DATE_QUAL in any one of the Clock Table
4300 (Table 52), Clock State Table (Table 55), or Precision Clock
4301 State Table (Table 57).

96
DRAFT ANSI C12.19-2012

4302 9.2 Decade 1: Data Source Tables

4303 Decade 1 Name

4304 DATA_SOURCE_DEC

4305 Decade 1 Data Description

4306 The role of a Data Sources is to provide information about the different measurements supported by the End Device
4307 such as the Unit Of Measure, accountability, scalars, and to allow control and configuration of these measurements.

4308 See Annex K, “(informative) Algorithms for the conversion of Table Element values to engineering units”, for
4309 details on possible algorithms for computing Metering Data.

4310

Tables / Decade 1: Data Source Tables 97


DRAFT ANSI C12.19-2012

4311 9.2.1 Table 10 Data Source Dimension Limits Table

4312 Table 10 Data Description

4313 DIM_SOURCES_LIM_TBL (Table 10) contains maximum dimensions and End Device capabilities for
4314 establishing data sources.

4315 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

4316 Table 10 Type Definitions

4317 TYPE SOURCE_FLAGS_BFLD = BIT FIELD OF UINT8


4318 PF_EXCLUDE_FLAG : BOOL(0);
4319 RESET_EXCLUDE_FLAG : BOOL(1);
4320 BLOCK_DEMAND_FLAG : BOOL(2);
4321 SLIDING_DEMAND_FLAG : BOOL(3);
4322 THERMAL_DEMAND_FLAG : BOOL(4);
4323 SET1_PRESENT_FLAG : BOOL(5);
4324 SET2_PRESENT_FLAG : BOOL(6);
4325 IF GEN_CONFIG_TBL.STD_VERSION_NO < 2 THEN
4326 FILLER : FILL(7..7);
4327 ELSE
4328 CONVERSION_ALG_FLAG : BOOL(7);
4329 END;
4330 END;

4331 TYPE SOURCE_RCD = PACKED RECORD


4332 SOURCE_FLAGS : SOURCE_FLAGS_BFLD;
4333 NBR_UOM_ENTRIES : UINT8;
4334 NBR_DEMAND_CTRL_ENTRIES : UINT8;
4335 DATA_CTRL_LENGTH : UINT8;
4336 NBR_DATA_CTRL_ENTRIES : UINT8;
4337 NBR_CONSTANTS_ENTRIES : UINT8;
4338 CONSTANTS_SELECTOR : UINT8;
4339 NBR_SOURCES : UINT8;
4340 END;

4341 TABLE 10 DIM_SOURCES_LIM_TBL = SOURCE_RCD;

4342 Table 10 Element Descriptions

4343 Identifier Value Definition


4344 SOURCE_FLAGS_BFLD
4345 PF_EXCLUDE_FLAG Power fail exclusion is defined as ignoring demand for
4346 maximum calculations for some period immediately after a
4347 power failure.
4348 FALSE End Device is not capable of power fail exclusion.
4349 TRUE End Device is capable of power fail exclusion.

4350 RESET_EXCLUDE_FLAG Reset exclusion is defined as inhibiting demand reset for some
4351 period after a reset.
4352 FALSE Reset exclusion is not supported by the End Device.
4353 TRUE Reset exclusion is supported by the End Device.

98
DRAFT ANSI C12.19-2012

4354 BLOCK_DEMAND_FLAG FALSE Block demand is not supported by the End Device.
4355 TRUE Block demand is supported by the End Device.

4356 SLIDING_DEMAND_FLAG
4357 FALSE Sliding demand is not supported by the End Device.
4358 TRUE Sliding demand is supported by the End Device.

4359 THERMAL_DEMAND_FLAG FALSE Thermal demand is not supported by the End Device.
4360 TRUE Thermal demand is supported by the End Device.

4361 SET1_PRESENT_FLAG FALSE The End Device does not support the first set of optional
4362 constants in the electric record of the CONSTANTS_TBL
4363 (Table 15).
4364 TRUE The End Device does support the first set of optional constants
4365 in the electric record of the CONSTANTS_TBL (Table 15).

4366 SET2_PRESENT_FLAG FALSE The End Device does not support the second set of optional
4367 constants in the electric record of the CONSTANTS_TBL
4368 (Table 15).
4369 TRUE The End Device does support the second set of optional
4370 constants in the electric record of the CONSTANTS_TBL
4371 (Table 15).

4372 CONVERSION_ALG_FLAG
4373 FALSE The algorithm used for the conversion of measurements to
4374 engineering values, based on the information contained within
4375 this Decade and as defined in Annex K, “(informative)
4376 Algorithms for the conversion of Table Element values to
4377 engineering units”, is not implemented by this End Device.
4378 TRUE The algorithm used for the conversion of measurements to
4379 engineering values, based on the information contained within
4380 this Decade and as defined in Annex K, “(informative)
4381 Algorithms for the conversion of Table Element values to
4382 engineering units”, is implemented by this End Device.

4383 SOURCE_RCD
4384 SOURCE_FLAGS Bit fields that indicate what demand and TOU register
4385 functions the End Device is capable of performing.

4386 NBR_UOM_ENTRIES 0..255 Maximum number of entries in UOM_ENTRY_TBL


4387 (Table 12).

4388 NBR_DEMAND_CTRL_ENTRIES
4389 0..255 Maximum number of entries in the
4390 DEMAND_CONTROL_TBL (Table 13).

4391 DATA_CTRL_LENGTH 0..255 Manufacturer supplied value that determines the width in
4392 Octets of an entry in the first array of the
4393 DATA_CONTROL_TBL (Table 14).

4394 NBR_DATA_CTRL_ENTRIES
4395 0..255 Maximum number of entries in the DATA_CONTROL_TBL
4396 (Table 14).

Tables / Decade 1: Data Source Tables 99


Table 10 Data Source Dimension Limits Table
DRAFT ANSI C12.19-2012

4397 NBR_CONSTANTS_ENTRIES
4398 0..255 Maximum number of entries in the CONSTANTS_TBL
4399 (Table 15).

4400 CONSTANTS_SELECTOR This value is the selector for the record structure used in the
4401 CONSTANTS_TBL (Table 15).
4402 0 GAS_CONSTANTS_AGA3_RCD data structure selected.
4403 1 GAS_CONSTANTS_AGA7_RCD data structure selected.
4404 2 ELECTRIC_CONSTANTS_RCD data structure selected.
4405 3..255 Reserved.

4406 NBR_SOURCES 0..255 Maximum number of entries in the SOURCES_TBL


4407 (Table 16).

100
DRAFT ANSI C12.19-2012

4408 9.2.2 Table 11 Actual Data Sources Limiting Table

4409 Table 11 Data Description

4410 ACT_SOURCES_LIM_TBL (Table 11) contains the actual parameters of Table 10 the End Device has been
4411 configured with.

4412 Global Default Table Property Overrides: Role=“ACTUAL”

4413 Table 11 Type Definitions

4414 TABLE 11 ACT_SOURCES_LIM_TBL = SOURCE_RCD;

4415 Table 11 Element Descriptions

4416 Identifier Value Definition


4417 SOURCE_FLAGS_BFLD Redefines:
4418 DIM_SOURCES_LIM_TBL.SOURCE_FLAGS_BFLD.

4419 PF_EXCLUDE_FLAG Power fail exclusion is defined as ignoring demand for


4420 maximum calculations for some period immediately after a
4421 power failure.
4422 FALSE Power fail exclusion is not active.
4423 TRUE Power fail exclusion is active.

4424 RESET_EXCLUDE_FLAG Reset exclusion is defined as inhibiting demand reset for some
4425 period after a reset.
4426 FALSE Reset exclusion is not in use by the End Device.
4427 TRUE Reset exclusion is in use by the End Device.

4428 BLOCK_DEMAND_FLAG FALSE Block demand is not in use by the End Device.
4429 TRUE Block demand is in use by the End Device.

4430 SLIDING_DEMAND_FLAG
4431 FALSE Sliding demand is not in use by the End Device.
4432 TRUE Sliding demand is in use by the End Device.

4433 THERMAL_DEMAND_FLAG
4434 FALSE Thermal demand is not in use by the End Device.
4435 TRUE Thermal demand is in use by the End Device.

4436 SET1_PRESENT_FLAG FALSE The End Device is not using the first set of optional constants
4437 in the electric record of the CONSTANTS_TBL (Table 15).
4438 TRUE The End Device is using the first set of optional constants in
4439 the electric record of the CONSTANTS_TBL (Table 15).

4440 SET2_PRESENT_FLAG FALSE The End Device is not using the second set of optional
4441 constants in the electric record of the CONSTANTS_TBL
4442 (Table 15).
4443 TRUE The End Device is using the second set of optional constants
4444 in the electric record of the CONSTANTS_TBL (Table 15).

Tables / Decade 1: Data Source Tables 101


Table 11 Actual Data Sources Limiting Table
DRAFT ANSI C12.19-2012

4445 CONVERSION_ALG_FLAG
4446 FALSE This field has the same meaning and shall have the same value
4447 as the corresponding field in the Data Source Dimension
4448 Limits Table (Table 10).
4449 TRUE This field has the same meaning and shall have the same value
4450 as the corresponding field in the Data Source Dimension
4451 Limits Table (Table 10).

4452 SOURCE_RCD Redefines: DIM_SOURCES_LIM_TBL. SOURCE_RCD.

4453 SOURCE_FLAGS Bit fields that indicate what demand and TOU register
4454 functions are in use by the End Device as configured.

4455 NBR_UOM_ENTRIES 0..255 Actual number of entries in the UOM_ENTRY_TBL


4456 (Table 12).

4457 NBR_DEMAND_CTRL_ENTRIES
4458 0..255 Actual number of entries in the
4459 DEMAND_CONTROL_TBL (Table 13).

4460 DATA_CTRL_LENGTH 0..255 Manufacturer-defined number of Octets in an element of the


4461 array of the DATA_CONTROL_TBL (Table 14).

4462 NBR_DATA_CTRL_ENTRIES
4463 0..255 Actual number of entries in the DATA_CONTROL_TBL
4464 (Table 14).

4465 NBR_CONSTANTS_ENTRIES
4466 0..255 Actual number of entries in the CONSTANTS_TBL
4467 (Table 15).

4468 CONSTANTS_SELECTOR This value is the selector for the record structure used in the
4469 CONSTANTS_TBL (Table 15).
4470 0 GAS_CONSTANTS_AGA3_RCD data structure selected.
4471 1 GAS_CONSTANTS_AGA7_RCD data structure selected.
4472 2 ELECTRIC_CONSTANTS_RCD data structure selected.
4473 3..255 Reserved.

4474 NBR_SOURCES 0..255 Actual number of entries in the SOURCES_TBL (Table 16).

102
DRAFT ANSI C12.19-2012

4475 9.2.3 Table 12 Units of Measure Entry Table

4476 Table 12 Data Description

4477 UOM_ENTRY_TBL (Table 12) provides a method for describing data attributes. It may be used to tag data
4478 sources. One entry exists in this Table (UOM_ENTRY_TBL) only for each entry in
4479 SOURCES_TBL.SOURCE_LINK_RCD.UOM_ENTRY_FLAG that is set to TRUE. Therefore the application
4480 has to perform a “bit” walk across all UOM_ENTRY_FLAG in SOURCES_TBL that are set to TRUE, in order to
4481 locate the related SELECTION array Element found in this Table (UOM_ENTRY_TBL).

4482 Global Default Table Property Overrides: Role=“CONTROL”

4483 Table 12 Type Definitions

4484 { Enumerator UOM_ID_CODES_ENUM }

4485 TYPE UOM_ENTRY_BFLD = BIT FIELD OF UINT32


4486 ID_CODE : UINT(0..7);
4487 TIME_BASE : UINT(8..10);
4488 MULTIPLIER : UINT(11..13);
4489 Q1_ACCOUNTABILITY : BOOL(14);
4490 Q2_ACCOUNTABILITY : BOOL(15);
4491 Q3_ACCOUNTABILITY : BOOL(16);
4492 Q4_ACCOUNTABILITY : BOOL(17);
4493 NET_FLOW_ACCOUNTABILITY : BOOL(18);
4494 SEGMENTATION : UINT(19..21);
4495 HARMONIC : BOOL(22);
4496 RESERVED : FILL(28..30);
4497 NFS : BOOL(31);
4498 ID_RESOURCE : UINT(23..27);
4499 END;

4500 TYPE UOM_ENTRY_RCD = PACKED RECORD


4501 UOM_ENTRY :
4502 ARRAY[ACT_SOURCES_LIM_TBL.
4503 NBR_UOM_ENTRIES] OF UOM_ENTRY_BFLD;
4504 END;

4505 TABLE 12 UOM_ENTRY_TBL = UOM_ENTRY_RCD;

4506 Table 12 Element Descriptions

4507 Identifier Value Definition


4508 UOM_ID_CODES_ENUM The following are the Unit of Measure codes used throughout
4509 this standard.

4510 Electric Industry units

4511 Power:

4512 0 Active power – W.


4513 1 Reactive power – VAR.

Tables / Decade 1: Data Source Tables 103


Table 12 Units of Measure Entry Table
DRAFT ANSI C12.19-2012

4514 Direct measurement, e.g., by lagging the current waveform by


4515 90˚ relative to the voltage waveform.
4516 2 Apparent power – VA, e.g., Result of IRMS x VRMS.
4517 3 Phasor power – VA = sqrt (W2+VAR2).
4518 4 Quantity power – Q(60).
4519 5 Quantity power – Q(45).
4520 6 Phasor Reactive Power – RMS.
4521 This is computed as square root (VA2 - W2), where W is
4522 associated with UOM.ID_CODE 0 and VA is associated with
4523 UOM.ID_CODE 2. This term (UOM.ID_CODE 6) includes
4524 the distortion volt-amperes quantity D defined by VA2 = W2 +
4525 VAR2 + D2.
4526 7 Distortion volt-amperes – RMS.
4527 Defined as VA2 = W2 + VAR2 + D2, where VA is selected by
4528 UOM.ID_CODE 2 (VRMS x IRMS), W is selected by
4529 UOM.ID_CODE 0 and VAR is selected by UOM.ID_CODE
4530 1. The distortion D can also be computed (when D is not
4531 reported directly by the meter via (new) UOM.ID_CODE 7)
4532 from UOM.ID_CODE 2 and UOM.ID_CODE 3 as follows:
4533 D2 = VA2 (UOM.ID_CODE 2) - VA2 (UOM.ID_CODE 3).

4534 Voltage:

4535 8 RMS Volts.


4536 9 Average Volts (average of |V|).
4537 10 RMS Volts Squared (V2RMS).
4538 11 Instantaneous volts.

4539 Current:

4540 12 RMS Amps.


4541 13 Average Current (average of |I|).
4542 14 RMS Amps Squared (I2RMS).
4543 15 Instantaneous current.

4544 Percent Total Harmonic Distortion:

4545 16 T.H.D. V (IEEE—Institute of Electrical and Electronics


4546 Engineers).
4547 17 T.H.D. I (IEEE).
4548 18 T.H.D. V (IC—Industry Canada).
4549 19 T.H.D. I (IC).

4550 Phase Angle:

4551 20 V-VA, Voltage phase angle.


4552 21 Vx-Vy, where x and y are phases defined in phase selector.
4553 22 I-VA, Current phase angle.
4554 23 Ix-Iy, where x and y are phases defined in phase selector.
4555 24 Power factor computed using apparent power,
4556 UOM.ID_CODE=2.
4557 25 Power factor computed using phasor power,
4558 UOM.ID_CODE=3.
4559 26 Average Power Factor.
104
DRAFT ANSI C12.19-2012

4560 27..28 Reserved.

4561 Time:

4562 29 Time of day.


4563 30 Date.
4564 31 Time of day and Date.
4565 32 Interval timer.
4566 33 Frequency.
4567 34 Counter.
4568 35 Sense input (TRUE/on or FALSE/off).
4569 36 Pulse output Form A. Single Pole Single Throw (SPST),
4570 Normally Open.
4571 37 Pulse output Form B. Single Pole Single Throw (SPST),
4572 Normally Closed.
4573 38 Pulse output Form C. Single Pole Double Throw (SPDT), also
4574 referred to as a changeover switch. The form C has two
4575 contacts, one that opens and one that closes.
4576 39 Zero Flow Duration (Condition which is normally timed for
4577 diagnostics).
4578 40 Voltage sag.
4579 41 Voltage swell.
4580 42 Power outage (system mains).
4581 43 Voltage excursion low.
4582 44 Voltage excursion high.
4583 45 Normal voltage level.
4584 46 Phase voltage phase imbalance.
4585 47 Voltage T.H.D. excess.
4586 48 Current T.H.D. excess.
4587 49 Power outage (End Device) device may be powered separately
4588 from power being monitored.

4589 Event Counters:

4590 50 Number of power outages.


4591 51 Number of demand resets.
4592 52 Number of times programmed.
4593 53 Number of minutes on battery carryover.
4594 54 Number of inversion tampers.
4595 55 Number of removal tampers.
4596 56 Number of reprogramming tampers.
4597 57 Number of power loss tampers.
4598 58 Number of reverse rotation tampers.
4599 59 Number of physical tampers.
4600 60 Number of encoder tampers.
4601 61 Number of watchdog timeout-recoveries the End Device has
4602 encountered.
4603 62 Number of diagnostic alarms.
4604 63 Reserved.

4605
4606

Tables / Decade 1: Data Source Tables 105


Table 12 Units of Measure Entry Table
DRAFT ANSI C12.19-2012

4607 Gas Industry units

4608 Volume:

4609 64 Cubic meter gas (volume un-corrected, meter index reading)


4610 per hour.
4611 65 Cor cubic meter gas (volume corrected to base conditions) per
4612 hour.
4613 66 Cor cubic meter gas (volume corrected to pressure base,
4614 without supercompressibility) per hour.
4615 67 Cubic feet gas (volume corrected, meter index reading) per
4616 hour.
4617 68 Cor cubic feet gas (volume corrected to base conditions) per
4618 hour.
4619 69 Pcor cubic feet gas (volume corrected to pressure base, without
4620 supercompressibility) per hour.

4621 Temperature:

4622 70 Dry bulb temp degree C.


4623 71 Wet bulb temp degree C.
4624 72 Dry bulb temp degree F.
4625 73 Wet bulb temp degree F.
4626 74 Dry bulb temp degree K.
4627 75 Wet bulb temp degree K.

4628 Energy:

4629 76 Joules per hour.


4630 77 Therm per hour.

4631 Pressure:

4632 78 Static Pascal.


4633 79 Differential Pascal.
4634 80 Static pound per square inch.
4635 81 Differential pound per square inch.
4636 82 Gram cm2.
4637 83 Meter Hg column.
4638 84 Inch Hg column.
4639 85 Inch H2O column.
4640 86 Bar.

4641 Other:

4642 87 % relative humidity.


4643 88 Parts per million odorant.
4644 89 Pounds per square inch absolute (PSIA).
4645 90 Degree rankine.
4646 91 Mole %.
4647 92 Calories.
4648 93..127 Reserved.

4649
4650
106
DRAFT ANSI C12.19-2012

4651 Water Industry units

4652 128 Cubic meter liquid per hour.


4653 129 Cubic feet liquid per hour.
4654 130 US gallons per hour.
4655 131 IMP gallons per hour.
4656 132 Acre feet per hour.
4657 133 Parts per million lead.
4658 134 Turbidity.
4659 135 Parts per million chlorine.
4660 136 PH factor.
4661 137 Corrosion.
4662 138 Ionization.
4663 139 Parts per million SO2.
4664 140 Liters.
4665 141 Cubic feet liquid.
4666 142 Pounds per sq. ft. differential.
4667 143 Inches of water.
4668 144 Feet of water.
4669 145 Atmospheres.
4670 146..189 Reserved.

4671 Generic industry units

4672 190 Local currency (e.g., $0.01).


4673 191 Inch.
4674 192 Foot.
4675 193 Meter.
4676 194 Differential value (diff val=x2-x1).
4677 195 dBm (Receive Signal Strength Indicator).
4678 196 % Capacity.
4679 197 Second(s).
4680 198 Angle in degrees.
4681 199 Frequency in Hertz (Hz).
4682 200 Bandwidth in Hertz (Hz).
4683 201..209 Reserved.

4684 HVAC Industry

4685 210 Return air temp.


4686 211 Return air flow (Cubic feet).
4687 212 Return humidity.
4688 213 Supply air temp.
4689 214 Supply air humidity.
4690 215 Discharge suction line pressure.
4691 216 Discharge line temp.
4692 217 Ambient temperature.
4693 218 Ambient humidity.
4694 219 Suction discharge line temp.
4695 220 Suction line pressure liquid line temp.
4696 221 Suction line temp.
4697 222..255 Reserved.
4698

Tables / Decade 1: Data Source Tables 107


Table 12 Units of Measure Entry Table
DRAFT ANSI C12.19-2012

4699 UOM_ENTRY_BFLD
4700 ID_CODE The UOM ID_CODE identifies the physical quantity of
4701 interest (equivalent to physical units in the field of physics as
4702 used for dimensional analysis). The standard defines entries
4703 for use by the Water, Gas, or Electrical Utilities and provides
4704 for generic entries for description of internal data items. The
4705 defined units of measure have been grouped solely for
4706 readability purposes. Note that because the unit of measure
4707 record includes a time base indicator some of the units have an
4708 extra time factor that is canceled out by the unit of measure
4709 record time base indicator. For example, ID_CODE 77,
4710 Therm per hour is actually Therm once the time base indicator
4711 is properly set. See UOM_ID_CODES_ENUM.

4712 TIME_BASE This field describes the measurement method with respect to
4713 time.
4714 0 Bulk Quantity of Commodity (Dial Reading). Quantity of
4715 commodity; integral of commodity usage rate. Values have the
4716 units stated in the ID_CODE × Hour (Energy units).
4717 1 Instantaneous (Sampled). This is the fastest rate at which a
4718 measurement is acquired.
4719 2 Period based. This is a time period based on the period of a
4720 fundamental frequency (Power, RMS).
4721 3 Sub-block Average Demand. Sub-block Average Demand
4722 values are the most recent averaging demand subinterval
4723 values (Demand).
4724 4 Block Average Demand. Block Average Demand values may
4725 be either the average over a number of Sub-block Average
4726 Demand subintervals or the average over a single interval. The
4727 averaging period is typically greater or equal to the Sub-block
4728 Average Demand period (Demand).
4729 5 Net Bulk Quantity of Commodity (Relative Dial Reading).
4730 Quantity of commodity; integral of commodity usage rate over
4731 a specified period of time T 1 to T2. T1 and T2 are quite
4732 arbitrary and defined by mechanisms and table driven
4733 schedules. Values have the units stated in the ID_CODE ×
4734 Hour, e.g., W × h = Wh (Energy)
4735 6 Thermal quantity (Demand).
4736 7 Event quantity (Number of occurrences of an identified item).

4737 MULTIPLIER The multiplier identifies the decimal scaling value to apply to
4738 the reported value after delivery to the application of all
4739 conversion constants of the tagged item; e.g., if the ID_CODE
4740 = 0 and MULTIPLIER = 2, then the UOM represents kW
4741 (Other flags are assumed to have been set accordingly and all
4742 conversions applied).
4743 0 100
4744 1 102
4745 2 103
4746 3 106
4747 4 109
4748 5 10-2
4749 6 10-3
4750 7 10-6

108
DRAFT ANSI C12.19-2012

4751 Q1_ACCOUNTABILITY Indication that tagged quantity lies in Quadrant 1 (See


4752 Quadrant definition).
4753 FALSE Tagged item is not in Quadrant 1. It shall be excluded
4754 accounting or measurement.
4755 TRUE Tagged item is in Quadrant 1. It shall be included accounting
4756 or measurement.

4757 Q2_ACCOUNTABILITY Indication that tagged quantity lies in Quadrant 2 (See


4758 Quadrant definition).
4759 FALSE Tagged item is not in Quadrant 2. It shall be excluded
4760 accounting or measurement.
4761 TRUE Tagged item is in Quadrant 2. It shall be included accounting
4762 or measurement.

4763 Q3_ACCOUNTABILITY Indication that tagged quantity lies in Quadrant 3 (See


4764 Quadrant definition).
4765 FALSE Tagged item is not in Quadrant 3. It shall be excluded
4766 accounting or measurement.
4767 TRUE Tagged item is in Quadrant 3. It shall be included accounting
4768 or measurement.

4769 Q4_ACCOUNTABILITY Indication that tagged quantity lies in Quadrant 4 (See


4770 Quadrant definition).
4771 FALSE Tagged item is not in Quadrant 4. It shall be excluded
4772 accounting or measurement.
4773 TRUE Tagged item is in Quadrant 4. It shall be included accounting
4774 or measurement.

4775 NET_FLOW_ACCOUNTABILITY This bit is required to identify the manner in which the
4776 quadrants specified are being summed.
4777 FALSE Absolute power or commodity flow per time unit delivered
4778 through selected quadrants, i.e., power or commodity per hour
4779 is added positively regardless of direction of flow, |delivered|
4780 + |received|.
4781 TRUE Net of delivered – received, where Watts are delivered in
4782 Quadrants 1 and 4, received in Quadrants 2 and 3, and VARs
4783 are delivered in Quadrants 1 and 2, received in Quadrants 3
4784 and 4. Other commodities, e.g., Water in gallons per time unit
4785 are delivered in 1 and received in Quadrant 2. Note that
4786 Electricity must be measured by vectorial summation,
4787 requiring the use of all four (4) quadrants, 1 through 4.
4788 Commodity measurement such as water and gas require only
4789 two accumulators to segregate delivered and received
4790 amounts. To utilize the accountability tools available,
4791 commodities such as water and gas are assigned to 1 and 2
4792 (describing 0 to 180 degrees) for delivered and received
4793 quantities per time unit, respectively.

4794 SEGMENTATION When the ID_CODE field represents the electric utility
4795 industry unit of measures, this bit indicates phase
4796 measurement associations.
4797 When the ID_CODE does not represent an electric utility unit
4798 of measure, then this field represents an as yet to be defined
4799 quantity, except for the value 0, which stands for all sources
4800 and flows. In this case, the value should be set to zero.
Tables / Decade 1: Data Source Tables 109
Table 12 Units of Measure Entry Table
DRAFT ANSI C12.19-2012

4801 0 Measurement is not a phase related or no phase information is


4802 applicable. e.g., All phases on a polyphase End Device.
4803 1 Phase A to B. i.e., A-B.
4804 2 Phase B to C. i.e., B-C.
4805 3 Phase C to A. i.e., C-A.
4806 4 Neutral to ground, or no phase information. e.g., Neutral
4807 current in a 4Y wire system.
4808 5 Phase A to Neutral. i.e., A-N.
4809 6 Phase B to Neutral. i.e., B-N.
4810 7 Phase C to Neutral. i.e., C-N.

4811 HARMONIC This identifies harmonic-related quantities.


4812 FALSE The identified ID_CODE is the entire signal unfiltered.
4813 TRUE The identified ID_CODE is a harmonic component of an
4814 associated source.

4815 RESERVED Reserved.


4816 Note that this Element should not be referenced since it may
4817 return nonzero values, because it overlaps with
4818 ID_RESOURCE. It is presented here solely for backward
4819 compatibility with the index and element names of
4820 ANSI C12.19-1997.

4821 NFS Not Fully Supported: Bit used to indicate that this unit of
4822 measure entry does not follow the unit of measure definition
4823 in some manner.
4824 FALSE This unit of measure entry description follows the unit of
4825 measure definitions defined in this standard.
4826 TRUE This unit of measure entry description does not follow the unit
4827 of measure definitions defined in this standard.

4828 ID_RESOURCE A descriptive code identifying to the reader the resource used
4829 to generated the commodity selected by ID_CODE. This field
4830 was specifically requested by the REA Research Institute for
4831 the express desire to tabulate “Green Power”. The metering
4832 and instrumentation utilizing this UOM is not limited to but
4833 intended to be used for the generation facilities of the
4834 interested region or power system.
4835 0 Unspecified or unknown resource.
4836 1 Green Source.
4837 2 Nuclear, U235 fission.
4838 3 Nuclear, U238 breeder.
4839 4 Hydro.
4840 5 Hydro-pump storage.
4841 6 Coal fired fossil.
4842 7 Natural gas turbine.
4843 8 MSW (Municipal Solid Waste) gasification Methane turbine.
4844 9 Animal waste gasification Methane turbine.
4845 10 Coal gasification Methane turbine.
4846 11 Wind horizontal vanes.
4847 12 Wind vertical vanes.
4848 13 Solar electric-panels.
4849 14 Solar steam turbines.
4850 15 Ethanol engine generation.
4851 16 Bio-diesel fuel engine generation.
110
DRAFT ANSI C12.19-2012

4852 17 Automobile tire reclaimed diesel engine generation.


4853 18 Geothermal steam turbine.
4854 19 Hydro-tidal storage generation.
4855 20 Wave action generation.
4856 21 Fuel cells.
4857 22 Plug In Hybrid Electric Vehicle.
4858 23 Plant Biomass methane gasification Methane turbine.
4859 24..31 Reserved.

4860 UOM_ENTRY_RCD
4861 UOM_ENTRY Each of the entries in this array is associated with an entry in the
4862 SOURCES_TBL (Table 16). This array contains one entry for
4863 each SOURCES_TBL (Table 16) entry having the
4864 UOM_ENTRY_FLAG set. The order of the parameters in this
4865 array corresponds to the order of the sources in table
4866 SOURCES_TBL (Table 16).

Tables / Decade 1: Data Source Tables 111


Table 12 Units of Measure Entry Table
DRAFT ANSI C12.19-2012

4867 9.2.4 Table 13 Demand Control Table

4868 Table 13 Data Description

4869 DEMAND_CONTROL_TBL (Table 13) contains information pertaining to the application of rates and global rate
4870 controls.

4871 Global Default Table Property Overrides: Role=“CONTROL”

4872 Table 13 Type Definitions

4873 TYPE INT_CONTROL_RCD = PACKED RECORD


4874 IF ACT_SOURCES_LIM_TBL.SLIDING_DEMAND_FLAG THEN
4875 SUB_INT : UINT8;
4876 INT_MULTIPLIER : UINT8;
4877 ELSE
4878 INT_LENGTH : UINT16;
4879 END;
4880 END;

4881 TYPE DEMAND_CONTROL_RCD = PACKED RECORD


4882 IF ACT_SOURCES_LIM_TBL.RESET_EXCLUDE_FLAG THEN
4883 RESET_EXCLUSION : UINT8;
4884 END;
4885 IF ACT_SOURCES_LIM_TBL.PF_EXCLUDE_FLAG THEN
4886 P_FAIL_RECOGNTN_TM : UINT8;
4887 P_FAIL_EXCLUSION : UINT8;
4888 COLD_LOAD_PICKUP : UINT8;
4889 END;
4890 INTERVAL_VALUE :
4891 ARRAY[ACT_SOURCES_LIM_TBL.
4892 NBR_DEMAND_CTRL_ENTRIES] OF
4893 INT_CONTROL_RCD;
4894 END;

4895 TABLE 13 DEMAND_CONTROL_TBL = DEMAND_CONTROL_RCD;

4896 Table 13 Element Descriptions

4897 Identifier Value Definition


4898 INT_CONTROL_RCD
4899 SUB_INT 0..255 The number of minutes in the subinterval.

4900 INT_MULTIPLIER 0..255 The multiplier by which the SUB_INT is multiplied.

4901 INT_LENGTH 0..65535 The length of the demand interval in minutes.

4902 DEMAND_CONTROL_RCD
4903 RESET_EXCLUSION 0..255 Number of minutes after demand reset to exclude additional
4904 reset action.

4905 P_FAIL_RECOGNTN_TM 0..255 Number of seconds after a power failure occurs until a valid
4906 power failure is recorded and a specified action is initiated.
112
DRAFT ANSI C12.19-2012

4907 P_FAIL_EXCLUSION 0..255 Number of minutes after a valid power failure occurs to inhibit
4908 demand calculations.

4909 COLD_LOAD_PICKUP 0..255 Number of minutes after a valid power failure occurs to
4910 provide cold load pickup functions.

4911 INTERVAL_VALUE Each of the entries in this array is associated with an entry in
4912 the SOURCES_TBL (Table 16). This array contains one
4913 entry for each SOURCES_TBL (Table 16) entry having the
4914 DEMAND_CTRL_FLAG set. The order of the parameters in
4915 this array corresponds to the order of the sources in table
4916 SOURCES_TBL (Table 16).

Tables / Decade 1: Data Source Tables 113


Table 13 Demand Control Table
DRAFT ANSI C12.19-2012

4917 9.2.5 Table 14 Data Control Table

4918 Table 14 Data Description

4919 DATA_CONTROL_TBL (Table 14) contains the data source information that serves as data input sources for the
4920 following tables. This table serves as an interface between areas of the End Device considered manufacturer specific
4921 and areas of the End Device considered to be standardized.

4922 Each entry in the table is manufacturer defined. Examples of entries into this table are as follows: entry contains
4923 address of data to be processed, or entry contains data to be processed.

4924 Global Default Table Property Overrides: Role=“CONTROL”

4925 Table 14 Type Definitions

4926 TYPE DATA_RCD = PACKED RECORD


4927 SOURCE_ID :
4928 BINARY(ACT_SOURCES_LIM_TBL.
4929 DATA_CTRL_LENGTH);
4930 END;

4931 TYPE DATA_CONTROL_RCD = PACKED RECORD


4932 SOURCES_ID :
4933 ARRAY[ACT_SOURCES_LIM_TBL.
4934 NBR_DATA_CTRL_ENTRIES] OF DATA_RCD;
4935 END;

4936 TABLE 14 DATA_CONTROL_TBL = DATA_CONTROL_RCD;

4937 Table 14 Element Descriptions

4938 Identifier Value Definition


4939 DATA_RCD
4940 SOURCE_ID Each entry is defined by the manufacturer as to length and
4941 content. The length is identical for all entries.

4942 DATA_CONTROL_RCD
4943 SOURCES_ID Each of the entries in this array is associated with an entry in
4944 the SOURCES_TBL (Table 16). This array contains one
4945 entry for each SOURCES_TBL (Table 16) entry having the
4946 DATA_CTRL_FLAG set. The order of the parameters in this
4947 array corresponds to the order of the sources in table
4948 SOURCES_TBL (Table 16).

114
DRAFT ANSI C12.19-2012

4949 9.2.6 Table 15 Constants Table

4950 Table 15 Data Description

4951 CONSTANTS_TBL (Table 15) contains the record structures supporting constants for application to the sources.
4952 This table has been designed for easy inclusion of new constants structures.

4953 Global Default Table Property Overrides: Role=“CONTROL”

4954 Table 15 Type Definitions

4955 TYPE GAS_PRESS_RCD = PACKED RECORD


4956 GAS_PRESS_ZERO : NI_FMAT2;
4957 GAS_PRESS_FULLSCALE : NI_FMAT2;
4958 BASE_PRESSURE : NI_FMAT2;
4959 END;

4960 TYPE GAS_TEMP_RCD = PACKED RECORD


4961 GAS_TEMP_ZERO : NI_FMAT2;
4962 GAS_TEMP_FULLSCALE : NI_FMAT2;
4963 BASE_TEMP : NI_FMAT2;
4964 END;

4965 TYPE GAS_DP_RCD = PACKED RECORD


4966 GAS_DP_ZERO : NI_FMAT2;
4967 GAS_DP_FULLSCALE : NI_FMAT2;
4968 END;

4969 TYPE PIPE_ORIF_DIA_RCD = PACKED RECORD


4970 PIPE_DIA : NI_FMAT2;
4971 ORIF_DIA : NI_FMAT2;
4972 END;

4973 TYPE GAS_AGA3_CORR_RCD = PACKED RECORD


4974 AUX_CORR_FCTR : NI_FMAT2;
4975 GAS_AGA3_CORR_FCTR : NI_FMAT2;
4976 PIPE_ORIF_DIA : PIPE_ORIF_DIA_RCD;
4977 TAP_UP_DN : UINT8;
4978 GAS_PRESS_PARM : GAS_PRESS_RCD;
4979 GAS_TEMP_PARM : GAS_TEMP_RCD;
4980 END;

4981 TYPE GAS_AGA7_CORR_RCD = PACKED RECORD


4982 GAS_PRESS_PARM : GAS_PRESS_RCD;
4983 GAS_TEMP_PARM : GAS_TEMP_RCD;
4984 AUX_CORR_FCTR : NI_FMAT2;
4985 GAS_AGA7_CORR : NI_FMAT2;
4986 END;

4987 TYPE GAS_ENERGY_RCD = PACKED RECORD


4988 GAS_ENERGY_ZERO : NI_FMAT2;
4989 GAS_ENERGY_FULL : NI_FMAT2;
4990 END;

Tables / Decade 1: Data Source Tables 115


Table 15 Constants Table
DRAFT ANSI C12.19-2012

4991 TYPE GAS_DP_SHUTOFF_RCD = PACKED RECORD


4992 GAS_SHUTOFF : NI_FMAT2;
4993 END;

4994 TYPE GAS_CONSTANTS_AGA3_RCD = PACKED RECORD


4995 GAS_DP_PARM : GAS_DP_RCD;
4996 GAS_DP_SHUTOFF : GAS_DP_SHUTOFF_RCD;
4997 GAS_PRESS_PARM : GAS_PRESS_RCD;
4998 GAS_AGA3_CORR : GAS_AGA3_CORR_RCD;
4999 GAS_ENERGY : GAS_ENERGY_RCD;
5000 END;

5001 TYPE GAS_CONSTANTS_AGA7_RCD = PACKED RECORD


5002 GAS_AGA7_CORR : GAS_AGA7_CORR_RCD;
5003 GAS_ENERGY : GAS_ENERGY_RCD;
5004 END;

5005 TYPE SET_CTRL_BFLD = BIT FIELD OF UINT8


5006 SET_APPLIED_FLAG : BOOL(0);
5007 FILLER : FILL(1..7);
5008 END;

5009 TYPE SET_APPLIED_RCD = PACKED RECORD


5010 SET_FLAGS : SET_CTRL_BFLD;
5011 RATIO_F1 : NI_FMAT1;
5012 RATIO_P1 : NI_FMAT1;
5013 END;

5014 TYPE ELECTRIC_CONSTANTS_RCD = PACKED RECORD


5015 MULTIPLIER : NI_FMAT1;
5016 OFFSET : NI_FMAT1;

5017 IF ACT_SOURCES_LIM_TBL.SET1_PRESENT_FLAG THEN


5018 SET1_CONSTANTS : SET_APPLIED_RCD;
5019 END;
5020 IF ACT_SOURCES_LIM_TBL.SET2_PRESENT_FLAG THEN
5021 SET2_CONSTANTS : SET_APPLIED_RCD;
5022 END;
5023 END;

5024 TYPE GENERIC_CONSTANTS_RCD = PACKED RECORD


5025 MULTIPLIER : NI_FMAT1;
5026 DIVISOR : NI_FMAT1;
5027 OFFSET : NI_FMAT1;

5028 IF ACT_SOURCES_LIM_TBL.SET1_PRESENT_FLAG THEN


5029 SET1_CONSTANTS : SET_APPLIED_RCD;
5030 END;
5031 IF ACT_SOURCES_LIM_TBL.SET2_PRESENT_FLAG THEN
5032 SET2_CONSTANTS : SET_APPLIED_RCD;
5033 END;
5034 END;

5035 TYPE CONSTANTS_RCD = PACKED RECORD


5036 SWITCH ACT_SOURCES_LIM_TBL.CONSTANTS_SELECTOR OF

116
DRAFT ANSI C12.19-2012

5037 CASE 0 : GAS_CONSTANTS_AGA3 : GAS_CONSTANTS_AGA3_RCD;


5038 CASE 1 : GAS_CONSTANTS_AGA7 : GAS_CONSTANTS_AGA7_RCD;
5039 CASE 2 : ELECTRIC_CONSTANTS : ELECTRIC_CONSTANTS_RCD;
5040 CASE 3 : GENERIC_CONSTANTS : GENERIC_CONSTANTS_RCD;
5041 CASE 4..255 : RESERVED : NIL;
5042 END;
5043 END;

5044 TYPE CONSTANT_SELECTION_RCD = PACKED RECORD


5045 SELECTION :
5046 ARRAY[ACT_SOURCES_LIM_TBL.
5047 NBR_CONSTANTS_ENTRIES] OF CONSTANTS_RCD;
5048 END;

5049 TABLE 15 CONSTANTS_TBL = CONSTANT_SELECTION_RCD;

5050 Table 15 Element Descriptions

5051 Identifier Value Definition


5052 GAS_PRESS_RCD
5053 GAS_PRESS_ZERO Flow pressure calibration, zero offset.

5054 GAS_PRESS_FULLSCALE Flow pressure calibration, full scale.

5055 BASE_PRESSURE Pressure for base condition. This value is absolute base
5056 pressure.

5057 GAS_TEMP_RCD
5058 GAS_TEMP_ZERO Flow temperature calibration, zero offset.

5059 GAS_TEMP_FULLSCALE Flow temperature calibration, full scale.

5060 BASE_TEMP Temperature for base condition.

5061 GAS_DP_RCD
5062 GAS_DP_ZERO Flow Differential pressure calibration, zero offset (used for
5063 AGA 3 only).

5064 GAS_DP_FULLSCALE Flow Differential pressure calibration, full scale (used for
5065 AGA 3 only).

5066 PIPE_ORIF_DIA_RCD
5067 PIPE_DIA The pipe diameter of an orifice meter (used for AGA 3 only).

5068 ORIF_DIA The orifice diameter of an orifice meter (used for AGA 3
5069 only).

5070 GAS_AGA3_CORR_RCD
5071 AUX_CORR_FCTR Factor to provide other possible correction to the gas corrected
5072 volume.

5073 GAS_AGA3_CORR_FCTR Factor is used to correct the uncorrected gas volume using
5074 AGA3 (used for AGA3 only).

Tables / Decade 1: Data Source Tables 117


Table 15 Constants Table
DRAFT ANSI C12.19-2012

5075 PIPE_ORIF_DIA Record structure from above.

5076 TAP_UP_DN Tap configuration (used for AGA3 only).


5077 0 No tap or flange.
5078 1 Upstream flange.
5079 2 Downstream flange.
5080 3 Upstream pipe.
5081 4 Downstream pipe.
5082 5..255 Reserved.

5083 GAS_PRESS_PARM Refer to GAS_PRESS_RCD.

5084 GAS_TEMP_PARM Refer to GAS_TEMP_RCD.

5085 GAS_AGA7_CORR_RCD
5086 GAS_PRESS_PARM Refer to GAS_PRESS_RCD.

5087 GAS_TEMP_PARM Refer to GAS_TEMP_RCD.

5088 AUX_CORR_FCTR Factor to provide other possible correction to the gas corrected
5089 volume.

5090 GAS_AGA7_CORR Factor is used to correct the uncorrected gas volume using
5091 AGA7 (used for AGA7 only).

5092 GAS_ENERGY_RCD
5093 GAS_ENERGY_ZERO Energy calibration, zero offset.

5094 GAS_ENERGY_FULL Energy calibration, full scale.

5095 GAS_DP_SHUTOFF_RCD
5096 GAS_SHUTOFF This parameter is used to disable the AGA3 flow calculations
5097 when differential pressure is below the value indicated by this
5098 parameter (used for AGA 3 only).

5099 GAS_CONSTANTS_AGA3_RCD When Constants selector is 0.

5100 GAS_DP_PARM Refer to GAS_DP_RCD.

5101 GAS_DP_SHUTOFF Refer to GAS_DP_SHUTOFF_RCD.

5102 GAS_PRESS_PARM Refer to GAS_PRESS_RCD.

5103 GAS_AGA3_CORR Refer to GAS_AGA3_CORR_RCD.

5104 GAS_ENERGY Refer to GAS_ENERGY_RCD.

5105 GAS_CONSTANTS_AGA7_RCD When Constants selector is 1.

5106 GAS_AGA7_CORR Refer to GAS_AGA7_CORR_RCD.

5107 GAS_ENERGY Refer to GAS_ENERGY_RCD.

5108 SET_CTRL_BFLD When Constants selector is 2.


118
DRAFT ANSI C12.19-2012

5109 SET_APPLIED_FLAG FALSE The RATIO_P1 and RATIO_F1 represented by this flag
5110 have not been applied to the associated source.
5111 TRUE The RATIO_P1 and RATIO_F1 represented by this flag
5112 have been applied to the associated source.

5113 SET_APPLIED_RCD
5114 SET_FLAGS See SET_CTRL_BFLD above.

5115 RATIO_F1 Ratio of intermediary device to allow interface of commodity


5116 flow to utility meters. For example, electric utilities use a
5117 current transformer to reduce the current at the meter.
5118 Transforming 2000 amps to 5 amps is a ratio of 400.

5119 RATIO_P1 Ratio of intermediary device to allow interface of commodity


5120 pressure to utility meters. For example, electric utilities use a
5121 voltage transformer to reduce the voltage at the meter.
5122 Transforming 7200 volts to 120 volts is a ratio of 60.

5123 ELECTRIC_CONSTANTS_RCD Offsets, multipliers, and divisors that were applied (or need to
5124 be applied) in order to convert raw End Device Table Element
5125 values to engineering units. MULTIPLIER and OFFSET
5126 shall be applied if the corresponding
5127 CONSTANT_TO_BE_APPLIED that is found in
5128 SOURCES_TBL.SOURCE_LINK_BFLD is set to TRUE.

5129 MULTIPLIER Final Element value used in multiplication/division


5130 adjustment. This multiplier shall be applied before OFFSET.

5131 OFFSET Final Element value used in addition/subtraction adjustment.


5132 This Element shall be applied after MULTIPLIER.

5133 SET1_CONSTANTS Conditional conversion ratios that were applied (or need to be
5134 applied) immediately after the application of MULTIPLIER
5135 and OFFSET Final Elements.

5136 This Element is associated with the intermediary device that is


5137 closest to the End Device or embedded within the End Device.

5138 SET2_CONSTANTS Conditional conversion ratios that were applied (or need to be
5139 applied) immediately after the application of
5140 SET1_CONSTANTS Elements.

5141 This Element is associated with the intermediary device that is


5142 next in proximity to the End Device relative to the
5143 intermediary device that is scaled by the
5144 SET1_CONSTANTS Element.

5145 GENERIC_CONSTANTS_RCD Offsets, multipliers, and divisors that were applied (or need to
5146 be applied) in order to convert raw End Device Table Element
5147 values to engineering units. MULTIPLIER, DIVISOR, and
5148 OFFSET shall be applied if the corresponding
5149 CONSTANT_TO_BE_APPLIED that is found in
5150 SOURCES_TBL.SOURCE_LINK_BFLD is set to TRUE.

Tables / Decade 1: Data Source Tables 119


Table 15 Constants Table
DRAFT ANSI C12.19-2012

5151 MULTIPLIER Final Element value used in multiplication adjustment. This


5152 multiplier shall be applied before OFFSET.

5153 DIVISOR Final Element value used in division adjustment. This divisor
5154 shall be applied before OFFSET and after the
5155 MULTIPLIER.

5156 OFFSET Final Element value used in addition/subtraction adjustment.


5157 This Element shall be applied after MULTIPLIER.

5158 SET1_CONSTANTS Conditional conversion ratios that were applied (or need to be
5159 applied) immediately after the application of MULTIPLIER,
5160 DIVISOR, and OFFSET Final Elements.

5161 This Element is associated with the intermediary device that is


5162 closest to the End Device or embedded within the End Device.

5163 SET2_CONSTANTS Conditional conversion ratios that were applied (or need to be
5164 applied) immediately after the application of
5165 SET1_CONSTANTS Elements.

5166 This Element is associated with the intermediary device that is


5167 next in proximity to the End Device relative to the
5168 intermediary device that is scaled by the
5169 SET1_CONSTANTS Element.

5170 CONSTANTS_RCD Structure that selects the constant record structure to use.

5171 GAS_CONSTANTS_AGA3 See GAS_CONSTANTS_AGA3_RCD.

5172 GAS_CONSTANTS_AGA7 See GAS_CONSTANTS_AGA7_RCD.

5173 ELECTRIC_CONSTANTS See ELECTRIC_CONSTANTS_RCD.

5174 GENERIC_CONSTANTS See GENERIC_CONSTANTS_RCD.

5175 CONSTANT_SELECTION_RCD
5176 SELECTION Each of the entries in this array is associated with an entry in
5177 the SOURCES_TBL (Table 16). This array contains one
5178 entry for each SOURCES_TBL (Table 16) entry having the
5179 CONSTANTS_FLAG set. The order of the parameters in this
5180 array corresponds to the order of the sources in table
5181 SOURCES_TBL (Table 16).

120
DRAFT ANSI C12.19-2012

5182 9.2.7 Table 16 Source Definition Table

5183 Table 16 Data Description

5184 SOURCES_TBL (Table 16) contains the information regarding the sources selected by the other tables.

5185 Global Default Table Property Overrides: Role=“CONTROL”

5186 Table 16 Type Definitions

5187 TYPE SOURCE_LINK_BFLD = BIT FIELD OF UINT8


5188 UOM_ENTRY_FLAG : BOOL(0);
5189 DEMAND_CTRL_FLAG : BOOL(1);
5190 DATA_CTRL_FLAG : BOOL(2);
5191 CONSTANTS_FLAG : BOOL(3);
5192 PULSE_ENGR_FLAG : BOOL(4);
5193 CONSTANT_TO_BE_APPLIED : BOOL(5);
5194 FILLER : FILL(6..7);
5195 END;

5196 TYPE SOURCE_LINK_RCD = PACKED RECORD


5197 SOURCES_LINK :
5198 ARRAY[ACT_SOURCES_LIM_TBL.NBR_SOURCES]
5199 OF SOURCE_LINK_BFLD;
5200 END;

5201 TABLE 16 SOURCES_TBL = SOURCE_LINK_RCD;

5202 Table 16 Element Descriptions

5203 Identifier Value Definition


5204 SOURCE_LINK_BFLD
5205 UOM_ENTRY_FLAG FALSE A UOM_ENTRY_TBL (Table 12) entry does not exist for
5206 this source.
5207 TRUE A UOM_ENTRY_TBL (Table 12) entry is associated with
5208 this source.

5209 DEMAND_CTRL_FLAG FALSE A DEMAND_CONTROL_TBL (Table 13) entry does not


5210 exist for this source.
5211 TRUE A DEMAND_CONTROL_TBL (Table 13) entry is
5212 associated with this source.

5213 DATA_CTRL_FLAG FALSE A DATA_CONTROL_TBL (Table 14) entry does not exist
5214 for this source.
5215 TRUE A DATA_CONTROL_TBL (Table 14) entry is associated
5216 with this source.

5217 CONSTANTS_FLAG FALSE A CONSTANTS_TBL (Table 15) entry does not exist for this
5218 source.
5219 TRUE A CONSTANTS_TBL (Table 15) entry is associated with
5220 this source.

Tables / Decade 1: Data Source Tables 121


Table 16 Source Definition Table
DRAFT ANSI C12.19-2012

5221 PULSE_ENGR_FLAG This Final Element is just a source descriptor. It is provided


5222 solely for information purposes. The conversion algorithm
5223 from raw Table values to final usable engineering values does
5224 not depend on the state of the PULSE_ENGR_FLAG being
5225 TRUE or FALSE.
5226 FALSE The source is in pulse units.
5227 TRUE The source is in engineering units.

5228 CONSTANT_TO_BE_APPLIED This flag affects the use of the MULTIPLIER and OFFSET
5229 Elements of
5230 CONSTANTS_TBL.ELECTRIC_CONSTANTS_RCD.
5231 Otherwise this flag has no effect.
5232 FALSE The entry in the CONSTANTS_TBL (Table 15), if present,
5233 does not have to be applied by the Utility application. The
5234 constants have been applied by the End Device to the source
5235 prior to transmission.
5236 TRUE The entry in the CONSTANTS_TBL (Table 15), if present,
5237 have to be applied by the Utility application. The constants
5238 were not applied by the End Device to the source prior to
5239 transmission.

5240 SOURCE_LINK_RCD
5241 SOURCES_LINK An array that contains the source attributes per
5242 SOURCE_LINK_BFLD for each of the available data
5243 sources.

122
DRAFT ANSI C12.19-2012

5244 9.2.8 Table 17 Transformer Loss Compensation Table

5245 Table 17 Data Description

5246 TLC_TBL (Table 17) provides the electrical End Device with information for accounting for transformer-related
5247 losses. This table shows total no-load losses and load losses calculated by the End Device. It also contains the Watt
5248 losses and VAR losses constants. See Annex F, “(informative) Transformer losses compensation”, for a detailed
5249 discussion on the implementation model assumed by this standard.

5250 Global Default Table Property Overrides: Role=“CONTROL”

5251 Table 17 Type Definitions

5252 TYPE TLC_COEFFICIENTS_RCD = PACKED RECORD


5253 KWCU : NI_FMAT1;
5254 KVCU : NI_FMAT1;
5255 KWFE : NI_FMAT1;
5256 KVFE : NI_FMAT1;
5257 DELIVERED_PCT : UINT8;
5258 RECEIVED_PCT : UINT8;
5259 END;

5260 TYPE TLC_INFORMATION_RCD = PACKED RECORD


5261 DELIVERED_WATT_CU : NI_FMAT1;
5262 DELIVERED_VAR_CU : NI_FMAT1;
5263 DELIVERED_WATT_FE : NI_FMAT1;
5264 DELIVERED_VAR_FE : NI_FMAT1;
5265 RECEIVED_WATT_CU : NI_FMAT1;
5266 RECEIVED_VAR_CU : NI_FMAT1;
5267 RECEIVED_WATT_FE : NI_FMAT1;
5268 RECEIVED_VAR_FE : NI_FMAT1;
5269 END;

5270 TYPE TLC_RCD = PACKED RECORD


5271 TR_CONFIGURE : UINT8;
5272 TLC_CONSTANTS : TLC_COEFFICIENTS_RCD;
5273 TLC_SUM : TLC_INFORMATION_RCD;
5274 END;

5275 TABLE 17 TLC_TBL = TLC_RCD;

5276 Table 17 Element Descriptions

5277 Identifier Value Definition


5278 TLC_COEFFICIENTS_RCD
5279 KWCU Copper coefficient used in determining watt losses of the
5280 transformer due to load (Copper) losses.

5281 KVCU Copper coefficient used in determining VAR losses of the


5282 transformer due to load (Copper) losses.

5283 KWFE Iron coefficient used in determining watt losses of the


5284 transformer due to no-load (Iron) losses.

Tables / Decade 1: Data Source Tables 123


Table 17 Transformer Loss Compensation Table
DRAFT ANSI C12.19-2012

5285 KVFE Iron coefficient used in determining VAR losses of the


5286 transformer due to no-load (Iron) losses.

5287 DELIVERED_PCT 0..100 Percentage of losses in the delivered direction.

5288 RECEIVED_PCT 0..100 Percentage of losses in the received direction. Note that when
5289 directionality is not available, this Element shall be set to zero
5290 (0).

5291 TLC_INFORMATION_RCD This record delivers the transformer loss compensation


5292 calculations.

5293 DELIVERED_WATT_CU Delivered total Watt copper loss accumulator.

5294 DELIVERED_VAR_CU Delivered total VAR copper loss accumulator.

5295 DELIVERED_WATT_FE Delivered total Watt iron loss accumulator.

5296 DELIVERED_VAR_FE Delivered total VAR iron loss accumulator.

5297 RECEIVED_WATT_CU Received Watt copper loss accumulator.

5298 RECEIVED_VAR_CU Received VAR copper loss accumulator.

5299 RECEIVED_WATT_FE Received Watt iron loss accumulator.

5300 RECEIVED_VAR_FE Received VAR iron loss accumulator.

5301 TLC_RCD
5302 TR_CONFIGURE 0 The billing point is on the high-voltage side of a transformer,
5303 and the meter is located on the low-voltage side of the
5304 transformer.
5305 1 The billing point is on the low-voltage side of a transformer,
5306 and the meter is located on the high-voltage side of the
5307 transformer.
5308 2…255 Reserved.

5309 TLC_CONSTANTS See TLC_COEFFICIENTS_RCD.

5310 TLC_SUM See TLC_INFORMATION_RCD.

124
DRAFT ANSI C12.19-2012

5311 9.3 Decade 2: Register Tables

5312 Decade 2 Name

5313 REGISTER_DEC

5314 Decade 2 Data Description

5315 This Decade contains Tables associated with Registers for measured values. These Registers can be accumulating
5316 (energy), demand, TOU, instantaneous, or other(s) as appropriate.

5317 9.3.1 Table 20 Register Dimension Limits Table

5318 Table 20 Data Description

5319 DIM_REGS_TBL (Table 20) specifies the maximum dimensional values for measured values Registers. The
5320 constants defined are used for setting the absolute maximum limits of Arrays used in the transport of these values.

5321 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

5322 Table 20 Type Definitions

5323 TYPE REG_FUNC1_BFLD = BIT FIELD OF UINT8


5324 SEASON_INFO_FIELD_FLAG : BOOL(0);
5325 DATE_TIME_FIELD_FLAG : BOOL(1);
5326 DEMAND_RESET_CTR_FLAG : BOOL(2);
5327 DEMAND_RESET_LOCK_FLAG : BOOL(3);
5328 CUM_DEMAND_FLAG : BOOL(4);
5329 CONT_CUM_DEMAND_FLAG : BOOL(5);
5330 TIME_REMAINING_FLAG : BOOL(6);
5331 FILLER : FILL(7..7);
5332 END;

5333 TYPE REG_FUNC2_BFLD = BIT FIELD OF UINT8


5334 SELF_READ_INHIBIT_OVERFLOW_FLAG : BOOL(0);
5335 SELF_READ_SEQ_NBR_FLAG : BOOL(1);
5336 DAILY_SELF_READ_FLAG : BOOL(2);
5337 WEEKLY_SELF_READ_FLAG : BOOL(3);
5338 SELF_READ_DEMAND_RESET : UINT(4..5);
5339 FILLER : FILL(6..7);
5340 END;

5341 TYPE REGS_RCD = PACKED RECORD


5342 REG_FUNC1_FLAGS : REG_FUNC1_BFLD;
5343 REG_FUNC2_FLAGS : REG_FUNC2_BFLD;
5344 NBR_SELF_READS : UINT8;
5345 NBR_SUMMATIONS : UINT8;
5346 NBR_DEMANDS : UINT8;
5347 NBR_COIN_VALUES : UINT8;
5348 NBR_OCCUR : UINT8;
5349 NBR_TIERS : UINT8;
5350 NBR_PRESENT_DEMANDS : UINT8;
5351 NBR_PRESENT_VALUES : UINT8;
5352 END;
Tables / Decade 2: Register Tables 125
Table 20 Register Dimension Limits Table
DRAFT ANSI C12.19-2012

5353 TABLE 20 DIM_REGS_TBL = REGS_RCD;

5354 Table 20 Element Descriptions

5355 Identifier Value Definition


5356 REG_FUNC1_BFLD
5357 SEASON_INFO_FIELD_FLAG
5358 FALSE End Device is not capable of reporting the representative
5359 season in Tables in this Decade.
5360 TRUE End Device is capable of reporting the representative season in
5361 Tables in this Decade.

5362 DATE_TIME_FIELD_FLAG
5363 FALSE End Device is not capable of providing the date and time in
5364 Tables in this Decade.
5365 TRUE End Device is capable of providing the date and time in Tables
5366 in this Decade.

5367 DEMAND_RESET_CTR_FLAG
5368 FALSE End Device is not capable of counting the number of
5369 activations of demand resets.
5370 TRUE End Device is capable of counting the number of activations
5371 of demand resets.
5372 DEMAND_RESET_LOCK_FLAG
5373 FALSE Demand reset lockout is not supported by the End Device.
5374 TRUE Demand reset lockout is supported by the End Device.

5375 CUM_DEMAND_FLAG FALSE Cumulative Demand is not supported by the End Device.
5376 TRUE Cumulative Demand is supported by the End Device.

5377 CONT_CUM_DEMAND_FLAG
5378 FALSE Continuous Cumulative Demand is not supported by the End
5379 Device.
5380 TRUE Continuous Cumulative Demand is supported by the End
5381 Device.

5382 TIME_REMAINING_FLAG
5383 FALSE End Device is not capable of reporting the time remaining in
5384 the Demand interval.
5385 TRUE End Device is capable of reporting the time remaining in the
5386 Demand interval.

5387 REG_FUNC2_BFLD
5388 SELF_READ_INHIBIT_OVERFLOW_FLAG
5389 FALSE End Device is not capable of inhibiting Self-reads once an
5390 overflow occurs.
5391 TRUE End Device is capable of inhibiting Self-reads once an
5392 overflow occurs.

5393 SELF_READ_SEQ_NBR_FLAG
5394 FALSE End Device is not capable of providing a Self-read sequential
5395 number for each entry.
5396 TRUE End Device is capable of providing a Self-read sequential
5397 number.
126
DRAFT ANSI C12.19-2012

5398 DAILY_SELF_READ_FLAG Indicates whether daily Self-reads are supported. These


5399 readings are taken at 00:00:00.
5400 FALSE Daily Self-reads are not supported.
5401 TRUE Daily Self-reads are supported.

5402 WEEKLY_SELF_READ_FLAG Indicates whether weekly Self-reads are supported. These


5403 readings are taken at 00:00:00 on Sunday.
5404 FALSE Weekly Self-reads are not supported.
5405 TRUE Weekly Self-reads are supported.

5406 SELF_READ_DEMAND_RESET Specifies whether the End Device is capable of performing a


5407 Self-read whenever a Demand reset (by any method) is
5408 performed and whether the End Device is capable of
5409 performing a Demand reset whenever a Self-read (by any
5410 method) is performed.
5411 0 End Device is not capable of performing either a Self-read on
5412 every Demand reset or a Demand reset on every Self-read.
5413 1 End Device is capable of performing only a Self-read on every
5414 Demand reset.
5415 2 End Device is capable of performing only a Demand reset on
5416 every Self-read.
5417 3 End Device is capable of performing a Self-read on every
5418 Demand reset and a Demand reset on every Self-read.

5419 REGS_RCD
5420 REG_FUNC1_FLAGS See REG_FUNC1_BFLD.

5421 REG_FUNC2_FLAGS See REG_FUNC2_BFLD.

5422 NBR_SELF_READS 0..255 Maximum number of Self-reads supported by the End Device.

5423 NBR_SUMMATIONS 0..255 Maximum number of summation Registers in each data block.

5424 NBR_DEMANDS 0..255 Maximum number of Demand Registers in each data block.

5425 NBR_COIN_VALUES 0..255 Maximum number of coincident values saved concurrently in


5426 each data block.

5427 NBR_OCCUR 0..255 Maximum number of occurrences stored for a particular


5428 selection.

5429 NBR_TIERS 0..255 Maximum number of tiers for data storage.

5430 NBR_PRESENT_DEMANDS
5431 0..255 Maximum number of present demand values that can be
5432 stored.

5433 NBR_PRESENT_VALUES 0..255 Maximum number of present values that can be stored.

Tables / Decade 2: Register Tables 127


Table 20 Register Dimension Limits Table
DRAFT ANSI C12.19-2012

5434 9.3.2 Table 21 Actual Register Limiting Table

5435 Table 21 Data Description

5436 ACT_REGS_TBL (Table 21) contains actual limiting values for Registers.

5437 Global Default Table Property Overrides: Role=“ACTUAL”

5438 Table 21 Type Definitions

5439 TABLE 21 ACT_REGS_TBL = REGS_RCD;

5440 Table 21 Element Descriptions

5441 Identifier Value Definition


5442 REG_FUNC1_BFLD Redefines: DIM_REGS_TBL. REG_FUNC1_BFLD.

5443 SEASON_INFO_FIELD_FLAG
5444 FALSE End Device is not reporting the representative season in
5445 Tables in this Decade.
5446 TRUE End Device is reporting the representative season in Tables in
5447 this Decade.

5448 DATE_TIME_FIELD_FLAG
5449 FALSE End Device is not providing the date and time in Tables in this
5450 Decade.
5451 TRUE End Device is providing the date and time in Tables in this
5452 Decade.

5453 DEMAND_RESET_CTR_FLAG
5454 FALSE End Device is not counting the number of activations of
5455 Demand resets.
5456 TRUE End Device is counting the number of activations of Demand
5457 resets.

5458 DEMAND_RESET_LOCK_FLAG
5459 FALSE Demand reset lockout is not enabled.
5460 TRUE Demand reset lockout is enabled.

5461 CUM_DEMAND_FLAG FALSE Cumulative Demand is not in use by the End Device.
5462 TRUE Cumulative Demand is in use by the End Device.

5463 CONT_CUM_DEMAND_FLAG
5464 FALSE Continuous Cumulative Demand is not in use by the End
5465 Device.
5466 TRUE Continuous Cumulative Demand is in use by the End Device.

5467 TIME_REMAINING_FLAG FALSE End Device does not report the time remaining in Demand
5468 interval.
5469 TRUE End Device reports the time remaining in Demand interval.

5470 REG_FUNC2_BFLD Redefines: DIM_REGS_TBL. REG_FUNC2_BFLD.

128
DRAFT ANSI C12.19-2012

5471 SELF_READ_INHIBIT_OVERFLOW_FLAG
5472 FALSE End Device is not inhibiting Self-reads once an overflow
5473 occurs.
5474 TRUE End Device is inhibiting Self-reads once an overflow occurs.

5475 SELF_READ_SEQ_NBR_FLAG
5476 FALSE End Device is not providing a Self-read sequential number for
5477 each entry.
5478 TRUE End Device is providing a Self-read sequential number.

5479 DAILY_SELF_READ_FLAG Indicates whether daily self-reads are in use. These readings
5480 are taken at 00:00:00.
5481 FALSE Daily Self-reads are not in use.
5482 TRUE Daily Self-reads are in use.

5483 WEEKLY_SELF_READ_FLAG Indicates whether weekly Self-reads are in use. These readings
5484 are taken at 00:00:00 on Sunday.
5485 FALSE Weekly Self-reads are not in use.
5486 TRUE Weekly Self-reads are in use.

5487 SELF_READ_DEMAND_RESET Specifies whether the End Device will perform a Self-read
5488 whenever a Demand reset (by any method) is performed and
5489 whether the End Device will perform a Demand reset
5490 whenever a Self-read (by any method) is performed.
5491 0 End Device shall not perform either a Self-read on every
5492 Demand reset or a Demand reset on every Self-read.
5493 1 End Device shall perform a Self-read on every Demand reset.
5494 2 End Device shall perform a Demand reset on every Self-read.
5495 3 End Device shall perform a Self-read on every Demand reset
5496 and a Demand reset on every Self-read.

5497 REGS_RCD Redefines: DIM_REGS_TBL.REGS_RCD.

5498 REG_FUNC1_FLAGS See REG_FUNC1_BFLD.

5499 REG_FUNC2_FLAGS See REG_FUNC2_BFLD.

5500 NBR_SELF_READS 0..255 Number of Self-reads in use.

5501 NBR_SUMMATIONS 0..255 Number of summation Registers in each data block.

5502 NBR_DEMANDS 0..255 Number of Demand Registers in each data block.

5503 NBR_COIN_VALUES 0..255 Number of coincident values saved in each data block.

5504 NBR_OCCUR 0..255 Number of occurrences stored for a particular selection.

5505 NBR_TIERS 0..255 Number of tiers in use.

5506 NBR_PRESENT_DEMANDS
5507 0..255 Number of present demand values that are stored.

5508 NBR_PRESENT_VALUES 0..255 Number of present values that are stored.

Tables / Decade 2: Register Tables 129


Table 21 Actual Register Limiting Table
DRAFT ANSI C12.19-2012

5509 9.3.3 Table 22 Data Selection Table

5510 Table 22 Data Description

5511 DATA_SELECTION_TBL (Table 22) contains grouped lists of source indices. These indices point toward Array
5512 elements in SOURCES_TBL (Table 16) when Table 22 is present. These lists are used to build the Table that
5513 contains the data to be captured.

5514 Global Default Table Property Overrides: Role=“CONTROL”

5515 Table 22 Type Definitions

5516 TYPE DATA_SELECTION_RCD = PACKED RECORD


5517 SUMMATION_SELECT :
5518 ARRAY[ACT_REGS_TBL.NBR_SUMMATIONS] OF
5519 STD.SOURCE_SELECT_RCD;
5520 DEMAND_SELECT :
5521 ARRAY[ACT_REGS_TBL.NBR_DEMANDS] OF
5522 STD.SOURCE_SELECT_RCD;
5523 MIN_OR_MAX_FLAGS :
5524 SET((ACT_REGS_TBL.NBR_DEMANDS+7)/8);
5525 COINCIDENT_SELECT :
5526 ARRAY[ACT_REGS_TBL.NBR_COIN_VALUES] OF
5527 STD.SOURCE_SELECT_RCD;
5528 COIN_DEMAND_ASSOC :
5529 ARRAY[ACT_REGS_TBL.NBR_COIN_VALUES] OF
5530 UINT8;
5531 END;

5532 TABLE 22 DATA_SELECTION_TBL = DATA_SELECTION_RCD;

5533 Table 22 Element Descriptions

5534 Identifier Value Definition


5535 DATA_SELECTION_RCD
5536 SUMMATION_SELECT List of source selectors that groups together
5537 bulk/energy/summation that are associated with the
5538 SUMMATIONS defined in this Decade.

5539 DEMAND_SELECT List of source selectors that groups together demand sources
5540 that are associated with DEMANDS defined in this Decade.

5541 MIN_OR_MAX_FLAGS SET of bit flags, each corresponding to an entry in


5542 DEMAND_SELECT.
5543 FALSE Indicates that the associated DEMAND_SELECT entry is a
5544 minimum.
5545 TRUE Indicates that the associated DEMAND_SELECT entry is a
5546 maximum.

5547 COINCIDENT_SELECT Data source selectors for quantities to be placed in the


5548 COINCIDENTS array of the Current Register Data Table
5549 (Table 23).

130
DRAFT ANSI C12.19-2012

5550 COIN_DEMAND_ASSOC Each entry corresponds to an entry in


5551 COINCIDENT_SELECT and provides an index into
5552 DEMAND_SELECT identifying the Demand for which this
5553 coincident value is taken.

Tables / Decade 2: Register Tables 131


Table 22 Data Selection Table
DRAFT ANSI C12.19-2012

5554 9.3.4 Table 23 Current Register Data Table

5555 Table 23 Data Description

5556 CURRENT_REG_DATA_TBL (Table 23) contains the current Register data. “Current” is with respect to the
5557 previous demand reset, season, or Self-read. Table 23 is intended for billing purposes.

5558 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

5559 Table 23 Type Definitions

5560 TYPE COINCIDENTS_RCD = PACKED RECORD


5561 COINCIDENT_VALUES : ARRAY[ACT_REGS_TBL.NBR_OCCUR] OF NI_FMAT2;
5562 END;

5563 TYPE DEMANDS_RCD = PACKED RECORD


5564 IF ACT_REGS_TBL.DATE_TIME_FIELD_FLAG THEN
5565 EVENT_TIME : ARRAY[ACT_REGS_TBL.NBR_OCCUR] OF STIME_DATE;
5566 END;
5567 IF ACT_REGS_TBL.CUM_DEMAND_FLAG THEN
5568 CUM_DEMAND : NI_FMAT1;
5569 END;
5570 IF ACT_REGS_TBL.CONT_CUM_DEMAND_FLAG THEN
5571 CONT_CUM_DEMAND : NI_FMAT1;
5572 END;
5573 DEMAND : ARRAY[ACT_REGS_TBL.NBR_OCCUR] OF NI_FMAT2;
5574 END;

5575 TYPE DATA_BLK_RCD = PACKED RECORD


5576 SUMMATIONS : ARRAY[ACT_REGS_TBL.NBR_SUMMATIONS] OF NI_FMAT1;
5577 DEMANDS :
5578 ARRAY[ACT_REGS_TBL.NBR_DEMANDS] OF DEMANDS_RCD;
5579 COINCIDENTS :
5580 ARRAY[ACT_REGS_TBL.NBR_COIN_VALUES] OF
5581 COINCIDENTS_RCD;
5582 END;

5583 TYPE REGISTER_DATA_RCD = PACKED RECORD


5584 IF ACT_REGS_TBL.DEMAND_RESET_CTR_FLAG THEN
5585 NBR_DEMAND_RESETS : UINT8;
5586 END;
5587 TOT_DATA_BLOCK : DATA_BLK_RCD;
5588 TIER_DATA_BLOCK : ARRAY[ACT_REGS_TBL.NBR_TIERS] OF DATA_BLK_RCD;
5589 END;

5590 TABLE 23 CURRENT_REG_DATA_TBL = REGISTER_DATA_RCD;Table 23 Element Descriptions

5591 Identifier Value Definition


5592 COINCIDENTS_RCD
5593 COINCIDENT_VALUES Coincident values selected by
5594 DATA_SELECTION_TBL.COINCIDENT_SELECT
5595 (Table 22).

132
DRAFT ANSI C12.19-2012

5596 DEMANDS_RCD
5597 EVENT_TIME Array that contains the date and time of each minimum or
5598 maximum recorded. Entry in position zero (0) corresponds to
5599 the entry in position zero (0) of the DEMAND Array. The
5600 presence of this field is dependent on the capability flag in the
5601 ACT_REGS_TBL. DATE_TIME_FIELD_FLAG
5602 (Table 21).

5603 CUM_DEMAND Value of the Cumulative Demand register.

5604 CONT_CUM_DEMAND Value of the Continuous Cumulative Demand register.

5605 DEMAND Array that contains the minimum or maximum values. The
5606 value in position zero (0) is the smallest minimum or largest
5607 maximum. In position one (1) is the second smallest minimum
5608 or the second largest maximum and so on until the end of the
5609 Array is reached.

5610 DATA_BLK_RCD
5611 SUMMATIONS Array that contains the values of the selected summation
5612 measurements.

5613 DEMANDS Array that contains the values of the selected min/max
5614 Demand measurements.

5615 COINCIDENTS Array that contains the values of the selected measurement
5616 coincident to the selected minimum/maximum Demands.

5617 REGISTER_DATA_RCD
5618 NBR_DEMAND_RESETS 0..255 Number of Demand resets executed by the End Device.

5619 TOT_DATA_BLOCK Data block independent of Time-of-Use structures or other


5620 means of selection.

5621 TIER_DATA_BLOCK Data block dependent on Time-of-Use structures or other


5622 means of selection.

Tables / Decade 2: Register Tables 133


Table 23 Current Register Data Table
DRAFT ANSI C12.19-2012

5623 9.3.5 Table 24 Previous Season Data Table

5624 Table 24 Data Description

5625 PREVIOUS_SEASON_DATA_TBL (Table 24) contains a snapshot of the current Register data taken at the last
5626 season change.

5627 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

5628 Table 24 Type Definitions

5629 TYPE REGISTER_INFO_RCD = PACKED RECORD


5630 IF ACT_REGS_TBL.DATE_TIME_FIELD_FLAG THEN
5631 END_DATE_TIME : STIME_DATE;
5632 END;
5633 IF ACT_REGS_TBL.SEASON_INFO_FIELD_FLAG THEN
5634 SEASON : UINT8;
5635 END;
5636 END;

5637 TYPE PREVIOUS_SEASON_DATA_RCD = PACKED RECORD


5638 REGISTER_INFO : REGISTER_INFO_RCD;
5639 PREV_SEASON_REG_DATA : CURRENT_REG_DATA_TBL.REGISTER_DATA_RCD;
5640 END;

5641 TABLE 24 PREVIOUS_SEASON_DATA_TBL = PREVIOUS_SEASON_DATA_RCD;Table 24 Element


5642 Descriptions

5643 Identifier Value Definition


5644 REGISTER_INFO_RCD
5645 END_DATE_TIME End Device time when the snapshot of the current Register
5646 data occurred.

5647 SEASON 0..255 Current season value when the snapshot of the current
5648 Register data occurred.

5649 PREVIOUS_SEASON_DATA_RCD
5650 REGISTER_INFO See REGISTER_INFO_RCD.

5651 PREV_SEASON_REG_DATA Snapshot of the CURRENT_REG_DATA_TBL (Table 23)


5652 stored at the time of the last season change. See
5653 CURRENT_REG_DATA_TBL (Table 23).

134
DRAFT ANSI C12.19-2012

5654 9.3.6 Table 25 Previous Demand Reset Data Table

5655 Table 25 Data Description

5656 PREVIOUS_DEMAND_RESET_DATA_TBL (Table 25) contains a snapshot of the current Register data taken at
5657 the time of the last Demand reset.

5658 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

5659 Table 25 Type Definitions

5660 TYPE PREV_DEMAND_RESET_DATA_RCD = PACKED RECORD


5661 REGISTER_INFO : PREVIOUS_SEASON_DATA_TBL.REGISTER_INFO_RCD;
5662 PREV_DEMAND_RESET_DATA : CURRENT_REG_DATA_TBL.REGISTER_DATA_RCD;
5663 END;

5664 TABLE 25 PREVIOUS_DEMAND_RESET_DATA_TBL = PREV_DEMAND_RESET_DATA_RCD;Table 25


5665 Element Descriptions

5666 Identifier Value Definition


5667 PREV_DEMAND_RESET_DATA_RCD
5668 REGISTER_INFO Snapshot of Register information included with previous
5669 Demand reset register data.

5670 PREV_DEMAND_RESET_DATA Snapshot of the CURRENT_REG_DATA_TBL (Table 23)


5671 stored at the time of the last Demand reset.

Tables / Decade 2: Register Tables 135


Table 25 Previous Demand Reset Data Table
DRAFT ANSI C12.19-2012

5672 9.3.7 Table 26 Self-read Data Table

5673 Table 26 Data Description

5674 SELF_READ_DATA_TBL (Table 26) contains Self-read data.

5675 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

5676 Table 26 Type Definitions

5677 TYPE SELF_READ_DATA_RCD = PACKED RECORD


5678 IF ACT_REGS_TBL.SELF_READ_SEQ_NBR_FLAG THEN
5679 SELF_READ_SEQ_NBR : UINT16;
5680 END;
5681 REGISTER_INFO : PREVIOUS_SEASON_DATA_TBL.REGISTER_INFO_RCD;
5682 SELF_READ_REGISTER_DATA : CURRENT_REG_DATA_TBL.REGISTER_DATA_RCD;
5683 END;

5684 TYPE LIST_STATUS_BFLD = BIT FIELD OF UINT8


5685 ORDER : UINT(0..0);
5686 OVERFLOW_FLAG : BOOL(1);
5687 LIST_TYPE : UINT(2..2);
5688 INHIBIT_OVERFLOW_FLAG : BOOL(3);
5689 FILLER : FILL(4..7);
5690 END;

5691 TYPE SELF_READ_LIST_RCD = PACKED RECORD


5692 LIST_STATUS : LIST_STATUS_BFLD;
5693 NBR_VALID_ENTRIES : UINT8;
5694 LAST_ENTRY_ELEMENT : UINT8;
5695 LAST_ENTRY_SEQ_NBR : UINT16;
5696 NBR_UNREAD_ENTRIES : UINT8;
5697 SELF_READS_ENTRIES :
5698 ARRAY[ACT_REGS_TBL.NBR_SELF_READS] OF
5699 SELF_READ_DATA_RCD;
5700 END;

5701 TABLE 26 SELF_READ_DATA_TBL = SELF_READ_LIST_RCD;Table 26 Element Descriptions

5702 Identifier Value Definition


5703 SELF_READ_DATA_RCD
5704 SELF_READ_SEQ_NBR 0..65535 Sequence number assigned to the Self-read measurement. This
5705 number is set to zero (0) when the End Device is configured.
5706 This number is incremented with each Self-read occurrence.

5707 REGISTER_INFO Snapshot of Register data taken at the time of the Self-read.

5708 SELF_READ_REGISTER_DATA Snapshot of current Register data taken when requested by any
5709 means offered by the End Device.
5710

136
DRAFT ANSI C12.19-2012

5711 LIST_STATUS_BFLD
5712 ORDER Alias: ORDER_FLAG.
5713 0 Self-reads are transported in ascending order (N is older than
5714 N + 1).
5715 1 Self-reads are transported in descending order (N is newer
5716 than N + 1).

5717 OVERFLOW_FLAG FALSE Overflow has not occurred.


5718 TRUE An attempt was made to enter a Self-read such that the number
5719 of unread Self-reads would have exceeded the actual number
5720 of possible entries in the log.

5721 LIST_TYPE Alias: LIST_TYPE_FLAG.


5722 0 FIFO (First-In, First-Out), as placed in Self-read list.
5723 1 Circular list, as placed in Self-read list.

5724 INHIBIT_OVERFLOW_FLAG The same value as ACT_REGS_TBL.


5725 SELF_READ_INHIBIT_OVERFLOW_FLAG (Table 21).

5726 SELF_READ_LIST_RCD
5727 LIST_STATUS See LIST_STATUS_BFLD above.

5728 NBR_VALID_ENTRIES 0..255 Number of valid Self-reads stored in the Self-reads Array. The
5729 range is zero (0), meaning no Self-reads in the Array, to the
5730 actual dimension of the number of Self-reads.

5731 LAST_ENTRY_ELEMENT 0..255 Array element number of the newest valid entry in the Self-
5732 read Array. This field is valid only if
5733 NBR_VALID_ENTRIES is greater than zero (0).

5734 LAST_ENTRY_SEQ_NBR 0..65535 Sequence number of the last element in the Self-read array.

5735 NBR_UNREAD_ENTRIES 0..255 Number of Self-read entries that have not been read. This
5736 number shall only be updated by a procedure.

5737 SELF_READS_ENTRIES Array of snapshots of Register data taken at prescribed


5738 instance in time.

Tables / Decade 2: Register Tables 137


Table 26 Self-read Data Table
DRAFT ANSI C12.19-2012

5739 9.3.8 Table 27 Present Register Selection Table

5740 Table 27 Data Description

5741 PRESENT_REGISTER_SELECT_TBL (Table 27) provides selections to sources of present demands and present
5742 values. These indices point toward array elements in SOURCES_TBL (Table 16) when Table 16 is present. The
5743 values selected are available in PRESENT_REGISTER_DATA_TBL (Table 28). Table 27 is used to select
5744 sources for Table 28, which is continually updated.

5745 Global Default Table Property Overrides: Role=“CONTROL”

5746 Table 27 Type Definitions

5747 TYPE PRESENT_REGISTER_SELECT_RCD = PACKED RECORD


5748 PRESENT_DEMAND_SELECT :
5749 ARRAY[ACT_REGS_TBL.NBR_PRESENT_DEMANDS] OF
5750 STD.SOURCE_SELECT_RCD;
5751 PRESENT_VALUE_SELECT :
5752 ARRAY[ACT_REGS_TBL.NBR_PRESENT_VALUES] OF
5753 STD.SOURCE_SELECT_RCD;
5754 END;

5755 TABLE 27 PRESENT_REGISTER_SELECT_TBL = PRESENT_REGISTER_SELECT_RCD;

5756 Table 27 Element Descriptions

5757 Identifier Value Definition


5758 PRESENT_REGISTER_SELECT_RCD
5759 PRESENT_DEMAND_SELECT Array that contains data source selectors for quantities used to
5760 measure present demand. The present demand values shall be
5761 reported at the same index position in
5762 PRESENT_REGISTER_DATA_TBL.PRESENT_DEMAND
5763 (Table 28).

5764 PRESENT_VALUE_SELECT Array that contains data source selectors for quantities used to
5765 measure present value. The present values shall be reported at the
5766 same index position in
5767 PRESENT_REGISTER_DATA_TBL.PRESENT_VALUE
5768 (Table 28).

138
DRAFT ANSI C12.19-2012

5769 9.3.9 Table 28 Present Register Data Table

5770 Table 28 Data Description

5771 PRESENT_REGISTER_DATA_TBL (Table 28) contains the present demand and values as selected by the
5772 PRESENT_REGISTER_SELECT_TBL (Table 27). Table 28 is continually updated.

5773 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

5774 Table 28 Type Definitions

5775 TYPE PRESENT_DEMAND_RCD = PACKED RECORD


5776 IF ACT_REGS_TBL.TIME_REMAINING_FLAG THEN
5777 TIME_REMAINING : TIME;
5778 END;
5779 DEMAND_VALUE : NI_FMAT2;
5780 END;

5781 TYPE PRESENT_REGISTER_DATA_RCD = PACKED RECORD


5782 PRESENT_DEMAND :
5783 ARRAY[ACT_REGS_TBL.NBR_PRESENT_DEMANDS] OF
5784 PRESENT_DEMAND_RCD;
5785 PRESENT_VALUE :
5786 ARRAY[ACT_REGS_TBL.NBR_PRESENT_VALUES] OF
5787 NI_FMAT1;
5788 END;

5789 TABLE 28 PRESENT_REGISTER_DATA_TBL = PRESENT_REGISTER_DATA_RCD;

5790 Table 28 Element Descriptions

5791 Identifier Value Definition


5792 PRESENT_DEMAND_RCD
5793 TIME_REMAINING Time remaining to the end of the present demand interval.

5794 DEMAND_VALUE Present demand value.

5795 PRESENT_REGISTER_DATA_RCD
5796 PRESENT_DEMAND Array that contains present demand selected by
5797 PRESENT_REGISTER_SELECT_TBL.
5798 PRESENT_DEMAND_SELECT (Table 27).

5799 PRESENT_VALUE Array that contains present value selected by


5800 PRESENT_REGISTER_SELECT_TBL.
5801 PRESENT_VALUE_SELECT (Table 27).

Tables / Decade 2: Register Tables 139


Table 28 Present Register Data Table
DRAFT ANSI C12.19-2012

5802 9.4 Decade 3: Local Display Tables

5803 Decade 3 Name

5804 LOCAL_DISPLAY_DEC

5805 Decade 3 Data Description

5806 This Decade contains tables associated with the transport of information required to establish a local display.

5807 9.4.1.1 Table 30 Display Dimension Limits Table

5808 Table 30 Data Description

5809 DIM_DISP_TBL (Table 30) specifies the maximum dimensional values for local display operation in an End
5810 Device. The constants defined are used for setting the absolute maximum limits of display array sizes.

5811 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

5812 Table 30 Type Definitions

5813 TYPE DISP_FLAG_BFLD = BIT FIELD OF UINT8


5814 ON_TIME_FLAG : BOOL(0);
5815 OFF_TIME_FLAG : BOOL(1);
5816 HOLD_TIME_FLAG : BOOL(2);
5817 FILLER : FILL(3..7);
5818 END;

5819 TYPE DISP_RCD = PACKED RECORD


5820 DISPLAY_CTRL : DISP_FLAG_BFLD;
5821 NBR_DISP_SOURCES : UINT16;
5822 WIDTH_DISP_SOURCES : UINT8;
5823 NBR_PRI_DISP_LIST_ITEMS : UINT16;
5824 NBR_PRI_DISP_LISTS : UINT8;
5825 NBR_SEC_DISP_LIST_ITEMS : UINT16;
5826 NBR_SEC_DISP_LISTS : UINT8;
5827 END;

5828 TABLE 30 DIM_DISP_TBL = DISP_RCD;

5829 Table 30 Element Descriptions

5830 Identifier Value Definition


5831 DISP_FLAG_BFLD
5832 ON_TIME_FLAG FALSE Programmable on time is not supported by the End Device.
5833 TRUE Programmable on time is supported by the End Device.

5834 OFF_TIME_FLAG FALSE Programmable off time is not supported by the End Device.
5835 TRUE Programmable off time is supported by the End Device.

5836 HOLD_TIME_FLAG FALSE Programmable hold time is not supported by the End Device.
5837 TRUE Programmable hold time is supported by the End Device.

140
DRAFT ANSI C12.19-2012

5838 DISP_RCD
5839 DISPLAY_CTRL See DISP_FLAG_BFLD.

5840 NBR_DISP_SOURCES 0..65535 Maximum number of display sources. A number representing


5841 the maximum number of manufacturer-defined display
5842 sources, described in DISP_SOURCE_TBL (Table 32), and
5843 which may be used for the creation of display lists.

5844 WIDTH_DISP_SOURCES 0..255 Maximum number of Octets a manufacturer may use to define
5845 the row width of all entries in DISP_SOURCE_TBL
5846 (Table 32).

5847 NBR_PRI_DISP_LIST_ITEMS
5848 0..65535 Maximum number of primary display items per display list
5849 defined in PRI_DISP_LIST_TBL (Table 33). The maximum
5850 number of items in all primary display lists shall not exceed
5851 this value.

5852 NBR_PRI_DISP_LISTS 0..255 Maximum number of primary display lists defined in


5853 PRI_DISP_LIST_TBL (Table 33).

5854 NBR_SEC_DISP_LIST_ITEMS
5855 0..65535 Maximum number of secondary display items per display list
5856 defined in SEC_DISP_LIST_TBL (Table 34). The maximum
5857 number of items in all secondary display lists shall not exceed
5858 this value.

5859 NBR_SEC_DISP_LISTS 0..255 Maximum number of secondary display lists defined in


5860 SEC_DISP_LIST_TBL (Table 34).

Tables / Decade 3: Local Display Tables 141


DRAFT ANSI C12.19-2012

5861 9.4.2 Table 31 Actual Display Limiting Table

5862 Table 31 Data Description

5863 ACT_DISP_TBL (Table 31) specifies the actual dimensional values for local display operation in an End Device.
5864 The dimensions defined are used for setting the actual limits of display array sizes.

5865 Global Default Table Property Overrides: Role=“ACTUAL”

5866 Table 31 Type Definitions

5867 TABLE 31 ACT_DISP_TBL = DISP_RCD;

5868 Table 31 Element Descriptions

5869 Identifier Value Definition


5870 DISP_FLAG_BFLD Redefines: DIM_DISP_TBL.DISP_FLAG_BFLD.

5871 ON_TIME_FLAG FALSE On time is not programmable in the End Device.


5872 TRUE On time is programmable in the End Device.

5873 OFF_TIME_FLAG FALSE Off time is not programmable in the End Device.
5874 TRUE Off time is programmable in the End Device.

5875 HOLD_TIME_FLAG FALSE Hold time is not programmable in the End Device.
5876 TRUE Hold time is programmable in the End Device.

5877 DISP_RCD Redefines: DIM_DISP_TBL. DISP_RCD.

5878 DISPLAY_CTRL See DISP_FLAG_BFLD.

5879 NBR_DISP_SOURCES 0..65535 Actual number of display sources. A number representing the
5880 actual number of manufacturer-defined display sources,
5881 described in DISP_SOURCE_TBL (Table 32), and which
5882 should be used for the creation of display lists.

5883 WIDTH_DISP_SOURCES 0..255 Actual number of Octets a manufacturer uses to define the row
5884 width of all entries in DISP_SOURCE_TBL (Table 32).

5885 NBR_PRI_DISP_LIST_ITEMS
5886 0..65535 Actual number of primary display items per display list
5887 defined in PRI_DISP_LIST_TBL (Table 33). The total
5888 number of items in all primary display lists shall not exceed
5889 this value.

5890 NBR_PRI_DISP_LISTS 0..255 Actual number of primary display lists defined in


5891 PRI_DISP_LIST_TBL (Table 33).

5892
5893

142
DRAFT ANSI C12.19-2012

5894 NBR_SEC_DISP_LIST_ITEMS
5895 0..65535 Actual number of secondary display items per display list
5896 defined in SEC_DISP_LIST_TBL (Table 34). The total
5897 number of items in all secondary display lists shall not exceed
5898 this value.

5899 NBR_SEC_DISP_LISTS 0..255 Actual number of secondary display lists defined in


5900 SEC_DISP_LIST_TBL (Table 34).

Tables / Decade 3: Local Display Tables 143


Table 31 Actual Display Limiting Table
DRAFT ANSI C12.19-2012

5901 9.4.3 Table 32 Display Source Table

5902 Table 32 Data Description

5903 DISP_SOURCE_TBL (Table 32) manufacturer-defined display identifications and format characteristics. Although
5904 manufacturer specific, this table’s designation and dimensions (ACT_DISP_TBL.WIDTH_DISP_SOURCES by
5905 ACT_DISP_TBL.NBR_DISP_SOURCES) (Table 31) permit the protocol to deposit local display description
5906 information. The actual interpretation of each display entry is not defined by this standard. The entry offsets to
5907 individual items in this table are used in display scroll sequences entered in tables PRI_DISP_LIST_TBL
5908 (Table 33) and SEC_DISP_LIST_TBL (Table 34).

5909 Global Default Table Property Overrides: Role=“CONTROL”

5910 Table 32 Type Definitions

5911 TYPE DISP_SOURCE_DESC_RCD = PACKED RECORD


5912 DISPLAY_SOURCE : BINARY(ACT_DISP_TBL.WIDTH_DISP_SOURCES);
5913 END;

5914 TYPE DISPLAY_SOURCE_RCD = PACKED RECORD


5915 DISPLAY_SOURCES :
5916 ARRAY[ACT_DISP_TBL.NBR_DISP_SOURCES] OF
5917 DISP_SOURCE_DESC_RCD;
5918 END;

5919 TABLE 32 DISP_SOURCE_TBL = DISPLAY_SOURCE_RCD;

5920 Table 32 Element Descriptions

5921 Identifier Value Definition


5922 DISP_SOURCE_DESC_RCD Manufacturer-defined display description entry.

5923 DISPLAY_SOURCE Contains the manufacturer-defined display description entries.

5924 DISPLAY_SOURCE_RCD Manufacturer-defined display description entries.

5925 DISPLAY_SOURCES These entries make up the DISP_SOURCE_TBL (Table 32).


5926 Indices to these entries (starting with 0) are used in subsequent
5927 display scrolling sequences.

144
DRAFT ANSI C12.19-2012

5928 9.4.4 Table 33 Primary Display List Table

5929 Table 33 Data Description

5930 PRI_DISP_LIST_TBL (Table 33) contains a list of operational parameters and references into the table,
5931 DISP_SOURCE_TBL (Table 32), necessary for programming the primary display lists, timing, and scroll
5932 sequences.

5933 Global Default Table Property Overrides: Role=“CONTROL”

5934 Table 33 Type Definitions

5935 TYPE DISP_SCROLL1_BFLD = BIT FIELD OF UINT8


5936 ON_TIME : UINT(0..3);
5937 OFF_TIME : UINT(4..7);
5938 END;

5939 TYPE DISP_SCROLL2_BFLD = BIT FIELD OF UINT8


5940 HOLD_TIME : UINT(0..3);
5941 DEFAULT_LIST : UINT(4..7);
5942 END;

5943 TYPE DISP_LIST_DESC_RCD = PACKED RECORD


5944 DISP_SCROLL1 : DISP_SCROLL1_BFLD;
5945 DISP_SCROLL2 : DISP_SCROLL2_BFLD;
5946 NBR_LIST_ITEMS : UINT8;
5947 END;

5948 TYPE PRI_DISP_LIST_RCD = PACKED RECORD


5949 PRI_DISP_LIST :
5950 ARRAY[ACT_DISP_TBL.NBR_PRI_DISP_LISTS] OF
5951 DISP_LIST_DESC_RCD;
5952
5953 PRI_DISP_SOURCES :
5954 ARRAY[ACT_DISP_TBL.NBR_PRI_DISP_LIST_ITEMS] OF
5955 UINT16;
5956 END;

5957 TABLE 33 PRI_DISP_LIST_TBL = PRI_DISP_LIST_RCD;

5958 Table 33 Element Descriptions

5959 Identifier Value Definition


5960 DISP_SCROLL1_BFLD
5961 ON_TIME 0..15 The number of seconds each display item is displayed.

5962 OFF_TIME 0..15 The number of seconds display is blank between display
5963 items. 0 = No deliberate OFF Time.

5964 DISP_SCROLL2_BFLD
5965 HOLD_TIME 0..15 The number of minutes to wait before automatically restarting
5966 the normal display scroll after hold has been initiated.

Tables / Decade 3: Local Display Tables 145


Table 33 Primary Display List Table
DRAFT ANSI C12.19-2012

5967 DEFAULT_LIST Associates this display list with a standard display list type.
5968 The “normal” display list scrolling resumes after
5969 HOLD_TIME has expired.
5970 0 Display selectable via communication link only.
5971 1 Normal Display.
5972 2 Alternate Display.
5973 3 Test Display.
5974 4..15 Reserved.

5975 DISP_LIST_DESC_RCD
5976 DISP_SCROLL1 This contains the ON_TIME and OFF_TIME values for the
5977 associated list.

5978 DISP_SCROLL2 This contains the HOLD_TIME and DEFAULT_LIST


5979 values for the associated list.

5980 NBR_LIST_ITEMS 0..255 Number of items in this display list. The total number of items
5981 (list entries) in all display lists of this table shall not exceed
5982 ACT_DISP_TBL.NBR_PRI_DISP_LIST_ITEMS
5983 (Table 31).

5984 PRI_DISP_LIST_RCD
5985 PRI_DISP_LIST An array of list descriptor records.

5986 PRI_DISP_SOURCES Ordered list of references to display items contained in


5987 DISP_SOURCE_TBL (Table 32). This list establishes the
5988 order of the primary display.

5989 This standard does not preclude additional items from popping
5990 up or being displayed out of sequence as a result of an End
5991 Device error condition or an End Device status report being
5992 generated.

146
DRAFT ANSI C12.19-2012

5993 9.4.5 Table 34 Secondary Display List Table

5994 Table 34 Data Description

5995 SEC_DISP_LIST_TBL (Table 34) contains a list of operational parameters and references into the table,
5996 DISP_SOURCE_TBL (Table 32), necessary for programming the secondary display lists, timing, and scroll
5997 sequences.

5998 Global Default Table Property Overrides: Role=“CONTROL”

5999 Table 34 Type Definitions

6000 TYPE SEC_DISP_LIST_RCD = PACKED RECORD


6001 SEC_DISP_LIST :
6002 ARRAY[ACT_DISP_TBL.NBR_SEC_DISP_LISTS] OF
6003 DISP_LIST_DESC_RCD;
6004
6005 SEC_DISP_SOURCES :
6006 ARRAY[ACT_DISP_TBL.NBR_SEC_DISP_LIST_ITEMS] OF
6007 UINT16;
6008 END;

6009 TABLE 34 SEC_DISP_LIST_TBL = SEC_DISP_LIST_RCD;

6010 Table 34 Element Descriptions

6011 Identifier Value Definition


6012 DISP_SCROLL1_BFLD Redefines:
6013 PRI_DISP_LIST_TBL.DISP_SCROLL1_BFLD.

6014 ON_TIME 0..15 The number of seconds each display item is displayed.

6015 OFF_TIME 0..15 The number of seconds display is blank between display
6016 items. 0 = No deliberate OFF Time.

6017 DISP_SCROLL2_BFLD Redefines:


6018 PRI_DISP_LIST_TBL.DISP_SCROLL2_BFLD.

6019 HOLD_TIME 0..15 The number of minutes to wait before automatically restarting
6020 the normal display scroll after hold has been initiated.

6021 DEFAULT_LIST Associates this display list with a standard display list type.
6022 The “normal” display list scrolling resumes after
6023 HOLD_TIME has expired.
6024 0 Display selectable via communication link only.
6025 1 Normal Display.
6026 2 Alternate Display.
6027 3 Test Display.
6028 4..15 Reserved.

6029 DISP_LIST_DESC_RCD Redefines:


6030 PRI_DISP_LIST_TBL.DISP_LIST_DESC_RCD.

Tables / Decade 3: Local Display Tables 147


Table 34 Secondary Display List Table
DRAFT ANSI C12.19-2012

6031 DISP_SCROLL1 This contains the ON_TIME and OFF_TIME values for the
6032 associated list.

6033 DISP_SCROLL2 This contains the HOLD_TIME and DEFAULT_LIST


6034 values for the associated list.

6035 NBR_LIST_ITEMS 0..255 Number of items in this display list. The total number of items
6036 (list entries) in all display lists of this table shall not exceed
6037 ACT_DISP_TBL.NBR_PRI_DISP_LIST_ITEMS
6038 (Table 31).

6039 SEC_DISP_LIST_RCD
6040 SEC_DISP_LIST An array of list descriptor records.

6041 SEC_DISP_SOURCES Ordered list of references to display items contained in


6042 DISP_SOURCE_TBL (Table 32). This list establishes the
6043 order of the secondary display.

6044 This standard does not preclude additional items from popping
6045 up or being displayed out of sequence as a result of an End
6046 Device error condition or an End Device status report being
6047 generated.

148
DRAFT ANSI C12.19-2012

6048 9.5 Decade 4: Security Tables

6049 Decade 4 Name

6050 SECURITY_DEC

6051 Decade 4 Data Description

6052 The security tables provide holding areas for the placement of End Device passwords and Encryption/Authentication
6053 keys used to establish group access permissions. Access permissions are used to limit table read or write access and
6054 procedure execute permissions to groups of users based on the interpretation of the password and
6055 encryption/authentication fields. The exact means for granting access are not defined by this standard.

6056 9.5.1 Table 40 Security Dimension Limits Table

6057 Table 40 Data Description

6058 DIM_SECURITY_LIMITING_TBL (Table 40) defines the maximum number of passwords and security access
6059 level entries supported by the End Device.

6060 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

6061 Table 40 Type Definitions

6062 TYPE SECURITY_RCD = PACKED RECORD


6063 NBR_PASSWORDS : UINT8;
6064 PASSWORD_LEN : UINT8;
6065 NBR_KEYS : UINT8;
6066 KEY_LEN : UINT8;
6067 NBR_PERM_USED : UINT16;
6068 END;

6069 TABLE 40 DIM_SECURITY_LIMITING_TBL = SECURITY_RCD;

6070 Table 40 Element Descriptions

6071 Identifier Value Definition


6072 SECURITY_RCD
6073 NBR_PASSWORDS 0 Access levels cannot be established using the standard
6074 password mechanism.
6075 1..255 Maximum number of passwords this End Device is capable of
6076 supporting.

6077 PASSWORD_LEN 0 Reserved.


6078 1..20 Maximum length of passwords in Octets this End Device is
6079 capable of supporting.
6080 21..255 Reserved.

6081 NBR_KEYS 0..255 Maximum number of keys for authentication/encryption this


6082 End Device is capable of supporting.

6083 KEY_LEN 0..255 Maximum length of keys in Octets this End Device is capable
6084 of supporting.
Tables / Decade 4: Security Tables 149
Table 40 Security Dimension Limits Table
DRAFT ANSI C12.19-2012

6085 NBR_PERM_USED 0..65535 Maximum number of user-defined security access entries this
6086 End Device supports in addition to those defined through
6087 default access permissions.

150
DRAFT ANSI C12.19-2012

6088 9.5.2 Table 41 Actual Security Limiting Table

6089 Table 41 Data Description

6090 ACT_SECURITY_LIMITING_TBL (Table 41) defines the actual number of passwords and security access level
6091 entries supported by the End Device.

6092 Global Default Table Property Overrides: Role=“ACTUAL”

6093 Table 41 Type Definitions

6094 TABLE 41 ACT_SECURITY_LIMITING_TBL = SECURITY_RCD;

6095 Table 41 Element Descriptions

6096 Identifier Value Definition


6097 SECURITY_RCD Redefines:
6098 DIM_SECURITY_LIMITING_TBL.SECURITY_RCD.

6099 NBR_PASSWORDS 0 Actual access levels are not established through the standard
6100 password mechanism.
6101 1..255 Actual number of passwords used by this End Device.

6102 PASSWORD_LEN 0 Reserved.


6103 1..20 Actual length of passwords in Octets this End Device is
6104 supporting.
6105 21..255 Reserved.

6106 NBR_KEYS 0..255 Actual number of keys this End Device is supporting.

6107 KEY_LEN 0..255 Actual length of keys in Octets this End Device is supporting.

6108 NBR_PERM_USED 0..65535 Actual number of user-defined security access entries this End
6109 Device supports in addition to those defined through default
6110 access permissions.

Tables / Decade 4: Security Tables 151


Table 41 Actual Security Limiting Table
DRAFT ANSI C12.19-2012

6111 9.5.3 Table 42 Security Table

6112 Table 42 Data Description

6113 SECURITY_TBL (Table 42) stores actual End Device passwords. It is used to associate passwords with read,
6114 write, and procedure execute access permission bits.

6115 Any table or procedure whose access control bits match with respect to position at least one of the group access
6116 permissions bits, as defined in SECURITY_TBL (Table 42) for the supplied password, can become a candidate for
6117 data transfers.

6118 Please note that:

6119 a) Although it may be possible to read the security table, the values reported (read back) are not defined by
6120 this standard. Security best practice is to encrypt or otherwise provide access protection for this security-
6121 relevant information.
6122 b) When access permissions are given to a procedure that accesses or modifies table data, then the invoker of
6123 that procedure shall in addition be required to have read or write access to the table that is read or modified.
6124 c) When access permissions are given to a User-defined table, which accesses or modifies other tables, then
6125 the invoker of that User-defined table shall in addition be required to have read or write access to the tables
6126 indirectly read or written.

6127 Global Default Table Property Overrides: Role=“CONTROL”, Accessibility=“WRITEONLY”

6128 Table 42 Type Definitions

6129 TYPE ACCESS_PERMISSION_BFLD = BIT FIELD OF UINT8


6130 GROUP_PERM_0_FLAG : BOOL(0);
6131 GROUP_PERM_1_FLAG : BOOL(1);
6132 GROUP_PERM_2_FLAG : BOOL(2);
6133 GROUP_PERM_3_FLAG : BOOL(3);
6134 GROUP_PERM_4_FLAG : BOOL(4);
6135 GROUP_PERM_5_FLAG : BOOL(5);
6136 GROUP_PERM_6_FLAG : BOOL(6);
6137 GROUP_PERM_7_FLAG : BOOL(7);
6138 END;

6139 TYPE SECURITY_ENTRY_RCD = PACKED RECORD


6140 PASSWORD : BINARY(ACT_SECURITY_LIMITING_TBL.PASSWORD_LEN);
6141 ACCESS_PERMISSIONS : ACCESS_PERMISSION_BFLD;
6142 END;

6143 TYPE SECURITY_RCD = PACKED RECORD


6144 SECURITY_ENTRIES :
6145 ARRAY[ACT_SECURITY_LIMITING_TBL.NBR_PASSWORDS] OF
6146 SECURITY_ENTRY_RCD;
6147 END;

6148 TABLE 42 SECURITY_TBL = SECURITY_RCD;

152
DRAFT ANSI C12.19-2012

6149 Table 42 Element Descriptions

6150 Identifier Value Definition


6151 ACCESS_PERMISSIONS_BFLD
6152 GROUP_PERM_0_FLAG FALSE Group 0 privileges are not granted by this password.
6153 TRUE Group 0 privileges are granted by this password.

6154 GROUP_PERM_1_FLAG FALSE Group 1 privileges are not granted by this password.
6155 TRUE Group 1 privileges are granted by this password.

6156 GROUP_PERM_2_FLAG FALSE Group 2 privileges are not granted by this password.
6157 TRUE Group 2 privileges are granted by this password.

6158 GROUP_PERM_3_FLAG FALSE Group 3 privileges are not granted by this password.
6159 TRUE Group 3 privileges are granted by this password.

6160 GROUP_PERM_4_FLAG FALSE Group 4 privileges are not granted by this password.
6161 TRUE Group 4 privileges are granted by this password.

6162 GROUP_PERM_5_FLAG FALSE Group 5 privileges are not granted by this password.
6163 TRUE Group 5 privileges are granted by this password.

6164 GROUP_PERM_6_FLAG FALSE Group 6 privileges are not granted by this password.
6165 TRUE Group 6 privileges are granted by this password.

6166 GROUP_PERM_7_FLAG FALSE Group 7 privileges are not granted by this password.
6167 TRUE Group 7 privileges are granted by this password.

6168 SECURITY_ENTRY_RCD
6169 PASSWORD Password to be matched and be associated with group access
6170 permission bits.

6171 ACCESS_PERMISSIONS Group access permissions bits for this password.

6172 SECURITY_RCD
6173 SECURITY_ENTRIES Array containing a list of security limiting parameters.

Tables / Decade 4: Security Tables 153


Table 42 Security Table
DRAFT ANSI C12.19-2012

6174 9.5.4 Table 43 Default Access Control Table

6175 Table 43 Data Description

6176 DEFAULT_ACCESS_CONTROL_TBL (Table 43) is used to establish default table and procedure access
6177 permissions. These permissions are applied to any table that is not included in the ACCESS_CONTROL_TBL
6178 (Table 44).

6179 Global Default Table Property Overrides: Role=“CONTROL”

6180 Table 43 Type Definitions

6181 TYPE DEFAULT_ACCESS_TABLE_DEF_BFLD = BIT FIELD OF UINT16


6182 RESERVED : FILL(0..12);
6183 ANY_READ_FLAG : BOOL(13);
6184 ANY_WRITE_FLAG : BOOL(14);
6185 FILL2 : FILL(15..15);
6186 END;

6187 TYPE DEFAULT_ACCESS_CONTROL_RCD = PACKED RECORD


6188 ACCESS_TABLE_DEF : DEFAULT_ACCESS_TABLE_DEF_BFLD;
6189 READ : SECURITY_TBL.ACCESS_PERMISSION_BFLD;
6190 WRITE : SECURITY_TBL.ACCESS_PERMISSION_BFLD;
6191 END;

6192 TYPE DEFAULT_ACCESS_RCD = PACKED RECORD


6193 TABLE_DEFAULT : DEFAULT_ACCESS_CONTROL_RCD;
6194 PROCEDURE_DEFAULT : DEFAULT_ACCESS_CONTROL_RCD;
6195 END;

6196 TABLE 43 DEFAULT_ACCESS_CONTROL_TBL = DEFAULT_ACCESS_RCD;

6197 Table 43 Element Descriptions

6198 Identifier Value Definition


6199 DEFAULT_ACCESS_TABLE_DEF_BFLD
6200 RESERVED Reserved.

6201 ANY_READ_FLAG FALSE Any unrecognized user does not have read access permission
6202 to any tables.
6203 TRUE Any unrecognized user has read access permission to any table
6204 not defined in ACCESS_CONTROL_TBL (Table 44).

6205 ANY_WRITE_FLAG FALSE Any unrecognized user does not have write access permission
6206 to any tables.
6207 TRUE Any unrecognized user has write access permission to any
6208 table not defined in ACCESS_CONTROL_TBL (Table 44).

6209 DEFAULT_ACCESS_CONTROL_ENTRY_RCD
6210 ACCESS_TABLE_DEF Alias: ACCESS_TABLE_DEFAULT.
6211 Read and write access permissions for unrecognized users as
6212 defined above.

154
DRAFT ANSI C12.19-2012

6213 READ Group security access permission bits for users that have been
6214 recognized and request read access to tables that are not listed
6215 in the ACCESS_CONTROL_TBL (Table 44).

6216 WRITE Group security access permission bits for users that have been
6217 recognized and request write access to tables that are not listed
6218 in the ACCESS_CONTROL_TBL (Table 44).

6219 DEFAULT_ACCESS_RCD
6220 TABLE_DEFAULT Default access control for all tables, except the
6221 PROC_INITIATE_TBL (Table 07).

6222 PROCEDURE_DEFAULT Default access control for all procedures using


6223 PROC_INITIATE_TBL (Table 07).

Tables / Decade 4: Security Tables 155


Table 43 Default Access Control Table
DRAFT ANSI C12.19-2012

6224 9.5.5 Table 44 Access Control Table

6225 Table 44 Data Description

6226 ACCESS_CONTROL_TBL (Table 44) establishes table and procedure access permissions on a table-by-table and
6227 a procedure-by-procedure basis for those not using the default access level.

6228 Global Default Table Property Overrides: Role=“CONTROL”

6229 Table 44 Type Definitions

6230 TYPE ACCESS_CONTROL_ENTRY_RCD = PACKED RECORD


6231 ACCESS_TABLE_DEF : TABLE_IDC_BFLD;
6232 READ : SECURITY_TBL.ACCESS_PERMISSION_BFLD;
6233 WRITE : SECURITY_TBL.ACCESS_PERMISSION_BFLD;
6234 END;

6235 TYPE ACCESS_CONTROL_RCD = PACKED RECORD


6236 ACCESS_CONTROL :
6237 ARRAY[ACT_SECURITY_LIMITING_TBL.NBR_PERM_USED] OF
6238 ACCESS_CONTROL_ENTRY_RCD;
6239 END;

6240 TABLE 44 ACCESS_CONTROL_TBL = ACCESS_CONTROL_RCD;

6241 Table 44 Element Descriptions

6242 Identifier Value Definition


6243 TABLE_IDC_BFLD Redefines: STD.TABLE_IDC_BFLD.

6244 TBL_PROC_NBR 0..2039 Table or procedure number associated with this access
6245 permission entry.

6246 MFG_FLAG Alias: STD_VS_MFG_FLAG.


6247 FALSE Entry is a Standard table or Standard procedure.
6248 TRUE Entry is a Manufacturer table or Manufacturer procedure.

6249 PROC_FLAG FALSE Numeric ID is a table number.


6250 TRUE Numeric ID is a procedure number.

6251 UNRESTRICTED_READ_FLAG Alias: FLAG1.


6252 FALSE Associated table or procedure requires read access control bits.
6253 Only approved group members may access the associated
6254 table or procedure.
6255 TRUE Associated table or procedure has unrestricted read access.
6256 Any user may read the associated table or procedure.

6257 UNRESTRICTED_WRITE_FLAG Alias: FLAG2.


6258 FALSE Associated table or procedure requires write access control
6259 bits. Only approved group members may write to the
6260 associated table or execute the associated procedure.

156
DRAFT ANSI C12.19-2012

6261 TRUE Associated table or procedure has unrestricted write or execute


6262 permission. Any user may write into the associated table or
6263 execute the associated procedure.

6264 FLAG3 Reserved.

6265 ACCESS_CONTROL_ENTRY_RCD
6266 ACCESS_TABLE_DEF Table identification and public access control.

6267 READ Group read access control bits. See SECURITY_TBL.


6268 ACCESS_PERMISSION_BFLD (Table 42).

6269 WRITE Group write access control bits. See SECURITY_TBL.


6270 ACCESS_PERMISSION_BFLD (Table 42).

6271 ACCESS_CONTROL_RCD
6272 ACCESS_CONTROL Array containing access permission for specific table or
6273 procedure.

Tables / Decade 4: Security Tables 157


Table 44 Access Control Table
DRAFT ANSI C12.19-2012

6274 9.5.6 Table 45 Key Table

6275 Table 45 Data Description

6276 KEY_TBL (Table 45) is a table established to contain authentication and/or encryption keys.

6277 NOTE—Although it may be possible to read the KEY_TBL (Table 45), the values reported (read back) are not defined by this
6278 standard. Security best practice is to encrypt or otherwise provide access protection for this security-relevant information.

6279 Global Default Table Property Overrides: Role=“CONTROL”, Accessibility=“WRITEONLY”

6280 Table 45 Type Definitions

6281 TYPE KEY_ENTRY_RCD = PACKED RECORD


6282 KEY : BINARY(ACT_SECURITY_LIMITING_TBL.KEY_LEN);
6283 END;

6284 TYPE KEY_RCD = PACKED RECORD


6285 KEY_ENTRIES :
6286 ARRAY[ACT_SECURITY_LIMITING_TBL.NBR_KEYS] OF
6287 KEY_ENTRY_RCD;
6288 END;

6289 TABLE 45 KEY_TBL = KEY_RCD;

6290 Table 45 Element Descriptions

6291 Identifier Value Definition


6292 KEY_ENTRY_RCD
6293 KEY A key to be applied in the authentication and/or encryption
6294 processes. The use of the key is not defined by this standard.

6295 KEY_RCD
6296 KEY_ENTRIES An array of keys used to establish authentication and/or
6297 encryption.

6298 9.5.7 Table 46 Reserved

6299 9.5.8 Table 47 Reserved


6300

158
DRAFT ANSI C12.19-2012

6301 9.6 Decade 5: Time and Time-of-Use Tables

6302 Decade 5 Name

6303 TIME_OF_USE_DEC

6304 Decade 5 Data Description

6305 The tables in this Decade provide information related to the End Device date and time as well as to the Time-of-use
6306 (TOU) scheduler and event trigger operations. The rules governing the transport of date, time, and time stamp
6307 Elements within this Decade and their influence on the transport of Elements from other Decades are defined below.

6308 Date-time Elements representation during transport (HTIME_DATE, LTIME_DATE and STIME_DATE)

6309 When the End Device is programmed to transport time-related information according to representation indicated by
6310 GEN_CONFIG_TBL.TM_FORMAT, then HTIME_DATE, LTIME_DATE and STIME_DATE Elements can
6311 be represented as:

6312 End Device operational time: Date and time the End Device has been set to operate. This time is used
6313 by the End Device for doing its normal operations such as:
6314 1) Scheduling
6315 2) Display
6316 3) Triggers such as call back, load control, and so on
6317 Standard time: Date and time at the location where the End Device has been set to operate, without
6318 daylight saving time adjustment.
6319 UTC time: Universal Time Coordinated, international time standard also known as Greenwich Mean
6320 Time (GMT).

6321 In general terms:

6322 Standard time = UTC time + Time zone offset.


6323 End Device operational time = Standard time + Daylight Saving Time offset.

6324 Knowledge about the representation used by an End Device is found in the Clock Table (Table 52), Clock State
6325 Table (Table 55), or Precision Clock State Table (Table 57), Elements DST_APPLIED_FLAG and
6326 TM_ZN_APPLIED_FLAG. When these Tables are present, all common Elements shall be identical in value. At
6327 least one of these Tables shall be present when an End Device supports time (as indicated by the Final Element
6328 GEN_CONFIG_TBL.TM_FORMAT). The relation between the time representation and the
6329 DST_APPLIED_FLAG and TM_ZN_APPLIED_FLAG Final Elements is as follows:

Transported Time stamp TM_ZN_APPLIED_FLAG DST_APPLIED_FLAG


End Device operational time True True
Standard time True False
UTC time False False

6330 When implemented using TM_FORMAT=3 or TM_FORMAT=4, HTIME_DATE, LTIME_DATE, and


6331 STIME_DATE Elements shall be transported in UTC, being the number of minutes (or seconds as per selected data
6332 type) since 01/01/1970 @ 00:00:00 UTC. This implies that when these implementations are used,
6333 DST_APPLIED_FLAG and TM_ZN_APPLIED_FLAG shall be set to FALSE; also
6334 ACT_TIME_TOU_TBL.CAP_TM_ZN_OFFSET_FLAG shall be set to TRUE. For a code example on how date
6335 and time Elements can be converted to a Gregorian calendar date, see Annex H, “(informative) Date-time elements
Tables / Decade 5: Time and Time-of-Use Tables 159
DRAFT ANSI C12.19-2012

6336 conversion algorithm (TM_FORMAT=3 and TM_FORMAT=4)”.

6337 In all cases, and subject to the above conditions, the following algorithms can be used to convert transported date
6338 and time Elements to an End Device operational time or to UTC. The Elements DST_APPLIED_FLAG and
6339 TM_ZN_APPLIED_FLAG shall be retrieved from Clock Table (Table 52), Clock State Table (Table 55), or
6340 Precision Clock State Table (Table 57). In the following algorithms, it is assumed that Clock Table (Table 52) is
6341 being used.

6342 Algorithm for converting from transported End Device time to End Device operational time

6343 dateTimeField = HTIME_DATE, LTIME_DATE or STIME_DATE Element of interest

6344 if (CLOCK_TBL.TM_ZN_APPLIED_FLAG == false)

6345 dateTimeField = dateTimeField + TIME_OFFSET_TBL.TIME_ZONE_OFFSET

6346 if (dateTimeField within a Daylight Saving Time period and CLOCK_TBL.DST_APPLIED_FLAG ==


6347 false)

6348 dateTimeField = dateTimeField + TIME_OFFSET_TBL.DST_TIME_AMT

6349 dateTimeField is the End Device operational time.

6350 Algorithm for converting from transported End Device time to UTC

6351 The following is only applicable when GMT_FLAG = TRUE in Clock table (Table 52).

6352 dateTimeField = HTIME_DATE, LTIME_DATE or STIME_DATE Element of interest

6353 if (CLOCK_TBL.TM_ZN_APPLIED_FLAG == true)

6354 dateTimeField = dateTimeField - TIME_OFFSET_TBL.TIME_ZONE_OFFSET

6355 if (dateTimeField within a Daylight Saving Time period and CLOCK_TBL.DST_APPLIED_FLAG ==


6356 true)

6357 dateTimeField = dateTimeField - TIME_OFFSET_TBL.DST_TIME_AMT

6358 The dateTimeField is in UTC.

6359 Date-only and Time-only Element Representation for Transport

6360 RDATE, DATE, TIME, STIME, and HTIME Elements within Tables shall always be transported in End
6361 Device operational time.

160
DRAFT ANSI C12.19-2012

6362 9.6.1 Table 50 Time and TOU Dimension Limits Table

6363 Table 50 Data Description

6364 DIM_TIME_TOU_TBL (Table 50) defines the maximum capabilities for Date and Time clock control and Time of
6365 Use (TOU) control for the End Device.

6366 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

6367 Table 50 Type Definitions

6368 TYPE TIME_FUNC_FLAG1_BFLD = BIT FIELD OF UINT8


6369 TOU_SELF_READ_FLAG : BOOL(0);
6370 SEASON_SELF_READ_FLAG : BOOL(1);
6371 SEASON_DEMAND_RESET_FLAG : BOOL(2);
6372 SEASON_CHNG_ARMED_FLAG : BOOL(3);
6373 SORT_DATES_FLAG : BOOL(4);
6374 ANCHOR_DATE_FLAG : BOOL(5);
6375 FILLER : FILL(6..7);
6376 END;

6377 TYPE TIME_FUNC_FLAG2_BFLD = BIT FIELD OF UINT8


6378 CAP_DST_AUTO_FLAG : BOOL(0);
6379 SEPARATE_WEEKDAYS_FLAG : BOOL(1);
6380 SEPARATE_SUM_DEMANDS_FLAG : BOOL(2);
6381 SORT_TIER_SWITCHES_FLAG : BOOL(3);
6382 CAP_TM_ZN_OFFSET_FLAG : BOOL(4);
6383 FILLER : FILL(5..7);
6384 END;

6385 TYPE CALENDAR_BFLD = BIT FIELD OF UINT8


6386 NBR_SEASONS : UINT(0..3);
6387 NBR_SPECIAL_SCHED : UINT(4..7);
6388 END;

6389 TYPE TIME_TOU_RCD = PACKED RECORD


6390 TIME_FUNC_FLAG1 : TIME_FUNC_FLAG1_BFLD;
6391 TIME_FUNC_FLAG2 : TIME_FUNC_FLAG2_BFLD;
6392 CALENDAR_FUNC : CALENDAR_BFLD;
6393 NBR_NON_RECURR_DATES : UINT8;
6394 NBR_RECURR_DATES : UINT8;
6395 NBR_TIER_SWITCHES : UINT16;
6396 CALENDAR_TBL_SIZE : UINT16;
6397 END;

6398 TABLE 50 DIM_TIME_TOU_TBL = TIME_TOU_RCD;

6399 Table 50 Element Descriptions

6400 Identifier Value Definition


6401 TIME_FUNC_FLAG1_BFLD
6402 TOU_SELF_READ_FLAG FALSE End Device is not capable of TOU-triggered self-reads.
6403 TRUE End Device is capable of TOU-triggered self-reads.

Tables / Decade 5: Time and Time-of-Use Tables 161


Table 50 Time and TOU Dimension Limits Table
DRAFT ANSI C12.19-2012

6404 SEASON_SELF_READ_FLAG
6405 FALSE Self-read with season change capability does not exist.
6406 TRUE Self-read with season change capability exists.

6407 SEASON_DEMAND_RESET_FLAG
6408 FALSE Automatic demand reset with season change capability does
6409 not exist.
6410 TRUE Automatic demand reset with season change capability exists.

6411 SEASON_CHNG_ARMED_FLAG
6412 FALSE Season change arming capability does not exist.
6413 TRUE Season change arming capability exists. That is, the End
6414 Device is only armed to do a season change as a result of an
6415 indicated change of season. The actual season change does not
6416 occur until the next demand reset occurs (by manual or other
6417 means).

6418 SORT_DATES_FLAG FALSE End Device does not require the


6419 CALENDAR_TBL.NON_RECURR_DATES (Table 54) to
6420 be presorted by date (Year, Month, Day) when received.
6421 TRUE End Device requires the
6422 CALENDAR_TBL.NON_RECURR_DATES (Table 54) to
6423 be presorted by date (Year, Month, Day) when received.
6424 Nonrecurring dates starting with 1990 and ending with 2089
6425 shall occur in that order. No sorting of recurring dates, if
6426 present, is assumed.

6427 ANCHOR_DATE_FLAG FALSE End Device is not capable of accepting an anchor date for the
6428 Period/Delta RDATE type (recurring date).
6429 TRUE End Device is capable of accepting an Anchor Date for the
6430 Period/Delta RDATE type (recurring date).

6431 TIME_FUNC_FLAG2_BFLD
6432 CAP_DST_AUTO_FLAG FALSE End Device is not capable of handling daylight saving time
6433 changes independently of dates supplied by the
6434 CALENDAR_TBL (Table 54).
6435 TRUE End Device is capable of handling daylight saving time
6436 changes independently of dates supplied by the
6437 CALENDAR_TBL (Table 54).

6438 SEPARATE_WEEKDAYS_FLAG
6439 FALSE End Device is not capable of having a different schedule for
6440 each of the five weekdays.
6441 TRUE End Device is capable of having a different schedule for each
6442 of the five weekdays.

6443 SEPARATE_SUM_DEMANDS_FLAG
6444 FALSE End Device is not capable of switching summation and
6445 demands independently.
6446 TRUE End Device is capable of switching summation and demands
6447 independently.

162
DRAFT ANSI C12.19-2012

6448 SORT_TIER_SWITCHES_FLAG
6449 FALSE End Device does not require that
6450 CALENDAR_TBL.TIER_SWITCHES (Table 54) be
6451 presorted.
6452 TRUE End Device requires that
6453 CALENDAR_TBL.TIER_SWITCHES (Table 54) be
6454 presorted.

6455 CAP_TM_ZN_OFFSET_FLAG
6456 FALSE Reserved.
6457 TRUE TIME_ZONE_OFFSET is present in Time Offset Table
6458 (Table 53).

6459 CALENDAR_BFLD
6460 NBR_SEASONS 0..15 Maximum number of seasons supported by this End Device.

6461 NBR_SPECIAL_SCHED 0..12 Maximum number of special schedules supported by this End
6462 Device.
6463 13..15 Reserved.

6464 TIME_TOU_RCD
6465 TIME_FUNC_FLAG1 See TIME_FUNC_FLAG1_BFLD above.

6466 TIME_FUNC_FLAG2 See TIME_FUNC_FLAG2_BFLD above.

6467 CALENDAR_FUNC See CALENDAR_BFLD above.

6468 NBR_NON_RECURR_DATES
6469 0..255 Maximum number of nonrecurring dates supported by the End
6470 Device calendar. Each entry allows the control of one or more
6471 events like demand reset, Self-read, daylight saving time,
6472 season change, and special schedule.

6473 NBR_RECURR_DATES 0..255 Maximum number of recurring dates supported by the End
6474 Device calendar. Each entry allows the definition of a
6475 recurring event like demand reset, Self-read, daylight saving
6476 time, season change, and special schedule.

6477 NBR_TIER_SWITCHES 0..65535 Maximum number of tier switches supported by the End
6478 Device calendar. This number comprises the total collection of
6479 tier switches for all day types in the
6480 CALENDAR_TBL.DAILY_SCHEDULE_ID_MATRIX
6481 (Table 54).

6482 CALENDAR_TBL_SIZE 0..65535 Maximum Octets of data transported by CALENDAR_TBL


6483 (Table 54). This includes recurring dates, nonrecurring dates,
6484 and tier switches. Anchor date is counted even if it is unused.

Tables / Decade 5: Time and Time-of-Use Tables 163


Table 50 Time and TOU Dimension Limits Table
DRAFT ANSI C12.19-2012

6485 9.6.2 Table 51 Actual Time and TOU Limiting Table

6486 Table 51 Data Description

6487 ACT_TIME_TOU_TBL (Table 51) defines the actual capabilities for Date and Time clock control limits as well as
6488 for the Time of Use (TOU) control limits for the End Device. The data structure of this table is identical to
6489 DIM_TIME_TOU_TBL (Table 50).

6490 Global Default Table Property Overrides: Role=“ACTUAL”

6491 Table 51 Type Definitions

6492 TABLE 51 ACT_TIME_TOU_TBL = TIME_TOU_RCD;

6493 Table 51 Element Descriptions

6494 Identifier Value Definition


6495 TIME_FUNC_FLAG1_BFLD Redefines:
6496 DIM_TIME_TOU_TBL.TIME_FUNC_FLAG1_BFLD.

6497 TOU_SELF_READ_FLAG FALSE End Device TOU-triggered self-read function is disabled.


6498 TRUE End Device TOU-triggered self-read function is enabled.

6499 SEASON_SELF_READ_FLAG
6500 FALSE Self-read with season change capability function is disabled.
6501 TRUE Self-read with season change capability function is enabled.

6502 SEASON_DEMAND_RESET_FLAG
6503 FALSE Automatic demand reset season change function is disabled.
6504 TRUE Automatic demand reset season change function is enabled.

6505 SEASON_CHNG_ARMED_FLAG
6506 FALSE Season change arming function is disabled.
6507 TRUE Season change arming function is enabled. That is, the End
6508 Device is only armed to do a season change as a result of an
6509 indicated change of season. The actual season change does not
6510 occur until the next demand reset occurs (by manual or other
6511 means).

6512 SORT_DATES_FLAG FALSE End Device does not require the


6513 CALENDAR_TBL.NON_RECURR_DATES (Table 54) to
6514 be presorted by date (Year, Month, Day) when received.
6515 TRUE End Device requires the
6516 CALENDAR_TBL.NON_RECURR_DATES (Table 54) be
6517 presorted by date (Year, Month, Day) when received.
6518 Nonrecurring dates starting with 1990 and ending with 2089
6519 shall be sorted in that order. No sorting of recurring dates, if
6520 present, is required.

6521 ANCHOR_DATE_FLAG FALSE End Device does not accept an anchor date for the
6522 Period/Delta RDATE type (recurring date).
6523 TRUE End Device accepts an anchor date for the Period/Delta
6524 RDATE type (recurring date).
164
DRAFT ANSI C12.19-2012

6525 TIME_FUNC_FLAG2_BFLD Redefines: DIM_TIME_TOU_TBL.


6526 TIME_FUNC_FLAG2_BFLD.
6527 CAP_DST_AUTO_FLAG FALSE End Device is not handling daylight saving time changes
6528 independently of dates supplied by the CALENDAR_TBL
6529 (Table 54).
6530 TRUE End Device is handling daylight saving time changes
6531 independently of dates supplied by the CALENDAR_TBL
6532 (Table 54).

6533 SEPARATE_WEEKDAYS_FLAG
6534 FALSE End Device is not using a different schedule for each of the
6535 five weekdays.
6536 TRUE End Device is using a different schedule for each of the five
6537 weekdays.

6538 SEPARATE_SUM_DEMANDS_FLAG
6539 FALSE End Device is not switching summation and demands
6540 independently.
6541 TRUE End Device is switching summation and demands
6542 independently.

6543 SORT_TIER_SWITCHES_FLAG
6544 FALSE End Device does not require that
6545 CALENDAR_TBL.TIER_SWITCHES (Table 54) be
6546 presorted.
6547 TRUE End Device requires that
6548 CALENDAR_TBL.TIER_SWITCHES (Table 54) be
6549 presorted.

6550 CAP_TM_ZN_OFFSET_FLAG
6551 FALSE Reserved.
6552 TRUE TIME_ZONE_OFFSET is present in Time Offset Table
6553 (Table 53).

6554 CALENDAR_BFLD Redefines: DIM_TIME_TOU_TBL. CALENDAR_BFLD.

6555 NBR_SEASONS 0..15 Actual number of seasons in use by the End Device.

6556 NBR_SPECIAL_SCHED 0..12 Actual number of special schedules in use by the End Device.
6557 13..15 Reserved.

6558 TIME_TOU_RCD Redefines: DIM_TIME_TOU_TBL. TIME_TOU_RCD.

6559 TIME_FUNC_FLAG1 See TIME_FUNC_FLAG1_BFLD above.

6560 TIME_FUNC_FLAG2 See TIME_FUNC_FLAG2_BFLD above.

6561 CALENDAR_FUNC See CALENDAR_BFLD above.

6562
6563

Tables / Decade 5: Time and Time-of-Use Tables 165


Table 51 Actual Time and TOU Limiting Table
DRAFT ANSI C12.19-2012

6564 NBR_NON_RECURR_DATES
6565 0..255 Actual number of nonrecurring dates in use by the End Device
6566 calendar. Each entry allows the control of one or more events
6567 like demand reset, Self-read, daylight saving time, season
6568 change, and special schedule.

6569 NBR_RECURR_DATES 0..255 Actual number of recurring dates in use by the End Device
6570 calendar. Each entry allows the definition of a recurring event
6571 like demand reset, Self-read, daylight saving time, season
6572 change, and special schedule.

6573 NBR_TIER_SWITCHES 0..65535 Actual number of tier switches in use by the End Device
6574 calendar. This number comprises the total collection of tier
6575 switches for all day types in the CALENDAR_TBL.
6576 DAILY_SCHEDULE_ID_MATRIX (Table 54).

6577 CALENDAR_TBL_SIZE 0..65535 Actual Octets of data transported by CALENDAR_TBL


6578 (Table 54). This includes the recurring dates, nonrecurring
6579 dates, and tier switches.

166
DRAFT ANSI C12.19-2012

6580 9.6.3 Table 52 Clock Table

6581 Table 52 Data Description

6582 CLOCK_TBL (Table 52) provides the End Device real-time clock information. This table provides a subset of the
6583 information available for reading from CLOCK_STATE_TBL (Table 55) or
6584 PRECISION_CLOCK_STATE_TBL (Table 57).

6585 Global Default Table Property Overrides: Atomic = “true”, Role=“DATA”, Accessibility=“READONLY”

6586 Table 52 Type Definitions

6587 TYPE TIME_DATE_QUAL_BFLD = BIT FIELD OF UINT8


6588 DAY_OF_WEEK : UINT(0..2);
6589 DST_FLAG : BOOL(3);
6590 GMT_FLAG : BOOL(4);
6591 TM_ZN_APPLIED_FLAG : BOOL(5);
6592 DST_APPLIED_FLAG : BOOL(6);
6593 IF GEN_CONFIG_TBL.STD_VERSION_NO < 2 THEN
6594 FILLER : FILL(7..7);
6595 ELSE
6596 DST_SUPPORTED_FLAG : BOOL(7);
6597 END;
6598 END;

6599 TYPE CLOCK_STATE_RCD = PACKED RECORD


6600 CLOCK_CALENDAR : LTIME_DATE;
6601 TIME_DATE_QUAL : TIME_DATE_QUAL_BFLD;
6602 END;

6603 TABLE 52 CLOCK_TBL = CLOCK_STATE_RCD;

6604 Table 52 Element Descriptions

6605 Identifier Value Definition


6606 TIME_DATE_QUAL_BFLD Status qualifying the End Device time.

6607 DAY_OF_WEEK Current day of the week.


6608 0 Sunday.
6609 1 Monday.
6610 2 Tuesday.
6611 3 Wednesday.
6612 4 Thursday.
6613 5 Friday.
6614 6 Saturday.
6615 7 DAY_OF_WEEK is undefined; this field is not supported by
6616 the End Device.

6617 DST_FLAG Daylight saving time status. When DST_APPLIED_FLAG is


6618 false, there is no expectation that the state of this flag is
6619 meaningful. To determine whether this flag tracks DST, see
6620 DST_SUPPORTED_FLAG.
6621 FALSE End Device operational time is not in daylight saving time.
Tables / Decade 5: Time and Time-of-Use Tables 167
Table 52 Clock Table
DRAFT ANSI C12.19-2012

6622 TRUE End Device operational time is in daylight saving time.

6623 GMT_FLAG FALSE TIME_ZONE_OFFSET in Time Offset Table (Table 53) is


6624 not relative to GMT. The value of the
6625 TIME_ZONE_OFFSET reference is indeterminate. This
6626 value is not permitted when TM_FORMAT = 3 or
6627 TM_FORMAT = 4.
6628 TRUE TIME_ZONE_OFFSET in Time Offset Table (Table 53) is
6629 relative to GMT.

6630 TM_ZN_APPLIED_FLAG This flag and the following one (DST_APPLIED_FLAG)


6631 define the time representation (End Device operational time,
6632 Standard time or UTC time) used during the transport of date
6633 and time Elements.
6634 FALSE Time zone offset is not applied by the End Device to date and
6635 time Elements prior to transport.
6636 TRUE Time zone offset is applied by the End Device to date and
6637 time Elements prior to transport.

6638 DST_APPLIED_FLAG FALSE Daylight saving adjustment is not applied by the End Device
6639 to date and time Elements prior to transport.
6640 TRUE Daylight saving adjustment is applied by the End Device to
6641 date and time Elements prior to transport.

6642 DST_SUPPORTED_FLAG FALSE The End Device does not implement the DST_FLAG value.
6643 The DST_FLAG value shall be ignored.
6644 TRUE The End Device supports the DST_FLAG. The DST_FLAG
6645 returned is meaningful.

6646 CLOCK_STATE_RCD
6647 CLOCK_CALENDAR Current End Device time.

6648 TIME_DATE_QUAL See TIME_DATE_QUAL_BFLD.

168
DRAFT ANSI C12.19-2012

6649 9.6.4 Table 53 Time Offset Table

6650 Table 53 Data Description

6651 TIME_OFFSET_TBL (Table 53) provides time zone offset and daylight saving time information for the End
6652 Device.

6653 Global Default Table Property Overrides: Role=“CONTROL”

6654 Table 53 Type Definitions

6655 TYPE TIME_OFFSET_RCD = PACKED RECORD


6656 DST_TIME_EFF : TIME;
6657 DST_TIME_AMT : UINT8;
6658 IF ACT_TIME_TOU_TBL.CAP_TM_ZN_OFFSET_FLAG THEN
6659 TIME_ZONE_OFFSET : INT16;
6660 END;
6661 IF GEN_CONFIG_TBL.STD_VERSION_NO > 1 THEN
6662 STD_TIME_EFF : TIME;
6663 END;
6664 END;

6665 TABLE 53 TIME_OFFSET_TBL = TIME_OFFSET_RCD;

6666 Table 53 Element Descriptions

6667 Identifier Value Definition


6668 TIME_OFFSET_RCD
6669 DST_TIME_EFF The time of day the End Device shifts to daylight saving
6670 time from standard time. The date of occurrence is based on
6671 entries in the CALENDAR_TBL (Table 54) and the
6672 ACT_TIME_TOU_TBL. CAP_DST_AUTO_FLAG
6673 (Table 51) flag. This time represents the standard time just
6674 prior to the shift.

6675 DST_TIME_AMT 0..255 End Device daylight saving time adjustment specified in
6676 minutes.

6677 TIME_ZONE_OFFSET -720..780 Time zone offset is geographical displacement in minutes


6678 from GMT to the End Device standard time. It does not vary
6679 over the calendar year. It represents the number of ±1 minute
6680 segments relative to Greenwich Mean Time; negative number
6681 means west of Greenwich Mean Time.
6682 -32768..-721 Non-standard time zone.
6683 781..32767 Non-standard time zone.

6684 STD_TIME_EFF The time of day the End Device shifts from daylight saving
6685 time to standard time. The date of occurrence is based on
6686 entries in the CALENDAR_TBL (Table 54) and the
6687 ACT_TIME_TOU_TBL. CAP_DST_AUTO_FLAG
6688 (Table 51) flag. This time represents the daylight saving time
6689 just prior to the shift.

Tables / Decade 5: Time and Time-of-Use Tables 169


Table 53 Time Offset Table
DRAFT ANSI C12.19-2012

6690 9.6.5 Table 54 Calendar Table

6691 Table 54 Data Description

6692 CALENDAR_TBL (Table 54) is the schedule definition table for TOU metering activities.

6693 Global Default Table Property Overrides: Role=“CONTROL”

6694 Table 54 Type Definitions

6695 TYPE CALENDAR_ACTION_BFLD = BIT FIELD OF UINT8


6696 CALENDAR_CTRL : UINT(0..4);
6697 DEMAND_RESET_FLAG : BOOL(5);
6698 SELF_READ_FLAG : BOOL(6);
6699 FILLER : FILL(7..7);
6700 END;

6701 TYPE RECURR_DATE_RCD = PACKED RECORD


6702 RECURR_DATE : RDATE;
6703 CALENDAR_ACTION : CALENDAR_ACTION_BFLD;
6704 END;

6705 TYPE NON_RECURR_DATE_RCD = PACKED RECORD


6706 NON_RECURR_DATE : DATE;
6707 CALENDAR_ACTION : CALENDAR_ACTION_BFLD;
6708 END;

6709 TYPE TIER_SWITCH_BFLD = BIT FIELD OF UINT16


6710 NEW_TIER : UINT(0..2);
6711 IF ACT_TIME_TOU_TBL.SEPARATE_SUM_DEMANDS_FLAG THEN
6712 SUMMATION_SWITCH_FLAG : BOOL(3);
6713 DEMANDS_SWITCH_FLAG : BOOL(4);
6714 ELSE
6715 FILLER : FILL(3..4);
6716 END;
6717 SWITCH_MIN : UINT(5..10);
6718 SWITCH_HOUR : UINT(11..15);
6719 END;

6720 TYPE TIER_SWITCH_RCD = PACKED RECORD


6721 TIER_SWITCH : TIER_SWITCH_BFLD;
6722 DAY_SCH_NUM : UINT8;
6723 END;

6724 TYPE SCHEDULE_RCD = PACKED RECORD


6725 SUNDAY_SCHEDULE : UINT8;
6726 MONDAY_SCHEDULE : UINT8;
6727 TUESDAY_SCHEDULE : UINT8;
6728 WEDNESDAY_SCHEDULE : UINT8;
6729 THURSDAY_SCHEDULE : UINT8;
6730 FRIDAY_SCHEDULE : UINT8;
6731 SATURDAY_SCHEDULE : UINT8;

170
DRAFT ANSI C12.19-2012

6732 SPECIAL_SCHEDULE :
6733 ARRAY[ACT_TIME_TOU_TBL.NBR_SPECIAL_SCHED] OF
6734 UINT8;
6735 END;

6736 TYPE WEEKDAYS_SCHEDULE_RCD = PACKED RECORD


6737 SATURDAY_SCHEDULE : UINT8;
6738 SUNDAY_SCHEDULE : UINT8;
6739 WEEKDAY_SCHEDULE : UINT8;
6740 SPECIAL_SCHEDULE :
6741 ARRAY[ACT_TIME_TOU_TBL.NBR_SPECIAL_SCHED] OF
6742 UINT8;
6743 END;

6744 TYPE CALENDAR_RCD = PACKED RECORD


6745 IF ACT_TIME_TOU_TBL.ANCHOR_DATE_FLAG THEN
6746 ANCHOR_DATE : DATE;
6747 END;
6748 NON_RECURR_DATES :
6749 ARRAY[ACT_TIME_TOU_TBL.NBR_NON_RECURR_DATES]
6750 OF NON_RECURR_DATE_RCD;
6751 RECURR_DATES :
6752 ARRAY[ACT_TIME_TOU_TBL.NBR_RECURR_DATES] OF
6753 RECURR_DATE_RCD;
6754 TIER_SWITCHES :
6755 ARRAY[ACT_TIME_TOU_TBL.NBR_TIER_SWITCHES] OF
6756 TIER_SWITCH_RCD;
6757 IF ACT_TIME_TOU_TBL.SEPARATE_WEEKDAYS_FLAG THEN
6758 DAILY_SCHEDULE_ID_MATRIX :
6759 ARRAY[ACT_TIME_TOU_TBL.NBR_SEASONS] OF
6760 SCHEDULE_RCD;
6761 ELSE
6762 DAILY_SCHEDULE_ID_MATRIX :
6763 ARRAY[ACT_TIME_TOU_TBL.NBR_SEASONS] OF
6764 WEEKDAYS_SCHEDULE_RCD;
6765 END;
6766 END;

6767 TABLE 54 CALENDAR_TBL = CALENDAR_RCD;

6768 Table 54 Element Descriptions

6769 Identifier Value Definition


6770 CALENDAR_ACTION_BFLD
6771 CALENDAR_CTRL Number specifying the calendar action that takes place on the date
6772 specified.

6773 Daylight Saving Time On/Off


6774 Daylight Saving Time On and Off actions cause a time adjustment to
6775 be made at TIME_OFFSET_TBL.DST_TIME_EFF (Table 53)
6776 time. If TIME_OFFSET_TBL (Table 53) is not supported, the time
6777 adjustment is made at 02:00 A.M. and the time adjustment equals one
6778 (1) hour.

Tables / Decade 5: Time and Time-of-Use Tables 171


Table 54 Calendar Table
DRAFT ANSI C12.19-2012

6779 If ACT_TIME_TOU_TBL.CAP_DST_AUTO_FLAG (Table 51) =


6780 TRUE, then Daylight Saving Time On/Off actions in this table are
6781 ignored.

6782 Season Changes


6783 If ACT_TIME_TOU_TBL.SEASON_CHNG_ARMED_FLAG
6784 (Table 51) = FALSE, a season change action causes a season change
6785 to occur at 00:00 A.M. hours on the date specified. If
6786 ACT_TIME_TOU_TBL. SEASON_CHNG_ARMED_FLAG
6787 (Table 51) = TRUE, a season change action “arms” a season change,
6788 but the season change will not occur until the next demand reset.

6789 If ACT_TIME_TOU_TBL. SEASON_DEMAND_RESET_FLAG


6790 (Table 51) = TRUE, a season change causes a demand reset to occur
6791 automatically.

6792 A Self-read of the current register data is saved in the


6793 SELF_READ_DATA_TBL (Table 26) if ACT_TIME_TOU_TBL.
6794 SEASON_SELF_READ_FLAG (Table 51) = TRUE when the
6795 season change occurs.

6796 If GEN_CONFIG_TBL.STD_TBLS_USED.
6797 PREVIOUS_SEASON_DATA_TBL (Table 00) = TRUE, a season
6798 change causes a copy of the current register data to be saved in the
6799 PREVIOUS_SEASON_DATA_TBL (Table 24).

6800 Special Schedules


6801 Special schedules are used for holidays or other special daily
6802 schedules. These schedules take effect at midnight (00:00 A.M.) and
6803 end 24 hours later (23:59 P.M.). The special schedule takes
6804 precedence over the normal day of week schedule.

6805 End of List


6806 End of List Action is used to trigger a notification that the
6807 CALENDAR_TBL (Table 54) entries are approaching expiration.
6808 Notification is by history message, display, or other means provided
6809 by the device End Device.

6810 0 No Action.
6811 1 Daylight Saving Time On.
6812 2 Daylight Saving Time Off.
6813 3..17 Select Season 0 through Season 14.
6814 18 Reserved.
6815 19..30 Select Special Schedule 0 through Special Schedule 11.
6816 31 End Of List.

6817 DEMAND_RESET_FLAG
6818 FALSE Demand reset shall not occur.
6819 TRUE Demand reset shall occur at 00:00 A.M. on the date specified.

6820 If GEN_CONFIG_TBL.STD_TBLS_USED.
6821 PREVIOUS_DEMAND_RESET_DATA_TBL (Table 00) = TRUE,

172
DRAFT ANSI C12.19-2012

6822 a Demand Reset causes data to be saved in


6823 PREVIOUS_DEMAND_RESET_DATA_TBL (Table 25).

6824 If ACT_REGS_TBL. SELF_READ_DEMAND_RESET (Table 21)


6825 = 1 or 3, a Self-read shall occur in conjunction with the demand reset.

6826 SELF_READ_FLAG FALSE Self-read shall not occur.


6827 TRUE Self-read shall occur at 00:00 A.M. on the date specified.

6828 If ACT_REGS_TBL. SELF_READ_DEMAND_RESET (Table 21)


6829 = 2 or 3, a demand reset shall occur in conjunction with the Self-read.

6830 RECURR_DATE_RCD
6831 RECURR_DATE Date definition of a recurring event. The recurrence can be yearly,
6832 monthly, or weekly. The recurring event is referenced to midnight.

6833 CALENDAR_ACTION Defined action that shall take place on this date. See
6834 CALENDAR_ACTION_BFLD above.

6835 NON_RECURR_DATE_RCD
6836 NON_RECURR_DATE Nonrecurring event date. Action shall occur at midnight.

6837 CALENDAR_ACTION Defined action that shall take place on this date. See
6838 CALENDAR_ACTION_BFLD above.

6839 TIER_SWITCH_BFLD
6840 NEW_TIER 0..7 Identifies the tier number that becomes effective at the time specified
6841 in the tier switch on the daily schedule type defined by the
6842 DAILY_SCHEDULE_ID_MATRIX.

6843 SUMMATION_SWITCH_FLAG Specifies whether or not this tier switch selects a new tier for
6844 summations. Only used when ACT_TIME_TOU_TBL.
6845 SEPARATE_SUM_DEMANDS_FLAG (Table 51) = TRUE.
6846 FALSE Tier switch is not specified for summations.
6847 TRUE Tier switch is specified for summations.

6848 DEMANDS_SWITCH_FLAG Specifies whether or not this tier switch selects a new tier for
6849 demands. Only used when ACT_TIME_TOU_TBL.
6850 SEPARATE_SUM_DEMANDS_FLAG (Table 51) = TRUE.
6851 FALSE Tier switch is not specified for demands.
6852 TRUE Tier switch is specified for demands.

6853 SWITCH_MIN 0..59 Minute when the tier switch occurs.


6854 60..63 Reserved.

6855 SWITCH_HOUR 0..23 Hour when the tier switch occurs.


6856 24..31 Reserved.

6857 TIER_SWITCH_RCD
6858 TIER_SWITCH Defines a switch point for a certain day type defined by the
6859 DAILY_SCHEDULE_ID_MATRIX.

6860 DAY_SCH_NUM 0..255 Specifies the daily schedule type associated with the tier switch. All
6861 identifiers are stored in the DAILY_SCHEDULE_ID_MATRIX.

Tables / Decade 5: Time and Time-of-Use Tables 173


Table 54 Calendar Table
DRAFT ANSI C12.19-2012

6862 SCHEDULE_RCD
6863 SUNDAY_SCHEDULE 0..255 Daily schedule selector programmed for Sunday.

6864 MONDAY_SCHEDULE 0..255 Daily schedule selector programmed for Monday.

6865 TUESDAY_SCHEDULE 0..255 Daily schedule selector programmed for Tuesday.

6866 WEDNESDAY_SCHEDULE 0..255 Daily schedule selector programmed for Wednesday.

6867 THURSDAY_SCHEDULE
6868 0..255 Daily schedule selector programmed for Thursday.

6869 FRIDAY_SCHEDULE 0..255 Daily schedule selector programmed for Friday.

6870 SATURDAY_SCHEDULE
6871 0..255 Daily schedule selector programmed for Saturday.

6872 SPECIAL_SCHEDULE Array of special schedule selectors programmed.

6873 WEEKDAYS_SCHEDULE_RCD
6874 SATURDAY_SCHEDULE
6875 0..255 Daily schedule selector programmed for Saturday.

6876 SUNDAY_SCHEDULE 0..255 Daily schedule selector programmed for Sunday.

6877 WEEKDAY_SCHEDULE
6878 0..255 Daily schedule selector programmed for Monday to Friday.

6879 SPECIAL_SCHEDULE Array of special schedule selectors programmed.

6880 CALENDAR_RCD
6881 ANCHOR_DATE Anchor date is only used in conjunction with an RDATE type
6882 recurring date using the PERIOD/OFFSET mechanism. See 6.3.2,
6883 “RDATE type”. If specified, any recurring date using the
6884 PERIOD/OFFSET type shall use this date as a starting date.

6885 NON_RECURR_DATES Array containing nonrecurring dates.

6886 RECURR_DATES Array containing recurring dates.

6887 TIER_SWITCHES Array that contains the tier switches.

6888 DAILY_SCHEDULE_ID_MATRIX An array containing daily schedule selectors. The calendar choice of
6889 selector is used to tie tier switch entries (See TIER_SWITCH_RCD.
6890 DAY_SCH_NUM) to specific daily schedules. An example of a daily
6891 schedule is Special Schedule 1 in Season 2 or Saturday Day Type in
6892 Season 1.

6893 The assignment of selector values is left to the utility’s discretion.

6894 If ACT_TIME_TOU_TBL.SEPARATE_WEEKDAYS_FLAG
6895 = TRUE, the End Device is programmed with a different schedule for
6896 each of the five weekdays, Sunday, Saturday, and the special schedules.
6897 See SCHEDULE_RCD. SPECIAL_SCHEDULE.
174
DRAFT ANSI C12.19-2012

6898 If ACT_TIME_TOU_TBL.SEPARATE_WEEKDAYS_FLAG =
6899 FALSE, the End Device has a common schedule for all of the five
6900 weekdays, and separate schedules for Sunday, Saturday, and the
6901 special schedules. See WEEKDAYS_SCHEDULE_RCD.
6902 SPECIAL_SCHEDULE.

Tables / Decade 5: Time and Time-of-Use Tables 175


Table 54 Calendar Table
DRAFT ANSI C12.19-2012

6903 9.6.6 Table 55 Clock State Table

6904 Table 55 Data Description

6905 CLOCK_STATE_TBL (Table 55) provides the End Device real-time clock information that is accurate to the
6906 nearest second. For highest real-time clock precision reading, see PRECISION_CLOCK_STATE_TBL
6907 (Table 57).

6908 Global Default Table Property Overrides: Atomic = “true”, Role=“DATA”, Accessibility=“READONLY”

6909 Table 55 Type Definitions

6910 TYPE STATUS_BFLD = BIT FIELD OF UINT16


6911 IF ACT_TIME_TOU_TBL.SEPARATE_SUM_DEMANDS_FLAG THEN
6912 CURR_SUMM_TIER : UINT(0..2);
6913 CURR_DEMAND_TIER : UINT(3..5);
6914 ELSE
6915 CURR_TIER : UINT(0..2);
6916 FILLER : FILL(3..5);
6917 END;
6918 TIER_DRIVE : UINT(6..7);
6919 SPECIAL_SCHD_ACTIVE : UINT(8..11);
6920 SEASON : UINT(12..15);
6921 END;

6922 TYPE CLOCK_STATE_RCD = PACKED RECORD


6923 CLOCK_CALENDAR : LTIME_DATE;
6924 TIME_DATE_QUAL : CLOCK_TBL.TIME_DATE_QUAL_BFLD;
6925 STATUS : STATUS_BFLD;
6926 END;

6927 TABLE 55 CLOCK_STATE_TBL = CLOCK_STATE_RCD;

6928 Table 55 Element Descriptions

6929 Identifier Value Definition


6930 STATUS_BFLD The status of the active TOU tier.

6931 CURR_SUMM_TIER 0..7 Active tier corresponding to summations. This Element is only
6932 used when the capability flag ACT_TIME_TOU_TBL.
6933 SEPARATE_SUM_DEMANDS_FLAG (Table 51) =
6934 TRUE.

6935 CURR_DEMAND_TIER 0..7 Active tier corresponding to demands. This Element is only
6936 used when the capability flag ACT_TIME_TOU_TBL.
6937 SEPARATE_SUM_DEMANDS_FLAG (Table 51) =
6938 TRUE.

6939 CURR_TIER 0..7 Number representing the tier that is currently active in the End
6940 Device. This Element is only used when the capability flag
6941 ACT_TIME_TOU_TBL.
6942 SEPARATE_SUM_DEMANDS_FLAG (Table 51) =
6943 FALSE.
176
DRAFT ANSI C12.19-2012

6944 TIER_DRIVE Tier drive source.


6945 0 Tier selection is controlled by
6946 CALENDAR_TBL.TIER_SWITCHES (Table 54).
6947 1..3 Tier selection is not controlled by this standard.

6948 SPECIAL_SCHD_ACTIVE
6949 0..11 Active special schedule number.
6950 12..14 Reserved.
6951 15 No special schedule active.

6952 SEASON 0..15 Number representing the season that is currently active in the
6953 End Device.

6954 CLOCK_STATE_RCD
6955 CLOCK_CALENDAR Current End Device date and time.
6956 TIME_DATE_QUAL See CLOCK_TBL.TIME_DATE_QUAL_BFLD.

6957 STATUS See STATUS_BFLD.

Tables / Decade 5: Time and Time-of-Use Tables 177


Table 55 Clock State Table
DRAFT ANSI C12.19-2012

6958 9.6.7 Table 56 Time Remaining Table

6959 Table 56 Data Description

6960 TIME_REMAIN_TBL (Table 56) provides predictive time quantities.

6961 Global Default Table Property Overrides: Atomic = “true”, Role=“DATA”, Accessibility=“READONLY”

6962 Table 56 Type Definitions

6963 TYPE TIME_REMAIN_RCD = PACKED RECORD


6964 IF ACT_TIME_TOU_TBL.SEPARATE_SUM_DEMANDS_FLAG THEN
6965 SUMM_TIER_TIME_REMAIN : UINT16;
6966 DEMAND_TIER_TIME_REMAIN : UINT16;
6967 ELSE
6968 TIER_TIME_REMAIN : UINT16;
6969 END;
6970 SELF_READ_DAYS_REMAIN : UINT8;
6971 END;

6972 TABLE 56 TIME_REMAIN_TBL = TIME_REMAIN_RCD;

6973 Table 56 Element Descriptions

6974 Identifier Value Definition


6975 TIME_REMAIN_RCD
6976 SUMM_TIER_TIME_REMAIN
6977 0..65535 Minutes remaining until the next tier change that affects summations.
6978 Used when the capability flag ACT_TIME_TOU_TBL.
6979 SEPARATE_SUM_DEMANDS_FLAG (Table 51) = TRUE.

6980 DEMAND_TIER_TIME_REMAIN
6981 0..65535 Minutes remaining before the next tier change that affects demands.
6982 Used when the capability flag ACT_TIME_TOU_TBL.
6983 SEPARATE_SUM_DEMANDS_FLAG (Table 51) = TRUE.

6984 TIER_TIME_REMAIN 0..65535 Minutes remaining before the next tier change.

6985 SELF_READ_DAYS_REMAIN
6986 0..255 Days remaining before the next scheduled Self-read.

178
DRAFT ANSI C12.19-2012

6987 9.6.8 Table 57 Precision Clock State Table

6988 Table 57 Data Description

6989 PRECISION_CLOCK_STATE_TBL (Table 57) provides the End Device real-time clock information with
6990 increased time precision using the HTIME_DATE data type. It is identical to CLOCK_STATE_TBL (Table 55)
6991 except for the extra sub-second precision capability offered.

6992 Global Default Table Property Overrides: Atomic = “true”, Role=“DATA”, Accessibility=“READONLY”

6993 Table 57 Type Definitions

6994 TYPE CLOCK_STATE_RCD = PACKED RECORD


6995 CLOCK_CALENDAR : HTIME_DATE;
6996 TIME_DATE_QUAL : CLOCK_TBL.TIME_DATE_QUAL_BFLD;
6997 STATUS : CLOCK_STATE_TBL.STATUS_BFLD;
6998 END;

6999 TABLE 57 PRECISION_CLOCK_STATE_TBL = CLOCK_STATE_RCD;

7000 Table 57 Element Descriptions

7001 Identifier Value Definition


7002 CLOCK_STATE_RCD
7003 CLOCK_CALENDAR Current End Device high-precision date and time.

7004 TIME_DATE_QUAL See CLOCK_TBL.TIME_DATE_QUAL_BFLD.

7005 STATUS See CLOCK_STATE_TBL.STATUS_BFLD.

Tables / Decade 5: Time and Time-of-Use Tables 179


Table 57 Precision Clock State Table
DRAFT ANSI C12.19-2012

7006 9.7 Decade 6: Load Profile Tables

7007 Decade 6 Name

7008 LOAD_PROFILE_DEC

7009 Decade 6 Data Description

7010 These Tables provide structures for Load Profile data.

7011 9.7.1 Table 60 Load Profile Dimension Limits Table

7012 Table 60 Data Description

7013 DIM_LP_TBL (Table 60) specifies the maximum dimensional values and control selectors and options for Load
7014 Profile data. This Decade provides for up to four independent sets of Load Profile data.

7015 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

7016 Table 60 Type Definitions

7017 TYPE LP_FLAGS_BFLD = BIT Field OF UINT16


7018 LP_SET1_INHIBIT_OVF_FLAG : BOOL(0);
7019 LP_SET2_INHIBIT_OVF_FLAG : BOOL(1);
7020 LP_SET3_INHIBIT_OVF_FLAG : BOOL(2);
7021 LP_SET4_INHIBIT_OVF_FLAG : BOOL(3);
7022 BLK_END_READ_FLAG : BOOL(4);
7023 BLK_END_PULSE_FLAG : BOOL(5);
7024 SCALAR_DIVISOR_FLAG_SET1 : BOOL(6);
7025 SCALAR_DIVISOR_FLAG_SET2 : BOOL(7);
7026 SCALAR_DIVISOR_FLAG_SET3 : BOOL(8);
7027 SCALAR_DIVISOR_FLAG_SET4 : BOOL(9);
7028 EXTENDED_INT_STATUS_FLAG : BOOL(10);
7029 SIMPLE_INT_STATUS_FLAG : BOOL(11);
7030 BLK_END_RD_INDICATOR_FLAG : BOOL(12);
7031 FILLER : FILL (13..15);
7032 END;

7033 TYPE LP_FMATS_BFLD = BIT FIELD OF UINT8


7034 INV_UINT8_FLAG : BOOL(0);
7035 INV_UINT16_FLAG : BOOL(1);
7036 INV_UINT32_FLAG : BOOL(2);
7037 INV_INT8_FLAG : BOOL(3);
7038 INV_INT16_FLAG : BOOL(4);
7039 INV_INT32_FLAG : BOOL(5);
7040 INV_NI_FMAT1_FLAG : BOOL(6);
7041 INV_NI_FMAT2_FLAG : BOOL(7);
7042 END;

7043 TYPE LP_SET_RCD = PACKED RECORD


7044 LP_MEMORY_LEN : UINT32;
7045 LP_FLAGS : LP_FLAGS_BFLD;
7046 LP_FMATS : LP_fMATS_BFLD;
7047 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET1_TBL] THEN
180
DRAFT ANSI C12.19-2012

7048 NBR_BLKS_SET1 : UINT16;


7049 NBR_BLK_INTS_SET1 : UINT16;
7050 NBR_CHNS_SET1 : UINT8;
7051 MAX_INT_TIME_SET1 : UINT8;
7052 END;
7053 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET2_TBL] THEN
7054 NBR_BLKS_SET2 : UINT16;
7055 NBR_BLK_INTS_SET2 : UINT16;
7056 NBR_CHNS_SET2 : UINT8;
7057 MAX_INT_TIME_SET2 : UINT8;
7058 END;
7059 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET3_TBL] THEN
7060 NBR_BLKS_SET3 : UINT16;
7061 NBR_BLK_INTS_SET3 : UINT16;
7062 NBR_CHNS_SET3 : UINT8;
7063 MAX_INT_TIME_SET3 : UINT8;
7064 END;
7065 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET4_TBL] THEN
7066 NBR_BLKS_SET4 : UINT16;
7067 NBR_BLK_INTS_SET4 : UINT16;
7068 NBR_CHNS_SET4 : UINT8;
7069 MAX_INT_TIME_SET4 : UINT8;
7070 END;
7071 END;

7072 TABLE 60 DIM_LP_TBL = LP_SET_RCD;

7073 Table 60 Element Descriptions

7074 Identifier Value Definition


7075 LP_FLAGS_BFLD This bit field specifies Load Profile list management
7076 capabilities.

7077 LP_SET1_INHIBIT_OVF_FLAG
7078 FALSE End Device is not capable of inhibiting Load Profile set 1 once
7079 an overflow occurs.
7080 TRUE End Device is capable of inhibiting Load Profile set 1 once an
7081 overflow occurs.

7082 LP_SET2_INHIBIT_OVF_FLAG
7083 FALSE End Device is not capable of inhibiting Load Profile set 2 once
7084 an overflow occurs.
7085 TRUE End Device is capable of inhibiting Load Profile set 2 once an
7086 overflow occurs.

7087 LP_SET3_INHIBIT_OVF_FLAG
7088 FALSE End Device is not capable of inhibiting Load Profile set 3 once
7089 an overflow occurs.
7090 TRUE End Device is capable of inhibiting Load Profile set 3 once an
7091 overflow occurs.

7092
7093

Tables / Decade 6: Load Profile Tables 181


Table 60 Load Profile Dimension Limits Table
DRAFT ANSI C12.19-2012

7094 LP_SET4_INHIBIT_OVF_FLAG
7095 FALSE End Device is not capable of inhibiting Load Profile set 4 once
7096 an overflow occurs.
7097 TRUE End Device is capable of inhibiting Load Profile set 4 once an
7098 overflow occurs.

7099 BLK_END_READ_FLAG FALSE End Device is not capable of providing block-end Register
7100 reading information.
7101 TRUE The End Device is capable of providing block-end Register
7102 reading information.

7103 BLK_END_PULSE_FLAG FALSE End Device is not capable of providing block-end pulse
7104 accumulator data.
7105 TRUE The End Device is capable of providing block-end pulse
7106 accumulator data.

7107 SCALAR_DIVISOR_FLAG_SET1
7108 FALSE End Device is not capable of having scalars and divisors
7109 associated with set 1 Load Profile interval data.
7110 TRUE End Device is capable of having scalars and divisors
7111 associated with set 1 Load Profile interval data.

7112 SCALAR_DIVISOR_FLAG_SET2
7113 FALSE End Device is not capable of having scalars and divisors
7114 associated with set 2 Load Profile interval data.
7115 TRUE End Device is capable of having scalars and divisors
7116 associated with set 2 Load Profile interval data.

7117 SCALAR_DIVISOR_FLAG_SET3
7118 FALSE End Device is not capable of having scalars and divisors
7119 associated with set 3 Load Profile interval data.
7120 TRUE End Device is capable of having scalars and divisors
7121 associated with set 3 Load Profile interval data.

7122 SCALAR_DIVISOR_FLAG_SET4
7123 FALSE End Device is not capable of having scalars and divisors
7124 associated with set 4 Load Profile interval data.
7125 TRUE End Device is capable of having scalars and divisors
7126 associated with set 4 Load Profile interval data.

7127 EXTENDED_INT_STATUS_FLAG
7128 FALSE End Device is not capable of returning extended interval status
7129 with Load Profile interval data.
7130 TRUE End Device is capable of returning extended interval status
7131 with Load Profile interval data.

7132 SIMPLE_INT_STATUS_FLAG
7133 FALSE End Device is not capable of returning simple interval status
7134 with Load Profile interval data.
7135 TRUE End Device is capable of returning simple interval status with
7136 Load Profile interval data.

7137
7138

182
DRAFT ANSI C12.19-2012

7139 BLK_END_RD_INDICATOR_FLAG
7140 FALSE Block-end readings (END_READINGS) are cumulative
7141 across all blocks.
7142 TRUE Block-end readings (END_READINGS) are cumulative only
7143 across the associated block.

7144 LP_FMATS_BFLD This set of booleans specifies the format(s) acceptable for use
7145 in DIM_LP_TBL (Table 60) and ACT_LP_TBL (Table 61).

7146 INV_UINT8_FLAG FALSE UINT8 format for intervals is not capable of being used.
7147 TRUE An interval format of UINT8 is capable of being used.

7148 INV_UINT16_FLAG FALSE UINT16 format for intervals is not capable of being used.
7149 TRUE An interval format of UINT16 is capable of being used.

7150 INV_UINT32_FLAG FALSE UINT32 format for intervals is not capable of being used.
7151 TRUE An interval format of UINT32 is capable of being used.

7152 INV_INT8_FLAG FALSE INT8 format for intervals is not capable of being used.
7153 TRUE An interval format of INT8 is capable of being used.

7154 INV_INT16_FLAG FALSE INT16 format for intervals is not capable of being used.
7155 TRUE An interval format of INT16 is capable of being used.

7156 INV_INT32_FLAG FALSE INT32 format for intervals is not capable of being used.
7157 TRUE An interval format of INT32 is capable of being used.

7158 INV_NI_FMAT1_FLAG FALSE NI_FMAT1 format for intervals is not capable of being used.
7159 TRUE An interval format of NI_FMAT1 is capable of being used.

7160 INV_NI_FMAT2_FLAG FALSE NI_FMAT2 format for intervals is not capable of being used.
7161 TRUE An interval format of NI_FMAT2 is capable of being used.

7162 LP_SET_RCD This record contains information defining how each set of
7163 Load Profile information works.

7164 LP_MEMORY_LEN 0..4294967295


7165 Maximum number of Octets of storage available for Load
7166 Profile data. This reflects the combined sizes of tables
7167 LP_DATA_SET1_TBL (Table 64), LP_DATA_SET2_TBL
7168 (Table 65), LP_DATA_SET3_TBL (Table 66), and
7169 LP_DATA_SET4_TBL (Table 67).

7170 LP_FLAGS See LP_FLAGS_BFLD.

7171 LP_FMATS See LP_FMATS_BFLD.

7172 NBR_BLKS_SET1 0..65535 Maximum number of blocks that can be contained in


7173 LP_DATA_SET1_TBL (Table 64).

7174 NBR_BLK_INTS_SET1 0..65535 Maximum number of intervals per block that can be contained
7175 in LP_DATA_SET1_TBL (Table 64).

Tables / Decade 6: Load Profile Tables 183


Table 60 Load Profile Dimension Limits Table
DRAFT ANSI C12.19-2012

7176 NBR_CHNS_SET1 0..255 Maximum number of channels of Load Profile data that can be
7177 contained in LP_DATA_SET1_TBL (Table 64).

7178 MAX_INT_TIME_SET1 0..255 Maximum time in minutes for Load Profile interval duration
7179 that can be contained in LP_DATA_SET1_TBL (Table 64).

7180 NBR_BLKS_SET2 0..65535 Maximum number of blocks that can be contained in


7181 LP_DATA_SET2_TBL (Table 65).

7182 NBR_BLK_INTS_SET2 0..65535 Maximum number of intervals per block that can be contained
7183 in LP_DATA_SET2_TBL (Table 65).

7184 NBR_CHNS_SET2 0..255 Maximum number of channels of Load Profile data that can be
7185 contained in LP_DATA_SET2_TBL (Table 65).

7186 MAX_INT_TIME_SET2 0..255 Maximum time in minutes for Load Profile interval duration
7187 that can be contained in LP_DATA_SET2_TBL (Table 65).

7188 NBR_BLKS_SET3 0..65535 Maximum number of blocks that can be contained in


7189 LP_DATA_SET3_TBL (Table 66).

7190 NBR_BLK_INTS_SET3 0..65535 Maximum number of intervals per block that can be contained
7191 in LP_DATA_SET3_TBL (Table 66).

7192 NBR_CHNS_SET3 0..255 Maximum number of channels of Load Profile data that can be
7193 contained in LP_DATA_SET3_TBL (Table 66).

7194 MAX_INT_TIME_SET3 0..255 Maximum time in minutes for Load Profile interval duration
7195 that can be contained in LP_DATA_SET3_TBL (Table 66).

7196 NBR_BLKS_SET4 0..65535 Maximum number of blocks that can be contained in


7197 LP_DATA_SET4_TBL (Table 67).

7198 NBR_BLK_INTS_SET4 0..65535 Maximum number of intervals per block that can be contained
7199 in LP_DATA_SET4_TBL (Table 67).

7200 NBR_CHNS_SET4 0..255 Maximum number of channels of Load Profile data that can be
7201 contained in LP_DATA_SET4_TBL (Table 67).

7202 MAX_INT_TIME_SET4 0..255 Maximum time in minutes for Load Profile interval duration
7203 that can be contained in LP_DATA_SET4_TBL (Table 67).

184
DRAFT ANSI C12.19-2012

7204 9.7.2 Table 61 Actual Load Profile Limiting Table

7205 Table 61 Data Description

7206 ACT_LP_TBL (Table 61) contains actual dimensions for Load Profile data. This Decade provides for up to four
7207 independent sets of Load Profile data.

7208 Global Default Table Property Overrides: Role=“ACTUAL”

7209 Table 61 Type Definitions

7210 TABLE 61 ACT_LP_TBL = LP_SET_RCD;

7211 Table 61 Element Descriptions

7212 Identifier Value Definition


7213 LP_FLAGS_BFLD This bit field specifies Load Profile list management
7214 capabilities.
7215 Redefines: DIM_LP_TBL.LP_FLAGS_BFLD.

7216 LP_SET1_INHIBIT_OVF_FLAG
7217 FALSE End Device is not inhibiting Load Profile set 1 once an
7218 overflow occurs.
7219 TRUE End Device is inhibiting Load Profile set 1 once an overflow
7220 occurs.

7221 LP_SET2_INHIBIT_OVF_FLAG
7222 FALSE End Device is not inhibiting Load Profile set 2 once an
7223 overflow occurs.
7224 TRUE End Device is inhibiting Load Profile set 2 once an overflow
7225 occurs.

7226 LP_SET3_INHIBIT_OVF_FLAG
7227 FALSE End Device is not inhibiting Load Profile set 3 once an
7228 overflow occurs.
7229 TRUE End Device is inhibiting Load Profile set 3 once an overflow
7230 occurs.

7231 LP_SET4_INHIBIT_OVF_FLAG
7232 FALSE End Device is not inhibiting Load Profile set 4 once an
7233 overflow occurs.
7234 TRUE End Device is inhibiting Load Profile set 4 once an overflow
7235 occurs.

7236 BLK_END_READ_FLAG FALSE End Device is not providing block-end register reading
7237 information.
7238 TRUE End Device is providing block-end register reading
7239 information. Although it is possible for
7240 BLK_END_READ_FLAG and BLK_END_PULSE_FLAG
7241 to both be set to TRUE, this combination shall not be used.

7242 BLK_END_PULSE_FLAG FALSE End Device does not have block-end pulse accumulator data.

Tables / Decade 6: Load Profile Tables 185


Table 61 Actual Load Profile Limiting Table
DRAFT ANSI C12.19-2012

7243 TRUE End Device has block-end pulse accumulator data. Although it
7244 is possible for BLK_END_READ_FLAG and
7245 BLK_END_PULSE_FLAG to both be set to TRUE, this
7246 combination shall not be used.

7247 SCALAR_DIVISOR_FLAG_SET1
7248 FALSE End Device does not have scalars and divisors associated with
7249 set 1 Load Profile interval data.
7250 TRUE End Device does have scalars and divisors associated with set
7251 1 Load Profile interval data.

7252 SCALAR_DIVISOR_FLAG_SET2
7253 FALSE End Device does not have scalars and divisors associated with
7254 set 2 Load Profile interval data.
7255 TRUE The End Device has scalars and divisors associated with set 2
7256 Load Profile interval data.

7257 SCALAR_DIVISOR_FLAG_SET3
7258 FALSE End Device does not have scalars and divisors associated with
7259 set 3 Load Profile interval data.
7260 TRUE End Device does have scalars and divisors associated with set
7261 3 Load Profile interval data.

7262 SCALAR_DIVISOR_FLAG_SET4
7263 FALSE End Device does not have scalars and divisors associated with
7264 set 4 Load Profile interval data.
7265 TRUE End Device does have scalars and divisors associated with set
7266 4 Load Profile interval data.

7267 EXTENDED_INT_STATUS_FLAG
7268 FALSE End Device does not return extended interval status with Load
7269 Profile interval data.
7270 TRUE End Device returns extended interval status with Load Profile
7271 interval data.

7272 SIMPLE_INT_STATUS_FLAG FALSE End Device does not return simple interval status
7273 with Load Profile interval data.
7274 TRUE End Device returns simple interval status with Load Profile
7275 interval data.

7276 BLK_END_RD_INDICATOR_FLAG The end block reading flag. When DIM_LP_TBL (Table 60)
7277 and ACT_LP_TBL (Table 61) are both present, then they
7278 shall have identical values for
7279 BLK_END_RD_INDICATOR_FLAG.
7280 FALSE Block-end readings (END_READINGS) are cumulative
7281 across all blocks.
7282 TRUE Block-end readings (END_READINGS) are only across the
7283 associated block.

7284 LP_FMATS_BFLD This set of Booleans specifies the format(s) in use in


7285 LP_CTRL_TBL (Table 62).
7286 Redefines: DIM_LP_TBL.LP_FMATS_BFLD.

186
DRAFT ANSI C12.19-2012

7287 INV_UINT8_FLAG FALSE UINT8 format is not in use.


7288 TRUE An interval format of UINT8 is being used.

7289 INV_UINT16_FLAG FALSE UINT16 format is not in use.


7290 TRUE An interval format of UINT16 is being used.

7291 INV_UINT32_FLAG FALSE UINT32 format is not in use.


7292 TRUE An interval format of UINT32 can be used.

7293 INV_INT8_FLAG FALSE INT8 format is not in use.


7294 TRUE An interval format of INT8 is being used.

7295 INV_INT16_FLAG FALSE INT16 format is not in use.


7296 TRUE An interval format of INT16 is being used.

7297 INV_INT32_FLAG FALSE INT32 format is not in use.


7298 TRUE An interval format of INT32 is being used.

7299 INV_NI_FMAT1_FLAG FALSE NI_FMAT1 format is not in use.


7300 TRUE An interval format of NI_FMAT1 is being used.

7301 INV_NI_FMAT2_FLAG FALSE NI_FMAT2 format is not in use.


7302 TRUE An interval format of NI_FMAT2 is being used.

7303 LP_SET_RCD This record contains information defining each set of Load
7304 Profile information.
7305 Redefines: DIM_LP_TBL.LP_SET_RCD.

7306 LP_MEMORY_LEN 0..4294967295 Current number of Octets of storage being used for Load
7307 Profile data. This reflects the combined sizes of
7308 LP_DATA_SET1_TBL (Table 64), LP_DATA_SET2_TBL
7309 (Table 65), LP_DATA_SET3_TBL (Table 66), and
7310 LP_DATA_SET4_TBL (Table 67).

7311 LP_FLAGS See LP_FLAGS_BFLD.

7312 LP_FMATS See LP_FMATS_BFLD.

7313 NBR_BLKS_SET1 0..65535 Actual number of blocks in use in LP_DATA_SET1_TBL


7314 (Table 64).

7315 NBR_BLK_INTS_SET1 0..65535 Actual number of intervals per block contained in


7316 LP_DATA_SET1_TBL (Table 64).

7317 NBR_CHNS_SET1 0..255 Actual number of channels of Load Profile data contained in
7318 LP_DATA_SET1_TBL (Table 64).

7319 MAX_INT_TIME_SET1 0..255 Actual interval duration in minutes for Load Profile contained
7320 in LP_DATA_SET1_TBL (Table 64).

7321 NBR_BLKS_SET2 0..65535 Actual number of blocks in use in LP_DATA_SET2_TBL


7322 (Table 65).

Tables / Decade 6: Load Profile Tables 187


Table 61 Actual Load Profile Limiting Table
DRAFT ANSI C12.19-2012

7323 NBR_BLK_INTS_SET2 0..65535 Actual number of intervals per block contained in


7324 LP_DATA_SET2_TBL (Table 65).

7325 NBR_CHNS_SET2 0..255 Actual number of channels of Load Profile data contained in
7326 LP_DATA_SET2_TBL (Table 65).

7327 MAX_INT_TIME_SET2 0..255 Actual interval duration in minutes for Load Profile contained
7328 in LP_DATA_SET2_TBL (Table 65).

7329 NBR_BLKS_SET3 0..65535 Actual number of blocks in use in LP_DATA_SET3_TBL


7330 (Table 66).

7331 NBR_BLK_INTS_SET3 0..65535 Actual number of intervals per block contained in


7332 LP_DATA_SET3_TBL (Table 66).

7333 NBR_CHNS_SET3 0..255 Actual number of channels of Load Profile data contained in
7334 LP_DATA_SET3_TBL (Table 66).

7335 MAX_INT_TIME_SET3 0..255 Actual interval duration in minutes for Load Profile contained
7336 in LP_DATA_SET3_TBL (Table 66).

7337 NBR_BLKS_SET4 0..65535 Actual number of blocks in use in LP_DATA_SET4_TBL


7338 (Table 67).

7339 NBR_BLK_INTS_SET4 0..65535 Actual number of intervals per block contained in


7340 LP_DATA_SET4_TBL (Table 67).

7341 NBR_CHNS_SET4 0..255 Actual number of channels of Load Profile data contained in
7342 LP_DATA_SET4_TBL (Table 67).

7343 MAX_INT_TIME_SET4 0..255 Actual interval duration in minutes for Load Profile contained
7344 in LP_DATA_SET4_TBL (Table 67).

188
DRAFT ANSI C12.19-2012

7345 9.7.3 Table 62 Load Profile Control Table

7346 Table 62 Data Description

7347 LP_CTRL_TBL (Table 62) defines the data sources and formats used in the collection of Load Profile data.

7348 Global Default Table Property Overrides: Role=“CONTROL”

7349 Table 62 Type Definitions

7350 TYPE LP_CTRL_FLAGS_BFLD = BIT FIELD OF UINT8


7351 END_RDG_FLAG : BOOL(0);
7352 FILLER : FILL(1..7);
7353 END;

7354 TYPE LP_SOURCE_SEL_RCD = PACKED RECORD


7355 CHNL_FLAG : LP_CTRL_FLAGS_BFLD;
7356 LP_SOURCE_SELECT : STD.SOURCE_SELECT_RCD;
7357 END_BLK_RDG_SOURCE_SELECT : STD.SOURCE_SELECT_RCD;
7358 END;

7359 {Enumerator INT_FMT_ENUM}

7360 TYPE DATA_SELECTION_RCD = PACKED RECORD


7361 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET1_TBL] THEN
7362 LP_SEL_SET1 :
7363 ARRAY[ACT_LP_TBL.NBR_CHNS_SET1] OF
7364 LP_SOURCE_SEL_RCD;
7365 INT_FMT_CDE1 : UINT8;
7366 IF ACT_LP_TBL.SCALAR_DIVISOR_FLAG_SET1 THEN
7367 SCALARS_SET1 :
7368 ARRAY[ACT_LP_TBL.NBR_CHNS_SET1] OF
7369 UINT16;
7370 DIVISOR_SET1 :
7371 ARRAY[ACT_LP_TBL.NBR_CHNS_SET1] OF
7372 UINT16;
7373 END;
7374 END;
7375 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET2_TBL] THEN
7376 LP_SEL_SET2 :
7377 ARRAY[ACT_LP_TBL.NBR_CHNS_SET2] OF
7378 LP_SOURCE_SEL_RCD;
7379 INT_FMT_CDE2 : UINT8;
7380 IF ACT_LP_TBL.SCALAR_DIVISOR_FLAG_SET2 THEN
7381 SCALARS_SET2 :
7382 ARRAY[ACT_LP_TBL.NBR_CHNS_SET2] OF
7383 UINT16;
7384 DIVISOR_SET2 :
7385 ARRAY[ACT_LP_TBL.NBR_CHNS_SET2] OF
7386 UINT16;
7387 END;
7388 END;
7389
7390 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET3_TBL] THEN

Tables / Decade 6: Load Profile Tables 189


Table 62 Load Profile Control Table
DRAFT ANSI C12.19-2012

7391 LP_SEL_SET3 :
7392 ARRAY[ACT_LP_TBL.NBR_CHNS_SET3] OF
7393 LP_SOURCE_SEL_RCD;
7394 INT_FMT_CDE3 : UINT8;
7395 IF ACT_LP_TBL.SCALAR_DIVISOR_FLAG_SET3 THEN
7396 SCALARS_SET3 :
7397 ARRAY[ACT_LP_TBL.NBR_CHNS_SET3] OF
7398 UINT16;
7399 DIVISOR_SET3 :
7400 ARRAY[ACT_LP_TBL.NBR_CHNS_SET3] OF
7401 UINT16;
7402 END;
7403 END;
7404 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET4_TBL] THEN
7405 LP_SEL_SET4 :
7406 ARRAY[ACT_LP_TBL.NBR_CHNS_SET4] OF
7407 LP_SOURCE_SEL_RCD;
7408 INT_FMT_CDE4 : UINT8;
7409 IF ACT_LP_TBL.SCALAR_DIVISOR_FLAG_SET4 THEN
7410 SCALARS_SET4 :
7411 ARRAY[ACT_LP_TBL.NBR_CHNS_SET4] OF
7412 UINT16;
7413 DIVISOR_SET4 :
7414 ARRAY[ACT_LP_TBL.NBR_CHNS_SET4] OF
7415 UINT16;
7416 END;
7417 END;
7418 END;

7419 TABLE 62 LP_CTRL_TBL = DATA_SELECTION_RCD;

7420 Table 62 Element Descriptions

7421 Identifier Value Definition


7422 LP_CTRL_FLAGS_BFLD
7423 END_RDG_FLAG FALSE Channel does not have an associated end reading.
7424 TRUE Channel does have an associated end reading.

7425 LP_SOURCE_SEL_RCD
7426 CHNL_FLAG Flags associated with a particular channel.

7427 LP_SOURCE_SELECT Data source selector of the interval data for a specific channel.

7428 END_BLK_RDG_SOURCE_SELECT Data source selector of the block end reading for a specific
7429 channel.

7430 INT_FMT_ENUM Code identifying the format of interval data.


7431 1 UINT8
7432 2 UINT16
7433 4 UINT32
7434 8 INT8
7435 16 INT16
7436 32 INT32
7437 64 NI_FMAT1

190
DRAFT ANSI C12.19-2012

7438 128 NI_FMAT2


7439 All other code values are Reserved.

7440 DATA_SELECTION_RCD This record stores all information concerning each of the
7441 selected channels.

7442 LP_SEL_SET1 Array of records that identifies sources of data for each
7443 channel of interval data in LP_DATA_SET1_TBL
7444 (Table 64).

7445 INT_FMT_CDE1 Single code selecting the format for all interval data in
7446 LP_DATA_SET1_TBL (Table 64). See INT_FMT_ENUM.

7447 SCALARS_SET1 Array of scalars applied to interval data before recording pulse
7448 data in Load Profile set 1.

7449 DIVISOR_SET1 Array of divisors applied to interval data before recording


7450 pulse data in Load Profile set 1.

7451 LP_SEL_SET2 An array of records that identifies sources of data for each
7452 channel of interval data in LP_DATA_SET2_TBL
7453 (Table 65).

7454 INT_FMT_CDE2 Single code selecting the format for all interval data in
7455 LP_DATA_SET2_TBL (Table 65). See INT_FMT_ENUM.

7456 SCALARS_SET2 Array of scalars applied to interval data before recording pulse
7457 data in Load Profile set 2.

7458 DIVISOR_SET2 Array of divisors applied to interval data before recording


7459 pulse data in Load Profile set 2.

7460 LP_SEL_SET3 Array of records that identifies sources of data for each
7461 channel of interval data in LP_DATA_SET3_TBL
7462 (Table 66).

7463 INT_FMT_CDE3 Single code selecting the format for all interval data in
7464 LP_DATA_SET3_TBL (Table 66). See INT_FMT_ENUM.

7465 SCALARS_SET3 Array of scalars applied to interval data before recording pulse
7466 data in Load Profile set 3.

7467 DIVISOR_SET3 Array of divisors applied to interval data before recording


7468 pulse data in Load Profile set 3.

7469 LP_SEL_SET4 Array of records that identifies sources of data for each
7470 channel of interval data in LP_DATA_SET4_TBL
7471 (Table 67).

7472 INT_FMT_CDE4 Single code selecting the format for all interval data in
7473 LP_DATA_SET4_TBL (Table 67). See INT_FMT_ENUM.

7474 SCALARS_SET4 Array of scalars applied to interval data before recording pulse
7475 data in Load Profile set 4.

Tables / Decade 6: Load Profile Tables 191


Table 62 Load Profile Control Table
DRAFT ANSI C12.19-2012

7476 DIVISOR_SET4 Array of divisors applied to interval data before recording


7477 pulse data in Load Profile set 4.

192
DRAFT ANSI C12.19-2012

7478 9.7.4 Table 63 Load Profile Status Table

7479 Table 63 Data Description

7480 LP_STATUS_TBL (Table 63) contains the status of each Load Profile data set.

7481 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

7482 Table 63 Type Definitions

7483 TYPE LP_SET_STATUS_BFLD = BIT FIELD OF UINT8


7484 ORDER : UINT(0..0);
7485 OVERFLOW_FLAG : BOOL(1);
7486 LIST_TYPE : UINT(2..2);
7487 BLOCK_INHIBIT_OVERFLOW_FLAG : BOOL(3);
7488 INTERVAL_ORDER : UINT(4..4);
7489 ACTIVE_MODE_FLAG : BOOL(5);
7490 TEST_MODE : UINT(6..6);
7491 FILLER : FILL(7..7);
7492 END;

7493 TYPE LP_SET_STATUS_RCD = PACKED RECORD


7494 LP_SET_STATUS_FLAGS : LP_SET_STATUS_BFLD;
7495 NBR_VALID_BLOCKS : UINT16;
7496 LAST_BLOCK_ELEMENT : UINT16;
7497 LAST_BLOCK_SEQ_NBR : UINT32;
7498 NBR_UNREAD_BLOCKS : UINT16;
7499 NBR_VALID_INT : UINT16;
7500 END;

7501 TYPE LP_STATUS_RCD = PACKED RECORD


7502 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET1_TBL] THEN
7503 LP_STATUS_SET1 : LP_SET_STATUS_RCD;
7504 END;
7505 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET2_TBL] THEN
7506 LP_STATUS_SET2 : LP_SET_STATUS_RCD;
7507 END;
7508 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET3_TBL] THEN
7509 LP_STATUS_SET3 : LP_SET_STATUS_RCD;
7510 END;
7511 IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET4_TBL] THEN
7512 LP_STATUS_SET4 : LP_SET_STATUS_RCD;
7513 END;
7514 END;

7515 TABLE 63 LP_STATUS_TBL = LP_STATUS_RCD;

7516 Table 63 Element Descriptions

7517 Identifier Value Definition


7518 LP_SET_STATUS_BFLD
7519 ORDER Alias: BLOCK_ORDER.

Tables / Decade 6: Load Profile Tables 193


Table 63 Load Profile Status Table
DRAFT ANSI C12.19-2012

7520 0 Blocks of Load Profile data are transported in ascending order


7521 (N is older than N + 1).
7522 1 Blocks of Load Profile data are transported in descending
7523 order (N is newer than N + 1).

7524 OVERFLOW_FLAG FALSE Overflow has not occurred.


7525 TRUE An attempt was made to enter an interval in a new data block
7526 such that the number of unread blocks exceeded the actual
7527 number of possible blocks in Load Profile storage.

7528 LIST_TYPE Alias: LIST_TYPE_FLAG.


7529 0 FIFO (First-In, First-Out) as placed in Load Profile storage.
7530 1 Circular list as placed in Load Profile storage.

7531 BLOCK_INHIBIT_OVERFLOW_FLAG The same value as ACT_LP_TBL.


7532 LP_SETn_INHIBIT_OVF_FLAG.

7533 INTERVAL_ORDER 0 Intervals in each block of Load Profile are transported in


7534 ascending order (N is older than N + 1).
7535 1 Intervals in each block of Load Profile are transported in
7536 descending order (N is newer than N + 1).

7537 ACTIVE_MODE_FLAG FALSE Data set is not collecting data.


7538 TRUE Data set is collecting data.

7539 TEST_MODE 0 Data set is collecting Metering Mode data.


7540 1 Data set is collecting Test Mode data.

7541 LP_SET_STATUS_RCD Atomic=”true”, Accessibility=”READONLY”.

7542 LP_SET_STATUS_FLAGS See LP_SET_STATUS_BFLD.

7543 NBR_VALID_BLOCKS 0..65535 Number of valid Load Profile data blocks in Load Profile data
7544 tables LP_DATA_SET1_TBL (Table 64),
7545 LP_DATA_SET2_TBL (Table 65), LP_DATA_SET3_TBL
7546 (Table 66), and LP_DATA_SET4_TBL (Table 67), Load
7547 Profile block arrays. The range is zero (meaning no data
7548 blocks in Load Profile Data Table) to the actual dimension of
7549 the number of Load Profile data blocks. The block is
7550 considered valid when at least one interval is written.

7551 LAST_BLOCK_ELEMENT
7552 0..65535 Array element index of the newest valid data block in the
7553 Load Profile data array. This field is valid only if
7554 NBR_VALID_BLOCKS is greater than zero.

7555 LAST_BLOCK_SEQ_NBR 0..4294967295 Sequence number of the newest valid data block
7556 (LAST_BLOCK_ELEMENT) in the Load Profile data array.
7557 This sequence number corresponds to the first valid interval
7558 entry in the block.

7559 NBR_UNREAD_BLOCKS 0..65535 Number of Load Profile blocks that have not been read. This
7560 number shall only be updated through the invocation of

194
DRAFT ANSI C12.19-2012

7561 Procedure 04, “Reset List Pointers” or Procedure 05, “Update


7562 Last Read Entry”.

7563 NBR_VALID_INT 0..65535 Number of valid intervals stored in the newest Load Profile
7564 block whose array index is LAST_BLOCK_ELEMENT.
7565 Valid values are in the range of zero (meaning no interval in
7566 the array) to the actual dimension of the number of intervals
7567 per block.

7568 LP_STATUS_RCD
7569 LP_STATUS_SET1 Status information for profile data set 1.

7570 LP_STATUS_SET2 Status information for profile data set 2.

7571 LP_STATUS_SET3 Status information for profile data set 3.


7572 LP_STATUS_SET4 Status information for profile data set 4.

Tables / Decade 6: Load Profile Tables 195


Table 63 Load Profile Status Table
DRAFT ANSI C12.19-2012

7573 9.7.5 Table 64 Load Profile Data Set One Table

7574 Table 64 Data Description

7575 LP_DATA_SET1_TBL (Table 64) contains information on Load Profile data set one.

7576 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

7577 Table 64 Type Definitions

7578 TYPE INT_FMT1_RCD = PACKED RECORD


7579 SWITCH LP_CTRL_TBL.INT_FMT_CDE1 OF
7580 CASE 1 : ITEM : UINT8;
7581 CASE 2 : ITEM : UINT16;
7582 CASE 4 : ITEM : UINT32;
7583 CASE 8 : ITEM : INT8;
7584 CASE 16 : ITEM : INT16;
7585 CASE 32 : ITEM : INT32;
7586 CASE 64 : ITEM : NI_FMAT1;
7587 CASE 128 : ITEM : NI_FMAT2;
7588 END;
7589 END;

7590 { Enumerator CHANNEL_STATUS_ENUM }


7591
7592 TYPE EXTENDED_STATUS_BFLD = BIT FIELD OF UINT8
7593 { This bit field is expected to be used as an entry of an array. The
7594 interpretation of the nibbles of each UINT8 member of the array depends on
7595 its position index being the first in the collection (.lastIndex == 0) or
7596 not being the first (.lastIndex > 0). }
7597 IF .lastIndex == 0 THEN
7598 { The index value of this bit field (i.e., the first UINT8) in the
7599 containing array is 0, implying that this UINT8 contains the extended
7600 common status flags (bits 4..7) and the extended channel status of
7601 channel 1 (bits 0..3). }

7602 COMMON_DST_FLAG : BOOL(4);


7603 COMMON_POWER_FAIL_FLAG : BOOL(5);
7604 COMMON_CLOCK_SET_FWD_FLAG : BOOL(6);
7605 COMMON_CLOCK_SET_BKWD_FLAG : BOOL(7);
7606 ELSE
7607 { This is the description of the extended status array indices that are
7608 greater than zero. Each UINT8 contains data of even channels 2,4,6 and
7609 odd channels 3,5,7 … through channel NBR_CHNS_SETn, where n is the load
7610 profile set number. The last CHANNEL_STATUS_ODD bits are FILL bits,
7611 when the number of channels is even. }

7612 CHANNEL_STATUS_EVEN : UINT(4..7);


7613 END;
7614 CHANNEL_STATUS_ODD : UINT(0..3);
7615 END;

7616 TYPE INT_SET1_RCD = PACKED RECORD


7617 IF ACT_LP_TBL.EXTENDED_INT_STATUS_FLAG THEN
196
DRAFT ANSI C12.19-2012

7618 EXTENDED_INT_STATUS :
7619 ARRAY[(ACT_LP_TBL.NBR_CHNS_SET1/2)+1] OF
7620 EXTENDED_STATUS_BFLD;
7621 END;
7622 INT_DATA :
7623 ARRAY[ACT_LP_TBL.NBR_CHNS_SET1] OF
7624 INT_FMT1_RCD;
7625 END;

7626 TYPE READINGS_RCD = PACKED RECORD


7627 IF ACT_LP_TBL.BLK_END_READ_FLAG THEN
7628 BLOCK_END_READ : NI_FMAT1;
7629 END;
7630 IF ACT_LP_TBL.BLK_END_PULSE_FLAG THEN
7631 BLOCK_END_PULSE : UINT32;
7632 END;
7633 END;

7634 TYPE LP_BLK1_DAT_RCD = PACKED RECORD


7635 BLK_END_TIME : STIME_DATE;
7636 END_READINGS : ARRAY[ACT_LP_TBL.NBR_CHNS_SET1] OF
7637 READINGS_RCD;
7638 IF ACT_LP_TBL.SIMPLE_INT_STATUS_FLAG THEN
7639 SIMPLE_INT_STATUS :
7640 SET((ACT_LP_TBL.NBR_BLK_INTS_SET1+7)/8);
7641 END;
7642 LP_INT :
7643 ARRAY[ACT_LP_TBL.NBR_BLK_INTS_SET1] OF
7644 INT_SET1_RCD;
7645 END;

7646 TYPE LP_DATA_SET1_RCD = PACKED RECORD


7647 LP_DATA_SET1 :
7648 ARRAY[ACT_LP_TBL.NBR_BLKS_SET1] OF
7649 LP_BLK1_DAT_RCD;
7650 END;

7651 TABLE 64 LP_DATA_SET1_TBL = LP_DATA_SET1_RCD;

7652 Table 64 Element Descriptions

7653 Identifier Value Definition


7654 INT_FMT1_RCD Selector for the format of the channel data. Also see
7655 LP_CTRL_TBL.INT_FMT_ENUM.

7656 CHANNEL_STATUS_ENUM The contents of the even and odd channel status nibbles. See
7657 EXTENDED_STATUS_BFLD.
7658 0 No exception status indicated.
7659 1 Numeric overflow condition detected.
7660 2 Partial interval due to common state. The cause is indicated in
7661 the common status flags.
7662 3 Long interval due to common state. The cause is indicated in
7663 the common status flags.

Tables / Decade 6: Load Profile Tables 197


Table 64 Load Profile Data Set One Table
DRAFT ANSI C12.19-2012

7664 4 Skipped interval due to common state. The cause is indicated


7665 in the common status flags. The INT_DATA shall be set to
7666 zero (0).
7667 5 The interval contains test mode data.
7668 6 The configuration changed during this interval.
7669 7 Load profile recording stopped.
7670 8..15 Reserved.

7671 EXTENDED_INT_STATUS_BFLD This bit field is expected to be used as an entry of an array.


7672 The interpretation of the nibbles of each UINT8 member of
7673 the array depends on its position index being the first in the
7674 collection (.lastIndex == 0) or not being the first (.lastIndex >
7675 0).

7676 COMMON_DST_FLAG Daylight saving time status change flag.


7677 FALSE Daylight standard time was not in effect during or at start of
7678 this interval.
7679 TRUE Daylight saving time was in effect during or at start of this
7680 interval.

7681 COMMON_POWER_FAIL_FLAG Power fail detection flag. If the power fail condition spans an
7682 entire interval duration, then the value of INT_DATA shall be
7683 set to zero (0) in all applicable intervals of the affected block
7684 until the power is restored or the block is closed, whichever
7685 occurs first.
7686 FALSE Power fail did not occur during or at the start of this interval.
7687 TRUE Power fail occurred during or at the start of this interval.

7688 COMMON_CLOCK_SET_FWD_FLAG Clock set forward indication flag. Setting the clock forward
7689 may cause intervals and blocks to be partial or skipped. Time
7690 reset across a block boundary may result in the closure of that
7691 active block and setting all remaining interval INT_DATA to
7692 zero (0) asserting the
7693 COMMON_CLOCK_SET_FWD_FLAG repeatedly to
7694 TRUE and the channel’s status to skipped interval due to
7695 common state (4).
7696 FALSE The clock was not set forward during or at the start of this
7697 interval.
7698 TRUE The clock was set forward during or at start of this interval
7699 The interval may be short.

7700 COMMON_CLOCK_SET_BKWD_FLAG Clock set backward indication flag.


7701 FALSE The clock was not set backward during or at the start of this
7702 interval.
7703 TRUE The clock was set backward during or at start of this interval
7704 The interval may be long.

7705 CHANNEL_STATUS_EVEN The contents of the even channel status nibble. See
7706 CHANNEL_STATUS_ENUM.

7707 CHANNEL_STATUS_ODD The contents of the odd channel status nibble. See
7708 CHANNEL_STATUS_ENUM.

7709 INT_SET1_RCD

198
DRAFT ANSI C12.19-2012

7710 EXTENDED_INT_STATUS This is one or more single Octets of interval status conditions
7711 provided for all channels. One nibble (4 bits) of status
7712 information is provided for each channel in the set, plus one
7713 extra nibble is provided for status conditions common to all
7714 channels. This common status nibble is always the first nibble
7715 of the set (that is, the high order 4 bits of the first Octet of
7716 EXTENDED_INT_STATUS). Since
7717 EXTENDED_INT_STATUS is an integral number of Octets
7718 in length, this field contains one nibble of FILL, if the number
7719 of channels in the set is even. This fill field, when present,
7720 always occupies the last nibble of
7721 EXTENDED_INT_STATUS (that is, the low order 4 bits of
7722 the last Octet of EXTENDED_INT_STATUS). See
7723 EXTENDED_INT_STATUS_BFLD.

7724 INT_DATA Array of interval values for each channel in the block,
7725 recorded at a single time. Channels are presented in the same
7726 order. The order of the channels matches their definition in
7727 LP_CTRL_TBL (Table 62).

7728 READINGS_RCD
7729 BLOCK_END_READ End-of-block data reading.

7730 BLOCK_END_PULSE 0..4294967295 End-of-block pulse accumulator value.

7731 LP_BLK1_DAT_RCD
7732 BLK_END_TIME Parameter containing the ending date and time of the last
7733 interval of data entered in this data block. This shall only
7734 contain the expected end-of-interval value (for example, if a
7735 one-hour interval starting at 10:00 terminates prematurely at
7736 10:15, the BLK_END_TIME shall indicate 11:00). When the
7737 block is closed (it is no longer the current active block) for any
7738 reason, the BLK_END_TIME shall be set to the block’s
7739 starting time + NBR_BLK_INTS_SET1 *
7740 MAX_INT_TIME_SET1.

7741 END_READINGS Array of readings of the end reading sources, taken at the
7742 interval end time of the last interval of data entered in the
7743 block. One end reading is provided for each channel in the
7744 block. The order of the readings matches their definition in
7745 LP_CTRL_TBL (Table 62). The format is controlled by
7746 READINGS_RCD.

7747 SIMPLE_INT_STATUS Set of status bits, one per interval, that specifies whether the
7748 corresponding interval is valid.
7749 FALSE This interval data has one or more invalid entries.
7750 TRUE This interval data is valid.

7751 LP_INT Array of interval records in the block. Intervals are stored in
7752 the chronological order, specified by INTERVAL_ORDER.

7753 LP_DATA_SET1_RCD The Load Profile data blocks.

7754 LP_DATA_SET1 Array of Load Profile data blocks.

Tables / Decade 6: Load Profile Tables 199


Table 64 Load Profile Data Set One Table
DRAFT ANSI C12.19-2012

7755 9.7.6 Table 65 Load Profile Data Set Two Table

7756 Table 65 Data Description

7757 LP_DATA_SET2_TBL (Table 65) contains information on Load Profile data set two.

7758 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

7759 Table 65 Type Definitions

7760 TYPE INT_FMT2_RCD = PACKED RECORD


7761 SWITCH LP_CTRL_TBL.INT_FMT_CDE2 OF
7762 CASE 1 : ITEM : UINT8;
7763 CASE 2 : ITEM : UINT16;
7764 CASE 4 : ITEM : UINT32;
7765 CASE 8 : ITEM : INT8;
7766 CASE 16 : ITEM : INT16;
7767 CASE 32 : ITEM : INT32;
7768 CASE 64 : ITEM : NI_FMAT1;
7769 CASE 128 : ITEM : NI_FMAT2;
7770 END;
7771 END;

7772 TYPE INT_SET2_RCD = PACKED RECORD


7773 IF ACT_LP_TBL.EXTENDED_INT_STATUS_FLAG THEN
7774 EXTENDED_INT_STATUS
7775 :
7776 ARRAY[(ACT_LP_TBL.NBR_CHNS_SET2 / 2)+1]
7777 OF LP_DATA_SET1_TBL.
7778 EXTENDED_STATUS_BFLD;
7779 END;
7780 INT_DATA :
7781 ARRAY[ACT_LP_TBL.NBR_CHNS_SET2] OF
7782 INT_FMT2_RCD;
7783 END;

7784 TYPE READINGS_RCD = PACKED RECORD


7785 IF ACT_LP_TBL.BLK_END_READ_FLAG THEN
7786 BLOCK_END_READ : NI_FMAT1;
7787 END;
7788 IF ACT_LP_TBL.BLK_END_PULSE_FLAG THEN
7789 BLOCK_END_PULSE : UINT32;
7790 END;
7791 END;

7792 TYPE LP_BLK2_DAT_RCD = PACKED RECORD


7793 BLK_END_TIME : STIME_DATE;
7794 END_READINGS :
7795 ARRAY[ACT_LP_TBL.NBR_CHNS_SET2] OF
7796 READINGS_RCD;
7797 IF ACT_LP_TBL.SIMPLE_INT_STATUS_FLAG THEN
7798 SIMPLE_INT_STATUS :
7799 SET((ACT_LP_TBL.NBR_BLK_INTS_SET2+7)/8);
7800 END;

200
DRAFT ANSI C12.19-2012

7801 LP_INT :
7802 ARRAY[ACT_LP_TBL.NBR_BLK_INTS_SET2] OF
7803 INT_SET2_RCD;
7804 END;

7805 TYPE LP_DATA_SET2_RCD = PACKED RECORD


7806 LP_DATA_SET2 :
7807 ARRAY[ACT_LP_TBL.NBR_BLKS_SET2] OF
7808 LP_BLK2_DAT_RCD;
7809 END;

7810 TABLE 65 LP_DATA_SET2_TBL = LP_DATA_SET2_RCD;

7811 Table 65 Element Descriptions

7812 Identifier Value Definition


7813 INT_FMT2_RCD Selector for the format of the channel data. Also see
7814 LP_CTRL_TBL.INT_FMT_ENUM.

7815 INT_SET2_RCD
7816 EXTENDED_INT_STATUS An array of extended status and flags per LP_DATA_SET1.
7817 EXTENDED_INT_STATUS_BFLD. For additional details,
7818 see LP_DATA_SET1.
7819 INT_SET1_RCD.EXTENDED_INT_STATUS.

7820 INT_DATA Array of interval values for each channel in the block,
7821 recorded at a single time. Channels are presented in the same
7822 order. The order of the channels matches their definition in
7823 LP_CTRL_TBL (Table 62).

7824 READINGS_RCD
7825 BLOCK_END_READ End-of-block data reading.

7826 BLOCK_END_PULSE 0..4294967295 End-of-block pulse accumulator value.

7827 LP_BLK2_DAT_RCD
7828 BLK_END_TIME Parameter containing the ending date and time of the last
7829 interval of data entered in this data block. This shall only
7830 contain the expected end-of-interval value (for example, if a
7831 one-hour interval starting at 10:00 terminates prematurely at
7832 10:15, the BLK_END_TIME shall indicate 11:00). When the
7833 block is closed (it is no longer the active block) for any reason,
7834 the BLK_END_TIME shall be set to the block’s starting time
7835 + NBR_BLK_INTS_SET2 * MAX_INT_TIME_SET2.

7836 END_READINGS Array of readings of the end reading sources, taken at the
7837 interval end time of the last interval of data entered in the
7838 block. One end reading is provided for each channel in the
7839 block. The order of the readings matches their definition in
7840 LP_CTRL_TBL (Table 62). The format is controlled by
7841 READINGS_RCD.

7842 SIMPLE_INT_STATUS Set of status bits, one per interval, that specifies whether the
7843 corresponding interval is valid.
Tables / Decade 6: Load Profile Tables 201
Table 65 Load Profile Data Set Two Table
DRAFT ANSI C12.19-2012

7844 FALSE This interval data has one or more invalid entries.
7845 TRUE This interval data is valid.

7846 LP_INT Array of interval records in the block. Intervals are stored in
7847 the chronological order, specified by INTERVAL_ORDER.

7848 LP_DATA_SET2_RCD The Load Profile data blocks.

7849 LP_DATA_SET2 Array of Load Profile data blocks.

202
DRAFT ANSI C12.19-2012

7850 9.7.7 Table 66 Load Profile Data Set Three Table

7851 Table 66 Data Description

7852 LP_DATA_SET3_TBL (Table 66) contains information on Load Profile data set three.

7853 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

7854 Table 66 Type Definitions

7855 TYPE INT_FMT3_RCD = PACKED RECORD


7856 SWITCH LP_CTRL_TBL.INT_FMT_CDE3 OF
7857 CASE 1 : ITEM : UINT8;
7858 CASE 2 : ITEM : UINT16;
7859 CASE 4 : ITEM : UINT32;
7860 CASE 8 : ITEM : INT8;
7861 CASE 16 : ITEM : INT16;
7862 CASE 32 : ITEM : INT32;
7863 CASE 64 : ITEM : NI_FMAT1;
7864 CASE 128 : ITEM : NI_FMAT2;
7865 END;
7866 END;

7867 TYPE INT_SET3_RCD = PACKED RECORD


7868 IF ACT_LP_TBL.EXTENDED_INT_STATUS_FLAG THEN
7869 EXTENDED_INT_STATUS :
7870 ARRAY[(ACT_LP_TBL.NBR_CHNS_SET3 / 2)+1]
7871 OF
7872 LP_DATA_SET1_TBL.EXTENDED_STATUS_BFLD;
7873 END;
7874 INT_DATA :
7875 ARRAY[ACT_LP_TBL.NBR_CHNS_SET3] OF
7876 INT_FMT3_RCD;
7877 END;

7878 TYPE READINGS_RCD = PACKED RECORD


7879 IF ACT_LP_TBL.BLK_END_READ_FLAG THEN
7880 BLOCK_END_READ : NI_FMAT1;
7881 END;
7882 IF ACT_LP_TBL.BLK_END_PULSE_FLAG THEN
7883 BLOCK_END_PULSE : UINT32;
7884 END;
7885 END;

7886 TYPE LP_BLK3_DAT_RCD = PACKED RECORD


7887 BLK_END_TIME : STIME_DATE;
7888 END_READINGS :
7889 ARRAY[ACT_LP_TBL.NBR_CHNS_SET3] OF
7890 READINGS_RCD;
7891 IF ACT_LP_TBL.SIMPLE_INT_STATUS_FLAG THEN
7892 SIMPLE_INT_STATUS :
7893 SET((ACT_LP_TBL.NBR_BLK_INTS_SET3+7)/8);
7894 END;

Tables / Decade 6: Load Profile Tables 203


Table 66 Load Profile Data Set Three Table
DRAFT ANSI C12.19-2012

7895 LP_INT :
7896 ARRAY[ACT_LP_TBL.NBR_BLK_INTS_SET3] OF
7897 INT_SET3_RCD;
7898 END;

7899 TYPE LP_DATA_SET3_RCD = PACKED RECORD


7900 LP_DATA_SET3 :
7901 ARRAY[ACT_LP_TBL.NBR_BLKS_SET3] OF
7902 LP_BLK3_DAT_RCD;
7903 END;

7904 TABLE 66 LP_DATA_SET3_TBL = LP_DATA_SET3_RCD;

7905 Table 66 Element Descriptions

7906 Identifier Value Definition


7907 INT_FMT3_RCD Selector for the format of the channel data. Also see
7908 LP_CTRL_TBL.INT_FMT_ENUM.

7909 INT_SET3_RCD
7910 EXTENDED_INT_STATUS An array of extended status and flags per LP_DATA_SET1.
7911 EXTENDED_INT_STATUS_BFLD. For additional details,
7912 see LP_DATA_SET1.
7913 INT_SET1_RCD.EXTENDED_INT_STATUS.

7914 INT_DATA Array of interval values for each channel in the block,
7915 recorded at a single time. Channels are presented in the same
7916 order. The order of the channels matches their definition in
7917 LP_CTRL_TBL (Table 62).

7918 READINGS_RCD
7919 BLOCK_END_READ End-of-block data reading.

7920 BLOCK_END_PULSE 0..4294967295 End-of-block pulse accumulator value.

7921 LP_BLK3_DAT_RCD
7922 BLK_END_TIME Parameter containing the ending date and time of the last
7923 interval of data entered in this data block. This shall only
7924 contain the expected end-of-interval value (for example, if a
7925 one-hour interval starting at 10:00 terminates prematurely at
7926 10:15, the BLK_END_TIME shall indicate 11:00). When the
7927 block is closed (it is no longer the active block) for any reason,
7928 the BLK_END_TIME shall be set to the block’s starting time
7929 + NBR_BLK_INTS_SET3 * MAX_INT_TIME_SET3.

7930 END_READINGS Array of readings of the end reading sources, taken at the
7931 interval end time of the last interval of data entered in the
7932 block. One end reading is provided for each channel in the
7933 block. The order of the readings matches their definition in
7934 LP_CTRL_TBL (Table 62). The format is controlled by
7935 READINGS_RCD.

7936 SIMPLE_INT_STATUS Set of status bits, one per interval, that specifies whether the
7937 corresponding interval is valid.
204
DRAFT ANSI C12.19-2012

7938 FALSE This interval data has one or more invalid entries.
7939 TRUE This interval data is valid.

7940 LP_INT Array of interval records in the block. Intervals are stored in
7941 the chronological order, specified by INTERVAL_ORDER.

7942 LP_DATA_SET3_RCD The Load Profile data blocks.

7943 LP_DATA_SET3 Array of Load Profile data blocks.

Tables / Decade 6: Load Profile Tables 205


Table 66 Load Profile Data Set Three Table
DRAFT ANSI C12.19-2012

7944 9.7.8 Table 67 Load Profile Data Set Four Table

7945 Table 67 Data Description

7946 LP_DATA_SET4_TBL (Table 67) contains information on Load Profile data set four.

7947 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

7948 Table 67 Type Definitions

7949 TYPE INT_FMT4_RCD = PACKED RECORD


7950 SWITCH LP_CTRL_TBL.INT_FMT_CDE4 OF
7951 CASE 1 : ITEM : UINT8;
7952 CASE 2 : ITEM : UINT16;
7953 CASE 4 : ITEM : UINT32;
7954 CASE 8 : ITEM : INT8;
7955 CASE 16 : ITEM : INT16;
7956 CASE 32 : ITEM : INT32;
7957 CASE 64 : ITEM : NI_FMAT1;
7958 CASE 128 : ITEM : NI_FMAT2;
7959 END;
7960 END;

7961 TYPE INT_SET4_RCD = PACKED RECORD


7962 IF ACT_LP_TBL.EXTENDED_INT_STATUS_FLAG THEN
7963 EXTENDED_INT_STATUS :
7964 ARRAY[(ACT_LP_TBL.NBR_CHNS_SET4 / 2)+1]
7965 OF LP_DATA_SET1_TBL.EXTENDED_STATUS_BFLD;
7966 END;
7967 INT_DATA :
7968 ARRAY[ACT_LP_TBL.NBR_CHNS_SET4] OF
7969 INT_FMT4_RCD;
7970 END;

7971 TYPE READINGS_RCD = PACKED RECORD


7972 IF ACT_LP_TBL.BLK_END_READ_FLAG THEN
7973 BLOCK_END_READ : NI_FMAT1;
7974 END;
7975 IF ACT_LP_TBL.BLK_END_PULSE_FLAG THEN
7976 BLOCK_END_PULSE : UINT32;
7977 END;
7978 END;

7979 TYPE LP_BLK4_DAT_RCD = PACKED RECORD


7980 BLK_END_TIME : STIME_DATE;
7981 END_READINGS :
7982 ARRAY[ACT_LP_TBL.NBR_CHNS_SET4] OF
7983 READINGS_RCD;
7984 IF ACT_LP_TBL.SIMPLE_INT_STATUS_FLAG THEN
7985 SIMPLE_INT_STATUS :
7986 SET((ACT_LP_TBL.NBR_BLK_INTS_SET4+7)/8);
7987 END;

206
DRAFT ANSI C12.19-2012

7988 LP_INT :
7989 ARRAY[ACT_LP_TBL.NBR_BLK_INTS_SET4] OF
7990 INT_SET4_RCD;
7991 END;

7992 TYPE LP_DATA_SET4_RCD = PACKED RECORD


7993 LP_DATA_SET4 :
7994 ARRAY[ACT_LP_TBL.NBR_BLKS_SET4] OF
7995 LP_BLK4_DAT_RCD;
7996 END;

7997 TABLE 67 LP_DATA_SET4_TBL = LP_DATA_SET4_RCD;

7998 Table 67 Element Descriptions

7999 Identifier Value Definition


8000 INT_FMT4_RCD Selector for the format of the channel data. Also see
8001 LP_CTRL_TBL.INT_FMT_ENUM.

8002 INT_SET4_RCD
8003 EXTENDED_INT_STATUS An array of extended status and flags per LP_DATA_SET1.
8004 EXTENDED_INT_STATUS_BFLD. For additional details,
8005 see LP_DATA_SET1.
8006 INT_SET1_RCD.EXTENDED_INT_STATUS.

8007 INT_DATA Array of interval values for each channel in the block,
8008 recorded at a single time. Channels are presented in the same
8009 order. The order of the channels matches their definition in
8010 LP_CTRL_TBL (Table 62).

8011 READINGS_RCD
8012 BLOCK_END_READ End-of-block data reading.

8013 BLOCK_END_PULSE 0..4294967295 End-of-block pulse accumulator value.

8014 LP_BLK4_DAT_RCD
8015 BLK_END_TIME Parameter containing the ending date and time of the last
8016 interval of data entered in this data block. This shall only
8017 contain the expected end-of-interval value (for example, if a
8018 one-hour interval starting at 10:00 terminates prematurely at
8019 10:15, the BLK_END_TIME shall indicate 11:00). When the
8020 block is closed (it is no longer the active block) for any reason,
8021 the BLK_END_TIME shall be set to the block’s starting time
8022 + NBR_BLK_INTS_SET4 * MAX_INT_TIME_SET4.

8023 END_READINGS Array of readings of the end reading sources, taken at the
8024 interval end time of the last interval of data entered in the
8025 block. One end reading is provided for each channel in the
8026 block. The order of the readings matches their definition in
8027 LP_CTRL_TBL (Table 62). The format is controlled by
8028 READINGS_RCD.

8029 SIMPLE_INT_STATUS Set of status bits, one per interval, that specifies whether the
8030 corresponding interval is valid.
Tables / Decade 6: Load Profile Tables 207
Table 67 Load Profile Data Set Four Table
DRAFT ANSI C12.19-2012

8031 FALSE This interval data has one or more invalid entries.
8032 TRUE This interval data is valid.

8033 LP_INT Array of interval records in the block. Intervals are stored in
8034 the chronological order, specified by INTERVAL_ORDER.

8035 LP_DATA_SET4_RCD The Load Profile data blocks.

8036 LP_DATA_SET4 Array of Load Profile data blocks.

208
DRAFT ANSI C12.19-2012

8037 9.8 Decade 7: History Log and Event Log Tables

8038 Decade 7 Name

8039 HISTORY_EVENT_DEC

8040 Decade 7 Data Description

8041 This Decade contains the tables associated with the maintenance of the History and Event Logs. Although very
8042 similar in design, the role of the History Log Data (Table 74) is significantly distinguished from that of the Event
8043 Log Data (Table 76). The Event Log Data (Table 76) was designed in a manner to facilitate the establishment and
8044 maintenance of consumer confidence in the End Device operation. For that reason, the event logger implementation
8045 needs to adhere to strict guidelines and uniform rules that are consistent with the implementation of an audit trail
8046 that is capable of tracking securely all End Device changes to entities of metrological importance. On the other
8047 hand, the history logger provides for monitoring any End Device activity or events that may be of general interest to
8048 the operator, utility, or technician (e.g., communication access logs, debugging information, clock drift data, demand
8049 reset tracking, etc.). Both history logger and event logger (secured audit trail) may coexist in an End Device.

8050 Decade 7 Type Definitions

8051 { Enumerator EVENT_CODES_ENUM }

8052 Decade 7 Element Descriptions

8053 Identifier Value Definition


8054 EVENT_CODES_ENUM The following are the standard event codes that may be
8055 entered into the history log and event log tables. For more
8056 information on their use, see Annex B, “(normative) History
8057 and event log codes” and Annex E, “(informative) Event
8058 Logger implementation”.

8059 0 No Event.
8060 1 Primary Power Down.
8061 2 Primary Power Up.
8062 3 Time Changed (Time-stamp is old time).
8063 4 Time Changed (Time-stamp is new time).
8064 5 Time Changed (Time-stamp is old time in STIME_DATE
8065 format).
8066 6 Time Changed (Time-stamp new time in STIME_DATE
8067 format).
8068 7 End Device Accessed for Read.
8069 8 End Device Accessed for Write.
8070 9 Procedure Invoked.
8071 10 Table Written To.
8072 11 End Device Programmed.
8073 12 Communication Terminated Normally.
8074 13 Communication Terminated Abnormally.
8075 14 Reset List Pointers.
8076 15 Updated List Pointers.
8077 16 History Log Cleared.
8078 17 History Log Pointers Updated.
8079 18 Event Log Cleared.
8080 19 Event Log Pointers Updated.
Tables / Decade 7: History Log and Event Log Tables 209
DRAFT ANSI C12.19-2012

8081 20 Demand Reset Occurred.


8082 21 Self-read Occurred.
8083 22 Daylight Saving Time On.
8084 23 Daylight Saving Time Off.
8085 24 Season Changed.
8086 25 Rate Change.
8087 26 Special Schedule Activated.
8088 27 Tier Switch / Change.
8089 28 Pending Table Activated.
8090 29 Pending Table Activation Cleared.
8091 30 Metering mode started.
8092 31 Metering mode stopped.
8093 32 Test mode started.
8094 33 Test mode stopped.
8095 34 Meter shop mode started.
8096 35 Meter shop mode stopped.
8097 36 End Device reprogrammed.
8098 37 Configuration error detected.
8099 38 Self check error detected.
8100 39 RAM failure detected.
8101 40 ROM failure detected.
8102 41 Nonvolatile memory failure detected.
8103 42 Clock error detected.
8104 43 Measurement error detected.
8105 44 Low battery detected.
8106 45 Low loss potential detected.
8107 46 Demand overload detected.
8108 47 Tamper attempt detected.
8109 48 Reverse rotation detected.
8110 49 Control point changed by a command.
8111 50 Control point changed by the schedule.
8112 51 Control point changed by a condition.
8113 52 Control point changed for the prepayment.
8114 53 Added to remaining credit.
8115 54 Subtracted from remaining credit.
8116 55 Adjusted the remaining credit.
8117 56 End Device sealed.
8118 57 End Device unsealed.
8119 58 Procedure Invoked (with values).
8120 59 Table Written To (with values).
8121 60 End Device Programmed (with values).
8122 61 End Device sealed (with values).
8123 62 End Device unsealed (with values).
8124 63 Procedure Invoked (with signature).
8125 64 Table Written To (with signature).
8126 65 End Device Programmed (with signature).
8127 66 End Device sealed (with signature).
8128 67 End Device unsealed (with signature).
8129 68 Procedure Invoked (with signature and values).
8130 69 Table Written To(with signature and values).
8131 70 End Device Programmed (with signature and values).
8132 71 End Device sealed(with signature and values).
8133 72 End Device unsealed(with signature and values).
8134 73 Read Secured Table.
8135 74 Read Secured Register.
210
DRAFT ANSI C12.19-2012

8136 75 Read Secured Table (with values).


8137 76 Read Secured Register (with values).
8138 77..2047 Reserved.

Tables / Decade 7: History Log and Event Log Tables 211


DRAFT ANSI C12.19-2012

8139 9.8.1 Table 70 Log Dimension Limits Table

8140 Table 70 Data Description

8141 DIM_LOG_TBL (Table 70) defines the maximum size and capabilities of the History and Event Log Decade.

8142 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

8143 Table 70 Type Definitions

8144 TYPE LOG_FLAGS_BFLD = BIT FIELD OF UINT8


8145 EVENT_NUMBER_FLAG : BOOL(0);
8146 HIST_DATE_TIME_FLAG : BOOL(1);
8147 HIST_SEQ_NBR_FLAG : BOOL(2);
8148 HIST_INHIBIT_OVF_FLAG : BOOL(3);
8149 EVENT_INHIBIT_OVF_FLAG : BOOL(4);
8150 FILLER : FILL(5..7);
8151 END;

8152 TYPE EXT_LOG_FLAGS_BFLD = BIT FIELD OF UINT8


8153 METROLOGICAL_SIG_FLAG : BOOL(0);
8154 PROGRAM_SIG_FLAG : BOOL(1);
8155 ALTERNATE_SIG_FLAG : BOOL(2);
8156 SECURED_REGISTER_FLAG : BOOL(3);
8157 FILLER : FILL(4..4);
8158 SIG_ALGORITHM : UINT(5..7);
8159 END;

8160 TYPE LOG_RCD = PACKED RECORD


8161 LOG_FLAGS : LOG_FLAGS_BFLD;
8162 NBR_STD_EVENTS : UINT8;
8163 NBR_MFG_EVENTS : UINT8;
8164 HIST_DATA_LENGTH : UINT8;
8165 EVENT_DATA_LENGTH : UINT8;
8166 NBR_HISTORY_ENTRIES : UINT16;
8167 NBR_EVENT_ENTRIES : UINT16;
8168 IF GEN_CONFIG_TBL.STD_VERSION_NO > 1 THEN
8169 EXT_LOG_FLAGS : EXT_LOG_FLAGS_BFLD;
8170 NBR_PROGRAM_TABLES : UINT16;
8171 END;
8172 END;

8173 TABLE 70 DIM_LOG_TBL = LOG_RCD;

8174 Table 70 Element Descriptions

8175 Identifier Value Definition


8176 LOG_FLAGS_BFLD
8177 EVENT_NUMBER_FLAG FALSE A common event number cannot be maintained in the History
8178 and Event Logs.
8179 TRUE A common event number can be maintained in the History and
8180 Event Logs.

212
DRAFT ANSI C12.19-2012

8181 HIST_DATE_TIME_FLAG FALSE Date and time cannot be maintained in the History Log.
8182 TRUE Date and time can be maintained in the History Log.

8183 HIST_SEQ_NBR_FLAG FALSE A sequence number cannot be transported through the History
8184 Log.
8185 TRUE A sequence number can be transported through the History
8186 Log.

8187 HIST_INHIBIT_OVF_FLAG
8188 FALSE History Log is not capable of inhibiting overflow.
8189 TRUE History Log is capable of inhibiting overflow.

8190 EVENT_INHIBIT_OVF_FLAG
8191 FALSE Event Log is not capable of inhibiting overflow.
8192 TRUE Event Log is capable of inhibiting overflow.

8193 EXT_LOG_FLAGS_BFLD Additional flags that were introduced in Version 2 of this


8194 standard in support of audit trail management.

8195 METROLOGICAL_SIG_FLAG
8196 FALSE The End Device is not capable of including the
8197 METROLOGICAL_SIG field in the End Device program
8198 state table (Table 78).
8199 TRUE The End Device is capable of including the
8200 METROLOGICAL_SIG field in the End Device program
8201 state table (Table 78).

8202 PROGRAM_SIG_FLAG
8203 FALSE The End Device is not capable of including the
8204 PROGRAM_SIG field in the End Device program state table
8205 (Table 78).
8206 TRUE The End Device is capable of including the PROGRAM_SIG
8207 field in the End Device program state table (Table 78).

8208 ALTERNATE_SIG_FLAG
8209 FALSE The End Device is not capable of including the
8210 ALTERNATE_SIG field in the End Device program state
8211 table (Table 78).
8212 TRUE The End Device is capable of including the
8213 ALTERNATE_SIG field in the End Device program state
8214 table (Table 78).

8215 SECURED_REGISTER_FLAG The End Device secured register read events capability flag.
8216 FALSE The End Device is not capable of generating an End Device
8217 secured register event (Read Secured Register or Read
8218 Secured Table).
8219 TRUE The End Device is capable of generating an End Device
8220 secured register event (Read Secured Register or Read
8221 Secured Table).

8222 SIG_ALGORITHM Selector for the algorithm used to generate the event logger
8223 signatures in this Decade.

Tables / Decade 7: History Log and Event Log Tables 213


Table 70 Log Dimension Limits Table
DRAFT ANSI C12.19-2012

8224 0 The End Device signatures are computed using the MD5
8225 algorithm (ANSI X9.31-1998, ISO/IEC 10118-1-2000,
8226 ISO/IEC 10118-2-2000).
8227 1 The End Device signatures are computed using the SHA-256
8228 algorithm [Secure Hash Signature Standard (SHS) (FIPS PUB
8229 180-2)].
8230 2..7 Reserved.

8231 LOG_RCD
8232 LOG_FLAGS See LOG_FLAGS_BFLD.

8233 NBR_STD_EVENTS 0..255 Maximum number of Octets in the set


8234 EVENTS_ID_TBL.STD_EVENTS_SUPPORTED
8235 (Table 72).

8236 NBR_MFG_EVENTS 0..255 Maximum number of Octets in the set


8237 EVENTS_ID_TBL.MFG_EVENTS_SUPPORTED
8238 (Table 72).

8239 HIST_DATA_LENGTH 0..255 Maximum number of Octets in the


8240 HISTORY_LOG_DATA_TBL.HISTORY_ARGUMENT
8241 (Table 74).

8242 EVENT_DATA_LENGTH 0..255 Maximum number of Octets in the


8243 EVENT_LOG_DATA_TBL.EVENT_ARGUMENT
8244 (Table 76).

8245 NBR_HISTORY_ENTRIES 0..65535 Maximum number of entries in the History Log in


8246 HISTORY_LOG_DATA_TBL (Table 74).

8247 NBR_EVENT_ENTRIES 0..65535 Maximum number of entries in the Event Log in


8248 EVENT_LOG_DATA_TBL (Table 76).

8249 EXT_LOG_FLAGS See EXT_LOG_FLAGS_BFLD.

8250 NBR_PROGRAM_TABLES 0..65535 Maximum number of tables that can be included in the
8251 TABLE_LIST of the End Device program state (Table 78).

214
DRAFT ANSI C12.19-2012

8252 9.8.2 Table 71 Actual Log Limiting Table

8253 Table 71 Data Description

8254 ACT_LOG_TBL (Table 71) defines the actual size and capabilities of the History and Event Log Decade.

8255 Global Default Table Property Overrides: Role=“ACTUAL”

8256 Table 71 Type Definitions

8257 TABLE 71 ACT_LOG_TBL = LOG_RCD;

8258 Table 71 Element Descriptions

8259 Identifier Value Definition


8260 LOG_FLAGS_BFLD Redefines: DIM_LOG_TBL.LOG_FLAGS_BFLD.

8261 EVENT_NUMBER_FLAG FALSE A common event number is not maintained in the History &
8262 Event Logs.
8263 TRUE A common event number is maintained in the History & Event
8264 Logs.

8265 HIST_DATE_TIME_FLAG FALSE A date & time is not maintained in the History Log.
8266 TRUE A date & time is maintained in the History Log.

8267 HIST_SEQ_NBR_FLAG FALSE A sequence number is not transported through the History
8268 Log.
8269 TRUE A sequence number is transported through the History Log.

8270 HIST_INHIBIT_OVF_FLAG
8271 FALSE History Log is not inhibiting new entries when an overflow
8272 condition exists.
8273 TRUE History Log is inhibiting new entries when an overflow
8274 condition exists.

8275 EVENT_INHIBIT_OVF_FLAG
8276 FALSE Event Log is not inhibiting new entries when an overflow
8277 condition exists.
8278 TRUE Event Log is inhibiting new entries when an overflow
8279 condition exists.

8280 EXT_LOG_FLAGS_BFLD Additional flags that were introduced in Version 2 of this


8281 standard in support of audit trail management.
8282 Redefines: DIM_LOG_TBL.EXT_LOG_FLAGS_BFLD.

8283 METROLOGICAL_SIG_FLAG
8284 FALSE METROLOGICAL_SIG field is not included in the End
8285 Device program state table (Table 78).
8286 TRUE METROLOGICAL_SIG field is included in the End Device
8287 program state table (Table 78).

8288

Tables / Decade 7: History Log and Event Log Tables 215


Table 71 Actual Log Limiting Table
DRAFT ANSI C12.19-2012

8289 PROGRAM_SIG_FLAG
8290 FALSE PROGRAM_SIG field is not included in the End Device
8291 program state table (Table 78).
8292 TRUE PROGRAM_SIG field is included in the End Device
8293 program state table (Table 78).

8294 ALTERNATE_SIG_FLAG
8295 FALSE ALTERNATE_SIG field is not included in the End Device
8296 program state table (Table 78).
8297 TRUE ALTERNATE_SIG field is included in the End Device
8298 program state table (Table 78).

8299 SECURED_REGISTER_FLAG The End Device secured register read events enabling flag.
8300 FALSE The End Device shall not generate End Device secured
8301 register events (Read Secured Register or Read Secured
8302 Table).
8303 TRUE The End Device shall generate End Device secured register
8304 events (Read Secured Register or Read Secured Table)
8305 following the transfer of a secured register table or elements to
8306 an End Device reader, provided that this capability was
8307 enabled by a successful invocation of the “Start Secured
8308 Register” procedure. Event logging of secured register reads
8309 shall cease immediately upon invocation of the “Stop Secured
8310 Register” procedure, termination of the communication
8311 session (which invoked the “Start Secured Register”
8312 procedure), or upon reaching the maximum number of secured
8313 read operations that were permitted.

8314 SIG_ALGORITHM Selector for the algorithm used to generate the event logger
8315 signatures in this Decade. This Final Element value shall be
8316 identical to DIM_LOG_TBL.SIG_ALGORITHM.
8317 0 The End Device signatures are computed using the MD5
8318 algorithm (ANSI X9.31-1998, ISO/IEC 10118-1-2000,
8319 ISO/IEC 10118-2-2000).
8320 1 The End Device signatures are computed using the SHA-256
8321 algorithm [Secure Hash Signature Standard (SHS) (FIPS PUB
8322 180-2)].
8323 2..7 Reserved.

8324 LOG_RCD Redefines: DIM_LOG_TBL.LOG_RCD.

8325 LOG_FLAGS See LOG_FLAGS_BFLD.

8326 NBR_STD_EVENTS 0..255 Actual number of Octets in the set EVENTS_ID_TBL.


8327 STD_EVENTS_SUPPORTED (Table 72).

8328 NBR_MFG_EVENTS 0..255 Actual number of Octets in the set EVENTS_ID_TBL.


8329 MFG_EVENTS_SUPPORTED (Table 72).

8330 HIST_DATA_LENGTH 0..255 Actual number of Octets in the


8331 HISTORY_LOG_DATA_TBL. HISTORY_ARGUMENT
8332 (Table 74).

216
DRAFT ANSI C12.19-2012

8333 EVENT_DATA_LENGTH 0..255 Actual number of Octets in the EVENT_LOG_DATA_TBL.


8334 EVENT_ARGUMENT (Table 76).

8335 NBR_HISTORY_ENTRIES
8336 0..65535 Actual maximum number of entries in the History Log.

8337 NBR_EVENT_ENTRIES 0..65535 Actual maximum number of entries in the Event Log.

8338 EXT_LOG_FLAGS See EXT_LOG_FLAGS_BFLD.

8339 NBR_PROGRAM_TABLES
8340 0..65535 Actual number of tables included in the TABLE_LIST of the
8341 End Device program state (Table 78).

Tables / Decade 7: History Log and Event Log Tables 217


Table 71 Actual Log Limiting Table
DRAFT ANSI C12.19-2012

8342 9.8.3 Table 72 Events Identification Table

8343 Table 72 Data Description

8344 EVENTS_ID_TBL (Table 72) contains the events that are supported by the End Device. Any of these events may
8345 be expressed in the History Log Data (Table 74) and the Event Log Data (Table 76).

8346 Global Default Table Property Overrides: Role=“CONTROL”

8347 Table 72 Type Definitions

8348 TYPE EVENTS_SUPPORTED_RCD = PACKED RECORD


8349 STD_EVENTS_SUPPORTED : SET(ACT_LOG_TBL.NBR_STD_EVENTS);
8350 MFG_EVENTS_SUPPORTED : SET(ACT_LOG_TBL.NBR_MFG_EVENTS);
8351 END;

8352 TABLE 72 EVENTS_ID_TBL = EVENTS_SUPPORTED_RCD;

8353 Table 72 Element Descriptions

8354 Identifier Value Definition


8355 EVENTS_SUPPORTED_RCD
8356 STD_EVENTS_SUPPORTED This set Element indicates which of the standard events are
8357 supported in the Event Log. See Annex B, “(normative)
8358 History and event log code”, for standard event codes. Event
8359 codes are represented by bits 0 through (8 *
8360 ACT_LOG_TBL.NBR_STD_EVENTS - 1), with a one (1)
8361 representing a TRUE or implemented condition and a zero (0)
8362 representing a FALSE or not implemented condition.

8363 MFG_EVENTS_SUPPORTED This set Element indicates which of the manufacturer events
8364 are supported in the Event Log. Events are enabled by bits 0
8365 through (8 * ACT_LOG_TBL.NBR_MFG_EVENTS - 1),
8366 with a one (1) representing a TRUE or implemented condition
8367 and a zero (0) representing a FALSE or not implemented
8368 condition.

218
DRAFT ANSI C12.19-2012

8369 9.8.4 Table 73 History Log Control Table

8370 Table 73 Data Description

8371 HISTORY_LOG_CTRL_TBL (Table 73) defines the History Log codes to be written to the History Log Data
8372 (Table 74). It also defines which specific procedures and/or table writes are to be acknowledged in the History Log
8373 Data (Table 74). For a specific procedure or table to be acknowledged, three independent tests shall all be true:

8374 a) The procedure or table shall be used in the End Device, per the GEN_CONFIG_TBL (Table 00).
8375 b) The appropriate History Log code shall be used, per this table.
8376 c) The procedure or table shall be requested to be acknowledged, per this table.

8377 This table (Table 73) and its associated data logger table (Table 74) can be used to monitor any End Device activity
8378 that may be of interest to the operator, utility, or technician. The monitored events may include communication
8379 events, debugging information, or any other useful information that may be of general interest. When there is an
8380 expressed need to establish and maintain consumer confidence in the End Device metrology, the reliable audit trail
8381 (Event Logger Data Table 76) shall be implemented.

8382 Global Default Table Property Overrides: Role=“CONTROL”

8383 Table 73 Type Definitions

8384 TYPE HISTORY_CTRL_RCD = PACKED RECORD


8385 STD_EVENTS_MONITORED_FLAGS : SET(ACT_LOG_TBL.NBR_STD_EVENTS);
8386 MFG_EVENTS_MONITORED_FLAGS : SET(ACT_LOG_TBL.NBR_MFG_EVENTS);
8387 STD_TBLS_MONITORED_FLAGS : SET(GEN_CONFIG_TBL.DIM_STD_TBLS_USED);
8388 MFG_TBLS_MONITORED_FLAGS : SET(GEN_CONFIG_TBL.DIM_MFG_TBLS_USED);
8389 STD_PROC_MONITORED_FLAGS : SET(GEN_CONFIG_TBL.DIM_STD_PROC_USED);
8390 MFG_PROC_MONITORED_FLAGS : SET(GEN_CONFIG_TBL.DIM_MFG_PROC_USED);
8391 END;

8392 TABLE 73 HISTORY_LOG_CTRL_TBL = HISTORY_CTRL_RCD;

8393 Table 73 Element Descriptions

8394 Identifier Value Definition


8395 HISTORY_CTRL_RCD
8396 STD_EVENTS_MONITORED_FLAGS Bit position is linearly associated with corresponding standard
8397 event code.
8398 FALSE Turns off event recording for associated event code.
8399 TRUE Turns on event recording for associated event code.

8400 MFG_EVENTS_MONITORED_FLAGS Bit position is linearly associated with corresponding


8401 manufacturer event code.
8402 FALSE Turns off event recording for associated event code.
8403 TRUE Turns on event recording for associated event code.

8404 STD_TBLS_MONITORED_FLAGS Bit position is linearly associated with corresponding standard


8405 table number.
8406 FALSE Turns off event recording for associated table.
8407 TRUE Turns on event recording for associated table.

Tables / Decade 7: History Log and Event Log Tables 219


Table 73 History Log Control Table
DRAFT ANSI C12.19-2012

8408 MFG_TBLS_MONITORED_FLAGS Bit position is linearly associated with corresponding


8409 manufacturer table number.
8410 FALSE Turns off event recording for associated table.
8411 TRUE Turns on event recording for associated table.

8412 STD_PROC_MONITORED_FLAGS Bit position is linearly associated with corresponding standard


8413 procedure number.
8414 FALSE Turns off event recording for associated procedure.
8415 TRUE Turns on event recording for associated procedure.

8416 MFG_PROC_MONITORED_FLAGS Bit position is linearly associated with corresponding


8417 manufacturer procedure number.
8418 FALSE Turns off event recording for associated procedure.
8419 TRUE Turns on event recording for associated procedure.

220
DRAFT ANSI C12.19-2012

8420 9.8.5 Table 74 History Log Data Table

8421 Table 74 Data Description

8422 HISTORY_LOG_DATA_TBL (Table 74) provides the History Log Data that is controlled by Table 73, History
8423 Log Control Table.

8424 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

8425 Table 74 Type Definitions

8426 TYPE HISTORY_ENTRY_RCD = PACKED RECORD


8427 IF ACT_LOG_TBL.HIST_DATE_TIME_FLAG THEN
8428 HISTORY_TIME : LTIME_DATE;
8429 END;
8430 IF ACT_LOG_TBL.EVENT_NUMBER_FLAG THEN
8431 EVENT_NUMBER : UINT16;
8432 END;
8433 IF ACT_LOG_TBL.HIST_SEQ_NBR_FLAG THEN
8434 HISTORY_SEQ_NBR : UINT16;
8435 END;
8436 USER_ID : UINT16;
8437 HISTORY_CODE : TABLE_IDB_BFLD;
8438 HISTORY_ARGUMENT : BINARY(ACT_LOG_TBL.HIST_DATA_LENGTH);
8439 END;

8440 TYPE HISTORY_LOG_RCD = PACKED RECORD


8441 HIST_FLAGS : LIST_STATUS_BFLD;
8442 NBR_VALID_ENTRIES : UINT16;
8443 LAST_ENTRY_ELEMENT : UINT16;
8444 LAST_ENTRY_SEQ_NBR : UINT32;
8445 NBR_UNREAD_ENTRIES : UINT16;
8446 ENTRIES :
8447 ARRAY[ACT_LOG_TBL. NBR_HISTORY_ENTRIES]
8448 OF HISTORY_ENTRY_RCD;
8449 END;

8450 TABLE 74 HISTORY_LOG_DATA_TBL = HISTORY_LOG_RCD;

8451 Table 74 Element Descriptions

8452 Identifier Value Definition


8453 LIST_STATUS_BFLD Redefines: SELF_READ_DATA_TBL.
8454 LIST_STATUS_BFLD.

8455 ORDER Alias: ORDER_FLAG.


8456 0 History log entries are transported in ascending order (N is
8457 older than N + 1).
8458 1 History log entries are transported in descending order (N is
8459 newer than N + 1).

8460 OVERFLOW_FLAG FALSE Overflow has not occurred.

Tables / Decade 7: History Log and Event Log Tables 221


Table 74 History Log Data Table
DRAFT ANSI C12.19-2012

8461 TRUE An attempt was made to enter a history event such that the
8462 number of unread events entries would have exceeded the
8463 actual number of possible entries in the log.

8464 LIST_TYPE Alias: LIST_TYPE_FLAG.


8465 0 FIFO (First-In, First-Out) ordered entries are placed in history
8466 log list, HISTORY_LOG_DATA_TBL.ENTRIES.
8467 1 Circular list, entries are placed in history log list,
8468 HISTORY_LOG_DATA_TBL.ENTRIES.

8469 INHIBIT_OVERFLOW_FLAG Shall have the same definition and value as


8470 ACT_LOG_TBL.HIST_INHIBIT_OVF_FLAG (Table 71).

8471 TABLE_IDB_BFLD Redefines: STD.TABLE_IDB_BFLD.

8472 EVENT_NUMBER 0..2039 Event number logged. See EVENT_CODES_ENUM for


8473 Standard values (MFG_FLAG == FALSE).
8474 Alias: TBL_PROC_NBR.

8475 MFG_FLAG Alias: STD_VS_MFG_FLAG.


8476 FALSE Event code is standard defined.
8477 TRUE Event code is manufacturer defined.

8478 SELECTOR 0 The associated entry’s EVENT_NUMBER value in this table


8479 may or may not be found in the corresponding
8480 EVENT_LOG_DATA_TBL (Table 76). This option is
8481 provided for backward compatibility with version 1 of this
8482 standard.
8483 1 The associated entry’s EVENT_NUMBER value in this table
8484 shall be found in the corresponding
8485 EVENT_LOG_DATA_TBL (Table 76).
8486 2 The associated entry’s EVENT_NUMBER value in this table
8487 shall not be found in the corresponding
8488 EVENT_LOG_DATA_TBL (Table 76).
8489 3..15 Reserved.

8490 HISTORY_ENTRY_RCD
8491 HISTORY_TIME Date and time of History Log entry.

8492 EVENT_NUMBER 0..65535 This Element is a common event counter that increments
8493 whenever a new event is generated, regardless of whether the
8494 event is recorded in the History Log, the Event Log, or both
8495 logs.

8496 HISTORY_SEQ_NBR 0..65535 Sequence number associated with the History Log only. This
8497 value represents the least significant 16 bits of
8498 LAST_ENTRY_SEQ_NBR.

8499 USER_ID 0..65535 The User ID associated with this History Log entry. It comes
8500 from the Log In Procedure or from a communication session
8501 initiation sequence. A USER_ID of zero (0) means the End
8502 Device initiated the event. A USER_ID of one (1) means the
8503 event was manually initiated.

222
DRAFT ANSI C12.19-2012

8504 USER_ID values in the range of 57 344 (E000H) through


8505 65 535 (FFFFH) are used for devices attached to the End
8506 Device.

8507 HISTORY_CODE Event code logged. See TABLE_IDB_BFLD.

8508 HISTORY_ARGUMENT Argument associated with a specific entry. For standard event
8509 arguments, refer to Annex B, “(normative) History and event
8510 log code”.

8511 HISTORY_LOG_RCD
8512 HIST_FLAGS See LIST_STATUS_BFLD.

8513 NBR_VALID_ENTRIES 0..65535 Number of valid entries in the log. The range is from zero (0)
8514 (meaning the log is empty) to the actual dimension of the log.

8515 LAST_ENTRY_ELEMENT 0..65535 The array element number of the newest valid entry in the log.

8516 LAST_ENTRY_SEQ_NBR 0..4294967295 The sequence number of the newest valid entry in the log.

8517 NBR_UNREAD_ENTRIES 0..65535 The number of entries in the log that have not yet been read. It
8518 is only changed through a procedure.

8519 ENTRIES Array of History Log entries.

Tables / Decade 7: History Log and Event Log Tables 223


Table 74 History Log Data Table
DRAFT ANSI C12.19-2012

8520 9.8.6 Table 75 Event Log Control Table

8521 Table 75 Data Description

8522 EVENT_LOG_CTRL_TBL (Table 75) defines the Event Log codes to be written to the Event Log. It also defines
8523 which specific procedures and/or table writes are to be acknowledged in the Event Log. For a specific procedure or
8524 table to be acknowledged, three independent tests shall all be true:

8525 a) The procedure or table shall be used in the End Device, per the GEN_CONFIG_TBL (Table 00).

8526 b) The appropriate Event code shall be used, per Table 75.

8527 c) The procedure or table shall be requested to be acknowledged, per Table 75.

8528 This data structure is identical to the structure in HISTORY_LOG_CTRL_TBL (Table 73). The associated table
8529 (Event Log Data Table 76) shall be used when there is an expressed need to establish and maintain consumer
8530 confidence in the End Device metrology using a reliable audit trail.

8531 Global Default Table Property Overrides: Role=“CONTROL”

8532 Table 75 Type Definitions

8533 TABLE 75 EVENT_LOG_CTRL_TBL = HISTORY_CTRL_RCD;

8534 Table 75 Element Descriptions

8535 Identifier Value Definition


8536 HISTORY_CTRL_RCD Redefines:
8537 HISTORY_LOG_CTRL_TBL.HISTORY_CTRL_RCD.

8538 STD_EVENTS_MONITORED_FLAGS Bit position is linearly associated with corresponding standard


8539 event code.
8540 FALSE Turns off event recording for associated event code.
8541 TRUE Turns on event recording for associated event code.

8542 MFG_EVENTS_MONITORED_FLAGS Bit position is linearly associated with corresponding


8543 manufacturer event code.
8544 FALSE Turns off event recording for associated event code.
8545 TRUE Turns on event recording for associated event code.

8546 STD_TBLS_MONITORED_FLAGS Bit position is linearly associated with corresponding standard


8547 table number.
8548 FALSE Turns off event recording for associated table.
8549 TRUE Turns on event recording for associated table.

8550 MFG_TBLS_MONITORED_FLAGS Bit position is linearly associated with corresponding


8551 manufacturer table number.
8552 FALSE Turns off event recording for associated table.
8553 TRUE Turns on event recording for associated table.

8554 STD_PROC_MONITORED_FLAGS Bit position is linearly associated with corresponding standard


8555 procedure number.
8556 FALSE Turns off event recording for associated procedure.
224
DRAFT ANSI C12.19-2012

8557 TRUE Turns on event recording for associated procedure.

8558 MFG_PROC_MONITORED_FLAGS Bit position is linearly associated with corresponding


8559 manufacturer procedure number.
8560 FALSE Turns off event recording for associated procedure.
8561 TRUE Turns on event recording for associated procedure.

Tables / Decade 7: History Log and Event Log Tables 225


Table 75 Event Log Control Table
DRAFT ANSI C12.19-2012

8562 9.8.7 Table 76 Event Log Data Table

8563 Table 76 Data Description

8564 EVENT_LOG_DATA_TBL (Table 76) provides the Event Log Data that is controlled by Table 75, Event Log
8565 Control Table. The event logger table is a secured audit trail tool capable of recording metrological signatures (see
8566 Table 78), secured register reading signatures, and event-check signatures.

8567 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

8568 Table 76 Type Definitions

8569 TYPE EVENT_ENTRY_RCD = PACKED RECORD


8570 EVENT_TIME : LTIME_DATE;
8571 IF ACT_LOG_TBL.EVENT_NUMBER_FLAG THEN
8572 EVENT_NUMBER : UINT16;
8573 END;
8574 EVENT_SEQ_NBR : UINT16;
8575 USER_ID : UINT16;
8576 EVENT_CODE : TABLE_IDB_BFLD;
8577 EVENT_ARGUMENT :
8578 BINARY(ACT_LOG_TBL.EVENT_DATA_LENGTH);
8579 END;

8580 TYPE EVENT_LOG_RCD = PACKED RECORD


8581 EVENT_FLAGS : LIST_STATUS_BFLD;
8582 NBR_VALID_ENTRIES : UINT16;
8583 LAST_ENTRY_ELEMENT : UINT16;
8584 LAST_ENTRY_SEQ_NBR : UINT32;
8585 NBR_UNREAD_ENTRIES : UINT16;
8586 ENTRIES :
8587 ARRAY[ACT_LOG_TBL.NBR_EVENT_ENTRIES] OF
8588 EVENT_ENTRY_RCD;
8589 END;

8590 TABLE 76 EVENT_LOG_DATA_TBL = EVENT_LOG_RCD;

8591 Table 76 Element Descriptions

8592 Identifier Value Definition


8593 LIST_STATUS_BFLD Redefines: SELF_READ_DATA_TBL.
8594 LIST_STATUS_BFLD.

8595 ORDER Alias: ORDER_FLAG.


8596 0 Event log entries are transported in ascending order (N is older
8597 than N + 1).
8598 1 Event log entries are transported in descending order (N is
8599 newer than N + 1).

8600 OVERFLOW_FLAG FALSE Overflow has not occurred.


8601 TRUE An attempt was made to enter an event log entry such that the
8602 number of unread events entries would have exceeded the
8603 actual number of possible entries in the log.

226
DRAFT ANSI C12.19-2012

8604 LIST_TYPE Alias: LIST_TYPE_FLAG.


8605 0 FIFO (First-In, First-Out) ordered entries are placed in event
8606 log list, EVENT_LOG_DATA_TBL.ENTRIES.
8607 1 Circular list entries are placed in event log list,
8608 EVENT_LOG_DATA_TBL.ENTRIES.

8609 INHIBIT_OVERFLOW_FLAG Shall have the same value as ACT_LOG_TBL.


8610 EVENT_INHIBIT_OVF_FLAG (Table 71).

8611 TABLE_IDB_BFLD
8612 EVENT_NUMBER 0..2039 Event code number logged. See EVENT_CODES_ENUM
8613 for Standard values (MFG_FLAG == FALSE).
8614 Alias: TBL_PROC_NBR.

8615 MFG_FLAG Alias: STD_VS_MFG_FLAG.


8616 FALSE Event code is standard defined.
8617 TRUE Event code is manufacturer defined.

8618 SELECTOR 0 The associated entry’s EVENT_NUMBER value in this table


8619 may or may not be found in the corresponding
8620 HISTORY_LOG_DATA_TBL (Table 74). This option is
8621 provided for backward compatibility with version 1 of this
8622 standard.
8623 1 The associated entry’s EVENT_NUMBER value in this table
8624 shall be found in the corresponding
8625 HISTORY_LOG_DATA_TBL (Table 74).
8626 2 The associated entry’s EVENT_NUMBER value in this table
8627 shall not be found in the corresponding
8628 HISTORY_LOG_DATA_TBL (Table 74).
8629 3..15 Reserved.

8630 EVENT_ENTRY_RCD
8631 EVENT_TIME Date and time of Event Log entry.

8632 EVENT_NUMBER 0..65535 This Element is a common event counter that increments
8633 whenever a new event is generated, regardless of whether the
8634 event is recorded in the History Log, the Event Log, or both
8635 logs.

8636 EVENT_SEQ_NBR 0..65535 Sequence number associated with the Event Log only.

8637 USER_ID 0..65535 The User ID associated with this Event Log entry. It comes
8638 from the Log In Procedure or from a communication session
8639 initiation sequence. A USER_ID of zero (0) means the End
8640 Device initiated the event. A USER_ID of one (1) means the
8641 event was manually initiated.
8642 USER_ID values in the range of 57344 (E000H) through
8643 65535 (FFFFH) are used for devices attached to the End
8644 Device.

8645 EVENT_CODE Event code logged. See TABLE_IDB_BFLD.

8646 EVENT_ARGUMENT Argument associated with a specific entry. Refer to Annex B,


8647 “(normative) History and event log codes”, for details.

Tables / Decade 7: History Log and Event Log Tables 227


Table 76 Event Log Data Table
DRAFT ANSI C12.19-2012

8648 EVENT_LOG_RCD
8649 EVENT_FLAGS See LIST_STATUS_BFLD.

8650 NBR_VALID_ENTRIES 0..65535 Number of valid entries in the log. The range is zero (0)
8651 (meaning the log is empty) to the actual dimension of the log.

8652 LAST_ENTRY_ELEMENT
8653 0..65535 The array element number of the newest valid entry in the log.

8654 LAST_ENTRY_SEQ_NBR 0..4294967295


8655 The sequence number of the newest valid entry in the log.
8656 This Element shall not be resettable to zero, by the
8657 application, while the End Device is in metering mode
8658 (ED_MODE_STATUS_TBL. METERING_FLAG ==
8659 TRUE). When the element increments beyond its largest
8660 possible value, it shall roll over to zero.

8661 NBR_UNREAD_ENTRIES 0..65535 The number of entries in the log that have not yet been read. It
8662 is only changed through a procedure.

8663 ENTRIES Array of Event Log entries.

228
DRAFT ANSI C12.19-2012

8664 9.8.8 Table 77 Event Log and Signatures Enable Table

8665 Table 77 Data Description

8666 SIG_ENABLE_TBL (Table 77) contains three collections of Standard and Manufacturer Table set selectors that
8667 identify the tables that are included in the computation of the METROLOGICAL_SIG, PROGRAM_SIG, and
8668 ALTERNATE_SIG signatures found in the Signature table (Table 78). A fourth collection of Table set selectors is
8669 used to identify the tables that need to be logged in the Event Log data table (Table 76). A fifth collection of Table-
8670 set selectors is used to identify which tables are Secured Register Tables.

8671 Only tables identified within shall be recorded in the Signatures Table, and only those Tables identified in the
8672 EVENTLOG_SEL shall trigger a Table-changed event entry in the Event Log data table (Table 76). Also, only
8673 those Tables identified in the SECURED_REGISTER_SEL may trigger a Read Secured Table or Read Secured
8674 Register event entry in the Event Log data table (Table 76), when this capability is enabled by the End Device
8675 reader.

8676 Global Default Table Property Overrides: Role=“CONTROL”

8677 Table 77 Type Definitions

8678 TYPE TABLE_SEL_RCD = PACKED RECORD


8679 STD_TBLS_SEL : SET(GEN_CONFIG_TBL.DIM_STD_TBLS_USED);
8680 MFG_TBLS_SEL : SET(GEN_CONFIG_TBL.DIM_MFG_TBLS_USED);
8681 END;

8682 TYPE SIG_ENABLE_RCD = PACKED RECORD


8683 IF ACT_LOG_TBL.METROLOGICAL_SIG_FLAG THEN
8684 METROLOGICAL_SEL : TABLE_SEL_RCD;
8685 EVENTLOG_SEL : TABLE_SEL_RCD;
8686 END;
8687 IF ACT_LOG_TBL.PROGRAM_SIG_FLAG THEN
8688 PROGRAM_SEL : TABLE_SEL_RCD;
8689 END;
8690 IF ACT_LOG_TBL.ALTERNATE_SIG_FLAG THEN
8691 ALTERNATE_SEL : TABLE_SEL_RCD;
8692 END;
8693 IF ACT_LOG_TBL.SECURED_REGISTER_FLAG THEN
8694 SECURED_REGISTER_SEL : TABLE_SEL_RCD;
8695 END;
8696 END;

8697 TABLE 77 SIG_ENABLE_TBL = SIG_ENABLE_RCD;

8698 Table 77 Element Descriptions

8699 Identifier Value Definition


8700 TABLE_SEL_RCD Identification of the Standard and Manufacturer Tables that
8701 may trigger table change or secured-registers read events, or
8702 that may be signed.

8703 STD_TBLS_SEL This SET indicates which of the Standard tables are selected.
8704 Tables are represented by bits 0 through (8 *
8705 DIM_STD_TBLS_USED - 1).

Tables / Decade 7: History Log and Event Log Tables 229


Table 77 Event Log and Signatures Enable Table
DRAFT ANSI C12.19-2012

8706 FALSE No action is required for this table.


8707 TRUE When the corresponding table is modified, the action
8708 requested shall be performed.

8709 MFG_TBLS_SEL This SET indicates which of the Manufacturer tables are
8710 selected. Tables are represented by bits 0 through (8 *
8711 DIM_STD_TBLS_USED - 1).
8712 FALSE No action is required for this table.
8713 TRUE When the corresponding table is modified, the action
8714 requested shall be performed.

8715 SIG_ENABLE_RCD
8716 METROLOGICAL_SEL Identifies the Tables that contain metrological elements and
8717 shall be included in the computation of the
8718 METROLOGICAL_SIG. Indirect changes to these Tables
8719 (through User-defined Tables, Extended User-defined Tables,
8720 or other means) shall also cause the computation of the
8721 METROLOGICAL_SIG of all affected Tables.

8722 EVENTLOG_SEL Indicates which of the Tables will trigger a “Table Written
8723 To” event (Event 10, 59, 64, or 69) or, alternatively, an “End
8724 Device Programmed” event (Event 11, 60, 65, or 70) in the
8725 Event Log data table (Table 76). Tables that are not selected
8726 within, but are identified in METROLOGICAL_SEL, shall
8727 trigger a re-verification (End Device unsealed) event upon
8728 change. Indirect changes to these Tables (through User-
8729 defined Tables, Extended User-defined Tables, or other
8730 means) shall also generate an Event Log entry, as if the
8731 referenced tables were modified or accessed directly;
8732 however, the table identifier (TABLE_IDA_BFLD) recorded
8733 in the EVENT_ARGUMENT shall be that of the User-
8734 defined Table or the Extended User-defined Table that
8735 triggered that event, when the change or access was carried
8736 out through a user-defined or extended-user-defined table (see
8737 Annex B, “(normative) History and event log codes”, for more
8738 details). A compliant implementation shall set all of the
8739 corresponding bits of
8740 EVENT_LOG_CTRL_TBL.STD_TBLS_MONITORED_F
8741 LAGS and
8742 EVENT_LOG_CTRL_TBL.MFG_TBLS_MONITORED_
8743 FLAGS to TRUE if they were also set to TRUE in the
8744 EVENTLOG_SEL. STD_TBLS_SEL and
8745 EVENTLOG_SEL.MFG_TBLS_SEL, respectively, for this
8746 trigger to be enabled.

8747 PROGRAM_SEL Identifies the Tables that contain program elements and will
8748 be included in the computation of the PROGRAM_SIG.

8749 ALTERNATE_SEL Identifies the Tables that contain metrological elements and
8750 will be included in the computation of the
8751 ALTERNATE_SIG.

8752 SECURED_REGISTER_SEL Identifies the Tables that contain secured register, sensors, or
8753 status elements that will be included in the computation of the
8754 SECURED_REGISTER_SIG (see Annex B, “(normative)
230
DRAFT ANSI C12.19-2012

8755 History and event log code”) and trigger a Read Secured Table
8756 event (Event 7, 73, or 75) or a Read Secured Register event
8757 (Event 74 or 76) depending on the value of
8758 ACT_LOG_TBL.SECURED_REGISTER_FLAG and if
8759 the “Start Secured Register” procedure has been executed. A
8760 compliant implementation shall set all of the corresponding
8761 bits of EVENTLOG_SEL to TRUE if they were also set to
8762 TRUE in SECURED_REGISTER_SEL.

Tables / Decade 7: History Log and Event Log Tables 231


Table 77 Event Log and Signatures Enable Table
DRAFT ANSI C12.19-2012

8763 9.8.9 Table 78 End Device Program State Table

8764 Table 78 Data Description

8765 SIGNATURE_TBL (Table 78) contains a list of table identifiers and their corresponding signatures. This table
8766 provides information that can be used to validate the integrity of the Event Logger itself (EVENT_CHECK_SIG).
8767 This table also lists the tables that were modified and, hence, need to be downloaded when the Event Logger is
8768 downloadable (MODIFIED_FLAG). It also provides assist technology for improved field programming and
8769 program change detection in real time (PROGRAM_SIG and ALTERNATE_SIG).

8770 There are a number of variations of signatures: Global signatures that represent the programming state of a selection
8771 of Tables (METROLOGICAL_SIG, PROGRAM_SIG, and ALTERNATE_SIG); and audit trail signatures that
8772 cover the programming history of the End Device (EVENT_CHECK_SIG). When Table 78 is not implemented, its
8773 conceptual implementation logic shall be used to derive the event check signature, EVENT_CHECK_SIG, used in
8774 the Event Log data table (Table 76).

8775 Background information and description of the process required to generate these signatures is described in
8776 Annex E, “(informative) Event Logger implementation”.

8777 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

8778 Table 78 Type Definitions

8779 TYPE TABLE_LIST_RCD = PACKED RECORD


8780 TABLE_ID : TABLE_IDA_BFLD;
8781 TABLE_SIG : BINARY(16);
8782 END;

8783 TYPE SIGNATURE_RCD = PACKED RECORD


8784 IF ACT_LOG_TBL.METROLOGICAL_SIG_FLAG THEN
8785 METROLOGICAL_SIG : BINARY(16);
8786 EVENT_CHECK_SIG : BINARY(16);
8787 END;
8788 IF ACT_LOG_TBL.PROGRAM_SIG_FLAG THEN
8789 PROGRAM_SIG : BINARY(16);
8790 END;
8791 IF ACT_LOG_TBL.ALTERNATE_SIG_FLAG THEN
8792 ALTERNATE_SIG : BINARY(16);
8793 END;
8794 TABLE_LIST :
8795 ARRAY[ACT_LOG_TBL. NBR_PROGRAM_TABLES]
8796 OF TABLE_LIST_RCD;
8797 END;

8798 TABLE 78 SIGNATURE_TBL = SIGNATURE_RCD;

8799 Table 78 Element Descriptions

8800 Identifier Value Definition


8801 TABLE_IDA_BFLD Redefines: STD.TABLE_IDA_BFLD.

8802 TBL_PROC_NBR 0..2039 Table ID.

232
DRAFT ANSI C12.19-2012

8803 MFG_FLAG Alias: STD_VS_MFG_FLAG.


8804 FALSE Standard table.
8805 TRUE Manufacturer table.

8806 MODIFIED_FLAG Alias: PENDING_FLAG.


8807 FALSE This table was not changed since the last invocation of the
8808 Update Last Read Entries procedure (Procedure 5). Invocation
8809 of the Cold Start procedure (Procedure 0), or the Reset List
8810 Pointers procedure (Procedure 4) or Update Last Read Entries
8811 procedure (Procedure 5), shall set this flag to FALSE.
8812 TRUE This table was changed since the last invocation of the Update
8813 Last Read Entries procedure (Procedure 5).

8814 METROLOGICAL_FLAG Alias: FLAG1.


8815 Alias: EUDT_FLAG.
8816 FALSE This table does not contain metrological parameters, and it
8817 shall not be included in the computation of the
8818 METROLOGICAL_SIG.
8819 TRUE This table does contain metrological parameters, and it shall
8820 be included in the computation of the
8821 METROLOGICAL_SIG.

8822 LOGGABLE_FLAG Alias: FLAG2.


8823 FALSE This table is not event loggable.
8824 TRUE This table is event loggable. Changes to this table shall result
8825 in the creation of an Event Log entry in the Event Log data
8826 table (Table 76). Also, if this table was marked as a “secured
8827 register” table, this bit shall be also set.

8828 ALTERNATE_FLAG Alias: FLAG3.


8829 FALSE This table shall not be included in the computation of the
8830 ALTERNATE_SIG.
8831 TRUE This table shall be included in the computation of the
8832 ALTERNATE_SIG.

8833 TABLE_LIST_RCD
8834 TABLE_ID Identification number of the table.

8835 TABLE_SIG Active table signature. The signature is used to detect changes
8836 made to this Table. This signature is computed using the
8837 algorithm specified in
8838 ACT_LOG_TBL.SIG_ALGORITHM applied to the entire
8839 binary content of the Table. The resulting signature becomes
8840 available as input in the computation of the
8841 PROGRAM_SIG, EVENT_CHECK_SIG or the
8842 ALTERNATE_SIG. Only the first 16 Octets spanning index
8843 0–15 of the resulting signature are captured by this Element.

8844 SIGNATURE_RCD
8845 METROLOGICAL_SIG A signature that captures the active metrological state of an
8846 End Device. It is the digest of all tables with
8847 METROLOGICAL_FLAG set to TRUE.
8848 The algorithm digests each TABLE_SIG in order of
8849 increasing index, starting with Standard Tables and followed
8850 by Manufacturer Tables. Only the first 16 Octets spanning
Tables / Decade 7: History Log and Event Log Tables 233
Table 78 End Device Program State Table
DRAFT ANSI C12.19-2012

8851 index 0–15 of the resulting signature are captured by this


8852 Element.

8853 EVENT_CHECK_SIG A signature that is used to detect event log discontinuity for
8854 the life of the End Device. This signature is created by the
8855 repeated application of the algorithm indicated by
8856 DIM_LOG_TBL.SIG_ALGORITHM applied to the new
8857 EVENT_ENTRY_RCD entries that are being added to the
8858 Event Log data table (Table 76). Only the first 16 Octets
8859 spanning index 0–15 of the resulting signature are captured by
8860 this Element.
8861 The processing logic for the creation of
8862 EVENT_CHECK_SIG in this table and in Table 76 is as
8863 follows:
8864 a) Update TABLE_SIGs to reflect the changes to all
8865 metrological tables.
8866 b) Update the signature element METROLOGICAL_SIG
8867 to reflect the changes to metrological tables. The
8868 METROLOGICAL_SIG value is the result of the use of
8869 the algorithm indicated by
8870 DIM_LOG_TBL.SIG_ALGORITHM to digest the
8871 concatenated signatures produced in step a). Only
8872 signatures of metrological tables shall be included in the
8873 computation. These shall be ordered for processing in
8874 increasing table numbers starting with Standard Tables
8875 and followed by Manufacturer Tables.
8876 c) Create a new event entry in Table 76, Event Log Data
8877 Table, and initialize its EVENT_ARGUMENT elements
8878 to binary 00H.
8879 d) Fill in the EVENT_TIME, the optional
8880 EVENT_NUMBER, the required EVENT_SEQ_NBR,
8881 USER_ID and EVENT_CODE, and all
8882 EVENT_ARGUMENT elements except for
8883 EVENT_CHECK_SIG (if present).
8884 e) Using the algorithm indicated by
8885 DIM_LOG_TBL.SIG_ALGORITHM digest the newly
8886 created event information that was placed in the
8887 EVENT_ENTRY_RCD. This includes all elements of
8888 the EVENT_ARGUMENT, but excludes the
8889 EVENT_CHECK_SIG element. For example, when
8890 EVENT_CODE=65, the EVENT_ARGUMENT will
8891 not be digested; when EVENT_CODE=64, only the
8892 TABLE_IDA_BFLD field of the
8893 EVENT_ARGUMENT will be digested; when
8894 EVENT_CODE=70, then all Octets starting at offset 16
8895 to offset ACT_LOG_TBL.EVENT_DATA_LENGTH-
8896 1 of the EVENT_ARGUMENT will be digested.
8897 f) Append to the EVENT_ENTRY_RCD’s signature
8898 [computed in step e)] the previous event log entry
8899 EVENT_CHECK_SIG (or use a signature of binary 0’s
8900 if this is the first event entry being created) and then
8901 append the metrological signature [computed in step b)]
8902 and finally digest the three concatenated signatures, using
8903 the algorithm indicated by

234
DRAFT ANSI C12.19-2012

8904 DIM_LOG_TBL.SIG_ALGORITHM, to produce the


8905 Event Logger entry’s signature.
8906 g) Place the result into (to replace) the
8907 EVENT_CHECK_SIG in this table. Also copy it into
8908 the EVENT_CHECK_SIG of the
8909 EVENT_ARGUMENT of Table 76 (if applicable).

8910 The Event Logger’s (Table 76) most recent signature shall be
8911 identical to the most recent EVENT_CHECK_SIG element
8912 of Table 78 at all times.

8913 PROGRAM_SIG A signature that captures the active programmed state of an


8914 End Device. It is the digest of all Tables listed in
8915 TABLE_LIST using the algorithm indicated by
8916 DIM_LOG_TBL.SIG_ALGORITHM. The algorithm
8917 digests each TABLE_SIG in order of increasing index. This
8918 signature can provide assist values for an external device in
8919 the caching of meter configuration state. Only the first 16
8920 Octets spanning index 0–15 of the resulting signature are
8921 captured by this Element.

8922 ALTERNATE_SIG A signature that captures the active state of an End Device,
8923 subject to (alternate unspecified by this standard) application
8924 requirements. It is the digest of all tables with
8925 ALTERNATE_FLAG set to TRUE. The algorithm digests
8926 each TABLE_SIG in order of increasing index.
8927 A typical use of this signature is to check for changes to a
8928 collection of End Device identity independent programming
8929 Tables. This signature can be used to compare and validate the
8930 program state of a population of deployed End Device. Only
8931 the first 16 Octets spanning index 0–15 of the resulting
8932 signature are captured by this Element.

8933 TABLE_LIST Array containing the list of Tables monitored for change with
8934 signatures. See TABLE_LIST_RCD.

Tables / Decade 7: History Log and Event Log Tables 235


Table 78 End Device Program State Table
DRAFT ANSI C12.19-2012

8935 9.8.10 Table 79 Event Counters Table

8936 Table 79 Data Description

8937 EVENT_COUNTER_TBL (Table 79) contains Event Counters used to detect modification to calibration,
8938 programming, or metrological parameters.

8939 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

8940 Table 79 Type Definitions

8941 TYPE EVENT_COUNTER_RCD = PACKED RECORD


8942 CALIBRATION_COUNTER : UINT16;
8943 PROGRAM_COUNTER : UINT16;
8944 END;

8945 TABLE 79 EVENT_COUNTER_TBL = EVENT_COUNTER_RCD;

8946 Table 79 Element Descriptions

8947 Identifier Value Definition


8948 EVENT_COUNTER_RCD
8949 CALIBRATION_COUNTER
8950 0..65535 Incremented by one each time one or multiple calibration
8951 parameters are modified.

8952 PROGRAM_COUNTER 0..65535 Incremented by one each time one or multiple programming or
8953 metrological parameters are modified. This counter may be
8954 used by upstream devices to trigger an update to the
8955 configuration information stored (caching of static
8956 information) for this device.

236
DRAFT ANSI C12.19-2012

8957 9.9 Decade 8: User-defined Tables

8958 Decade 8 Name

8959 USER_DEFINED_TABLES_DEC

8960 Decade 8 Data Description

8961 These tables provide the capability for the End Device user to build custom tables using selections from the tables
8962 available in an End Device. The selections are bidirectional in the sense that any change to a value of a selected
8963 table element will manifest itself in the user-defined table that contains that selection, and any change to a selected
8964 identifier from the user-defined table shall result in a corresponding change in the selected table identifier. All event
8965 log, change events, and security constraints shall operate to maintain coherence between the user-defined tables and
8966 the table identifiers they point to. Support of writing to user-defined tables is optional at the manufacturer discretion
8967 on a per-table basis.

8968 9.9.1 Table 80 User-defined Tables Dimension Limits Table

8969 Table 80 Data Description

8970 DIM_UDT_FUNC_LIM_TBL (Table 80) contains maximum values and control parameters for the user-defined
8971 tables. These values set up to six independent sets of user-defined tables.

8972 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

8973 Table 80 Type Definitions

8974 TYPE UDT_CTRL_BFLD = BIT FIELD OF UINT8


8975 NBR_UDTS : UINT(0..2);
8976 INSTANCE_FLAG : BOOL(3);
8977 DATA_ACCESS_METHOD : UINT(4..5);
8978 FILLER : FILL(6..7);
8979 END;

8980 TYPE UDT_FUNC_LIM_RCD = PACKED RECORD


8981 NBR_XFR_LIST_ITEMS : UINT16;
8982 UDT_FUNC_CTRL : UDT_CTRL_BFLD;
8983 MAX_INSTANCE : UINT8;
8984 IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_0_TBL] THEN
8985 UDT_0_SIZE : UINT32;
8986 END;
8987 IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_1_TBL] THEN
8988 UDT_1_SIZE : UINT32;
8989 END;
8990 IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_2_TBL] THEN
8991 UDT_2_SIZE : UINT32;
8992 END;
8993 IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_3_TBL] THEN
8994 UDT_3_SIZE : UINT32;
8995 END;
8996 IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_4_TBL] THEN
8997 UDT_4_SIZE : UINT32;
8998 END;
8999 IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_5_TBL] THEN
Tables / Decade 8: User-defined Tables 237
Table 80 User-defined Tables Dimension Limits Table
DRAFT ANSI C12.19-2012

9000 UDT_5_SIZE : UINT32;


9001 END;
9002 END;

9003 TABLE 80 DIM_UDT_FUNC_LIM_TBL = UDT_FUNC_LIM_RCD;

9004 Table 80 Element Descriptions

9005 Identifier Value Definition


9006 UDT_CTRL_BFLD
9007 NBR_UDTS 0..6 The maximum number of user-defined tables that can be
9008 defined concurrently by the list of data items.
9009 7 Reserved.

9010 INSTANCE_FLAG FALSE Multiple instances are not supported. MAX_INSTANCE


9011 shall be ignored.
9012 TRUE Multiple table instances are supported.

9013 DATA_ACCESS_METHOD Element used to designate possible methods of selecting table


9014 entries for placement in a user-defined table.
9015 0 Only complete tables can be mapped into user tables. Partial
9016 tables cannot be mapped.
9017 1 Offset-count access method is supported.
9018 2 Index-count access method is supported.
9019 3 Access methods 2 and 3 are supported.

9020 DIM_UDT_FUNC_LIM_RCD
9021 NBR_XFR_LIST_ITEMS 0..65535 The maximum number of UINT16 entries used to make the
9022 list.

9023 UDT_FUNC_CTRL These are the limiting capabilities for user-defined table
9024 selections. This defines the maximum number of user-defined
9025 tables supported in this Decade and the data access method, as
9026 defined by UDT_CTRL_BFLD.

9027 MAX_INSTANCE 0 Reserved.


9028 1..255 Maximum number of table sets supported by this End Device.
9029 If INSTANCE_FLAG is FALSE, then this Element is
9030 ignored.

9031 UDT_0_SIZE 0..4294967295 Maximum number of Octets used to size UDT_0_TBL


9032 (Table 84).

9033 UDT_1_SIZE 0..4294967295 Maximum number of Octets used to size UDT_1_TBL


9034 (Table 85).

9035 UDT_2_SIZE 0..4294967295 Maximum number of Octets used to size UDT_2_TBL


9036 (Table 86).

9037 UDT_3_SIZE 0..4294967295 Maximum number of Octets used to size UDT_3_TBL


9038 (Table 87).

9039 UDT_4_SIZE 0..4294967295 Maximum number of Octets used to size UDT_4_TBL


9040 (Table 88).
238
DRAFT ANSI C12.19-2012

9041 UDT_5_SIZE 0..4294967295 Maximum number of Octets used to size UDT_5_TBL


9042 (Table 89).

Tables / Decade 8: User-defined Tables 239


Table 80 User-defined Tables Dimension Limits Table
DRAFT ANSI C12.19-2012

9043 9.9.2 Table 81 Actual User-defined Tables Limiting Table

9044 Table 81 Data Description

9045 ACT_UDT_FUNC_LIM_TBL (Table 81) contains actual limiting values for the user-defined tables. These
9046 parameters define up to six independent sets of user-defined tables definitions.

9047 Global Default Table Property Overrides: Role=“ACTUAL”

9048 Table 81 Type Definitions

9049 TABLE 81 ACT_UDT_FUNC_LIM_TBL = UDT_FUNC_LIM_RCD;

9050 Table 81 Element Descriptions

9051 Identifier Value Definition


9052 UDT_CTRL_BFLD Redefines: DIM_UDT_FUNC_LIM_TBL.
9053 UDT_CTRL_BFLD.

9054 NBR_UDTS 0..6 The actual number of user-defined tables that are defined
9055 concurrently by the list of data items.
9056 7 Reserved.

9057 INSTANCE_FLAG FALSE Multiple instances are not supported. MAX_INSTANCE


9058 shall be ignored.
9059 TRUE Multiple table sets are in use.

9060 DATA_ACCESS_METHOD Designates the actual method of selecting table entries for
9061 placement in a user-defined table.
9062 0 Complete tables are mapped into user tables. Partial table
9063 cannot be mapped.
9064 1 Offset-count access method is used.
9065 2 Index-count access method is used.
9066 3 Reserved.

9067 UDT_FUNC_LIM_RCD Redefines: DIM_UDT_FUNC_LIM_TBL.


9068 UDT_FUNC_LIM_RCD.

9069 NBR_XFR_LIST_ITEMS 0..65535 The actual number of UINT16 entries used in the list.

9070 UDT_FUNC_CTRL The actual method used for user-defined tables selections.
9071 This identifies the actual number of user-defined tables and
9072 the data access method used in this Decade as defined by
9073 UDT_CTRL_BFLD.

9074 MAX_INSTANCE 0 Reserved.


9075 1..255 Actual number of table sets used by this End Device. If
9076 INSTANCE_FLAG is FALSE ignore.

9077 UDT_0_SIZE 0..4294967295 Actual number of Octets used to size UDT_0_TBL


9078 (Table 84).

240
DRAFT ANSI C12.19-2012

9079 UDT_1_SIZE 0..4294967295 Actual number of Octets used to size UDT_1_TBL


9080 (Table 85).

9081 UDT_2_SIZE 0..4294967295 Actual number of Octets used to size UDT_2_TBL


9082 (Table 86).

9083 UDT_3_SIZE 0..4294967295 Actual number of Octets used to size UDT_3_TBL


9084 (Table 87).

9085 UDT_4_SIZE 0..4294967295 Actual number of Octets used to size UDT_4_TBL


9086 (Table 88).

9087 UDT_5_SIZE 0..4294967295 Actual number of Octets used to size UDT_5_TBL


9088 (Table 89).

Tables / Decade 8: User-defined Tables 241


Table 81 Actual User-defined Tables Limiting Table
DRAFT ANSI C12.19-2012

9089 9.9.3 Table 82 User-defined Tables List Table

9090 Table 82 Data Description

9091 UDT_LIST_TBL (Table 82) defines data elements used in the generation of user-defined tables for this Decade.

9092 Global Default Table Property Overrides: Role=“CONTROL”

9093 Table 82 Type Definitions

9094 TYPE SOURCE_ITEM_RCD = PACKED RECORD


9095 TABLE_ID : TABLE_IDB_BFLD;
9096 IF ACT_UDT_FUNC_LIM_TBL.INSTANCE_FLAG THEN
9097 TABLE_INSTANCE : UINT16;
9098 END;
9099 SWITCH ACT_UDT_FUNC_LIM_TBL.DATA_ACCESS_METHOD OF
9100 CASE 0: NO_DATA : NIL;
9101 CASE 1: OFFSET : UINT16;
9102 CASE 2: INDEX : ARRAY[.TABLE_ID.SELECTOR] OF UINT16;
9103 END;
9104 COUNT : UINT16;
9105 END;

9106 TYPE UDT_LIST_SEL_RCD = PACKED RECORD


9107 UDT_LIST :
9108 ARRAY[ACT_UDT_FUNC_LIM_TBL.
9109 NBR_XFR_LIST_ITEMS] OF UINT16;
9110 END;

9111 TABLE 82 UDT_LIST_TBL = UDT_LIST_SEL_RCD;

9112 Table 82 Element Descriptions

9113 Identifier Value Definition


9114 TABLE_IDB_BFLD Redefines: STD.TABLE_IDB_BFLD.

9115 TBL_PROC_NBR 0..2039 Information source table number. Note that the corresponding
9116 implementation bit shall be set in GEN_CONFIG_TBL
9117 (Table 00).

9118 MFG_FLAG Identifies the data Element as originating from either a


9119 standard table or a manufacturer table.
9120 Alias: STD_VS_MFG_FLAG.
9121 FALSE Standard table.
9122 TRUE Manufacturer table.

9123 SELECTOR 0..15 When ACT_UDT_FUNC_LIM_TBL.


9124 DATA_ACCESS_METHOD is zero(0), the table access
9125 method is used. SELECTOR shall be ignored.
9126 When the ACT_UDT_FUNC_LIM_TBL.
9127 DATA_ACCESS_METHOD is one (1), this field is the most
9128 significant 4 bits (bits 16..19) of the offset to the data element
9129 required to locate the data item in a table.
242
DRAFT ANSI C12.19-2012

9130 When ACT_UDT_FUNC_LIM_TBL.


9131 DATA_ACCESS_METHOD is two (2), this is the number of
9132 indices used to select an entry in a table.

9133 SOURCE_ITEM_RCD Effective structure of a single entry in the UDT_LIST array.

9134 TABLE_ID See TABLE_IDB_BFLD.

9135 TABLE_INSTANCE 0..254 Table set instance number.


9136 255..65535 Reserved.

9137 NO_DATA Full table references are used.

9138 OFFSET 0..65535 This field holds the least significant 16 bits of the offset to the
9139 data element required to locate the data item in a table.

9140 INDEX This is an array of indices, which combine to define the index
9141 to an item entry in a table.

9142 COUNT 0..65535 Length of data item(s) in Octets. When the value is zero, it is
9143 the end of the list.

9144 UDT_LIST_SEL_RCD
9145 UDT_LIST An array holding ACT_UDT_FUNC_LIM_TBL.
9146 NBR_XFR_LIST_ITEMS UINT16 quantities. This space is
9147 mapped using SOURCE_ITEM_RCD into variable length
9148 records that select table or partial tables for access via the
9149 user-defined tables.

Tables / Decade 8: User-defined Tables 243


Table 82 User-defined Tables List Table
DRAFT ANSI C12.19-2012

9150 9.9.4 Table 83 User-defined Tables Selections Table

9151 Table 83 Data Description

9152 UDT_SEL_TBL (Table 83) specifies what data elements are used in user tables defined for this Decade. Each array
9153 entry in this table corresponds to a specific table in this Decade following this table. For example, the third entry in
9154 this array corresponds to Table 83 + 3 = Table 86.

9155 Global Default Table Property Overrides: Role=“CONTROL”

9156 Table 83 Type Definitions

9157 TYPE UDT_SET_RCD = PACKED RECORD


9158 FIRST_ITEM_NBR : UINT16;
9159 LAST_ITEM_NBR : UINT16;
9160 END;

9161 TYPE UDT_DATA_SETS_RCD = PACKED RECORD


9162 UDT_DATA_SETS :
9163 ARRAY[ACT_UDT_FUNC_LIM_TBL.NBR_UDTS] OF
9164 UDT_SET_RCD;
9165 END;

9166 TABLE 83 UDT_SEL_TBL = UDT_DATA_SETS_RCD;

9167 Table 83 Element Descriptions

9168 Identifier Value Definition


9169 UDT_SETS_RCD
9170 FIRST_ITEM_NBR 0..65535 This is an item number in UDT_LIST_TBL (Table 82)
9171 specifying the first item in the user-defined table selected by
9172 this entry.

9173 LAST_ITEM_NBR 0..65535 This is an item number in UDT_LIST_TBL (Table 82)


9174 specifying the last item in the user-defined tables selected by
9175 this entry.

9176 UDT_DATA_SETS_RCD
9177 UDT_DATA_SETS Array containing up to
9178 ACT_UDT_FUNC_LIM_TBL.NBR_UDTS (Table 81)
9179 entries. Each entry defines the source selections for a user-
9180 defined table.

244
DRAFT ANSI C12.19-2012

9181 9.9.5 Table 84 User-defined Table Zero

9182 Table 84 Data Description

9183 This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the first entry in table
9184 UDT_SEL_TBL (Table 83).

9185 Global Default Table Property Overrides: Class=“STD.UDT”

9186 Table 84 Type Definitions

9187 TYPE UDT_0_RCD = PACKED RECORD


9188 UDT_0_DATA :
9189 BINARY(ACT_UDT_FUNC_LIM_TBL.UDT_0_SIZE);
9190 END;

9191 TABLE 84 UDT_0_TBL = UDT_0_RCD;

9192 Table 84 Element Descriptions

9193 Identifier Value Definition


9194 UDT_0_RCD
9195 UDT_0_DATA Contains ACT_UDT_FUNC_LIM_TBL. UDT_0_SIZE
9196 Octets holding data defined by the first entry in the list defined
9197 in UDT_SEL_TBL (Table 83).

Tables / Decade 8: User-defined Tables 245


Table 84 User-defined Table Zero
DRAFT ANSI C12.19-2012

9198 9.9.6 Table 85 User-defined Table One

9199 Table 85 Data Description

9200 This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the second entry in table
9201 UDT_SEL_TBL (Table 83).

9202 Global Default Table Property Overrides: Class=“STD.UDT”

9203 Table 85 Type Definitions

9204 TYPE UDT_1_RCD = PACKED RECORD


9205 UDT_1_DATA :
9206 BINARY(ACT_UDT_FUNC_LIM_TBL.
9207 UDT_1_SIZE);
9208 END;

9209 TABLE 85 UDT_1_TBL = UDT_1_RCD;

9210 Table 85 Element Descriptions

9211 Identifier Value Definition


9212 UDT_1_RCD
9213 UDT_1_DATA Contains ACT_UDT_FUNC_LIM_TBL. UDT_1_SIZE
9214 Octets holding data defined by the second entry in the list
9215 defined in UDT_SEL_TBL (Table 83).

246
DRAFT ANSI C12.19-2012

9216 9.9.7 Table 86 User-defined Table Two

9217 Table 86 Data Description

9218 This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the third entry in table
9219 UDT_SEL_TBL (Table 83).

9220 Global Default Table Property Overrides: Class=“STD.UDT”

9221 Table 86 Type Definitions

9222 TYPE UDT_2_RCD = PACKED RECORD


9223 UDT_2_DATA :
9224 BINARY(ACT_UDT_FUNC_LIM_TBL.
9225 UDT_2_SIZE);
9226 END;

9227 TABLE 86 UDT_2_TBL = UDT_2_RCD;

9228 Table 86 Element Descriptions

9229 Identifier Value Definition


9230 UDT_2_RCD
9231 UDT_2_DATA Contains ACT_UDT_FUNC_LIM_TBL. UDT_2_SIZE
9232 Octets holding data defined by the third entry in the list
9233 defined in UDT_SEL_TBL (Table 83).

Tables / Decade 8: User-defined Tables 247


Table 86 User-defined Table Two
DRAFT ANSI C12.19-2012

9234 9.9.8 Table 87 User-defined Table Three

9235 Table 87 Data Description

9236 This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the fourth entry in table
9237 UDT_SEL_TBL (Table 83).

9238 Global Default Table Property Overrides: Class=“STD.UDT”

9239 Table 87 Type Definitions

9240 TYPE UDT_3_RCD = PACKED RECORD


9241 UDT_3_DATA :
9242 BINARY(ACT_UDT_FUNC_LIM_TBL.
9243 UDT_3_SIZE);
9244 END;

9245 TABLE 87 UDT_3_TBL = UDT_3_RCD;

9246 Table 87 Element Descriptions

9247 Identifier Value Definition


9248 UDT_3_RCD
9249 UDT_3_DATA Contains ACT_UDT_FUNC_LIM_TBL. UDT_3_SIZE
9250 Octets holding data defined by the fourth entry in the list
9251 defined in UDT_SEL_TBL (Table 83).

248
DRAFT ANSI C12.19-2012

9252 9.9.9 Table 88 User-defined Table Four

9253 Table 88 Data Description

9254 This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the fifth entry in table
9255 UDT_SEL_TBL (Table 83).

9256 Global Default Table Property Overrides: Class=“STD.UDT”

9257 Table 88 Type Definitions

9258 TYPE UDT_4_RCD = PACKED RECORD


9259 UDT_4_DATA :
9260 BINARY(ACT_UDT_FUNC_LIM_TBL.
9261 UDT_4_SIZE);
9262 END;

9263 TABLE 88 UDT_4_TBL = UDT_4_RCD;

9264 Table 88 Element Descriptions

9265 Identifier Value Definition


9266 UDT_4_RCD
9267 UDT_4_DATA Contains ACT_UDT_FUNC_LIM_TBL. UDT_4_SIZE
9268 Octets holding data defined by the fifth entry in the list
9269 defined in UDT_SEL_TBL (Table 83).

Tables / Decade 8: User-defined Tables 249


Table 88 User-defined Table Four
DRAFT ANSI C12.19-2012

9270 9.9.10 Table 89 User-defined Table Five

9271 Table 89 Data Description

9272 This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the sixth entry in table
9273 UDT_SEL_TBL (Table 83).

9274 Global Default Table Property Overrides: Class=“STD.UDT”

9275 Table 89 Type Definitions

9276 TYPE UDT_5_RCD = PACKED RECORD


9277 UDT_5_DATA :
9278 BINARY(ACT_UDT_FUNC_LIM_TBL.
9279 UDT_5_SIZE);
9280 END;

9281 TABLE 89 UDT_5_TBL = UDT_5_RCD;

9282 Table 89 Element Descriptions

9283 Identifier Value Definition


9284 UDT_5_RCD
9285 UDT_5_DATA Contains ACT_UDT_FUNC_LIM_TBL. UDT_5_SIZE
9286 Octets holding data defined by the sixth entry in the list
9287 defined in UDT_SEL_TBL (Table 83).

250
DRAFT ANSI C12.19-2012

9288 9.10 Decade 9: Telephone Control Tables

9289 Decade 9 Name

9290 TELEPHONE_CONTROL_DEC

9291 Decade 9 Data Description

9292 This Decade contains tables associated with the use of a telephone modem.

9293 9.10.1 Table 90 Telephone Dimension Limits Table

9294 Table 90 Data Description

9295 DIM_TELEPHONE_TBL (Table 90) specifies the maximum dimensional values for this Decade.

9296 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

9297 Table 90 Type Definitions

9298 TYPE TELEPHONE_FLAGS_BFLD = BIT FIELD OF UINT8


9299 ANSWER_FLAG : BOOL(0);
9300 S_ANCHOR_DATE_FLAG : BOOL(1);
9301 OFFHOOK_DETECT_FLAG : BOOL(2);
9302 BIT_RATE : UINT(3..4);
9303 ID_IN_PURPOSE : BOOL(5);
9304 NO_LOCKOUT_PARM : BOOL(6);
9305 EXTENDED_STATUS : BOOL(7);
9306 END;

9307 TYPE TELEPHONE_RCD = PACKED RECORD


9308 TELEPHONE_FLAGS : TELEPHONE_FLAGS_BFLD;
9309 NBR_ORIGINATE_WINDOWS : UINT8;
9310 NBR_SETUP_STRINGS : UINT8;
9311 SETUP_STRING_LENGTH : UINT8;
9312 PREFIX_LENGTH : UINT8;
9313 NBR_ORIGINATE_NUMBERS : UINT8;
9314 PHONE_NUMBER_LENGTH : UINT8;
9315 NBR_RECURRING_DATES : UINT8;
9316 NBR_NON_RECURRING_DATES : UINT8;
9317 NBR_EVENTS : UINT8;
9318 NBR_WEEKLY_SCHEDULES : UINT8;
9319 NBR_ANSWER_WINDOWS : UINT8;
9320 NBR_CALLER_IDS : UINT8;
9321 CALLER_ID_LENGTH : UINT8;
9322 END;

9323 TABLE 90 DIM_TELEPHONE_TBL = TELEPHONE_RCD;


9324

Tables / Decade 9: Telephone Control Tables 251


Table 90 Telephone Dimension Limits Table
DRAFT ANSI C12.19-2012

9325 Table 90 Element Descriptions

9326 Identifier Value Definition


9327 TELEPHONE_FLAGS_BFLD
9328 ANSWER_FLAG FALSE End Device is not capable of answering a phone call.
9329 TRUE End Device is capable of answering a phone call.

9330 S_ANCHOR_DATE_FLAG FALSE End Device is not capable of accepting a separate telephone
9331 schedule anchor date for the Period/Delta RDATE type
9332 (recurring date).
9333 TRUE End Device is capable of accepting a separate telephone
9334 schedule anchor date for the Period/Delta RDATE type
9335 (recurring date).
9336 OFFHOOK_DETECT_FLAG
9337 FALSE End Device is not capable of detecting off hook conditions.
9338 TRUE End Device is capable of detecting off hook conditions.

9339 BIT_RATE 0 End Device is not capable of modifying its bit rate.
9340 1 End Device is capable of modifying globally its originating
9341 and answering bit rate.
9342 2 End Device is capable of modifying separately its originating
9343 and answering bit rate.
9344 3 Reserved.

9345 ID_IN_PURPOSE FALSE End Device is not capable of including an ID field in


9346 CALL_PURPOSE_TBL.
9347 TRUE End Device is capable of including an ID field in
9348 CALL_PURPOSE_TBL (Table 96).

9349 NO_LOCKOUT_PARM FALSE End Device is capable of supporting lockout parameters in


9350 table ANSWER_PARAMETERS_TBL (Table 95).
9351 TRUE End Device is not capable of supporting lockout parameters in
9352 table ANSWER_PARAMETERS_TBL (Table 95).

9353 EXTENDED_STATUS FALSE End Device is not capable of including Last call purpose in the
9354 CALL_STATUS_TBL (Table 97).
9355 TRUE End Device is capable of including Last call purpose in the
9356 CALL_STATUS_TBL (Table 97).

9357 TELEPHONE_RCD
9358 TELEPHONE_FLAGS See TELEPHONE_FLAGS_BFLD.

9359 NBR_ORIGINATE_WINDOWS
9360 0..255 Maximum number of originate time window descriptions
9361 supported by the End Device.

9362 NBR_SETUP_STRINGS 0..255 Maximum number of setup strings supported by the End
9363 Device.

9364 SETUP_STRING_LENGTH 0..255 Maximum length (in Octets) of setup strings supported by the
9365 End Device.

9366 PREFIX_LENGTH 0..255 Maximum length (in Octets) of phone number prefix
9367 supported by the End Device.
252
DRAFT ANSI C12.19-2012

9368 NBR_ORIGINATE_NUMBERS
9369 0..7 Maximum number of originate phone numbers supported by
9370 the End Device.
9371 8..255 Reserved.

9372 PHONE_NUMBER_LENGTH
9373 0..255 Maximum length (in Octets) of phone numbers supported by
9374 the End Device.

9375 NBR_RECURRING_DATES
9376 0..255 Maximum number of recurring dates supported to create the
9377 origination schedule.

9378 NBR_NON_RECURRING_DATES
9379 0..255 Maximum number of nonrecurring dates supported to create
9380 the origination schedule.

9381 NBR_EVENTS 0..255 Maximum number of events supported to create the


9382 origination schedule.

9383 NBR_WEEKLY_SCHEDULES
9384 0..255 Maximum number of weekly schedules supported to create the
9385 origination schedule.

9386 NBR_ANSWER_WINDOWS
9387 0..255 Maximum number of answer time window descriptions
9388 supported by the End Device.

9389 NBR_CALLER_IDS 0..255 Maximum number of Caller ID strings supported by the End
9390 Device.

9391 CALLER_ID_LENGTH 0..255 Maximum length (in Octets) of Caller ID strings supported by
9392 the End Device.

Tables / Decade 9: Telephone Control Tables 253


Table 90 Telephone Dimension Limits Table
DRAFT ANSI C12.19-2012

9393 9.10.2 Table 91 Actual Telephone Limiting Table

9394 Table 91 Data Description

9395 ACT_TELEPHONE_TBL (Table 91) contains actual dimension values for this Decade.

9396 Global Default Table Property Overrides: Role=“ACTUAL”

9397 Table 91 Type Definitions

9398 TABLE 91 ACT_TELEPHONE_TBL = TELEPHONE_RCD;

9399 Table 91 Element Descriptions

9400 Identifier Value Definition


9401 TELEPHONE_FLAGS_BFLD Redefines: DIM_TELEPHONE_TBL.
9402 TELEPHONE_FLAGS_BFLD.

9403 ANSWER_FLAG FALSE End Device shall not answer a phone call.
9404 TRUE End Device may answer a phone call.

9405 S_ANCHOR_DATE_FLAG FALSE End Device does not accept a separate telephone schedule
9406 anchor date for the Period/Delta RDATE type (recurring
9407 date).
9408 TRUE End Device accepts a separate telephone schedule anchor date
9409 for the Period/Delta RDATE type (recurring date).

9410 OFFHOOK_DETECT_FLAG
9411 FALSE End Device does not currently detect off hook conditions.
9412 TRUE End Device currently detects off hook conditions.

9413 BIT_RATE 0 Bit rate cannot be controlled.


9414 1 Answering and originating bit rate can be controlled globally
9415 in GLOBAL_PARAMETERS_TBL (Table 92).
9416 2 Answering and originating bit rate can be controlled
9417 separately in ORIGINATE_PARAMETERS_TBL
9418 (Table 93) and ANSWER_PARAMETERS_TBL
9419 (Table 95).
9420 3 Reserved.

9421 ID_IN_PURPOSE FALSE End Device does not currently include an ID field in
9422 CALL_PURPOSE_TBL (Table 96).
9423 TRUE End Device currently includes an ID field in
9424 CALL_PURPOSE_TBL (Table 96).

9425 NO_LOCKOUT_PARM FALSE End Device currently includes lockout parameters in table
9426 ANSWER_PARAMETERS_TBL (Table 95).
9427 TRUE End Device does not currently include lockout parameters in
9428 table ANSWER_PARAMETERS_TBL (Table 95).

9429 EXTENDED_STATUS FALSE End Device is not including last call purpose information in
9430 the CALL_STATUS_TBL (Table 97).

254
DRAFT ANSI C12.19-2012

9431 TRUE End Device is including last call purpose information in the
9432 CALL_STATUS_TBL (Table 97).

9433 TELEPHONE_RCD Redefines:


9434 DIM_TELEPHONE_TBL.TELEPHONE_RCD.

9435 TELEPHONE_FLAGS See TELEPHONE_FLAGS_BFLD.

9436 NBR_ORIGINATE_WINDOWS
9437 0..255 Actual number of originate time window descriptions used by
9438 the End Device.

9439 NBR_SETUP_STRINGS 0..255 Actual number of setup strings used by the End Device.

9440 SETUP_STRING_LENGTH 0..255 Actual length (in Octets) of setup strings used by the End
9441 Device.

9442 PREFIX_LENGTH 0..255 Actual length (in Octets) of phone number prefix used by the
9443 End Device.

9444 NBR_ORIGINATE_NUMBERS
9445 0..7 Actual number of originate phone numbers used by the End
9446 Device.
9447 8..255 Reserved.

9448 PHONE_NUMBER_LENGTH
9449 0..255 Actual length (in Octets) of phone numbers used by the End
9450 Device.

9451 NBR_RECURRING_DATES
9452 0..255 Actual number of recurring dates used to create the origination
9453 schedule.

9454 NBR_NON_RECURRING_DATES
9455 0..255 Actual number of nonrecurring dates used to create the
9456 origination schedule.

9457 NBR_EVENTS 0..255 Actual number of events used to create the origination
9458 schedule.

9459 NBR_WEEKLY_SCHEDULES
9460 0..255 Actual number of weekly schedules used to create the
9461 origination schedule.

9462 NBR_ANSWER_WINDOWS
9463 0..255 Actual number of answer time window descriptions used by
9464 the End Device.

9465 NBR_CALLER_IDS 0..255 Actual number of Caller ID strings used by the End Device.

9466 CALLER_ID_LENGTH 0..255 Actual length (in Octets) of Caller ID strings used by the End
9467 Device.

Tables / Decade 9: Telephone Control Tables 255


Table 91 Actual Telephone Limiting Table
DRAFT ANSI C12.19-2012

9468 9.10.3 Table 92 Telephone Global Parameters Table

9469 Table 92 Data Description

9470 GLOBAL_PARAMETERS_TBL (Table 92) defines general parameters used for both answering and originating a
9471 call.

9472 Global Default Table Property Overrides: Role=“CONTROL”

9473 Table 92 Type Definitions

9474 TYPE SETUP_STRING_RCD = PACKED RECORD


9475 SETUP_STRING :
9476 STRING(ACT_TELEPHONE_TBL.SETUP_STRING_LENGTH);
9477 END;

9478 TYPE GLOBAL_PARAMETERS_RCD = PACKED RECORD


9479 PSEM_IDENTITY : UINT8;
9480 IF ACT_TELEPHONE_TBL.BIT_RATE == 1 THEN
9481 BIT_RATE : UINT32;
9482 END;
9483 MODEM_SETUP_STRINGS :
9484 ARRAY[ACT_TELEPHONE_TBL.NBR_SETUP_STRINGS] OF
9485 SETUP_STRING_RCD;
9486 END;

9487 TABLE 92 GLOBAL_PARAMETERS_TBL = GLOBAL_PARAMETERS_RCD;

9488 Table 92 Element Descriptions

9489 Identifier Value Definition


9490 SETUP_STRING_RCD
9491 SETUP_STRING Modem setup string used to configure the modem.

9492 GLOBAL_PARAMETERS_RCD
9493 PSEM_IDENTITY 0..255 Value used by the <identity> field in Layer 2 of C12.21 for
9494 the End Device (meter, etc.) identity. It identifies the End
9495 Device in both the request and response packets.

9496 In requests, this Octet may be set to 00H as a universal


9497 identity. All devices shall respond to this identifier value as a
9498 minimum. This value (00H) shall not be used in a multi-drop
9499 environment.

9500 The individual End Device identity must be in the range 01H
9501 to FEH.

9502 In requests, this Octet may be set to FFH to target the calling
9503 party during an inbound call. Only the End Device that
9504 initiated the inbound call shall process packets with identity
9505 Octet equal to FFH. The value FFH may be used in both single-
9506 drop and multidrop environments.

256
DRAFT ANSI C12.19-2012

9507 The End Device shall use its own identity Octet in the
9508 response for all requests (including 00H and FFH) .

9509 BIT_RATE Bit rate at which the End Device will originate or answer a
9510 call.
9511 0 Denotes an externally defined bit rate.
9512 1..4294967295 End Device call origination bit rate in bits per second.

9513 MODEM_SETUP_STRINGS An array of Modem Setup Strings.

Tables / Decade 9: Telephone Control Tables 257


Table 92 Telephone Global Parameters Table
DRAFT ANSI C12.19-2012

9514 9.10.4 Table 93 Telephone Call Originate Parameters Table

9515 Table 93 Data Description

9516 ORIGINATE_PARAMETERS_TBL (Table 93) defines originate configuration parameters. Originate refers to the
9517 End Device placing calls to a utility host.

9518 Global Default Table Property Overrides: Role=“CONTROL”

9519 Table 93 Type Definitions

9520 TYPE DAYS_BFLD = BIT FIELD OF UINT8


9521 SUNDAY : BOOL(0);
9522 MONDAY : BOOL(1);
9523 TUESDAY : BOOL(2);
9524 WEDNESDAY : BOOL(3);
9525 THURSDAY : BOOL(4);
9526 FRIDAY : BOOL(5);
9527 SATURDAY : BOOL(6);
9528 FILLER : FILL(7..7);
9529 END;

9530 TYPE WINDOW_RCD = PACKED RECORD


9531 BEGIN_WINDOW_TIME : STIME;
9532 WINDOW_DURATION : STIME;
9533 WINDOW_DAYS : DAYS_BFLD;
9534 END;

9535 TYPE PHONE_NUMBER_RCD = PACKED RECORD


9536 PHONE_NUMBER : STRING(ACT_TELEPHONE_TBL. PHONE_NUMBER_LENGTH);
9537 END;
9538
9539 TYPE PHONE_NUMBERS_RCD = PACKED RECORD
9540 PREFIX : STRING(ACT_TELEPHONE_TBL. PREFIX_LENGTH);
9541 PHONE_NUMBERS :
9542 ARRAY[ACT_TELEPHONE_TBL. NBR_ORIGINATE_NUMBERS] OF
9543 PHONE_NUMBER_RCD;
9544 END;

9545 TYPE ORIGINATE_PARAMETERS_RCD = PACKED RECORD


9546 IF ACT_TELEPHONE_TBL.BIT_RATE == 2 THEN
9547 ORIGINATE_BIT_RATE : UINT32;
9548 END;
9549 DIAL_DELAY : UINT8;
9550 ORIGINATE_PHONE_NUMBERS : PHONE_NUMBERS_RCD;
9551 WINDOWS :
9552 ARRAY[ACT_TELEPHONE_TBL. NBR_ORIGINATE_WINDOWS] OF
9553 WINDOW_RCD;
9554 IF ACT_TELEPHONE_TBL.TELEPHONE_FLAGS.EXTENDED_STATUS THEN
9555 ANSWER_TIMEOUT : UINT8;
9556 RETRY_INTERVAL : UINT16;
9557 MAX_RETRIES : UINT8;
9558 END;
9559 END;

258
DRAFT ANSI C12.19-2012

9560 TABLE 93 ORIGINATE_PARAMETERS_TBL = ORIGINATE_PARAMETERS_RCD;

9561 Table 93 Element Descriptions

9562 Identifier Value Definition


9563 DAYS_BFLD
9564 SUNDAY FALSE This window does not start each Sunday.
9565 TRUE This window does start each Sunday.

9566 MONDAY FALSE This window does not start each Monday.
9567 TRUE This window does start each Monday.

9568 TUESDAY FALSE This window does not start each Tuesday.
9569 TRUE This window does start each Tuesday.

9570 WEDNESDAY FALSE This window does not start each Wednesday.
9571 TRUE This window does start each Wednesday.

9572 THURSDAY FALSE This window does not start each Thursday.
9573 TRUE This window does start each Thursday.

9574 FRIDAY FALSE This window does not start each Friday.
9575 TRUE This window does start each Friday.

9576 SATURDAY FALSE This window does not start each Saturday.
9577 TRUE This window does start each Saturday.

9578 WINDOW_RCD
9579 BEGIN_WINDOW_TIME The time of day the window starts.

9580 WINDOW_DURATION The duration of the window.

9581 WINDOW_DAYS Defines the days that a window can start. See DAYS_BFLD.

9582 PHONE_NUMBER_RCD
9583 PHONE_NUMBER Phone number to use to place a call.

9584 PHONE_NUMBERS_RCD
9585 PREFIX This number will be inserted at the beginning of every phone
9586 number before beginning dialing.

9587 PHONE_NUMBERS An array of originate phone numbers.

9588 ORIGINATE_PARAMETERS_RCD
9589 ORIGINATE_BIT_RATE Bit rate at which the End Device will originate a call.
9590 0 Denotes an externally defined bit rate.
9591 1..4294967295 End Device call origination bit rate in bits per second.

9592 DIAL_DELAY 0..255 Delay in seconds the End Device will wait before dialing after
9593 going off-hook.

9594 ORIGINATE_PHONE_NUMBERS See PHONE_NUMBER_RCD.

9595 WINDOWS An array of call originate windows.


Tables / Decade 9: Telephone Control Tables 259
Table 93 Telephone Call Originate Parameters Table
DRAFT ANSI C12.19-2012

9596 ANSWER_TIMEOUT 0..255 Delay in seconds the End Device will wait after dialing before
9597 declaring no answer.

9598 RETRY_INTERVAL 0..65535 Delay in seconds the End Device will wait after a failed call
9599 before trying again. May include a random offset.

9600 MAX_RETRIES 0..255 Absolute maximum number of attempts. Same value used for
9601 all ORIGINATE_PHONE_NUMBERS. This value starts at
9602 zero for each unique call-out event.

260
DRAFT ANSI C12.19-2012

9603 9.10.5 Table 94 Telephone Call Originate Schedule Table

9604 Table 94 Data Description

9605 ORIGINATE_SCHEDULE_TBL (Table 94) is used to configure when and why an End Device originates a call.

9606 Global Default Table Property Overrides: Role=“CONTROL”

9607 Table 94 Type Definitions

9608 TYPE CTRL_BFLD = BIT FIELD OF UINT8


9609 PRIMARY_PHONE_NUMBER : UINT(0..2);
9610 FILLER : FILL(3..3);
9611 SECONDARY_PHONE_NUMBER : UINT(4..6);
9612 USE_WINDOWS : BOOL(7);
9613 END;

9614 TYPE RECURRING_DATES_RCD = PACKED RECORD


9615 ORIGINATE_DATE : RDATE;
9616 START_TIME : TIME;
9617 ORIGINATE_CTRL : CTRL_BFLD;
9618 END;

9619 TYPE NON_RECURRING_DATES_RCD = PACKED RECORD


9620 ORIGINATE_DATE : DATE;
9621 START_TIME : TIME;
9622 ORIGINATE_CTRL : CTRL_BFLD;
9623 END;

9624 TYPE EVENTS_RCD = PACKED RECORD


9625 ED_STD_STATUS1 : ED_MODE_STATUS_TBL.ED_STD_STATUS1_BFLD;
9626 ED_STD_STATUS2 : ED_MODE_STATUS_TBL.ED_STD_STATUS2_BFLD;
9627 ED_MFG_STATUS : ED_MODE_STATUS_TBL.ED_MFG_STATUS_RCD;
9628 ORIGINATE_CTRL : CTRL_BFLD;
9629 END;

9630 TYPE WEEKLY_SCHEDULE_RCD = PACKED RECORD


9631 DAYS : ORIGINATE_PARAMETERS_TBL.DAYS_BFLD;
9632 START_TIME : TIME;
9633 ORIGINATE_CTRL : CTRL_BFLD;
9634 END;

9635 TYPE ORIGINATE_SCHEDULE_RCD = PACKED RECORD


9636 IF ACT_TELEPHONE_TBL.S_ANCHOR_DATE_FLAG THEN
9637 S_ANCHOR_DATE : DATE;
9638 END;
9639 RECURRING_DATES :
9640 ARRAY[ACT_TELEPHONE_TBL. NBR_RECURRING_DATES] OF
9641 RECURRING_DATES_RCD;
9642 NON_RECURING_DATES :
9643 ARRAY[ACT_TELEPHONE_TBL. NBR_NON_RECURRING_DATES]
9644 OF NON_RECURRING_DATES_RCD;
9645 EVENTS :
9646 ARRAY[ACT_TELEPHONE_TBL.NBR_EVENTS] OF EVENTS_RCD;
Tables / Decade 9: Telephone Control Tables 261
Table 94 Telephone Call Originate Schedule Table
DRAFT ANSI C12.19-2012

9647 WEEKLY_SCHEDULES :
9648 ARRAY[ACT_TELEPHONE_TBL.NBR_WEEKLY_SCHEDULES] OF
9649 WEEKLY_SCHEDULE_RCD;
9650 END;

9651 TABLE 94 ORIGINATE_SCHEDULE_TBL = ORIGINATE_SCHEDULE_RCD;

9652 Table 94 Element Descriptions

9653 Identifier Value Definition


9654 CTRL_BFLD
9655 PRIMARY_PHONE_NUMBER
9656 0..6 Selection of the primary phone number to use to originate the
9657 call. This value is an index into the PHONE_NUMBERS
9658 array in the ORIGINATE_PARAMETERS_TBL
9659 (Table 93).
9660 7 Indicates that no call should take place.

9661 SECONDARY_PHONE_NUMBER
9662 0..6 Selection of the secondary phone number to use to originate a
9663 call. This value is an index into the PHONE_NUMBERS
9664 array in the ORIGINATE_PARAMETERS_TBL
9665 (Table 93).
9666 7 Indicates that no secondary number is provided.

9667 USE_WINDOWS FALSE An originate time window will not be used to restrict the
9668 period available to place this call. The call will be placed
9669 immediately.
9670 TRUE An Originate time window will be used to restrict the period
9671 available to place this call. Calls originating outside a window
9672 will be delayed until the next open window.

9673 RECURRING_DATES_RCD
9674 ORIGINATE_DATE Recurring date at which call originate procedures should
9675 begin.

9676 START_TIME Time at which call originate procedures should begin.

9677 ORIGINATE_CTRL See CTRL_BFLD.

9678 NON_RECURRING_DATES_RCD
9679 ORIGINATE_DATE Specific date at which a call originate procedure should begin.

9680 START_TIME Time at which a call originate procedure should begin.

9681 ORIGINATE_CTRL See CTRL_BFLD.

9682 EVENTS_RCD
9683 ED_STD_STATUS1 Standard status events that initiate a call originate procedure.
9684 FALSE No call should take place for this status bit.
9685 TRUE A call should take place if an event is detected for this status
9686 bit.

9687 ED_STD_STATUS2 Standard status events that initiate a call originate procedure.
262
DRAFT ANSI C12.19-2012

9688 FALSE No call should take place for this status bit.
9689 TRUE A call should take place if an event is detected for this status
9690 bit.

9691 ED_MFG_STATUS Manufacturer status events that initiate a call originate


9692 procedure.
9693 FALSE No call should take place for this status bit.
9694 TRUE A call should take place if an event is detected for this status
9695 bit.

9696 ORIGINATE_CTRL See CTRL_BFLD.

9697 WEEKLY_SCHEDULE_RCD
9698 DAYS Days of the week in which the call originate procedure should
9699 begin.

9700 START_TIME Time at which the call originate procedure should begin.

9701 ORIGINATE_CTRL See CTRL_BFLD.

9702 ORIGINATE_SCHEDULE_RCD
9703 S_ANCHOR_DATE A separate telephone schedule anchor date used with an
9704 RDATE recurring date using the PERIOD/OFFSET
9705 mechanism. If this table contains an anchor date, it is used
9706 with RDATE. If not present, and an anchor date is provided in
9707 Table 54 (CALENDAR_TBL), then RDATE will use that
9708 anchor date. If neither anchor date is present, then the anchor
9709 date is defined by the manufacturer.

9710 RECURRING_DATES Array of recurring call origination dates.

9711 NON_RECURING_DATES Array of non recurring call origination dates.

9712 EVENTS Array of call origination trigger events.

9713 WEEKLY_SCHEDULES Array of call origination days.

Tables / Decade 9: Telephone Control Tables 263


Table 94 Telephone Call Originate Schedule Table
DRAFT ANSI C12.19-2012

9714 9.10.6 Table 95 Telephone Call Answer Parameters

9715 Table 95 Data Description

9716 ANSWER_PARAMETERS_TBL (Table 95) defines the answer configuration for receiving calls placed by a
9717 utility host.

9718 Global Default Table Property Overrides: Role=“CONTROL”

9719 Table 95 Type Definitions

9720 TYPE CALLER_ID_RCD = PACKED RECORD


9721 CALLER_ID : STRING(ACT_TELEPHONE_TBL.CALLER_ID_LENGTH);
9722 END;

9723 TYPE ANSWER_PARAMETERS_RCD = PACKED RECORD


9724 IF ACT_TELEPHONE_TBL.BIT_RATE == 2 THEN
9725 ANSWER_BIT_RATE : UINT32;
9726 END;
9727 IF ACT_TELEPHONE_TBL.NO_LOCKOUT_PARM == FALSE THEN
9728 LOCKOUT_DELAY : UINT8;
9729 RETRY_ATTEMPTS : UINT8;
9730 RETRY_LOCKOUT_TIME : UINT8;
9731 END;
9732 NBR_RINGS : UINT8;
9733 IF ACT_TELEPHONE_TBL.NBR_ANSWER_WINDOWS > 0 THEN
9734 NBR_RINGS_OUTSIDE : UINT8;
9735 END;
9736 CALLER_IDS :
9737 ARRAY[ACT_TELEPHONE_TBL. NBR_CALLER_IDS] OF
9738 CALLER_ID_RCD;
9739 WINDOWS :
9740 ARRAY[ACT_TELEPHONE_TBL. NBR_ANSWER_WINDOWS] OF
9741 ORIGINATE_PARAMETERS_TBL. WINDOW_RCD;
9742 END;

9743 TABLE 95 ANSWER_PARAMETERS_TBL = ANSWER_PARAMETERS_RCD;

9744 Table 95 Element Descriptions

9745 Identifier Value Definition


9746 CALLER_ID_RCD
9747 CALLER_ID Caller ID string. Incoming calls must have a valid caller ID for
9748 the call to be answered.

9749 ANSWER_PARAMETERS_RCD
9750 ANSWER_BIT_RATE Bit rate at which the End Device will answer a call.
9751 0 Indicates an externally defined bit rate.
9752 1..4294967295 End Device call origination bit rate in bits per second.

9753 LOCKOUT_DELAY 0..255 Number of minutes to lockout call answering after detecting a
9754 voice call.

264
DRAFT ANSI C12.19-2012

9755 RETRY_ATTEMPTS 0..255 Maximum number of consecutive security violations allowed


9756 before lockout.

9757 RETRY_LOCKOUT_TIME
9758 0..255 Minutes to lockout logons after security retry attempts
9759 exceeded.

9760 NBR_RINGS 0..255 The number of rings to wait before answering while inside a
9761 time window. A value of 0 means do not answer.

9762 NBR_RINGS_OUTSIDE 0..255 The number of rings to answer while outside a time window.
9763 A value of 0 means do not answer.

9764 CALLER_IDS An array of caller IDs.

9765 WINDOWS An array of answer time windows.

Tables / Decade 9: Telephone Control Tables 265


Table 95 Telephone Call Answer Parameters
DRAFT ANSI C12.19-2012

9766 9.10.7 Table 96 Originating Telephone Call Purpose

9767 Table 96 Data Description

9768 CALL_PURPOSE_TBL (Table 96) indicates the purpose for the current telephone-call originated by the End
9769 Device.

9770 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

9771 Table 96 Type Definitions

9772 TYPE CALL_PURPOSE_BFLD = BIT FIELD OF UINT16


9773 POWER_OUTAGE : BOOL(0);
9774 POWER_RESTORAL : BOOL(1);
9775 SCHEDULED_CALL : BOOL(2);
9776 STATUS_CALL : BOOL(3);
9777 IMMEDIATE_CALL : BOOL(4);
9778 FILLER : FILL(5..11);
9779 MANUFACTURER_PURPOSES : UINT(12..15);
9780 END;

9781 TYPE CALL_PURPOSE_RCD = PACKED RECORD


9782 CALL_PURPOSE : CALL_PURPOSE_BFLD;
9783 CALL_TRIGGER_STATUS : ED_MODE_STATUS_TBL. ED_MODE_STATUS_RCD;
9784 IF ACT_TELEPHONE_TBL.ID_IN_PURPOSE THEN
9785 IDENT : DEVICE_IDENT_TBL.IDENT_RCD;
9786 END;
9787 END;

9788 TABLE 96 CALL_PURPOSE_TBL = CALL_PURPOSE_RCD;

9789 Table 96 Element Descriptions

9790 Identifier Value Definition


9791 CALL_PURPOSE_BFLD
9792 POWER_OUTAGE This phone call was triggered by the detection of a power
9793 outage.

9794 POWER_RESTORAL This phone call was triggered by the detection of a power
9795 restoration.

9796 SCHEDULED_CALL This phone call is a normal call.

9797 STATUS_CALL This phone call was triggered by a change in the status record.

9798 IMMEDIATE_CALL This phone call was triggered by an immediate call procedure.

9799 MANUFACTURER_PURPOSES
9800 0..15 This field if nonzero indicates that the phone call was
9801 triggered by a manufacturer-defined purpose.

9802 CALL_PURPOSE_RCD
9803 CALL_PURPOSE See CALL_PURPOSE_BFLD.
266
DRAFT ANSI C12.19-2012

9804 CALL_TRIGGER_STATUS If the STATUS_CALL bit is TRUE, then this field indicates
9805 which status bit change(s) caused the call. The field is in the
9806 image of ED_MODE_STATUS_TBL.

9807 IDENT Identity of the call originating End Device per Table 5,
9808 DEVICE_IDENT_TBL. IDENTIFICATION, or Table 6,
9809 UTIL_INFO_TBL. DEVICE_ID, whichever is available.

Tables / Decade 9: Telephone Control Tables 267


Table 96 Originating Telephone Call Purpose
DRAFT ANSI C12.19-2012

9810 9.10.8 Table 97 Last Telephone Call Status

9811 Table 97 Data Description

9812 CALL_STATUS_TBL (Table 97) indicates the status of the most recent call to each defined phone number.

9813 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

9814 Table 97 Type Definitions

9815 TYPE EXTENDED_STATUS_RCD = PACKED RECORD


9816 CALL_PURPOSE : CALL_PURPOSE_TBL. CALL_PURPOSE_BFLD;
9817 CALL_TRIGGER_STATUS : ED_MODE_STATUS_TBL. ED_MODE_STATUS_RCD;
9818 LAST_CALL_TIME : LTIME_DATE;
9819 END;

9820 TYPE CALL_STATUS_RCD = PACKED RECORD


9821 CALL_STATUS_ARRAY :
9822 ARRAY[ACT_TELEPHONE_TBL.
9823 NBR_ORIGINATE_NUMBERS] OF UINT8;
9824 IF ACT_TELEPHONE_TBL.TELEPHONE_FLAGS.EXTENDED_STATUS THEN
9825 EXTENDED_CALL_STATUS :
9826 ARRAY[ACT_TELEPHONE_TBL.
9827 NBR_ORIGINATE_NUMBERS] OF
9828 EXTENDED_STATUS_RCD;
9829 END;
9830 END;

9831 TABLE 97 CALL_STATUS_TBL = CALL_STATUS_RCD;

9832 Table 97 Element Descriptions

9833 Identifier Value Definition


9834 EXTENDED_STATUS_RCD
9835 CALL_PURPOSE This Element indicates the reason the most recent call was
9836 attempted. See CALL_PURPOSE_BFLD in Table 96 for
9837 definition.

9838 CALL_TRIGGER_STATUS From Table 96. This Element indicates the reason the most
9839 recent call was attempted. The field is in the image of
9840 ED_MODE_STATUS_RCD defined in Table 3.

9841 LAST_CALL_TIME This field indicates the time and date the most recent call
9842 attempt was made.

9843 CALL_STATUS_RCD Status or disposition of the most recent call to a phone


9844 number.

9845 EXTENDED_CALL_STATUS Status or disposition of the most recent call to each telephone
9846 number.
9847 0 No phone call made.
9848 1 Phone call in progress.
9849 2 Dialing.
268
DRAFT ANSI C12.19-2012

9850 3 Waiting for a connection.


9851 4 Communicating.
9852 5 Completed normally.
9853 6 Not completed, Reason unknown.
9854 7 Not completed, Line busy.
9855 8 Not completed, No dial tone.
9856 9 Not completed, Line cut.
9857 10 Not completed, No connection.
9858 11 Not completed, No modem response.
9859 12..255 Reserved.

9860 EXTENDED_STATUS_ARRAY Extended Status of the most recent call to each telephone
9861 phone number.

Tables / Decade 9: Telephone Control Tables 269


Table 97 Last Telephone Call Status
DRAFT ANSI C12.19-2012

9862 9.10.9 Table 98 Telephone Call Originate Status

9863 Table 98 Data Description

9864 ORIGINATE_STATUS_TBL (Table 98) indicates the status of the defined Originate Schedule.

9865 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

9866 Table 98 Type Definitions

9867 TYPE ORIGINATE_STATUS_RCD = PACKED RECORD


9868 IMMEDIATE_STATUS :
9869 SET((ACT_TELEPHONE_TBL. NBR_ORIGINATE_NUMBERS +
9870 7)/ 8);
9871 RECURRING_STATUS :
9872 SET((ACT_TELEPHONE_TBL. NBR_RECURRING_DATES + 7)/
9873 8);
9874 NON_RECURRING_STATUS :
9875 SET((ACT_TELEPHONE_TBL.NBR_NON_RECURRING_DATES + 7)/ 8);
9876 WEEKLY_STATUS : SET((ACT_TELEPHONE_TBL.NBR_WEEKLY_SCHEDULES +
9877 7)/ 8);
9878 CALL_TRIGGER_STATUS :
9879 ARRAY[ACT_TELEPHONE_TBL. NBR_EVENTS] OF
9880 ED_MODE_STATUS_TBL. ED_MODE_STATUS_RCD;
9881 WINDOW_STATUS :
9882 SET((ACT_TELEPHONE_TBL.NBR_ORIGINATE_WINDOWS +
9883 7)/ 8);
9884 NEXT_RECURRING_DATE :
9885 ARRAY[ACT_TELEPHONE_TBL. NBR_RECURRING_DATES] OF
9886 LTIME_DATE;
9887 NEXT_WEEKLY_SCHEDULE :
9888 ARRAY[ACT_TELEPHONE_TBL. NBR_WEEKLY_SCHEDULES] OF
9889 LTIME_DATE;
9890 END;

9891 TABLE 98 ORIGINATE_STATUS_TBL = ORIGINATE_STATUS_RCD;

9892 Table 98 Element Descriptions

9893 Identifier Value Definition


9894 ORIGINATE_STATUS_RCD
9895 IMMEDIATE_STATUS This is a SET of bits. Each bit is set when an immediate call is
9896 requested and is cleared when the call is completed.

9897 RECURRING_STATUS This is a SET of bits. Each bit is set when the recurring date
9898 occurs and is cleared when the call is completed.

9899 NON_RECURRING_STATUS This is a SET of bits. Each bit is set when the nonrecurring
9900 date occurs and is cleared when the call is completed.

9901 WEEKLY_STATUS This is a SET of bits. Each bit is set when the Weekly
9902 Schedule occurs and is cleared when the call is completed.

270
DRAFT ANSI C12.19-2012

9903 CALL_TRIGGER_STATUS A bit that is set to TRUE indicates that the corresponding
9904 status bit change has occurred and is configured as a call home
9905 reason. The bit is cleared when the call is complete.

9906 WINDOW_STATUS This is a SET of bits. Each bit is set when the corresponding
9907 window is open, and it is cleared when it is closed.

9908 NEXT_RECURRING_DATE Array of actual dates for the next occurrence of each recurring
9909 date.

9910 NEXT_WEEKLY_SCHEDULE Array of actual dates for the next occurrence of each weekly
9911 schedule.

Tables / Decade 9: Telephone Control Tables 271


Table 98 Telephone Call Originate Status
DRAFT ANSI C12.19-2012

9912 9.11 Decade 10: Unassigned

9913 Reserved.

272
DRAFT ANSI C12.19-2012

9914 9.12 Decade 11: Load Control and Pricing Tables

9915 Decade 11 Name

9916 LOAD_CONTROL_DEC

9917 Decade 11 Data Description

9918 This Decade contains Tables associated with load control operation. This Decade supports the management of up to
9919 255 control points. The state of control points can be changed based on one of the following methods:

9920 Direct load control: a command is sent directly to the End Device across a communication link to modify
9921 the state of one or multiple control points.
9922 Schedule: the End Device is programmed to modify the state of one or multiple control points at specific
9923 dates, recurring dates, period of the week, or event detection.
9924 Condition: the End Device is programmed to modify the state of one or multiple control points based on
9925 the magnitudes of metered quantities, price level (active tier), time of the day, period of the year, or any
9926 other condition that can be construct by a Single Line Math expression.
9927 Prepayment: the End Device is programmed to modify the state of one or multiple control points based on
9928 a remaining credit.

Tables / Decade 11: Load Control and Pricing Tables 273


DRAFT ANSI C12.19-2012

9929 9.12.1 Table 110 Load Control Dimension Limits Table

9930 Table 110 Data Description

9931 DIM_LOAD_CONTROL_TBL (Table 110) specifies the maximum dimensional limits for this Decade.

9932 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

9933 Table 110 Type Definitions

9934 TYPE DIM_LOAD_CONTROL_BFLD = BIT FIELD OF UINT16


9935 DURATION_SUPPORTED_FLAG : BOOL(0);
9936 RANDOMIZATION_SUPPORTED_FLAG : BOOL(1);
9937 MANUAL_OVERRIDE_SUPPORTED_FLAG : BOOL(2);
9938 MANUAL_TURN_ON_SUPPORTED_FLAG : BOOL(3);
9939 STATE_VERIFICATION_SUPPORTED_FLAG : BOOL(4);
9940 ANCHOR_DATE_SUPPORTED_FLAG : BOOL(5);
9941 SOURCE_CONDITION_SUPPORTED_FLAG : BOOL(6);
9942 TIER_CONDITION_SUPPORTED_FLAG : BOOL(7);
9943 TIME_CONDITION_SUPPORTED_FLAG : BOOL(8);
9944 FILLER : FILL(9..15);
9945 END;

9946 TYPE DIM_LOAD_CONTROL_RCD = PACKED RECORD


9947 DIM_LOAD_CONTROL : DIM_LOAD_CONTROL_BFLD;
9948 NBR_OF_CONTROL_POINTS : UINT8;
9949 NBR_RECURRING_DATES : UINT8;
9950 NBR_NON_RECURRING_DATES : UINT8;
9951 NBR_EVENTS : UINT8;
9952 NBR_OF_WEEKLY_SCHEDULES : UINT8;
9953 NBR_OF_CONDITIONS : UINT8;
9954 NBR_OF_CONSUMPTIONS : UINT8;
9955 SLM_CONDITION_LEN : UINT16;
9956 SLM_EQUATION_LEN : UINT16;
9957 END;

9958 TABLE 110 DIM_LOAD_CONTROL_TBL = DIM_LOAD_CONTROL_RCD;

9959 Table 110 Element Descriptions

9960 Identifier Value Definition


9961 DIM_LOAD_CONTROL_BFLD
9962 DURATION_SUPPORTED_FLAG
9963 FALSE End Device is not capable of processing a load control
9964 directive with a duration.
9965 TRUE End Device is capable of processing a load control directive
9966 with a duration.

9967 RANDOMIZATION_SUPPORTED_FLAG
9968 FALSE End Device is not capable of automatically randomizing a load
9969 control directive.
9970 TRUE End Device is capable of automatically randomizing a load
9971 control directive.

274
DRAFT ANSI C12.19-2012

9972 MANUAL_OVERRIDE_SUPPORTED_FLAG
9973 FALSE End Device is not capable of supporting manual override of
9974 load control directives.
9975 TRUE End Device is capable of supporting manual override of load
9976 control directives.

9977 MANUAL_TURN_ON_SUPPORTED_FLAG
9978 FALSE End Device is not capable of supporting manual turn-on of its
9979 control points after each turn-on directive.
9980 TRUE End Device is capable of supporting manual turn-on of its
9981 control points after each turn-on directive.

9982 STATE_VERIFICATION_SUPPORTED_FLAG
9983 FALSE End Device is not capable of measuring the state of its control
9984 points.
9985 TRUE End Device is capable of measuring the state of its control
9986 points.

9987 ANCHOR_DATE_SUPPORTED_FLAG
9988 FALSE End Device is not capable of accepting a separate load control
9989 schedule anchor date for the Period/Delta RDATE type
9990 (recurring date).
9991 TRUE End Device is capable of accepting a separate load control
9992 schedule anchor date for the Period/Delta RDATE type
9993 (recurring date).

9994 SOURCE_CONDITION_SUPPORTED_FLAG
9995 FALSE Load Control Conditions Table (Table 115) cannot include a
9996 condition based on a source limit.
9997 TRUE Load Control Conditions Table (Table 115) can include a
9998 condition based on a source limit.

9999 TIER_CONDITION_SUPPORTED_FLAG
10000 FALSE Load Control Conditions Table (Table 115) cannot include a
10001 condition based on the active tier.
10002 TRUE Load Control Conditions Table (Table 115) can include a
10003 condition based on the active tier.

10004 TIME_CONDITION_SUPPORTED_FLAG
10005 FALSE Load Control Conditions Table (Table 115) cannot include a
10006 condition based on the actual time of day and period of the
10007 year.
10008 TRUE Load Control Conditions Table (Table 115) can include a
10009 condition based on the actual time of day and period of the
10010 year.

10011 DIM_LOAD_CONTROL_RCD
10012 DIM_LOAD_CONTROL See DIM_LOAD_CONTROL_BFLD.

10013 NBR_OF_CONTROL_POINTS
10014 0..255 Maximum number of control points supported.

10015
10016

Tables / Decade 11: Load Control and Pricing Tables 275


Table 110 Load Control Dimension Limits Table
DRAFT ANSI C12.19-2012

10017 NBR_RECURRING_DATES
10018 0..255 Maximum number of recurring dates supported in the Load
10019 Control Schedule Table (Table 114).

10020 NBR_NON_RECURRING_DATES
10021 0..255 Maximum number of nonrecurring dates supported in the
10022 Load Control Schedule Table (Table 114).

10023 NBR_EVENTS 0..255 Maximum number of event schedules supported in the Load
10024 Control Schedule Table (Table 114).

10025 NBR_OF_WEEKLY_SCHEDULES
10026 0..255 Maximum number of weekly schedules supported in the Load
10027 Control Schedule Table (Table 114).

10028 NBR_OF_CONDITIONS 0..255 Maximum number of conditions supported in the Load


10029 Control Conditions Table (Table 115).

10030 NBR_OF_CONSUMPTIONS
10031 0..255 Maximum number of consumption histories supported in the
10032 Prepayment Status Table (Table 116).

10033 SLM_CONDITION_LEN 0..65535 Maximum length of Single Line Math (SLM) expressions
10034 used to set load control conditions.

10035 SLM_EQUATION_LEN 0..65535 Maximum length of the Single Line Math (SLM) expressions
10036 used to set a billing equation.

276
DRAFT ANSI C12.19-2012

10037 9.12.2 Table 111 Actual Load Control Limiting Table

10038 Table 111 Data Description

10039 ACT_LOAD_CONTROL_TBL (Table 111) specifies the actual dimensional limits for this Decade.

10040 Global Default Table Property Overrides: Role=“ACTUAL”

10041 Table 111 Type Definitions

10042 TABLE 111 ACT_LOAD_CONTROL_TBL = DIM_LOAD_CONTROL_RCD;

10043 Table 111 Element Descriptions

10044 Identifier Value Definition


10045 DIM_LOAD_CONTROL_BFLD Redefines:
10046 DIM_LOAD_CONTROL_TBL.DIM_LOAD_CONTROL_BFLD.

10047 DURATION_SUPPORTED_FLAG
10048 FALSE Load control directive does not include duration.
10049 TRUE Load control directive includes duration.

10050 RANDOMIZATION_SUPPORTED_FLAG
10051 FALSE End Device does not automatically randomize load control directives.
10052 TRUE End Device automatically randomizes load control directives.

10053 MANUAL_OVERRIDE_SUPPORTED_FLAG
10054 FALSE End Device is not configured for manual override of load control
10055 directives.
10056 TRUE End Device is configured for manual override of load control
10057 directives.

10058 MANUAL_TURN_ON_SUPPORTED_FLAG
10059 FALSE End Device does not support manual turn-on of its control points after
10060 each turn-on directive.
10061 TRUE End Device supports manual turn-on of its control points after each
10062 turn-on directive.

10063 STATE_VERIFICATION_SUPPORTED_FLAG
10064 FALSE End Device does not provide the measurement of the state of its control
10065 points in the Load Control Status Table (Table 112).
10066 TRUE End Device provides the measurement of the state of its control points
10067 in the Load Control Status Table (Table 112).

10068 ANCHOR_DATE_SUPPORTED_FLAG
10069 FALSE End Device is not accepting a separate load control schedule anchor
10070 date for the Period/Delta RDATE type (recurring date).
10071 TRUE End Device is accepting a separate load control schedule anchor date
10072 for the Period/Delta RDATE type (recurring date).

10073 SOURCE_CONDITION_SUPPORTED_FLAG
10074 FALSE Load Control Conditions Table (Table 115) does not include a
10075 condition based on a source limit.
Tables / Decade 11: Load Control and Pricing Tables 277
Table 111 Actual Load Control Limiting Table
DRAFT ANSI C12.19-2012

10076 TRUE Load Control Conditions Table (Table 115) includes a condition based
10077 on a source limit.

10078 TIER_CONDITION_SUPPORTED_FLAG
10079 FALSE Load Control Conditions Table (Table 115) does not include a
10080 condition based on the active Tier.
10081 TRUE Load Control Conditions Table (Table 115) includes a condition based
10082 on the active Tier.

10083 TIME_CONDITION_SUPPORTED_FLAG
10084 FALSE Load Control Conditions Table (Table 115) does not include a
10085 condition based on the actual time of day and period of the year.
10086 TRUE Load Control Conditions Table (Table 115) includes a condition based
10087 on the actual time of day and period of the year.

10088 DIM_LOAD_CONTROL_RCD Redefines: DIM_LOAD_CONTROL_TBL.


10089 DIM_LOAD_CONTROL_RCD.

10090 DIM_LOAD_CONTROL See DIM_LOAD_CONTROL_BFLD.

10091 NBR_OF_CONTROL_POINTS
10092 0..255 Actual number of control points.

10093 NBR_RECURRING_DATES
10094 0..255 Actual number of recurring dates in the Load Control Schedule Table
10095 (Table 114).

10096 NBR_NON_RECURRING_DATES
10097 0..255 Actual number of non-recurring dates supported in the Load Control
10098 Schedule Table (Table 114).

10099 NBR_EVENTS 0..255 Actual number of event schedules supported in the Load Control
10100 Schedule Table (Table 114).

10101 NBR_OF_WEEKLY_SCHEDULES
10102 0..255 Actual number of weekly schedules supported in the Load Control
10103 Schedule Table (Table 114).

10104 NBR_OF_CONDITIONS
10105 0..255 Actual number of conditions supported in the Load Control Conditions
10106 Table (Table 115).

10107 NBR_OF_CONSUMPTIONS
10108 0..255 Actual number of consumption history records supported in the
10109 Prepayment Status Table (Table 116).

10110 SLM_CONDITION_LEN
10111 0..65535 Actual length of Single Line Math (SLM) expressions used to set load
10112 control conditions.

10113 SLM_EQUATION_LEN
10114 0..65535 Actual length of the Single Line Math (SLM) expressions used to set a
10115 billing equation.

278
DRAFT ANSI C12.19-2012

10116 9.12.3 Table 112 Load Control Status

10117 Table 112 Data Description

10118 LC_STATUS_TBL (Table 112) provides the actual status of each control point supported by the End Device.

10119 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

10120 Table 112 Type Definitions

10121 TYPE LC_STATUS_ENTRY_BFLD = BIT FIELD OF UINT8


10122 LEVEL_SUPPORTED_FLAG : BOOL(0);
10123 IF ACT_LOAD_CONTROL_TBL.MANUAL_OVERRIDE_SUPPORTED_FLAG THEN
10124 MANUALLY_OVERRIDDEN_FLAG : BOOL(1);
10125 END;
10126 IF ACT_LOAD_CONTROL_TBL.MANUAL_TURN_ON_SUPPORTED_FLAG THEN
10127 WAITING_TO_BE_TURNED_ON_FLAG : BOOL(2);
10128 END;
10129 FILLER : FILL(3..7);
10130 END;

10131 TYPE LC_STATUS_ENTRY_RCD = PACKED RECORD


10132 NAME : STRING(20);
10133 REQUESTED_LEVEL : UINT8;
10134 OUTPUT_LEVEL : UINT8;
10135 IF ACT_LOAD_CONTROL_TBL.STATE_VERIFICATION_SUPPORTED_FLAG THEN
10136 SENSED_LEVEL : UINT8;
10137 END;
10138 STATUS : LC_STATUS_ENTRY_BFLD;
10139 IF ACT_LOAD_CONTROL_TBL.DURATION_SUPPORTED_FLAG THEN
10140 DURATION_COUNT_DOWN : TIME;
10141 END;
10142 IF ACT_LOAD_CONTROL_TBL.RANDOMIZATION_SUPPORTED_FLAG THEN
10143 RANDOMIZATION_COUNT_DOWN : TIME;
10144 END;
10145 END;

10146 TYPE LC_STATUS_RCD = PACKED RECORD


10147 STATUS_ENTRIES :
10148 ARRAY[ACT_LOAD_CONTROL_TBL. NBR_OF_CONTROL_POINTS] OF
10149 LC_STATUS_ENTRY_RCD;
10150 END;

10151 TABLE 112 LC_STATUS_TBL = LC_STATUS_RCD;

10152 Table 112 Element Descriptions

10153 Identifier Value Definition


10154 LC_STATUS_ENTRY_BFLD
10155 LEVEL_SUPPORTED_FLAG
10156 FALSE The load is being controlled using a binary level only (Level <
10157 50% means disconnect-the-load (for control) or load-is-

Tables / Decade 11: Load Control and Pricing Tables 279


Table 112 Load Control Status
DRAFT ANSI C12.19-2012

10158 disconnected (for sense) and Level ≥ 50% means connect-the-


10159 load (for control) or load-is-connected (for sense).
10160 TRUE The load is being controlled using a percentage value (0% to
10161 100%). A control value or sensed value that is below the
10162 stated percentage implies that the load should be disconnected
10163 (or the load is disconnected). A control value or sensed value
10164 that is greater than or equal to the stated percentage implies
10165 that the load is connected.

10166 MANUALLY_OVERRIDDEN_FLAG
10167 FALSE This control point is not actually manually overridden.
10168 TRUE This control point is actually manually overridden.

10169 WAITING_TO_BE_TURNED_ON_FLAG
10170 FALSE This control point does not wait for a manual intervention
10171 before changing state.
10172 TRUE This control point waits for a manual intervention before
10173 changing state.

10174 LC_STATUS_ENTRY_RCD
10175 NAME Descriptive name for this control point.

10176 REQUESTED_LEVEL 0..100 The desired level of this control point according to the last
10177 load control directive.

10178 OUTPUT_LEVEL 0..100 The asserted level at the input of the load control device. The
10179 difference between OUTPUT_LEVEL and
10180 REQUESTED_LEVEL can be caused by randomization,
10181 manual override, manual turn-on, or an output control failure.

10182 SENSED_LEVEL 0..100 Actual level sensed at the output of this control device. A
10183 significant difference between this level and the
10184 OUTPUT_LEVEL indicates a physical problem with either
10185 the control point or its sensor.

10186 STATUS See LC_STATUS_ENTRY_BFLD.

10187 DURATION_COUNT_DOWN Actual countdown of the duration value received in the last
10188 control directive. When this value reaches zero (0), the control
10189 point returns to its previous state (state before receiving this
10190 load control directive).

10191 RANDOMIZATION_COUNT_DOWN Actual countdown of the randomization period. This value is


10192 set to a random period when a load control directive is
10193 triggered. When this value reaches zero (0), the load control
10194 directive is applied, and if the duration period is supported, the
10195 DURATION_COUNT_DOWN is set to the value received
10196 by this control directive.

10197 LC_STATUS_RCD
10198 STATUS_ENTRIES Array that contains the actual status of each control point.

280
DRAFT ANSI C12.19-2012

10199 9.12.4 Table 113 Load Control Configuration

10200 Table 113 Data Description

10201 LC_CONFIGURATION_TBL (Table 113) allows the configuration of the basic behavior of each control point
10202 available.

10203 Global Default Table Property Overrides: Role=“CONTROL”

10204 Table 113 Type Definitions

10205 TYPE LC_CONFIGURATION_ENTRY_BFLD = BIT FIELD OF UINT8


10206 IF ACT_LOAD_CONTROL_TBL.MANUAL_OVERRIDE_SUPPORTED_FLAG THEN
10207 MANUAL_OVERRIDE_ENABLE_FLAG : BOOL(0);
10208 END;
10209 IF ACT_LOAD_CONTROL_TBL.MANUAL_TURN_ON_SUPPORTED_FLAG THEN
10210 MANUAL_TURN_ON_ENABLE_FLAG : BOOL(1);
10211 END;
10212 IF GEN_CONFIG_TBL.STD_PROC_USED[DIRECT_LOAD_CONTROL_PROC] THEN
10213 DIRECT_CONTROL_ENABLE_FLAG : BOOL(2);
10214 END;
10215 FILLER : FILL(3..7);
10216 END;

10217 TYPE LC_CONFIGURATION_ENTRY_RCD = PACKED RECORD


10218 NAME : STRING(20);
10219 MINIMUM_ON_TIME : TIME;
10220 MINIMUM_OFF_TIME : TIME;
10221 CONFIGURATION : LC_CONFIGURATION_ENTRY_BFLD;
10222 END;

10223 TYPE LC_CONFIGURATION_RCD = PACKED RECORD


10224 CONFIGURATION :
10225 ARRAY[ACT_LOAD_CONTROL_TBL. NBR_OF_CONTROL_POINTS] OF
10226 LC_CONFIGURATION_ENTRY_RCD;
10227 END;

10228 TABLE 113 LC_CONFIGURATION_TBL = LC_CONFIGURATION_RCD;

10229 Table 113 Element Descriptions

10230 Identifier Value Definition


10231 LC_CONFIGURATION_ENTRY_BFLD
10232 MANUAL_OVERRIDE_ENABLE_FLAG
10233 FALSE Control point directive cannot be manually overridden.
10234 TRUE Control point directive can be manually overridden.

10235 MANUAL_TURN_ON_ENABLE_FLAG
10236 FALSE Turn-on directive is applied without any manual intervention.
10237 TRUE Turn-on directive is applied after a manual intervention.

10238

Tables / Decade 11: Load Control and Pricing Tables 281


Table 113 Load Control Configuration
DRAFT ANSI C12.19-2012

10239 DIRECT_CONTROL_ENABLE_FLAG
10240 FALSE Control point cannot be directly controlled by the “Direct load
10241 control procedure” (Procedure 21).
10242 TRUE Control point can be directly controlled by the “Direct load
10243 control procedure” (Procedure 21).

10244 LC_CONFIGURATION_ENTRY_RCD
10245 NAME Descriptive name for this control point.

10246 MINIMUM_ON_TIME Minimum period this control point shall be turned on before
10247 turning it off again.

10248 MINIMUM_OFF_TIME Minimum period this control point shall be turned off before
10249 turning it on again.

10250 CONFIGURATION See LC_CONFIGURATION_ENTRY_BFLD.

10251 LC_CONFIGURATION_RCD
10252 CONFIGURATION Array that contains the configuration of each control point.

282
DRAFT ANSI C12.19-2012

10253 9.12.5 Table 114 Load Control Schedule

10254 Table 114 Data Description

10255 LC_SCHEDULE_TBL (Table 114) implements the schedule-based method of load control. This method consists
10256 of programming the days of the week and time of day a load control directive is executed.

10257 Global Default Table Property Overrides: Role=“CONTROL”

10258 Table 114 Type Definitions

10259 TYPE LC_RECURRING_DATES_RCD = PACKED RECORD


10260 LC_DATE : RDATE;
10261 LC_TIME : TIME;
10262 DIRECTIVE : DIRECT_LOAD_CONTROL_PROC. PARM_DATA_RCD;
10263 END;

10264 TYPE LC_NON_RECURRING_DATES_RCD = PACKED RECORD


10265 LC_DATE : DATE;
10266 LC_TIME : TIME;
10267 DIRECTIVE : DIRECT_LOAD_CONTROL_PROC. PARM_DATA_RCD;
10268 END;

10269 TYPE LC_EVENTS_RCD = PACKED RECORD


10270 ED_STD_STATUS1 : ED_MODE_STATUS_TBL.ED_STD_STATUS1_BFLD;
10271 ED_STD_STATUS2 : ED_MODE_STATUS_TBL.ED_STD_STATUS2_BFLD;
10272 ED_MFG_STATUS : ED_MODE_STATUS_TBL.ED_MFG_STATUS_RCD;
10273 DIRECTIVE : DIRECT_LOAD_CONTROL_PROC.PARM_DATA_RCD;
10274 END;

10275 TYPE DAYS_BFLD = BIT FIELD OF UINT8


10276 SUNDAY_FLAG : BOOL(0);
10277 MONDAY_FLAG : BOOL(1);
10278 TUESDAY_FLAG : BOOL(2);
10279 WEDNESDAY_FLAG : BOOL(3);
10280 THURSDAY_FLAG : BOOL(4);
10281 FRIDAY_FLAG : BOOL(5);
10282 SATURDAY_FLAG : BOOL(6);
10283 FILLER : FILL(7..7);
10284 END;

10285 TYPE LC_SCHEDULE_RCD = PACKED RECORD


10286 DAYS : DAYS_BFLD;
10287 LC_TIME : TIME;
10288 DIRECTIVE : DIRECT_LOAD_CONTROL_PROC. PARM_DATA_RCD;
10289 END;

10290 TYPE LC_SCHEDULES_RCD = PACKED RECORD


10291 IF ACT_LOAD_CONTROL_TBL.ANCHOR_DATE_SUPPORTED_FLAG THEN
10292 ANCHOR_DATE : DATE;
10293 END;
10294 RDATES :
10295 ARRAY[ACT_LOAD_CONTROL_TBL.
10296 NBR_RECURRING_DATES] OF LC_RECURRING_DATES_RCD;
Tables / Decade 11: Load Control and Pricing Tables 283
Table 114 Load Control Schedule
DRAFT ANSI C12.19-2012

10297 DATES :
10298 ARRAY[ACT_LOAD_CONTROL_TBL.
10299 NBR_NON_RECURRING_DATES] OF
10300 LC_NON_RECURRING_DATES_RCD;
10301 EVENTS :
10302 ARRAY[ACT_LOAD_CONTROL_TBL. NBR_EVENTS] OF
10303 LC_EVENTS_RCD;
10304 WEEKLY_SCHEDULES :
10305 ARRAY[ACT_LOAD_CONTROL_TBL.
10306 NBR_OF_WEEKLY_SCHEDULES] OF LC_SCHEDULE_RCD;
10307 END;

10308 TABLE 114 LC_SCHEDULE_TBL = LC_SCHEDULES_RCD;

10309 Table 114 Element Descriptions

10310 Identifier Value Definition


10311 LC_RECURRING_DATES_RCD
10312 LC_DATE Recurring date at which this load control directive is triggered.

10313 LC_TIME Time at which this load control directive is triggered.

10314 DIRECTIVE Load control directive as defined in “Direct load control


10315 procedure” (Procedure 21).

10316 LC_NON_RECURRING_DATES_RCD
10317 LC_DATE Date at which this load control directive is triggered.

10318 LC_TIME Time at which this load control directive is triggered.

10319 DIRECTIVE Load control directive as defined in “Direct load control


10320 procedure” (Procedure 21).

10321 LC_EVENTS_RCD
10322 ED_STD_STATUS1 Standard status events on which a state change (from FALSE
10323 to TRUE) triggers a load control directive.
10324

10325 ED_STD_STATUS2 Standard status events on which a state change (from FALSE
10326 to TRUE) triggers a load control directive.

10327 ED_MFG_STATUS Manufacturer status events on which a state change (from


10328 FALSE to TRUE) triggers a load control directive.

10329 DIRECTIVE Load control directive as defined in “Direct load control


10330 procedure” (Procedure 21).

10331 DAYS_BFLD
10332 SUNDAY_FLAG FALSE Not triggered on Sunday.
10333 TRUE Triggered on Sunday.

10334 MONDAY_FLAG FALSE Not triggered on Monday.


10335 TRUE Triggered on Monday.

284
DRAFT ANSI C12.19-2012

10336 TUESDAY_FLAG FALSE Not triggered on Tuesday.


10337 TRUE Triggered on Tuesday.

10338 WEDNESDAY_FLAG FALSE Not triggered on Wednesday.


10339 TRUE Triggered on Wednesday.

10340 THURSDAY_FLAG FALSE Not triggered on Thursday.


10341 TRUE Triggered on Thursday.

10342 FRIDAY_FLAG FALSE Not triggered on Friday.


10343 TRUE Triggered on Friday.

10344 SATURDAY_FLAG FALSE Not triggered on Saturday.


10345 TRUE Triggered on Saturday.

10346 LC_SCHEDULE_RCD
10347 DAYS Days on which this load control directive is triggered.

10348 LC_TIME Time at which this load control directive is triggered.

10349 DIRECTIVE Load control directive as defined in “Direct load control


10350 procedure” (Procedure 21).

10351 LC_SCHEDULES_RCD
10352 ANCHOR_DATE A separate load control schedule anchor date used with an
10353 RDATE recurring date using the PERIOD/OFFSET
10354 mechanism. If this table contains an anchor date, it is used
10355 with RDATE. If not present, and an anchor date is provided in
10356 Table 54 (CALENDAR_TBL), then RDATE will use that
10357 anchor date. If neither anchor date is present, then the anchor
10358 date is defined by the manufacturer.

10359 RDATES Array of recurring dates that trigger load control directives.

10360 DATES Array of nonrecurring dates that trigger load control


10361 directives.

10362 EVENTS Array of events that trigger load control directives.

10363 WEEKLY_SCHEDULES Array of weekly schedules that trigger load control directives.

Tables / Decade 11: Load Control and Pricing Tables 285


Table 114 Load Control Schedule
DRAFT ANSI C12.19-2012

10364 9.12.6 Table 115 Load Control Conditions

10365 Table 115 Data Description

10366 LC_CONDITIONS_TBL (Table 115) implements the condition-based method of load control. This method
10367 consists of programming conditions directly in the End Device that trigger control point directives. Conditions can
10368 be based on source limit, the active Tier, the time of the day, the period of the year, or any other condition that can
10369 be construct using a Single Line Math expression.

10370 Global Default Table Property Overrides: Role=“CONTROL”

10371 Table 115 Type Definitions

10372 { Enumerator OPERATOR_ENUM }

10373 { Enumerator CONDITION_MONTH_ENUM }

10374 TYPE SOURCE_CONDITION_RCD = PACKED RECORD


10375 SOURCE : STD. SOURCE_SELECT_RCD;
10376 OPERATOR : UINT8;
10377 VALUE : NI_FMAT1;
10378 END;

10379 TYPE TIER_CONDITION_RCD = PACKED RECORD


10380 OPERATOR : UINT8;
10381 VALUE : UINT8;
10382 END;

10383 TYPE DATE_CONDITION_BFLD = BIT FIELD OF UINT32


10384 START_MONTH : UINT(0..3);
10385 START_DATE : UINT(4..8);
10386 END_MONTH : UINT(9..12);
10387 END_DATE : UINT(13..17);
10388 FILLER : FILL(18..31);
10389 END;

10390 TYPE TIME_CONDITION_RCD = PACKED RECORD


10391 ALLOWED_DAYS : LC_SCHEDULE_TBL.DAYS_BFLD;
10392 START_TIME : STIME;
10393 END_TIME : STIME;
10394 END;

10395 TYPE LC_CONDITION_RCD = PACKED RECORD


10396 IF ACT_LOAD_CONTROL_TBL.SOURCE_CONDITION_SUPPORTED_FLAG THEN
10397 SOURCE_CONDITION : SOURCE_CONDITION_RCD;
10398 END;
10399 IF ACT_LOAD_CONTROL_TBL.TIER_CONDITION_SUPPORTED_FLAG THEN
10400 TIER_CONDITION : TIER_CONDITION_RCD;
10401 END;
10402 IF ACT_LOAD_CONTROL_TBL.TIME_CONDITION_SUPPORTED_FLAG THEN
10403 DATE_CONDITION : DATE_CONDITION_BFLD;
10404 TIME_CONDITION : TIME_CONDITION_RCD;
10405 END;
10406 SLM_CONDITION : STRING(ACT_LOAD_CONTROL_TBL. SLM_CONDITION_LEN);
286
DRAFT ANSI C12.19-2012

10407 DIRECTIVE : DIRECT_LOAD_CONTROL_PROC. PARM_DATA_RCD;


10408 END;

10409 TYPE LC_CONDITIONS_RCD = PACKED RECORD


10410 CONDITIONS :
10411 ARRAY[ACT_LOAD_CONTROL_TBL. NBR_OF_CONDITIONS] OF
10412 LC_CONDITION_RCD;
10413 END;

10414 TABLE 115 LC_CONDITIONS_TBL = LC_CONDITIONS_RCD;

10415 Table 115 Element Descriptions

10416 Identifier Value Definition


10417 OPERATOR_ENUM 0 Greater than or equal.
10418 1 Greater than.
10419 2 Equal.
10420 3 Not equal.
10421 4 Less than.
10422 5 Less than or equal.
10423 6 Not applicable, ignore this condition.
10424 7..255 Reserved.

10425 CONDITION_MONTH_ENUM 0 Unassigned. Condition ignored.


10426 1 January.
10427 2 February.
10428 3 March.
10429 4 April.
10430 5 May.
10431 6 June.
10432 7 July.
10433 8 August.
10434 9 September.
10435 10 October.
10436 11 November.
10437 12 December.
10438 13..15 Reserved.

10439 SOURCE_CONDITION_RCD
10440 SOURCE Data source selector of the value to be compared.

10441 OPERATOR See OPERATOR_ENUM.

10442 VALUE Value on which condition applies. For example: When


10443 SOURCE = 2, OPERATOR = 1, and VALUE = 1000.000,
10444 means “IF source 2 > 1000.000”.

10445 TIER_CONDITION_RCD
10446 OPERATOR See OPERATOR_ENUM.

10447 VALUE Value on which condition applies. For example: When


10448 OPERATOR = 3 and VALUE = 2, means “IF active tier !=
10449 2”.

Tables / Decade 11: Load Control and Pricing Tables 287


Table 115 Load Control Conditions
DRAFT ANSI C12.19-2012

10450 DATE_CONDITION_BFLD
10451 START_MONTH See CONDITION_MONTH_ENUM.

10452 START_DATE 0 Unassigned. Condition ignored. See TIME_CONDITION.


10453 1..31 Start day for this period.

10454 END_MONTH See CONDITION_MONTH_ENUM.

10455 END_DATE 0 Unassigned. Condition ignored.


10456 1..31 End day for this period.

10457 TIME_CONDITION_RCD
10458 ALLOWED_DAYS Defines the days of the week where load control is allowed.

10459 START_TIME Defines the start time of the day where load control is allowed.
10460 START_TIME is inclusive. For example, START_TIME =
10461 10:00:00 means the load control begins at 10:00:00.

10462 END_TIME Defines the end time of the day where load control is allowed.
10463 END_TIME is exclusive. For example, END_TIME =
10464 12:00:00 means the load control is no longer in operation at
10465 12:00:00.

10466 LC_CONDITION_RCD All conditions defined in this structure must be TRUE or set to
10467 ignore before applying the associated directive.

10468 SOURCE_CONDITION Condition based on a source limit.

10469 TIER_CONDITION Condition based on the active Tier that represents the actual
10470 pricing level.

10471 DATE_CONDITION Condition based on the period of the year.

10472 TIME_CONDITION Condition based on the time of day and day of week.

10473 SLM_CONDITION Condition defined by a Single Line Math expression. This


10474 field is ignored if zero length, or contains all spaces (20 H). For
10475 expression construction, see G.15, “Single-Line Math
10476 Expressions”.

10477 DIRECTIVE Load control directive as defined in “Direct load control


10478 procedure” (Procedure 21).

10479 LC_CONDITIONS_RCD
10480 CONDITIONS Array that contains load control conditions. Each entry of this
10481 Array works independently. If multiple CONDITIONS
10482 Elements apply to the same control point, the Element having
10483 the lower index shall apply.

288
DRAFT ANSI C12.19-2012

10484 9.12.7 Table 116 Prepayment Status

10485 Table 116 Data Description

10486 PREPAYMENT_STATUS_TBL (Table 116) provides the actual prepayment status. This status includes the
10487 remaining credit available for this End Device and some consumption history to guide the customer in his
10488 consumption and transaction habits.

10489 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

10490 Table 116 Type Definitions

10491 TYPE PREPAYMENT_HISTORY_RCD = PACKED RECORD


10492 PP_DATE : STIME_DATE;
10493 PERIOD : TIME;
10494 CONSUMPTION_LCU : NI_FMAT1;
10495 END;

10496 TYPE PREPAYMENT_STATUS_RCD = PACKED RECORD


10497 REMAINING_CREDIT : NI_FMAT1;
10498 ACTUAL_CONSUMPTION : NI_FMAT1;
10499 AVERAGE_PER_DAY : NI_FMAT1;
10500 HISTORY_CONSUMPTION :
10501 ARRAY[ACT_LOAD_CONTROL_TBL. NBR_OF_CONSUMPTIONS] OF
10502 PREPAYMENT_HISTORY_RCD;
10503 END;

10504 TABLE 116 PREPAYMENT_STATUS_TBL = PREPAYMENT_STATUS_RCD;

10505 Table 116 Element Descriptions

10506 Identifier Value Definition


10507 PREPAYMENT_HISTORY_RCD
10508 PP_DATE Date and time of this period of consumption.

10509 PERIOD Duration reported.

10510 CONSUMPTION_LCU Consumption measured for this period in local currency units.

10511 PREPAYMENT_STATUS_RCD
10512 REMAINING_CREDIT Actual remaining credit available. This value can be negative
10513 if OVERDRAFT_LIMIT defined in
10514 PREPAYMENT_CONTROL_TBL (Table 117) is different
10515 from zero (0).

10516 ACTUAL_CONSUMPTION Actual rate of consumption in local currency units per hour.

10517 AVERAGE_PER_DAY Average consumption per day based on the last month of
10518 consumption in local currency units per day.

10519 HISTORY_CONSUMPTION Array containing a history of consumption recorded.

Tables / Decade 11: Load Control and Pricing Tables 289


Table 116 Prepayment Status
DRAFT ANSI C12.19-2012

10520 9.12.8 Table 117 Prepayment Control

10521 Table 117 Data Description

10522 PREPAYMENT_CONTROL_TBL (Table 117) implements the prepayment method of load control. This Table is
10523 used to set credit limits for pre-warning, warning, and turn-off directive.

10524 Global Default Table Property Overrides: Role=“CONTROL”

10525 Table 117 Type Definitions

10526 TYPE PREPAYMENT_CONTROL_RCD = PACKED RECORD


10527 PRE_WARNING_LIMIT : UINT8;
10528 WARNING_LIMIT : UINT8;
10529 OVERDRAFT_LIMIT : NI_FMAT1;
10530 DIRECTIVE : DIRECT_LOAD_CONTROL_PROC. PARM_DATA_RCD;
10531 END;

10532 TABLE 117 PREPAYMENT_CONTROL_TBL = PREPAYMENT_CONTROL_RCD;

10533 Table 117 Element Descriptions

10534 Identifier Value Definition


10535 PREPAYMENT_CONTROL_RCD
10536 PRE_WARNING_LIMIT 0..255 Threshold on which a first warning is provided to the
10537 customer. This threshold is defined in a number of days before
10538 spending the REMAINING_CREDIT. This value is
10539 compared to the estimated time remaining computed based on
10540 the AVERAGE_PER_DAY and the
10541 REMAINING_CREDIT defined in the Prepayment Status
10542 Table (Table 116).

10543 WARNING_LIMIT 0.255 Threshold on which a final warning is provided to the


10544 customer. As with the PRE_WARNING_LIMIT, this value
10545 also represents a number of days before spending the
10546 REMAINING_CREDIT.

10547 OVERDRAFT_LIMIT Negative value tolerated before applying the load control
10548 directive.

10549 DIRECTIVE Load control directive as defined in “Direct Load Control”


10550 procedure (Procedure 21) to apply if the credit limit is
10551 exceeded.

290
DRAFT ANSI C12.19-2012

10552 9.12.9 Table 118 Billing Control

10553 Table 118 Data Description

10554 BILLING_CONTROL_TBL (Table 118) includes all parameters necessary to directly bill the customer. This
10555 includes taxes, daily fix charges, and rate of measured quantities based on the current season, tier, and type of
10556 quantity. In addition, a Single Line Math expression can be added to express a more complex billing expression.

10557 Global Default Table Property Overrides: Role=“CONTROL”

10558 Table 118 Type Definitions

10559 TYPE PRICING_RCD = PACKED RECORD


10560 PRICE : NI_FMAT1;
10561 END;

10562 TYPE OCCURRENCE_PRICING_RCD = PACKED RECORD


10563 OCCURRENCE_PRICING : ARRAY[ACT_REGS_TBL.NBR_OCCUR] OF PRICING_RCD;
10564 END;

10565 TYPE TIER_PRICING_RCD = PACKED RECORD


10566 SUMMATIONS_PRICING :
10567 ARRAY[ACT_REGS_TBL. NBR_SUMMATIONS] OF
10568 PRICING_RCD;
10569 DEMAND_PRICING :
10570 ARRAY[ACT_REGS_TBL. NBR_DEMANDS] OF
10571 OCCURRENCE_PRICING_RCD;
10572 END;

10573 TYPE SEASON_PRICING_RCD = PACKED RECORD


10574 IF ACT_REGS_TBL.NBR_TIERS != 0 THEN
10575 TIER_PRICING :
10576 ARRAY[ACT_REGS_TBL. NBR_TIERS] OF
10577 TIER_PRICING_RCD;
10578 ELSE
10579 TIER_PRICING : TIER_PRICING_RCD;
10580 END;
10581 END;

10582 TYPE BILLING_CONTROL_RCD = PACKED RECORD


10583 DAILY_FIXED_CHARGE : NI_FMAT1;
10584 TAXES : NI_FMAT1;
10585 CONDITION_ON_SOURCE : STD.SOURCE_SELECT_RCD;
10586 LIMIT : NI_FMAT1;
10587 ACTION : UINT8;
10588 TIER : UINT8;
10589 SLM_EQUATION : STRING(ACT_LOAD_CONTROL_TBL.SLM_EQUATION_LEN);
10590 IF GEN_CONFIG_TBL.STD_TBLS_USED[ACT_TIME_TOU_TBL] &&
10591 ACT_TIME_TOU_TBL.NBR_SEASONS != 0 THEN
10592 SEASON_PRICING :
10593 ARRAY[ACT_TIME_TOU_TBL. NBR_SEASONS] OF
10594 SEASON_PRICING_RCD;
10595 ELSE
10596 SEASON_PRICING : SEASON_PRICING_RCD;
Tables / Decade 11: Load Control and Pricing Tables 291
Table 118 Billing Control
DRAFT ANSI C12.19-2012

10597 END;
10598 END;

10599 TABLE 118 BILLING_CONTROL_TBL = BILLING_CONTROL_RCD;

10600 Table 118 Element Descriptions

10601 Identifier Value Definition


10602 PRICING_RCD
10603 PRICE Price of this commodity in local currency units per unit.

10604 OCCURRENCE_PRICING_RCD
10605 OCCURRENCE_PRICING Pricing of each occurrence supported.

10606 TIER_PRICING_RCD
10607 SUMMATIONS_PRICING Pricing of each summation supported.

10608 DEMAND_PRICING Pricing of each demand supported.

10609 SEASON_PRICING_RCD
10610 TIER_PRICING Structure containing the pricing information for commodities
10611 measured based on the actual tier and type of measurement.

10612 BILLING_CONTROL_RCD
10613 DAILY_FIXED_CHARGE Fixed charge per day for service and equipment rental in local
10614 currency units per day.

10615 TAXES Tax to apply in percent (%).

10616 CONDITION_ON_SOURCE Data source selector of the value to be compared.

10617 LIMIT Limit on which condition applies. For example:


10618 CONDITION_ON_SOURCE = 2 and LIMIT = 1000.000,
10619 means ”IF source 2 > 1000.000 THEN perform the ACTION”.

10620 ACTION Action to perform when the source selected by


10621 CONDITION_ON_SOURCE exceeds the limit set by
10622 LIMIT.
10623 0 No action.
10624 1 Switch to Tier specified by the next field (TIER).
10625 2 Switch to current tier added to the next field (TIER).

10626 TIER 0..255 Specified Tier.

10627 SLM_EQUATION Single Line Math expression used in addition to the


10628 SEASON_PRICING information to create complex billing
10629 equation.

10630 SEASON_PRICING Structure containing the pricing information for commodities


10631 measured based on the actual season, Tier, and type of
10632 measurement.

292
DRAFT ANSI C12.19-2012

10633 9.13 Decade 12: Reserved


10634

10635 9.14 Decade 13: Reserved

10636

Tables / Decade 12: Reserved 293


DRAFT ANSI C12.19-2012

10637 9.15 Decade 14: Extended User-defined Tables

10638 Decade 14 Name

10639 EXT_UDT_DEC

10640 Decade 14 Data Description

10641 The Extended User-defined Tables enable the C12.19 application to make selections from other tables that are
10642 present or implied to be present in an End Device and redirect the resulting values into a user-defined table. The
10643 values gathered may then be retrieved from a desired Extended User-defined Table as if the standard provided an
10644 explicit Table and descriptive syntax to express the resulting Table structure.

10645 The following general features are available to the application through the use of the Extended User-defined Tables:

10646 Elements, Sub-elements, Final Elements, and subsets of Final Elements may be referenced for use by
10647 an Extended User-Defined Table (EUDT).
10648 The Element referenced can be directed into any one of 2040 Extended User-defined Tables.
10649 The Elements are packed in accordance with the base-type packing rules.
10650 It is possible to define pseudo BIT FIELD records for selecting bit field ranges from other tables and
10651 mapping them into BIT FIELD records within the Extended User-defined Tables. Two mapping
10652 methods are supplied for bit fields:
10653 1) Index method, which maps Elements, Sub-elements, Final Elements, and subsets of Final
10654 Elements of a formal Table.
10655 2) Offset method, which maps any bit range of a formal Table.

10656 It is important to note that the Extended User-defined Tables are presumed not to be real tables inside the End
10657 Device. Logically they may be thought of as if they are:

10658 Constructed on-the-fly by an End-Device in response to a read or write request.


10659 Built at the time of issuance of a blurt from a One-way End-Device.

294
DRAFT ANSI C12.19-2012

10660 9.15.1 Table 140 Extended User-defined Tables Function Limiting Table

10661 Table 140 Data Description

10662 This table contains the maximum limits for values and control parameters for the Extended User-defined Tables.

10663 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

10664 Table 140 Type Definitions

10665 TYPE EUDT_BFLD = BIT FIELD OF UINT8


10666 DATA_ACCESS_METHOD : UINT(0..1);
10667 INDEX_DEPTH : UINT(2..5);
10668 FILLER : FILL(6..7);
10669 END;

10670 TYPE EUDT_LIMITS_RCD = PACKED RECORD


10671 EUDT_CTRL : EUDT_BFLD;
10672 NBR_EUDT : UINT16;
10673 NBR_INSTANCES : UINT16;
10674 NBR_SELECTIONS : UINT16;
10675 NBR_CONSTANTS : UINT16;
10676 NBR_LABEL_CHARS : UINT8;
10677 END;

10678 TABLE 140 DIM_EUDT_TBL = EUDT_LIMITS_RCD;

10679 Table 140 Element Descriptions

10680 Identifier Value Definition


10681 EUDT_BFLD
10682 DATA_ACCESS_METHOD Designates the allowable methods for selecting table entries
10683 for placement in an Extended User-defined Table.
10684 0 Only complete tables can be mapped into user tables. Partial
10685 tables cannot be mapped.
10686 1 Octet-offset/Octet-count and bit-offset/bit-count access
10687 methods are supported.
10688 2 Index/element-count access method is supported.
10689 3 Access methods 2 and 3 are both supported.

10690 INDEX_DEPTH 1..9 The maximum depth (number) of indices supported.


10691 0 Shall be set when DATA_ACCESS_METHOD is 0 or 1.

10692 EUDT_LIMITS_RCD
10693 EUDT_CTRL See EUDT_BFLD.

10694 NBR_EUDT 0..2039 Maximum number of Extended User-defined Tables (virtual


10695 tables within one End Device instance) available for
10696 selections.
10697 2040..65535 Reserved.

10698 NBR_INSTANCES 0..65535 Maximum number of End Device Table instances (virtual
10699 devices) available for selections.

Tables / Decade 14: Extended User-defined Tables 295


Table 140 Extended User-defined Tables Function Limiting Table
DRAFT ANSI C12.19-2012

10700 NBR_SELECTIONS 0..65535 Maximum number of selections per Extended User-defined


10701 Table.

10702 NBR_CONSTANTS 0..65535 Maximum supported number of constants in table


10703 EUDT_CONSTANTS_TBL.

10704 NBR_LABEL_CHARS 0..255 Maximum supported number of characters per Extended User-
10705 defined Table-element label.

296
DRAFT ANSI C12.19-2012

10706 9.15.2 Table 141 Extended User-defined Tables Actual Limits Table

10707 Table 141 Data Description

10708 This table contains the actual limits for values and control parameters for the Extended User-defined Tables.

10709 Global Default Table Property Overrides: Role=“ACTUAL”

10710 Table 141 Type Definitions

10711 TABLE 141 ACT_EUDT_TBL = EUDT_LIMITS_RCD;

10712 Table 141 Element Descriptions

10713 Identifier Value Definition


10714 EUDT_BFLD Redefines: DIM_EUDT_TBL.EUDT_BFLD.

10715 DATA_ACCESS_METHOD Designates the method used for selecting table entries for
10716 placement in an Extended User-defined Table.
10717 0 Complete tables are mapped into user tables. Partial tables
10718 cannot be mapped.
10719 1 Octet-offset/Octet-count and bit-offset/bit-count access
10720 method is used.
10721 2 Index/element-count access method is used.
10722 3 Reserved.

10723 INDEX_DEPTH 1..9 The maximum depth (number) of indices supported.


10724 0 Shall be set when DATA_ACCESS_METHOD is 0 or 1.

10725 EUDT_LIMITS_RCD Redefines: DIM_EUDT_TBL.EUDT_LIMITS_RCD.

10726 EUDT_CTRL See EUDT_BFLD.

10727 NBR_EUDT 0..2039 Actual number of Extended User-defined Tables (virtual


10728 tables within one End Device instance) available for
10729 selections.
10730 2040..65535 Reserved.

10731 NBR_INSTANCES 0..65535 Actual number of End Device Table instances (virtual
10732 devices) available for selections.

10733 NBR_SELECTIONS 0..65535 Actual number of selections per Extended User-defined Table.

10734 NBR_CONSTANTS 0..65535 Actual number of constants found in table


10735 EUDT_CONSTANTS_TBL.

10736 NBR_LABEL_CHARS 0..255 Actual supported number of characters in extended-user-


10737 defined element label.

Tables / Decade 14: Extended User-defined Tables 297


Table 141 Extended User-defined Tables Actual Limits Table
DRAFT ANSI C12.19-2012

10738 9.15.3 Table 142 Extended User-defined Selections Table

10739 Table 142 Data Description

10740 This table contains the Extended User-defined selections for constructing the Extended User-defined Tables records.
10741 These selections enable the C12.19 Device application to direct the placement of Formal Table, Elements, Final
10742 Elements, Sub-elements, and arbitrary bit field subsets of any Formal Element into an Extended User-defined Table.

10743 Global Default Table Property Overrides: Role=“CONTROL”

10744 Table 142 Type Definitions

10745 TYPE EUDT_MAPPING_BFLD = BIT FIELD OF UINT32


10746 FORMAL_UNIT_SIZE : UINT(0..3);
10747 FORMAL_PAD_ENABLE_FLAG : BOOL(4);
10748 FORMAL_PADDING : UINT(5..6);
10749 FORMAL_LIMITED_FLAG : BOOL(7);
10750 FORMAL_NUMERIC_FLAG : BOOL(8);
10751 EUDT_PRODUCTION_CTRL : UINT(9..11);
10752 FILLER : FILL(12..15);
10753 EUDT_ELEMENT_SIZE : UINT(16..31);
10754 END;

10755 TYPE EUDT_ITEM_RCD = PACKED RECORD


10756 EUDT_ELEMENT_NAME : STRING(ACT_EUDT_TBL. NBR_LABEL_CHARS);
10757 FORMAL_TABLE_ID : TABLE_IDB_BFLD;
10758 IF ACT_EUDT_TBL.NBR_INSTANCES > 1 THEN
10759 FORMAL_INSTANCE_NBR : UINT16;
10760 END;
10761 EUDT_MAPPING : EUDT_MAPPING_BFLD;
10762 SWITCH ACT_EUDT_TBL.DATA_ACCESS_METHOD OF
10763 CASE 1:
10764 FORMAL_BYTE_OFFSET : UINT24;
10765 FORMAL_OFFSET_NEXT : UINT24;
10766 CASE 2:
10767 FORMAL_INDEX :
10768 ARRAY[ACT_EUDT_TBL. INDEX_DEPTH] OF
10769 UINT16;
10770 FORMAL_ELEMENT_COUNT : UINT16;
10771 FORMAL_INDEX_NEXT :
10772 ARRAY[ACT_EUDT_TBL. INDEX_DEPTH] OF
10773 UINT16;
10774 END;
10775 FORMAL_BIT_OFFSET : UINT8;
10776 FORMAL_BIT_COUNT : UINT16
10777 ASSERT ( ACT_EUDT_TBL.DATA_ACCESS_METHOD == 2 &&
10778 FORMAL_BIT_COUNT > 0 &&
10779 FORMAL_ELEMENT_COUNT > 1 ) ERROR
10780 “Invalid use of FORMAL_ELEMENT_COUNT != 1 and FORMAL_BIT_COUNT > 0”;
10781 ; { The semicolon closes FORMAL_BIT_COUNT phrase.}
10782 FORMAL_REPEAT_COUNT : UINT16;
10783 END;

10784 TYPE TABLE_SELECTIONS_RCD = PACKED RECORD

298
DRAFT ANSI C12.19-2012

10785 EUDT_ID : TABLE_IDB_BFLD;


10786 SELECTIONS :
10787 ARRAY[ACT_EUDT_TBL. NBR_SELECTIONS] OF
10788 EUDT_ITEM_RCD;
10789 END;

10790 TYPE EUDT_SELECTIONS_RCD = PACKED RECORD


10791 TABLE_SELECTIONS :
10792 ARRAY[ACT_EUDT_TBL. NBR_EUDT] OF
10793 TABLE_SELECTIONS_RCD;
10794 END;

10795 TABLE 142 EUDT_SELECTIONS_TBL = EUDT_SELECTIONS_RCD;

10796 Table 142 Element Descriptions

10797 Identifier Value Definition


10798 EUDT_MAPPING_BFLD
10799 FORMAL_UNIT_SIZE Defines the Formal Element size and data type for accessing
10800 the selection from a Table indicated by
10801 FORMAL_TABLE_ID. The type casting takes place before
10802 the application of FORMAL_BIT_COUNT and
10803 FORMAL_BIT_OFFSET. For example, when
10804 FORMAL_BIT_OFFSET=5 and
10805 FORMAL_BIT_COUNT=3, a selection from a 16 bit wide
10806 Element will collect bits starting at Formal Element bit
10807 position 5 (where the first bit is in position 0) to bit position 7,
10808 inclusive. This is independent of the DATA_ORDER value
10809 found in GEN_CONFIG_TBL. The type also affects the
10810 interpretation of zero padding and sign extension. Numeric
10811 values are padded with zeros, and CHAR values are padded
10812 with spaces (20H).
10813 0 8 bit Element.
10814 1 16 bit Element.
10815 2 24 bit Element.
10816 3 32 bit Element.
10817 4 40 bit Element.
10818 5 48 bit Element.
10819 6 64 bit element.
10820 7 CHAR or STRING Element.
10821 8 NI_FMAT1 Element.
10822 9 NI_FMAT2 Element.
10823 10 BCD Element.
10824 11 Element is an entire PACKED RECORD, BIT FIELD, or
10825 built-in type. The FORMAL_BIT_OFFSET and the
10826 FORMAL_BIT_COUNT shall be set to zero (0). The entire
10827 Element and its inner members shall be referenced.
10828 12..15 Reserved.

10829 FORMAL_PAD_ENABLE_FLAG A flag that enables or disables the selectors


10830 FORMAL_PADDING and FORMAL_LIMITED_FLAG.
10831 FALSE All source padding functions are disabled. Element transfer
10832 will begin with low order bits and continue toward high order
10833 bits. Unavailable source bits shall be set to zero.

Tables / Decade 14: Extended User-defined Tables 299


Table 142 Extended User-defined Selections Table
DRAFT ANSI C12.19-2012

10834 TRUE Source padding functions are enabled. Source padding, sign
10835 extension, and limits will be set as per FORMAL_PADDING
10836 and FORMAL_LIMITED_FLAG.

10837 FORMAL_PADDING When the number of bits in the destination element is larger
10838 than the source element, then sign extension or padding may
10839 be required. FORMAL_UNIT_SIZE dictates the sign
10840 extension algorithm.
10841 0 Sign extension is required.
10842 The most significant bits are signed extended according to the
10843 Formal Element type indicated by FORMAL_UNIT_SIZE.
10844 1 Pad with fill Octets.
10845 Copy Octets starting at source bit to target with zero fill
10846 padding.
10847 2 Lead with fill Octets.
10848 Copy Octets starting at source bit to target with zero fill
10849 leading.
10850 3 Reserved.

10851 FORMAL_LIMITED_FLAG Controls the roll-over behavior of a numeric field that cannot
10852 be represented in a target space that has lesser resolution than
10853 that of the source.
10854 FALSE Do not limit value.
10855 On overflow the numeric result will not be limited (truncated
10856 or rolled over).
10857 TRUE Limit value.
10858 On overflow the numeric result will be the smallest negative
10859 or the largest positive representation of the overflowing
10860 numeric field. Example: if a 16-bit signed integer has the
10861 value -1000, then when limited to 8 bit, it will be set to set to -
10862 128.

10863 FORMAL_NUMERIC_FLAG An indication that the selected field shall be treated as a


10864 number. This flag forces non-numeric fields, such as
10865 STRING, to be treated as a text representation of a number,
10866 and be converted to or from numeric binary equivalent of the
10867 target. Initialized to zero (0), numeric conversion processing
10868 shall stop upon detection of the end of selected field, or upon
10869 detection of invalid numeric field value. Example: Assume
10870 that the FORMAL_UNIT_SIZE is 7 (STRING) and
10871 EUDT_PRODUCTION_CTRL is 2 (UINT32), and then a
10872 formal text value of “123” shall be mapped to the UINT32
10873 value 0000007BH before placing it in the target collection BIT
10874 FIELD.
10875 FALSE Do not map the non-numeric value to a number.
10876 TRUE Map the non-numeric value to a number according to the
10877 corresponding value of EUDT_PRODUCTION_CTRL.

10878 EUDT_PRODUCTION_CTRL Controls the bit-packing of BIT FIELDs of a target EUDT bit
10879 field element. First members of a BIT FIELD shall begin on
10880 an Octet boundary with zero Octet padding. Bit stuffing shall
10881 begin with bit 0 of the indicated data type and progress toward
10882 the highest bit position available.
10883 0 Start of a UINT8 bit field or collection of UINT8.

300
DRAFT ANSI C12.19-2012

10884 First member of a BIT FIELD OF UINT8 or a non-bit-field


10885 member.
10886 1 Start of a UINT16.
10887 First member of a BIT FIELD OF UINT16 or a non-bit-field
10888 member.
10889 2 Start of a UINT32.
10890 First member of a BIT FIELD OF UINT32 or a non-bit-field
10891 member.
10892 3 Start of a UINT64.
10893 First member of a BIT FIELD OF UINT64 or a non-bit-field
10894 member.
10895 4 Next BIT FIELD member in sequence.
10896 5 Start of an Element of a PACKED RECORD, BIT FIELD,
10897 or built-in type.
10898 6..7 Reserved.

10899 EUDT_ELEMENT_SIZE 0..65535 Size of one EUDT element in bits. When the source element
10900 size is smaller than the target element size, then only fitting
10901 bits will be transferred, and may be padded, sign extended, or
10902 truncated. When the source element size is greater than the
10903 target element size, then the target element may be truncated
10904 or be limited. See FORMAL_PAD_ENABLE_FLAG.

10905 EUDT_ITEM_RCD A single Formal-element to EUDT-element association


10906 description. This identifies C12.19 Device Formal Table
10907 Elements or subsets of Elements (elements other than EUDT
10908 elements) for transport using an Extended User-defined Table.

10909 EUDT_ELEMENT_NAME The optionally assigned label for the EUDT element used in
10910 the production of EDL schemas. If the size of this element is
10911 zero or it contains only spaces, then the element name is not
10912 assigned. If the element name contains a period, then the label
10913 to the left of the period represents the name of the container
10914 elements (as may be needed when this element is the first
10915 member of a bit-field) and the label on the right-hand side of
10916 the period is the bit-field member name.

10917 FORMAL_TABLE_ID The formal table identifier. This shall not be an EUDT or a
10918 UDT data table.

10919 FORMAL_INSTANCE_NBR
10920 0..65535 The End Device Table set instance number used for selecting
10921 the formal table. The instance number refers to a logical table
10922 set number that exists inside the same physical device.

10923 EUDT_MAPPING See EUDT_MAPPING_BFLD.

10924 FORMAL_BYTE_OFFSET
10925 0..16777215 Offset in Octets to the beginning of a formal element relative
10926 to the beginning of the Table that contains that Element.

10927 FORMAL_OFFSET_NEXT
10928 0..16777215 Offset in Octets to the next element or group of elements
10929 relative to the beginning of current selection. The initial
10930 selection is defined by FORMAL_BYTE_OFFSET.
Tables / Decade 14: Extended User-defined Tables 301
Table 142 Extended User-defined Selections Table
DRAFT ANSI C12.19-2012

10931 Additional selections up to FORMAL_REPEAT_COUNT


10932 may be made by advancing FORMAL_BYTE_OFFSET by
10933 the value of FORMAL_OFFSET_NEXT. The Final
10934 Elements FORMAL_BIT_OFFSET and
10935 FORMAL_BIT_COUNT shall be applied repeatedly to each
10936 selection independently. This is intended to facilitate access to
10937 ARRAY Elements such as profile data or self-read.

10938 FORMAL_INDEX An array of UINT16 containing


10939 ACT_EUDT_TBL.INDEX_DEPTH indices that represent
10940 the source of an element to be placed in the next available slot
10941 of the desired extended-user-defined table. The element may
10942 be any table object, table element, terminal element, or a sub-
10943 element. The index value of FFFFH represents the end of the
10944 list.

10945 FORMAL_ELEMENT_COUNT
10946 0..65535 The number of Formal Elements selected. This value shall be
10947 set to zero for unused selections.

10948 FORMAL_INDEX_NEXT An array of UINT16 containing


10949 ACT_EUDT_TBL.INDEX_DEPTH indices that represent
10950 the relative offset to the Formal Element to be associated with
10951 the next selection in a sequence of selections.
10952 The initial selection is defined by FORMAL_INDEX.
10953 Additional selections up to FORMAL_REPEAT_COUNT
10954 may be made by advancing the position of
10955 FORMAL_INDEX by FORMAL_INDEX_NEXT to the
10956 next element (Example 1. Assume that
10957 FORMAL_INDEX=1.2.3,
10958 FORMAL_INDEX_NEXT=0.1.0, and
10959 FORMAL_REPEAT_COUNT=3; then Formal Elements
10960 1.2.3, 1.3.3, and 1.4.3 shall be selected for placement in an
10961 EUDT.
10962 Example 2. Assume that FORMAL_INDEX=1.2.3,
10963 FORMAL_INDEX_NEXT=1.1.0, and
10964 FORMAL_REPEAT_COUNT=3; then Formal Elements
10965 1.2.3, 2.3.3, and 3.4.3 shall be selected for placement in an
10966 EUDT.)
10967 FORMAL_ELEMENT_COUNT,
10968 FORMAL_BIT_OFFSET, and FORMAL_BIT_COUNT
10969 are applied repeatedly to each selection independently.
10970 This is intended to facilitate access to ARRAY Elements such
10971 as profile data or self-read.

10972 FORMAL_BIT_OFFSET 0..255 Offset in bits to the beginning of a bit sequence relative to the
10973 beginning of the selected element. This offset is independent
10974 of the GEN_CONFIG_TBL.DATA_ORDER, since bit
10975 offset zero (0) points to bit position zero (the least significant
10976 bit) of the selected element. The compliant application shall
10977 logically expand the Final Element referred to by the
10978 FORMAL_BYTE_OFFSET before applying the
10979 FORMAL_BIT_OFFSET.
10980 This value shall be ignored (i.e., no access to bit fields of sub-
10981 final elements) when
302
DRAFT ANSI C12.19-2012

10982 ACT_EUDT_TBL.DATA_ACCESS_METHOD = 2 and


10983 FORMAL_BIT_COUNT = 0.

10984 FORMAL_BIT_COUNT 0..65535 The number of bits selected. This value shall be set to zero for
10985 unused selections.
10986 Assert: ERROR on
10987 (ACT_EUDT_TBL. DATA_ACCESS_METHOD == 2 &&
10988 FORMAL_BIT_COUNT > 0 &&
10989 FORMAL_ELEMENT_COUNT > 1)
10990 due to “Invalid use of FORMAL_ELEMENT_COUNT != 1
10991 and FORMAL_BIT_COUNT > 0".

10992 FORMAL_REPEAT_COUNT
10993 0..65535 The number of times to repeat the selection made in this entry.
10994 This provides a capability for the selection of elements from
10995 Formal ARRAYs for delivery by EUDTs. The value 0 means
10996 that there is no repeat; only one Element shall be selected. The
10997 value 1 means that there is one repeat; therefore, two Elements
10998 shall be selected.

10999 TABLE_SELECTIONS_RCD
11000 EUDT_ID The Extended User-defined Table that is a collection of
11001 Elements from other tables from within the End-Device that
11002 have been selected for transmission via the EUDT_ID
11003 Extended User-defined Table.

11004 SELECTIONS An array of EUDT_ITEM_RCD. Array of instructions that


11005 collect and direct Table values to and from Extended User-
11006 defined Table. The Extended User-defined Tables are
11007 populated sequentially based on these selections. When a
11008 constructed element from a selection is not a bit-field member
11009 (by virtue of EUDT_PRODUCTION_CTRL being “Next
11010 BIT FIELD member in sequence”), then it shall align on the
11011 next Octet boundary with zero fill. Also, if it is the first
11012 member of a bit-field, then it may optionally have a dot-
11013 separated name, where the label to the left of the dot is the
11014 name of the bit-field and the name to the right of the dot is the
11015 name of the bit-field member element. Collections of bit fields
11016 are grouped into BIT FIELD types for transmission in
11017 accordance with the type defined in
11018 EUDT_PRODUCTION_CTRL. These are assembled into
11019 the extended-user-defined BIT FIELD table-element starting
11020 with bit field position 0.
11021 Selections made in any EUDT shall only reference into
11022 Formal data Table Elements. Also, they shall not reference
11023 any UDT (Tables 84–89) or EUDT data table elements.
11024

Tables / Decade 14: Extended User-defined Tables 303


Table 142 Extended User-defined Selections Table
DRAFT ANSI C12.19-2012

11025 EUDT_SELECTIONS_RCD
11026 TABLE_SELECTIONS An array of Table selections. See
11027 TABLE_SELECTIONS_RCD.

304
DRAFT ANSI C12.19-2012

11028 9.15.4 Table 143 Extended User-defined Constants Table

11029 Table 143 Data description

11030 This table provides a placeholder for placing various values that may be selected as Elements by Table 142,
11031 EUDT_SELECTIONS_TBL. A typical use for this Table is to fill elements with bit patterns or numeric values that
11032 are nonchanging and cannot be constructed from a reference to any standard- or manufacturer-defined Table Final
11033 Element.

11034 Global Default Table Property Overrides: Role=“CONTROL”

11035 Table 143 Type Definitions

11036 TYPE EUDT_CONSTANTS_RCD = PACKED RECORD


11037 CONSTANT :
11038 ARRAY [ACT_EUDT_TBL.NBR_CONSTANTS] OF
11039 INT64;
11040 END;

11041 TABLE 143 EUDT_CONSTANTS_TBL = EUDT_CONSTANTS_RCD;

11042 Table 143 Element Descriptions

11043 Identifier Value Definition


11044 EUDT_CONSTANTS_RCD
11045 CONSTANT An array of INT64. Entries from this array may be seeded
11046 (programmed) with values and referenced fully or in part from
11047 Table 142, EUDT_SELECTIONS_TBL.

Tables / Decade 14: Extended User-defined Tables 305


Table 143 Extended User-defined Constants Table
DRAFT ANSI C12.19-2012

11048 9.16 Decade 15: Quality-of-service

11049 Decade 15 Name

11050 QUALITY_SERVICE_DEC

11051 Decade 15 Data Description

11052 This Decade provides the Tables required to capture information that is not necessarily used for the production
11053 commodity consumption reports. The information recorded pertains to the evaluation of the sustained quality
11054 commodity delivered. In the case of electrical services, these Tables are the placeholders of Power Quality
11055 monitoring controls and data values, such as identified by IEEE Std 1159-1995 and IEEE Std 519-1993. In the
11056 context of water and gas industries, these Tables are the placeholders for reports on water and gas commodity
11057 quality (such as purity) and sustained delivery of the commodities. Time-domain and frequency-domain input
11058 sample data (waveforms) can be captured periodically and as a result of a Quality-of-service event trigger. When the
11059 commodities’ properties or their sustained delivery fall below certain acceptable limits (as indicated by a service
11060 contract or regulation), then it leads to a Quality-of-service condition.

11061 For example, in the electrical industry context, it is desirable to record a voltage sag or short duration voltage
11062 interruption. The recording of these Events are known to the industry as power quality Events. However, the
11063 continual recurrence of voltage sag or repeated short duration power interruptions elevates Power Quality Events to
11064 Quality-of-service Events. This Decade provides the necessary framework to accommodate both.

11065 NOTE—In this Decade, the acronym “FD” is an abbreviation for the term “Frequency Domain”. The acronym “TD” is an
11066 abbreviation for the term “Time Domain”.

11067 Decade 15 Type Definitions

11068 TYPE TD_SAMPLE_FORMAT_RCD = PACKED RECORD


11069 SWITCH QUALITY_CONTROL_TBL.TD_SAMPLES_FORMAT_CODE OF
11070 CASE 1 : ITEM : UINT8;
11071 CASE 2 : ITEM : UINT16;
11072 CASE 4 : ITEM : UINT32;
11073 CASE 8 : ITEM : INT8;
11074 CASE 16 : ITEM : INT16;
11075 CASE 32 : ITEM : INT32;
11076 CASE 64 : ITEM : NI_FMAT1;
11077 CASE 128 : ITEM : NI_FMAT2;
11078 END;
11079 END;

11080 TYPE FD_SAMPLE_FORMAT_RCD = PACKED RECORD


11081 SWITCH QUALITY_CONTROL_TBL. FD_SAMPLES_FORMAT_CODE OF
11082 CASE 1 : ITEM : UINT8;
11083 CASE 2 : ITEM : UINT16;
11084 CASE 4 : ITEM : UINT32;
11085 CASE 8 : ITEM : INT8;
11086 CASE 16 : ITEM : INT16;
11087 CASE 32 : ITEM : INT32;
11088 CASE 64 : ITEM : NI_FMAT1;
11089 CASE 128 : ITEM : NI_FMAT2;
11090 END;
11091 END;

306
DRAFT ANSI C12.19-2012

11092 TYPE WAVEFORM_LIST_STATUS_BFLD = BIT FIELD OF UINT8


11093 ORDER : UINT(0..0);
11094 OVERFLOW_FLAG : BOOL(1);
11095 LIST_TYPE : UINT(2..2);
11096 BLOCK_INHIBIT_OVERFLOW_FLAG : BOOL(3);
11097 INTERVAL_ORDER : UINT(4..4);
11098 ACTIVE_MODE_FLAG : BOOL(5);
11099 TEST_MODE : UINT(6..6);
11100 FILLER : FILL(7..7);
11101 END;

11102 TYPE WAVEFORM_LIST_STATUS_RCD = PACKED RECORD


11103 STATUS_FLAGS : WAVEFORM_LIST_STATUS_BFLD;
11104 NBR_VALID_ENTRIES : UINT16;
11105 LAST_ENTRY_ELEMENT : UINT16;
11106 LAST_ENTRY_SEQ_NBR : UINT32;
11107 NBR_UNREAD_ENTRIES : UINT16;
11108 NBR_VALID_INT : UINT16;
11109 END;

11110 Decade 15 Element Descriptions

11111 Identifier Value Definition


11112 TD_SAMPLE_FORMAT_RCD A generalized data type used to express the format to be used
11113 for time-domain waveform data representation in Quality-of-
11114 service Tables.
11115 Redefines: LP_DATA_SET1_TBL.INT_FMT1_RCD.

11116 ITEM The data type to use per QUALITY_CONTROL_TBL.


11117 TD_SAMPLES_FORMAT_CODE.

11118 FD_SAMPLE_FORMAT_RCD A generalized data type used to express the format to be used
11119 for frequency-domain waveform transformed data
11120 representation in Quality-of-service Tables.
11121 Redefines: LP_DATA_SET1_TBL.INT_FMT1_RCD.

11122 ITEM The data type to use per QUALITY_CONTROL_TBL.


11123 FD_SAMPLES_FORMAT_CODE.

11124 WAVEFORM_LIST_STATUS_BFLD The generic waveform capture list management bit field.
11125 Redefines: LP_STATUS_TBL.LP_SET_STATUS_BFLD.

11126 ORDER Alias: BLOCK_ORDER.


11127 0 Blocks of waveform data are transported in ascending order
11128 (N is older than N + 1).
11129 1 Blocks of waveform data are transported in descending order
11130 (N is newer than N + 1).

11131 OVERFLOW_FLAG FALSE Overflow has not occurred.


11132 TRUE Overflow has occurred.
11133 An attempt was made to enter an interval in a new data block
11134 such that the number of unread blocks exceeded the actual
11135 number of possible blocks in waveform table storage.

Tables / Decade 15: Quality-of-service 307


DRAFT ANSI C12.19-2012

11136 LIST_TYPE Alias: LIST_TYPE_FLAG.


11137 0 FIFO (First-In, First-Out) waveform storage.
11138 1 Circular list waveform storage.

11139 BLOCK_INHIBIT_OVERFLOW_FLAG
11140 FALSE End Device is not inhibiting waveform capture once an
11141 overflow occurs.
11142 TRUE End Device inhibits waveform capture once an overflow
11143 occurs.

11144 INTERVAL_ORDER 0 Ascending.


11145 Samples in each block of waveform data are transported in
11146 ascending order (sample N is older or lower ordinal position
11147 than sample N + 1).
11148 1 Descending.
11149 Samples in each block of waveform data are transported in
11150 descending order (sample N is newer or higher ordinal
11151 position than sample N + 1).

11152 ACTIVE_MODE_FLAG FALSE The waveform recorder table is not enabled.


11153 TRUE The waveform recorder table is enabled.

11154 TEST_MODE 0 The waveform recorder is set up for normal mode.


11155 1 The waveform recorder is set up for test mode.

11156 WAVEFORM_LIST_STATUS_RCD The generic waveform capture list status management packed
11157 record.
11158 Redefines: LP_STATUS_TBL.LP_SET_STATUS_RCD.
11159 Accessibility=“READONLY”.
11160 Atomic=”TRUE”.

11161 STATUS_FLAGS See WAVEFORM_LIST_STATUS_BFLD.

11162 NBR_VALID_ENTRIES 0..65535 Number of valid waveform data blocks in the associated table.
11163 The range is zero (0), to mean no data blocks in the table, to
11164 the actual dimension of the number of waveform data blocks.
11165 The block is considered valid when at least one sample is
11166 written.

11167 LAST_ENTRY_ELEMENT 0..65535 The array element of the newest valid data block in the
11168 waveform data array. This field is valid only if
11169 NBR_VALID_ENTRIES is greater than zero.(0).

11170 LAST_ENTRY_SEQ_NBR 0..4294967295 The sequence number of the last element


11171 (.LAST_ENTRY_ELEMENT) in the waveform data array.

11172 NBR_UNREAD_ENTRIES 0..65535 The number of data blocks that have not been read. This
11173 number is only updated through a procedure.

11174 NBR_VALID_INT 0..65535 Number of valid samples stored in the most current block
11175 array. The range is zero (0), to mean no data in the array, to
11176 the actual dimension of the number of possible entries per
11177 block.

308
DRAFT ANSI C12.19-2012

11178 9.16.1 Table 150 Quality-of-service Dimension Limits Table

11179 Table 150 Data Description

11180 This Table defines the maximum dimensions and limits for the Quality-of-service Decade.

11181 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

11182 Table 150 Type Definitions

11183 TYPE QS_FEATURES_BFLD = BIT FIELD OF UINT32


11184 INHIBIT_OVF_QS_LOG_FLAG : BOOL(0);
11185 NOTIFY_OVF_QS_LOG_FLAG : BOOL(1);
11186 INHIBIT_OVF_TD_ASYNC_FLAG : BOOL(2);
11187 NOTIFY_OVF_TD_ASYNC_FLAG : BOOL(3);
11188 TD_SCALAR_DIVISOR_FLAG : BOOL(4);
11189 INHIBIT_OVF_FD_ASYNC_FLAG : BOOL(5);
11190 NOTIFY_OVF_FD_ASYNC_FLAG : BOOL(6);
11191 SCALAR_DIVISOR_FD_ASYNC_FLAG : BOOL(7);
11192 INHIBIT_OVF_TD_PERIODIC_FLAG : BOOL(8);
11193 NOTIFY_OVF_TD_PERIODIC_FLAG : BOOL(9);
11194 SCALAR_DIVISOR_TD_PERIODIC_FLAG : BOOL(10);
11195 INHIBIT_OVF_FD_PERIODIC_FLAG : BOOL(11);
11196 NOTIFY_OVF_FD_PERIODIC_FLAG : BOOL(12);
11197 SCALAR_DIVISOR_FD_PERIODIC_FLAG : BOOL(13);
11198 REPEAT_TD_FLAG : BOOL(14);
11199 REPEAT_FD_FLAG : BOOL(15);
11200 FD_COMPLEX_FLAG : BOOL(16);
11201 FD_PHASOR_FLAG : BOOL(17);
11202 QUALITY_RESET_CTR_FLAG : BOOL(18);
11203 INCIDENT_SORTABLE_FLAG : BOOL(19);
11204 COMMON_SAMPLING_RATE_FLAG : BOOL(20);
11205 COMMON_NBR_OF_SAMPLES_FLAG : BOOL(21);
11206 INTERHARMONICS_FLAG : BOOL(22);
11207 FILLER : FILL(23..31);
11208 END;

11209 TYPE QS_LIMITS_RCD = PACKED RECORD


11210 FEATURES : QS_FEATURES_BFLD;
11211 NBR_OF_EVENT_IDS : UINT16;
11212 NBR_OF_EVENTS : UINT16;
11213 NBR_OF_INCIDENTS : UINT16;
11214 NBR_OF_COINCIDENT_VALUES : UINT16;
11215 WAVEFORM_FORMATS : WAVEFORM_FORMATS_BFLD;
11216 TD_SAMPLING_RATE : NI_FMAT2;
11217 NBR_OF_TD_SAMPLES : UINT32;
11218 NBR_OF_TD_BLOCKS : UINT16;
11219 NBR_OF_TD_CHANNELS : UINT16;
11220 NBR_OF_TD_CHANNELS_PER_BLOCK : UINT16;
11221 NBR_OF_TD_SAMPLES_PER_BLOCK : UINT16;
11222 NBR_OF_TD_PREFETCH_SAMPLES : UINT32;
11223 FD_SAMPLING_RATE : NI_FMAT2;
11224 NBR_OF_FD_SAMPLES : UINT32;
11225 NBR_OF_SPECTRAL_COMPONENTS : UINT16;

Tables / Decade 15: Quality-of-service 309


Table 150 Quality-of-service Dimension Limits Table
DRAFT ANSI C12.19-2012

11226 NBR_OF_FD_BLOCKS : UINT16;


11227 NBR_OF_FD_CHANNELS : UINT16;
11228 NBR_OF_FD_CHANNELS_PER_BLOCK : UINT16;
11229 NBR_OF_FD_SPECTRA_PER_BLOCK : UINT16;
11230 NBR_OF_FD_PREFETCH_SAMPLES : UINT32;
11231 LABEL_LENGTH : UINT8;
11232 END;

11233 TABLE 150 DIM_QUALITY_OF_SERVICE_TBL = QS_LIMITS_RCD;

11234 Table 150 Element Descriptions

11235 Identifier Value Definition


11236 QS_FEATURES_BFLD This bit field provides indications about the End Device
11237 maximum waveform capture capabilities.

11238 INHIBIT_OVF_QS_LOG_FLAG
11239 FALSE End Device is not capable of inhibiting block overflow on
11240 QUALITY_LOG_TBL.
11241 TRUE End Device is capable of inhibiting block overflow on
11242 QUALITY_LOG_TBL.

11243 NOTIFY_OVF_QS_LOG_FLAG This is a notification capability indication for block overflow


11244 on QUALITY_LOG_TBL. When this capability is available
11245 and it is enabled, then the End Device shall utilize the
11246 appropriate notification mechanism to inform a remote system
11247 about the QUALITY_LOG_TBL block overflow.
11248 FALSE End Device is not capable of notifying a remote system about
11249 block overflows of QUALITY_LOG_TBL.
11250 TRUE End Device is capable of notifying a remote system about
11251 block overflows of QUALITY_LOG_TBL.

11252 INHIBIT_OVF_TD_ASYNC_FLAG
11253 FALSE End Device is not capable of inhibiting block overflow on
11254 TD_ASYNC_TBL.
11255 TRUE End Device is capable of inhibiting block overflow on
11256 TD_ASYNC_TBL.

11257 NOTIFY_OVF_TD_ASYNC_FLAG This is a notification capability indication for block overflow


11258 on TD_ASYNC_TBL. When this capability is available and it
11259 is enabled, then the End Device shall utilize the appropriate
11260 notification mechanism of the communication protocol to
11261 inform a remote system about the TD_ASYNC_TBL block
11262 overflow.
11263 FALSE End Device is not capable of notifying a remote system about
11264 block overflows of TD_ASYNC_TBL.
11265 TRUE End Device is capable of notifying a remote system about
11266 block overflows of TD_ASYNC_TBL.

11267 TD_SCALAR_DIVISOR_FLAG
11268 FALSE End Device is not capable of having scalars and divisors
11269 associated with TD_ASYNC_TBL waveform data.
11270 TRUE End Device is capable of having scalars and divisors
11271 associated with TD_ASYNC_TBL waveform data.

310
DRAFT ANSI C12.19-2012

11272 INHIBIT_OVF_FD_ASYNC_FLAG
11273 FALSE End Device is not capable of inhibiting block overflow on
11274 FD_ASYNC_TBL.
11275 TRUE End Device is capable of inhibiting block overflow on
11276 FD_ASYNC_TBL.

11277 NOTIFY_OVF_FD_ASYNC_FLAG This is a notification capability indication for block overflow


11278 on FD_ASYNC_TBL. When this capability is available and it
11279 is enabled, then the End Device shall utilize the appropriate
11280 notification mechanism of the communication protocol to
11281 inform a remote system about the FD_ASYNC_TBL block
11282 overflow.
11283 FALSE End Device is not capable of notifying a remote system about
11284 block overflows of FD_ASYNC_TBL.
11285 TRUE End Device is capable of notifying a remote system about
11286 block overflows of FD_ASYNC_TBL.

11287 SCALAR_DIVISOR_FD_ASYNC_FLAG
11288 FALSE End Device is not capable of having scalars and divisors
11289 associated with FD_ASYNC_TBL waveform data.
11290 TRUE End Device is capable of having scalars and divisors
11291 associated with FD_ASYNC_TBL waveform data.

11292 INHIBIT_OVF_TD_PERIODIC_FLAG
11293 FALSE End Device is not capable of inhibiting block overflow on
11294 TIME_DOMAIN_TBL.
11295 TRUE End Device is capable of inhibiting block overflow on
11296 TIME_DOMAIN_TBL.

11297 NOTIFY_OVF_TD_PERIODIC_FLAG This is a notification capability indication for block overflow


11298 on TIME_DOMAIN_TBL. When this capability is available
11299 and it is enabled, then the End Device shall utilize the
11300 appropriate notification mechanism of the communication
11301 protocol to inform a remote system about the
11302 TIME_DOMAIN_TBL block overflow.
11303 FALSE End Device is not capable of notifying a remote system about
11304 block overflows of TIME_DOMAIN_TBL.
11305 TRUE End Device is capable of notifying a C12.19 remote system
11306 about block overflows of TIME_DOMAIN_TBL.

11307 SCALAR_DIVISOR_TD_PERIODIC_FLAG
11308 FALSE End Device is not capable of having scalars and divisors
11309 associated with TIME_DOMAIN_TBL waveform data.
11310 TRUE End Device is capable of having scalars and divisors
11311 associated with TIME_DOMAIN_TBL waveform data.

11312 INHIBIT_OVF_FD_PERIODIC_FLAG
11313 FALSE End Device is not capable of inhibiting block overflow on
11314 FREQUENCY_DOMAIN_TBL.
11315 TRUE End Device is capable of inhibiting block overflow on
11316 FREQUENCY_DOMAIN_TBL.

11317 NOTIFY_OVF_FD_PERIODIC_FLAG This is a notification capability indication for block overflow


11318 on FREQUENCY_DOMAIN_TBL. When this capability is
11319 available and it is enabled, then the End Device shall utilize
Tables / Decade 15: Quality-of-service 311
Table 150 Quality-of-service Dimension Limits Table
DRAFT ANSI C12.19-2012

11320 the appropriate notification mechanism of the communication


11321 protocol to inform a remote system about the
11322 FREQUENCY_DOMAIN_TBL block overflow.
11323 FALSE End Device is not capable of notifying a remote system about
11324 block overflows of FREQUENCY_DOMAIN_TBL.
11325 TRUE End Device is capable of notifying a remote system about
11326 block overflows of FREQUENCY_DOMAIN_TBL.

11327 SCALAR_DIVISOR_FD_PERIODIC_FLAG
11328 FALSE End Device is not capable of having scalars and divisors
11329 associated with FREQUENCY_DOMAIN_TBL waveform
11330 data.
11331 TRUE End Device is capable of having scalars and divisors
11332 associated with FREQUENCY_DOMAIN_TBL waveform
11333 data.

11334 REPEAT_TD_FLAG An indication if the End Device can perform repeated and
11335 counted time-domain waveform capture following a Quality-
11336 of-service event.
11337 FALSE End Device is not capable of repeated counted waveform
11338 captures.
11339 TRUE End Device is capable of repeated counted waveform captures.

11340 REPEAT_FD_FLAG An indication if the End Device can perform counted repeated
11341 waveform transform (frequency domain) captures following a
11342 Quality-of-service event.
11343 FALSE End Device is not capable of repeated counted waveform
11344 transform (frequency domain) captures.
11345 TRUE End Device is capable of repeated counted waveform
11346 transform (frequency domain) captures.

11347 FD_COMPLEX_FLAG An indication if the End Device is capable of delivering


11348 frequency-domain spectral analysis encoded complex
11349 elements (the mathematical real and imaginary spectral
11350 components).
11351 FALSE End Device is not capable of reporting spectral components as
11352 complex elements.
11353 TRUE End Device is capable of reporting spectral components as
11354 complex elements.

11355 FD_PHASOR_FLAG A flag that indicates whether the End Device is capable of
11356 delivering frequency-domain spectral analysis encoded as
11357 spectral component phase angle and related magnitude pairs as
11358 elements.
11359 FALSE End Device is not capable of reporting spectral components as
11360 phase angles and magnitude.
11361 TRUE End Device is capable of reporting spectral components as
11362 phase angles and magnitude.

11363 QUALITY_RESET_CTR_FLAG An indication of whether or not counting resets of quality


11364 counters is possible.
11365 FALSE End Device is not capable of counting resets of quality
11366 counters.
11367 TRUE End Device is capable of counting resets of quality counters.

312
DRAFT ANSI C12.19-2012

11368 INCIDENT_SORTABLE_FLAG An indication of a capability to sort the Quality-of-service


11369 incidents according to a user specified priority. See
11370 QUALITY_CONTROL_TBL.
11371 FALSE End Device cannot be programmed to sort incidents by
11372 criteria.
11373 TRUE End Device can be programmed to sort incidents by criteria.

11374 COMMON_SAMPLING_RATE_FLAG An indication of a capability to provide a different sampling


11375 rate for waveform captures on a per-event type basis.
11376 FALSE End Device cannot be programmed with different sampling
11377 rates for the purpose of waveform capture. All Quality-of-
11378 service events shall be captured at the same sampling rate.
11379 TRUE End Device can be programmed with different sampling rates
11380 for the purpose of waveform capture. Each Quality-of-service
11381 event may be captured at a different sampling rate.

11382 COMMON_NBR_OF_SAMPLES_FLAG An indication of a capability to collect a different number of


11383 samples for waveform captures on a per-event type basis.
11384 FALSE End Device cannot be programmed with different numbers of
11385 samples for the purpose of waveform capture. All Quality-of-
11386 service events shall capture the same number of samples.
11387 TRUE End Device can be programmed with different numbers of
11388 samples for the purpose of waveform capture. All Quality-of-
11389 service events can capture different numbers of samples.

11390 INTERHARMONICS_FLAG An indication of a capability to store interharmonic spectral


11391 components.
11392 FALSE The End Device is not capable of recording interharmonics in
11393 the frequency domain. All spectral components recorded are
11394 an integer multiple of the fundamental frequency.
11395 TRUE The End Device is capable of recording interharmonics in the
11396 frequency domain. All spectral components recorded are
11397 discrete frequencies.

11398 WAVEFORM_FORMATS_BFLD This set of Booleans specifies the format(s) acceptable for use
11399 in waveform capture tables.
11400 Redefines: DIM_LP_TBL.LP_FMATS_BFLD.

11401 INV_UINT8_FLAG FALSE UINT8 format for waveform capture is not supported by this
11402 End Device.
11403 TRUE UINT8 format for waveform capture is supported by this End
11404 Device.

11405 INV_UINT16_FLAG FALSE UINT16 format for waveform capture is not supported by this
11406 End Device.
11407 TRUE UINT16 format for waveform capture is supported by this
11408 End Device.

11409 INV_UINT32_FLAG FALSE UINT32 format for waveform capture is not supported by this
11410 End Device.
11411 TRUE UINT32 format for waveform capture is supported by this
11412 End Device.

11413 INV_INT8_FLAG FALSE INT8 format for waveform capture is not supported by this
11414 End Device.
Tables / Decade 15: Quality-of-service 313
Table 150 Quality-of-service Dimension Limits Table
DRAFT ANSI C12.19-2012

11415 TRUE INT8 format for waveform capture is supported by this End
11416 Device.

11417 INV_INT16_FLAG FALSE INT16 format for waveform capture is not supported by this
11418 End Device.
11419 TRUE INT16 format for waveform capture is supported by this End
11420 Device.

11421 INV_INT32_FLAG FALSE INT32 format for waveform capture is not supported by this
11422 End Device.
11423 TRUE INT32 format for waveform capture is supported by this End
11424 Device.

11425 INV_NI_FMAT1_FLAG FALSE NI_FMAT1 format for waveform capture is not supported by
11426 this End Device.
11427 TRUE NI_FMAT1 format for waveform capture is supported by this
11428 End Device.

11429 INV_NI_FMAT2_FLAG FALSE NI_FMAT2 format for waveform capture is not supported by
11430 this End Device.
11431 TRUE NI_FMAT2 format for waveform capture is supported by this
11432 End Device.

11433 QS_LIMITS_RCD This packed record defines the End Device maximum Quality-
11434 of-service operational limits.

11435 FEATURES See QS_FEATURES_BFLD.

11436 NBR_OF_EVENT_IDS 0..65535 Maximum total number of unique event identifier descriptors
11437 supported by this End Device.

11438 NBR_OF_EVENTS 0..65535 Maximum number of Quality-of-service events that the End
11439 Device can record internally.

11440 NBR_OF_INCIDENTS 0..65535 Maximum number of service quality incident reports recorded
11441 in QUALITY_INCIDENTS_TBL.

11442 NBR_OF_COINCIDENT_VALUES
11443 0..65535 Maximum number of coincidental data sources that can be
11444 bound to any one Quality-of-service event recorded.

11445 WAVEFORM_FORMATS See WAVEFORM_FORMATS_BFLD.

11446 TD_SAMPLING_RATE Largest possible sampling rate, in hertz (Hz), supported by this
11447 End Device when capturing time-domain waveform data.

11448 NBR_OF_TD_SAMPLES 0..4294967295 Largest possible number of data samples that can be collected
11449 in one waveform capture by this End Device when capturing
11450 time-domain waveform data.

11451 NBR_OF_TD_BLOCKS 0..65535 Maximum number of time-domain waveform blocks that the
11452 End Device can capture in TD_ASYNC_TBL.

314
DRAFT ANSI C12.19-2012

11453 NBR_OF_TD_CHANNELS Maximum number of time-domain waveform channels


11454 (independent sources) that the End Device can capture per
11455 Quality-of-service event.
11456 0 End Device is not capable of capturing time-domain
11457 waveforms.
11458 1..65535 Number of channels the End Device is capable of capturing in
11459 time-domain waveforms.

11460 NBR_OF_TD_CHANNELS_PER_BLOCK
11461 0..65535 Maximum number of time-domain waveform channels
11462 (independent sources) that the End Device can capture per
11463 Quality-of-service data block. This value shall be ignored if
11464 NBR_OF_TD_CHANNELS == 0. Otherwise 0 <
11465 NBR_OF_TD_CHANNELS_PER_BLOCK <=
11466 NBR_OF_TD_CHANNELS.

11467 NBR_OF_TD_SAMPLES_PER_BLOCK
11468 0..65535 Maximum number of time-domain waveform samples that the
11469 End Device can capture per Quality-of-service data block per
11470 channel.

11471 NBR_OF_TD_PREFETCH_SAMPLES
11472 0..4294967295 Maximum number of samples that the End Device can capture
11473 continuously just prior to the asynchronous event that
11474 triggered a waveform capture.

11475 FD_SAMPLING_RATE Largest possible sampling rate, in hertz (Hz), supported by this
11476 End Device when transforming time-domain waveforms to
11477 frequency-domain data.

11478 NBR_OF_FD_SAMPLES 0..4294967295 Largest possible number of data samples that can be collected
11479 in one waveform capture by this End Device when capturing
11480 frequency-domain waveform data.

11481 NBR_OF_SPECTRAL_COMPONENTS
11482 0..65535 Largest possible number spectral components that can be
11483 collected in one spectral capture by this End Device when
11484 capturing frequency-domain data.

11485 NBR_OF_FD_BLOCKS 0..65535 Maximum number of frequency-domain blocks that the End
11486 Device can capture in FD_ASYNC_TBL.

11487 NBR_OF_FD_CHANNELS Maximum number of frequency-domain channels


11488 (independent sources) that the End Device can capture per
11489 Quality-of-service event.
11490 0 End Device is not capable of capturing frequency-domain data
11491 blocks.
11492 1..65535 End Device is capable of capturing frequency-domain data
11493 blocks.

11494

11495 NBR_OF_FD_CHANNELS_PER_BLOCK

Tables / Decade 15: Quality-of-service 315


Table 150 Quality-of-service Dimension Limits Table
DRAFT ANSI C12.19-2012

11496 0..65535 Maximum number of frequency-domain channels


11497 (independent sources) that the End Device can capture per
11498 Quality-of-service data block. This value shall be ignored if
11499 NBR_OF_FD_CHANNELS == 0. Otherwise 0 <
11500 NBR_OF_FD_CHANNELS_PER_BLOCK <=
11501 NBR_OF_FD_CHANNELS.

11502 NBR_OF_FD_SPECTRA_PER_BLOCK
11503 0..65535 Maximum number of frequency-domain spectral components
11504 that the End Device reports per Quality-of-service data block
11505 per channel. This value shall be equal to the number of signal
11506 spectral components desired + 1. Although this value is
11507 numerically limited by the defining unsigned integer type,
11508 practically, the maximum spectral component possible shall be
11509 limited by the Nyquist sampling frequency defined by
11510 (sampling frequency / 2) in hertz (Hz). This will avoid the
11511 appearance of false aliases in the discrete Fourier transform of
11512 the waveform.

11513 NBR_OF_FD_PREFETCH_SAMPLES
11514 0..4294967295 Maximum number of samples that the End Device can capture
11515 continuously just prior to the asynchronous event that
11516 triggered a frequency-domain spectral capture.

11517 LABEL_LENGTH 0..255 The maximum number of characters that can be used to label
11518 (name) a single Quality-of-service event generation rule.

316
DRAFT ANSI C12.19-2012

11519 9.16.2 Table 151 Actual Quality-of-Service Limiting Table

11520 Table 151 Data Description

11521 This Table defines the actual dimensions and limits for the Quality-of-service Decade.

11522 Global Default Table Property Overrides: Role=“ACTUAL”

11523 Table 151 Type Definitions

11524 TABLE 151 ACT_QUALITY_OF_SERVICE_TBL = QS_LIMITS_RCD;

11525 Table 151 Element Descriptions

11526 Identifier Value Definition


11527 QS_FEATURES_BFLD This bit field provides indications about the End Device
11528 waveform capture actual capabilities.
11529 Redefines: DIM_QUALITY_OF_SERVICE_TBL.
11530 QS_FEATURES_BFLD.

11531 INHIBIT_OVF_QS_LOG_FLAG
11532 FALSE End Device is not inhibiting block overflow on
11533 QUALITY_LOG_TBL.
11534 TRUE End Device is inhibiting block overflow on
11535 QUALITY_LOG_TBL.

11536 NOTIFY_OVF_QS_LOG_FLAG This is a notification setting indication for block overflow of


11537 QUALITY_LOG_TBL. When this capability is enabled, the
11538 End Device shall utilize the appropriate notification
11539 mechanism of the communication protocol to inform a remote
11540 system about the QUALITY_LOG_TBL block overflow.
11541 FALSE End Device shall not notify a remote system about block
11542 overflows of QUALITY_LOG_TBL.
11543 TRUE End Device shall notify a remote system about block
11544 overflows of QUALITY_LOG_TBL.

11545 INHIBIT_OVF_TD_ASYNC_FLAG
11546 FALSE End Device is not inhibiting block overflow on
11547 TD_ASYNC_TBL.
11548 TRUE End Device is inhibiting block overflow on
11549 TD_ASYNC_TBL.

11550 NOTIFY_OVF_TD_ASYNC_FLAG This is a notification setting indication for block overflow of


11551 TD_ASYNC_TBL. When this capability is enabled, the End
11552 Device shall utilize the appropriate notification mechanism of
11553 the communication protocol to inform a remote system about
11554 the TD_ASYNC_TBL block overflow.
11555 FALSE End Device shall not notify a remote system about block
11556 overflows of TD_ASYNC_TBL.
11557 TRUE End Device shall notify a remote system about block
11558 overflows of TD_ASYNC_TBL.

11559 TD_SCALAR_DIVISOR_FLAG
Tables / Decade 15: Quality-of-service 317
Table 151 Actual Quality-of-Service Limiting Table
DRAFT ANSI C12.19-2012

11560 FALSE End Device does not have scalars and divisors associated with
11561 TD_ASYNC_TBL waveform data.
11562 TRUE End Device has scalars and divisors associated with
11563 TD_ASYNC_TBL waveform data.

11564 INHIBIT_OVF_FD_ASYNC_FLAG
11565 FALSE End Device is not inhibiting block overflow on
11566 FD_ASYNC_TBL.
11567 TRUE End Device is inhibiting block overflow on
11568 FD_ASYNC_TBL.

11569 NOTIFY_OVF_FD_ASYNC_FLAG This is a notification setting indication for block overflow of


11570 FD_ASYNC_TBL. When this capability is enabled, the End
11571 Device shall utilize the appropriate notification mechanism of
11572 the communication protocol to inform a remote system about
11573 the FD_ASYNC_TBL block overflow.
11574 FALSE End Device shall not notify a remote system about block
11575 overflows of FD_ASYNC_TBL.
11576 TRUE End Device shall notify a remote system about block
11577 overflows of FD_ASYNC_TBL.

11578 SCALAR_DIVISOR_FD_ASYNC_FLAG
11579 FALSE End Device does not have scalars and divisors associated with
11580 FD_ASYNC_TBL waveform data.
11581 TRUE End Device has scalars and divisors associated with
11582 FD_ASYNC_TBL waveform data.

11583 INHIBIT_OVF_TD_PERIODIC_FLAG
11584 FALSE End Device is not inhibiting block overflow on
11585 TIME_DOMAIN_TBL.
11586 TRUE End Device is inhibiting block overflow on
11587 TIME_DOMAIN_TBL.

11588 NOTIFY_OVF_TD_PERIODIC_FLAG This is a notification setting indication for block overflow of


11589 TIME_DOMAIN_TBL. When this capability is enabled, the
11590 End Device shall utilize the appropriate notification
11591 mechanism of the communication protocol to inform a remote
11592 system about the TIME_DOMAIN_TBL block overflow.
11593 FALSE End Device shall not notify a remote system about block
11594 overflows of TIME_DOMAIN_TBL.
11595 TRUE End Device shall notify a remote system about block
11596 overflows of TIME_DOMAIN_TBL.

11597 SCALAR_DIVISOR_TD_PERIODIC_FLAG
11598 FALSE End Device does not have scalars and divisors associated with
11599 TIME_DOMAIN_TBL waveform data.
11600 TRUE End Device has scalars and divisors associated with
11601 TIME_DOMAIN_TBL waveform data.

11602 INHIBIT_OVF_FD_PERIODIC_FLAG
11603 FALSE End Device is not inhibiting block overflow on
11604 FREQUENCY_DOMAIN_TBL.
11605 TRUE End Device is inhibiting block overflow on
11606 FREQUENCY_DOMAIN_TBL.

318
DRAFT ANSI C12.19-2012

11607 NOTIFY_OVF_FD_PERIODIC_FLAG This is a notification setting indication for block overflow on


11608 FREQUENCY_DOMAIN_TBL. When this capability is
11609 enabled, the End Device shall utilize the appropriate
11610 notification mechanism of the communication protocol to
11611 inform a remote system about the
11612 FREQUENCY_DOMAIN_TBL block overflow.
11613 FALSE End Device shall not notify a remote system about block
11614 overflows of FREQUENCY_DOMAIN_TBL.
11615 TRUE End Device shall notify a remote system about block
11616 overflows of FREQUENCY_DOMAIN_TBL.

11617 SCALAR_DIVISOR_FD_PERIODIC_FLAG
11618 FALSE End Device does not have scalars and divisors associated with
11619 FREQUENCY_DOMAIN_TBL waveform data.
11620 TRUE End Device has scalars and divisors associated with
11621 FREQUENCY_DOMAIN_TBL waveform data.

11622 REPEAT_TD_FLAG An indication of whether or not the End Device performs


11623 counted, repeated, time-domain waveform capture following a
11624 Quality-of-service event.
11625 FALSE End Device is not repeating counted waveform captures.
11626 TRUE End Device is repeating counted waveform captures.

11627 REPEAT_FD_FLAG An indication of whether or not the End Device performs


11628 counted, repeated, frequency-domain waveform transforms
11629 capture following a Quality-of-service event.
11630 FALSE End Device is not repeating counted waveform transform
11631 captures.
11632 TRUE End Device is repeating counted waveform transform
11633 captures.

11634 FD_COMPLEX_FLAG An indication of whether or not the End Device is enable to


11635 deliver frequency-domain spectral analysis encoded complex
11636 elements (the mathematical real and imaginary spectral
11637 components).
11638 FALSE End Device is not enabled to report spectral components as
11639 complex elements.
11640 TRUE End Device is enabled to report spectral components as
11641 complex elements.

11642 FD_PHASOR_FLAG An indication of whether or not the End Device is enabled to


11643 deliver frequency-domain spectral analysis encoded as
11644 spectral component phase angle and related magnitude pairs as
11645 elements.
11646 FALSE End Device is not enabled to report spectral components as
11647 phase angles and magnitude.
11648 TRUE End Device is enabled to report spectral components as phase
11649 angles and magnitude.

11650 QUALITY_RESET_CTR_FLAG An indication that counting of quality counter resets is


11651 enabled.
11652 FALSE End Device is not counting quality counter resets.
11653 TRUE End Device is counting quality counter resets.

Tables / Decade 15: Quality-of-service 319


Table 151 Actual Quality-of-Service Limiting Table
DRAFT ANSI C12.19-2012

11654 INCIDENT_SORTABLE_FLAG An indication of whether the capability to sort the Quality-of-


11655 service incidents according to a user-specified priority is
11656 enabled or disabled. See QUALITY_CONTROL_TBL.
11657 FALSE End Device has not been programmed to sort incidents. The
11658 user shall not assume a sorting order.
11659 TRUE End Device has been programmed to sort incidents. The user
11660 shall assume the user-programmed sorting order.

11661 COMMON_SAMPLING_RATE_FLAG An indication of whether or not the End Device is


11662 programmed to allow different sampling rates for waveform
11663 captures on a per-event-type basis.
11664 FALSE End Device is programmed to allow different sampling rates
11665 for the purpose of waveform capture. All Quality-of-service
11666 events may be captured at the different sampling rates.
11667 TRUE End Device is not programmed to allow different sampling
11668 rates for the purpose of waveform capture. All Quality-of-
11669 service events shall be captured at the same sampling rate.

11670 COMMON_NBR_OF_SAMPLES_FLAG An indication of whether or not to collect a different number


11671 of samples for waveform captures on a per-event type basis.
11672 FALSE End Device does not use a common number of samples for the
11673 purpose of waveform capture. Quality-of-service records may
11674 capture a different number of samples.
11675 TRUE End Device uses a common number of samples for the
11676 purpose of waveform capture. All quality records shall capture
11677 the same number of samples.

11678 INTERHARMONICS_FLAG An indication of whether or not to store interharmonic spectral


11679 components.
11680 FALSE The End Device is not recording interharmonics in the
11681 frequency domain. All spectral components recorded are an
11682 integer multiple of the fundamental frequency.
11683 TRUE The End Device is recording interharmonics in the frequency
11684 domain. There is no assumed relationship (frequency-wise)
11685 among any spectral components.

11686 WAVEFORM_FORMATS_BFLD This set of Booleans specifies the format(s) acceptable for use
11687 in waveform capture tables.
11688 Redefines: DIM_QUALITY_OF_SERVICE_TBL.
11689 WAVEFORM_FORMATS_BFLD.

11690 INV_UINT8_FLAG FALSE UINT8 format for waveform capture is not used by this End
11691 Device.
11692 TRUE UINT8 format for waveform capture is used by this End
11693 Device.

11694 INV_UINT16_FLAG FALSE UINT16 format for waveform capture is not used by this End
11695 Device.
11696 TRUE UINT16 format for waveform capture is used by this End
11697 Device.

11698 INV_UINT32_FLAG FALSE UINT32 format for waveform capture is not used by this End
11699 Device.
11700 TRUE UINT32 format for waveform capture is used by this End
11701 Device.
320
DRAFT ANSI C12.19-2012

11702 INV_INT8_FLAG FALSE INT8 format for waveform capture is not used by this End
11703 Device.
11704 TRUE INT8 format for waveform capture is used by this End
11705 Device.

11706 INV_INT16_FLAG FALSE INT16 format for waveform capture is not used by this End
11707 Device.
11708 TRUE INT16 format for waveform capture is used by this End
11709 Device.

11710 INV_INT32_FLAG FALSE INT32 format for waveform capture is not used by this End
11711 Device.
11712 TRUE INT32 format for waveform capture is used by this End
11713 Device.

11714 INV_NI_FMAT1_FLAG FALSE NI_FMAT1 format for waveform capture is not used by this
11715 End Device.
11716 TRUE NI_FMAT1 format for waveform capture is used by this End
11717 Device.

11718 INV_NI_FMAT2_FLAG FALSE NI_FMAT2 format for waveform capture is not used by this
11719 End Device.
11720 TRUE NI_FMAT2 format for waveform capture is used by this End
11721 Device.

11722 QS_LIMITS_RCD This packed record defines the End Device actual maximum
11723 Quality-of-service operational limits.
11724 Redefines: DIM_QUALITY_OF_SERVICE_TBL.
11725 QS_LIMITS_RCD.

11726 FEATURES See QS_FEATURES_BFLD.

11727 NBR_OF_EVENT_IDS 0..65535 Actual total number of unique event identifier descriptors
11728 supported by this End Device.

11729 NBR_OF_EVENTS 0..65535 Actual number of Quality-of-service events that the End
11730 Device can record internally.

11731 NBR_OF_INCIDENTS 0..65535 Actual number of Quality-of-service incident reports recorded


11732 in QUALITY_INCIDENTS_TBL.

11733 NBR_OF_COINCIDENT_VALUES
11734 0..65535 Actual number of coincidental data sources that are bound to
11735 any one Quality-of-service event recorded.

11736 WAVEFORM_FORMATS See WAVEFORM_FORMATS_BFLD.

11737 TD_SAMPLING_RATE Largest possible sampling rate, in hertz (Hz), used by this End
11738 Device when capturing time-domain waveform data.

11739 NBR_OF_TD_SAMPLES 0..4294967295 Actual largest possible number of data samples that shall be
11740 collected in one waveform capture by this End Device when
11741 capturing time-domain waveform data.

Tables / Decade 15: Quality-of-service 321


Table 151 Actual Quality-of-Service Limiting Table
DRAFT ANSI C12.19-2012

11742 NBR_OF_TD_BLOCKS 0..65535 Actual number of time-domain waveform blocks that the End
11743 Device can capture in TD_ASYNC_TBL.

11744 NBR_OF_TD_CHANNELS Actual maximum number of time-domain waveform channels


11745 (independent sources) that the End Device can capture per
11746 Quality-of-service event.
11747 0 End Device is not enabled to capture time-domain waveforms.
11748 1..65535 End Device is capturing time-domain waveforms up to this
11749 number of channels.

11750 NBR_OF_TD_CHANNELS_PER_BLOCK
11751 0..65535 Actual number of time-domain waveform channels
11752 (independent sources) that the End Device captures per
11753 Quality-of-service data block. This value shall be ignored if
11754 NBR_OF_TD_CHANNELS == 0. Otherwise 0 <
11755 NBR_OF_TD_CHANNELS_PER_BLOCK <=
11756 NBR_OF_TD_CHANNELS.

11757 NBR_OF_TD_SAMPLES_PER_BLOCK
11758 0..65535 Actual number of time-domain waveform samples that the
11759 End Device can capture per Quality-of-service data block per
11760 channel.

11761 NBR_OF_TD_PREFETCH_SAMPLES
11762 0..4294967295 Actual maximum number of samples that the End Device can
11763 capture continuously just prior to the asynchronous event that
11764 triggered a waveform capture.

11765 FD_SAMPLING_RATE Largest possible sampling rate, in hertz (Hz), used by this End
11766 Device when transforming time-domain waveforms to
11767 frequency-domain data.

11768 NBR_OF_FD_SAMPLES 0..4294967295 Actual largest number of data samples that shall be collected
11769 in one waveform capture by this End Device when capturing
11770 frequency-domain waveform data.

11771 NBR_OF_SPECTRAL_COMPONENTS
11772 0..65535 Actual largest possible number of spectral components that
11773 shall be collected in one spectral capture by this End Device
11774 when capturing frequency-domain data.

11775 NBR_OF_FD_BLOCKS 0..65535 Actual number of frequency-domain waveform blocks that the
11776 End Device can capture in FD_ASYNC_TBL.

11777 NBR_OF_FD_CHANNELS Actual maximum number of frequency-domain waveform


11778 channels (independent sources) that the End Device can
11779 capture per Quality-of-service event.
11780 0 End Device is not enabled to capture frequency-domain
11781 waveforms.
11782 1..65535 End Device is capturing frequency-domain waveforms up to
11783 this number of channels.

11784 NBR_OF_FD_CHANNELS_PER_BLOCK

322
DRAFT ANSI C12.19-2012

11785 0..65535 Actual number of frequency-domain waveform channels


11786 (independent sources) that the End Device captures per
11787 Quality-of-service data block. This value shall be ignored if
11788 NBR_OF_FD_CHANNELS == 0. Otherwise 0 <
11789 NBR_OF_FD_CHANNELS_PER_BLOCK <=
11790 NBR_OF_FD_CHANNELS.

11791 NBR_OF_FD_SPECTRA_PER_BLOCK
11792 0..65535 Actual number of frequency-domain spectral components that
11793 the End Device reports per Quality-of-service data block per
11794 channel. This value shall be equal to the number of signal
11795 spectral components desired + 1. Although this value is
11796 numerically limited by the defining unsigned integer type,
11797 practically, the maximum spectral component possible shall be
11798 limited by the Nyquist frequency defined by (sampling
11799 frequency / 2) in hertz (Hz). This will avoid the appearance of
11800 false aliases in the discrete Fourier transform of the waveform.

11801 NBR_OF_FD_PREFETCH_SAMPLES
11802 0..4294967295 Actual maximum number of samples that the End Device can
11803 capture continuously just prior to the asynchronous event that
11804 triggered a frequency-domain capture.

11805 LABEL_LENGTH 0..255 The actual number of characters that are used to label (name) a
11806 single Quality-of-service event generation rule.

Tables / Decade 15: Quality-of-service 323


Table 151 Actual Quality-of-Service Limiting Table
DRAFT ANSI C12.19-2012

11807 9.16.3 Table 152 Quality-of-service Control Table

11808 Table 152 Data Description

11809 This Table provides selections of Quality-of-service sources and related thresholds for the reporting of Quality-of-
11810 service events and capture of waveforms.

11811 Global Default Table Property Overrides: Role=“CONTROL”

11812 Table 152 Type Definitions

11813 TYPE CAPTURE_CONTROL_BFLD = BIT FIELD OF UINT16


11814 IF GEN_CONFIG_TBL.STD_TBLS_USED[TD_ASYNC_TBL] THEN
11815 TD_FLAG : BOOL(0);
11816 END;
11817 IF GEN_CONFIG_TBL.STD_TBLS_USED[FD_ASYNC_TBL] THEN
11818 FD_FLAG : BOOL(1);
11819 END;
11820 REPORT_ON_EXIT_FLAG : BOOL(2);
11821 REPORT_ON_DETECT_FLAG : BOOL(3);
11822 COMPARE_SIGNED_FLAG : BOOL(4);
11823 COMPARE_PEAK_FLAG : BOOL(5);
11824 COMPARE_RMS_FLAG : BOOL(6);
11825 COMPARE_INCLUSIVE_FLAG : BOOL(7);
11826 REPEAT_FLAG : BOOL(8);
11827 VALUE_REPORT_CTRL : UINT(9..12);
11828 FILLER : FILL(13..15);
11829 END;

11830 TYPE NOMINAL_VALUE_RCD = PACKED RECORD


11831 NOMINAL_VALUE : NI_FMAT2;
11832 LOW_SET_POINT : NI_FMAT2;
11833 HIGH_SET_POINT : NI_FMAT2;
11834 END;

11835 TYPE WAVEFORM_CHANNEL_SOURCE_ID_RCD = PACKED RECORD


11836 SOURCE_ID : STD.SOURCE_SELECT_RCD;
11837 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.TD_SCALAR_DIVISOR_FLAG THEN
11838 SCALAR : UINT16;
11839 DIVISOR : UINT16;
11840 END;
11841 END;

11842 TYPE TD_CONTROL_RCD = PACKED RECORD


11843 TIME_CAPTURE_TYPE : UINT8;
11844 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.COMMON_SAMPLING_RATE_FLAG
11845 == FALSE THEN
11846 SAMPLING_RATE : NI_FMAT2;
11847 END;
11848 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.COMMON_NBR_OF_SAMPLES_FLAG
11849 == FALSE THEN
11850 NBR_OF_SAMPLES : UINT32;
11851 NBR_OF_PREFETCH_SAMPLES : UINT32;
11852 END;

324
DRAFT ANSI C12.19-2012

11853 NBR_OF_CHANNELS : UINT8;


11854 CHANNEL_SOURCE_ID :
11855 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
11856 NBR_OF_TD_CHANNELS] OF
11857 WAVEFORM_CHANNEL_SOURCE_ID_RCD;
11858 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.REPEAT_TD_FLAG THEN
11859 NBR_OF_WAVEFORM_REPEATS : UINT16;
11860 WAVEFORM_REPEAT_DELAY : HTIME;
11861 END;
11862 END;

11863 TYPE FD_CONTROL_RCD = PACKED RECORD


11864 FREQUENCY_CAPTURE_TYPE : UINT8;
11865 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.COMMON_SAMPLING_RATE_FLAG
11866 == FALSE THEN
11867 SAMPLING_RATE : NI_FMAT2;
11868 END;
11869 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.COMMON_NBR_OF_SAMPLES_FLAG
11870 == FALSE THEN
11871 NBR_OF_SAMPLES : UINT32;
11872 NBR_OF_PREFETCH_SAMPLES : UINT32;
11873 NBR_OF_SPECTRAL_COMPONENTS : UINT16;
11874 END;
11875 NBR_OF_CHANNELS : UINT8;
11876 CHANNEL_SOURCE_ID :
11877 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
11878 NBR_OF_FD_CHANNELS] OF
11879 WAVEFORM_CHANNEL_SOURCE_ID_RCD;
11880 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.REPEAT_FD_FLAG THEN
11881 NBR_OF_WAVEFORM_REPEATS : UINT16;
11882 WAVEFORM_REPEAT_DELAY : HTIME;
11883 END;
11884 DISCRETE_FREQUENCY_LIST :
11885 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
11886 NBR_OF_SPECTRAL_COMPONENTS] OF NI_FMAT2;
11887 END;

11888 TYPE QUALITY_DESC_RCD = PACKED RECORD


11889 QUALITY_DESC_NAME :
11890 STRING(ACT_QUALITY_OF_SERVICE_TBL.
11891 LABEL_LENGTH);
11892 SOURCE_ID : STD.SOURCE_SELECT_RCD;
11893 COINCIDENT_SOURCE_IDS :
11894 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
11895 NBR_OF_COINCIDENT_VALUES] OF
11896 STD.SOURCE_SELECT_RCD;
11897 COINCIDENT_SOURCE_ENABLE_FLAGS
11898 : SET ((ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_COINCIDENT_VALUES + 7)/8);
11899 CAPTURE_CONTROL : CAPTURE_CONTROL_BFLD;
11900 IF GEN_CONFIG_TBL.STD_TBLS_USED[TD_ASYNC_TBL] THEN
11901 TD_ASYNC_CONTROL : TD_CONTROL_RCD;
11902 END;
11903 IF GEN_CONFIG_TBL.STD_TBLS_USED[FD_ASYNC_TBL] THEN
11904 FD_ASYNC_CONTROL : FD_CONTROL_RCD;
11905 END;
11906 IF GEN_CONFIG_TBL.STD_TBLS_USED[TIME_DOMAIN_TBL] THEN
Tables / Decade 15: Quality-of-service 325
Table 152 Quality-of-service Control Table
DRAFT ANSI C12.19-2012

11907 TD_PERIODIC_INTERVAL : UINT32;


11908 TD_PERIODIC_WAVEFORM_CONTROL : TD_CONTROL_RCD;
11909 END;
11910 IF GEN_CONFIG_TBL.STD_TBLS_USED[FREQUENCY_DOMAIN_TBL] THEN
11911 FD_PERIODIC_INTERVAL : UINT32;
11912 FD_PERIODIC_WAVEFORM_CONTROL : FD_CONTROL_RCD;
11913 END;
11914 NOMINAL_POSITIVE_LIMITS : NOMINAL_VALUE_RCD;
11915 NOMINAL_NEGATIVE_LIMITS : NOMINAL_VALUE_RCD;
11916 MIN_DURATION : HTIME;
11917 EXCLUSION_DURATION : HTIME;
11918 EXCLUSION_CONDITIONS :
11919 SET((ACT_QUALITY_OF_SERVICE_TBL.
11920 NBR_OF_EVENT_IDS+7)/8);
11921 TRANSITION_CONDITIONS :
11922 SET((ACT_QUALITY_OF_SERVICE_TBL.
11923 NBR_OF_EVENT_IDS+7)/8);
11924 END;

11925 TYPE NOTIFY_OVERFLOW_CONTROL_RCD = PACKED RECORD


11926 IF GEN_CONFIG_TBL.STD_TBLS_USED[QUALITY_LOG_TBL] &&
11927 ACT_QUALITY_OF_SERVICE_TBL.FEATURES.NOTIFY_OVF_QS_LOG_FLAG THEN
11928 QS_LOG_CTRL : STD.LIST_OVERFLOW_CONTROL_RCD;
11929 END;
11930 IF GEN_CONFIG_TBL.STD_TBLS_USED[TD_ASYNC_TBL] &&
11931 ACT_QUALITY_OF_SERVICE_TBL.FEATURES.NOTIFY_OVF_TD_ASYNC_FLAG THEN
11932 TD_ASYNC_CTRL : STD.LIST_OVERFLOW_CONTROL_RCD;
11933 END;
11934 IF GEN_CONFIG_TBL.STD_TBLS_USED[FD_ASYNC_TBL] &&
11935 ACT_QUALITY_OF_SERVICE_TBL.FEATURES.NOTIFY_OVF_FD_ASYNC_FLAG THEN
11936 FD_ASYNC_CTRL : STD.LIST_OVERFLOW_CONTROL_RCD;
11937 END;
11938 IF GEN_CONFIG_TBL.STD_TBLS_USED[TIME_DOMAIN_TBL] &&
11939 ACT_QUALITY_OF_SERVICE_TBL.FEATURES.NOTIFY_OVF_TD_PERIODIC_FLAG THEN
11940 TD_PERIODIC_CTRL : STD.LIST_OVERFLOW_CONTROL_RCD;
11941 END;
11942 IF GEN_CONFIG_TBL.STD_TBLS_USED[FREQUENCY_DOMAIN_TBL] &&
11943 ACT_QUALITY_OF_SERVICE_TBL.FEATURES.NOTIFY_OVF_FD_PERIODIC_FLAG THEN
11944 FD_PERIODIC_CTRL : STD.LIST_OVERFLOW_CONTROL_RCD;
11945 END;
11946 END;

11947 TYPE QUALITY_CONTROL_RCD = PACKED RECORD


11948 IF GEN_CONFIG_TBL.STD_TBLS_USED[TD_ASYNC_TBL] ||
11949 GEN_CONFIG_TBL.STD_TBLS_USED[TIME_DOMAIN_TBL] THEN
11950 TD_SAMPLES_FORMAT_CODE : UINT8;
11951 IF ACT_QUALITY_OF_SERVICE_TBL. FEATURES.COMMON_SAMPLING_RATE_FLAG THEN
11952 TD_SAMPLING_RATE : NI_FMAT2;
11953 END;
11954 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.COMMON_NBR_OF_SAMPLES_FLAG THEN
11955 NBR_OF_TD_SAMPLES : UINT32;
11956 NBR_OF_TD_PREFETCH_SAMPLES : UINT32;
11957 END;
11958 END;
11959 IF GEN_CONFIG_TBL.STD_TBLS_USED[FD_ASYNC_TBL] ||
11960 GEN_CONFIG_TBL.STD_TBLS_USED[FREQUENCY_DOMAIN_TBL] THEN
326
DRAFT ANSI C12.19-2012

11961 FD_SAMPLES_FORMAT_CODE : UINT8;


11962 IF ACT_QUALITY_OF_SERVICE_TBL.
11963 FEATURES.COMMON_SAMPLING_RATE_FLAG THEN
11964 FD_SAMPLING_RATE : NI_FMAT2;
11965 END;
11966 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.COMMON_NBR_OF_SAMPLES_FLAG THEN
11967 NBR_OF_FD_SAMPLES : UINT32;
11968 NBR_OF_FD_PREFETCH_SAMPLES : UINT32;
11969 NBR_OF_SPECTRAL_COMPONENTS : UINT16;
11970 END;
11971 END;
11972 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.INCIDENT_SORTABLE_FLAG THEN
11973 INCIDENT_SORT_ORDER : UINT8;
11974 END;
11975 NOTIFY_OVERFLOW_CONTROL : NOTIFY_OVERFLOW_CONTROL_RCD;
11976 QUALITY_DESC :
11977 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
11978 NBR_OF_EVENT_IDS] OF QUALITY_DESC_RCD;
11979 END;

11980 TABLE 152 QUALITY_CONTROL_TBL = QUALITY_CONTROL_RCD;

11981 Table 152 Element Descriptions

11982 Identifier Value Definition


11983 CAPTURE_CONTROL_BFLD Descriptor controlling the information that is captured in other
11984 tables. It also provides direction on how to perform
11985 comparisons when establishing out-of-limits conditions.

11986 TD_FLAG An indication of whether or not to produce a waveform in


11987 TD_ASYNC_TBL upon Quality-of-service event.
11988 FALSE Do not capture a waveform.
11989 TRUE Capture a waveform.

11990 FD_FLAG An indication of whether or not to produce a frequency


11991 spectrum in FD_ASYNC_TBL upon Quality-of-service
11992 event.
11993 FALSE Do not capture a frequency spectrum.
11994 TRUE Capture a frequency spectrum.

11995 REPORT_ON_EXIT_FLAG An indication of whether or not to produce Quality-of-service


11996 event upon end of a condition. The condition ceases after it
11997 has been established as per exclusions and set limits.
11998 FALSE Do not generate a quality event.
11999 TRUE Generate a quality event.

12000 REPORT_ON_DETECT_FLAG An indication of whether or not to produce Quality-of-service


12001 event upon detection of condition as per exclusions and set
12002 acceptance limits.
12003 FALSE Do not generate a quality event.
12004 TRUE Generate a quality event.

12005 COMPARE_SIGNED_FLAG An indication of whether or not to compare a signed input


12006 signal or calculation.

Tables / Decade 15: Quality-of-service 327


Table 152 Quality-of-service Control Table
DRAFT ANSI C12.19-2012

12007 FALSE Compare the signal’s unsigned magnitude against the


12008 NOMINAL_POSITIVE_LIMITS.
12009 TRUE Compare the signed signal against the signed limits,
12010 NOMINAL_POSITIVE_LIMITS or
12011 NOMINAL_NEGATIVE_LIMITS, as governed by the
12012 signal sign.

12013 COMPARE_PEAK_FLAG An indication of whether or not to compare the largest per-


12014 cycle value of an input signal or calculation against the set
12015 limits.
12016 FALSE Compare the RMS or average of the signal against the limits
12017 as per COMPARE_RMS_FLAG.
12018 TRUE Compare the peak of the signal against the set limits.

12019 COMPARE_RMS_FLAG An indication of whether or not to compare the RMS of an


12020 input signal or calculation against the set limits. This flag shall
12021 be ignored when COMPARE_PEAK_FLAG == TRUE.
12022 FALSE Compare the average of the signal against the limits.
12023 TRUE Compare the RMS of the signal against the limits.

12024 COMPARE_INCLUSIVE_FLAG Determines the measurement range conditions used to


12025 determine whether or not a quality event description is
12026 applicable for this selection.
12027 Let V = (measured value) /
12028 NOMINAL_VALUE_RCD.NOMINAL_VALUE * 100%.
12029 FALSE The Quality-of-service event rule affected is armed
12030 (applicable) when the value V is not within the set points
12031 LOW_SET_POINT and HIGH_SET_POINT. That is, V is
12032 less than the LOW_SET_POINT or V is greater than the
12033 HIGH_SET_POINT.
12034 TRUE The Quality-of-service event rule affected is armed
12035 (applicable) when the value V is within the set points
12036 LOW_SET_POINT and HIGH_SET_POINT. That is, V is
12037 greater or equal to the LOW_SET_POINT and V is less than
12038 or equal to the HIGH_SET_POINT.

12039 REPEAT_FLAG Indication to enable or disable auto waveform repeat-capture


12040 following a Quality-of-service event.
12041 FALSE Disable repeated waveform captures.
12042 TRUE Enable repeated waveform captures.

12043 VALUE_REPORT_CTRL Defines the method used to capture the actual measurement
12044 value that is associated with the Quality-of-service incident.
12045 0 Worst (minimum or maximum as per measurement type)
12046 value sensed for this incident.
12047 1 Average value calculated during this incident.
12048 2 Average of the absolute values calculated during this incident.
12049 3 Average of the RMS values calculated during this incident.
12050 4 Maximum value sensed for this incident.
12051 5 Minimum value sensed for this incident.
12052 6 Last value sensed as the incident was reported.
12053 7..15 Reserved.

12054 FILLER Reserved.

328
DRAFT ANSI C12.19-2012

12055 NOMINAL_VALUE_RCD Descriptor defining a measurement value and the acceptable


12056 variations from that value. Also see
12057 CAPTURE_CONTROL_BFLD.
12058 COMPARE_INCLUSIVE_FLAG.

12059 NOMINAL_VALUE Nominal reference measurement or calculation value. Related


12060 set points are expressed as percentage of this value. This value
12061 shall be expressed in engineering units used for transmission
12062 according to the data source and corresponding unit of
12063 measure selected. LOW_SET_POINT and
12064 HIGH_SET_POINT are compared against the following
12065 normalization: (measured value) / NOMINAL_VALUE *
12066 100%.

12067 LOW_SET_POINT The quality event-recognition lower bound in percent. For


12068 details on calculation methods, see
12069 CAPTURE_CONTROL_BFLD.
12070 COMPARE_INCLUSIVE_FLAG. For correct event
12071 recognition, the value of LOW_SET_POINT shall be less
12072 than or equal to HIGH_SET_POINT.

12073 HIGH_SET_POINT The quality event-recognition upper bound in percent. For


12074 details on calculation methods, see
12075 CAPTURE_CONTROL_BFLD.
12076 COMPARE_INCLUSIVE_FLAG. For correct event
12077 recognition, the value of HIGH_SET_POINT shall be greater
12078 than or equal to LOW_SET_POINT.

12079 WAVEFORM_CHANNEL_SOURCE_ID_RCD Waveform channel source selector and scaling factors.

12080 SOURCE_ID Data source selector for the measurement associated with this
12081 Quality-of-service time-domain waveform-capture or
12082 waveform-transform.

12083 SCALAR 0..65535 Scalar that has been applied to each sample value. The sample
12084 value needs to be divided by this SCALAR to recover the
12085 original value. When SCALAR is absent, the application shall
12086 assume the value 1.0. Additional constants and offsets may be
12087 applied subsequently according to the definitions and values
12088 provided in the relevant data source table.

12089 DIVISOR 0..65535 Divisor that has been applied to each sample value. The
12090 sample value needs to be multiplied by this DIVISOR to
12091 recover the original value. When DIVISOR is absent, the
12092 application shall assume the value 1.0. Additional constants
12093 and offsets may be applied subsequently according to the
12094 definitions and values provided in the relevant data source
12095 table.

12096 TD_CONTROL_RCD Control element for time-domain waveform capture. It


12097 determines the sampling characteristics and related input
12098 channels.

Tables / Decade 15: Quality-of-service 329


Table 152 Quality-of-service Control Table
DRAFT ANSI C12.19-2012

12099 TIME_CAPTURE_TYPE This type identifies the nature of the time-domain capture
12100 trace.
12101 0 POINT_ON_WAVE_CNST—digitized waveform data
12102 points.
12103 1 RMS_CNST—digitized output of RMS calculation of
12104 waveform using a one (1) cycle integration period.
12105 2..255 Reserved.
12106

12107 SAMPLING_RATE Sampling rate in hertz (Hz) used to capture or analyze


12108 waveforms. This value is common to all channels associated
12109 with this element.
12110 Note that this value shall be less than or equal to
12111 ACT_QUALITY_OF_SERVICE_TBL.
12112 TD_SAMPLING_RATE.

12113 NBR_OF_SAMPLES 0..4294967295 Total number of samples to capture at the indicated sampling
12114 rate. This value is common to all channels associated with this
12115 control record.
12116 Note that this value shall be less than or equal to
12117 ACT_QUALITY_OF_SERVICE_TBL.
12118 NBR_OF_TD_SAMPLES.

12119 NBR_OF_PREFETCH_SAMPLES
12120 0..4294967295 Number of samples that the End Device shall capture
12121 continuously just prior to the asynchronous event that
12122 triggered a waveform capture.
12123 Note that this value shall be less than or equal to
12124 ACT_QUALITY_OF_SERVICE_TBL.
12125 NBR_OF_TD_PREFETCH_SAMPLES.

12126 NBR_OF_CHANNELS 0..255 Number of channels that will be captured as a result of the
12127 event controlled by this entry.
12128 Note that this value shall be less than or equal to
12129 ACT_QUALITY_OF_SERVICE_TBL.
12130 NBR_OF_TD_CHANNELS.

12131 CHANNEL_SOURCE_ID Channel data source descriptor and scalars. See


12132 WAVEFORM_CHANNEL_SOURCE_ID_RCD.

12133 NBR_OF_WAVEFORM_REPEATS
12134 0..65535 Number of additional consecutive waveforms that shall be
12135 captured as a result of this Quality-of-service event.

12136 WAVEFORM_REPEAT_DELAY Delay period between additional consecutive waveforms that


12137 are captured as a result of this Quality-of-service event.

12138 FD_CONTROL_RCD
12139 FREQUENCY_CAPTURE_TYPE This type identifies the nature of the frequency-domain
12140 capture trace.
12141 0 Harmonics.
12142 The frequencies in the spectrum are harmonically related. All
12143 frequencies are ordered integral multiples of a reference
12144 fundamental frequency. The harmonic frequency is implied
12145 from the array’s positional index of spectral component.
330
DRAFT ANSI C12.19-2012

12146 1 Interharmonics.
12147 The frequencies in the spectrum contain interharmonic values.
12148 All frequencies are ordered but not necessarily as integral
12149 multiples of a reference fundamental frequency. The harmonic
12150 or interharmonic frequency is explicitly included with the
12151 measurement of each spectral component.
12152 2 Discrete Spectra.
12153 The frequencies in the spectrum are specified as a control list.
12154 The frequency is explicitly included with the measurement of
12155 each spectral component.
12156 3..255 Reserved.

12157 SAMPLING_RATE Sampling rate in hertz (Hz) used to capture waveforms. This
12158 value is common to all channels associated with this element.
12159 Note that this value shall be less than or equal to
12160 ACT_QUALITY_OF_SERVICE_TBL.
12161 FD_SAMPLING_RATE.

12162 NBR_OF_SAMPLES 0..4294967295 Total number of samples to capture at the indicated sampling
12163 rate. This value is common to all channels associated with this
12164 control record.
12165 Note that this value shall be less than or equal to
12166 ACT_QUALITY_OF_SERVICE_TBL.
12167 NBR_OF_FD_SAMPLES, and this must equate to an
12168 integral number of cycles.

12169 NBR_OF_PREFETCH_SAMPLES
12170 0..4294967295 Number of samples that the End Device shall capture
12171 continuously just prior to the asynchronous event that
12172 triggered a waveform capture.
12173 Note that this value shall be less than or equal to
12174 ACT_QUALITY_OF_SERVICE_TBL.
12175 NBR_OF_FD_PREFETCH_SAMPLES. This does not
12176 apply for frequency.

12177 NBR_OF_SPECTRAL_COMPONENTS
12178 0..65535 Total number of spectral entries to retain following the
12179 frequency-domain information capture. The actual number of
12180 elements recorded will be one (1) greater than this value to
12181 allow for the DC component (bias) to be recorded as well.
12182 This value is common to all channels associated with this
12183 entry.
12184 Note that this value shall be less than or equal to
12185 ACT_QUALITY_OF_SERVICE_TBL.
12186 NBR_OF_SPECTRAL_COMPONENTS.

12187 NBR_OF_CHANNELS 0..255 Number of channels that will be captured as a result of the
12188 event controlled by this entry.
12189 Note that this value shall be less than or equal to
12190 ACT_QUALITY_OF_SERVICE_TBL
12191 .NBR_OF_FD_CHANNELS.

12192 CHANNEL_SOURCE_ID Channel data source descriptor and scalars. See


12193 WAVEFORM_CHANNEL_SOURCE_ID_RCD.

Tables / Decade 15: Quality-of-service 331


Table 152 Quality-of-service Control Table
DRAFT ANSI C12.19-2012

12194 NBR_OF_WAVEFORM_REPEATS
12195 0..65535 Number of additional consecutive waveforms that shall be
12196 captured as a result of this Quality-of-service event.

12197 WAVEFORM_REPEAT_DELAY Delay period between additional consecutive waveforms that


12198 are captured as a result of this Quality-of-service event.

12199 DISCRETE_FREQUENCY_LIST An array that contains a list of frequencies for which to


12200 capture the discrete spectrum in hertz (Hz), when
12201 FREQUENCY_CAPTURE_TYPE is set to 2.

12202 QUALITY_DESC_RCD A single entry used to describe the Quality-of-service


12203 processing criteria and event production rules.

12204 QUALITY_DESC_NAME A text label used to describe a QUALITY_DESC_RCD. The


12205 label text shall be left justified and padded on the right with
12206 spaces (20H). For example, let LABEL_LENGTH = 16 and
12207 then a QUALITY_DESC_NAME may be “VOLTAGE SAG
12208 ”.

12209 SOURCE_ID Data source selector for the measurement associated with this
12210 Quality-of-service incident report.

12211 COINCIDENT_SOURCE_IDS Collection of data source selectors for the measurements


12212 associated with this Quality-of-service incident report selected
12213 by .SOURCE_ID.

12214 COINCIDENT_SOURCE_ENABLE_FLAGS
12215 Collection of flags that correspond positionally to
12216 .COINCIDENT_SOURCE_IDS. Entries in Quality-of-
12217 service tables that report coincident values shall be assumed to
12218 be valid when this flag is set to TRUE.
12219 FALSE Corresponding COINCIDENT_SOURCE_IDS entry does
12220 not contain a valid source identifier. Therefore, the
12221 corresponding measurement shall be ignored.
12222 TRUE Corresponding COINCIDENT_SOURCE_IDS entry is a
12223 valid source identifier. Therefore, the corresponding
12224 measurement is meaningful.

12225 CAPTURE_CONTROL See CAPTURE_CONTROL_BFLD.

12226 TD_ASYNC_CONTROL Time-domain waveform-capture control element for


12227 TD_ASYNC_TBL. See TD_CONTROL_RCD.

12228 FD_ASYNC_CONTROL Frequency-domain waveform-transform control element for


12229 FD_ASYNC_TBL. See FD_CONTROL_RCD.

12230 TD_PERIODIC_INTERVAL
12231 0..4294967295 Time-domain triggering interval in seconds.

12232 TD_PERIODIC_WAVEFORM_CONTROL Time-domain waveform-capture control element for


12233 TIME_DOMAIN_TBL. See TD_CONTROL_RCD.

12234 FD_PERIODIC_INTERVAL

332
DRAFT ANSI C12.19-2012

12235 0..4294967295 Frequency-domain triggering interval in seconds.

12236 FD_PERIODIC_WAVEFORM_CONTROL The frequency-domain waveform-transform control element


12237 for FREQUENCY_DOMAIN_TBL. See
12238 FD_CONTROL_RCD.

12239 NOMINAL_POSITIVE_LIMITS Nominal values and limits used in comparisons with absolute
12240 positive magnitudes. See NOMINAL_VALUE_RCD and
12241 COMPARE_SIGNED_FLAG.

12242 NOMINAL_NEGATIVE_LIMITS Nominal values and limits used in signed comparisons for
12243 negative magnitudes. See NOMINAL_VALUE_RCD and
12244 COMPARE_SIGNED_FLAG.

12245 MIN_DURATION Minimum amount of time a condition needs to persist before


12246 being reported as a Quality-of-service event.

12247 EXCLUSION_DURATION Amount of time to suppress event recognition following an


12248 event detection.

12249 EXCLUSION_CONDITIONS SET of flags that select positionally a Quality-of-service


12250 source from this Table.
12251 FALSE An indication that the corresponding (as per corresponding
12252 SET index) quality event does not impact the detection of this
12253 event.
12254 TRUE An indication that when the corresponding (as per
12255 corresponding SET index) quality event condition is also
12256 detected, then this event shall be disarmed (aborted) and not
12257 be reported because it is excluded by the corresponding other
12258 condition.

12259 TRANSITION_CONDITIONS SET of flags that select positionally related rule-chaining for
12260 Quality-of-service processing.
12261 FALSE An indication that the corresponding (as per corresponding
12262 SET index) event condition does not impact the detection of
12263 this event.
12264 TRUE An indication that when the corresponding (as per
12265 corresponding SET index) event condition is detected, then
12266 that event is a follow-up event. Resulting in an event exit
12267 condition for the current event. Normally exit conditions do
12268 not generate (see REPORT_ON_EXIT_FLAG) reports.

12269 NOTIFY_OVERFLOW_CONTROL_RCD Control structure used to manage the notification conditions of


12270 each of the Quality-of-service lists.

12271 QS_LOG_CTRL List overflow notification constraints element for Quality-of-


12272 service log Table, QUALITY_LOG_TBL.

12273 TD_ASYNC_CTRL List overflow notification constraints element for


12274 asynchronous time-domain waveforms Table,
12275 TD_ASYNC_TBL.

Tables / Decade 15: Quality-of-service 333


Table 152 Quality-of-service Control Table
DRAFT ANSI C12.19-2012

12276 FD_ASYNC_CTRL List overflow notification constraints element for


12277 asynchronous frequency-domain spectrum Table,
12278 FD_ASYNC_TBL.

12279 TD_PERIODIC_CTRL List overflow notification constraints element for periodic


12280 time-domain waveforms table, TIME_DOMAIN_TBL.

12281 FD_PERIODIC_CTRL List overflow notification constraints element for periodic


12282 frequency-domain spectra Table,
12283 FREQUENCY_DOMAIN_TBL.

12284 QUALITY_CONTROL_RCD Collection of Quality-of-service sources and operation


12285 parameters. A reference to an event in a processing list is
12286 made using the entry index into the array contained within.
12287 This Packed Record contains common values that are shared
12288 among all Quality-of-service event reports and event-specific
12289 settings.

12290 TD_SAMPLES_FORMAT_CODE
12291 A single code selecting the format for all time-domain
12292 waveform data. This value is common to all time-domain
12293 waveform captured sources and channels. See
12294 LP_CTRL_TBL. INT_FMT_ENUM.

12295 TD_SAMPLING_RATE Sampling rate in hertz (Hz) used to capture all time-domain
12296 waveforms. This value is common to all time-domain
12297 waveform captured sources and channels.
12298 Note that this value shall be less than or equal to
12299 ACT_QUALITY_OF_SERVICE_TBL.
12300 TD_SAMPLING_RATE.

12301 NBR_OF_TD_SAMPLES 0..4294967295 Total number of samples to capture at the indicated sampling
12302 rate. This value is common to all time-domain waveform
12303 captured sources and channels.
12304 Note that this value shall be less than or equal to
12305 ACT_QUALITY_OF_SERVICE_TBL.
12306 NBR_OF_TD_SAMPLES.

12307 NBR_OF_TD_PREFETCH_SAMPLES
12308 0..4294967295 Number of samples to pre-fetch prior to event time stamp at
12309 the indicated sampling rate. This value is common to all time-
12310 domain waveform captured sources and channels.

12311 FD_SAMPLES_FORMAT_CODE Single code selecting the format for all frequency-domain
12312 transformed waveform data. Possible values are as per
12313 LP_CTRL_TBL. INT_FMT_ENUM. This value is common
12314 to all frequency-domain waveform-transform captured sources
12315 and channels. See LP_CTRL_TBL. INT_FMT_ENUM.

12316 FD_SAMPLING_RATE Sampling rate in hertz (Hz) used to capture all frequency-
12317 domain spectra. This value is common to all frequency-
12318 domain waveform-transform captured sources and channels.

334
DRAFT ANSI C12.19-2012

12319 Note that this value shall be less than or equal to


12320 ACT_QUALITY_OF_SERVICE_TBL.
12321 FD_SAMPLING_RATE.

12322 NBR_OF_FD_SAMPLES 0..4294967295 Total number of samples to capture at the indicated sampling
12323 rate. This value is common to all frequency-domain
12324 waveform-transform captured sources and channels.
12325 Note that this value shall be less than or equal to
12326 ACT_QUALITY_OF_SERVICE_TBL.
12327 NBR_OF_FD_SAMPLES.

12328 NBR_OF_FD_PREFETCH_SAMPLES
12329 0..4294967295 Number of samples to pre-fetch prior to event time stamp at
12330 the indicated sampling rate. This value is common to all
12331 frequency-domain waveform-transform captured sources and
12332 channels.

12333 NBR_OF_SPECTRAL_COMPONENTS
12334 0..65535 Total number of spectra to retain following the time-domain to
12335 frequency-domain transformation. The actual number of
12336 elements recorded will be one (1) greater than this value to
12337 allow for the DC component (bias) to be recorded as well.
12338 This value is common to all frequency-domain waveform-
12339 transform captured sources and channels (except when
12340 recording discrete spectra using a list).
12341 Note that this value shall be less than or equal to
12342 ACT_QUALITY_OF_SERVICE_TBL.
12343 NBR_OF_SPECTRAL_COMPONENTS.

12344 INCIDENT_SORT_ORDER Sorting algorithm used to report Quality-of-service incidents


12345 in QUALITY_INCIDENTS_TBL. The application may read
12346 back this field to check whether the algorithm requested is
12347 supported. The End Device shall reset this value to zero (0) if
12348 the desired algorithm is not supported by the End Device.
12349 When not implemented, this value shall be assumed to be zero
12350 (0). The reference start point for sorting is the time of last
12351 Quality-of-service reset.
12352 0 Default value. The incidents are not sorted in any particular
12353 order. The application shall not assume any sorting order or
12354 placement priority.
12355 1 Incidents are sorted by time of incidents. Newer (more recent)
12356 events are placed at lower array indices.
12357 2 Incidents are sorted by time of incidents. Newer (more recent)
12358 events are placed at higher array indices.
12359 3 Incidents are sorted by the magnitude of the difference of the
12360 measured value from the related LOW_SET_POINT or
12361 HIGH_SET_POINT. Higher magnitude difference events are
12362 placed at lower array indices.
12363 4 Incidents are sorted by the magnitude of the difference of the
12364 measured value from the related LOW_SET_POINT or
12365 HIGH_SET_POINT. Higher magnitude difference incidents
12366 are placed at higher array indices.
12367 5 Incidents are sorted by the duration of the incident. More
12368 persistent incidents are placed at lower array indices.

Tables / Decade 15: Quality-of-service 335


Table 152 Quality-of-service Control Table
DRAFT ANSI C12.19-2012

12369 6 Incidents are sorted by the duration of the incident. More


12370 persistent incidents are placed at higher array indices.
12371 7..255 Reserved.

12372 NOTIFY_OVERFLOW_CONTROL Control element that manages the list overflow generations of
12373 warnings and notifications. See
12374 NOTIFY_OVERFLOW_CONTROL_RCD.

12375 QUALITY_DESC Array of Quality-of-service setup and control elements. Each


12376 entry in this array represents one independent detection rule
12377 and control element for a Quality-of-service report. Each
12378 defines the Quality-of-service source, event specific data
12379 monitoring rules, data capture, and reporting control
12380 parameters. All rules found in this array shall be assumed to
12381 be processed and evaluated continually and in parallel (while
12382 quality monitoring is enabled) with no assumed or implied
12383 order. See QUALITY_DESC_RCD.

336
DRAFT ANSI C12.19-2012

12384 9.16.4 Table 153 Quality-of-service Incidents Table

12385 Table 153 Data Description

12386 This Table provides a real-time summary of Quality-of-service reports that were reported by the End Device. The
12387 entries have a fixed order. Older values are replaced by newer values, and peak values are ordered according to
12388 ascending event severity magnitude.

12389 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

12390 Table 153 Type Definitions

12391 TYPE QUALITY_ITEM_RCD = PACKED RECORD


12392 EVENT_START_TIME : HTIME_DATE;
12393 EVENT_TIME_STAMP : HTIME_DATE;
12394 IF GEN_CONFIG_TBL.STD_TBLS_USED[QUALITY_LOG_TBL] THEN
12395 QUALITY_LOG_SEQ_NBR : UINT32;
12396 END;
12397 EVENT_VALUE : NI_FMAT2;
12398 COINCIDENT_VALUE :
12399 ARRAY[ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_
12400 COINCIDENT_VALUES] OF NI_FMAT2;
12401 END;

12402 TYPE QUALITY_EVENT_RCD = PACKED RECORD


12403 TOTAL_NBR_OF_INCIDENTS : UINT32;
12404 EVENT_DATA : QUALITY_ITEM_RCD;
12405 EVENT_PAST_DATA_VALID_FLAGS :
12406 SET ((ACT_QUALITY_OF_SERVICE_TBL.
12407 NBR_OF_INCIDENTS + 7)/8);
12408 EVENT_PAST_DATA :
12409 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
12410 NBR_OF_INCIDENTS] OF QUALITY_ITEM_RCD;
12411 END;

12412 TYPE QUALITY_INCIDENTS_RCD = PACKED RECORD


12413 IF ACT_QUALITY_OF_SERVICE_TBL.QUALITY_RESET_CTR_FLAG THEN
12414 NBR_QUALITY_RESETS : UINT8;
12415 END;
12416 QUALITY_EVENT_DATA :
12417 ARRAY[ACT_QUALITY_OF_SERVICE_TBL.
12418 NBR_OF_EVENT_IDS] OF QUALITY_EVENT_RCD;
12419 END;

12420 TABLE 153 QUALITY_INCIDENTS_TBL = QUALITY_INCIDENTS_RCD;

12421 Table 153 Element Descriptions

12422 Identifier Value Definition


12423 QUALITY_ITEM_RCD A single summary report of a Quality-of-service incident.

12424 EVENT_START_TIME Time when this event condition was initially detected. It is
12425 identical in value to QUALITY_LOG_TBL.

Tables / Decade 15: Quality-of-service 337


Table 153 Quality-of-service Incidents Table
DRAFT ANSI C12.19-2012

12426 QUALITY_LOG_ENTRY_RCD.
12427 EVENT_TIME_STAMP.

12428 EVENT_TIME_STAMP High-resolution date and time for this incident. This is the
12429 time at which the event has persisted long enough for it to be
12430 reported. The time difference between
12431 EVENT_TIME_STAMP and EVENT_START_TIME is
12432 the event duration prior to reporting. It is identical in value to
12433 QUALITY_LOG_TBL. QUALITY_LOG_ENTRY_RCD.
12434 EVENT_TIME_STAMP.

12435 QUALITY_LOG_SEQ_NBR
12436 0..4294967295 Associated event id used to correlate this report with the
12437 appropriate entry in QUALITY_LOG_TBL.

12438 EVENT_VALUE Actual value that was measured when this report was
12439 triggered. The measurement reporting algorithm is further
12440 qualified by the corresponding entry in
12441 QUALITY_CONTROL_TBL.
12442 CAPTURE_CONTROL_BFLD.
12443 VALUE_REPORT_CTRL.

12444 COINCIDENT_VALUE Collection of coincidental measurements that were taken at the


12445 time .EVENT_VALUE was detected. An entry in this array is
12446 valid if the corresponding flag
12447 QUALITY_CONTROL_TBL. QUALITY_DESC_RCD
12448 .COINCIDENT_SOURCE_ENABLE_FLAGS entry was
12449 set to TRUE for this event. The measurement reporting
12450 algorithm is further qualified by the corresponding entry in
12451 QUALITY_CONTROL_TBL.
12452 CAPTURE_CONTROL_BFLD.
12453 VALUE_REPORT_CTRL.

12454 QUALITY_EVENT_RCD Container for the counters and time stamps for one type of
12455 Quality-of-service report.

12456 TOTAL_NBR_OF_INCIDENTS
12457 0..4294967295 Total number of times this quality report was generated since
12458 the last quality report reset.

12459 EVENT_DATA Information regarding the latest incident. See


12460 QUALITY_ITEM_RCD.

12461 EVENT_PAST_DATA_VALID_FLAGS Collection of flags that correspond positionally to entries in


12462 EVENT_PAST_DATA.
12463 FALSE Ignore measurement.
12464 The EVENT_PAST_DATA entry in this table at the
12465 corresponding array index does not contain a valid value.
12466 TRUE Valid measurement value.
12467 The EVENT_PAST_DATA entry in this table at the
12468 corresponding array index contains a valid value.

12469 EVENT_PAST_DATA Collection of past Quality-of-service incidents values ordered


12470 by incident severity as selected by

338
DRAFT ANSI C12.19-2012

12471 QUALITY_CONTROL_TBL
12472 .QUALITY_CONTROL_RCD
12473 .INCIDENT_SORT_ORDER.

12474 QUALITY_INCIDENTS_RCD Collection of counters and time stamps that summarize all
12475 Quality-of-service reports.

12476 NBR_QUALITY_RESETS 0..255 Indicates the number of Quality-of-service event counter


12477 resets executed by the End Device.

12478 QUALITY_EVENT_DATA Array that maps corresponding entries for each Quality-of-
12479 service exception report. See QUALITY_EVENT_RCD.

Tables / Decade 15: Quality-of-service 339


Table 153 Quality-of-service Incidents Table
DRAFT ANSI C12.19-2012

12480 9.16.5 Table 154 Quality-of-service Log Table

12481 Table 154 Data Description

12482 This Table provides a log capture area for any Quality-of-service event. It contains the necessary information to
12483 identify the event-trigger-related captured waveforms and incident reports.

12484 The Table is organized as a list of ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_EVENTS data entries. Each


12485 entry represents one Quality-of-service report. Each report is cross-referenced to the event source, EVENT_ID, an
12486 index into QUALITY_CONTROL_TBL and related wave capture tables.

12487 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

12488 Table 154 Type Definitions

12489 TYPE QUALITY_LOG_ENTRY_RCD = PACKED RECORD


12490 EVENT_START_TIME : HTIME_DATE;
12491 EVENT_TIME_STAMP : HTIME_DATE;
12492 EVENT_SEQ_NBR : UINT16;
12493 EVENT_ID : UINT16;
12494 IF GEN_CONFIG_TBL.STD_TBLS_USED[TD_ASYNC_TBL] THEN
12495 TD_ASYNC_SEQ_NBR : UINT32;
12496 END;
12497 IF GEN_CONFIG_TBL.STD_TBLS_USED[FD_ASYNC_TBL] THEN
12498 FD_ASYNC_SEQ_NBR : UINT32;
12499 END;
12500 EVENT_VALUE : NI_FMAT2;
12501 COINCIDENT_VALUE :
12502 ARRAY[ACT_QUALITY_OF_SERVICE_TBL.
12503 NBR_OF_COINCIDENT_VALUES] OF NI_FMAT2;
12504 END;

12505 TYPE QUALITY_LOG_RCD = PACKED RECORD


12506 LIST_STATUS : WAVEFORM_LIST_STATUS_RCD;
12507 ENTRIES :
12508 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
12509 NBR_OF_EVENTS] OF QUALITY_LOG_ENTRY_RCD;
12510 END;

12511 TABLE 154 QUALITY_LOG_TBL = QUALITY_LOG_RCD;

12512 Table 154 Element Descriptions

12513 Identifier Value Definition


12514 QUALITY_LOG_ENTRY_RCD A single entry in the Quality-of-service event list.

12515 EVENT_START_TIME The time when this event condition was initially detected.

12516 EVENT_TIME_STAMP High-resolution date and time for this incident. This is the
12517 time at which the event has persisted long enough for it to be
12518 reported. The time difference between
12519 EVENT_TIME_STAMP and EVENT_START_TIME is
12520 the event duration prior to reporting.

340
DRAFT ANSI C12.19-2012

12521 EVENT_SEQ_NBR 0..65535 Unique numeric identifier that increments for each new
12522 Quality-of-service incident that is logged in this Table.

12523 EVENT_ID 0..65535 Index of the event descriptor in


12524 QUALITY_CONTROL_TBL that was the source of this
12525 entry.

12526 TD_ASYNC_SEQ_NBR 0..4294967295 Sequence number of the first waveform block that was
12527 captured in TD_ASYNC_TBL.

12528 FD_ASYNC_SEQ_NBR 0..4294967295 Sequence number of the first waveform block that was
12529 captured in FD_ASYNC_TBL.

12530 EVENT_VALUE Actual value that was measured this report was triggered. The
12531 measurement reporting algorithm is further qualified by the
12532 corresponding entry in QUALITY_CONTROL_TBL
12533 .CAPTURE_CONTROL_BFLD
12534 .VALUE_REPORT_CTRL.

12535 COINCIDENT_VALUE Collection of coincidental measurements that were taken at the


12536 time .EVENT_VALUE was detected. An entry in this array is
12537 valid if the corresponding flag
12538 QUALITY_CONTROL_TBL. QUALITY_DESC_RCD.
12539 COINCIDENT_SOURCE_ENABLE_FLAGS entry was set
12540 to TRUE for this event. The measurement reporting algorithm
12541 is further qualified by the corresponding entry in
12542 QUALITY_CONTROL_TBL
12543 .CAPTURE_CONTROL_BFLD
12544 .VALUE_REPORT_CTRL.

12545 QUALITY_LOG_RCD A container for all Quality-of-service event entries.

12546 LIST_STATUS See WAVEFORM_LIST_STATUS_RCD.

12547 ENTRIES Array of entries, each of which holds one Quality-of-service


12548 out-of-limits report. See QUALITY_LOG_ENTRY_RCD.

Tables / Decade 15: Quality-of-service 341


Table 154 Quality-of-service Log Table
DRAFT ANSI C12.19-2012

12549 9.16.6 Table 155 Asynchronous Time-Domain Waveforms Table

12550 Table 155 Data Description

12551 This Table provides a waveform capture area for time-domain waveforms that are triggered by a Quality-of-service
12552 event. It contains the necessary information to identify the event trigger.

12553 The Table is organized as a list of ACT_QUALITY_OF_SERVICE_TBL. NBR_OF_TD_BLOCKS data blocks.


12554 Each data block can hold up to ACT_QUALITY_OF_SERVICE_TBL.
12555 NBR_OF_TD_SAMPLES_PER_BLOCK samples from one or more input channels, to a maximum of
12556 ACT_QUALITY_OF_SERVICE_TBL. NBR_OF_TD_CHANNELS_PER_BLOCK channels as shown below.

12557 When this triggering event requires more than NBR_OF_TD_CHANNELS_PER_BLOCK waveforms to be
12558 reported, additional blocks are provided, each containing NBR_OF_TD_CHANNELS_PER_BLOCK waveforms
12559 until the number of channels is exhausted. The actual number of valid channels in a block is indicated by the block
12560 header NBR_CHANNELS element.

12561 When, in addition, the triggering event requires more than NBR_OF_TD_SAMPLES_PER_BLOCK samples to
12562 be recorded contiguously, then additional data blocks (or groups of blocks) will be created until all requested
12563 samples are reported.

12564 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

12565 Table 155 Type Definitions

12566 TYPE TD_BLOCK_HEADER_RCD = PACKED RECORD


12567 ASSOCIATED_EVENT_ID : UINT16;
12568 ASSOCIATED_EVENT_SEQ_NBR : UINT32;
12569 ASSOCIATED_EVENT_TIME_STAMP : HTIME_DATE;
12570 NBR_SAMPLES : UINT16;
12571 NBR_CHANNELS : UINT16;
12572 END_BLOCK_TIME_STAMP : HTIME_DATE;
12573 BLOCK_CHANNEL_OFFSET : UINT16;
12574 WAVEFORM_SEGMENT_NBR : UINT16;
12575 EVENT_SAMPLE_OFFSET : INT32;
12576 SAMPLING_RATE : NI_FMAT2;
12577 END;

12578 TYPE TD_CHANNELS_RCD = PACKED RECORD


12579 CHANNEL :
12580 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
12581 NBR_OF_TD_CHANNELS_PER_BLOCK] OF
12582 TD_SAMPLE_FORMAT_RCD;
12583 END;

12584 TYPE TD_BLOCK_DATA_RCD = PACKED RECORD


12585 BLOCK_HEADER : TD_BLOCK_HEADER_RCD;
12586 SAMPLE_DATA :
12587 ARRAY[ACT_QUALITY_OF_SERVICE_TBL.
12588 NBR_OF_TD_SAMPLES_PER_BLOCK] OF
12589 TD_CHANNELS_RCD;
12590 END;

12591 TYPE ASYNC_RCD = PACKED RECORD


342
DRAFT ANSI C12.19-2012

12592 LIST_STATUS : WAVEFORM_LIST_STATUS_RCD;


12593 BLOCK_DATA : ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
12594 NBR_OF_TD_BLOCKS] OF TD_BLOCK_DATA_RCD;
12595 END;

12596 TABLE 155 TD_ASYNC_TBL = ASYNC_RCD;

12597 Table 155 Element Descriptions

12598 Identifier Value Definition


12599 TD_BLOCK_HEADER_RCD This element contains the block descriptor and status
12600 information.

12601 ASSOCIATED_EVENT_ID
12602 0..65535 Index into QUALITY_CONTROL_TBL.
12603 QUALITY_DESC that is associated with this event.

12604 ASSOCIATED_EVENT_SEQ_NBR
12605 0..4294967295 Event sequence number of QUALITY_LOG_TBL.
12606 QUALITY_LOG_ENTRY_RCD. EVENT_SEQ_NBR that
12607 is associated with this waveform. This value shall be identical
12608 in all blocks that carry samples and channels that were
12609 triggered by the same Quality-of-service event.

12610 ASSOCIATED_EVENT_TIME_STAMP Event time stamp as recorded in QUALITY_LOG_TBL.


12611 QUALITY_LOG_ENTRY_RCD. EVENT_TIME_STAMP
12612 that is associated with this waveform. This value shall be
12613 identical in all blocks that carry samples and channels that
12614 were triggered by the same Quality-of-service event. This
12615 value also relates to the sample time of the data sample that
12616 matches EVENT_SAMPLE_OFFSET.

12617 NBR_SAMPLES 0..65535 Number of samples in this block. This value may be less than
12618 the block size, ACT_QUALITY_OF_SERVICE_TBL.
12619 NBR_OF_TD_SAMPLES_PER_BLOCK, as a block may
12620 be partially filled with sample values.

12621 NBR_CHANNELS 0..65535 Number of channels in this block. This value may be less than
12622 the total number of channels,
12623 ACT_QUALITY_OF_SERVICE_TBL.
12624 NBR_OF_TD_CHANNELS_PER_BLOCK, as a block may
12625 be partially filled with channel values and the actual number
12626 of channels may vary from quality event to quality event
12627 recorded.

12628 END_BLOCK_TIME_STAMP Sample acquisition time of the last sample in this block. This
12629 sample is at block-relative sample offset of
12630 SAMPLE_DATA[NBR_SAMPLES-1].

12631 BLOCK_CHANNEL_OFFSET
12632 0..65535 Channel number associated with the first channel in this block.
12633 This value may range from zero (0) to
12634 ACT_QUALITY_OF_SERVICE_TBL.
12635 NBR_OF_TD_CHANNELS-1, as
Tables / Decade 15: Quality-of-service 343
Table 155 Asynchronous Time-Domain Waveforms Table
DRAFT ANSI C12.19-2012

12636 NBR_OF_TD_CHANNELS may be greater than


12637 NBR_OF_TD_CHANNELS_PER_BLOCK.

12638 WAVEFORM_SEGMENT_NBR
12639 0..65535 This value ranges from N - 1 to zero (0), where N is the total
12640 number of segments needed to contain all fragments from all
12641 of the channels bound to one report. This value aims to assist
12642 the application to discover how many blocks of data are
12643 needed to recover all waveforms segments that make up
12644 continuous waveform.

12645 EVENT_SAMPLE_OFFSET
12646 -2147483648..2147483647
12647 Offset in samples from this block start. This value changes
12648 from block to block to reflect the first sample position in the
12649 fully assembled waveform. For example, if the sample pre-
12650 fetch value is 5, and a block can hold 10 samples and the End
12651 Device was programmed to collect 32 samples, then four
12652 blocks will be generated each having
12653 (WAVEFORM_SEGMENT_NBR, NBR_SAMPLES,
12654 EVENT_SAMPLE_OFFSET) successive triplet values as
12655 follows: (3,10,4), (2,10,-6),(1,10,-16) and (0,2,-26).

12656 SAMPLING_RATE Sampling rate in hertz (Hz) used to collect this waveform
12657 across all channels.

12658 TD_CHANNELS_RCD Collection of all samples from all related channels. These
12659 samples are collected concurrently.

12660 CHANNEL Array of TD_SAMPLE_FORMAT_RCD. Each element


12661 represents the value of one sample from a channel.

12662 TD_BLOCK_DATA_RCD Container for a full or partial collection of waveform block


12663 data.

12664 BLOCK_HEADER See TD_BLOCK_HEADER_RCD.

12665 SAMPLE_DATA Array of TD_CHANNELS_RCD. Each entry contains one


12666 sample from each available channel collected successively at
12667 the programmed sampling rate.

12668 ASYNC_RCD Waveform captures area for time-domain waveforms that are
12669 triggered by a Quality-of-service event.

12670 LIST_STATUS See WAVEFORM_LIST_STATUS_RCD.

12671 BLOCK_DATA Array of TD_BLOCK_DATA_RCD.

344
DRAFT ANSI C12.19-2012

12672 9.16.7 Table 156 Asynchronous Frequency-Domain Spectrum Table

12673 Table 156 Data Description

12674 This Table provides a frequency-domain spectrum capture area for transforms of time-domain waveforms that are
12675 triggered by a Quality-of-service event. It contains the necessary information to identify the event trigger.

12676 The Table is organized as a list of ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_FD_BLOCKS data blocks.


12677 Each data block can hold up to ACT_QUALITY_OF_SERVICE_TBL.
12678 NBR_OF_FD_SPECTRA_PER_BLOCK spectra from one or more input channels, to a maximum of
12679 ACT_QUALITY_OF_SERVICE_TBL. NBR_OF_FD_CHANNELS_PER_BLOCK channels as shown below.

12680 When this triggering event requires more than NBR_OF_FD_CHANNELS_PER_BLOCK waveforms to be
12681 reported, additional blocks are provided, each containing NBR_OF_FD_CHANNELS_PER_BLOCK waveforms
12682 until the number of channels is exhausted. The actual number of valid channels in a block is indicated by the block
12683 header NBR_CHANNELS element.

12684 When, in addition, the triggering event requires more than NBR_OF_FD_SPECTRA_PER_BLOCK spectra to be
12685 recorded contiguously, then additional data blocks (or groups of blocks) will be created until all requested samples
12686 are reported.

12687 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

12688 Table 156 Type Definitions

12689 TYPE FD_BLOCK_HEADER_RCD = PACKED RECORD


12690 ASSOCIATED_EVENT_ID : UINT16;
12691 ASSOCIATED_EVENT_SEQ_NBR : UINT32;
12692 ASSOCIATED_EVENT_TIME_STAMP : HTIME_DATE;
12693 NBR_SPECTRAL_COMPONENTS : UINT16;
12694 NBR_CHANNELS : UINT16;
12695 START_BLOCK_TIME_STAMP : HTIME_DATE;
12696 END_BLOCK_TIME_STAMP : HTIME_DATE;
12697 BLOCK_CHANNEL_OFFSET : UINT16;
12698 SPECTRA_SEGMENT_NBR : UINT16;
12699 EVENT_SAMPLE_OFFSET : INT32;
12700 SAMPLING_RATE : NI_FMAT2;
12701 END;

12702 TYPE FD_ENTRY_RCD = PACKED RECORD


12703 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.INTERHARMONICS_FLAG THEN
12704 FREQUENCY : NI_FMAT2;
12705 END;
12706 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.FD_COMPLEX_FLAG THEN
12707 REAL_COMPONENT : FD_SAMPLE_FORMAT_RCD;
12708 IMAG_COMPONENT : FD_SAMPLE_FORMAT_RCD;
12709 END;
12710 IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.FD_PHASOR_FLAG THEN
12711 AMPLITUDE : FD_SAMPLE_FORMAT_RCD;
12712 ANGLE : FD_SAMPLE_FORMAT_RCD;
12713 END;
12714 END;

12715 TYPE FD_CHANNELS_RCD = PACKED RECORD


Tables / Decade 15: Quality-of-service 345
Table 156 Asynchronous Frequency-Domain Spectrum Table
DRAFT ANSI C12.19-2012

12716 CHANNEL :
12717 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
12718 NBR_OF_FD_CHANNELS_PER_BLOCK] OF
12719 FD_ENTRY_RCD;
12720 END;

12721 TYPE FD_BLOCK_DATA_RCD = PACKED RECORD


12722 BLOCK_HEADER : FD_BLOCK_HEADER_RCD;
12723 SPECTRA_DATA :
12724 ARRAY[ACT_QUALITY_OF_SERVICE_TBL.
12725 NBR_OF_TD_SAMPLES_PER_BLOCK] OF
12726 FD_CHANNELS_RCD;
12727 END;

12728 TYPE ASYNC_SPECTRA_RCD = PACKED RECORD


12729 LIST_STATUS : WAVEFORM_LIST_STATUS_RCD;
12730 BLOCK_DATA :
12731 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
12732 NBR_OF_FD_BLOCKS] OF FD_BLOCK_DATA_RCD;
12733 END;

12734 TABLE 156 FD_ASYNC_TBL = ASYNC_SPECTRA_RCD;

12735 Table 156 Element Descriptions

12736 Identifier Value Definition

12737 FD_BLOCK_HEADER_RCD This element contains the block descriptor and status
12738 information.

12739 ASSOCIATED_EVENT_ID 0..65535 Index into QUALITY_CONTROL_TBL.


12740 QUALITY_DESC that is associated with this event.

12741 ASSOCIATED_EVENT_SEQ_NBR
12742 0..4294967295 Event sequence number of QUALITY_LOG_TBL.
12743 QUALITY_LOG_ENTRY_RCD. EVENT_SEQ_NBR that
12744 is associated with this waveform. This value shall be identical
12745 in all blocks that carry samples and channels that were
12746 triggered by the same Quality-of-service event.

12747 ASSOCIATED_EVENT_TIME_STAMP Event time stamp as recorded in QUALITY_LOG_TBL.


12748 QUALITY_LOG_ENTRY_RCD.EVENT_TIME_STAMP
12749 that is associated with this waveform. This value shall be
12750 identical in all blocks that carry spectra from channels that
12751 were triggered by the same Quality-of-service event. This
12752 value also relates to the sample time of the data sample that
12753 matches EVENT_SAMPLE_OFFSET.

12754 NBR_SPECTRAL_COMPONENTS
12755 0..65535 Number of spectral components reported in this block. This
12756 value includes all harmonic, interharmonic, or discrete spectral
12757 components including the DC (bias) value, if any.

12758 NBR_CHANNELS 0..65535 Number of channels in this block. This value may be less than
12759 the total number of channels,
346
DRAFT ANSI C12.19-2012

12760 ACT_QUALITY_OF_SERVICE_TBL.
12761 NBR_OF_FD_CHANNELS_PER_BLOCK, as a block may
12762 be partially filled with channel values and the actual number
12763 of channels may vary from quality event to quality event
12764 recorded.

12765 START_BLOCK_TIME_STAMP Time stamp of the first sample used in this transform. All
12766 blocks making up one spectrum report the same value.

12767 END_BLOCK_TIME_STAMP Time stamp of the last sample used in this transform. All
12768 blocks making up one spectrum shall report the same value.

12769 BLOCK_CHANNEL_OFFSET
12770 0..65535 Channel number associated with the first channel in this block.
12771 This value may range from zero (0) to
12772 ACT_QUALITY_OF_SERVICE_TBL.
12773 NBR_OF_FD_CHANNELS-1, as
12774 NBR_OF_FD_CHANNELS may be greater than
12775 NBR_OF_FD_CHANNELS_PER_BLOCK.

12776 SPECTRA_SEGMENT_NBR
12777 0..65535 Value ranging from N - 1 to zero (0), where N is the total
12778 number of segments needed to contain all fragments from all
12779 of the channels bound to one report. This value aims to assist
12780 the application to discover how many blocks of data are
12781 needed to recover all segments that make up the spectral
12782 components.

12783 EVENT_SAMPLE_OFFSET
12784 -2147483648..2147483647
12785 Offset in samples to the first sample used in the integration of
12786 this frequency spectrum. This value shall be identical in all
12787 blocks segments that are associated with the same event.

12788 SAMPLING_RATE Sampling rate in hertz (Hz) used to collect this frequency
12789 spectrum across all channels.

12790 FD_ENTRY_RCD A single spectral component value.

12791 FREQUENCY The frequency in hertz (Hz) of the discrete spectral


12792 component.

12793 REAL_COMPONENT Real part (cosine) of the spectral component. See


12794 FD_SAMPLE_FORMAT_RCD.

12795 IMAG_COMPONENT Imaginary part (sine) of the spectral component. See


12796 FD_SAMPLE_FORMAT_RCD.

12797 AMPLITUDE Amplitude of the spectral component. See


12798 FD_SAMPLE_FORMAT_RCD.

12799 ANGLE Phase angle between the real and imaginary parts of the
12800 spectral component. This value ranges from -360 degrees to
12801 +360 degrees before the application of scalar/divisor. See

Tables / Decade 15: Quality-of-service 347


Table 156 Asynchronous Frequency-Domain Spectrum Table
DRAFT ANSI C12.19-2012

12802 FD_SAMPLE_FORMAT_RCD. Positive values increase


12803 counterclockwise, from the positive real axis toward the
12804 positive imaginary axis.

12805 FD_CHANNELS_RCD Collection of all samples from all related channels. These
12806 samples are collected concurrently.

12807 CHANNEL Array of FD_ENTRY_RCD. Each element represents the


12808 value of one spectral component from a channel.

12809 FD_BLOCK_DATA_RCD
12810 BLOCK_HEADER See FD_BLOCK_HEADER_RCD.

12811 SPECTRA_DATA Array of FD_CHANNELS_RCD. Each entry contains one


12812 spectral component from each available channel. The first
12813 element at index zero (0) is the DC (bias) value, the second
12814 element at index one (1) is the fundamental frequency, and
12815 successive spectral components follow sequentially.

12816 ASYNC_SPECTRA_RCD Waveform-transform capture area for frequency-domain


12817 spectrum that are triggered by a Quality-of-service event.

12818 LIST_STATUS See WAVEFORM_LIST_STATUS_RCD.

12819 BLOCK_DATA An array of FD_BLOCK_DATA_RCD.

348
DRAFT ANSI C12.19-2012

12820 9.16.8 Table 157 Periodic Time Domain Waveforms Table

12821 Table 157 Data Description

12822 This Table provides a waveform capture area for time-domain waveforms that are continually sampled for the
12823 purpose of obtaining real-time performance information.

12824 The Table is organized as a list of ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_TD_BLOCKS data blocks.


12825 Each data block can hold up to ACT_QUALITY_OF_SERVICE_TBL.
12826 NBR_OF_TD_SAMPLES_PER_BLOCK samples from one or more input channels, to a maximum of
12827 ACT_QUALITY_OF_SERVICE_TBL. NBR_OF_TD_CHANNELS_PER_BLOCK channels. When more than
12828 NBR_OF_TD_CHANNELS_PER_BLOCK waveforms need to be reported, additional blocks are provided, each
12829 containing NBR_OF_TD_CHANNELS_PER_BLOCK waveforms until the number of channels is exhausted. The
12830 actual number of valid channels in a block is indicated by the block header NBR_CHANNELS element.

12831 When, in addition, more than NBR_OF_TD_SAMPLES_PER_BLOCK samples need to be recorded


12832 contiguously, then additional data blocks (or groups of blocks) will be created until all requested samples were
12833 reported.

12834 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

12835 Table 157 Type Definitions

12836 TYPE TD_PERIODIC_BLOCK_HEADER_RCD = PACKED RECORD


12837 NBR_SAMPLES : UINT16;
12838 NBR_CHANNELS : UINT16;
12839 END_BLOCK_TIME_STAMP : HTIME_DATE;
12840 BLOCK_CHANNEL_OFFSET : UINT16;
12841 WAVEFORM_SEGMENT_NBR : UINT16;
12842 EVENT_SAMPLE_OFFSET : INT32;
12843 SAMPLING_RATE : NI_FMAT2;
12844 END;

12845 TYPE TD_PERIODIC_BLOCK_DATA_RCD = PACKED RECORD


12846 BLOCK_HEADER : TD_PERIODIC_BLOCK_HEADER_RCD;
12847 SAMPLE_DATA :
12848 ARRAY[ACT_QUALITY_OF_SERVICE_TBL.
12849 NBR_OF_TD_SAMPLES_PER_BLOCK] OF
12850 TD_ASYNC_TBL.TD_CHANNELS_RCD;
12851 END;

12852 TYPE WAVEFORM_RCD = PACKED RECORD


12853 LIST_STATUS : WAVEFORM_LIST_STATUS_RCD;
12854 BLOCK_DATA :
12855 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
12856 NBR_OF_TD_BLOCKS] OF
12857 TD_PERIODIC_BLOCK_DATA_RCD;
12858 END;

12859 TABLE 157 TIME_DOMAIN_TBL = WAVEFORM_RCD;

Tables / Decade 15: Quality-of-service 349


Table 157 Periodic Time Domain Waveforms Table
DRAFT ANSI C12.19-2012

12860 Table 157 Element Descriptions

12861 Identifier Value Definition

12862 TD_PERIODIC_BLOCK_HEADER_RCD This element contains the block descriptor and status
12863 information.

12864 NBR_SAMPLES 0..65535 Number of samples in this block. This value may be less than
12865 the block size, ACT_QUALITY_OF_SERVICE_TBL.
12866 NBR_OF_TD_SAMPLES_PER_BLOCK, as a block may
12867 be partially filled with sample values.

12868 NBR_CHANNELS 0..65535 Number of channels in this block. This value may be less than
12869 the total number of channels,
12870 ACT_QUALITY_OF_SERVICE_TBL.
12871 NBR_OF_TD_CHANNELS_PER_BLOCK, as a block may
12872 be partially filled with channel values and the actual number
12873 of channels may vary from quality event to quality event
12874 recorded.

12875 END_BLOCK_TIME_STAMP Sample acquisition time of the last sample in this block. This
12876 sample is a block-relative sample offset of
12877 SAMPLE_DATA[NBR_SAMPLES-1].

12878 BLOCK_CHANNEL_OFFSET
12879 0..65535 Channel number associated with the first channel in this block.
12880 This value may range from zero (0) to
12881 ACT_QUALITY_OF_SERVICE_TBL.
12882 NBR_OF_TD_CHANNELS-1, as
12883 NBR_OF_TD_CHANNELS may be greater than
12884 NBR_OF_TD_CHANNELS_PER_BLOCK.

12885 WAVEFORM_SEGMENT_NBR
12886 0..65535 Value ranging from N - 1 to zero (0), where N is the total
12887 number of segments needed to contain all fragments from all
12888 of the channels bound to one report. This value aims to assist
12889 the application to discover how many blocks of data are
12890 needed to recover all waveform segments that make up a
12891 continuous waveform.

12892 EVENT_SAMPLE_OFFSET
12893 -2147483648..2147483647
12894 Offset to start of collection time from this block start. This
12895 value changes from block to block to reflect the first sample
12896 position in the fully assembled waveform.

12897 SAMPLING_RATE Sampling rate in hertz (Hz) used to collect this waveform
12898 across all channels.

12899 TD_PERIODIC_BLOCK_DATA_RCD Container for a full or partial collection of waveform block


12900 data.

12901 BLOCK_HEADER See TD_PERIODIC_BLOCK_HEADER_RCD.

350
DRAFT ANSI C12.19-2012

12902 SAMPLE_DATA Array of TD_ASYNC_TBL.TD_CHANNELS_RCD. Each


12903 entry contains one sample from each available channel
12904 collected successively at the programmed sampling rate.

12905 WAVEFORM_RCD Waveform captures area for time-domain waveforms that are
12906 triggered periodically.

12907 LIST_STATUS See WAVEFORM_LIST_STATUS_RCD.

12908 BLOCK_DATA An array of TD_PERIODIC_BLOCK_DATA_RCD.

Tables / Decade 15: Quality-of-service 351


Table 157 Periodic Time Domain Waveforms Table
DRAFT ANSI C12.19-2012

12909 9.16.9 Table 158 Periodic Frequency-Domain Spectrum Table

12910 Table 158 Data Description

12911 This Table provides a frequency domain spectrum capture area for transforms of time-domain waveforms
12912 continually sampled for the purpose of obtaining real-time performance information.

12913 The Table is organized as a list of ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_FD_BLOCKS data blocks.


12914 Each data block can hold up to ACT_QUALITY_OF_SERVICE_TBL.
12915 NBR_OF_FD_SPECTRA_PER_BLOCK spectra from one or more input channels, to a maximum of
12916 ACT_QUALITY_OF_SERVICE_TBL. NBR_OF_FD_CHANNELS_PER_BLOCK channels.

12917 When the triggering event requires more than NBR_OF_FD_CHANNELS_PER_BLOCK waveforms to be
12918 reported, additional blocks are provided, each containing NBR_OF_FD_CHANNELS_PER_BLOCK waveforms
12919 until the number of channels is exhausted. The actual number of valid channels in a block is indicated by the block
12920 header NBR_CHANNELS element.

12921 When, in addition, the triggering event requires more than NBR_OF_FD_SPECTRA_PER_BLOCK spectra to be
12922 recorded contiguously, then additional data blocks (or groups of blocks) will be created until all requested samples
12923 are reported.

12924 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

12925 Table 158 Type Definitions

12926 TYPE FD_PERIODIC_BLOCK_HEADER_RCD = PACKED RECORD


12927 NBR_SPECTRAL_COMPONENTS : UINT16;
12928 NBR_CHANNELS : UINT16;
12929 START_BLOCK_TIME_STAMP : HTIME_DATE;
12930 END_BLOCK_TIME_STAMP : HTIME_DATE;
12931 BLOCK_CHANNEL_OFFSET : UINT16;
12932 SPECTRA_SEGMENT_NBR : UINT16;
12933 EVENT_SAMPLE_OFFSET : INT32;
12934 SAMPLING_RATE : NI_FMAT2;
12935 END;

12936 TYPE FD_PERIODIC_BLOCK_DATA_RCD = PACKED RECORD


12937 BLOCK_HEADER : FD_PERIODIC_BLOCK_HEADER_RCD;
12938 SPECTRA_DATA :
12939 ARRAY[ACT_QUALITY_OF_SERVICE_TBL.
12940 NBR_OF_FD_SPECTRA_PER_BLOCK] OF
12941 FD_ASYNC_TBL.FD_CHANNELS_RCD;
12942 END;

12943 TYPE SPECTRA_RCD = PACKED RECORD


12944 LIST_STATUS : WAVEFORM_LIST_STATUS_RCD;
12945 BLOCK_DATA :
12946 ARRAY [ACT_QUALITY_OF_SERVICE_TBL.
12947 NBR_OF_FD_BLOCKS] OF
12948 FD_PERIODIC_BLOCK_DATA_RCD;
12949 END;

12950 TABLE 158 FREQUENCY_DOMAIN_TBL = SPECTRA_RCD;

352
DRAFT ANSI C12.19-2012

12951 Table 158 Element Descriptions

12952 Identifier Value Definition


12953 FD_PERIODIC_BLOCK_HEADER_RCD This element contains the block descriptor and status
12954 information.

12955 NBR_SPECTRAL_COMPONENTS
12956 0..65535 Number of spectra reported in this block. This value includes
12957 all spectral components including the DC (bias) value, if any.

12958 NBR_CHANNELS 0..65535 Number of channels in this block. This value may be less than
12959 the total number of channels,
12960 ACT_QUALITY_OF_SERVICE_TBL.
12961 NBR_OF_FD_CHANNELS_PER_BLOCK, as a block may
12962 be partially filled with channel values and the actual number
12963 of channels may vary from quality event to quality event
12964 recorded.

12965 START_BLOCK_TIME_STAMP Time stamp of the first sample used in this transform. All
12966 blocks making up one spectrum report the same value.

12967 END_BLOCK_TIME_STAMP Time stamp of the last sample used in this transform. All
12968 blocks making up one spectrum shall report the same value.

12969 BLOCK_CHANNEL_OFFSET
12970 0..65535 Channel number associated with the first channel in this block.
12971 This value may range from zero (0) to
12972 ACT_QUALITY_OF_SERVICE_TBL.
12973 NBR_OF_FD_CHANNELS-1, as
12974 NBR_OF_FD_CHANNELS may be greater than
12975 NBR_OF_FD_CHANNELS_PER_BLOCK.

12976 SPECTRA_SEGMENT_NBR
12977 0..65535 Value ranging from N - 1 to zero (0), where N is the total
12978 number of segments needed to contain all fragments from all
12979 of the channels bound to one report. This value aims to assist
12980 the application to discover how many blocks of data are
12981 needed to recover all segments that make up the spectral
12982 components.

12983 EVENT_SAMPLE_OFFSET
12984 -2147483648..2147483647
12985 Offset in samples to the first sample used in the integration of
12986 this frequency spectrum. This value shall be identical in all
12987 blocks segments that are associated with the same event.

12988 SAMPLING_RATE Sampling rate in hertz (Hz) used to collect this frequency
12989 spectrum across all channels.

12990 FD_PERIODIC_BLOCK_DATA_RCD A single spectral component value.

12991 BLOCK_HEADER See FD_PERIODIC_BLOCK_HEADER_RCD.

Tables / Decade 15: Quality-of-service 353


Table 158 Periodic Frequency-Domain Spectrum Table
DRAFT ANSI C12.19-2012

12992 SPECTRA_DATA Array of FD_ASYNC_TBL. FD_CHANNELS_RCD. Each


12993 entry contains one spectral component from each available
12994 channel. The first element at index zero (0) is the DC (bias)
12995 value, the second element at index one (1) is the fundamental
12996 frequency, and successive spectral components follow
12997 sequentially.

12998 SPECTRA_RCD Waveform-transform capture area for frequency-domain


12999 spectra that are triggered periodically.

13000 LIST_STATUS See WAVEFORM_LIST_STATUS_RCD.

13001 BLOCK_DATA An array of FD_PERIODIC_BLOCK_DATA_RCD.

354
DRAFT ANSI C12.19-2012

13002 9.17 Decade 16: One-way Devices

13003 Decade 16 Name

13004 ONEWAY_DEVICES_DEC

13005 The tables in this Decade provide information related to “One-way” End Device operation.

13006 9.17.1 Table 160 One-way Dimension Limits Table

13007 Table 160 Data Description

13008 DIM_ONE_WAY_TBL (Table 160) defines the maximum capabilities for One-way control for the End Device.

13009 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

13010 Table 160 Type Definitions

13011 TYPE WAKE_UP_FUNC_FLAG_BFLD = BIT FIELD OF UINT16


13012 ALWAYS_AWAKE_FLAG : BOOL(0);
13013 PERIODIC_SELF_WAKE_FLAG : BOOL(1);
13014 EXTERNAL_WAKE_FLAG : BOOL(2);
13015 RF_TRANSM_WAKE_FLAG : BOOL(3);
13016 IR_TRANSM_WAKE_FLAG : BOOL(4);
13017 PL_TRANSM_WAKE_FLAG : BOOL(5);
13018 POT_WAKE_FLAG : BOOL(6);
13019 LAN_WAN_WAKE_FLAG : BOOL(7);
13020 FILLER : FILL(8..15);
13021 END;

13022 TYPE REGISTER_READ_FUNC_FLAG_BFLD = BIT FIELD OF UINT8


13023 REG_READ_IMMEDIATE_WAKE_FLAG : BOOL(0);
13024 REG_READ_DELAY_TO_TIME_FLAG : BOOL(1);
13025 REG_READ_EXTERNAL_STIME_FLAG : BOOL(2);
13026 FILLER : FILL(3..7);
13027 END;

13028 TYPE DATA_TRANSMIT_FUNC_BFLD = BIT FIELD OF UINT8


13029 DATA_XMIT_IMMEDIATE_READ : BOOL(0);
13030 DATA_XMIT_DELAY_TO_TIME_FLAG : BOOL(1);
13031 FILLER : FILL(2..7);
13032 END;

13033 TYPE COMMODITY_OUTAGE_DUTY_RCD = PACKED RECORD


13034 COMMODITY_OUTAGE_DUTY_NUM : UINT16;
13035 RESTORATION_CALL_ATTEMPTS : UINT8;
13036 RESTORATION_CALL_WAIT : UINT8;
13037 END;

13038 TYPE COMMODITY_ZERO_USAGE_RCD = PACKED RECORD


13039 COMMODITY_ZERO_USAGE : UINT16;
13040 COMMODITY_ZERO_USAGE_TRIGGER : UINT16;
13041 COMMODITY_NON_RETURN_ZERO_TRIGGER : UINT16;
13042 END;
Tables / Decade 16: One-way Devices 355
Table 160 One-way Dimension Limits Table
DRAFT ANSI C12.19-2012

13043 TYPE ONE_WAY_RCD = PACKED RECORD


13044 WAKE_UP_FUNC_FLAGS : WAKE_UP_FUNC_FLAG_BFLD;
13045 REGISTER_READ_FUNC_FLAGS : REGISTER_READ_FUNC_FLAG_BFLD;
13046 DATA_TRANSMIT_FUNC_FLAGS : DATA_TRANSMIT_FUNC_BFLD;
13047 WAKE_CODE_LEN : UINT8;
13048 COMMODITY_OUTAGE_DUTY : COMMODITY_OUTAGE_DUTY_RCD;
13049 COMMODITY_ZERO_USAGE : COMMODITY_ZERO_USAGE_RCD;
13050 NBR_COMMANDS : UINT8;
13051 END;

13052 TABLE 160 DIM_ONE_WAY_TBL = ONE_WAY_RCD;

13053 Table 160 Element Descriptions

13054 Identifier Value Definition


13055 WAKE_UP_FUNC_FLAG_BFLD
13056 ALWAYS_AWAKE_FLAG FALSE End Device is not capable of being always awake.
13057 TRUE End Device is capable of being always awake.

13058 PERIODIC_SELF_WAKE_FLAG
13059 FALSE End Device is not capable of self-waking at programmed
13060 period.
13061 TRUE End Device is capable of self-waking at programmed period.

13062 EXTERNAL_WAKE_FLAG
13063 FALSE End Device is not awakened by external stimulus.
13064 TRUE End Device is awakened by external stimulus.

13065 RF_TRANSM_WAKE_FLAG
13066 FALSE End Device is not capable of being awakened by specific RF
13067 transmission energy.
13068 TRUE End Device is capable of being awakened by specific RF
13069 transmission energy.

13070 IR_TRANSM_WAKE_FLAG
13071 FALSE End Device is not capable of being awakened by specific IR
13072 transmission energy.
13073 TRUE End Device is capable of being awakened by specific IR
13074 transmission energy.

13075 PL_TRANSM_WAKE_FLAG
13076 FALSE End Device is not capable of being awakened by specific PL
13077 transmission energy.
13078 TRUE End Device is capable of being awakened by specific PL
13079 transmission energy.

13080 POT_WAKE_FLAG FALSE End Device is not capable of being awakened by Plain Old
13081 Telephone modem energy.
13082 TRUE End Device is capable of being wakened by Plain Old
13083 Telephone modem energy.

13084 LAN_WAN_WAKE_FLAG FALSE End Device is not capable of being awakened by specific
13085 LAN/WAN energy.

356
DRAFT ANSI C12.19-2012

13086 TRUE End Device is capable of being awakened by specific


13087 LAN/WAN energy.

13088 FILLER Reserved.

13089 REGISTER_READ_FUNC_FLAG_BFLD
13090 REG_READ_IMMEDIATE_WAKE_FLAG
13091 FALSE End Device is not capable of reading register immediately
13092 after waking.
13093 TRUE End Device is capable of reading register immediately after
13094 waking.

13095 REG_READ_DELAY_TO_TIME_FLAG
13096 FALSE End Device is not capable of reading register with a time delay
13097 after waking.
13098 TRUE End Device is capable of reading register with a time delay
13099 after waking.

13100 REG_READ_EXTERNAL_STIME_FLAG
13101 FALSE End Device is not capable of reading register after external
13102 stimulus.
13103 TRUE End Device is capable of reading register after external
13104 stimulus.

13105 FILLER Reserved.

13106 DATA_TRANSMIT_FUNC_BFLD
13107 DATA_XMIT_IMMEDIATE_READ
13108 FALSE End Device is not capable of transmitting data immediately
13109 after register read.
13110 TRUE End Device is capable of transmitting data immediately after
13111 register read.

13112 DATA_XMIT_DELAY_TO_TIME_FLAG
13113 FALSE End Device is not capable of transmitting data after a chosen
13114 time delay after register read.
13115 TRUE End Device is capable of transmitting data after a chosen time
13116 delay after register read.

13117 FILLER Reserved.

13118 COMMODITY_OUTAGE_DUTY_RCD
13119 COMMODITY_OUTAGE_DUTY_NUM
13120 0..65535 Maximum number of power outage events that can be counted
13121 and timed by the one-way End Device.

13122 RESTORATION_CALL_ATTEMPTS
13123 0..255 Maximum number of outage call tries the End Device shall
13124 perform.

13125 RESTORATION_CALL_WAIT
13126 0..255 Maximum time in seconds after outage is restored before
13127 outage message is transmitted.

Tables / Decade 16: One-way Devices 357


Table 160 One-way Dimension Limits Table
DRAFT ANSI C12.19-2012

13128 COMMODITY_ZERO_USAGE_RCD
13129 COMMODITY_ZERO_USAGE
13130 0..65535 Minimum amount of time in seconds before a commodity, not
13131 being utilized, can be treated as an “off” condition.

13132 COMMODITY_ZERO_USAGE_TRIGGER
13133 0..65535 Maximum period of time, in minutes, of zero commodity
13134 usage measured by the End Device that will trigger an alarm
13135 call, e.g., water usage stopped for 480 minutes.

13136 COMMODITY_NON_RETURN_ZERO_TRIGGER
13137 0..65535 Maximum period of time, in minutes, of “nonreturn to zero
13138 usage” that constitutes a trigger for a warning call to client for
13139 potential water or other commodity supply breach. A zero
13140 usage event is defined by a zero commodity usage of the
13141 client. It is a normal operation to have numerous small
13142 intervals of zero usage of commodities such as water. A
13143 “nonreturn to zero usage” event could describe a breach of a
13144 load-side line of metered commodity that would not allow the
13145 metering of the commodity to recognize a zero usage event.

13146 ONE_WAY_RCD
13147 WAKE_UP_FUNC_FLAGS See WAKE_UP_FUNC_FLAG_BFLD.

13148 REGISTER_READ_FUNC_FLAGS See REGISTER_READ_FUNC_FLAG_BFLD.

13149 DATA_TRANSMIT_FUNC_FLAGS See DATA_TRANSMIT_FUNC_BFLD.

13150 WAKE_CODE_LEN 0..255 Maximum number of UINT8s that make up an End Device
13151 wake code.

13152 COMMODITY_OUTAGE_DUTY See COMMODITY_OUTAGE_DUTY_RCD.

13153 COMMODITY_ZERO_USAGE See COMMODITY_ZERO_USAGE_RCD.

13154 NBR_COMMANDS 0..255 Maximum number of commands in One-way


13155 Commands/Responses/Extended User-Defined Tables
13156 (Table 164).

358
DRAFT ANSI C12.19-2012

13157 9.17.2 Table 161 Actual One-way Table

13158 Table 161 Data Description

13159 ACT_ONE_WAY_TBL (Table 161) defines the actual settings for One-way control for the End Device.

13160 Global Default Table Property Overrides: Role=“ACTUAL”

13161 Table 161 Type Definitions

13162 TABLE 161 ACT_ONE_WAY_TBL = ONE_WAY_RCD;

13163 Table 161 Element Descriptions

13164 Identifier Value Definition


13165 WAKE_UP_FUNC_FLAG_BFLD Redefines: DIM_ONE_WAY_TBL.
13166 WAKE_UP_FUNC_FLAG_BFLD.

13167 ALWAYS_AWAKE_FLAG FALSE End Device is not always awake.


13168 TRUE End Device is always awake.

13169 PERIODIC_SELF_WAKE_FLAG
13170 FALSE End Device is not self-waking at programmed period.
13171 TRUE End Device is self-waking at programmed period.

13172 EXTERNAL_WAKE_FLAG FALSE End Device is not awakened by external stimulus.


13173 TRUE End Device is awakened by external stimulus.

13174 RF_TRANSM_WAKE_FLAG
13175 FALSE End Device is not awakened by specific RF transmission
13176 energy.
13177 TRUE End Device is awakened by specific RF transmission energy.

13178 IR_TRANSM_WAKE_FLAG
13179 FALSE End Device is not awakened by specific IR transmission
13180 energy.
13181 TRUE End Device is awakened by specific IR transmission energy.

13182 PL_TRANSM_WAKE_FLAG
13183 FALSE End Device is not awakened by specific PL transmission
13184 energy.
13185 TRUE End Device is awakened by specific PL transmission energy.

13186 POT_WAKE_FLAG FALSE End Device is not awakened by Plain Old Telephone modem
13187 energy.
13188 TRUE End Device is awakened by Plain Old Telephone modem
13189 energy.

13190 LAN_WAN_WAKE_FLAG FALSE End Device is not awakened by specific LAN/WAN energy.
13191 TRUE End Device is awakened by specific LAN/WAN energy.

13192 FILLER Reserved.

Tables / Decade 16: One-way Devices 359


Table 161 Actual One-way Table
DRAFT ANSI C12.19-2012

13193 REGISTER_READ_FUNC_FLAG_BFLD Redefines: DIM_ONE_WAY_TBL.


13194 REGISTER_READ_FUNC_FLAG_BFLD.

13195 REG_READ_IMMEDIATE_WAKE_FLAG
13196 FALSE End Device does not read registers immediately after waking.
13197 TRUE End Device reads registers immediately after waking.

13198 REG_READ_DELAY_TO_TIME_FLAG
13199 FALSE End Device does not read registers with a time delay after
13200 waking.
13201 TRUE End Device reads registers with a time delay after waking.

13202 REG_READ_EXTERNAL_STIME_FLAG
13203 FALSE End Device does not read registers after an external stimulus.
13204 TRUE End Device reads registers after an external stimulus.

13205 FILLER Reserved.

13206 DATA_TRANSMIT_FUNC_BFLD Redefines: DIM_ONE_WAY_TBL.


13207 DATA_TRANSMIT_FUNC_BFLD.

13208 DATA_XMIT_IMMEDIATE_READ
13209 FALSE End Device does not transmit data immediately after registers
13210 were read.
13211 TRUE End Device transmits data immediately after registers were
13212 read.

13213 DATA_XMIT_DELAY_TO_TIME_FLAG
13214 FALSE End Device does not transmit data after a chosen time delay
13215 and after the registers were read.
13216 TRUE End Device transmits the data after a chosen time delay and
13217 after the registers were read.

13218 FILLER Reserved.

13219 COMMODITY_OUTAGE_DUTY_RCD Redefines: DIM_ONE_WAY_TBL.


13220 COMMODITY_OUTAGE_DUTY_RCD.

13221 COMMODITY_OUTAGE_DUTY_NUM
13222 0..65535 Actual number of power outage events that can be counted
13223 and timed by the one-way End Device.

13224 RESTORATION_CALL_ATTEMPTS
13225 0..255 Actual number of outage call tries the End Device shall
13226 perform.
13227 RESTORATION_CALL_WAIT
13228 0..255 Actual time in seconds after outage is restored before outage
13229 message is transmitted.

13230 COMMODITY_ZERO_USAGE_RCD Redefines: DIM_ONE_WAY_TBL.


13231 COMMODITY_ZERO_USAGE_RCD.

13232

360
DRAFT ANSI C12.19-2012

13233 COMMODITY_ZERO_USAGE

13234 0..65535 Actual period of time in seconds after which the commodity
13235 will be defined to be off.

13236 COMMODITY_ZERO_USAGE_TRIGGER
13237 0..65535 Actual period of time, in minutes, of zero commodity usage
13238 measured by the End Device that will trigger an alarm call;
13239 water usage stopped for 480 minutes.

13240 COMMODITY_NON_RETURN_ZERO_TRIGGER
13241 0..65535 Actual period of time, in minutes, of “nonreturn to zero usage”
13242 that constitutes a trigger for a warning call to client for
13243 potential water or other commodity supply breach. A zero
13244 usage event is defined by a zero commodity usage of the
13245 client. It is a normal operation to have numerous small
13246 intervals of zero usage of commodities such as water. A
13247 “nonreturn to zero usage” event could describe a breach of a
13248 load-side line of metered commodity that would not allow the
13249 metering of the commodity to recognize a zero usage event.

13250 ONE_WAY_RCD Redefines: DIM_ONE_WAY_TBL. ONE_WAY_RCD.

13251 WAKE_UP_FUNC_FLAGS See WAKE_UP_FUNC_FLAG_BFLD.

13252 REGISTER_READ_FUNC_FLAGS See REGISTER_READ_FUNC_FLAG_BFLD.

13253 DATA_TRANSMIT_FUNC_FLAGS See DATA_TRANSMIT_FUNC_BFLD.

13254 WAKE_CODE_LEN 0..255 Actual number of UINT8s that make up End Device wake
13255 code.

13256 COMMODITY_OUTAGE_DUTY See COMMODITY_OUTAGE_DUTY_RCD.

13257 COMMODITY_ZERO_USAGE See COMMODITY_ZERO_USAGE_RCD.

13258 NBR_COMMANDS 0..255 Actual number of commands in One-way


13259 Commands/Responses/Extended User-Defined Tables
13260 (Table 164).

Tables / Decade 16: One-way Devices 361


Table 161 Actual One-way Table
DRAFT ANSI C12.19-2012

13261 9.17.3 Table 162 One-way Control Table

13262 Table 162 Data Description

13263 ONE_WAY_CONTROL_TBL (Table 162) contains grouped control choices for managing waking, register
13264 reading, and transmitting data.

13265 Global Default Table Property Overrides: Role=“CONTROL”

13266 Table 162 Type Definitions

13267 TYPE WAKE_DATA_RCD = PACKED RECORD


13268 FREQ : NI_FMAT2;
13269 MODULATION : UINT8;
13270 WAKE_CODE :
13271 BINARY(ACT_ONE_WAY_TBL. WAKE_CODE_LEN);
13272 END;

13273 TYPE ONE_WAY_WAKE_RCD = PACKED RECORD


13274 IF ACT_ONE_WAY_TBL.ALWAYS_AWAKE_FLAG THEN
13275 REG_READ_TIMING : RDATE;
13276 XMIT_DATA_TIMING : RDATE;
13277 ELSE
13278 IF ACT_ONE_WAY_TBL.PERIODIC_SELF_WAKE_FLAG THEN
13279 SELF_WAKE_PERIOD : UINT32;
13280 END;
13281 IF ACT_ONE_WAY_TBL. EXTERNAL_WAKE_FLAG THEN
13282 IF ACT_ONE_WAY_TBL.RF_TRANSM_WAKE_FLAG THEN
13283 RF_WAKE : WAKE_DATA_RCD;
13284 END;
13285 IF ACT_ONE_WAY_TBL.IR_TRANSM_WAKE_FLAG THEN
13286 IR_WAKE : WAKE_DATA_RCD;
13287 END;
13288 IF ACT_ONE_WAY_TBL.PL_TRANSM_WAKE_FLAG THEN
13289 PL_WAKE : WAKE_DATA_RCD;
13290 END;
13291 IF ACT_ONE_WAY_TBL.POT_WAKE_FLAG THEN
13292 POT_WAKE :
13293 BINARY(ACT_ONE_WAY_TBL. WAKE_CODE_LEN);
13294 END;
13295 IF ACT_ONE_WAY_TBL.LAN_WAN_WAKE_FLAG THEN
13296 LAN_WAN_WAKE :
13297 BINARY(ACT_ONE_WAY_TBL. WAKE_CODE_LEN);
13298 END;
13299 END;
13300 END;
13301 INTENDED_REG_READ_XMIT_TIMING : UINT32;
13302 END;

13303 TYPE ED_SECURITY_MODE_BFLD = BIT FIELD OF UINT8


13304 SECURITY_MODE : UINT(0..2);
13305 FILLER : FILL (3..7);
13306 END;

362
DRAFT ANSI C12.19-2012

13307 TYPE ED_CONTROL_RCD = PACKED RECORD


13308 WAKE_DATA : ONE_WAY_WAKE_RCD;
13309 SECURITY_MODE : ED_SECURITY_MODE_BFLD;
13310 END;

13311 TABLE 162 ONE_WAY_CONTROL_TBL = ED_CONTROL_RCD;

13312 Table 162 Element Descriptions

13313 Identifier Value Definition


13314 WAKE_DATA_RCD
13315 FREQ The transmit frequency of awakening device in hertz.

13316 MODULATION Types of modulation.


13317 0 No modulation.
13318 1 Frequency modulation.
13319 2 AM modulation.
13320 3 Spread spectrum modulation.
13321 4..255 Reserved.

13322 WAKE_CODE Wake code.

13323 ONE_WAY_WAKE_RCD
13324 REG_READ_TIMING End Device performs a register read periodically defined by
13325 RDATE value.

13326 XMIT_DATA_TIMING End Device transmits data periodically defined by RDATE.

13327 SELF_WAKE_PERIOD 0..4294967295 The period in seconds between awakenings. End Device
13328 wakes via internal means periodically from the beginning of
13329 awakening to the next beginning of awakening in seconds.

13330 RF_WAKE See WAKE_DATA_RCD.

13331 IR_WAKE See WAKE_DATA_RCD.

13332 PL_WAKE See WAKE_DATA_RCD.

13333 POT_WAKE Wake code.

13334 LAN_WAN_WAKE Wake code.

13335 INTENDED_REG_READ_XMIT_TIMING
13336 0..4294967295 End Device data delay till-transmit in seconds after register
13337 reads.

13338 ED_SECURITY_MODE_BFLD
13339 SECURITY_MODE Simple security mode.
13340 Security in the context of one-way devices is interpreted with
13341 respect to:
13342 a) The way the device data transmission was initiated.
13343 Whether inappropriate access of facility may be the cause
13344 of the transmission of the data or such indications may be
13345 contained in the data stream.
Tables / Decade 16: One-way Devices 363
Table 162 One-way Control Table
DRAFT ANSI C12.19-2012

13346 b) Whether the transmitted data is delivered through a


13347 secured medium or in a shared medium, with respect to
13348 who can see the emitted data.
13349 c) Whether recipients of the data can or cannot interpret or
13350 decipher that content of the data.
13351 Low: No special provisions were made or assumed for the
13352 above.
13353 Normal: Normal (reasonable) provisions were made or
13354 assumed for the above.
13355 High: Strict provisions were implemented or assumed to have
13356 been implemented for the above. An example may be: End
13357 Device in high-security mode can sense various tampering
13358 techniques and can initiate an early communication with
13359 normal data with the emergency reporting of tampering. The
13360 data transmission is encrypted.
13361 The actual interpretation of the above is not specified in this
13362 standard and is left to the user for definition. It is not a
13363 configuration or control parameter or a designed capability
13364 indication.
13365 0 Security Mode turned off.
13366 1 Security Mode is Low.
13367 2 Security Mode is Normal.
13368 3 Security Mode is High.
13369 4..7 Reserved.

13370 FILLER Reserved.

13371 ED_CONTROL_RCD
13372 WAKE_DATA See ONE_WAY_WAKE_RCD.

13373 SECURITY_MODE See ED_SECURITY_MODE_BFLD.

364
DRAFT ANSI C12.19-2012

13374 9.17.4 Table 163 One-way Data Status Table

13375 Table 163 Data Description

13376 SIMPLE_DEVICE_STATUS_DATA_TIMING_TBL (Table 163) contains data related to register reading and
13377 actual transmission of the data such that register data may be stamped more accurately at upstream communication
13378 nodes with the knowledge of the time of reading and actual data transmission. Also, this table contains the status
13379 data of this meter.

13380 Global Default Table Property Overrides: Role=“DATA”, Accessibility=“READONLY”

13381 Table 163 Type Definitions

13382 TYPE SIMPLE_END_DEVICE_MODE_BFLD = BIT FIELD OF UINT16


13383 ONEWAY_COM : BOOL(0);
13384 LOCAL_NETWORK_COM : BOOL(1);
13385 RELAY_MODE : BOOL(2);
13386 SECURITY_MODE : UINT(3..5);
13387 FILLER : FILL(6..15);
13388 END;

13389 TYPE COMMODITY_OUTAGE_STATUS_BFLD = BIT FIELD OF UINT8


13390 NBR_POWER_OUTAGE_EVENTS : UINT(0..2);
13391 FILLER : FILL(3..6);
13392 POWER_IS_ON_FLAG : BOOL (7);
13393 END;

13394 TYPE COMMODITY_OUTAGE_DUTY_BFLD = BIT FIELD OF UINT32


13395 OUTAGE_DURATION : UINT(0..15);
13396 POWERUP_DURATION : UINT(16..31);
13397 END;

13398 TYPE SIMPLE_END_DEVICE_STATUS_RCD = PACKED RECORD


13399 COMMODITY_OUTAGE_STATUS : COMMODITY_OUTAGE_STATUS_BFLD;
13400 COMMODITY_OUTAGE_DUTY :
13401 ARRAY [ACT_ONE_WAY_TBL.
13402 COMMODITY_OUTAGE_DUTY_NUM] OF
13403 COMMODITY_OUTAGE_DUTY_BFLD;
13404 COMMODITY_RESTORATION : UINT16;
13405 COMMODITY_NON_RETURN_TO_ZERO_DURATION : UINT16;
13406 RTC_TIME : LTIME_DATE;
13407 RTC_DRIFT : INT16;
13408 SPARE : UINT8;
13409 END;

13410 TYPE DEVICE_STATUS_RCD = PACKED RECORD


13411 ACTUAL_REG_READ_XMIT_TIMING : UINT32;
13412 SIMPLE_END_DEVICE_MODE : SIMPLE_END_DEVICE_MODE_BFLD;
13413 SIMPLE_END_DEVICE_STATUS : SIMPLE_END_DEVICE_STATUS_RCD;
13414 END;

13415 TABLE 163 SIMPLE_DEVICE_STATUS_DATA_TIMING_TBL = DEVICE_STATUS_RCD;

13416 Table 163 Element Descriptions


Tables / Decade 16: One-way Devices 365
Table 163 One-way Data Status Table
DRAFT ANSI C12.19-2012

13417 Identifier Value Definition


13418 SIMPLE_END_DEVICE_MODE_BFLD
13419 ONEWAY_COM FALSE End Device communicates “Two-way”.
13420 TRUE End Device communicates “One-way”.

13421 LOCAL_NETWORK_COM
13422 FALSE End Device communicates via handheld reader or other point-
13423 to-point com node.
13424 TRUE End Device communicates via network or LAN/WAN.

13425 RELAY_MODE FALSE End Device does not provide relay com function.
13426 TRUE End Device provides relay com function.

13427 SECURITY_MODE See ONE_WAY_CONTROL_TBL.


13428 ED_SECURITY_MODE_BFLD.
13429 SECURITY_MODE_ENUM.

13430 FILLER Reserved.

13431 COMMODITY_OUTAGE_STATUS_BFLD
13432 NBR_POWER_OUTAGE_EVENTS
13433 0..7 Number of power outage events during that day; reset at
13434 00:00:00 local time.

13435 FILLER Reserved.

13436 POWER_IS_ON_FLAG FALSE Power outage is currently underway.


13437 TRUE Power is currently on.

13438 COMMODITY_OUTAGE_DUTY_BFLD
13439 OUTAGE_DURATION 0..65535 The outage duration in minutes (No Roll Over).

13440 POWERUP_DURATION 0..65535 The time in minutes since outage (No Roll Over).

13441 SIMPLE_END_DEVICE_STATUS_RCD
13442 COMMODITY_OUTAGE_STATUS See COMMODITY_OUTAGE_STATUS_BFLD.

13443 COMMODITY_OUTAGE_DUTY An array of COMMODITY_OUTAGE_DUTY_BFLD, each


13444 containing the commodity outage duration and the length of
13445 time it was on following that outage.

13446 COMMODITY_RESTORATION
13447 0..65535 The time in seconds since commodity restoration.

13448 COMMODITY_NON_RETURN_TO_ZERO_DURATION
13449 0..65535 Minutes since last zero consumption event measured by End
13450 Device; End Device will report if commodity flow has not
13451 stopped in ACT_ONE_WAY_TBL.
13452 COMMODITY_NON_RETURN_ZERO_TRIGGER. A
13453 zero consumption event is defined when the commodity is not
13454 used for ACT_ONE_WAY_TBL.
13455 COMMODITY_ZERO_USAGE seconds.

13456 RTC_TIME The time when the reading was taken.


366
DRAFT ANSI C12.19-2012

13457 RTC_DRIFT -32768..32767 Number of seconds of drift since the last time the clock was
13458 adjusted.

13459 SPARE 0..255 Unassigned interpretation for use by End Device Owner.

13460 DEVICE_STATUS_RCD
13461 ACTUAL_REG_READ_XMIT_TIMING
13462 0..4294967295 Time in seconds between reading register(s) and transmitting
13463 of the data.

13464 SIMPLE_END_DEVICE_MODE See SIMPLE_END_DEVICE_MODE_BFLD.

13465 SIMPLE_END_DEVICE_STATUS See SIMPLE_END_DEVICE_STATUS_RCD.

Tables / Decade 16: One-way Devices 367


Table 163 One-way Data Status Table
DRAFT ANSI C12.19-2012

13466 9.17.5 Table 164 One-way Commands/Responses/Extended User-defined Tables Table

13467 Table 164 Data Description

13468 ONE_WAY_COMMANDS_RESPONSES_EXTENDED_USER_DEFINED_TABLES_TBL (Table 164)


13469 contains an array for relational positions of commands/responses/extended-user-defined tables.

13470 Global Default Table Property Overrides: Role=“CONTROL”

13471 Table 164 Type Definitions

13472 TYPE ED_CMD_RESP_RESCMD_RESCMDRESP_EUDT_NUM_RCD = PACKED RECORD


13473 COMMAND_NUMBER : UINT16;
13474 COMMANDRESPONSE_NUMBER : UINT16;
13475 CORRESPONDING_EUDT_FOR_COMMAND_NUMBER
13476 : STD.TABLE_IDA_BFLD;
13477 CORRESPONDING_EUDT_FOR_COMMANDRESPONSE_NUMBER
13478 : STD.TABLE_IDA_BFLD;
13479 RESERVE_COMMAND_NUMBER : UINT16;
13480 RESERVE_COMMANDRESPONSE_NUMBER : UINT16;
13481 CORRESPONDING_EUDT_FOR_RESCOMMAND_NUMBER
13482 : STD.TABLE_IDA_BFLD;
13483 CORRESPONDING_EUDT_FOR_RESCOMMANDRESPONSE_NUMBER
13484 : STD.TABLE_IDA_BFLD;
13485 END;

13486 TYPE COMMANDS_RCD = PACKED RECORD


13487 COMMANDS :
13488 ARRAY [ACT_ONE_WAY_TBL. NBR_COMMANDS] OF
13489 ED_CMD_RESP_RESCMD_RESCMDRESP_EUDT_NUM_RCD;
13490 END;

13491 TABLE 164 ONE_WAY_COMMANDS_RESPONSES_EXTENDED_USER_DEFINED_TABLES_TBL =


13492 COMMANDS_RCD;

13493 Table 164 Element Descriptions

13494 Identifier Value Definition


13495 ED_CMD_RESP_RESCMD_RESCMDRESP_EUDT_NUM_RCD
13496 COMMAND_NUMBER 0..65535 Command number.

13497 COMMANDRESPONSE_NUMBER
13498 0..65535 Response number that corresponds to a specific command.

13499 CORRESPONDING_EUDT_FOR_COMMAND_NUMBER
13500 TABLE_IDA_BFLD represents the table number, table type,
13501 and two operational flags. The flags are not utilized in this
13502 context.

13503
13504

368
DRAFT ANSI C12.19-2012

13505 CORRESPONDING_EUDT_FOR_COMMANDRESPONSE_NUMBER
13506 TABLE_IDA_BFLD represents the table number, table type,
13507 and two operational flags. The flags are not utilized in this
13508 context.

13509 RESERVE_COMMAND_NUMBER
13510 0..65535 Reserve command number.

13511 RESERVE_COMMANDRESPONSE_NUMBER
13512 0..65535 Reserve command response number that corresponds to a
13513 specific reserve command response.

13514 CORRESPONDING_EUDT_FOR_RESCOMMAND_NUMBER
13515 TABLE_IDA_BFLD represents the table number, table type,
13516 and two operational flags. The flags are not utilized in this
13517 context.

13518 CORRESPONDING_EUDT_FOR_RESCOMMANDRESPONSE_NUMBER
13519 TABLE_IDA_BFLD represents the table number, table type,
13520 and two operational flags. The flags are not utilized in this
13521 context.

13522 COMMANDS_RCD
13523 COMMANDS A collection of commands.
13524
13525

Tables / Decade 16: One-way Devices 369


Table 164 One-way Commands/Responses/Extended User-defined Tables Table
DRAFT ANSI C12.19-2012

13526 Annex A (informative) Reserved Device Classes for meter equipment


13527 manufacturers implementing ANSI C12.19-1997 devices
13528 The MANUFACTURER (and related fields) codes ANSI C12.19-1997 and DEVICE_CLASS codes
13529 ANSI C12.19-2008 are encoded as 8-bit binary values as defined by the ASCII character set.

Reserved Reserved
Reserved Company using
Relative Relative
Device Class ANSI C12.19-1997 (V1.0)
Device Class Device Class
Name End Device
(Dot Decimal) (Hex)
“ABB ” ABB .65.66.66.32 41 42 42 20
“AIL ” American Innovations, Ltd. .65.73.76.32 41 49 4C 20
“AMCO” American Meter Company .65.77.67.79 41 4D 43 4F
“APTH” Aptech Inc. .65.80.84.72 41 50 54 48
“BMI ” Badger Meter Inc. .66.77.73.32 42 4D 49 20
“CMVG” Comverge Technologies Inc. .67.77.86.71 43 4D 56 47
“DMTC” Datamatic, Inc. .68.77.84.67 44 4D 54 43
“EE ” Elster Electricity .69.69.32.32 45 45 20 20
“EPRI” Electric Power Research Institute .69.80.82.73 45 50 52 49
“GE ” General Electric .71.69.32.32 47 45 20 20
“ITD ” International Teldata Corporation .73.84.68.32 49 54 44 20
“ITRN” Itron .73.84.82.78 49 54 52 4E
“JEM ” Scientific Columbus Company .74.69.77.32 4A 45 4D 20
“LGYR” Landis+Gyr Inc. .76.71.89.82 4C 47 59 52
“MM ” Master Meter .77.77.32.32 4D 4D 20 20
“MTC ” Metering Technology Corporation .77.84.67.32 4D 54 43 20
“ND ” NERTEC Design Inc. .78.68.32.32 4E 44 20 20
“SCH ” Schlumberger .83.67.72.32 53 43 48 20
“SENS” Sensus Metering Systems .83.69.78.83 53 45 4E 53
“SPTD” Siemens Power Transmission & Distribution, Inc. .83.80.84.68 53 50 54 44
“TEMP” For new manufacturers who are not yet included in this .84.69.77.80 54 45 4D 50
list.
“WEXL” WeXL .87.69.88.76 57 45 58 4C

13530 Manufacturers implementing this standard and registrars shall not assign End Device classes from this reserved list.

13531 The presence of any of the above ID Codes is permitted only in ANSI C12.19-1997 V1.0 compliant
13532 implementations.

370
DRAFT ANSI C12.19-2012

13533 Annex B (normative) History and event log codes

13534 B.1 Codes


Code Event Argument
00 No Event None
01 Primary Power Down None
02 Primary Power Up None
03 Time Changed (old time) None. Time tag, if used, equals old time.
04 Time Changed (new time) None. Time tag, if used, equals new time.
05 Time Changed (old time) Old time in STIME_DATE format.
06 Time Changed (new time) New time in STIME_DATE format.
07 End Device Accessed for Read None
08 End Device Accessed for Write None
09 Procedure Invoked TABLE_IDC_BFLD
10 Table Written To TABLE_IDA_BFLD
11 End Device Programmed None
12 Communication Terminated Normally None
13 Communication Terminated Abnormally None
14 Reset List Pointers LIST(UINT8) {Reference procedure 4, 9.1.8.1.5}
15 Update List Pointers LIST (UINT8) {Reference procedure 5, 9.1.8.1.6}
16 History Log Cleared None
17 History Log Pointers Updated Value of Procedure Parameter (UINT16)
18 Event Log Cleared None
19 Event Log Pointers Updated Value of Procedure Parameter (UINT16)
20 Demand Reset Occurred None
21 Self-read Occurred None
22 Daylight Saving Time On None
23 Daylight Saving Time Off None
24 Season Change New Season Number (UINT8)
25 Rate Change New Rate(UINT8)
26 Special Schedule Activation New Special Schedule (UINT8)
27 Tier Switch Change New Current Tier (UINT8) followed by New Demand Tier
(UINT8)
28 Pending Table Activation Table number (TABLE_IDA_BFLD).
29 Pending Table Clear Table number (TABLE_IDA_BFLD). Table removed from
End Device prior to activation.
30 Metering Mode Started None
31 Metering mode Stopped None
32 Test Mode Started None
33 Test Mode Stopped None
34 Meter Shop Mode Started None
35 Meter Shop Mode Stopped None
36 End Device Reprogrammed None
37 Configuration Error Detected None
38 Self-Check Error Detected None
39 RAM Failure Detected None
40 ROM Failure Detected None
41 Nonvolatile Memory Failure Detected None
42 Clock Error Detected None
43 Measurement Error Detected None
44 Low Battery Detected None
45 Low Loss Potential Detected None
46 Demand Overload Detected None
47 Tamper Attempt Detected None

Annex B / Codes 371


DRAFT ANSI C12.19-2012

48 Reverse Rotation Detected None


49 Control Point Changed By A Command Control point id (UINT8),
New level (UINT8)
50 Control Point Changed By The Schedule Control point id (UINT8),
New level (UINT8)
51 Control Point Changed By A Condition Control point id (UINT8),
New level (UINT8),
Condition index (UINT8)
52 Control Point Changed For The Control point id (UINT8),
Prepayment
New level (UINT8)
53 Added To Remaining Credit Money (NI_FMAT1)
54 Subtracted To Remaining Credit Money (NI_FMAT1)
55 Adjusted The Remaining Credit Money (NI_FMAT1)
56 End Device Sealed None
57 End Device Unsealed None
58 Procedure Invoked TABLE_IDC_BFLD,
NEW_VALUE
59 Table Written To TABLE_IDA_BFLD,
NEW_VALUE
60 End Device Programmed NEW_VALUE
61 End Device Sealed NEW_VALUE
62 End Device Unsealed NEW_VALUE
63 Procedure Invoked EVENT_CHECK_SIG,
TABLE_IDC_BFLD
64 Table Written To EVENT_CHECK_SIG,
TABLE_IDA_BFLD
65 End Device Programmed EVENT_CHECK_SIG
66 End Device Sealed EVENT_CHECK_SIG
67 End Device Unsealed EVENT_CHECK_SIG
68 Procedure Invoked EVENT_CHECK_SIG,
TABLE_IDC_BFLD,
NEW_VALUE
69 Table Written To EVENT_CHECK_SIG,
TABLE_IDA_BFLD,
NEW_VALUE
70 End Device Programmed EVENT_CHECK_SIG,
NEW_VALUE
71 End Device Sealed EVENT_CHECK_SIG,
NEW_VALUE
72 End Device Unsealed EVENT_CHECK_SIG,
NEW_VALUE
73 Read Secured Table EVENT_CHECK_SIG,
SECURED_REGISTER_SIG,
TABLE_IDA_BFLD,
READ_REQUESTED
74 Read Secured Register EVENT_CHECK_SIG,
SECURED_REGISTER_SIG
READ_REQUESTED
75 Read Secured Table EVENT_CHECK_SIG,
SECURED_REGISTER_SIG,
TABLE_IDA_BFLD,
READ_VALUE
76 Read Secured Register EVENT_CHECK_SIG,
SECURED_REGISTER_SIG,
372
DRAFT ANSI C12.19-2012

READ_VALUE

13535 B.2 Logger arguments implementation details


13536 Code When present in HISTORY_LOG_DATA_TBL (Table 74),
13537 it represents the element HISTORY_CODE encoded as
13538 TABLE_IDB_BFLD.
13539 When present in EVENT_LOG_DATA_TBL (Table 76), it
13540 represents the element EVENT_CODE encoded as
13541 TABLE_IDB_BFLD.
13542 Argument When argument is related to an entry in the
13543 HISTORY_LOG_DATA_TBL, it represents the fixed-width
13544 element HISTORY_ARGUMENT that is encoded as
13545 BINARY(ACT_LOG_TBL.HIST_DATA_LENGTH). The
13546 actual interpretation of the BINARY data element is derived
13547 distinctly for each of the HISTORY_CODEs by looking for
13548 the specific Code / Argument pairs of listings found in this
13549 annex.
13550 When argument is related to an entry in the
13551 EVENT_LOG_DATA_TBL, it represents the fixed-width
13552 element EVENT_ARGUMENT that is encoded as
13553 BINARY(ACT_LOG_TBL.EVENT_DATA_LENGTH). The
13554 actual interpretation of the BINARY data element is derived
13555 distinctly for each of the EVENT_CODEs by looking for the
13556 specific Code/ Argument pairs of listings found in this annex.
13557 All unused trailing Octets of the EVENT_ARGUMENT or
13558 HISTORY_ARGUMENT shall be set to 00H. This ensures
13559 that the terminating NEW_VALUE and READ_VALUE,
13560 which are encoded as ANSI C12.18 PSEM write requests
13561 sequences, have a clear termination (ANSI C12.18 PSEM
13562 requests cannot begin with zero).
13563 TABLE_IDA_BFLD Bit field of Table number and Standard/Manufacturer and
13564 Extended User-defined Table Flag.
13565 TABLE_IDC_BFLD Bit field of Procedure number and Standard/Manufacturer
13566 Flag.
13567 EVENT_CHECK_SIG This argument is a copy of the field EVENT_CHECK_SIG
13568 found in the Signature table (Table 78). This value was
13569 updated upon creation of this event. The most recent
13570 EVENT_CHECK_SIG in Table 78 shall be identical to the
13571 most recent Argument’s EVENT_CHECK_SIG of the logger
13572 at all times.
13573 NEW_VALUE (The reason NEW_VALUE is not bold is that NEW_VALUE
13574 is not based on ANSI C12.19 Syntax.)
13575 Collection of all changes that occurred in one or more
13576 metrological tables. These shall be encoded as an ANSI
13577 C12.18 PSEM write request service sequence.
13578 Shown below is an example encoding of NEW_VALUE for
13579 Standard Tables 11 and 15.

Annex B / Logger arguments implementation details 373


DRAFT ANSI C12.19-2012

13580 Assume the following:

Table ID Element Name Value

11 NBR_CONSTANTS_ENTRIES 1

15 MULTIPLIER 0.0072

OFFSET 0.0

13581 Using the above information, the NEW_VALUE may have the
13582 following binary representation:
13583 4FH 000BH 000005H 0001H 01H FFH
13584 40H 000FH 0008H 0D0072BB0D0BBBBBH 38H
13585 where
13586 4FH is the first ANSI C12.18 PSEM partial write with
13587 offset service request code of the sequence with
13588 two requests.
13589 000BH is the table identifier.
13590 000005H is the Octet offset to
13591 NBR_CONSTANTS_ENTRIES.
13592 0001H is the number of Octets delivered.
13593 01H is the value of NBR_CONSTANTS_ENTRIES.
13594 FFH is the PSEM request’s Table-data checksum.
13595 Then:
13596 40H is the second ANSI C12.18 PSEM full write
13597 service request code in the sequence.
13598 000FH is the table identifier.
13599 0008H is the number of Octets delivered.
13600 0D0072BBH
13601 is the value of the MULTIPLIER = 0.0072
13602 (encoded in BCD; i.e., this assumes that Table 0
13603 element NI_FORMAT1 = 6).
13604 0D0BBBBBH
13605 is the value of the OFFSET = 0.0 (also encoded
13606 in BCD).
13607 38 H is the PSEM request’s Table-data checksum.

13608 In the above example, we also assumed that


13609 ACT_SOURCES_LIM_TBL.
13610 NBR_CONSTANTS_ENTRIES = 1,
13611 ACT_SOURCES_LIM_TBL.CONSTANTS_SELECTOR
13612 = ELECTRIC_CONSTANTS,
13613 ACT_SOURCES_LIM_TBL.SET1_PRESENT_FLAG =
13614 FALSE, and
13615 ACT_SOURCES_LIM_TBL.SET2_PRESENT_FLAG =
13616 FALSE.
13617 Trailing 00H may follow, as needed, to fill the remainder of
13618 the HISTORY_ARGUMENT or EVENT_ARGUMENT.
13619 SECURED_REGISTER_SIG This shall be used to record the signature of the Table-data
13620 portion only of the transmitted ANSI C12.18 PSEM responses

374
DRAFT ANSI C12.19-2012

13621 of “secured register” table(s) or elements from tables. The


13622 exclusion of the PSEM request code, count, and checksum
13623 enables an End Device logger to cast any large read request
13624 into a sequence of manageable smaller read responses without
13625 compromising the interpretation of
13626 SECURED_REGISTER_SIG while maintaining the ability to
13627 relate the logged values to the values actually transmitted to
13628 the AMR system by any underlying communication protocol.
13629 The aggregation and digest processing shall be performed in
13630 the same order as the ANSI C12.18 PSEM read service
13631 requests sequence. For digest algorithm selection details, see
13632 SIGNATURE_TBL (Table 78). The
13633 SECURED_REGISTER_SIG shall be encoded for transport
13634 as BINARY(16).
13635 READ_REQUESTED Collection of all read requests that were performed in one or
13636 more secured register tables. These are encoded as an
13637 ANSI C12.18 PSEM read request service sequence.
13638 Shown below is an example encoding of a
13639 READ_REQUESTED value for Standard Tables 11 and 15.
13640 Assume the following:

Table ID Element Name Value

11 NBR_CONSTANTS_ENTRIES 1

15 MULTIPLIER 0.0072

OFFSET 0.0

13641 Using the above information, the READ_REQUESTED may


13642 have the following binary representation:
13643 3FH 000BH 000005H 0001H
13644 30H 000FH
13645 where
13646 3FH is the first ANSI C12.18 PSEM partial read with
13647 offset service request code of a sequence with
13648 two requests.
13649 000BH is the table identifier.
13650 000005H is the Octet offset to
13651 NBR_CONSTANTS_ENTRIES.
13652 0001H is the number of Octets read.
13653 Then:
13654 30H is the second ANSI C12.18 PSEM full read
13655 service request code in the sequence.
13656 000FH is the table identifier.
13657 In the above example, we made the same assumptions that
13658 were applicable in the example for NEW_VALUE.

Annex B / Logger arguments implementation details 375


DRAFT ANSI C12.19-2012

13659 Trailing 00H shall follow as needed to fill the remainder of the
13660 HISTORY_ARGUMENT or EVENT_ARGUMENT if
13661 there is no following READ_VALUE.
13662 READ_VALUE Collection of all data delivered from one or more secured
13663 register tables. These are sequenced in the same order as the
13664 corresponding PSEM read requests that triggered this event.
13665 The encoding of READ_VALUE is identical to
13666 NEW_VALUE.
13667 The corresponding SECURED_REGISTER_SIG is computed
13668 from the table data portions only. Reusing the values in the
13669 example for NEW_VALUE above, the logger would digest
13670 the following Table data values 01H, 0D0072BBH and
13671 0D0BBBBBH to yield the BINARY(16) secured register
13672 signatures in accordance with ACT_LOG_TBL.
13673 EXT_LOG_FLAGS.SIG_ALGORITHM.
13674 Case 0: MD5 algorithm,
13675 81D07F9F27978AD661D40945EFDA92D3 H
13676 Case 1: SHA-256 algorithm,
13677 D41940B52D3BE0409C7AF63681987FD7ECBEEC69BBB520BC99CBB8BAB203D006
13678 In the above example, the size of the SHA-256 hash is
13679 32 Octets. Only the first 16 Octets are retained as the
13680 signature. The remainders (grayed out) are discarded.

13681 B.3 Logger codes interpretation details

13682 Logger codes 0 through 55 have straightforward interpretations. However, logger codes 56 through 76 were
13683 introduced to facilitate an implementation of a well-defined logging and auditing system in environments where
13684 program change management, End Device state tracking, and data integrity audits are desired. The code descriptions
13685 and clarifications below are provided to facilitate a uniform implementation of these Loggers.

Code Event Description

56 End Device Sealed This is an indication that the End Device has been fully
programmed and sealed.
57 End Device Unsealed This is an indication that the End Device Seal has been
removed or that the End Device program or configuration
data has been compromised.
58 Procedure Invoked A single metrological procedure invocation event.
TABLE_IDC_BFLD identifies the metrological procedure
that triggered this event.
NEW_VALUE represents the collection of all table
changes that occurred as a result of the invocation of
this metrological procedure.
59 Table Written To A single Metrological Table modification event.
TABLE_IDA_BFLD identifies the metrological table
change that triggered this event. All the fields are
identical to that of event code 58, except that the
TBL_PROC_NBR subelement is the table number.
NEW_VALUE represents the collection of all table
changes that occurred. No other tables were affected.

376
DRAFT ANSI C12.19-2012

Code Event Description


60 End Device Programmed Metrological tables modified or programmed event.
NEW_VALUE represents the collection of all changes that
occurred in more than one metrological table.
61 End Device Sealed A seal verification assertion event (see code 56).
NEW_VALUE represents the content of all metrological
tables that were configured prior to sealing the End
Device.
If the EVENT_ARGUMENT or
HISTORY_ARGUMENT is too small to hold a copy
of all metrological tables at the time of the
verification, then this event code shall be preceded by
one or more instances of codes 58, 59, or 60 as needed
to capture the state of all metrological tables sealed.
62 End Device Unsealed A seal removal event and a likely need for re-verification
(see code 57).
NEW_VALUE represents the collection of all changes
that occurred to cause the seal removal re-verification
event.

If the EVENT_ARGUMENT or
HISTORY_ARGUMENT is too small to hold a copy
of all changes that triggered this event, this code shall
be preceded by one or more instances of codes 58, 59,
or 60 as needed to capture all changes to the End
Device metrological tables elements.

63 Procedure Invoked A single metrological procedure invocation event.


EVENT_CHECK_SIG is the event check signature for
this event entry.

TABLE_IDC_BFLD identifies the metrological procedure


that triggered this event.
64 Table Written To A single metrological table modification event.
EVENT_CHECK_SIG is the event check signature for
this event entry.
TABLE_IDA_BFLD identifies the metrological table
change that triggered this event.
65 End Device Programmed One or more metrological tables were modified or
programmed event.
EVENT_CHECK_SIG is the event check signature for
this event entry.
66 End Device Sealed A seal-verification assertion event (see code 56).
EVENT_CHECK_SIG is the event check signature for
this event entry.

67 End Device Unsealed A seal removal and request for re-verification event (see
code 57).
EVENT_CHECK_SIG is the event check signature for
this event entry.

Annex B / Logger codes interpretation details 377


DRAFT ANSI C12.19-2012

Code Event Description


68 Procedure Invoked A single metrological procedure invocation event.
EVENT_CHECK_SIG is the event check signature for
this event entry.
TABLE_IDC_BFLD identifies the metrological procedure
that triggered this event.
NEW_VALUE represents the collection of all changes
that occurred as a result of the invocation of the
metrological procedure.
69 Table Written To A single metrological Table modification event.
EVENT_CHECK_SIG is the event check signature for
this event entry.
TABLE_IDA_BFLD identifies the metrological table
change that triggered this event.
NEW_VALUE represents the collection of all changes
that occurred to this table.
If the EVENT_ARGUMENT or
HISTORY_ARGUMENT is too small to hold a copy
of all the changes, then it is expected that this event
shall be repeated as many times as needed to capture
all metrological changes to this table.
70 End Device Programmed Indicates one or more metrological tables were modified or
programmed.
EVENT_CHECK_SIG is the event check signature for
this event entry.

NEW_VALUE represents the collection of all changes


that occurred as a result of the modification to the
metrological tables. Encoded as ANSI C12.18 PSEM
write request service sequence.
If the EVENT_ARGUMENT or
HISTORY_ARGUMENT is too small to hold a copy
of all metrological tables, then it is expected that this
event code shall be preceded by one or more instances
of codes 68, 69, or 70 as needed to capture the state of
all metrological tables modified.
71 End Device Sealed A seal-verification assertion event (see code 56).
EVENT_CHECK_SIG is the event check signature for
this event entry.
NEW_VALUE represents the content of all metrological
tables that were configured prior to sealing the End
Device.

If the EVENT_ARGUMENT or
HISTORY_ARGUMENT is too small to hold a copy
of all metrological tables at the time of the
verification, then it is expected that this event code
shall be preceded by one or more instances of codes
58, 59, or 60 as needed to capture the state of all
metrological tables sealed.

378
DRAFT ANSI C12.19-2012

Code Event Description


72 End Device Unsealed A seal removal and request for re-verification event (see
code 57).
EVENT_CHECK_SIG is the event check signature for
this event entry.

NEW_VALUE is the collection of all changes that


occurred to cause the seal removal re-verification
event. These are encoded as ANSI C12.18 PSEM
write request service sequence.
If the EVENT_ARGUMENT or
HISTORY_ARGUMENT is too small to hold a copy
of all changes that triggered this event, this code may
be preceded by one or more instances of codes 58, 59,
or 60 as needed to capture the changes to the End
Device metrological tables elements.

73 Read Secured Table Event code generated upon reading of a single secured
register table.
EVENT_CHECK_SIG is the event check signature for
this event entry.
SECURED_REGISTER_SIG is the signature of the
collation of all read responses sent as a result of
processing all the read requests indicated by
READ_REQUESTED.
TABLE_IDA_BFLD identifies the metrological table that
was read and triggered this event.
READ_REQUESTED is the collection of all read requests
whose responses were processed into the
SECURED_REGISTER_SIG.
74 Read Secured Register Event code generated upon reading one or more secured
register tables.
EVENT_CHECK_SIG is the event check signature for
this event entry.
SECURED_REGISTER_SIG is the signature of the
collation of all read responses sent as a result of
processing all the read requests indicated by
READ_REQUESTED.
READ_REQUESTED is the collection of all read requests
whose responses were processed into the
SECURED_REGISTER_SIG.
75 Read Secured Table Event code generated upon reading of a single secured
register table.
EVENT_CHECK_SIG is the event check signature for
this event entry.
SECURED_REGISTER_SIG is the signature of the
collation of all read responses sent as a result of
processing all the read requests indicated by
READ_REQUESTED.
TABLE_IDA_BFLD identifies the metrological table that
was read and triggered this event.
READ_VALUE is the collection of all read responses that
were processed into the SECURED_REGISTER_SIG.

Annex B / Logger codes interpretation details 379


DRAFT ANSI C12.19-2012

Code Event Description


76 Read Secured Register Event code generated upon reading one or more secured
register tables.
EVENT_CHECK_SIG is the event check signature for
this event entry.
SECURED_REGISTER_SIG is the signature of the
collation of all read responses sent as a result of
processing all the read requests indicated by
READ_REQUESTED.
READ_VALUE is the collection of all read responses that
were processed into the SECURED_REGISTER_SIG.
13686

380
DRAFT ANSI C12.19-2012

13687 Annex C (normative) Default Sets for Decade Tables


13688 The following values are assigned to the FLC+1 Table values based on the value of the TABLE 00 Element
13689 DEFAULT_SET_USED.

Final Element DEFAULT_SET_USED


1 2 3 4
Table 11 - Actual Sources Limiting Table
PF_EXCLUDE_FLAG 0 0 1 0
RESET_EXCLUDE_FLAG 0 1 1 0
BLOCK_DEMAND_FLAG 0 1 1 1
SLIDING_DEMAND_FLAG 0 0 0 0
THERMAL_DEMAND_FLAG 0 0 0 0
SET1_PRESENT_FLAG 0 0 0 0
SET2_PRESENT_FLAG 0 0 0 0
CONVERSION_ALG_FLAG 1 1 1 1
NBR_UOM_ENTRIES 0 0 0 0
NBR_DEMAND_CTRL_ENTRIES 0 1 3 1
DATA_CTRL_LENGTH 1 1 1 1
NBR_DATA_CTRL_ENTRIES 1 2 2 2
NBR_CONSTANTS_ENTRIES 1 1 1 1
CONSTANTS_SELECTOR 2 2 2 2
NBR_SOURCES 1 2 2 2

Table 21 - Actual Register Limiting Table


SEASON_INFO_FIELD_FLAG 0 0 0 0
DATE_TIME_FIELD_FLAG 0 0 0 0
DEMAND_RESET_CTR_FLAG 0 1 1 0
DEMAND_RESET_LOCK_FLAG 0 1 1 0
CUM_DEMAND_FLAG 0 0 0 0
CONT_CUM_DEMAND_FLAG 0 0 0 0
TIME_REMAINING_FLAG 0 0 0 0
SELF_READ_INHIBIT_OVERFLOW_FLAG 0 0 1 0
SELF_READ_SEQ_NBR_FLAG 0 0 1 0
DAILY_SELF_READ_FLAG 0 0 0 0
WEEKLY_SELF_READ_FLAG 0 0 0 0
SELF_READ_DEMAND_RESET 0 0 1 0
NBR_SELF_READS 0 0 1 0
NBR_SUMMATIONS 1 1 1 1
NBR_DEMANDS 0 1 1 0
NBR_COIN_VALUES 0 0 0 0
NBR_OCCUR 0 1 1 0
NBR_TIERS 0 0 3 0
NBR_PRESENT_DEMANDS 1 1 1 1
NBR_PRESENT_VALUES 1 1 1 1

Annex C 381
DRAFT ANSI C12.19-2012

Final Element DEFAULT_SET_USED


1 2 3 4
Table 31 - Actual Display Limiting Table
OFF_TIME_FLAG 0 0 0 0
HOLD_TIME_FLAG 0 0 0 0
NBR_DISP_SOURCES 3 4 40 0
WIDTH_DISP_SOURCES 1 1 1 0
NBR_PRI_DISP_LIST_ITEMS 9 12 60 0
NBR_PRI_DISP_LISTS 3 3 3 0
NBR_SEC_DISP_LIST_ITEMS 3 3 3 0
NBR_SEC_DISP_LISTS 1 1 1 1

Table 41 - Actual Security Limiting Table


NBR_PASSWORDS 1 1 1 1
PASSWORD_LEN 20 20 20 20
NBR_KEYS 1 1 1 1
KEY_LEN 4 4 4 4
NBR_PERM_USED 1 1 1 1

Table 51 - Actual Time and TOU Limiting Table


TOU_SELF_READ_FLAG 0 0 1 0
SEASON_SELF_READ_FLAG 0 0 1 0
SEASON_DEMAND_RESET_FLAG 0 0 0 0
SEASON_CHNG_ARMED_FLAG 0 0 0 0
SORT_DATES_FLAG 0 0 1 0
ANCHOR_DATE_FLAG 0 0 0 0
CAP_DST_AUTO_FLAG 0 0 0 0
SEPARATE_WEEKDAYS_FLAG 0 0 0 0
SEPARATE_SUM_DEMANDS_FLAG 0 0 0 0
SORT_TIER_SWITCHES_FLAG 0 0 1 0
CAP_TM_ZN_OFFSET_FLAG 0 0 0 0
NBR_SEASONS 0 0 2 0
NBR_SPECIAL_SCHED 0 0 1 0
NBR_NON_RECURR_DATES 0 0 10 0
NBR_RECURR_DATES 0 0 10 0
NBR_TIER_SWITCHES 0 0 9 0
CALENDAR_TBL_SIZE 0 0 131 0

382
DRAFT ANSI C12.19-2012

Final Element DEFAULT_SET_USED


1 2 3 4
Table 61 - Actual Load Profile Limiting Table
LP_SET1_INHIBIT_OVF_FLAG 0 0 0 1
LP_SET2_INHIBIT_OVF_FLAG 0 0 0 0
LP_SET3_INHIBIT_OVF_FLAG 0 0 0 0
LP_SET4_INHIBIT_OVF_FLAG 0 0 0 0
BLK_END_READ_FLAG 0 0 0 0
BLK_END_PULSE_FLAG 0 0 0 0
SCALAR_DIVISOR_FLAG_SET1 0 0 0 1
SCALAR_DIVISOR_FLAG_SET2 0 0 0 0
SCALAR_DIVISOR_FLAG_SET3 0 0 0 0
SCALAR_DIVISOR_FLAG_SET4 0 0 0 0
EXTENDED_INT_STATUS_FLAG 0 0 0 1
SIMPLE_INT_STATUS_FLAG 0 0 0 0
BLK_END_RD_INDICATOR_FLAG 0 0 0 0
INV_UINT8_FLAG 0 0 0 0
INV_UINT16_FLAG 0 0 0 1
INV_UINT32_FLAG 0 0 0 0
INV_INT8_FLAG 0 0 0 0
INV_INT16_FLAG 0 0 0 0
INV_INT32_FLAG 0 0 0 0
INV_NI_FMAT1_FLAG 0 0 0 0
INV_NI_FMAT2_FLAG 0 0 0 0
LP_MEMORY_LEN 0 0 0 16 384
NBR_BLKS_SET1 0 0 0 80
NBR_BLK_INTS_SET1 0 0 0 96
NBR_CHNS_SET1 0 0 0 1
MAX_INT_TIME_SET1 0 0 0 15
NBR_BLKS_SET2 0 0 0 0
NBR_BLK_INTS_SET2 0 0 0 0
NBR_CHNS_SET2 0 0 0 0
MAX_INT_TIME_SET2 0 0 0 0
NBR_BLKS_SET3 0 0 0 0
NBR_BLK_INTS_SET3 0 0 0 0
NBR_CHNS_SET3 0 0 0 0
MAX_INT_TIME_SET3 0 0 0 0
NBR_BLKS_SET4 0 0 0 0
NBR_BLK_INTS_SET4 0 0 0 0
NBR_CHNS_SET4 0 0 0 0
MAX_INT_TIME_SET4 0 0 0 0

Annex C 383
DRAFT ANSI C12.19-2012

Final Element DEFAULT_SET_USED


1 2 3 4
Table 71 - Actual Log Limiting Table
EVENT_NUMBER_FLAG 1 1 1 1
HIST_DATE_TIME_FLAG 0 0 1 1
HIST_SEQ_NBR_FLAG 0 0 0 0
HIST_INHIBIT_OVF_FLAG 0 0 0 0
EVENT_INHIBIT_OVF_FLAG 1 1 1 1
NBR_STD_EVENTS 4 4 4 4
NBR_MFG_EVENTS 0 0 0 0
HIST_DATA_LENGTH 2 2 2 2
EVENT_DATA_LENGTH 2 2 2 2
NBR_HISTORY_ENTRIES 100 100 100 100
NBR_EVENT_ENTRIES 100 100 100 100
METROLOGICAL_SIG_FLAG 0 0 0 0
PROGRAM_SIG_FLAG 0 0 0 0
ALTERNATE_SIG_FLAG 0 0 0 0
SECURED_REGISTER_FLAG 0 0 0 0
SIG_ALGORITHM 0 0 0 0
NBR_PROGRAM_TABLES 0 0 0 0

Table 81 - Actual User-defined Tables Limiting Table


NBR_UDTS 1 2 3 1
DATA_ACCESS_METHOD 2 2 2 2
NBR_XFR_LIST_ITEMS 2 3 6 2
MAX_INSTANCE 0 0 0 0
UDT_0_SIZE 256 256 256 256
UDT_1_SIZE 0 256 256 0
UDT_2_SIZE 0 0 256 0
UDT_3_SIZE 0 0 0 0
UDT_4_SIZE 0 0 0 0
UDT_5_SIZE 0 0 0 0

Table 91 - Actual Telephone Limiting Table


ANSWER_FLAG 1 1 1 1
S_ANCHOR_DATE_FLAG 0 0 0 0
OFFHOOK_DETECT_FLAG 1 1 1 1
BIT_RATE 0 0 0 0
ID_IN_PURPOSE 0 0 0 0
NO_LOCKOUT_PARM 0 0 0 0
NBR_ORIGINATE_WINDOWS 0 0 0 0
NBR_SETUP_STRINGS 1 1 1 1
SETUP_STRING_LENGTH 30 30 30 30
PREFIX_LENGTH 0 0 0 0
NBR_ORIGINATE_NUMBERS 0 0 0 0
PHONE_NUMBER_LENGTH 0 0 0 0
NBR_RECURRING_DATES 0 0 0 0
NBR_NON_RECURRING_DATES 0 0 0 0
NBR_EVENTS 0 0 0 0
NBR_WEEKLY_SCHEDULES 0 0 0 0
NBR_ANSWER_WINDOWS 0 0 0 0
NBR_CALLER_IDS 0 0 0 0
CALLER_ID_LENGTH 0 0 0 0

384
DRAFT ANSI C12.19-2012

Final Element DEFAULT_SET_USED


1 2 3 4
Table 111 - Actual Load Control Limiting Table
DURATION_SUPPORTED_FLAG 0 0 0 0
RANDOMIZATION_SUPPORTED_FLAG 0 0 0 0
MANUAL_OVERRIDE_SUPPORTED_FLAG 0 0 0 0
MANUAL_TURN_ON_SUPPORTED_FLAG 0 0 0 0
STATE_VERIFICATION_SUPPORTED_FLAG 0 0 0 0
ANCHOR_DATE_SUPPORTED_FLAG 0 0 0 0
SOURCE_CONDITION_SUPPORTED_FLAG 0 0 0 0
TIER_CONDITION_SUPPORTED_FLAG 0 0 0 0
TIME_CONDITION_SUPPORTED_FLAG 0 0 0 0
NBR_OF_CONTROL_POINTS 0 0 0 0
NBR_RECURRING_DATES 0 0 0 0
NBR_NON_RECURRING_DATES 0 0 0 0
NBR_EVENTS 0 0 0 0
NBR_OF_WEEKLY_SCHEDULES 0 0 0 0
NBR_OF_CONDITIONS 0 0 0 0
NBR_OF_CONSUMPTIONS 0 0 0 0
SLM_CONDITION_LEN 0 0 0 0
SLM_EQUATION_LEN 0 0 0 0

Table 141 - Actual Extended User-defined Tables Limiting Table


DATA_ACCESS_METHOD 3 3 3 3
INDEX_DEPTH 3 3 3 3
NBR_EUDT 1 2 3 4
NBR_INSTANCES 1 1 1 1
NBR_SELECTIONS 8 16 16 16
NBR_CONSTANTS 1 2 4 8
NBR_LABEL_CHARS 8 8 8 8

Table 151 - Actual Quality-of-service Limiting Table


INHIBIT_OVF_QS_LOG_FLAG 0 0 0 0
NOTIFY_OVF_QS_LOG_FLAG 0 0 0 0
INHIBIT_OVF_TD_ASYNC_FLAG 0 0 0 0
NOTIFY_OVF_TD_ASYNC_FLAG 0 0 0 0
TD_SCALAR_DIVISOR_FLAG 0 0 0 0
INHIBIT_OVF_FD_ASYNC_FLAG 0 0 0 0
NOTIFY_OVF_FD_ASYNC_FLAG 0 0 0 0
SCALAR_DIVISOR_FD_ASYNC_FLAG 0 0 0 0
INHIBIT_OVF_TD_PERIODIC_FLAG 0 0 0 0
NOTIFY_OVF_TD_PERIODIC_FLAG 0 0 0 0
SCALAR_DIVISOR_TD_PERIODIC_FLAG 0 0 0 0
INHIBIT_OVF_FD_PERIODIC_FLAG 0 0 0 0
NOTIFY_OVF_FD_PERIODIC_FLAG 0 0 0 0
SCALAR_DIVISOR_FD_PERIODIC_FLAG 0 0 0 0
REPEAT_TD_FLAG 0 0 0 0
REPEAT_FD_FLAG 0 0 0 0
FD_COMPLEX_FLAG 0 0 0 0
FD_PHASOR_FLAG 0 0 0 0
QUALITY_RESET_CTR_FLAG 0 0 0 0
INCIDENT_SORTABLE_FLAG 0 0 0 0
COMMON_SAMPLING_RATE_FLAG 0 0 0 0
COMMON_NBR_OF_SAMPLES_FLAG 0 0 0 0
INTERHARMONICS_FLAG 0 0 0 0
NBR_OF_EVENT_IDS 0 0 0 0
NBR_OF_EVENTS 0 0 0 0
Annex C 385
DRAFT ANSI C12.19-2012

Final Element DEFAULT_SET_USED


1 2 3 4
NBR_OF_INCIDENTS 0 0 0 0
NBR_OF_COINCIDENT_VALUES 0 0 0 0
INV_UINT8_FLAG 0 0 0 0
INV_UINT16_FLAG 0 0 0 0
INV_UINT32_FLAG 0 0 0 0
INV_INT8_FLAG 0 0 0 0
INV_INT16_FLAG 0 0 0 0
INV_INT32_FLAG 0 0 0 0
INV_NI_FMAT1_FLAG 0 0 0 0
INV_NI_FMAT2_FLAG 0 0 0 0
TD_SAMPLING_RATE 0 0 0 0
NBR_OF_TD_SAMPLES 0 0 0 0
NBR_OF_TD_BLOCKS 0 0 0 0
NBR_OF_TD_CHANNELS 0 0 0 0
NBR_OF_TD_CHANNELS_PER_BLOCK 0 0 0 0
NBR_OF_TD_SAMPLES_PER_BLOCK 0 0 0 0
NBR_OF_TD_PREFETCH_SAMPLES 0 0 0 0
FD_SAMPLING_RATE 0 0 0 0
NBR_OF_FD_SAMPLES 0 0 0 0
NBR_OF_SPECTRAL_COMPONENTS 0 0 0 0
NBR_OF_FD_BLOCKS 0 0 0 0
NBR_OF_FD_CHANNELS 0 0 0 0
NBR_OF_FD_CHANNELS_PER_BLOCK 0 0 0 0
NBR_OF_FD_SPECTRA_PER_BLOCK 0 0 0 0
NBR_OF_FD_PREFETCH_SAMPLES 0 0 0 0
LABEL_LENGTH 0 0 0 0

Table 161 - Actual One-way Limiting Table 0 0 0 0


ALWAYS_AWAKE_FLAG 0 0 0 0
PERIODIC_SELF_WAKE_FLAG 1 1 1 1
EXTERNAL_WAKE_FLAG 1 1 1 1
RF_TRANSM_WAKE_FLAG 1 1 1 1
IR_TRANSM_WAKE_FLAG 0 0 0 0
PL_TRANSM_WAKE_FLAG 0 0 0 0
POT_WAKE_FLAG 0 0 0 0
LAN_WAN_WAKE_FLAG 0 0 0 0
REG_READ_IMMEDIATE_WAKE_FLAG 0 0 0 0
REG_READ_DELAY_TO_TIME_FLAG 0 0 0 0
REG_READ_EXTERNAL_STIME_FLAG 0 0 0 0
DATA_XMIT_IMMEDIATE_READ 1 1 1 1
DATA_XMIT_DELAY_TO_TIME_FLAG 0 0 0 0
WAKE_CODE_LEN 2 2 2 2
COMMODITY_OUTAGE_DUTY_NUM 0 0 0 0
RESTORATION_CALL_ATTEMPTS 0 0 0 0
RESTORATION_CALL_WAIT 0 0 0 0
COMMODITY_ZERO_USAGE 0 0 0 0
COMMODITY_ZERO_USAGE_TRIGGER 0 0 0 0
COMMODITY_NON_RETURN_ZERO_TRIGGER 0 0 0 0
NBR_COMMANDS 1 1 1 1

13690

386
DRAFT ANSI C12.19-2012

13691 Annex D (normative) Indices for partial table read/write access


13692 The following values are provided as a normative example for the use of Element indices in conjunction with partial
13693 table access read/write methods identified as using the index-count. For illustration purposes, we list only the values
13694 that are associated with Table 00, “General Configuration Table”, Table 05, “Device Identification Table”, Standard
13695 Procedure 5, “Update Last Read Entry”, and Table 23, “Current Register Data Table”. For information on how to
13696 compute these indices, please see 8.1.3, “Partial table access using the Index/Element-count method”.

TABLE 00 - GEN_CONFIG_TBL
FORMAT_CONTROL_1 000
FORMAT_CONTROL_2 001
FORMAT_CONTROL_3 002
DEVICE_CLASS 003
NAMEPLATE_TYPE 004
DEFAULT_SET_USED 005
MAX_PROC_PARM_LENGTH 006
MAX_RESP_DATA_LEN 007
STD_VERSION_NO 008
STD_REVISION_NO 009
DIM_STD_TBLS_USED 010
DIM_MFG_TBLS_USED 011
DIM_STD_PROC_USED 012
DIM_MFG_PROC_USED 013
DIM_MFG_STATUS_USED 014
NBR_PENDING 015
STD_TBLS_USED (SET) 016
STD_TBLS_USED (8-BITS AT n/8) 016 [n]
MFG_TBLS_USED (SET) 017
MFG_TBLS_USED (8-BITS AT n/8) 017 [n]
STD_PROC_USED (SET) 018
STD_PROC_USED (8-BITS AT n/8) 018 [n]
MFG_PROC_USED (SET) 019
MFG_PROC_USED (8-BITS AT n/8) 019 [n]
STD_TBLS_WRITE (SET) 020
STD_TBLS_WRITE (8-BITS AT n/8) 020 [n]
MFG_TBLS_WRITE (SET) 021
MFG_TBLS_WRITE (8-BITS AT n/8) 021 [n]

TABLE 05 - DEVICE_IDENT_TBL
IDENTIFICATION (BINARY) 000
IDENTIFICATION (STRING) 001

TABLE 07 - PROC_INITIATE_TBL /
PROCEDURE 05 -
UPDATE_LAST_READ_ENTRY_PROC
PROC 000
SEQ_NBR 001
PARM 002
STANDARD 002 000
PROC_DATA_5 002 000 005
LIST 002 000 005 000
ENTRIES_READ 002 000 005 001

TABLE 23 - CURRENT_REG_DATA_TBL
NBR_DEMAND_RESETS 000

Annex D 387
DRAFT ANSI C12.19-2012

TOT_DATA_BLOCK 001
SUMMATIONS(ARRAY) 001 000
SUMMATIONS(ITEM) 001 000 [n]
DEMANDS(ARRAY) 001 001
DEMANDS(ITEM) 001 001 [n]
EVENT_TIME(ARRAY) 001 001 [n] 000
EVENT_TIME(ITEM) 001 001 [n] 000 [n]
CUM_DEMAND 001 001 [n] 001
CONT_CUM_DEMAND 001 001 [n] 002
DEMAND(ARRAY) 001 001 [n] 003
DEMAND(ITEM) 001 001 [n] 003 [n]
COINCIDENTS(ARRAY) 001 002
COINCIDENTS(ITEM) 001 002 [n]
COINCIDENT_VALUES(ARRAY) 001 002 [n] 000
COINCIDENT_VALUES(ITEM) 001 002 [n] 000 [n]
TIER_DATA_BLOCK(ARRAY) 002
TIER_DATA_BLOCK(ITEM) 002 [n]
SUMMATIONS (ARRAY) 002 [n] 000
SUMMATIONS(ITEM) 002 [n] 000 [n]
DEMANDS(ARRAY) 002 [n] 001
DEMANDS(ITEM) 002 [n] 001 [n]
EVENT_TIME(ARRAY) 002 [n] 001 [n] 000
EVENT_TIME(ITEM) 002 [n] 001 [n] 000 [n]
CUM_DEMAND 002 [n] 001 [n] 001
CONT_CUM_DEMAND 002 [n] 001 [n] 002
DEMAND(ARRAY) 002 [n] 001 [n] 003
DEMAND(ITEM) 002 [n] 001 [n] 003 [n]
COINCIDENTS(ARRAY) 002 [n] 002
COINCIDENTS(ITEM) 002 [n] 002 [n]
COINCIDENT_VALUES(ARRAY) 002 [n] 002 [n] 000
COINCIDENT_VALUES(ITEM) 002 [n] 002 [n] 000 [n]

13697

388
DRAFT ANSI C12.19-2012

13698 Annex E (informative) Event Logger implementation

13699 E.1 Background

13700 This standard provides five possible options of implementing an audit trail (Event Logger). The selections of the
13701 options implemented, allowed, or used are left to meter manufacturers, legislators, and end users. These
13702 implementation options are listed as follows.

13703 End Devices Implementing Event Counters (Option 1)

13704 This option allows the detection of modification done to the meter but does not provide any trace of what have been
13705 modified. This option is implemented using the Event Counters Table (Table 79).

13706 End Devices Implementing Event Logger Without Values (Option 2)

13707 This option provides a trace of which tables have been modified, when and by which user, but does not provide
13708 information about the content of these tables. This option is implemented with the Event Log Data Table (Table 76)
13709 using the following events:

13710 Procedure Invoked event (Event 9)


13711 Table Written To event (Event 10)
13712 End Device Programmed event (Event 11)
13713 End Device sealed event (Event 56)
13714 End Device unsealed event (Event 57)

13715 End Devices Implementing Event Logger With New Values Only (Option 3)

13716 This option provides a trace of which tables have been modified, when, by which user, and the new values
13717 programmed. This option is implemented with the Event Log data table (Table 76) using the following events:

13718 Procedure Invoked event (Event 58)


13719 Table Written To event (Event 59)
13720 End Device Programmed event (Event 60)
13721 End Device sealed event (Event 61)
13722 End Device unsealed event (Event 62)

13723 End Devices Implementing Event Logger With Metrological Signature Only (Option 4)

13724 This option provides a trace of which tables have been modified, when, by which user, and a signature used to
13725 validate an offline record-keeping system. The comparison of the signature provided by the meter with the signature
13726 based on the information kept by the record-keeping system guarantees that this information really represents the
13727 configuration of the meter at each event recorded.

13728

Annex E / Background 389


DRAFT ANSI C12.19-2012

13729 This option is implemented with the Event Log Data Table (Table 76) using the following events:

13730 Procedure Invoked event (Event 63)


13731 Table Written To event (Event 64)
13732 End Device Programmed event (Event 65)
13733 End Device sealed event (Event 66)
13734 End Device unsealed event (Event 67)
13735 Read Secured Table event (Event 73)
13736 Read Secured Register event (Event 74)

13737 End Devices Implementing Event Logger With New Values and Metrological Signature (Option 5)

13738 This option combines the features of option 3 (New Values) and option 4 (Signature). This option could be used
13739 either with or without a record-keeping system.

13740 This option is implemented with the Event Log Data Table (Table 76) using the following events:

13741 Procedure Invoked event (Event 68)


13742 Table Written To event (Event 69)
13743 End Device Programmed event (Event 70)
13744 End Device sealed event (Event 71)
13745 End Device unsealed event (Event 72)
13746 Read Secured Table event (Event 75)
13747 Read Secured Register event (Event 76)

13748 E.2 Signature algorithm

13749 The Event Logger data can be contained inside the End Device and in part at the End Device agent’s record-keeping
13750 system. The process described within establishes the means by which Event Logger data and program tables are
13751 continually secured when older entries in the Event Logger and program tables are no longer stored inside the End
13752 Device’s nonvolatile memory. The detailed computation algorithm is described in Figure E-1 and in accordance
13753 with the creation rules of the Event Logger record.

13754 Step 1: Compute the TABLE_SIG of each tables programmed.


13755 Step 2: Compute the PROGRAM_SIG, ALTERNATE_SIG and METROLOGICAL_SIG based
13756 on the values computed on step 1.
13757 Step 3: Compute the EVENT_CHECK_SIG based on its previous value and information added to
13758 the Event Logger table (Table 76).

390
DRAFT ANSI C12.19-2012

Program state table (Table 78) Table X


Signature
TABLE METROLOGIC LOGABLE ALTERNAT TABLE_
ID AL _FLAG _FLAG E_FLAG SIG Step 1
TX True False False SIGX
TY False False False SIGY Table Y
Signature

TZ True True True SIGZ

PROGRAM_SIG SIGP Step 2 Table Z


ALTERNATE_SIG SIGA Signature
METROLOGICAL_SIG SIGM
EVENT_CHECK_SIG SIGE

Step 3

Event Log Table (Table 76)

EVENT EVENT EVENT USER EVENT


TIME NUMBER SEQ_NBR ID CODE
SIGM SIGE
SIGM SIGE
SIGM SIGE

13759

13760 Figure E-1—Detailed signature computation algorithm

Annex E / Signature algorithm 391


DRAFT ANSI C12.19-2012

13761 Annex F
13762 (informative)
13763 Transformer losses compensation

13764 F.1 Transformer losses consideration

13765 Transformer losses are the sum of no-load losses and load losses (Electric Power Engineering Handbook [B2],
13766 Hannah [B4], Merritt and Chaitkin [B9], and IEEE Std C57.123-2010).

13767 F.1.1 No-load loss and exciting current

13768 The no-load losses are essentially the power required to keep the core energized. When the winding is energized, the
13769 exciting current consists of a real component (core loss) and a reactive component (energy stored momentarily in the
13770 winding inductance). The typical distribution transformer exciting current is less than 0.5% of the rated current.

13771 F.1.2 Load loss

13772 Transformer load losses result from the flow of load current in the windings. Load loss can be divided into two
13773 parts:

13774 I2R loss


13775 Eddy loss

13776 I2R loss:

13777 I2R losses are caused by transformer winding electrical resistance when load currents flow.

13778 Eddy losses:

13779 Eddy losses are caused by currents circulating within the winding conductors. Stray losses are proportional to the
13780 frequency of the current and thus can increase dramatically when loads with harmonic currents are served.

13781 A deeper discussion would include at least a minimum of the following elements; however, they are not covered in
13782 this document:

13783 Temperature correction


13784 Stray losses
13785 Harmonics
13786 Line losses

13787 F.1.3 Transformer losses compensation

13788 The use of transformer losses compensation depends on the relationship between the transformer and the point of
13789 functional interest locations. Therefore, transformer loss compensation may be added or subtracted with respect to
13790 the location of the transformer and the point of interest such as billing meter (delivery) or a distribution system
13791 voltage regulation consideration. The following cases illustrate the typical use of transformer compensation with
13792 respect to metering for client billing and the location of the client delivery point:

13793

392
DRAFT ANSI C12.19-2012

13794 Case 1:

13795 In case 1, the billing (Delivery) point is on the high-voltage side of the power transformer, while the meter is located
13796 on the low-voltage side of the power transformer. Transformer losses are the responsibility of the client; that is, the
13797 client (typically a municipality) owns the delivery transformer. In this case, the transformer losses are added to the
13798 metered load (kW and kVAR, and ultimately to the kWh and kVARh as well) of the client downstream of the
13799 distribution transformer. This is a common situation where a large customer, such as a municipality, owns its
13800 substation and receives the electrical energy at the point of high-voltage conductor connection (e.g., 100 kV 3-phase
13801 delta transmission line connection to a municipality substation). The decision in this case to perform revenue
13802 metering on the low-voltage side of the distribution transformer is a decision of capital cost and maintenance cost.
13803 The cost of performing revenue metering on the 100-kV side of the transformer is much more expensive than on the
13804 12.47-kV or other lower distribution voltage side.

13805 Case 2:

13806 In case 2, the metering point is on the high-voltage side of the power transformer, while the billing (delivery) point
13807 is on the low-voltage side. Transformer losses should be subtracted from the kW and kVAR metering
13808 measurements, and ultimately from the kWh and kVARh metering values as well. In this case, the utility typically
13809 owns the delivery transformer. The client (typically industrial) is not responsible for the transformer losses as the
13810 delivery point is by contract located on the low-voltage winding side of the transformer. This is a common situation
13811 where the utility is delivering electrical energy from a distribution circuit such as 12.47 kV and the load of the
13812 industrial client requires numerous large conductors to carry the load current on the low-voltage side of the
13813 transformer (e.g., 480/277 3-phase, 4-wire). In this case, the low-voltage side metering is very difficult due to the
13814 very large conductors and the metering on the high side is relatively easy.

13815 F.2 Transformer loss compensation calculations

13816 Transformer Loss Compensation (TLC, Hannah [B4]) can be calculated using Equation (F.1) to
13817 Equation (F.4):

13818 Delivered TLC Watt losses =


Delivered% LineVoltage 2 Delivered% LoadCurrent 2
13819 IronWattLoss(In%) CopperWattLoss(In%) (F.1)
100 RatedVoltage 2 100 TestCurrent 2

13820 Received TLC Watt losses =


Received% LineVoltage 2 Received% LoadCurrent 2
13821 IronWattLoss(In%) CopperWattLoss(In%) (F.2)
100 RatedVoltage 2 100 TestCurrent 2

13822 Delivered TLC Var losses =


Delivered% LineVoltage4 Delivered% LoadCurrent 2
13823 IronVarLoss(In%) CopperVarLoss(In%) (F.3)
100 RatedVoltage4 100 TestCurrent 2

13824 Received TLC Var losses =


Received% LineVoltage 4 Received% LoadCurrent 2
13825 IronVarLoss(In%) CopperVarLoss(In%) (F.4)
100 RatedVoltage 4 100 TestCurrent 2

13826 In the above calculation, the delivery transformer parameters are treated in aggregate and not as per-phase or per-
13827 element values. Coefficients are introduced that facilitate the separate calculation of delivered and received no-load
13828 and load losses.

13829 Secondary current instrument transformers (CTs) and voltage (potential) instrument transformers (PTs) are not
13830 considered in the calculations.
Annex F / Transformer loss compensation calculations 393
DRAFT ANSI C12.19-2012

13831 F.3 Transformer loss compensation calculation example

13832 The following is an example of a transformer loss compensation calculation, with transformer data borrowed from
13833 Hannah [B4].

13834 Transformer data:

13835 Rated KVA: 10 000


13836 Rated Voltage: 69 000 – 7200/12 470
13837 Xfmr Tap Setting: 69 000 – 12 470
13838 No Load Watt Loss at Rated Voltage: 9878 Watts
13839 Load Loss at Rated Full Load: 41 427 Watts
13840 % Imp at 75 °C: 6.92%
13841 % Exciting Current: 0.38%
13842 Elements Configuration: 120 Volt, 4 Wire Wye, 2 Elements
13843 Meter Current Class: 10

13844 For this example, all energy is treated as “delivered” to the meter [delivered coefficient = 100, received coefficient =
13845 zero (0)].

13846 From the above parameters, we can get:

13847 Delivered No-Load (Core, Iron) Losses kVA = 10 000 × 0.38% = 38.00

13848 Delivered No-Load (Core, Iron) Losses kVAR = 38.02 9.8782 36.96
13849 Delivered Load (Copper) Losses kVA = 10 000 × 6.92% = 692.00

13850 Delivered Load (Copper) Losses kVAR = 414272 6922 690.76

13851 Based on Equation (F.1) through Equation (F.2), we can calculate and obtain the following Transformer Loss
13852 Constants:

13853 Delivered Transformer Copper Loss Watt Constant: TLC WCu (%) = 0.537%
13854 Delivered Transformer Copper Loss VAR Constant: TLC VCu (%) = 8.95%
13855 Delivered Transformer Iron Loss Watt Constant: TLC WFe (%) = 0.0762%
13856 Delivered Transformer Iron Loss VAR Constant: TLC VFe (%) = 0.283%

394
DRAFT ANSI C12.19-2012

13857 Annex G (normative) Document-form descriptive syntax

13858 G.1 General notes on symbols, rules, and their meaning

13859 a) An Extended BNF production rule may extend across one or more lines. The actual number of lines parsed
13860 by an Extended BNF processor will be determined when the production rule syntax is fully satisfied
13861 without an encounter of an Extended BNF production rule parsing error.

13862 b) When one production rule is followed by another production rule or an operation, one shall not assume it to
13863 be a prohibition of adding additional production rules at the tail end of the first production rule, as long as
13864 the Extended BNF syntax is not violated. Therefore, A op B implies that A op B is a valid rule, but also A
13865 op1 B op2 C may be a valid rule (it depends on the definition of op).

13866 c) White space and line breaks placed between production rules and operands serve only to separate between
13867 the names of production rules and operands. They are otherwise ignored and do not add to or modify the
13868 effect of a production rule. If space is desired, it needs to be specified explicitly. For example, the
13869 production rule A B C D is equivalent to A B C D. Similarly the following production rules are not
13870 equivalent A ‘B C’ D and A ‘B C’ D.

13871 d) All bold symbols on the left column are to be entered explicitly. When a substitution is needed, the symbols
13872 are just italicized. Example: A valid production rule of the Extended BNF symbols #xN is #xFD05.
13873 Similarly, a valid production rule of the Extended BNF symbols A+ is [a-z]+, where [a-z] represents a
13874 production rule based on constructor A.

13875 e) The BNF notation does not differentiate between left and right quotation characters. Therefore, “XXXX” is
13876 equivalent to “XXXX” and ‘YYY’ is equivalent to ‘YYY’.

13877 f) Given a production rule A, a comment { comment } and a constraint / B expressed as A { comment } /B, the
13878 constraint /B applies to A and not to { comment }.

13879 G.2 Extended BNF symbols and meaning

13880 Operators defined in order of precedence (highest precedence first):

13881 \ The backslash is the escape control character. A character that follows a \ shall be interpreted as a simple
13882 character. Thus, a quote is escaped as \’ and the backslash is escaped as a \\.

13883 Example: The production rule “This is a \”bad\” expression” is equivalent to ‘This is a “bad” expression’.

13884 ‘ Terminal text string is enclosed between single quotes (#x0027, #x2018, or #x2019). Example: ‘A’ represents
13885 the letter A. All characters that follow a single quote, except for the single-quote and escape characters, are
13886 taken literally. All characters enclosed within single quotes are one entity.

13887 Also, the following escape sequences have special meaning as follows:

13888 \n is the line break sequence (#xA | #xD)*.


13889 \f is the page break sequence (#xC).
13890 \t is the tab character (#x9).
13891 \S is the white space defined later in this subclause.

13892 “ Terminal text string is enclosed between double quotes (#x0022, #x201C, or #x201D). Example: “A”
13893 represents the letter A. All characters that follow a double quote, except for the double-quote and escape
Annex G / General notes on symbols, rules, and their meaning 395
DRAFT ANSI C12.19-2012

13894 characters, are taken literally. All characters enclosed within are one entity. The escape characters that are
13895 recognized within single quotes are also processed within double quotes.

13896 #xN where N is a hexadecimal integer. When interpreted as an unsigned binary number, it has the value indicated.
13897 The number of leading zeros in the #xN form is insignificant; the number of leading zeros in the
13898 corresponding code value is governed by the character encoding in use and is not significant.

13899 [ Start of character range selection symbol. Matches any character with a value in the binary range(s) indicated
13900 (inclusive). It is terminated with the end of character group symbol ‘]’.

13901 Interpretation of symbols that are enclosed within Start/End of character range symbols is as if the characters
13902 were enclosed within single or double quotes; with the following exception:

13903 ^ When encountered as the first character following the Start of character range selection, this symbol
13904 will negate the results of the match. Example: [^ABC] implies any single character except for A or B
13905 or C.

13906 - Expresses a range starting with the character on the left and ending with the character on its right
13907 (inclusive). Example: [A-Z0-9#x005F] defines a production rule that matches all capital letters of the
13908 canonical (UCS-4) character set (ISO/IEC 10646-2011), the decimal digits zero through nine and the
13909 underscore character ‘_’.

13910 \ The backslash escapes the regular interpretation of the next character (same action to that outside of
13911 the character range selection symbols, unless it is followed by a character sequence that is special
13912 within single or double quotes. Example: [\S] is the space character; and [\\S] is a backslash followed
13913 by an ‘S’).

13914 #xN Where N is a hexadecimal integer, the expression matches the character whose canonical (UCS-4) code
13915 value (ISO/IEC 10646-2011), when interpreted as an unsigned binary number, has the value indicated.

13916 ] End of character range selection symbol. Character range selection begins with Start of character range
13917 symbol.

13918 NOTE—The special meaning of all other characters is lost when used within the character-range selection symbols.
13919 Example: [ABC’[()] is a production rule that matches the letters ‘A’ or ‘B’ or ‘C’ or the single quote “’” or ‘[‘ or ‘(‘ or ‘)’.

13920 ( Start group symbol. The group ends with the end of group symbol ‘)’. If the end of group symbol is not found
13921 on the same line, then parsing shall continue on consecutive lines until the end group symbol is found; and all
13922 production rules are satisfied.

13923 ) End group symbol. The group begins with the start group symbol. Other production rules may follow.

13924 { Start of comment symbol. Text enclosed within curly braces is a comment provided for clarity and has no
13925 impact on the syntax or data definition. All characters are considered to be plain text with no special meaning,
13926 except for the end of comment symbol, ‘}’ and the escape character ‘\\’ which may be used to escape the
13927 closing comment symbol. If a production rule A is followed by a comment then followed by a constraint B,
13928 then the constraint B applies to A and not to the comment.

13929 } End of comment symbol. A comment begins with the start of comment symbol, ‘{‘.

13930 A? The production rule A followed by the superscript question mark may occur zero or one times without
13931 violating the grammar. Other production rules may follow.

396
DRAFT ANSI C12.19-2012

13932 A* The superscript asterisk is known as the Kleene star. A production rule A followed by the Kleene star may
13933 occur zero or more times without violating the grammar. Other production rules may follow.

+
13934 A The superscript plus sign is known as the Kleene cross. A production rule A followed by the Kleene cross
13935 shall occur one or more times. Other production rules may follow.

13936 Ax..y
13937 The production rule A followed by a superscript number range shall occur a minimum of x times to a
13938 maximum of y times (x shall be greater than or equal to zero, y shall be greater than or equal to x). Other
13939 production rules may follow. Example: [0..9]1..2 is a production rule providing for one to two digits in the
13940 range of ‘0’ to ‘9’.

13941 Ax The production rule A followed by a superscript number shall occur exactly x times. Other production rules
13942 may follow. This is equivalent to Ax..x.

13943 Ax.. The production rule A followed by a superscript number shall occur a minimum of x times (x shall be greater
13944 than or equal to zero). Other production rules may follow.

13945 A..B The two dots represent a range. The production rule will match any range starting with A ending with B.
13946 Example: When A or B are multi-character sequences, then the range shall span all possible multi-character
13947 sequences that are delimited by the stated range.

13948 Example: Specifying a numeric range

13949 tableNumber ::= ‘0’..’2039’

13950 is equivalent to

13951 tableNumber ::= [01]?[0-9]1..3 | ‘20’ [0123] [0-9]

13952 A - B The production rule A followed by the minus sign (the except symbol) will match the production rule A
13953 unless it matches the pattern produced by production rule B. Other production rules may follow.

13954 Example:

13955 nonTableElementName ::= identifier - (id ‘_TBL’)

13956 defines a production rule for an nonTableElementName that matches the production rule of identifier unless it
13957 also matches the production rule id followed by the suffix ‘_TBL’.

13958 A / unique : (B .)?C A production rule that introduces the uniqueness constraint C on the use case of A, where
13959 the constraint C belongs to the set:

13960 ‘ANY’ | ‘TDL’ | ‘DEC’ | ‘TBL’ | ‘PROC’ | ‘RCD’ | ‘BFLD’ | ‘ENUM’

13961 An End Device class level constraint B may be optionally provided to indicate whether the constraint C is
13962 limited to this document scope ‘TDL’, the referenced Standard document scope ‘STD’, or to all documents
13963 that describe this End Device class. The optional device class constraint B belongs to the set:

13964 ‘EDC’ | ‘STD’

13965 When the optional constraint B is not provided, it shall default to the active document being used (it may be a
13966 Standard document or a Manufacturer-supplied document).
Annex G / Extended BNF symbols and meaning 397
DRAFT ANSI C12.19-2012

13967 “Well known” scope names include:

13968 ‘EDC’ Scopes defined within one instance of the End Device Class (this includes all TDL documents
13969 used to describe this End Device and all referenced Standard TDL documents).

13970 ‘TDL’ The top-level TDL scope of this TDL document. The TDL document is all collections of
13971 documents that are either Manufacturer-defined or Standard-defined, but not both.

13972 ‘STD’ The top-level TDL scope of the referenced Standard TDL documents only.

13973 ‘DEC’ Within the local scope of any one Decade defined within TDL documents.

13974 ‘TBL’ Within the local scope of any one table defined within TDL documents.

13975 ‘PROC’ Within the local scope of any one procedure defined within TDL documents.

13976 ‘RCD’ Within the local scope of any one packed record instance (and taking into account all conditionals)
13977 defined within TDL documents.

13978 ‘BFLD’ Within the local scope of any bit field instance (and taking into account all conditionals) defined
13979 within TDL documents.

13980 ‘ENUM’ Within the local scope of any enumerator instance (and taking into account all conditionals)
13981 defined within TDL documents.

13982 ‘ANY’ Any scope where this production rule can be used.

13983 The uniqueness constraints are generally applied to names of elements, names of derived types, and values of
13984 enumerators. The constraints shall be applied after the evaluation and expansion of all conditional statements,
13985 as shown in the examples below:

13986 Example: Let elementName be defined as follows:

13987 elementName ::= identifier / unique : RCD

13988 and COUNT be an elementName then the following table syntax shall be considered invalid (with respect to
13989 the uniqueness constraint), because the final element COUNT is not defined uniquely within the PACKED
13990 RECORD below.

13991 TYPE EXAMPLE_RCD = PACKED RECORD


13992 COUNT : UINT8;
13993 LENGTH : UINT8;
13994 COUNT : UINT8;
13995 END;

13996 However, the syntax below is valid because the final element COUNT is unique within any one instance of
13997 this packed record.

13998 TYPE EXAMPLE_RCD = PACKED RECORD


13999 IF (EXAMPLE_TBL.VALUE == 3) THEN
14000 COUNT : UINT8;
14001 ELSE
14002 LENGTH : UINT8;
14003 COUNT : UINT8;

398
DRAFT ANSI C12.19-2012

14004 END;
14005 END;

14006 Example: Use of uniqueness constraints to tblIdentifier. This states that tblIdentifier shall be unique in all
14007 instances of this End Device class, in all scopes defined.

14008 tblIdentifier ::= (id ‘_TBL’) / unique : EDC.ANY;

14009 Example: Use of uniqueness constraints to rcdIdentifier. This states that rcdIdentifier shall be locally unique
14010 in any one scope where it can be defined.

14011 rcdIdentifier ::= (id ‘_RCD’) ( /unique : TDL | /unique : DEC |


14012 /unique: TBL | /unique: PROC);

14013 Example: Use of uniqueness constraints to procIdentifier. This states that procIdentifier shall be unique across
14014 all definitions made in any End Device class instance document scope, decade scopes, and tables.

14015 procIdentifier ::= (id ‘_PROC’) ( /unique : STD.TDL) , /unique : STD.DEC) ,

14016 /unique : TDL.TDL) , /unique : TDL.DEC );

14017 This is equivalent to

14018 procIdentifier ::= ((id ‘_PROC’) ( /unique : EDC.TDL) , /unique : EDC.DEC );

14019 This is also equivalent to (since the above scopes are the only scopes where procedures can be defined).

14020 procIdentifier ::= (id ‘_PROC’) /unique : EDC.ANY;

14021 A / constraint : B A production rule that introduces B’s size, type, or transport constraint on the run time
14022 and use case of A, where the constraint B belongs to the set:

14023 ‘BNF’.LHS | ‘BNF’.RHS | ‘atomic’ | ‘text’ | elementReference | derivedTypeReference

14024 A may be an element, subelement, or final element referred to by the elementReference, a simple or derived
14025 type referred to by the derivedTypeReference, the BNF left-hand side, the BNF right-hand side definition (see
14026 description of ::= ), or the reserved word ‘atomic’ or ‘text’; as follows:

14027 ‘BNF’.LHS References to a BNF construction element that may be located on the left-hand side of the
14028 ‘::=’ and may limit the run-time size or range of the use case of a production rule.

14029 ‘BNF’.RHS References to a BNF construction element that may be located on the right-hand side of the
14030 ‘::=’ and may limit the run-time size or range of the use case of a production rule.

14031 ‘atomic’ A restriction on the transportation and access to data that is constructed based on a rule that is
14032 an atomically constrained production. Atomic elements shall be communicated entirely using
14033 a single element read or write request. Atomic tables have to be communicated using full
14034 table read or write requests. Subatomic entities shall not be requested and shall not be
14035 communicated.

14036 ‘text’ A free-form textual description of the constraint that makes up the production rule. This is
14037 useful in situations where the constraint is described elsewhere in a different document or
14038 standard, or it can be best expressed in plain text.

Annex G / Extended BNF symbols and meaning 399


DRAFT ANSI C12.19-2012

14039 elementReference References to a table element that may limit or further qualify the run-time influence on
14040 encoding rules use in production or communication.

14041 derivedTypeReference References to a built-in or derived data type that may limit the run-time
14042 transmitted size and content or use case of a production rule.

14043 Example: using ‘BNF’ constraint:

14044 bcdNumber ::= ‘BCD(4)’ (/ constraint : BNF.fixedPointBCDNumber,


14045 (/ constraint: BNF.eightBits)4);

14046 Implies that all bnfNumber types are defined using the syntax ‘BCD(4)’. When interpreted for transmission at
14047 the base unit, fixedPointBCDNumber shall be used, as defined in a BNF production rules. The size of the
14048 transmitted data shall be exactly four (4) Octets.

14049 Example: using finalElementReference constraint:

14050 String ::= ‘STRING(20)’ (/ constraint : GEN_CONFIG_TBL.CHAR_FORMAT,


14051 (/ constraint: BNF.eightBits)20,
14052 / constraint: atomic);

14053 Implies that all twenty (20) character String types are defined using the syntax ‘STRING(20)’. When
14054 interpreted for transmission, the String format shall also be constrained by Table 0 CHAR_FORMAT value.
14055 The size of the transmission string shall be exactly twenty (20) times the size of an Octet. The String shall be
14056 transmitted as one unit since it is atomic.

14057 Example: using ‘atomic’ constraint:

14058 uInt16 ::= ‘UINT16’ ( / constraint : BNF.sixteenBits ,


14059 / constraint : GEN_CONFIG_TBL.DATA_ORDER ,
14060 / constraint : atomic )

14061 Implies that UINT16 is a run-time defining type that can carry binary data in the range of [#x0000-#xFFFF]
14062 [two (2) Octets]. When selected or transmitted, it is an atomic element, and its transmission Octet order
14063 depends on DATA_ORDER that is defined in GEN_CONFIG_TBL.

14064 Example: using a data type constraint to express a built-in type:

14065 longTimeDate ::= ‘LTIME_DATE’ ( / constraint : STD.LTIME_DATE_RCD ,


14066 / constraint : atomic)

14067 Implies that the built-in type LTIME_DATE has the data structure and obeys the transmission rules
14068 expressed at Standard’s TDL-scope definition LTIME_DATE_RCD, and it is an atomic element.

14069 Example: using ‘text’ constraint:

14070 utf8 ::= eightBits (/constraint: text ‘As per Section 2.5 and Section 15.9 “Specials“ of
14071 “Encoding Forms / UTF-8” of The Unicode Standard [B13]. In UTF-8.
14072 the byte order mark, BOM, corresponds to the byte sequence [#xEF]
14073 [#xBB] [#xBF]. The BOM of UTF-8 shall be permitted only when it
14074 can be accommodated by the size of the element that is of type UTF-8
14075 whose size is at least three (3) Octets, but it shall be ignored (not
14076 produce displayable text) by the processing application.’,
14077 /constraint: atomic);

400
DRAFT ANSI C12.19-2012

14078 Requires that utf8 imports all the definitions and encoding rules implied by the Unicode Standard (see The
14079 Unicode Consortium [B13]). It also provides instructions on how to handle the UTF-8 BOM feature. Finally,
14080 it indicates that the utf8 entity is atomic.

14081 A / match : B A production rule that binds the publication of rule A to an XPath location path B in the
14082 XML/TDL source documents that describe the standard or the End Device table set. B is a LocationPath per
14083 BNF production rule [1] found in the XPATH-2010 [B14].

14084 Example:

14085 tblIdentifier ::= (id tblSuffix) / match : ‘/tdl//table@name’;

14086 The example above indicates that the table identifier (tblIdentifier) that is published by this BNF syntax is
14087 associated with the ‘name’ attribute of the table element found in the XML/TDL document.

14088 Example:

14089 defaultSetNumber ::= ‘0’..’255’ ({ A number ranging from 0–255 inclusive. }

14090 / unique : EDC.ALL { Default set numbers shall be unique


14091 throughout the End Device class. },

14092 / constraint : GEN_CONFIG_TBL. DEFAULT_SET_USED


14093 {Located in Table 0 of the End Device in the
14094 DEFAULT_SET_USED final element.},

14095 / match : ‘/edl//defaultSet/@number’ { The source of the


14096 number of the default set number in the XML EDL document.
14097 }
14098 );

14099 The example states that defaultSetNumber is a number ranging between 0 and 255 inclusive. Also its use is
14100 unique within the context of any End Device instance. It indicates that it is located in Table 0 of the End
14101 Device in the ‘DEFAULT_SET_USED’ final element; and it is imported or exported in the EDL file by the
14102 ‘number’ attribute of the ‘defaultSet’ element.

14103 AB Matches A followed by B (i.e., it is a concatenation of A and B).

14104 A , B The comma introduces a sequence of production rules, all off which shall exist, but not necessary in the order
14105 as defined in the sequence. The production rule B may be followed by other alternatives. Example: A, B, C |
14106 D defines a production rule stating that either A and B and C rules shall apply (not necessary in that order) or
14107 D rules shall apply.

14108 A | B The vertical bar is an OR symbol. The OR symbol always occurs on the right-hand side of a production rule A
14109 and on the left-hand side of production rule B. The OR bar separates valid production rule alternatives. If the
14110 OR bar is not followed by a complete production rule on the same line, then parsing shall continue on
14111 consecutive lines until all production rules are satisfied. The OR introduces a sequence of production rules, of
14112 which any one shall exist. The production rule B may be followed by other alternatives. Example: A | B | C
14113 implies production rule A or B or C applies.

14114 ; It is the end of Extended BNF expression.

14115 ::= This symbol is read as “is defined as”. The nonterminal that occurs on the left-hand side (BNF.LHS) of this
14116 symbol consists of the elements (nonterminals, terminals, or a combination of the two) found on the right-

Annex G / Extended BNF symbols and meaning 401


DRAFT ANSI C12.19-2012

14117 hand side (BNF.RHS). For clarity, when a nonterminal element on the left-hand side is encountered in plain
14118 text, it will be written in italics. A line containing a left-hand side (LHS), ::=, and a right-hand side (RHS) is
14119 known as a production rule. An incomplete production rule continues across lines. A production rule
14120 terminates when any line completes without the need for additional rules, unless terminated by a semicolon.

14121 In the next subclauses, reserved words, characters, identifiers, and other symbols required for the language are also
14122 indicated by bold type.

14123 G.3 Flow of information

14124 The flow of information is a stream of elements of multiple “n” Octet length, when “n” is greater than one. Elements
14125 are transmitted in order of their appearance in the table structure.

14126 For purposes of transmission, the smallest data type is an Octet, which is eight bits in length. The bits are numbered
14127 zero to seven. Bit zero is the least significant bit. Figure G-1 illustrates this bit numbering and ordering, when
14128 expressed in printed form. The order of transmission of the bits in an Octet is defined elsewhere in the appropriate
14129 OSI layer (ISO/IEC 7498-1-1994), which is typically the Data Link Layer (layer 2). An Octet may also be
14130 referenced as a Octet in this document.

MSBit LSBit
7 6 5 4 3 2 1 0
14131

14132 Figure G-1—Octet bit ordering

14133 For some data types that are more than one Octet in length, it is possible to transmit them either most significant
14134 Octet first or least significant Octet first. The order of transmission is dictated by value of DATA_ORDER, found
14135 in the GEN_CONFIG_TBL (Table 00). Each data type shall indicate a specific order of transmission. Figure G-2
14136 illustrates a multi-Octet structure.

MSByte LSByte
Octet Octet Octet Octet Octet Octet Octet Octet
7-0 7-0 7-0 7-0 7-0 7-0 7-0 7-0
14137

14138 Figure G-2—Multi-byte ordering

14139 G.4 Identifiers

14140 An identifier is a name identifying a decade, a table, a procedure, a packed record, a bit field, an enumerator, an
14141 element of a packed record, or a subelement of a bit field.

14142 An identifier is made of letters and/or numbers and/or the underscore character, '_'. Some suffixes were reserved for
14143 specific use. Identifiers ending with reservedSuffix are reserved for names of decades, tables, procedures, packed
14144 records, bit fields, and enumerators.

14145 decSuffix :: = ‘_DEC’ { Suffix reserved for names of decades. } ;


14146 tblSuffix :: = ‘_TBL’ { Suffix reserved for names of tables. } ;
14147 procSuffix :: = ‘_PROC’ { Suffix reserved for names of procedures. } ;
14148 rcdSuffix :: = ‘_RCD’ { Suffix reserved for names of packed records. } ;
14149 bfldSuffix :: = ‘_BFLD’ { Suffix reserved for names of bit fields. } ;
14150 enumSuffix :: = ‘_ENUM’ { Suffix reserved for names of enumerators. } ;
14151 cnstSuffix :: = ‘_CNST’ { Suffix reserved for names of constants. } ;

402
DRAFT ANSI C12.19-2012

14152 reservedSuffix ::= decSuffix | tblSuffix | procSuffix | rcdSuffix | bfldSuffix | enumSuffix | cnstSuffix;

14153 Identifiers that are identical to reservedName are reserved for the TDL, and they shall not be used to construct
14154 identifiers.

14155 bnf ::= ‘BNF’ { Reference to the scope of the BNF production. } ;
14156 edc ::= ‘EDC’ { Reference to the scope of the End Device class.} ;
14157 tdl ::= ‘TDL’ { Reference to the scope of the active TDL document.} ;
14158 std ::= ‘STD’ { Reference to the scope of the standard TDL document that is
14159 referenced by the active document.} ;
14160 dec ::= ‘DEC’ { Reference to the scope of a decade.} ;
14161 tbl ::= ‘TBL’ { Reference to the scope of a table.} ;
14162 proc ::= ‘PROC’ { Reference to the scope of a procedure.} ;
14163 bfld ::= ‘BFLD’ { Reference to the scope of a bit field.} ;
14164 rcd ::= ‘RCD’ { Reference to the scope of a packed record.} ;
14165 cnst ::= ‘CNST’ { Reference to a constant.} ;

14166 string ::= ‘STRING’ { Keyword and Built-in type } ;


14167 binary ::= ‘BINARY’ { Keyword and Built-in type } ;
14168 bcd ::= ‘BCD’ { Keyword and Built-in type } ;
14169 set ::= ‘SET’ { Keyword and Built-in type } ;
14170 bool ::= ‘BOOL’ { Keyword and Built-in type } ;
14171 array ::= ‘ARRAY’ { Keyword and Built-in type } ;
14172 type ::= ‘TYPE’ { Keyword } ;
14173 if ::= ‘IF’ { Keyword } ;
14174 then ::= ‘THEN’ { Keyword } ;
14175 else ::= ‘ELSE’ { Keyword } ;
14176 switch ::= ‘SWITCH’ { Keyword } ;
14177 case ::= ‘CASE’ { Keyword } ;
14178 default ::= ‘DEFAULT’ { Keyword } ;
14179 packed ::= ‘PACKED’ { Keyword } ;
14180 record ::= ‘RECORD’ { Keyword } ;
14181 bit ::= ‘BIT’ { Keyword } ;
14182 field ::= ‘FIELD’ { Keyword } ;
14183 of ::= ‘OF’ { Keyword } ;
14184 procedure ::= ‘PROCEDURE’ { Keyword } ;
14185 request ::=‘REQUEST’ { Keyword } ;
14186 response ::= ‘RESPONSE’ { Keyword } ;
14187 table ::= ‘TABLE’ { Keyword } ;
14188 constants ::= ‘CONSTANTS’ { Keyword } ;
14189 enum ::= ‘ENUM’ { Keyword } ;
14190 end ::= ‘END’ { Keyword } ;
14191 assert ::= ‘ASSERT’ { Keyword } ;
14192 true ::= (‘TRUE’ | ‘true’) / constraint : BNF.trueValue { Keyword } ;
14193 false ::= (‘FALSE’ | ‘false’) / constraint : BNF.falseValue { Keyword } ;
14194 label ::= ‘LABEL’ { Keyword } ;
14195 description ::= ‘DESCRIPTION’ { Keyword } ;
14196 property ::= ‘PROPERTY’ { Keyword } ;

14197 reservedKeyWord ::= string | binary |


14198 bcd | set | bool | array | type | if | then | else | switch | case | default |
14199 packed | record | bit | field | of | procedure | request | response | table |
14200 enum | end | assert | true | false | constants | label | description | property;

14201 anyInt ::= int | unsignedInt | ‘U’?‘INT’ number? { Built-in type or the like } ;
Annex G / Identifiers 403
DRAFT ANSI C12.19-2012

14202 anyFloat ::= floatingPoint | floatingPointCHAR | fixedPointBCD |


14203 ‘FLOAT’ number? { Built-in type or the like } ;
14204 anyFill ::= fill | ‘FILL’ number? { Built-in type } ;

14205 reservedName ::= reservedKeyWord | anyInt | anyFloat | anyFill | specType | nil;

14206 The following rules are used to identify the members of a packed record or of a bit field based on the production rule
14207 anyElementName.

14208 digit ::= ’0’..’9’ ;

14209 number ::= digit+ ;


14210 positiveNumber ::= ‘+’? number ;
14211 negativeNumber ::= ‘-’ number ;
14212 anyNumber ::= (positiveNumber | negativeNumber) {Any positive or negative
14213 integer};
14214 space ::= [#x09 #x0A #x0D #x0C #x20] { White space } ;
14215 comment ::= ‘{’ (‘\\}’ | (anyChar – ‘}’))* ‘}’ ;
14216 S ::= [\S] | ([\S] ? comment [\S]?){ Shorthand for “white spaces” for
14217 convenience. Note that it also allows for embedded comments.} /
14218 constraint : text “Also [\S] is equivalent to \S” ;
14219 capLetter ::= ’A’..’Z’ ;

14220 id ::= capLetter (capLetter | digit)* (‘_’ (capLetter | digit)+)* { Shall


14221 begin with a capital letter, followed by any number of capitals letters or
14222 digits, followed by any number of capital letters, digits, or underscores,
14223 except that it cannot have more than one underscore in succession and
14224 it cannot end with an underscore. } ;
14225 anyElementName ::= (id – (id reservedSuffix)) - reservedName { Assigned to names of
14226 elements and subelements. It shall not end with a reserved suffix, and it
14227 shall not be a reserved name.} ;
14228 decIdentifier ::= (id decSuffix) ( { Assigned to names of decades. }
14229 /unique : EDC.ALL { Decade names are unique across all scopes
14230 defined within one instance of the End Device Class, },
14231 /constraint : BNF.decScopeReference { It can be used as a reference
14232 to members located in the scope of a Decade. },
14233 / match : ‘/tdl//decade/@name’ { The source of the name of the
14234 Decade in the XML TDL document. }
14235 );
14236 tblIdentifier ::= (id tblSuffix) ( { Assigned to names of tables. }
14237 /unique : EDC.ALL { Table names shall be unique across all scopes
14238 defined within one instance of an End Device class. },
14239 /constraint : BNF.tblScopeReference { It can be used as a reference to
14240 members located in the scope of a table. }
14241 / match : ‘/tdl//table/@name’ { The source of the name of the table in
14242 the XML TDL document. }
14243 );
404
DRAFT ANSI C12.19-2012

14244 procIdentifier ::= (id procSuffix) ( { Assigned to names of procedures. }


14245 /unique : EDC.ALL { Procedure names shall be unique across all
14246 scopes defined within one instance of the End Device Class },
14247 /constraint : BNF.procScopeReference { It can be used as a reference
14248 to members located in the scope of a procedure. }
14249 ),
14250 /constraint : text : ‘Instantiated in Standard Procedure Initiate table 7.’,
14251 /constraint : text : ‘Instantiated in Standard Procedure Response table
14252 8.’,
14253 / match : ‘/tdl//procedure/@name’ { The source of the name of the
14254 procedure in the XML TDL document. }
14255 );
14256 rcdIdentifier ::= (id rcdSuffix) ( { Assigned to names of packed records. }
14257 (/unique : TDL | /unique : DEC | /unique : TBL | /unique : PROC) {
14258 Packed record names shall be unique within the defining scope. },
14259 /constraint : BNF.rcdTypeReference { It is a type reference, so it can
14260 be used as a constructor of a derived type. It can also be used as a
14261 reference to a packed record field in any context where a reference to a
14262 data type is needed. },
14263 / match : ‘/tdl//packedRecord/@name’ { The source of the name of the
14264 packed record in the XML TDL document. }
14265 );
14266 bfldIdentifier ::= (id bfldSuffix) ( { Assigned to names of bit fields. }
14267 (/unique : TDL | /unique : DEC | /unique : TBL | /unique : PROC) {
14268 Bit field names shall be unique within their defining scope. },
14269 /constraint : BNF.bfldAssignedType { When used as a constructor, it
14270 creates a data type that is managed and transmitted based on the rules
14271 set for the assigned bfldAssignedType. },
14272 /constraint : atomic { When used as a constructor, it creates a data
14273 type that is an atomic element. },
14274 /constraint : BNF.bfldTypeReference { It is a type reference, so it can
14275 be used as a constructor of a derived type. It can also be used as a
14276 reference to a bit field in any context where a reference to a data type is
14277 needed. }
14278 / match : ‘/tdl//bitField/@name’ { The source of the name of the bit
14279 field in the XML TDL document. }
14280 );
14281 enumUnnamedElements ::= ‘element’ | ‘subElement’ | ‘array’ | ‘set’ { TDL Elements that support
14282 unnamed enumerators.} ;
14283 enumIdentifierXPath ::= ‘/tdl/enumerator/@name’ { The source of the name is the named
14284 enumerator in the XML TDL document scope. } |
14285 ‘/decade/enumerator/@name’ { The source of the name is the named
14286 enumerator in the XML TDL document decade scope. } |

Annex G / Identifiers 405


DRAFT ANSI C12.19-2012

14287 ‘//table/enumerator/@name’ { The source of the name is the named


14288 enumerator in the XML TDL document table scope. } |
14289 ‘//procedure/enumerator/@name’ { The source of the name is the
14290 named enumerator in the XML TDL document procedure scope. } |
14291 / constraint : text ‘Although enumUnnamedElements produce
14292 unnamed enumerators, it is possible to refer to the enumerator by
14293 suffixing enumSuffix to the elements name. I.e., the name constructed
14294 by the concatenation of enumUnnamedElements/@name with
14295 enumSuffix’ ;
14296 enumIdentifier ::= (id enumSuffix )( { Assigned to names of enumerators. }
14297 (/unique : TDL | /unique : DEC | /unique : TBL | /unique : PROC) {
14298 Enumerator names shall be unique within their defining scope. },
14299 /constraint : BNF.enumTypeReference { It can also be used as a
14300 reference to a named enumerator in any context where a reference to an
14301 restriction on data values is needed. }
14302 / match : enumIdentifierXPath { The source of the name of the
14303 enumerator in the XML TDL document. } ;
14304 );
14305 constIdentifier ::= (id cnstSuffix )( { Assigned to names of constants. }
14306 (/unique : TDL | /unique : DEC | /unique : TBL | /unique : PROC) {
14307 Constants’ names shall be unique within their defining scope. },
14308 / match : ‘/tdl//enumerator/enum/@name’ { The source of the name of
14309 the constant in the XML TDL document.}
14310 );
14311 tblNumber ::= ‘0’..’2039’ ( { A number ranging from 0 to 2039 inclusive. }
14312 /unique : TDL.ALL { Table numbers shall be unique within any one
14313 TDL document. That is, they shall be unique within the Standard’s
14314 document scope. They shall also be unique within any Manufacturer’s
14315 document scope. },
14316 (/constraint : STD.TABLE_IDA_BFLD. TBL_PROC_NBR |
14317 /constraint : STD.TABLE_IDB_BFLD. TBL_PROC_NBR |
14318 /constraint : STD.TABLE_IDC_BFLD. TBL_PROC_NBR |
14319 ) { tblNumber is associated with TBL_PROC_NBR of any of the
14320 TABLE_IDx_BFLD types. } ;
14321 / match : ‘/tdl//table/@number’ { The source of the number of the table
14322 in the XML TDL document. }
14323 );
14324 procNumber ::= ‘0’..’2039’ ( { A number ranging from 0 to 2039 inclusive. }
14325 /unique : TDL.ALL { Procedure numbers shall be unique within any
14326 one TDL document. i.e., They shall be unique within the Standard’s
14327 document scope. They shall also be unique within any Manufacturer’s
14328 document scope. },
14329 (/constraint : STD.TABLE_IDA_BFLD. TBL_PROC_NBR |
14330 /constraint : STD.TABLE_IDB_BFLD. TBL_PROC_NBR |

406
DRAFT ANSI C12.19-2012

14331 /constraint : STD.TABLE_IDC_BFLD. TBL_PROC_NBR


14332 ) { procNumber is associated with TBL_PROC_NBR of any of the
14333 TABLE_IDx_BFLD types. },
14334 / match : ‘/tdl//procedure/@number’ { The source of the number of the
14335 procedure in the XML TDL document. }
14336 );
14337 decNumber ::= ‘0’..’203’ ( { A number ranging from 0 to 203 inclusive. }
14338 /unique : EDC.ALL { Decade numbers shall be unique throughout the
14339 End Device class. },
14340 / match : ‘/tdl//decade/@number’ { The source of the number of the
14341 decade in the XML TDL document. }
14342 );
14343 defaultSetNumber ::= ‘0’..’255’( { A number ranging from 0 to 255 inclusive. }
14344 / unique : EDC.ALL { Default set numbers shall be unique throughout
14345 the End Device class. }
14346 / constraint : GEN_CONFIG_TBL. DEFAULT_SET_USED {
14347 Located in Table 0 of the End Device in the DEFAULT_SET_USED
14348 final element.},
14349 / match : ‘/edl//defaultSet/@number’ { The source of the number of
14350 the default set number in the XML EDL document. }
14351 );

14352 G.5 Basic data types

14353 The following are used as the ultimate constraint on basic data types for transmission purposes. All numbers,
14354 Booleans, and text strings are ultimately reduced to a collection of these types.

14355 oneBit ::= [#x0-#x1] { 1 bit range } ;


14356 eightBits ::= [#x00-#xFF] /constraint :atomic { 8 bits } ;
14357 sixteenBits ::= [#x0000-#xFFFF] { 16 bits } ;
14358 twentyFourBits ::= [#x000000-#xFFFFFF] { 24 bits } ;
14359 thirtyTwoBits ::= [#x00000000-#xFFFFFFFF] { 32 bits } ;
14360 fortyBits ::= [#x0000000000-#xFFFFFFFFFF] { 40 bits } ;
14361 fortyEightBits ::= [#x000000000000-#xFFFFFFFFFFFF] { 48 bits } ;
14362 fiftySixBits ::= [#x00000000000000-#xFFFFFFFFFFFFFF] { 56 bits } ;
14363 sixtyFourBits ::= [#x0000000000000000-#xFFFFFFFFFFFFFFFF] { 64 bits } ;

14364 fillNil ::= [] { no bits } ;


14365 fillEightBits ::= [#x00] /constraint :atomic { 8 fill bits } ;
14366 fillSixteenBits ::= [#x00]2 { 16 fill bits } ;
14367 fillTwentyFourBits::= [#x00]3 { 24 fill bits } ;
14368 fillThirtyTwoBits ::= [#x00]4 { 32 fill bits } ;
14369 fillFortyBits ::= [#x00]5 { 40 fill bits } ;
14370 fillFortyEightBits::= [#x00]6 { 48 fill bits } ;
14371 fillFiftySixBits ::= [#x00]7 { 56 fill bits } ;
14372 fillSixtyFourBits ::= [#x00]8 { 64 fill bits } ;

14373 zeroValue ::= [#x0] { All bits set to zero } ;


14374 trueValue ::= [#x1] { Value of true } ;
14375 falseValue ::= [#x0] { Value of false } ;
Annex G / Basic data types 407
DRAFT ANSI C12.19-2012

14376 boolValue ::= trueValue | falseValue { Value of BOOL types } ;

14377 setAtomicElement ::= boolValue8 / constraint : BFLD.eightBits { 8 BOOL type bits } ;

14378 iso646 ::= (eightBits (/constraint : text ‘As per ISO 7-bit coded character set for information
14379 interchange, per ISO/IEC 646-1991.’)
14380 ) /constraint : atomic ;

14381 iso8859 ::= (eightBits (/constraint : text ‘As per ISO 8859-1-1998 or ECMA 94-1996 Latin 1
14382 character set.’)
14383 ) /constraint : atomic ;

14384 utf8 ::= eightBits (/constraint : text ‘As per Section 2.5 “Encoding Forms / UTF-8” and
14385 Section15.9 “Specials” of The Unicode Standard [B13]. In UTF-8, the
14386 byte order mark, BOM, corresponds to the byte sequence [#xEF]
14387 [#xBB] [#xBF]. The BOM of UTF-8 shall be permitted only when it
14388 can be accommodated by the size of the element that is of type utf8
14389 whose size is eightBits3.., but it shall be ignored (not displayed) by the
14390 processing application.’,
14391 /constraint : atomic) ;

14392 anyChar ::= (iso646 | iso8859 | utf8


14393 ) ( /constraint : GEN_CONFIG_TBL.CHAR_FORMAT,
14394 /constraint : GEN_CONFIG_TBL.DATA_ORDER) ;

14395 fixedPointStringNumber ::= (S* anyNumber ([.] number)? S*) / constraint BNF.anyChar {
14396 This format may be used to represent fixed point numbers that are encapsulated
14397 as strings.} ;

14398 stringExponent ::= (‘E’ | ‘e') anyNumber;

14399 floatingPointStringNumber ::= (S* anyNumber ([.] number)? stringExponent? S*) / constraint
14400 BNF.anyChar {
14401 This format may be used to represent fixed point numbers that are encapsulated
14402 as strings.} ;

14403 bcdMinus ::= [#xA] { Used for the representation of the minus sign. When expressed as a
14404 CHAR, this value is mapped to the negation character ‘-’ } ;

14405 bcdSpace ::= [#xB] { Used for the representation of the space character. When represented as
14406 a CHAR, this value is mapped to the space character [#x20].} ;

14407 bcdDecimal ::= [#xD] { Used for the representation of the decimal point. When represented as a
14408 CHAR, this value is typically mapped to a period ‘.’ or a comma ‘,’,
14409 based on the End Device locale.} ;

14410 bcdStopDown ::= [#xF] { Provides numeric support for mechanical dial meters dial switch closure
14411 detection. This is used following a bcdDigit to indicate early numeric
14412 processing termination. All numeric evaluations shall stop, the next digit
14413 shall be assigned the value 0, and then the result shall be truncated by
14414 discarding all digits that follow the next. Example: the BCD sequence
14415 [#x1] [#x2] [#xD] [#x4] [#xF] [#x5], [#x6] representing the fixed point
14416 value ‘12.456’ shall be truncated upon evaluation to “12.40”. } ;

408
DRAFT ANSI C12.19-2012

14417 bcdStopUp ::= [#xE] { Provides numeric support for mechanical dial meters dial switch closure
14418 detection. This is used following a bcdDigit to indicate early numeric
14419 processing termination. All numeric evaluations shall stop, the next digit
14420 shall be assigned the value 5, and then the result shall be truncated by
14421 discarding all digits that follow the next digit. Example 1: the BCD
14422 sequence [#x1] [#x2] [#xD] [#x4] [#xE] [#x0], [#x6] representing the
14423 fixed point value ‘12.406’ shall be truncated upon evaluation to “12.45”.
14424 Example 2: the BCD sequence [#x1] [#x2] [#xD] [#x4] [#x5] [#x6] [#xE]
14425 representing the fixed point value ‘12.456’ shall be truncated upon
14426 evaluation to “12.4565”.} ;
?
14427 bcdDigit ::= [#x0-#x9] ( bcdStopDown | bcdStopUp) { Used for the representation of the binary
14428 values 0 to 9. When expressed as a CHAR, this value shall be mapped to
14429 [#x30-#x39] } ;

14430 bcdUnassignedDigit ::= [#xC] { Unused or unassigned codes. Values are reserved for future use. } ;

14431 bcdNibble ::= bcdDigit | bcdMinus | bcdSpace | bcdDecimal | bcdUnassignedDigit {


14432 Covers all possible binary permutations of a nibble.};

14433 bcdMSNibble ::= bcdNibble { The most significant nibble of a BCD. } / constraint : text ‘Occupies
14434 bits 4..7 of the Octet.’ ;

14435 bcdLSNibble ::= bcdNibble { The least significant nibble of a BCD. } / constraint : text ‘Occupies
14436 bits 0..3 of the Octet.’ ;

14437 bcdOctet ::= ( bcdMSNibble | bcdLSNibble) /constraint : eightBit{ Each Octet is two BCD digits.
14438 The most significant, bcdMSNibble, digit of each Octet is in bits 4..7. The
14439 least significant digit, bcdLSNibble, of each Octet is in bits 0..3 Invalid
14440 BCD digits are allowed as bcdOctet may be used to represent entities
14441 other than just numbers.};
+ +
14442 fixedPointBCDNumber ::= (bcdSpace* bcdMinus? bcdDigit (bcdDecimal bcdDigit )? bcdSpace*) {
14443 This format is used to represent fixed-point BCD numbers.}
14444 (/constraint BNF.bcdOctet) {
14445 Expressed as a sequence of two BCD nibbles. The most significant
14446 nibble, bcdMSNibble, of each Octet is in bits 4..7. The least
14447 significant nibbles, bcdLSNibble, of each Octet is in bits 0..3.},
+
14448 (/constraint : BNF.eightBit) /constraint : atomic {
14449 Expressed as a sequence of Octets that are transmitted as one entity.}
14450 );

14451 G.5.1 Basic data type definitions

14452 The following basic types shall be used to create elements within packed records and to build more complex derived
14453 types:

14454 nil ::= ‘NIL’/ constraint : BNF.fillNil { No bits delivered. An Indicator for field of length zero Octets. } ;

14455 int ::= (‘INT8’ /constraint : BNF.eightBits { 8 bits signed integer. } |


14456 (‘INT16’/constraint : BNF.sixteenBits { 16 bits signed integer. } |
14457 ‘INT24‘ /constraint : BNF.twentyFourBits { 24 bits signed integer. } |
14458 ‘INT32’ /constraint : BNF.thirtyTwoBits { 32 bits signed integer. } |
14459 ‘INT40’ /constraint : BNF.fortyBits { 40 bits signed integer. } |
Annex G / Basic data types 409
Basic data type definitions
DRAFT ANSI C12.19-2012

14460 ‘INT48’ /constraint : BNF.fortyEightBits { 48 bits signed integer. } |


14461 ‘INT56’ /constraint : BNF.fiftySixBits { 56 bits signed integer. } |
14462 ‘INT64’ /constraint : BNF.sixtyFourBits { 64 bits signed integer. }
14463 ) / constraint : GEN_CONFIG_TBL.DATA_ORDER
14464 ) (/constraint GEN_CONFIG_TBL.INT_FORMAT, /constraint : atomic ) ;

14465 unsignedInt
14466 ::= (‘UINT8’ /constraint : BNF.eightBits { 8 bits unsigned integer. } |
14467 (‘UINT16’ /constraint : BNF.sixteenBits { 16 bits unsigned integer. } |
14468 ‘UINT24’ /constraint : BNF.twentyFourBits { 24 bits unsigned integer. } |
14469 ‘UINT32’ /constraint : BNF.thirtyTwoBits { 32 bits unsigned integer. } |
14470 ‘UINT40’ /constraint : BNF.fortyBits { 40 bits unsigned integer. } |
14471 ‘UINT48’ /constraint : BNF.fortyEightBits { 48 bits unsigned integer. } |
14472 ‘UINT56’ /constraint : BNF.fiftySixBits { 56 bits unsigned integer. } |
14473 ‘UINT64’ /constraint : BNF.sixtyFourBits { 64 bits unsigned integer. }
14474 ) / constraint : GEN_CONFIG_TBL.DATA_ORDER
14475 ) /constraint : atomic;

14476 floatingPoint
14477 ::= (‘FLOAT32’ /constraint : BNF.thirtyTwoBits, /constraint: text ‘32 bits single-precision floating
14478 point real number, per IEEE Std 754-2008.’ |
14479 ‘FLOAT64’ /constraint : BNF.sixtyFourBits, /constraint: text ‘64 bits double-precision floating
14480 point real number, per IEEE Std 754-2008. }
14481 ) ( /constraint : GEN_CONFIG_TBL.DATA_ORDER , /constraint : atomic) ;

14482 floatingPointCHAR
14483 ::= (‘FLOAT_CHAR6’ (/constraint : BNF.eightBits)6 {A 6-Octet floating point number.} |
14484 ‘FLOAT_CHAR12’ (/constraint : BNF.eightBits)12 {A 12-Octet floating point number.} |
14485 ‘FLOAT_CHAR21’ (/constraint : BNF.eightBits)21 {A 21-Octet floating point number.}
14486 ) (/constraint : BNF.floatingPointStringNumber, /constraint : atomic, /constraint : BNF.anyChar +);

14487 fixedPointBCD
14488 ::= (‘FIXED_BCD4’ (/constraint : BNF.bcdOctet)4 {A fixed-point number consisting of eight (8) BCD
14489 digits.} |
14490 ‘FIXED_BCD6’ (/constraint : BNF.bcdOctet)6 {A fixed-point number consisting of twelve (12) BCD
14491 digits.} |
14492 ‘FIXED_BCD8’ (/constraint : BNF.bcdOctet)8 {A fixed-point number consisting of sixteen (16)
14493 BCD digits.}
14494 ) (/constraint : BNF.fixedPointBCDNumber, /constraint : atomic );

14495 fill ::= (‘FILL8’ /constraint : BNF.fillEightBits { Eight zero-filled bits used as space holder or filler. } |
14496 (‘FILL16’ /constraint : BNF.fillSixteenBits { Sixteen zero-filled bits used as space holder or filler. }
14497 |
14498 ‘FILL32’ /constraint : BNF.fillThirtyTwoBits { Thirty-two zero-filled bits used as space holder or
14499 filler. } |
14500 ‘FILL64’ /constraint : BNF.fillSixtyFourBits { Sixty-four zero-filled bits used as space holder or
14501 filler. }
14502 ) / constraint : GEN_CONFIG_TBL.DATA_ORDER
14503 ) /constraint :atomic ;

14504 specType ::= ( ‘CHAR’ / constraint : BNF.anyChar |


14505 (‘NI_FMAT1’ / constraint : GEN_CONFIG_TBL.NI_FORMAT1 |
14506 ‘NI_FMAT2’ / constraint : GEN_CONFIG_TBL.NI_FORMAT2 |
14507 ‘HTIME_DATE’ / constraint : STD.HTIME_DATE_RCD |
14508 ‘LTIME_DATE’ / constraint : STD.LTIME_DATE_RCD |
410
DRAFT ANSI C12.19-2012

14509 ‘STIME_DATE’ / constraint : STD.STIME_DATE_RCD |


14510 ‘HTIME’ / constraint : STD.HTIME_RCD |
14511 ‘STIME’ / constraint : STD.STIME_RCD |
14512 ‘TIME’ / constraint : STD.TIME_RCD |
14513 ‘DATE’ / constraint : STD.DATE_RCD |
14514 ‘RDATE’ / constraint : STD.RDATE_RCD
14515 ) / constraint : GEN_CONFIG_TBL.DATA_ORDER
14516 ) /constraint : atomic ;

14517 sizedType ::= ( (string / constraint : BNF.eightBits { Same as STRING (1) } |


14518 (string S* ‘(‘ intMathExpression ‘)’ ) (/constraint : BNF.eightBits)intMathExpression ) /
14519 constraint : BNF.anyChar* { intMathExpression is measured in size-of one ‘CHAR’ Octets.} |
14520 binary / constraint : BNF.eightBits { Same as BINARY (1) } |
14521 (binary S* ‘(‘ intMathExpression ‘)’ ) (/constraint BNF.eightBits)intMathExpression { intMathExpression is
14522 measured in Octets. The BINARY type is atomic and, unless it is replaced or redefined
14523 by the AMR application to expose its content. } |
14524 bcd / constraint : BNF.bcdOctet { Same as BCD (1) } |
14525 (bcd S* ‘(‘ intMathExpression ‘)’ ) (/constraint BNF.bcdOctet)intMathExpression { intMathExpression is
14526 measured in Octets,. }
14527 ) / constraint : atomic |
14528 set / constraint : BNF.setAtomicElement { Same as SET (1) } |
14529 (set S* ‘(‘ intMathExpression ‘)’ ) (/constraint BNF.setAtomicElement)intMathExpression { intMathExpression is
14530 measured in Octets, 8 Booleans bits per Octet. The atomic element can carry a minimum
14531 of eight bits. Final element references, however, can be made to any bit within the SET. }
14532 ;

14533 baseType ::= ( nil |


14534 int |
14535 unsignedInt |
14536 floatingPoint | floatingPointCHAR | fixedPointBCD |
14537 fill |
14538 specType |
14539 sizedType ) { All built-in types that can be assigned to Elements. All these types are also
14540 producers of atomic elements. } ;

14541 derivedType ::= derivedTypeReference { Elements that are derived from packed records and bit fields. } ;

14542 simpleType ::= (baseType | derivedType) { Elements that are not arrays. }

14543 arrayType ::= (array S* ‘[’ intMathExpression ‘]’ S* of S+ simpleType S* ) { intMathExpression is the
14544 number of repetitions of simpleType in the array. The size of the array shall be
14545 intMathExpression times the size of simpleType in Octets.} ;

14546 anyElementType
14547 ::= (simpleType | arrayType | derivedType) { Any type that can be used in an Element
14548 declaration. } ;

14549 G.5.2 Data type handling

14550 In order to add clarity to the structure of the tables, the generic data types can be used. Although their logical
14551 interpretation is identical across all implementations, their specific definition shall be determined using select fields
14552 from Table 00, GEN_CONFIG_TBL, as described next.

Annex G / Basic data types 411


Data type handling
DRAFT ANSI C12.19-2012

14553 G.5.2.1 Signed integers

14554 To allow signed integer values to transmit without requiring data format translations tagging, an indicator in
14555 GEN_CONFIG_TBL (Table 00) is provided. This indicator, INT_FORMAT, specifies the data format for all
14556 INTx types within the tables. The presently delineated signed integer data formats are twos complement, ones
14557 complement and sign/magnitude. When INT_FORMAT is applicable to a type, the constraint
14558 GEN_CONFIG_TBL.INT_FORMAT is used in the BNF definition of that type.

14559 Examples of signed integer formats follow:

14560 For the following three examples, the decimal number -1 is used.

14561 Twos Complement for INT8:

14562 1111 11112

14563 Ones Complement for INT8:

14564 1111 11102

14565 Sign/Magnitude for INT8:

14566 1000 00012

14567 G.5.2.2 Characters and strings

14568 To allow different character sets to be used within the tables, the data types CHAR and STRING have been
14569 defined. A STRING is an atomic array of CHARs. CHAR are encoded according to the character set being used.
14570 Clause 6, “Special data types”, provides a definition for CHAR and STRING. The currently supported values of
14571 CHAR are defined in the GEN_CONFIG_TBL (Table 00) using the element CHAR_FORMAT. The CHAR data
14572 type affects both CHARs and STRINGs. When CHAR_FORMAT is applicable to a data type, the constraint
14573 GEN_CONFIG_TBL.CHAR_FORMAT is used in the BNF definition of that type.

14574 G.5.2.3 Noninteger numbers

14575 To allow noninteger numeric values to be transmitted by different methods within the tables, additional data types
14576 have been defined. NI_FMAT1 and NI_FMAT2 are used to transmit numeric values of varying precision. The
14577 value of the elements NI_FORMAT1 and NI_FORMAT2, which are found in the GEN_CONFIG_TBL
14578 (Table 00), define how NI_FMAT1 and NI_FMAT2 are to be interpreted when reading from or writing to tables in
14579 an End Device. Clause 6, “Special data types”, provides definitions for NI_FMAT1 and NI_FMAT2 and for the
14580 different values of NI_FORMAT1 and NI_FORMAT2. When NI_FORMAT1 or NI_FORMAT2 are applicable
14581 to a data type, the constraint GEN_CONFIG_TBL.NI_FORMAT1 or constraint
14582 GEN_CONFIG_TBL.NI_FORMAT2 is used in the BNF definition of that type.

14583 G.5.2.4 Date and time formats

14584 To allow date and time to be transmitted by different methods within the tables, additional data types were defined.
14585 These are HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME, RDATE, and DATE.
14586 The value of the element TM_FORMAT, which is found in the GEN_CONFIG_TBL (Table 00), defines how the
14587 various date and time formats are to be interpreted when reading from or writing to tables in an End Device.
14588 Clause 6, “Special data types”, provides definitions for the date and time formats. When TM_FORMAT is
14589 applicable to a data type, the constraint GEN_CONFIG_TBL.TIME_FORMAT is used in the BNF definition of
14590 that type.

412
DRAFT ANSI C12.19-2012

14591 G.6 References to types, constants, and values

14592 The table definition syntax provides the means for referencing decades, tables, procedures, data types, constants,
14593 elements, subelements, and final elements. In addition, it is possible to utilize expressions that evaluate to numeric
14594 values or Boolean results when defining the dimensions of arrays, sets, strings, and binary elements; or selectors in
14595 if/then/else or switch/case constructions.

14596 The defining syntax for elements may be placed nearly anywhere inside a packed record or bit fields of a table
14597 document. Packed records, bit fields, and named enumerators and constants may be placed in the beginning of the
14598 document (document scope), inside a Decade (decade scope), within a table (table scope), or within a procedure
14599 (procedure scope). Table and procedure definitions may also be placed in the document (document scope) or inside
14600 a Decade (decade scope).

14601 Unnamed enumerators and constants may also be placed in the definition of an element; as such, they acquire the
14602 name of the container element as their prefix.

14603 Resolution of (locating or not locating) any of the above types or constants shall be predictable and unambiguous
14604 when the reference is made from anywhere in a document. In order for an entity to be resolvable, it has to be defined
14605 either in the processed document syntax or by the syntax of the referenced Standard. A resolved referenced entity
14606 may or may not exist in a given End Device instance unless specifically disqualified as a nonexistent entity in the
14607 architecture of the End Device (e.g., when the entity’s accessibility attribute is UNIMPLEMENTED), whereby
14608 forcing an entity to become irresolvable.

14609 For example, the element DATA_ORDER was defined by the Standard within the context of the bit field container
14610 FORMAT_CONTROL_1, which in turn is defined within the scope of table GEN_CONFIG_TBL. of
14611 GEN_CONFIG_DEC. One may reference the element DATA_ORDER in a number of forms and from many
14612 different scopes. The subclauses below define rules that establish unambiguously the search algorithm that leads to a
14613 uniform resolution by all implementations.

14614 G.6.1 Scoping rules

14615 G.6.1.1 Predefined STD and TDL scopes

14616 An End Device is fully qualified by one or two files:

14617 a) The referenced C12.19 Standard Table Definition file; and optionally

14618 b) The vendor (e.g., End Device manufacturer) supplied table definitions file that defines the variation,
14619 extension, restriction, or qualification of the End Device relative to the published referenced Standard.

14620 Within each of these files (the Standard published file and the vendor registered file), we may find definitions for
14621 types and constants that are defined at the document level.

Annex G / References to types, constants, and values 413


Scoping rules
DRAFT ANSI C12.19-2012

Document type Scope selector Scope coverage


Standard STD Standard document global scope.
References to a type, constant, or enumerator that was
defined in the document scope of the referenced (or self)
C12.19 Standard document.
Vendor registered TDL Current document scope or Standard document global
scope (if reference not found in this document scope).
References a type, constant, or enumerator that was defined
in the document context of the document where the
reference is made. If the reference was made within the
C12.19 Standard document, then it is a reference to a
definition within the Standard document. If the reference
was made within the supplementary table definition file
that was registered for an End Device, it is a reference to a
definition within manufacturer’s supplied file; however, if
the reference cannot be resolved, then the Standard
document global scope shall be searched as well. The
cascade reference to the Standard document scope may be
optionally suppressed through the use of the strict directive
(see strict attribute of replace, redefine, or override
directive).

14622 For example, if A_DATA_RCD were defined in a Standard document scope, then a nonstrict reference to this type
14623 may be made as follows:

Referenced made in Reference to A_DATA_RCD Resolved in


Standard document STD.A_DATA_RCD Standard
TDL.A_DATA_RCD Standard
Vendor registered STD.A_DATA_RCD Standard
document TDL.A_DATA_RCD Standard

14624 The reason for TDL.A_DATA_RCD, above, being resolved to Standard when referenced from the vendor registered
14625 document is that the TDL scope inherits all STD definitions. Therefore, if a TDL reference cannot be found in the
14626 current TDL and the current TDL is not STD, then STD scope shall be searched if the reference is not qualified as
14627 being strict.

14628 If A_DATA_RCD were defined in both Standard and Vendor document scopes, then a nonstrict reference to this
14629 type shall be resolved as follows:

Referenced made in Reference to A_DATA_RCD Resolved in


Standard document STD.A_DATA_RCD Standard
TDL.A_DATA_RCD Standard
Vendor registered STD.A_DATA_RCD Standard
document TDL.A_DATA_RCD Vendor document

14630 The reason for TDL.A_DATA_RCD, above, being resolved to Vendor when referenced from the vendor registered
14631 document is that the vendor’s TDL scope hides matching STD for those types defined within the vendor files. It is
14632 also important to note that under the same conditions, all TDL references made in the Standard documents shall
14633 refer to the Standard scope and not to the Vendor scope.

14634

414
DRAFT ANSI C12.19-2012

14635 If A_DATA_RCD were defined in the Vendor document scope only, then a nonstrict reference to this type shall be
14636 resolved as follows:

Referenced made in Reference to A_DATA_RCD Resolved in


Standard document STD.A_DATA_RCD Not found
TDL.A_DATA_RCD Not found
Vendor registered STD.A_DATA_RCD Not found
document TDL.A_DATA_RCD Vendor document

14637 G.6.1.2 Container scopes

14638 The Table definition syntax provides the means for referencing decades, tables, and procedures. The names of the
14639 tables, decades, and procedures shall be unique in any context of the End Device. Therefore, if the Standard defines
14640 a Table, then the vendor-supplied End Device registered document shall not contain a definition of a table that
14641 shares the same name as one in the C12.19 Standard being referenced. Similarly, if the Standard defines a Decade
14642 (or a Procedure), then the vendor-supplied End Device registered document shall not contain a definition of a
14643 Decade (or a Procedure) that exists in the C12.19 Standard being referenced. The TDL syntax provides means for
14644 associating a vendor table or procedure to the context of a Decade. Given that the name of decades, tables, and
14645 procedures are unique for any instance of an End Device description, they shall not be qualified by an STD or TDL
14646 prefix.

14647 All references starting with STD resolve to entities starting at the top-most level of the Standard document. All
14648 references starting with TDL resolve entities starting at the top-most level of the document where the reference was
14649 made; then optionally (if not found and if the document is not a Standard) it resolves to the top-most level of the
14650 referenced Standard document.

14651 The names of Tables, Decades, and Procedures define container scopes. These are contained within the TDL and
14652 STD.

14653 Use of a Decade name, Table name, or Procedure name as a prefix to a type, enumerator, or type reference resolves
14654 the referenced entity starting at the top-most context of the corresponding Decade, Table, or Procedure referred,
14655 respectively.

14656 Use of a Decade name, Table name, or Procedure name in a value-expression shall be replaced by the Decade,
14657 Table, or Procedure number. It is equivalent to typing the numeric value of the Decade, Table, or Procedure number.

14658 For example, assume that A_TBL (Table 102) and A_DEC (Decade 10) were defined in the Standard document
14659 scope and that B_TBL (Table 202) and B_DEC (Decade 20) were defined in the vendor’s document scope; then the
14660 following illustrates possible interpretations:

Referenced Name Number Interpreted to be


A_TBL 102 The constant 102.
A_DEC 10 The constant 10.
B_TBL 202 The constant 2250 = 202 + 2048.
B_DEC 20 The constant 20 (there is no distinction between Standard
Decade number and Manufacturer Decade number ranges).
A_TBL.IDENT The element IDENT in the scope of Standard Table 102.
A_DEC.IDENT_RCD The IDENT_RCD packed record that is defined in the
scope of Standard Decade 10.
B_TBL.DEMO The first instance of the Element DEMO in the scope of
manufacturer Table 202.
TYPE B_RCD = PACKED RECORD The element B_VALUE is of type A_RCD that was
B_VALUE : A_TBL.A_RCD; defined the scope of Standard Table 102.
END;

Annex G / References to types, constants, and values 415


Scoping rules
DRAFT ANSI C12.19-2012

14661 When processing fully qualified references that begin with TDL or STD as per referenceScope, the search shall
14662 begin in the leftmost scope (outer) and proceeded toward the right (the innermost scope) leading to the resolution of
14663 the reference. If the reference cannot be resolved and the outer scope is TDL and the scope qualifier is not strict,
14664 then a second search shall be performed, this time using STD instead of TDL. If the reference cannot be resolved,
14665 the search shall fail.

14666 When processing fully qualified references that begin with decScopeReference, tblScopeReference, or
14667 procScopeReference, the search shall begin in the leftmost scope (outer) and proceeded toward the right (the
14668 innermost scope) leading to the resolution of the reference. If the reference cannot be resolved, the search shall fail.

14669 When processing partially qualified references that begin with rcdIdentifier, bfldIdentifier, enumIdentifier, or
14670 constIdentifier, the initial search for the rcdIdentifier, bfldIdentifier, enumIdentifier, or constIdentifier shall begin in
14671 the current scope (the scope where the reference was made); then if not found, it shall be repeated in each of the
14672 parent scopes of the current document (TDL scope) until a match is found or until a match is not found. If the
14673 current document is vendor registered, then the search shall be repeated once in the STD scope of the registered
14674 referenced Standard. An exception to the above rule shall apply when a current scope being processed is a Table or
14675 Procedure that has been associated with a Decade scope. In this case, the Decade scope shall be searched first and
14676 then search shall continue in the TDL scope where that Decade is defined. Once all parent components were found,
14677 the reference shall be considered resolved; otherwise, it shall be considered unresolved.

14678 All rcdIdentifier, bfldIdentifier, enumIdentifier, and constIdentifier shall be unique within any inner scope where
14679 they were defined. rcdIdentifier, bfldIdentifier, enumIdentifier, and constIdentifier may be defined in an inner scope
14680 and an outer scope (upper). The first matching definition shall be the resolved one according to the search rules
14681 defined above.

14682 Example: Assume that A_RCD and A_TBL were defined in A_DEC and that A_RCD was also defined in A_TBL
14683 of a Standard document; then:

Referenced Name Referenced from Resolves to


A_RCD TDL Not Found
A_RCD A_DEC A_RCD defined in A_DEC
A_DEC.A_RCD Anywhere A_RCD defined in A_DEC
A_RCD A_TBL A_RCD defined in A_TBL
A_TBL.A_RCD Anywhere A_RCD defined in A_TBL

14684 G.6.2 References to values

14685 References can be made to the values of any element, subelement, or constants that are defined within the structure
14686 of any table. Also, references can be made to Decade names, Table names, Procedure names, or enumerated
14687 constants. Such references, when found in a mathematical expression, shall be evaluated to values they were
14688 assigned when defined.

14689 simpleElementName ::= anyElementName / constraint : text “Shall be of type baseType other than set”;

14690 arrayElementName ::= anyElementName / constraint : text “Shall be of type arrayType”;

14691 setElementName ::= anyElementName / constraint : text “Shall be of type set.”;

14692 index ::= intMathExpression { An integer used to select elements in collections. } ;

14693 localElement ::= (simpleElementName |


14694 arrayElementName S* ‘[‘ index ‘]’ | { index is the element position in the array. }
14695 setElementName S* ‘[‘ index ‘]’ | { index is the bit position in the set.}

416
DRAFT ANSI C12.19-2012

14696 S* localElement S* ) { This definition may be used to refer to run-time instantiated Table
14697 Element value. Correct dimensions (see index) shall be provided to by the
14698 application to avoid an error assert condition. A typical use is to refer to a specific
14699 value of an element for the purpose of communication or calculation.} ;

14700 localElementReference ::= (simpleElementName |


14701 arrayElementName S* ‘[‘ S* ‘]’ | { index is the element position in the array. }
14702 setElementName S* ‘[‘ S* ‘]’ | { index is the bit position in the set.}
14703 S* localElementReference S* ) { This definition may be used to refer to Table Elements
14704 that are referenced by the syntax. Full knowledge of dimensions and extents is not
14705 needed here. Typical use is to make references to elements for qualifying purposes. }
14706 ;

14707 psuedoElementName ::= ‘lastDimension’ { The actual number of Elements in the container of the referenced
14708 Element. See use-case example for value. } |
14709 ‘lastIndex’ { The positional index of the referencing Element in its container. For use-case,
14710 see value. } |
14711 S* psuedoElementName S* ;

14712 elementRoot ::= (tblIdentifier? S* [.])? S* localElement (S* [.] S* localElement)* |


14713 S* elementRoot S* ;

14714 element ::= elementRoot { Form 1 } |


14715 elementRoot ([.] S* psuedoElementName) { Form 2 } |
14716 [.] S* psuedoElementName { Form 3 } |
14717 S* element S* ;

14718 finalElement ::= element / constraint : BNF.baseType {Shall result in a baseType that yields the
14719 innermost Element member of the referenced Element leading to a value.} ;

14720 elementReferenceRoot ::= (tblIdentifier? S* [.])? S* localElementReference (


14721 S* [.] S* localElementReference)* |
14722 S* elementReferenceRoot S* ;

14723 elementReference ::= elementReferenceRoot { Form 1 } |


14724 elementReferenceRoot ([.] S* psuedoElementName) { Form 2 } |
14725 [.] S* psuedoElementName { Form 3 } |
14726 S* elementReference S* ;

14727 finalElementReference ::= elementReference / constraint : BNF.baseType {Shall result in a reference to a


14728 baseType that is the innermost Element member of the referenced Element.} ;

14729 The finalElementReference can take a number of forms as explained below:

Annex G / References to types, constants, and values 417


References to values
DRAFT ANSI C12.19-2012

Form Example Description


1 GEN_CONFIG_TBL.FORMAT_CONTROL_1.DATA_ORDER The value of DATA_ORDER found in the
FORMAT_CONTROL_1 bit field of
GEN_CONFIG_TBL.
1 GEN_CONFIG_TBL The numeric value assigned to
GEN_CONFIG_TBL (0).
1 DATA_ORDER Assuming a reference in the scope of
GEN_CONFIG_TBL. In this example, it is the
value of DATA_ORDER. DATA_ORDER is the
first Final Element that bears this name, when
searched sequentially, starting from the beginning
of the table that contains it.
1 .DATA_ORDER The value of DATA_ORDER. DATA_ORDER is
the first Final Element that bears this name, when
found following a search starting with its current
scope and then continuing toward outer scopes.
2 GEN_CONFIG_TBL.STD_TBLS_USED[0].lastDimension Returns the number of Elements available in the
SET STD_TBLS_USED. In this example, it is
equal to (GEN_CONFIG_TBL.
DIM_STD_TBLS_USED * 8), since
DIM_STD_TBLS_USED counts Octets and access
index of members of the SET is in bit-index.
2 GEN_CONFIG_TBL.STD_TBLS_USED.lastDimension Returns the actual number of Elements that make
up GEN_CONFIG_TBL and can be selected or
transported based on the active setup of End Device
(i.e., not accounting for any excluded sibling or
Elements that has a zero length).
2 GEN_CONFIG_TBL.FORMAT_CONTROL_2.lastIndex Returns the value 1. It is the positional index of the
Element FORMAT_CONTROL_2 in its container
GEN_CONFIG_TBL.
2 GEN_CONFIG_TBL.STD_PROC_USED.lastIndex Returns the value 18. This value is fixed by the
syntax of GEN_CONFIG_RCD, and it is
independent of values of other Final Elements such
as DIM_STD_TBLS_USED.
3 TYPE A_RCD = PACKED RECORD Assuming that the value of the Final Element
IF .lastDimension == 3 THEN B_RCD.X is set to 5, then “.lastDimension”
HI : UINT8; Returns 5 as the active extent of array Y. Therefore,
LO: UINT8; if the value B_RCD.X is 3, B_RCD.Y shall contain
ELSE the Elements HI and LO; otherwise it shall contain
W: UINT16; the element W. Note that this generic reference does
END; not require any direct knowledge of declaration
END; where A_RCD is placed, thus, making its definition
TYPE B_RCD = PACKED RECORD generic.
X : UINT8;
Y: ARRAY[X] A_RCD;
Z: STRING(5);
END;
3 TYPE A_RCD = PACKED RECORD “.lastIndex” Returns the active placement index of
IF .lastIndex == 3 THEN the packed record A_RCD in any context where
HI : UINT8; used. In this example, it will be in array B_RCD.Y.
LO: UINT8; Therefore, when A_RCD is the fourth array
ELSE member of Y, it will contain the Elements HI and
W: UINT16; LO; otherwise it contains the element W. Note that
END; the Standard does not permit array members to have
END; different sizes. In this example, all A_RCD are 16-
TYPE B_RCD = PACKED RECORD bit wide.
X : UINT8;
Y: ARRAY[5] A_RCD;
Z: STRING(5);
END;

418
DRAFT ANSI C12.19-2012

14730

14731 tdlScopeReference ::= tdl { The top-level scope of the active TDL document. } ;

14732 stdScopeReference ::= std { The top-level scope of the Standard document. When the Standard document is
14733 also the active document, then use of tdlScopeReference is equivalent to use of
14734 stdScopeReference. } ;

14735 decScopeReference ::= decIdentifier { The scope of the identified decade is the Decade name. } ;

14736 tblScopeReference ::= tblIdentifier { The scope of the identified table is the Table name. } ;

14737 procScopeReference ::= procIdentifier { The scope of the identified procedure is the Procedure name. } ;

14738 referenceScope ::= ( tdlScopeReference | stdScopeReference | decScopeReference | tblScopeReference |


14739 procScopeReference )? [.] |
14740 S* referenceScope S*; { A reference to any one scope. }

14741 rcdReference ::= referenceScope? rcdIdentifier { A reference to a packed record. } ;

14742 bfldReference ::= referenceScope? bfldIdentifier { A reference to a bit field. } ;

14743 derivedTypeReference ::= (rcdReference | bfldReference) { Reference to any derived type. } ;

14744 enumTypeReference ::= referenceScope? ((rcdIdentifier | bfldIdentifier) S* [.] S*) ? enumIdentifier {Reference
14745 to an named or unnamed enumerator. Unnamed enumerators required a
14746 derivedTypeReference to locate the final element whose name was used as a basis
14747 for the enumIdentifier. If the unnamed enumerator’s Element name is FOO, then
14748 the unnamed enumerator can be referenced as FOO_ENUM. } ;

14749 elementIdentifierReference ::= derivedTypeReference S* [.] S* anyElementName { A reference to any Element


14750 named that is defined in a packed record or bit field. The scope of the element
14751 needs to be specified with sufficient detail so that the correct packed record or bit
14752 field can be located. }

14753 G.6.3 Value

14754 A value shall be a signed or unsigned integer, a reference to a Decade, Table, or Procedure number or a reference to
14755 a Final Element whose value can be converted to an integer. A value (in contrast to anyValue) returns an integer
14756 result based on the following conversion rules:

14757 a) NI_FMAT1 and NI_FMAT2, floatingPoint, floatingPointCHAR, and fixedPointBCD shall be truncated to
14758 an integer value.

14759 b) BCD where shall return zero if it cannot be reduced to a valid fix-point number, or be truncated to an
14760 integer value representation of the BCD number.

14761 c) BCD, fixed- or floating-point elements shall be truncated to an integer value.

14762 d) STRING or CHAR elements shall return zero if their length is zero, or they hold only space; otherwise
14763 they shall return one.

14764 e) Boolean and SET members types shall return zero (false) or one (true).

Annex G / References to types, constants, and values 419


Value
DRAFT ANSI C12.19-2012

14765 f) FILL types and NIL type shall return zero.

14766 g) Inaccessible final elements (as per elements that are defined in a table that is unavailable in a run-time
14767 instance of the End Device table set) shall return zero.

14768 h) Inaccessible final elements (as per elements that are not available for selection due to a nonmatching
14769 condition of an IF or SWITCH clause) shall return zero.

14770 i) Inaccessible final elements (as per elements that are not available for selection due to irresolvable reference
14771 in the table set) shall return zero, and flag a table set error condition.

14772 j) The pseudo Final Element lastDimension shall return the actual number of Elements in its parent container,
14773 if the parent element is not an array; otherwise, it shall return the actual extent of its containing array (i.e.,
14774 lastDimension reports the actual number of “siblings” shared by the referred Element + 1).

14775 k) The pseudo Final Element lastIndex shall return the Element’s innermost index relative to the beginning of
14776 its defining packed record, bit field, array, or set. When the referenced Element is a packed record or a bit
14777 field, this value shall be identical to the Element index defined by the defining syntax. When the referred
14778 element is an array or a set member, then this is the index to the Element position within the array or set.

14779 anyValue ::= floatingPointStringNumber / constraint : text


14780 “A floating point number that is not expressible as a
14781 BNF.anyNumber shall trigger floating-point mode expression
14782 evaluation of all subsequent expression members.” |
14783 true / constraint : text “ Evaluates to 0. ” |
14784 false / constraint : text “Evaluates to 1.” |
14785 constValue { Evaluates the corresponding table, procedure, or decade value or the
14786 constant value in a positional assignment of an enumeration constant.
14787 }|
14788 (finalElement { The value of the selected final element } / constraint : text
14789 “According to the constraints listed in at the beginning of this
14790 subclause.” ) |
14791 S* anyValue S* ;

14792 value ::= anyValue /constraint : BNF.int { Evaluation is always cast to a signed integer. } ;

14793 infixMathExpression
14794 ::= mathExpression infixOp mathExpression { Infix expression
14795 following the precedence rules of BNF.infixOp. } ;

14796 cond ::= mathExpression /constraint : text “If the result is zero, it shall be
14797 interpreted as BNF.false; otherwise it shall be interpreted as
14798 BNF.true”
14799 '?' mathExpression { true case } (':' mathExpression {false case })? ;

14800 mathExpression ::= infixMathExpression { Infix expression } |


14801 cond { Conditional expression } |
14802 prefixOp mathExpression { A prefixed expression } |
14803 anyValue | { A simple unsigned numeric value }
14804 ‘(‘ mathExpression ‘)’ | { A parenthesized expression }
14805 S* mathExpression S* { Allow for spaces for readability } ;

14806 intMathExpression ::= mathExpression /constraint : BNF.int { Evaluation is always cast to a signed
14807 integer. } ;

420
DRAFT ANSI C12.19-2012

14808 prefixOp ::= ‘+’ { Positive integer operator, as in +10 } |


14809 ‘-‘ { The negation operator, changes the sign of the operand, as in -20 } |
14810 ‘~’ { Bitwise not operator } /constraint : text “casts argument to
14811 BNF.int prior to computation” |
14812 ‘!’ { Logical not operator } /constraint : text “casts result to
14813 BNF.boolValue prior to computation” ;

14814 multOp ::= ‘%’ { Modulus (remainder) operator } /constraint : text “casts arguments
14815 to BNF.int prior to computation” |
14816 ‘*’ { Multiplication operator } |
14817 ‘/’ { Division operator } ;

14818 addOp ::= ‘+’ { Addition operator } |


14819 ‘-‘ { Subtraction operator } ;

14820 bitShiftOp ::= (‘<<’ { Bitwise arithmetic shift left } |


14821 ‘>>’ { Bitwise arithmetic shift right sign is preserved and shifted into
14822 magnitude area} |
14823 ‘>>>’ { Bitwise logical shift right. Sign is not preserved; it is zeroed after
14824 being shifted into magnitude bits. }
14825 ) /constraint : text “casts argument to BNF.int prior to computation” ;

14826 condCmpOp ::= ‘<’ { Less-than operator } |


14827 ‘>’ { Greater-than operator } |
14828 ‘>=’ { Greater-than or equal-to operator } |
14829 ‘<=’ { Less-than or equal-to operator } ;

14830 condEqOp ::= ‘==’ { Equality operator } |


14831 ‘!=’ { Inequality operator } ;

14832 bitAndOp ::= ‘&’ { Bitwise AND operator } /constraint : text “casts argument to
14833 BNF.int prior to computation” ;

14834 bitXOrOp ::= ‘^’ { Bitwise exclusive OR operator } /constraint : text “casts argument
14835 to BNF.int prior to computation” ;

14836 bitOrOp ::= ‘|’ { Bitwise OR operator } /constraint : text “casts argument to
14837 BNF.int prior to computation” ;

14838 logAndOp ::= ‘&&’ { Logical AND operator } /constraint : text “casts argument to
14839 BNF.boolValue prior to computation” ;

14840 logOrOp ::= ‘||’ { Logical OR operator } /constraint : text “casts argument to
14841 BNF.boolValue prior to computation” ;

14842 infixOp ::= (multOp | addOp | bitShiftOp | condCmpOp | condEqOp |


14843 bitAndOp | bitXOrOp | bitOrOp | logAndOp | logOrOp) /constraint : text
14844 "These operators are grouped in order of precedence from high on
14845 the left to low on the right. Internal group members have identical
14846 relative precedence; as such, they are evaluated, upon encounter from
14847 left to right.” { Example multOp members (‘*’,’/’ and ‘%’) have
14848 higher precedence than addOp members (‘+’ and ‘-’); however,
14849 within multOp the members ‘*’,’/’ and ‘%’ have identical
14850 precedence, and when encountered, they will have a relative

Annex G / References to types, constants, and values 421


Value
DRAFT ANSI C12.19-2012

14851 precedence with the leftmost operator encountered having the


14852 highest. } ;

14853 G.7 Conditionals

14854 G.7.1 IF statements

14855 The IF condition shall be a Boolean resulting from the evaluation of an intMathExpression. If the result is zero, it
14856 shall be interpreted as false; otherwise it shall be interpreted as true.

14857 condition ::= intMathExpression ;

14858 G.7.2 SWITCH statements

14859 A SWITCH selection expression identifies an integer value that needs to be matched. This selection value is
14860 derived from the evaluation of an intMathExpression.

14861 caseExpression ::= intMathExpression ;

14862 G.8 BIT FIELD type

14863 Some data types do not always lend themselves to end on an Octet boundary. Where these occur, they shall be
14864 logically grouped together into a bit field definition, which shall end on an Octet boundary. For purposes of
14865 description, the bit field is treated as the basic object for appearance in the table structure. Figure G-3 illustrates a
14866 subtype structure.

Most Significant Byte Least Significant Byte


Octet Octet Octet Octet Octet Octet
((n*8)-1)..((n*8)-9) ... ... ... 15..8 7..0

14867 n = # of Octets used.

14868 Figure G-3—Subtypes and bit field bit ordering

14869 A bit field shall be created by bfldType. A bit field may contain one or more IF or SWITCH statements to modify
14870 its structure under some conditions. For the purpose of transport, the dimensions of a bit field and its Octet ordering
14871 shall be defined in terms of a basic data type (G.5.1, “Basic data type definitions”) as expressed in
14872 bfldAssignedType. The bit field identifier, bfldIdentifier, is the name of the derived bit field data type, and it can be
14873 referenced anywhere as if it were a built-in data type.

14874 bfldAssignedType ::= unsignedInt { Defines the data type associated with this bit field. } ;

14875 bfldType ::= type S+ bfldIdentifier S* ‘=’ S* bit S+ field S+ of S+ bfldAssignedType S+ (


14876 bfldMember)* S* end S* ‘;’ |
14877 S* bfldType S* ;

14878 bfldMember ::= anyElementName S* ‘:’ subType memberProperties? S* ‘;’ { A subelement } |


14879 bfldCase { A CASE statement. } |
14880 bfldIf { An IF statement . } |
14881 S* bfldMember S* ;

14882 startBitInclusive ::= number { The first bit that is occupied by a bit-field subelement. } ;

14883 endBitInclusive ::= number { The last bit that is occupied by a bit-field subelement.} ;
422
DRAFT ANSI C12.19-2012

14884 bfldBitRange ::= ‘(‘ S* startBitInclusive S* ’..’ S* endBitInclusive S* ‘)’ { A bit field range selector. This
14885 identifies the staring (startBitInclusive) and ending endBitInclusive bit
14886 positions that the subelement occupies.
14887 Example: ‘UINT(2..5)’ is a four bit unsigned integer. This subelement
14888 occupies bit positions 2 through 5. } |
14889 S* bfldBitRange S* ;

14890 subType ::= (‘BOOL’ S* ‘(‘ S* startBitInclusive S* ‘)’ ) /constraint : BNF.boolValue { The
14891 startBitInclusive value identifies the bit position occupied by this
14892 Boolean. } |
14893 (‘INT’ bfldBitRange) /constraint : GEN_CONFIG_TBL.INT_FORMAT { A
14894 signed integer. } |
14895 ‘UINT’ bfldBitRange { An unsigned integer. } |
14896 (‘FILL’ bfldBitRange) /constraint : BNF.zeroValue { Bit range shall be set to
14897 zero. } |
14898 S* subType S* ;

14899 bfldIf ::= if S+ condition then S+ bfldMember* (S* else bfldMember* S*)? end S* ‘;’ |
14900 S* bfldIf S* ;

14901 bfldCase ::= switch S+ caseExpression S+ of S+ bfldCaseMember? S* end S* ‘;’ |


14902 S* bfldCase S* ;

14903 bfldCaseMember ::= (case S+ (number | constValue) (S* ’..’ S* (number | constValue))? S* ‘:’ bfldMember+)*
14904 (default S* ‘:’ bfldMember+) |
14905 S* bfldCaseMember S* ;

14906 G.9 SET type

14907 A SET is a sizedType member of the type set. It is a collection of Booleans, eight Booleans per Octet. The
14908 dimension of a SET is thus measured in Octets, where each Octet is an atomic element. Each Boolean member of
14909 the SET is a final element.

14910 SETs are transmitted as an array of UINT8; however, when using array notation, indices to SET members refer to
14911 the Boolean bits and not to the Octet. When transmitted, indices and offsets refer to the UINT8 atomic element. The
14912 first Octet transmitted contains bit 0 through 7, of the SET, and the second Octet contains bits 8 through 15, as
14913 shown in Figure G-4.

Octet number Octet 1 Octet 2 Octet n


Bit number 7 to 0 15 to 8 … ((n*8)-1) to ((n*8)-8)

14914 Figure G-4—Set Octets and bit ordering

14915 Where n represents the size of the SET in Octets.

14916 Example: The following illustrates the method for specifying which member of a set is to be accessed.

14917 …
14918 FLAGS_USED : SET(16);
14919 …
14920 IF FLAGS_USED[1] THEN
14921 …
14922 END;

Annex G / SET type 423


DRAFT ANSI C12.19-2012

14923 IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_0_TBL] THEN


14924 …
14925 END;

14926 Note that in this last example, UDT_0_TBL used in this context is interpreted as the corresponding table number
14927 (84). Also FLAGS_USED[1] is a reference to the second bit (bit 1) of the first Octet of 16 in the SET.

14928 G.10 ARRAY type

14929 Repetitions of the same data type, used to describe a single element, can be grouped together in an array. Array
14930 elements are indexed starting with zero. Arrays are always transmitted from element zero to the last element, as
14931 shown in Figure G-5. The order of transmission of an element is a function of the data type being used.

Element 0 Element 1 ... Element n-2 Element n-1


14932

14933 Figure G-5—Single-dimension array ordering

14934 Arrays are one-dimensional. Multidimensional arrays can be created indirectly through the use of arrays of arrays.
14935 Array dimension elements defined in the same local scope shall be defined before they are used in a dimension
14936 statement; otherwise, they shall be resolved in the referenced scope.

14937 When the dimension of the array, as expressed by intMathExpression, is zero, then the array content collapses to a
14938 zero elements and the array elements shall not be transported.

14939 Referenced final elements of array-elements that collapsed due to zero dimension, or due to other exclusion (such as
14940 rcdIf or rcdCase or un-implemented table), shall evaluate to 0 (numeric or binary elements), space (CHAR or
14941 STRING elements), or FALSE (set or Boolean elements).

14942 When evaluated for sizing of an array, the evaluation of intMathExpression shall produce a non-negative integer.
14943 The size in Octets of each element of an array shall be identical to the size of any other element of the same array.

14944 When CHAR is used as the array type, there is no justification implied and each char is treated as a single array
14945 member. When STRING is used in the array type, there is no justification implied for the individual CHAR
14946 members of the string and all CHARS within the STRING shall be transported. It is suggested that a space character
14947 (0x20) be used as fill or pad.

14948 G.11 PACKED RECORD type

14949 Packed records are used to group element types, anyElementType, together as a new derived data type. A packed
14950 record can contain one or more IF statements or SWITCH statements to modify its structure conditionally. The
14951 content (elements) and size of a packed record may vary with changing run-time IF or SWITCH conditions.

14952 All derived types and referenced elements shall be defined before they are used in a packed record.

14953 rcdType ::= type S+ rcdIdentifier S* ’=’ S* packed S+ record S+ rcdMember* end (S+
14954 memberProperties*)? S* ‘;’ |
14955 S* rcdType S* ;

14956 rcdMember ::= anyElementName S* ‘:’ S* anyElementType (S* memberProperties)? S* ‘;’ |


14957 rcdIf |
14958 rcdCase |
14959 S* rcdMember S* ;

424
DRAFT ANSI C12.19-2012

14960 rcdIf ::= if S+ condition S+ then S+ rcdMember* (S* else rcdMember* S*)? end S* ‘;’ |
14961 S* rcdIf S* ;

14962 rcdCase ::= switch S+ intMathExpression S+ of S+ rcdCaseMemberS* end S* ’;’ |


14963 S* rcdCase S* ;

14964 rcdCaseMember::= (case S+ (number | constValue) (S* ‘..’ S* (number | constValue)) ? S* ‘:’ rcdMember+ )* {
14965 Implements one or more rcdMember if the switch evaluation matches the numeric
14966 range stated in the case expression. }
14967 (default S* ‘:’ rcdMember+)? { The default implementation when none of the case members
14968 matches the switch value. } |
14969 S* rcdCaseMember S* ;

14970 G.12 Constants

14971 Constants are symbolic representations of integer values that may be used in any math expression, and to reference
14972 ARRAY and SET elements by position. Table names, decade names, and procedure names are implicit constants
14973 derived from their respective number.
?
14974 constValue ::= ((referenceScope | enumTypeReference S* [.] S*) constIdentifier) / constraint :
14975 BNF.anyNumber { Evaluates to the corresponding constant numeric value. } |
14976 tblIdentifier / constraint : BNF.tblNumber { Evaluates to the corresponding table number. } |
14977 decIdentifier / constraint : BNF.decNumber { Evaluates to the corresponding decade
14978 number. } |
14979 procIdentifier / constraint : BNF.procNumber { Evaluates to the corresponding procedure
14980 number. } |
14981 S* constValue S* ;

14982 G.13 Tables

14983 Tables expose and instantiate one packed record into a final data structure. This packed record shall be resolved
14984 before it is used in a table. The table element also introduces a table scope. All types and enumerators that are
14985 defined inside a table scope are local to the table’s scope without conflict with all other types that may be defined in
14986 any other scope.

14987 tableDefinition ::= table S+ tblNumber S+ tblIdentifier S* ’=’ S* rcdReference S* ‘;’ |


14988 S* tableDefinition S* ;

14989 G.14 Procedures

14990 Procedures represent actions that can be performed by the End Device. A procedure is initiated by writing to Table
14991 7, and the result is retrieved by reading Table 8. The rcdReference in the request part of this statement defines the
14992 PARM_RCD in Table 7. Similarly, the rcdReference in the response part of this statement defines the
14993 RESP_DATA_RCD in Table 8.

14994 procDefinition ::= procedure S+ procNumber S+ procIdentifier (


14995 S+ request S* ‘=’ S* rcdReference)? (S+ response S* ‘=’ S* rcdReference)? S* ‘;’ |
14996 S* procDefinition S* ;

14997 The procDefinition introduces a procedure definition and a procedure scope. All types defined inside a procedure
14998 scope are local to the procedure’s scope without conflict with all other types that may be defined in any other scope.
14999 In addition to providing yet another scope, procedure elements also provide implicit instructions to construct the
15000 parameters and the response elements in Table 7, PROC_INITIATE_TBL, and Table 8, PROC_RESP_TBL.

Annex G / Constants 425


DRAFT ANSI C12.19-2012

15001 Each procedure request parameter shall extend STD.PROC_INITIATE_TBL.STD_PARM_RCD (or


15002 MFG_PARM_RCD) with the request rcdIdentifier. Each procedure response parameter shall extend
15003 STD.PROC_RESPONSE_TBL.STD_RESP_RCD (or MFG_RESP_RCD) with the response rcdIdentifier. The
15004 decision whether Standard (STD) or Manufacturer (MFG) target parameters and responses are used is guided by the
15005 procedure type, being Standard or Manufacturer.

15006 The invocation of the procDefinition directive effectively “builds” an extension to PROC_INITIATE_TBL and
15007 PROC_RESPONSE_TBL.

15008 Example: The following shows the result of invoking procDefinition for standard procedure numbers X, Y, and Z,
15009 and manufacturer procedures X and Y.

15010 TYPE STD_PARM_RCD = PACKED RECORD


15011 IF PROC.TBL_PROC_NBR == X THEN
15012 ‘PROC_DATA_’X : rcdIdentifier ;
15013 END;
15014 …
15015 IF PROC.TBL_PROC_NBR == Y THEN
15016 ‘PROC_DATA_’Y : rcdIdentifier ;
15017 END;
15018 …
15019 IF PROC.TBL_PROC_NBR == Z THEN
15020 ‘PROC_DATA_’Z : rcdIdentifier ;
15021 END;
15022 END;

15023 TYPE MFG_PARM_RCD = PACKED RECORD


15024 IF PROC.TBL_PROC_NBR == X THEN
15025 ‘PROC_DATA_’X : rcdIdentifier ;
15026 END;
15027 …
15028 IF PROC.TBL_PROC_NBR == Y THEN
15029 ‘PROC_DATA_’X : rcdIdentifier ;
15030 END;
15031 END;

15032 TYPE PARM_RCD = PACKED_RECORD


15033 IF PROC.MFG_FLAG == FALSE THEN
15034 STANDARD : STD_PARM_RCD;
15035 END;
15036 IF PROC.MFG_FLAG = TRUE THEN
15037 MANUFACTURER : MFG_PARM_RCD;
15038 END;
15039 END;

15040 TYPE PROC_FORMAT_RCD = PACKED RECORD


15041 PROC : TABLE_IDB_BFLD;
15042 SEQ_NBR : UINT8;
15043 PARM : PARM_RCD;
15044 END;

15045 The index of each implied IF statement is the procedure number, thus ensuring that the extension is not order of
15046 declaration dependent. The listing below illustrates this process when applied to Table 7, PROC_INITIATE_TBL:

15047
426
DRAFT ANSI C12.19-2012

Example index values for elements of PROC_FORMAT_RCD that are found in Table 7, PROC_INITATE_TBL
Procedure # Element Name Element Index
PROC 0
SEQ_NBR 1
0 PARM. STANDARD 2.0
1 PARM. STANDARD 2.0
2 PARM. STANDARD 2.0
3 PARM. STANDARD 2.0
4 PARM. STANDARD 2.0
PARM. STANDARD.PROC_DATA_4.LIST 2.0.4.0
5 PARM. STANDARD.PROC_DATA_5 2.0.5
PARM. STANDARD.PROC_DATA_5.LIST 2.0.5.0
PARM. STANDARD.PROC_DATA_5.ENTRIES_READ 2.0.5.1
6 PARM. STANDARD PROC_DATA_6 2.0.6
PARM. STANDARD.PROC_DATA_6.ED_MODE 2.0.6.0
3 PARM. MANUFACTURER.PROC_DATA_3 2.1.3
PARM. MANUFACTURER.PROC_DATA_3.FEATURE 2.1.3.0
PARM. MANUFACTURER.PROC_DATA_3.KEY 2.1.3.1
Etc.
15048

15049 G.15 Single-Line Math Expressions

15050 Single-Line Math (SLM) Expressions represent information that is provided by the programmer of the End Device
15051 for use as information for the Utility or service provider. The information is a mathematical expression, similar to an
15052 equation that may be used in a spreadsheet. The expression is typically used to clarify the implementation or to
15053 describe how a Table Element value is computed and its dependence on other Table Elements. When used, SLM is
15054 encoded as STRINGs in Tables. The following BNF notation defines the construction rules for SLM.

15055 Note that this release of the Standard does not provide a list of “built-in” functions.

15056 tblIdentifierOrAlias ::= tblIdentifier { Any Table name. } |


15057 'ST' S* '(' slmIntMathExpression ')' { Shorthand for BNF.tblIdentifier that is
15058 also a Standard Table. } |
15059 'MT' S* '(' slmIntMathExpression ')' { Shorthand for BNF.tblIdentifier that is
15060 also a Manufacturer Table. } |
15061 S* tblIdentifierOrAlias S* ;

15062 slmLocalElement ::= localElement | number { Number is the index of the element. } ;

15063 slmElementRoot ::= tblIdentifierOrAlias S* '.' S* localElement (S* '.' S* localElement)* |


15064 s* slmElementRoot S* { Absolute path since the context is unknown.} ;

15065 slmElement ::= slmElementRoot ('.' S* psuedoElementName)? |


15066 S* slmElement S* ;

15067 slmFinalElement ::= slmElement /constraint : BNF.baseType { Shall result in a path to a base type that
15068 yields a Final Element. } ;

15069 slmValue ::= anyValue | tblIdentifierOrAlias | slmFinalElement |


15070 S* slmValue S* ;

15071 slmIntMathExpression
15072 ::= slmMathExpression /constraint : BNF.int { Evaluation is always cast to a
15073 signed integer. } ;

Annex G / Single-Line Math Expressions 427


DRAFT ANSI C12.19-2012

15074 slmInfixMathExpression
15075 ::= slmMathExpression infixOp slmMathExpression { Infix expression following the
15076 precedence rules of BNF.infixOp. } ;

15077 slmMathExpression ::= slmInfixMathExpression { Infix expression } |


15078 slmFunction { A function with arguments } |
15079 slmCond { A conditional expression } |
15080 prefixOp slmMathExpression { A prefixed expression. } |
15081 slmValue { A simple numeric value } |
15082 '(' slmMathExpression ')' { A parenthesized expression } |
15083 S* slmMathExpression S* ;

15084 slmCond ::= slmMathExpression '?' slmMathExpression { true case } (':' slmMathExpression
15085 {false case })? ;

15086 slmValueOrReference
15087 ::= slmMathExpression | slmElement { The Element may be Final Element or the name
15088 of an array, set, or derived type. This facilitates the use of an expression
15089 in arguments to function that operates on a data structure not only a
15090 Final Element. Example: The SLM expression
15091 “@SUM(GEN_CONFIG_TBL.STD_TBLS_USED)” may sum all the
15092 set bits in the set, yielding the number of Standard Tables used by the
15093 End Device. } ;

15094 slmFunctionArgs ::= slmValueOrReference (',' slmValueOrReference)* ;

15095 slmFunction ::= 'SL' S* '(' slmIntMathExpression ')' { Alias for the result returned by the SLM
15096 expression found at index BNF.arrayElementName [
15097 BNF.slmIntMathExpression] entry of the table that contains the ‘SL’
15098 term. This is equivalent to a verbatim replacement of the expression
15099 IN(BNF.slmIntMathExpression) with the SLM expression found at the
15100 integer index BNF.slmIntMathExpression of the array of the
15101 referencing SLM. } |

15102 'IN' S* '(' slmIntMathExpression ')' { Alias for the value sensed, measured of
15103 reported value by the associated source selection at index
15104 BNF.slmIntMathExpression in the array of source selections that
15105 related to this SLM. Example: Assume we have three sources: RMS
15106 Volts (Vrms at index 0), RMS Current (Irms at index 1), and Apparent
15107 Power (VA at index 2); then the SLM expression "IN(0) * IN(1)"
15108 indicates that the Apparent Power VA was computed as the product of
15109 Irms and Vrms. } |

15110 'OU' '(' slmIntMathExpression ')' ('=' slmMathExpression)? { Alias for sensing and
15111 optional driving an output control BNF.slmIntMathExpression. } |

15112 '@' simpleElementName S* '(' slmFunctionArgs ')' { A predefined function name.


15113 Example @ABS(BNF.slmMathExpression).} |

15114 S* slmFunction S* ;

15115 Example 1: Associated sense value 5 time 0.7:


15116 “IN(5) * 0.7”

428
DRAFT ANSI C12.19-2012

15117 Example 2: The value shown in example 1 (assuming it to be at index 3) plus 10:
15118 “SL(3) + 10”
15119 This is equivalent to entering “IN(5) * 0.7 + 10”

15120 Example 3: Assuming that source select 0 is Volts RMS and source select 1 is Ampere RMS and source select 2 is
15121 VA apparent, then the following expression expresses VA apparent:
15122 “IN(0) * IN(1)”

15123 Example 4: If the average demand is >1000, then report 1, otherwise 0, based on the demands reported in Table 28,
15124 at indices 2 and 6:
15125 “((ST(27).PRESENT_DEMAND[0].DEMAND_VALUE +
15126 ST(27).PRESENT_DEMAND[6]. DEMAND_VALUE) > 1000) ? 1 : 0”

15127 Example 5: The total energy consumed across Phase A (index 2), Phase B (index 4) and Phase C (index 6):
15128 “@SUM(ST(27).PRESENT_VALUE[2], ST(27).PRESENT_VALUE[4],
15129 ST(27).PRESENT_VALUE[6])”

15130 Example 6: Same as example 5, using indices instead of mnemonics:


15131 “@SUM(ST(27).1.2, ST(27).1.4, ST(27).1.6)”

15132 G.16 Properties

15133 Properties represent information that can be attached to an End Device Document Form definition or any item in the
15134 definition. A single property or multiple properties can be attached to an End Device, Table, Procedure, PACKED
15135 RECORD, or BIT FIELD types; or any member of a PACKED RECORD, BIT FIELD, or SET declaration such as
15136 Element, Sub-element, or Final Element.

15137 The DESCRIPTION property is common across all items. This property allows information about an item to be
15138 specified.

15139 The LABEL property is common across all items. It allows a short meaningful string to be associated with an item
15140 definition. A label is intended to be an alternate presentation text for the name of the item. The name of an item shall
15141 be used in TDL expression only.

15142 The ENUM property enumerates a list of valid values for an element. This property can only be applied to a final
15143 element. Values that are not explicitly listed shall be considered invalid.

15144 The ASSERT property provides a validation expression for an element or describes an inter-field or inter-table
15145 constraint.

15146 text ::= ["] anyChar* ["] { Semi colons are allowed within text as they are distinguished
15147 from the terminal ‘;’ by virtue that they are enclosed within double
15148 quotes.
15149 A double quote may be present by prefixing it with the escape character.
15150 e.g., "This is a valid \"text\" ; followed by a semicolon" ; } ;

15151 enumMember ::= (number | true| false) S* '=' S* text S* ';' |


15152 S* enumMember S* ;

15153 enumerator ::= enum S+ (enumIdentifier S* '=' S*)? enumMember* end S* ';' |
15154 S* enumerator S* ;

15155 memberProperties ::= commonProperties enumerator? ;

Annex G / Properties 429


DRAFT ANSI C12.19-2012

15156 commonProperties ::= ((label S* text S* ';')?


15157 (description S* text S* ';')?
15158 (assert S* '(' condition ')' S* (('ERROR' | 'WARN' | 'INFO') S *)? /
15159 constraint : text “Default assertion is 'ERROR'” text S* ';')* ) |
15160 S* commonProperties S* ;

15161 fieldProperties ::= field simpleElementName commonProperties ;

15162 typeProperties ::= type derivedTypeReference commonProperties? fieldProperties* ;

15163 tblProperties ::= commonProperties? typeProperties* ;

15164 procProperties ::= commonProperties? typeProperties* ;

15165 properties ::= property S* of S* table tblIdentifier tblProperties end ';' |


15166 property S* of S* procedure procIdentifier procProperties end ';' |
15167 property S* of S* typeProperties end ';' |
15168 S* properties S* ;
15169 Example:
15170 PROPERTY OF TABLE ACT_LP_TBL
15171 LABEL “Actual load profile table” ;
15172 DESCRIPTION “ACT_LP_TBL (Table 61) contains actual values for the
15173 Load Profile application limiting parameters.
15174 These parameters provide for up to four independent sets of Load Profile data.” ;
15175 ASSERT(ACT_LP_TBL.LP_MEMORY_LEN >= (ACT_LP_TBL.NBR_BLKS_SET1 + 8 ) *
15176 ACT_LP_TBL.NBR_BLK_INTS_SET1 * ACT_LP_TBL.NBR_CHNS_SET1* 2)
15177 ERROR “Inconsistent settings for ACT_LP_TBL”;
15178 END;

15179 G.17 Document Form Starting Production Rule

15180 The BNF.syntax production-rule is the starting point for encoding the Document Form Table-definitions.

15181 syntax ::= ((rcdType | bfldType | enumerator | properties)* (procDefinition | tableDefinition)) * ;

430
DRAFT ANSI C12.19-2012

15182 Annex H
15183 (informative)
15184 Date-time elements conversion algorithm (TM_FORMAT=3 and
15185 TM_FORMAT=4)
15186 The following algorithm shows how date and time fields represented using TM_FORMAT=3 or TM_FORMAT=4
15187 are converted to a date and time in the Gregorian calendar. This algorithm includes the complete leap years rules
15188 handling: Leap years are all years divisible by 4, with the exception of those divisible by 100, but not by 400. This
15189 algorithm can be used before or after the “Algorithm for converting from transported End Device time to End
15190 Device operational time” as defined in the intro of Decade 5. This algorithm is provided as reference, and any other
15191 equivalent algorithms can be used instead.

15192 #include <stdio.h>


15193 void timeDateToYMDHM(unsigned long timestamp)
15194 {
15195 static unsigned int totalDaysByMonth[] =
15196 { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
15197 unsigned int year, month, day, hour, minute;
15198
15199 hour = timestamp % 1440 / 60;
15200 minute = timestamp % 60;
15201 timestamp /= 1440;
15202 year = 1970 + (timestamp / ((unsigned long) 100 * 1461 - 3)) * 400;
15203 timestamp %= 100 * 1461 - 3;
15204
15205 if (timestamp >= 32 * 1461 + 789)
15206 timestamp++;
15207 if (timestamp >= 57 * 1461 + 789)
15208 timestamp++;
15209 if (timestamp >= 82 * 1461 + 789)
15210 timestamp++;
15211
15212 year += (timestamp / 1461) * 4;
15213 timestamp %= 1461;
15214
15215 if (timestamp >= 790)
15216 timestamp--;
15217 else if (timestamp == 789) {
15218 month = 2;
15219 day = 29;
15220 year += 2;
15221 return;
15222 }
15223
15224 year += timestamp / 365;
15225 timestamp %= 365;
15226 month = 1;
15227 while (timestamp >= totalDaysByMonth[month]) {
15228 month = month + 1;
15229 }
15230 day = timestamp - totalDaysByMonth[month - 1] + 1;
15231
15232 printf("%04d-%02d-%02d %02d:%02d UTC time", year, month, day, hour, minute);
15233 }

15234 As an example, calling this method with a timestamp set to 19 241 336 return:

15235 2006-08-02 00:56 UTC time

15236 This result can further be converted to a specific locale by adding the time zone offset and DST offset. If we take
15237 “America/New York” (the locale) as an example, we need to add a -5:00 time zone offset and a 1:00 DST offset.

15238 2006-08-01 19:56 Standard time


Annex H 431
DRAFT ANSI C12.19-2012

15239 2006-08-01 20:56 Localized time (includes DST)

432
DRAFT ANSI C12.19-2012

15240 Annex I (normative) XML file format of TDL and EDL files

15241 I.1 Overview of the TDL/EDL XML document framework

15242 The Standard files C1219TDL-1997.xml and C1219-2008.xml define the Standard tables syntax and meta-data
15243 using XML notation for the first and second versions of this standard. These can be used to generate the Document
15244 Form described in Clause 5, “Syntax”. The XML-element production rules defined in this annex are directly based
15245 on the standard’s structure, defined types, and constraints. The TDL/XML meta-data can provide additional
15246 structural information and constraints, some of them are exposed in the published text of Clause 6, “Special data
15247 types” and Clause 9, “Tables”. The EDL/XML meta-data and values can provide additional information and
15248 constraints on actual data values, such as Default Sets used and element indices. The hierarchical relation among all
15249 XML/TDL and XML/EDL elements and their attribute is presented using XML DTD syntax. The DTD described
15250 within together with the BNF definitions provide sufficient framework for the creation of an automated advanced
15251 metering infrastructure.

15252 I.1.1 TDL/EDL files and terminology

15253 In Figure I-1 through Figure I-5, we use the following terms to document the TDL/EDL XML Form framework.

15254 a) C1219TDLSchema.xsd, a reference schema for TDL/XML file structure and constraints validation.

15255 b) C1219TDLTransform.xsl, is an XML style sheet, that can be used to transform the End Device TDL file
15256 into a formatted document, which looks like Clause 6, “Special data types” and Clause 9, “Tables”.

15257 c) C1219TDLIndicesTransform.xsl, is an XML style sheet, that can be used to transform the End Device TDL
15258 file into a formatted document, which can be placed in Annex D, “(normative) Indices for partial table
15259 read/write access”.

15260 d) C1219TDLEDLTransform.xsl is an XML style sheet, that can be used to transform the End Device TDL
15261 file into C1219TDL-xxxx-EDLSchema.xsd document, which is a validation template for creating constant,
15262 data and Default Sets to be placed in a file like C1219TDL-xxxx-DefaultSet.xml.

15263 e) C1219TDL-xxxx-EDLSchema.xsd, a reference schema for EDL/XML file structure and constraints
15264 validation.

15265 f) C1219EDLTransform.xsl, is an XML style sheet, that can be used to transform the C12.19 EDL files (such
15266 as Default Sets) into a formatted document, which can be placed in Annex C, “(normative) Default Sets for
15267 Decade Tables”, of this standard.

Annex I / Overview of the TDL/EDL XML document framework 433


TDL/EDL files and terminology
DRAFT ANSI C12.19-2012

C1219TDLSchema.xsd

C1219TDLTransform.xsl
XSL Processor

C1219TDL-xxxx.xml
Document Form of
Section 9

15268
15269

15270 Figure I-1—Production of the Document Form (Document Format of Section 9.0, “Tables”) from the
15271 TDL XML File

C1219TDLSchema.xsd

C1219TDLEDLTransform.xsl
XSL Processor

C1219TDL-xxxx.xml

C1219TDL-xxxx-EDLSchema.xsd

15272
15273

15274 Figure I-2—Production of Exchange Data Language (EDL) validation schema file from a
15275 TDL XML File

C1219TDL-xxxx-EDLSchema.xsd

C1219EDLTransform.xsl
XSL Processor

C1219TDL-xxxx-DefaultSet.xml
Document Form of
Annex C

15276
15277

15278 Figure I-3—Production of the Document Form (Document Format of Annex C, “Default Sets for
15279 Decade Tables”) from the EDL XML Default Sets file

434
DRAFT ANSI C12.19-2012

C1219TDLSchema.xsd

C1219TDLIndicesTransform.xsl
XSL Processor

C1219TDL-xxxx.xml
Document Form of
Annex D

15280
15281

15282 Figure I-4—Production of final element indices (Document Format of Annex D, “Indices for partial
15283 table read/write access”) from a TDL XML file

15284 Similarly, End Device manufacturers can use the above production rules, to process End Device TDL documents
15285 and publish Manufacturer Tables, implementation variations, and constants (see Figure I.5).

Annex I / Overview of the TDL/EDL XML document framework 435


TDL/EDL files and terminology
DRAFT ANSI C12.19-2012

Referenced Standards

C1219TDLSchema.xsd

C1219TDLTransform.xsl

C1219TDL-xxxx.xml

C1219TDL-xxxx-DefaultSet.xml

End Device Class Files


<MfgEdClass>.xml (.a.b.c.d)

<MfgEdClass>-Constants.xml
XSL Processor
or AMI Application
<Utility-Site>-Constants.xml

C1219TDL-xxxx-EDLSChema.xsd
<MfgEdClass>.doc
<MfgEdClass>-EDLSChema.xsd

<MfgEdClass>-Data.xml AMI Exchange


(AMI Exchange Data) Application

15286
15287

15288 Figure I-5—From XML to AMI application—the pathways for using C12.19 Standard and
15289 Manufacturer-defined TDL/XML tables for Documentation, EDL, and
15290 AMI application processing

15291 Figure I-1 through Figure I-5 depict the following files as inputs or outputs to XSL and AMI processors. These are
15292 described as follows:

File Name Input for / Used by Description


C1219TDLSchema.xsd Input for: XSL processor A validation schema for any End Device
Used by: AMI application or Standard TDL document.

C1219TDLTransform.xsl Input for :XSL processor Table pseudo PASCAL publication rules
Used by: Document Form producer used to generate the Document Form.
C1219EDLTransform.xsl Input for :XSL processor Publication rules used to generate the
Used by: Document Form producer Document Form of constant values and
Default Sets used to be assumed in Table
Elements embedded in the End Device.

436
DRAFT ANSI C12.19-2012

File Name Input for / Used by Description


C1219TDLIndicesTransform.xsl Input for :XSL processor Publication rules used to generate Annex
Used by: Document Form producer D, “Indices for partial table read/write
access” or Manufacturer Document
Form of manufacturer’s element indices.
C1219TDL-xxxx.xml Input for: XSL processor The C12.19 Standard table descriptions
Used by: Document Form producer, for ANSI C12.19-xxxx. This file is an
EDL schema producer and AMI input to the XSL processor to produce
application the Document Form. This file is also an
input to an AMI application that
communicates with an End Device. This
file can also be used to generate the
C1219TDL-xxxx-EDLSChema.xsd used
to validate the EDL data file.
C1219TDL-xxxx-DefaultSet.xml Input for: XSL processor The input values of the Default Sets of
Used by : Document Form producer and actual limits tables. These values are
AMI application published based on the C1219EDL-
xxxx-DLSChema.xsd (which in turn is
derived from C1219TDL-xxxx.xml.
When processed by an XSL processor it
produces appendix C of the published
ANSI C12.19-xxxx Standard Document
Form. When used by an AMI
application, it delivers default values that
initialize unavailable actual limits tables.
<MfgEdClass>.xml (.a.b.c.d) Input for: XSL processor The C12.19 Manufacturer table
Used by: Document Form producer and descriptions for registered Device Class
AMI application a.b.c.d. This file is an input to the XSL
processor to produce manufacturer’s
documentation. This file is also an input
to an AMI application that
communicates with an End Device.
<MfgEdClass>-Constants.xml Input for: XSL processor The input values of the constant tables or
(.a.b.c.d) Used by: Document Form producer and fields within tables, which cannot be
AMI application retrieved from the End Device. These
values are published in the
manufacturer’s Document Form, based
on the <MfgEdClass>.xml (.a.b.c.d)
(which in turn is derived from
C1219TDL-xxxx.xml). When processed
by an XSL processor, it produces a
tabulation of pre-assigned table values
for Device Class a.b.c.d. When used by
an AMI application, it delivers default
values that shall be assumed by the AMI
application when these Table Final
Element values cannot be obtained
directly from the End Device.
<Utility-Site>-Constants.xml Input for: AMI processor Utility site specific management data
(.a.b.c.d) Used by: Utility AMI application needed to manage the End Device Class
a.b.c.d.
C1219-xxxx.doc (Section 9 and Annex Used by: Document Form producer and The published Document Form
C) developers who implement ANSI C12.19-xxxx Section 9 and
ANSI C12.19-xxxx Standard. Annex C or Annex D.
<MfgEdClass>.doc (.a.b.c.d) Used by: Developers who implement The published Manufacturer Document
AMI tools for End Device a.b.c.d. Form of the Manufacturer’s tables and
constants based on the ANSI C12.19-
xxxx Standard and the documentation
TDL of End Device Class a.b.c.d.

Annex I / Overview of the TDL/EDL XML document framework 437


TDL/EDL files and terminology
DRAFT ANSI C12.19-2012

File Name Input for / Used by Description


C1219TDL-xxxx-EDLSChema.xsd Used by: AMI application AMI data validation schema for XML
data transfer based solely on ANSI
C12.19-xxxx Standard.
<MfgEdClass>-EDLSchema.xsd Used by: AMI application AMI data validation schema for XML
(.a.b.c.d) data exchange based on ANSI C12.19-
xxxx Standard, as extended by End
Device table set for class a.b.c.d.
<MfgEdClass>-Data.xml Used by: AMI application, Data exporter AMI data encoded in XML according to
and importer application ANSI C12.19-xxxx Standard, as
qualified for End DeviceClass a.b.c.d.
15293

15294 I.2 TDL XML File Format of the TDL Document

15295 The formats of all elements and attributes found in a TDL/XML File Form is described next.

15296 I.2.1 <tdl> Root Element

15297 The <tdl> element is a container of the Table syntax and meta-data (descriptions) of either one Standard-defined
15298 tables subset or one Manufacturer-defined tables subset. The union of the Standard-defined tables subset and the
15299 Manufacturer-defined tables subset makes up the entire table set of an End Device.

15300 A tables subset document can describe Standard table definitions, revise an existing Standard into a new Standard,
15301 or implement existing Standards using Manufacturer-supplied <tdl> files.

15302 There may be only one <tdl> root element in a single XML file.

15303 I.2.1.1 <tdl> DTD

15304 <!ELEMENT tdl ((description, extension?)?| enumerator | packedRecord | bitField | decade | table |
15305 procedure | qualify | assert)*>

15306 <!ATTLIST tdl


15307 version CDATA "2.0"
15308 deviceClass CDATA "0.2.0.0"
15309 standard CDATA #IMPLIED
15310 registry CDATA #IMPLIED
15311 isoBranch CDATA #IMPLIED
15312 title CDATA #IMPLIED
15313 validation CDATA #IMPLIED
15314 date CDATA #IMPLIED>
15315

15316 I.2.1.2 <tdl> Attributes

Name Document Form Description


Equivalent
version Published in the title section of The version of this document. When describing a Standard, then
the document. this is the version of the standard being defined. When describing
a manufacturer extension, then this is the version of the End
Device class being defined.

438
DRAFT ANSI C12.19-2012

Name Document Form Description


Equivalent
deviceClass Published in the title section of The deviceClass defines the registered device class this TDL
the document. describes. Device class "0.x.y.z" is reserved for the Standards all
other classes describe Manufacturer tables and data types. This is a
sub-branch in the domain of the registry attribute. The absolute
device class is formed by joining the isoBranch attribute with the
deviceClass attribute using a period (.). Also the relative
deviceClass value can be found in Table 0 of the End Device.
standard Published in the title section of The reference standard this End Device is based on. Example:
the document. “http://www.ansi.org/C1219TDL-2008.xml”. If the deviceClass
attribute contains a Standard class, then this is a reference to
“self”.
The URI provided refers to a Standard that is the base document
for this TDL. When not provided, then no document is referred.
URI formats are as follows:
1) The Standard URI format is
http://www.ansi.org/C1219TDL-xxxx.xml, where xxxx
is the year.
2) URIs for TDL class files is
http://www.ansi.org/C1219TDL-x.x.x.x.xml, where
x.x.x.x is the registered device class (see deviceClass).
3) Viable alternatives for www.ansi.org are www.ieee.org
and www.ic.gc.ca.
registry Published in the title section of The name of the entity that is the registrar of the device class
the document. identifiers.
isoBranch Published in the title section of The ISO branch attribute associates a registry name with an ISO
the document. object directory branch. The deviceClass attribute is relative to
this branch.

title Published in the title section of The text to display in a graphic context or at the beginning of the
the document. document. Example: “ANSI C12.19-2008 Utility Industry
Standard Tables”.
validation Published in the title section of When the standards organization registers a TDL file or when a
the document. manufacturer registers a device class, then the registrar shall insert
a validation text (reference to signature) that can be used as an
indication that the registered file has been validated. The
validation of the TDL file assumes the following steps (see
XMLSig-2008 for full details):
1) Inclusion of the signature reference URI as the
validation content.
2) XML Canonicalization of the entire TDL file.
3) Production of a "detached" signature that contains a
digest of the XML that was generated by the registrar
and made available separately to the user.
date Published in the title section of The date this document was last revised.
the document.
15317

15318 I.2.1.3 <tdl> Document Form

15319 A new section heading is generated, and then the TDL title version, deviceClass, standard, registry, isoBranch,
15320 date, and validation attributes may be expressed in the section’s heading.

15321 I.2.2 <description> element

15322 The <description> element is a text-formatting container that accepts simple formatting directives that are a
15323 restricted subset of XHTML (XHTML-2002). It provides a text area to describe the parent element or provide

Annex I / TDL XML File Format of the TDL Document 439


<description> element
DRAFT ANSI C12.19-2012

15324 general inter-element descriptions. All elements, except for <description> and <extension>, shall minimally provide
15325 an optional <description> child element.

15326 I.2.2.1 <description> DTD

15327 <!ELEMENT description (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup | object | table |
15328 h1 | h2 | h3 )*>

15329 <!ATTLIST description


15330 documentation ( true | false ) "true"
15331 colspan CDATA “1”>
15332

15333 I.2.2.2 <description> Attributes

Name Document Form Equivalent Description


documentation The description body of text. Default = true. The description element is used to annotate
When an immediate child of an elements that may be conditional by virtue of being contained in
<if>, <then>, or <else>, then the <if>/<then>, <if>/<else>, <switch>/<case> statements or for
description is placed with other reasons. It is therefore possible for the same element name
pseudo Pascal comment to be defined more than once, bound to different types but
delimiters (‘{‘ and ‘}’ in the identical Element names. When this happens, it may be desired
syntax section just before the IF, to present in the Document-Form only one of the Element
after the THEN, and before the descriptions and suppress all others. When this attribute is false,
ELSE clause, respectively. then the generation of the <description> in the document-form
shall be suppressed.
colspan Spans multiple columns. When the container is a multicolumn definition (e.g., identifier,
value, and description), then the text spans the number of
columns indicated (default = 1) starting from right to left.
15334

15335 I.2.2.3 <description> Child Elements

15336 The following paragraph and inline entry elements may be used within any <description>.

15337 I.2.2.4 <description> Child DTDs

15338 <!ELEMENT (h1|h2|h3) (#PCDATA | b | i | u | tt | sp | sub | sup)*>


15339
15340 <!ELEMENT br EMPTY>
15341
15342 <!ELEMENT p (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup | object |
15343 table)*>
15344 <!ATTLIST p align ( left | right | center | justify ) #IMPLIED
15345 indent ( left | right | both ) #IMPLIED >
15346
15347 <!ELEMENT pre (#PCDATA)>
15348
15349 <!ELEMENT blockquote (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup | object |
15350 table)*>
15351 <!ATTLIST blockquote indent ( left | right | both ) “both” >
15352
15353 <!ELEMENT ol (li)*>
15354 <!ATTLIST ol style ( arabic | alpha | roman | ALPHA | ROMAN ) #IMPLIED>
440
DRAFT ANSI C12.19-2012

15355
15356 <!ELEMENT li (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup | object | table
15357 )*>
15358
15359 <!ELEMENT ul (li)*>
15360 <!ATTLIST ul style ( bullet | dash | star ) #IMPLIED>
15361
15362 <!ELEMENT li (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup | object | table
15363 )*>
15364 <!ATTLIST li value (CDATA) #IMPLIED>
15365
15366 <!ELEMENT dl (dt, dd )*>
15367
15368 <!ELEMENT dd (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup | object | table
15369 )*>
15370 <!ATTLIST dd value (CDATA) #IMPLIED>
15371
15372 <!ELEMENT dt (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup | object | table
15373 )*>
15374 <!ATTLIST dt value (CDATA) #IMPLIED>
15375
15376 <!ELEMENT (b | i | u | tt | sub | sup)
15377 (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup | object | table
15378 )*>
15379
15380 <!ELEMENT object (#PCDATA)>
15381 <!ATTLIST object align (top|bottom|left|right) #IMPLIED
15382 border (CDATA) “0”
15383 declare (true|false) “false”
15384 data (CDATA) “http://www.ansi.org/C1219TDL/object/inline-data”
15385 type (image/svg) “image/svg”
15386 height (CDATA) #IMPLIED
15387 width (CDATA) #IMPLIED
15388 >
15389
15390 <!ELEMENT table (caption?, col*, thead?, tfoot?, tbody+)>
15391 <!ATTLIST table align (left | center | right ) #IMPLIED
15392 border (CDATA) #IMPLIED
15393 frame (box|void|above|below|border|lhs|rhs|hsides|vsides) #IMPLIED
15394 rules (all|rows|cols|none) #IMPLIED
15395 title (CDATA) #IMPLIED
15396 width (CDATA) #IMPLIED >
15397
15398 <!ELEMENT caption (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup | object | table
15399 )*>
15400 <!ATTLIST caption align (top | bottom ) #IMPLIED
15401
15402 <!ELEMENT col EMPTY>
15403 <!ATTLIST col align (left | right | center | justify ) #IMPLIED
15404 span (CDATA) “1”
15405 valign (top | middle | bottom) #IMPLIED
15406 width (CDATA) #IMPLIED>
15407

Annex I / TDL XML File Format of the TDL Document 441


<description> element
DRAFT ANSI C12.19-2012

15408 <!ELEMENT thead | tfoot | tbody (tr)+>


15409 <!ATTLIST thead | tfoot | tbody
15410 align (left | right | center | justify ) #IMPLIED
15411 span (CDATA) “1”
15412 valign (top | middle | bottom) #IMPLIED
15413 width (CDATA) #IMPLIED>
15414
15415 <!ELEMENT tr (th | td)+>
15416
15417 <!ELEMENT (th | td) (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup | object | table
15418 )*>
15419 <!ATTLIST (th | td) align (left | right | center | justify ) #IMPLIED
15420 colspan (CDATA) “1”
15421 rowspan (CDATA) “1”
15422 valign (top | middle | bottom) #IMPLIED>

15423 I.2.2.5 <description> Child Elements Summary

Element Name Document Form Equivalent Description


h1, h2, h3 Subsection heading. Generate a subsection heading to improve Document Form
readability.
br Force line break. Force a line break with interlines spacing.
p Paragraph body text. Force a new paragraph line break. Format the text within using
the embedded formatting rules. Force a new paragraph break
after the closing element. The align and indent attributes qualify
the paragraph text appearance.
pre Verbatim simple monospaced Present the text within exactly as typed, using monospaced font,
text. while preserving all spaces and new lines.
blockquote Indented or highlighted text. Force a new paragraph line break. Present the text within in a
manner that it stands out as a paragraph. Force a new paragraph
break after the closing element. The indent attribute may be used
to control the indentation. The default indentation is “both”.
ol Numerically ordered-items list. Ordered list (1,2,3..., a,b,c..., i,ii,iii..., A,B,C..., or
I,II,III...). Force a new paragraph line break. Present the list items
within with a sequence number at the beginning of each list item.
Force a new paragraph break after the closing element.
ul Symbolically itemized list. Force a new paragraph line break. Present the list items within
with a symbol at the beginning of each list item. Force a new
paragraph break after the closing element.
dl Definition list. Force a new paragraph line break. Present the definition list with
each definition on the left and the description thereafter.
i Italic font. Typeset the text within using an italic font.
b Bold font. Typeset the text within using a bold font.
u Underlined font. Typeset the text within using an underlined font.
tt Monospaced font. Typeset the text within using a monospaced (typewriter) font.
sp Nondestructive space character. Force a single nondestructive character space. This provides the
equivalent functionality of the xhtml the entity “&nbsp;”.
sup Superscript text. Typeset the text within using a superscript font.
sub Subscript text. Typeset the text within using a subscript font.
object Graphic object. Optionally renders a graphic object. It offers an all-purpose
solution for the inclusion of inline xml/svg (scalable vector
graphics) images. The object attributes are a simplified subset of
the XHTML 1.0 Specification (XHTML-2002).

442
DRAFT ANSI C12.19-2012

Element Name Document Form Equivalent Description


table Multicolumn and rows table Force a new paragraph line break and then create a table. The
with optional table header, table model allows for arranging text into rows and columns of
footer, and caption. cells. Each table may have an associated caption that provides a
short description of the table's purpose. Table rows include a
head, foot, and body element. The col element may be used to
characterize the column width, span, and body text alignment for
each of the columns.
15424

15425 I.2.2.6 <p> Attributes

Name Table Document Equivalent Description


align The paragraph text alignment. Default = inherited from previous paragraph. If this is the first
instance within a <description> element, then use the text
processor default alignment (typically justified). Possible
alignment values are “left” edge of the text column, “right” edge
of the text column, “center” about the text column, or “justified”
about both edges of the text column.
indent The paragraph text indentation. Default = inherited from previous paragraph. If this is the first
instance within a <description> element, then use the text
processor default indentation (typically not indented). Possible
indentation values are indent the “left” side of the text column to
the right, indent the “right” edge of the text column to the left, or
indent “both” edges of the text column inward.
15426

15427 I.2.2.7 <blockquote> Attributes

Name Document Form Equivalent Description


indent The paragraph text indentation. Default = “both”. Possible indentation values are indent the “left”
side of the text column to the right, indent the “right” edge of the
text column to the left, indent “both” edges of the text column
inward.
15428

15429 I.2.2.8 <ol> Attributes

Name Document Form Equivalent Description


style The style of the numeric items. Default = Arabic if this is the first instance within a
<description> element. Otherwise it sequentially rotates the
formats arabic (1, 2, 3, …), alpha (a, b, c, …), roman (i, ii, iii,
…), ALPHA (
(A, B, C, …), ROMAN (I, II, III, …).
15430

15431 I.2.2.9 <ul> Attributes

Name Document Form Equivalent Description


style The style of the symbolic items. Default = bullet if this is the first instance within a <description>
element. Otherwise it sequentially rotates the formats bullet (•),
dash (–), or star ( ) symbol.
15432

Annex I / TDL XML File Format of the TDL Document 443


<description> element
DRAFT ANSI C12.19-2012

15433 I.2.2.10 <ol> and <ul> subelement usage

Element Name Document Form Equivalent Description


li One list item. Force a line break with interparagraph spacing. Place the next
enumeration in order (<ol> case) or next symbol (<ul> case) or
the string presented by the value attribute as a left hanging indent
(<ul> case), followed by the descriptive content as a paragraph.
15434

15435 I.2.2.11 <dt> and <dd> subelement usage of <dl>

Element Name Document Form Equivalent Description


dt Introduces a single definition Publish the definition text possibly as a left hanging text
header. followed by the distinctive descriptive text using distinctive text
(definition data) for the text that will follow on the right (see
element <dd>).
dd Introduces a single definition Publish the definition’s description data to the right (or on the
text. next line) of the definition term that was specified by the
preceding <dt> element.
15436

15437 I.2.2.12 <object> Attributes

Name Document Form Equivalent Description


align The object alignment on the Defines the alignment of the object relative to the Document-
page. form page. Allowed values are “left”, “right”, “top”, or “bottom”.
border The default displayed border of Defines the size of the border for the object, specified as an
the object. absolute integer multiplier value of the default border thickness.
Zero (0) means no border. One (1) means single rule thickness,
and two (2) means double rule thickness.
width The width of the object on the Defines the width of the object on the page. This value can be
page. specified as a percentage of the width of the page or as an
absolute value. This is a fixed-point representation with ‘%’
representing percentage of full column span, 'in’ is extent in
inches, 'cm' is the extent in centimeters, 'pt' is the extent in points
(1/72"), and 'em' is the extent is the current fonts size of the letter
'M'. Valid expressions shall match the following XML regular
expression: “([0-9]*[.])?[0-9]+([%]|in|cm|pt|em|mm)?”.
height The height of the object on the Defines the height of the object on the page. This value can be
page. specified as a percentage of the width of the page or as an
absolute value. This is a fixed-point representation with ‘%’
representing percentage of full vertical span, 'in’ is extent in
inches, 'cm' is the extent in centimeters, 'pt' is the extent in points
(1/72"), and 'em' is the extent is the current fonts size of the letter
'M'. Valid expressions shall match the following XML regular
expression: “([0-9]*[.])?[0-9]+([%]|in|cm|pt|em|mm)?”.
type The encoded type of the object Defines the type of data specified in the data attribute. This
data. standard supports only the “image/svg” scalable vector graphics
type.
data The reference to the source of Defines a URL that refers to the object’s data. If <object>
the image data. rendering is supported by the TDL processor, then it shall
minimally support in-line TDL data. Inline data is selected by the
URLs: “http://www.ansi.org/C1219TDL/object/inline-data”,
http://www.ieee.org/IEEE1377TDL/inline-data, or
http://www.ic.gc.ca/MC1219TDL/object/inline-data; thus, it is a
pseudo-reference.
declare Turns on (false) or off (true) the Defines that the object should only be declared, not created or
rendering of the object image. instantiated.
444
DRAFT ANSI C12.19-2012

15438

15439 I.2.2.13 <table> Attributes

Name Document Form Equivalent Description


align The table alignment on the page. Defines the alignment of the table relative to the Document-form
page. Allowed values are “left”, “center”, or “right”.
border The default displayed border of Defines the size of the border for the table, specified as an
the table. absolute integer multiplier value of the default border thickness.
Zero (0) means no border. One (1) means single rule thickness,
two (2) means double rule thickness, etc.
frame The default displayed table The border attribute turns on borders around all elements of a
frame. table. frame attribute can be used to specify a border that only
appears around the entire table as a unit.

This attribute may have the following values:


“box”: Renders a line around all four sides of the table.
“void”: Renders the table without a box around it.
“above”: Renders a line above the table.
“below”: Renders a line below the table.
“border”: Renders lines on all table rows and columns.
“lhs”: Renders a line on the left-hand side of the table.
“rhs”: Renders a line on the right-hand side of the table.
“hsides”: Renders a line on the top and bottom of the table.
“vsides”: Renders a line on either side of the table.
rules The default displayed borders The rules attribute is used to define what borders will be
between table cells. rendered between cells within a table.
“all”: Renders a border around all cells in the table.
“rows”: Renders borders between rows.
“cols”: Renders borders between columns.
“none”: By default does not render a border around any of the
cells in the table.
title When present, this is the In-line text that is suitable for insertion in the table of contents.
alternate text to display in the
table of contents where the
caption should have been used.
width The width of the table on the Defines the width of the table on the page. This value can be
page. specified as a percentage of the width of the page or as an
absolute value. This is a fixed-point representation with ‘%’
representing percentage of full column span, 'in’ is extent in
inches, 'cm' is the extent in centimeters, 'pt' is the extent in points
(1/72"), and 'em' is the extent is the current fonts size of the letter
'M'. Valid expressions shall match the following XML regular
expression: “([0-9]*[.])?[0-9]+([%]|in|cm|pt|em|mm)?”.
15440

15441 I.2.2.14 <caption>, <col>, <thead>, <tfoot> and <tbody> sub-element usage of <table>

15442 These elements follow the description defined in XHTML (XHTML-2002); as a result, their inner elements will not
15443 be described in great detail since they are identical in construction and in interpretation.

Annex I / TDL XML File Format of the TDL Document 445


<description> element
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


caption Captures the table caption in the The caption element creates a caption for a table. It takes one
document. Optionally it enters attribute, the position of the caption text being above (top) or
this text into the table of below (bottom) the table.
contents. See also the table’s
title attribute.
col Establishes the number of Establishes the number of columns and the default column
columns and the default column properties for a table. The use of this element is desirable for
attributes for the document form. applying styles to entire columns, instead of repeating the styles
for each cell.
Valid attributes are: “align”, “span”, “valign”, and “width”.
thead The table header rows that will Groups the header content in a table. The content construction
be placed ahead of the table rules are introduced with the table row element <tr> each having
body rows. <th> subelements, one per column.
tfoot The table footer rows that will Groups the footer content in a table. The content construction
be placed after the table body rules are introduced with the table row element <tr> each having
rows. <td> subelements, one per column.
Tbody The table body rows that will be Groups the table’s content in a table. The content construction
placed in the table. rules are introduced with the table row element <tr> having <td>
subelements, one per column.

15444

15445 I.2.2.15 <description> Document Form

15446 The formatted text in any of the main section bodies, type descriptions, and element descriptions is produced.

15447 Example: Given the XML text below:

15448 <table name="HISTORY_LOG_CTRL_TBL" number="73" type="HISTORY_CTRL_RCD"


15449 label="History Log Control Table">
15450 <description> This table defines the History Log codes to be written to the History Log.
15451 It also defines which specific procedures and/or table writes are to be
15452 acknowledged in the History Log. For a specific procedure or table to be
15453 acknowledged, three independent tests shall all be true:
15454 <ol>
15455 <li>The procedure or table shall be used in the End Device, per the
15456 <b>GEN_CONFIG_TBL</b> (Table 00).</li>
15457 <li>The appropriate History Log code shall be used, per this table.</li>
15458 <li>The procedure or table shall be requested to be acknowledged,
15459 per this table.</li>
15460 </ol>
15461 <p>
15462 <object border="1" width="6cm" height="6cm" >
15463 <svg xmlns="http://www.w3.org/2000/svg" width="6cm" height="6cm">
15464 <g style="fill-opacity:0.7; stroke:black; stroke-width:0.1cm;">
15465 <circle cx="3cm" cy="1cm" r="50" style="fill:red;"
15466 transform="translate(0,25)" />
15467 <circle cx="3cm" cy="1cm" r="50" style="fill:blue;"
15468 transform="translate(35,75)" />
15469 <circle cx="3cm" cy="1cm" r="50" style="fill:green;"
15470 transform="translate(-35,75)" />
15471 </g>
15472 </svg>
15473 </object>
15474 </p>
446
DRAFT ANSI C12.19-2012

15475 </description>
15476 ….
15477 </table>

15478 The following may be a partial output generated by a TDL processor:

15479 9.9.4. Table 73: History Log Control Table

15480 Table 73 Description

15481 This table defines the History Log codes to be written to the History Log. It also defines which specific procedures
15482 and/or table writes are to be acknowledged in the History Log. For a specific procedure or table to be acknowledged,
15483 three independent tests shall all be true:

15484 1. The procedure or table shall be used in the End Device, per the GEN_CONFIG_TBL (Table 00).
15485 2. The appropriate History Log code shall be used, per this table.
15486 3. The procedure or table shall be requested to be acknowledged, per this table.

15487
15488

15489 I.2.2.16 <extension> Element

15490 Application-specific extensions. The extension element is made available to implementers of AMI application and
15491 vendors who need to embed additional information in support of their application. The content of this element is not
15492 defined by this standard.

15493 I.2.2.17 <extension> DTD

15494 <!ELEMENT extension ANY>

15495 I.2.2.18 <extension> Attributes

15496 None.

15497 I.2.2.19 <extension> Document Form

15498 None.
Annex I / TDL XML File Format of the TDL Document 447
<description> element
DRAFT ANSI C12.19-2012

15499 I.2.3 <assert> Element

15500 The assert element is provided to document relationships among Table data Elements and optionally to alert the
15501 application about inconsistencies or unexpected End Device settings.

15502 I.2.3.1 <assert> DTD (named)

15503 <!ELEMENT assert ((description, extension?)? condition+)>


15504 <!ATTLIST assert
15505 raise (ERROR | WARN | INFO) “ERROR”
15506 text CDATA #REQUIRED>

15507 <!ELEMENT condition (#PCDATA)>

15508 Each <condition> element of <assert> contains one assertion condition, encoded as BNF.mathExpression, which
15509 evaluates to a Boolean. If any of the <condition> elements evaluate to true then an assertion is raised.

15510 I.2.3.2 <assert> Attributes

Name Document Form Equivalent Description


raise Published in the description Indicates the type of assertion to be raised when the indicated
section where defined as expression (see condition element) evaluates to true.
follows: “Assert value on
(condition), ‘text’.” where
condition is the content of the
condition attribute, text is the
content of the text attribute and
value is the content of the raise
attribute.
text Published in the description This is a short text message that will be generated when the
section. assertion is raised.
15511

15512 I.2.4 <enumerator> Element

15513 The named <enumerator> element introduces an association between a numeric, string, or Boolean data value, and a
15514 descriptive label. It also provides for associating array or set elements with constants and labels. For example, it may
15515 be more efficient, storage-wise, to designate numeric values to days of the week, say 0, 1, 2, 3, 4, 5, and 6; but for
15516 humans or Graphical User Interfaces (GUIs), it is easier to relate to Sunday, Monday, Tuesday, and so on. The
15517 enumerator element binds numbers to labels. There are two flavors to the enumerator type. The first is a named type
15518 when it is introduced outside an element or subelement body, and it can be referenced for association with a Final
15519 Element. The second is unnamed, as it is introduced inline within an Element or Subelement body. The first unique
15520 instance of an un-named enumerator can be accessed using the Final Element’s name suffixed with
15521 BNF.enumSuffix., as if it were to be a named enumerator.

15522 I.2.4.1 <enumerator> DTD (named)

15523 <!ELEMENT enumerator ((description, extension?)? | enum)*, default?>


15524 <!ATTLIST enumerator
15525 name CDATA #REQUIRED
15526 replace CDATA #IMPLIED
15527 override CDATA #IMPLIED
15528 redefine CDATA #IMPLIED
15529 showRedefined ( true | false ) “false”
15530 strict ( true | false ) "true"
448
DRAFT ANSI C12.19-2012

15531 label CDATA #IMPLIED


15532 align (none | left | right | center) “none”
15533 match (true | false) “true”
15534 pad (true | false) “false”
15535 quote (true | false) “false”
15536 round (round | ceil | floor | truncate) “round”
15537 >

15538 I.2.4.2 <enumerator> Attributes (named)

Name Document Form Equivalent Description


name Listed in the description section The enumerator identifier expressed and constrained by
where defined. BNF.enumIdentifier. This identifier is used to refer to the
enumeration list.
replace The text Replaces: target in the A reference to an existing BNF.enumTypeReference whose list is
description of the named mapped to a new list. Any reference to the old enumerator will
enumerator shall be generated. access the new definition.

This feature enables one Standard to be derived from another and


for a manufacturer device class to define (thus, document)
Standard opaque fields.

Note that the referenced enumerator can be replaced only once


within one XML file. Replacement of an enumerator that has
already been previously replaced or overridden by another
enumerator in the same file shall not be permitted. The replaced
enumerator original definition shall not be found in the same
XML file that selects the enumerator for replacement.
override The text Overrides: target in the A relaxed variation of the replace attributes. A reference to an
description of the named existing BNF.enumTypeReference whose list is mapped to a new
enumerator shall be generated. list. Any reference to the old enumerator will access the new
definition.

This feature enables one Standard to be derived from another and


for a manufacturer device class to define (thus, document)
Standard opaque fields.

Note that the overridden enumerator can be modified only once


within one XML file. Overrides of an enumerator that has
already been previously overridden or replaced by another
enumerator in the same file shall not be permitted. The
overridden enumerator original definition shall not be found in
the same XML file that selects the enumerator for replacement.

Overridden enumerators can change any and all content of any


existing enumerator that are otherwise not described. The
application processor is encouraged to issue a warning upon all
encounters of overridden enumerators.

Annex I / TDL XML File Format of the TDL Document 449


<enumerator> Element
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


redefine The text Redefines: target in the A reference to an existing BNF.enumTypeReference whose list is
description of the named used as a restriction for mapping a new list. This feature shall
enumerator shall be generated. ensure that <enum> children elements are maintained identical in
value and only modification to text attributes, descriptions, or
meta-data is desired. This is useful when defining dimension-
limiting tables, and then reusing only the enumerated ranges (not
the enumerated description or meta-data descriptions) to
introduce the actual limits tables. The presence of this attribute
does not absolve the writer from entering the entire <enum>
names and values. The referenced enumerator shall be otherwise
unaffected.

NOTE 1—A redefined enumerator can be redefined any


number of times. Redefinition of an enumerator that has
already been previously redefined elsewhere is permitted.

NOTE 2—Redefined enumerators can be defined in the


same XML file.

NOTE 3—Redefinition of a replaced or overridden


enumerator is permitted.

When the redefined enumerator is encountered in the same XML


file (see NOTE 2), the redefinition shall be applied after any
replacement or override (i.e., replacements and overrides shall be
processed prior to redefinitions).
showRedefined When true the redefining, When a type is redefined, replaced, or overridden, the redefining
replacing or overriding type is syntax may not be expressed in the syntax section where the
placed the syntax section. reference is made. As a TDL documentation aid, setting this
attribute to true shall force the Document Form processor to
expose the syntax of the redefining, replacing, or overriding type
in the syntax section.
strict Suffix the term “reference is When enumerator is created and the replace, override, or
strict” to the replace, override or redefine attribute is asserted, then the search rule for the target
redefine referenced type in the BNF.enumTypeReference will be strict (if strict is set to true,
description of the enumerator the default value) or not strict (if the strict attribute is set to
generated. false). A strict search requires that the implied or explicit target
scope contains the replaced enumerator. A nonstrict search
allows for the implied or explicit target scope search to start in
the End Device scope hierarchy; i.e., the first encounter of the
target enumerator within any of the parent scopes shall be
considered a match for the sought replacement.
label Not shown if there is a A short textual description of the named enumerator. It can be
description element. Is presented used by a GUI in Balloon help or as a substitute for description.
as description in the absence of a
description element.
align None. If the data type is STRING and value supplied does not fill the
entire space required by the Final Element or the string is larger
than the space provided, then deliver to the application a
prealigned (or truncated) value and then pad the extra space as
needed, according to the value-supplied attribute. “none” = do
not align; “left” = align toward lower Table Octets offsets within
the Final Element field; “right” = align toward higher Table
Octet offsets within the Final element field. Default is none.

450
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


match None. When the match attribute is true, then only values from the
supplied enums and default elements will be accepted by a
C12.19 application. All other values may trigger a fatal error
report. When match attribute is false, then nonmatching values
may trigger a warning report and shall not issue a fatal error
report. The default value is true.
pad None. If the value supplied does not fill the entire space required by the
Final Element, then pad the value with trailing/leading spaces (if
of type is STRING or CHAR), or zeros (for numeric or
BINARY types) in such a manner not to alter the interpretation
of the end result.

Example 1: Assume an element is defined (using the Document


Form) as FOO : STRING(5); and pad is set to true align is set
to “left”, then the value “ABC” will be converted to “ABC “
(414242202020H) before comparing it for enumerator match to
the value reported by the Final Element FOO.

Example 2: Assume an element is defined (using the Document


Form) as BAR: BINARY(5); and pad is set to true and align is
set to “right”, then the value “1234” will be converted to
0000001234H before comparing it to the value reported by the
Final Element BAR.
quote Enumeration values are When true, then this is an instruction to the text formatted to
surrounded with quotation marks place the enum values each in quotes, as they may represent a
before being displayed. string. Default is false.
round Rounding rule for converting a string number value to a Final
Element of type integer as follows: “round” calls for the result to
be rounded to an integer by adding 1/2 to the supplied value,
taking the floor of the result, and casting the result to the integer
type of the Final Element. “ceil” computes the smallest integral
value that is not less than the supplied value. “floor” computes
the largest integral value that is not greater than the supplied
value. “TRUNCATE” truncates the value to an INT/UINT as
appropriate.

Special cases: If the argument is NaN, the result is 0. If the


argument is negative infinity or any value less than or equal to
the value of INTx, or UINTx minimum value, the result is equal
to the value of the INTx or UINTx minimum value. If the value
argument is positive infinity or any value greater than or equal to
the value supported by the final element field, the result is equal
to the value of largest possible Final Element.

For types STRING or BINARY: Rounding rule for converting a


string value to non-numeric fields. This attribute is ignored, and
the field can only be padded or truncated according to the pad
and align attributes.
15539

15540 I.2.4.3 <enumerator> Document Form (named)

15541 The named enumerator is not listed in the syntax section of the Document Form. The name and its enumerations are
15542 presented in the description section that documents the enumerator name.

15543

Annex I / TDL XML File Format of the TDL Document 451


<enumerator> Element
DRAFT ANSI C12.19-2012

15544 Given the XML text below:

15545 <enumerator name="UOM_ID_CODES_ENUM" label="Unit of Measure Codes.">


15546 <description>The following are the unit of measure codes.</description>
15547 <enum value="0" text="Active power - W"/>

15548 <enum value="1" text="Reactive power - VAR"/>

15549 <enum value="2" text="Apparent power - VA"/>

15550 ….
15551 </ enumerator>

15552 The following may be a partial output generated by a TDL processor:

15553 TDL Document Scope Element Descriptions

15554 Identifier Value Definition


15555 UOM_ID_CODES_ENUM The following are the unit of measure codes.
15556 0 Active power - W
15557 1 Reactive power - VAR
15558 2 Apparent power - VA

15559 I.2.5 Constant enumerated values of <enumerator> (named)

15560 See <enum> Element (Child of <enumerator>).

15561 I.2.5.1 Constant enumerated values DTD

15562 See <enum> Element (Child of <enumerator>).

15563 I.2.5.2 <enumerator> DTD (un-named)

15564 <!ELEMENT enumerator (description, extension?)?, (enum*, default?)>


15565 <!ATTLIST enumerator
15566 align (none | left | right | center) “none”
15567 match (true | false) “true”
15568 pad (true | false) “false”
15569 quote (true | false) “false”
15570 round (ROUND | CEIL | FLOOR | TRUNCATE) “round”
15571 >

15572 The use of an unnamed enumerator shall be restricted to the immediate children of <element>, <subElement>,
15573 <array>, or <set>.

15574 An unnamed enumerator can be referenced using the name attribute of its parent element suffixed by
15575 BNF.enumSuffix, if the resulting name is unique within the scope of the parent element. The interpretation of all the
15576 attributes of the unnamed enumerator is identical to those of the named enumerator.

15577 I.2.6 <enum> Element (Child of <enumerator>)

15578 The <enum> element introduces a single enumeration value or a range of enumeration values.

452
DRAFT ANSI C12.19-2012

15579 I.2.6.1 <enum> DTD

15580 <!ELEMENT enum (description, extension?)?>


15581 <!ATTLIST enum
15582 name CDATA #IMPLIED
15583 value CDATA #REQUIRED
15584 endValueInclusive CDATA #IMPLIED
15585 text CDATA #REQUIRED
15586 exclude (true | false) false>

15587 I.2.6.2 <enum> Attributes

Name Document Form Equivalent Description


name The constant’s name assigned to Indicates the constant’s name that is assigned to the value. When
this value. This name will be a range of values is specified, the constant shall be bound to the
presented in front of the value attribute. Constant names shall be bound to values in
enumerator’s description, e.g., accordance with BNF.anyNumber.
“POINT_ON_WAVE_CNST –
digitized waveform data points.”
value The value assigned to this Indicates a value that the Final Element may take, or the starting
enumerator (attribute range of values (attribute endValueInclusive present) that a final
endValueInclusive not present) element may assume. The left-hand side of the
or the starting value of a range BNF.enumMember.
of values (attribute
endValueInclusive present).
endValueInclusive The end range assigned to this Indicates an end range of values (attribute endValueInclusive
enumerator. present) that the Final Element may assume. The left-hand side
of the BNF.enumMember.
text Text string that is associated A short test string that may be used by a GUI Balloon help. The
with the value or range of right-hand side of the BNF.enumMember.
values. This text is published
only when the <description>
element is not present.
exclude Does not generate An indication that the role for this enumeration value is reversed;
documentation. therefore, it is to be excluded and it is considered to be an invalid
value or range of reserved values.
15588

15589 I.2.6.3 <enum> Document Form

15590 Introduces a BNF.enumMember in Definitions in types and elements description. The definitions shall preserve all
15591 constraints expressed in the subelement <description>, and the attributes value, endValueInclusive, text.

15592 Example: Given the XML text below:

15593 <subElement name="DATA_ACCESS_METHOD" type="UINT" startBitInclusive="3" endBitInclusive="4">


15594 <description>
15595 Element to designate method of passing the table data after <b>GEN_CONFIG_TBL</b>
15596 (Table 00) has been interrogated.
15597 </description>
15598 <enumerator>
15599 <enum value="0" name="FULL_TABLE_ACCESS_CNST"
15600 text="Full table access only. No partial table access methods are supported." />
15601 <enum value="1"
15602 text="Full table access and offset-count access methods are supported." />
15603 <enum value="2"

Annex I / TDL XML File Format of the TDL Document 453


<enum> Element (Child of <enumerator>)
DRAFT ANSI C12.19-2012

15604 text="Full table access and index-count methods are supported." />
15605 <enum value="3"
15606 text="Both methods 1 and 2 of data access methods are supported." />
15607 </enumerator>
15608 </subElement>

15609 The following may be a partial output generated by a TDL processor in the description section:

15610 Identifier Value Definition


15611 …
15612 DATA_ACCESS_METHOD Element to designate method of passing the table data after
15613 GEN_CONFIG_TBL (Table 00) has been interrogated.
15614 0 FULL_TABLE_ACCESS_CNST – Full table access only. No
15615 partial table access methods are supported.
15616 1 Full table access and offset-count access methods are
15617 supported.
15618 2 Full table access and index-count methods are supported.
15619 3 Both methods 1 and 2 of data access methods are supported.
15620 …

15621 I.2.7 <default> element (Child of <enumerator> element)

15622 Default text used to label unknown values. It is also the preferred initialization value for unprogrammed fields or
15623 uninitialized Final Elements.

15624 I.2.7.1 <default> DTD

15625 <!ELEMENT default (description, extension?)?>


15626 <!ATTLIST default
15627 value CDATA #IMPLIED
15628 text CDATA #REQUIRED>

15629 I.2.7.2 <default> Attributes

Name Document Form Equivalent Description


value None. Preferred initial value of the final element. This value shall be
assumed by an enumerated final element when the value of the
final element is uninitialized. Therefore, the Standard or the
Manufacturer may set initial state preferences for Table Final
Elements.
text Publishes the text Default: value. The text to display when the value reported by the application is
not a member of the enumeration list.
15630

15631 I.2.7.3 <default> Document Form

15632 Introduces a BNF.enumDefault in Definitions in types and elements description. The definitions shall preserve all
15633 constraints expressed in the subelement description, and the attributes value and text.

15634 I.2.8 <packedRecord> Element

15635 The <packedRecord> element introduces the PACKED RECORD derived type. This maps to the BNF. rcdType.
15636 This type is defined to be local to the parent scope (either Standard or Manufacturer context) TDL, decade, table, or
15637 procedure (see G.6.1, “Scoping rules”).

454
DRAFT ANSI C12.19-2012

15638 I.2.8.1 <packedRecord> DTD

15639 <!ELEMENT packedRecord (description, extension?)?, (element | array | set | if | switch | assert)*>
15640 <!ATTLIST packedRecord
15641 name CDATA #REQUIRED
15642 replace CDATA #IMPLIED
15643 override CDATA #IMPLIED
15644 redefine CDATA #IMPLIED
15645 showRedefined ( true | false ) “false”
15646 strict ( true | false ) "true"
15647 atomic ( true | false ) "false"
15648 label CDATA #IMPLIED
15649 accessibility (READWRITE| READONLY| WRITEONLY) “READWRITE “
15650 deprecated (true | false) “false”
15651 metrological (true | false) “false”>

15652 I.2.8.2 <packedRecord> Attributes

Name Document Form Equivalent Description


name Publishes the packed record The packed record identifier. This identifier can be used to refer
name in the syntax and to the PACKED RECORD. Packed record names shall be
description sections. defined according to the BNF.rcdIdentifier production rule and
shall be unique within any one definition’s scope.
replace The text Replaces: target in the A reference to a PACKED RECORD identifier, in accordance
description of the packed record with BNF.rcdReference, whose type is mapped to a new type.
shall be generated. Any reference to the old type, from any context, will access the
new definition. This feature enables one Standard to be derived
from another and for a manufacturer device class to define (thus,
document) Standard opaque fields.
It is important to note that:
1) A referenced type can be replaced only once. Replacement
of a type that has already been previously replaced by
another type shall not be permitted.
2) The replaced type shall not be defined in the same
XML/TDL file that defines the original packed record for
that type.
3) Replaced types shall have identical element offsets and
indices for existing elements, and they may expose
additional detail to the internal structure of an element that
may be otherwise opaque.
4) The application processor is encouraged to issue a warning
upon all encounters of replaced types.

Annex I / TDL XML File Format of the TDL Document 455


<packedRecord> Element
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


override The text Overrides: target in the A relaxed variation of the replace attributes. An override of a
description of the packed record PACKED RECORD identifier, in accordance with
shall be generated. BNF.rcdReference, whose type is mapped to a new type. Any
reference to the old type, from any context, will access the new
definition. This feature enables one Standard to be derived from
another, and for a manufacturer device class to displace, and then
recreate, any packed record field.
It is important to note that:
1) An overridden type can be displaced only once. Override of
a type that has already been previously replaced by another
type is not permitted.
2) The overridden type cannot be defined in the same XML
file that defines the original packed record for that type.
3) Overridden types can change elements offsets and indices
for existing elements, or expose additional detail to internal
structure of elements that are otherwise opaque.
4) The application processor is encouraged to issue a warning
upon all encounters of overridden types.
redefine The text Redefines: target in the A reference, in accordance with BNF.rcdReference, to a
description of the packed record PACKED RECORD identifier whose type is used as a
shall be generated. restriction to the newly defined packed record in the local scope.
This feature shall ensure that data type structures are maintained
while modification to element names or meta-data is desired.
This is useful when defining dimension-limiting tables, then
reusing only the element types (not the element names or meta-
data descriptions) to introduce the actual limits tables. The
presence of this attribute does not absolve the writer from
entering the entire element names and types. However, the only
variations permitted are limited to:
redefinition of <enumerator> elements
redefinition of <description> elements
redefinition of <extension> elements
redefinition of <element> name attributes.
The referenced PACKED RECORD shall be otherwise
unaffected.

It is important to note that:


1) A redefined type can be redefined any number of times.
Redefinition of a type that has already been previously
redefined elsewhere is permitted.
2) Redefined types can be defined in the same XML file,
which also provided the original definition for a packed
record that is now being redefined.
3) Redefinition of a replaced, overridden, or redefined packed
record is permitted.
4) When the redefined type is encountered in the same XML
file [see item 2)], the redefinition shall be applied after the
application of any replace or override directives (i.e.,
replacements and overrides shall be processed prior to
redefinitions).
showRedefined When true the redefining, When a named enumerator is redefined, replaced, or overridden,
replacing or overriding type is the redefining syntax may not be expressed in the syntax section
placed the syntax section. where the reference is made. As a TDL documentation aid,
setting this attribute to true shall force the Document Form
processor to expose the syntax of the redefining, replacing, or
overriding type in the syntax section.

456
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


strict Suffix the term “reference is When a packed record is created and the replace, override, or
strict” to the replace, override, or redefine attribute is asserted, then the search rule for the target
redefine referenced type in the type will be strict (if strict is set to true, the default value) or not
description of the packed record strict (if the strict attribute is set to false). A strict search requires
generated. that the implied or explicit target scope contain the replaced or
redefined type. A nonstrict search requires that the implied or
explicit target scope is where the search will start in the End
Device scope hierarchy; i.e., the first encounter of the target type
within any of the parent scopes will be considered a match for
the sought replaced or redefined type.
atomic The text “Non-default The packed record monolithic, when true. When communicating
properties: Atomic = value” in an atomic packed record, it shall be transported and presented as
the description of the packed one unit, including all of its internal element members.
record shall be generated.
label None. A text field that may be presented as an alternative to the value of
the attribute name. If this optional attribute is not provided, then
applications shall present the value of the name attribute.
accessibility The text “Non-default An indication of possible interpretations or use case for the
properties: Accessibility = named packed record as follows:
value” in the description of the READONLY: this packed record may be accessed but not
packed record shall be modified.
generated. WRITEONLY: this packed record may be written to; however
when read back from the table, the values may or may not
be identical to the value that was written.
READWRITE: this packed record may be written and its values
read-back from the End Device. The value read shall be
identical to the value last written.
The default value is READWRITE.
deprecated The text Deprecated in the Indicates that this packed record is deprecated and is likely to be
description of the packed record removed or renamed in future releases of the TDL. Default value
shall be generated.. is false.
metrological The text “Non-default An indication that this packed record is metrological. Thus, any
properties: Metrological = Table or Element that contains it is also metrological. Default
value” in the description of the value is false.
packed record shall be
generated.
15653

15654 I.2.8.3 <packedRecord> Document Form

15655 The <packedRecord> definitions are mapped to BNF.rcdType in the syntax section, and all the descriptions and
15656 enumerations are expressed in the description section.

15657 Example: Given the XML text below:

15658 <packedRecord name="CLOCK_STATE_RCD" atomic=”true”>


15659 <element name="CLOCK_CALENDAR" type="LTIME_DATE">
15660 <description>Current End Device time.</description>
15661 </element>
15662 <element name="TIME_DATE_QUAL" type="TIME_DATE_QUAL_BFLD">
15663 <description>See <b> TIME_DATE_QUAL_BFLD</b> above.</description>
15664 </element>
15665 </packedRecord>
15666

Annex I / TDL XML File Format of the TDL Document 457


<packedRecord> Element
DRAFT ANSI C12.19-2012

15667 The following may be a partial output generated by a TDL processor in the syntax section:

15668 TYPE CLOCK_STATE_RCD = PACKED RECORD


15669 CLOCK_CALENDAR : LTIME_DATE;
15670 TIME_DATE_QUAL : TIME_DATE_QUAL_BFLD;
15671 END;

15672 The following may be a partial output generated by a TDL processor in the description section:

15673 Identifier Value Definition

15674 CLOCK_STATE_RCD Non-default properties: Atomic = true.


15675 CLOCK_CALENDAR Current End Device time.
15676
15677 TIME_DATE_QUAL See TIME_DATE_QUAL_BFLD above.

15678 I.2.9 <element> Element (Child of <packedRecord>)

15679 The <element> element binds a packed record data type to an identifier. This type is defined to be local to the
15680 packed record scope.

15681 I.2.9.1 <element> DTD

15682 <!ELEMENT element ((description, extension?)?, enumerator?, assert?)>


15683 <!ATTLIST element
15684 name CDATA #REQUIRED
15685 type CDATA #REQUIRED
15686 enumerator CDATA #IMPLIED
15687 length CDATA "1"
15688 label CDATA #IMPLIED
15689 min CDATA #IMPLIED
15690 max CDATA #IMPLIED>
15691 accessibility (UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE)
15692 “READWRITE”
15693 atomic (true | false | JOIN) “false”
15694 deprecated (true | false) “false”
15695 metrological (true | false) “false”
15696 volatile (true | false | AUTO_AS_PER_ROLE) “AUTO_AS_PER_ROLE”>

15697 I.2.9.2 <element> Attributes

Name Document Form Equivalent Description


name Publishes the Element name in The Element name identifier. This identifier can be used to refer
the syntax and description to the table element. Element names instances shall be unique
sections. within the parent packedRecord element scope; i.e., multiple
definitions are possible when they are introduced within <if> or
<switch> elements. In those cases, the element names shall be
introduced in such a manner that each instance of the identifier
can only be instantiated once inside the packed record.
type Publishes the Element type in The Element type. It can be any valid simple or derived type
the syntax section. (e.g., packed record or bit field).
enumerator Publishes the element A reference to an enumerator identifier whose values/label pairs
enumeration reference in the are associated with the values of this element.
description sections.

458
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


length Introduces the Element extent in A valid expression the results in a numeric value to size elements
the syntax section. of type String, Binary, or BCD. These elements are not treated as
arrays but as atomic elements. As such they need to be requested
and transported in totality. It is not possible to request subset of
sized elements.
label None. A textual label used to label the element in a graphic context.
min Impacts on low bound The smallest value (inclusive) this element may have.
publication in the description
section.
max Impacts on high bound The largest value (inclusive) this element may have.
publication in the description
section.
accessibility The text “Non-default An indication of possible interpretations or use case for the
properties: Accessibility = named element. See <packedRecord> for more details.
value” in the description of the
Element shall be generated.
atomic The text “Non-default The element is monolithic, when true. See <packedRecord> for
properties: Atomic = value” in more details. When “JOIN” is entered, then the element is
the description of the element Atomic, and if the previous element were Atomic, then the pair
shall be generated.. of elements is also Atomic.
deprecated The text Deprecated in the Indicates that this Element is deprecated and is likely to be
description of the element shall removed or renamed in future releases of the TDL. Default value
be generated. is false.
metrological The text “Non-default An indication that this Element is metrological. Default value is
properties: Metrological = false.
value” in the description of the
Element shall be generated.
volatile The text “Non-default An indication of the Element’s volatility. When volatile is set to
properties: Volatile = value” in true, then the value of this element may change between
the description of the Element consecutive reads, implying that the Element should not be
shall be generated. cached by the AMI application, as it may change. When set to
false, then it is an indication that this Element is not likely to
change between consecutive reads (assuming no operator
intervention); it is therefore safe for the AMI application to cache
the Element’s value.

When the volatile attribute is set to “AUTO_AS_PER_ROLE”


(default value), then the values of the Table’s attribute role
should be probed to determine the volatility of this element’s
according to the Table’s role as follows: “CONTROL” sets
volatility to false; “DATA” sets volatility to true; “LIMITING”
sets volatility to false; “ACTUAL” sets volatility to false;
“UNDEFINED” sets volatility to true; “PRIVATE” sets
volatility to true.
15698

15699 I.2.9.3 <element> Document Form

15700 The <element> definitions are mapped to BNF.rcdMember, and all the descriptions and enumerations are expressed
15701 in the description section.

15702 Example: Given the XML text below:

15703 <packedRecord name="GEN_CONFIG_RCD">


15704 <element name="FORMAT_CONTROL_1" type="FORMAT_CONTROL_1_BFLD">
15705 <description>See <b>FORMAT_CONTROL_1_BFLD</b>.</description>
15706 </element>
15707 <element name="FORMAT_CONTROL_2" type="FORMAT_CONTROL_2_BFLD">
Annex I / TDL XML File Format of the TDL Document 459
<element> Element (Child of <packedRecord>)
DRAFT ANSI C12.19-2012

15708 <description>See <b>FORMAT_CONTROL_2_BFLD</b>.</description>


15709 </element>
15710 …
15711 </packedRecord >

15712 The following may be a partial output generated by a TDL processor in the syntax section:

15713 TYPE GEN_CONFIG_RCD = PACKED RECORD


15714 FORMAT_CONTROL_1 : FORMAT_CONTROL_1_BFLD;
15715 FORMAT_CONTROL_2 : FORMAT_CONTROL_2_BFLD;
15716 …
15717 END;

15718 The following may be a partial output generated by a TDL processor in the description section:

15719 Identifier Value Definition

15720 GEN_CONFIG_RCD
15721 FORMAT_CONTROL_1 See FORMAT_CONTROL_1_BFLD.
15722 FORMAT_CONTROL_2 See FORMAT_CONTROL_2_BFLD.

15723 I.2.10 <array> Element (Child of <packedRecord>)

15724 The <array> element binds a collection of a single type of identifier. This type is defined to be local to the
15725 containing packed record scope, and it maps to BNF.arrayType.

15726 I.2.10.1 <array> DTD

15727 <!ELEMENT array ((description, extension?)?, enumerator?, assert*)>


15728 <!ATTLIST array
15729 name CDATA #REQUIRED
15730 type CDATA #REQUIRED
15731 length CDATA "1"
15732 dimension CDATA #REQUIRED
15733 label CDATA #IMPLIED
15734 enumerator CDATA #IMPLIED
15735 accessibility (UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE)
15736 “READWRITE”
15737 atomic (true | false | JOIN) “false”
15738 deprecated (true | false) “false”
15739 metrological (true | false) “false”
15740 volatile (true | false | AUTO_AS_PER_ROLE) “AUTO_AS_PER_ROLE”>

15741 I.2.10.2 <array> Attributes

Name Document Form Equivalent Description


name Publishes the array name in the The array name identifier. This identifier can be used to refer to
syntax and description sections. this table element. Element name instances shall be unique
within the parent packedRecord element scope; i.e., multiple
definitions are possible when they are introduced within <if> or
<switch> elements. In those cases, the element names shall be
introduced in such a manner that each instance of the identifier
can only be instantiated once inside the packed record.

460
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


type Publishes the array type in the The array element type. It can be any valid simple or derived
syntax section. type.
length If other than 1, it suffixes the The number of base type members make up each element of this
extent length in brackets after array; e.g., FOO : ARRAY[3] OF STRING(20); will set length
the type in the syntax section. to 20 CHARs of each STRING element in that array FOO.
dimension Publishes the number of A valid expression results in a numeric integer value that can be
elements in the array in the used to establish the dimension (number of elements) for this
syntax section. array. Array members can be retrieved (communicated)
individually.
The number of members in the array of base type; e.g., FOO :
ARRAY[3] OF STRING(20); implies that dimension=“3” and
length=“20”, thus, allocating 3 elements each is a 20 CHARs
atomic STRING.
label None. Used by GUIs.
enumerator Publishes the array enumeration A reference to an enumerator identifier whose values/label pairs
reference in the description are associated with each of the values of this element.
sections.
accessibility The text “Non-default Implementer’s intended design for read and write access for this
properties: Accessibility = Element. Possible values are:
value” in the description of the
array shall be generated. READONLY: This Element can be accessed but not modified.
READWRITE: This Element can be accessed and modified.
WRITEONLY: This Element can be accessed and modified. It
contains one or more members that may not read back
exactly what was written to them.
UNIMPLEMENTED: This Element is not implemented in this
End Device; therefore, its value should be disregarded.
atomic The text “Non-default The element is monolithic, when true. See <packedRecord> for
properties: Atomic = value” in more details. When “JOIN” is entered, then the array is Atomic,
the description of the element and if the previous element was Atomic, then the pair of
shall be generated. elements is also Atomic. Default value is false unless the
Element’s type is Atomic.
deprecated The text Deprecated in the Indicates that this Element is deprecated and is likely to be
description of the element shall removed or renamed in a future release of the TDL. Default
be generated. value is false.
metrological The text “Non-default An indication that this element is metrological. Default value is
properties: Metrological = false.
value” in the description of the
element shall be generated.
volatile The text “Non-default An indication of the array’s volatility. When volatile is set to
properties: Volatile = value” in true, then the value of this element may change between
the description of the element consecutive reads, implying that the Element should not be
shall be generated. cached by the AMI application, as it may change. When set to
false, then it is an indication that this element is not likely to
change between consecutive reads (assuming no operator
intervention); it is therefore safe for the AMI application to cache
the Element’s value.

When the volatile attribute is set to “AUTO_AS_PER_ROLE”


(default value), then the values of the Table’s attribute role
should be probed to determine the volatility of this element
according to the Table’s role as follows: “CONTROL” sets
volatility to false; “DATA” sets volatility to true; “LIMITING”
sets volatility to false; “ACTUAL” sets volatility to false;
“UNDEFINED” sets volatility to true; “PRIVATE” sets
volatility to true.
15742

Annex I / TDL XML File Format of the TDL Document 461


<array> Element (Child of <packedRecord>)
DRAFT ANSI C12.19-2012

15743 I.2.10.3 <array> Document Form

15744 The <array> definitions are mapped to BNF.rcdMember of type BNF.arrayType, and all the descriptions and
15745 enumerations are expressed in the description section.

15746 Example: Given the XML text below:

15747 <array name="PENDING_TABLES" type="ENTRY_ACTIVATION_RCD" atomic=”true”


15748 dimension="GEN_CONFIG_TBL.NBR_PENDING">
15749 <description>
15750 List of pending tables and associated activation triggers.
15751 </description>
15752 </array>

15753 The following may be a partial output generated by a TDL processor in the syntax section:

15754 PENDING_TABLES : ARRAY[GEN_CONFIG_TBL.NBR_PENDING] OF


15755 ENTRY_ACTIVATION_RCD;

15756 The following may be a partial output generated by a TDL processor in the description section:

15757 Identifier Value Definition

15758 PENDING_TABLES List of pending tables and associated activation triggers.


15759 Non-default Properties: Atomic = TRUE.

15760 I.2.11 <set> Element (Child of <packedRecord> element)

15761 The <set> element binds a collection of a Boolean values to an identifier. This type is defined to be local to the
15762 containing packed record scope, and it maps to BNF.set member of BNF.sizedType.

15763 I.2.11.1 <set> DTD

15764 <!ELEMENT set ((description, extension?)?, enumerator?, assert*)>


15765 <!ATTLIST set
15766 name CDATA #REQUIRED
15767 type #FIXED ”BOOL”
15768 dimension CDATA #REQUIRED
15769 label CDATA #IMPLIED>
15770 enumerator CDATA #IMPLIED
15771 accessibility (UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE)
15772 “READWRITE”
15773 atomic ( true | false | JOIN ) "false"
15774 deprecated (true | false) “false”
15775 metrological (true | false) “false”
15776 volatile (true | false | AUTO_AS_PER_ROLE) “AUTO_AS_PER_ROLE”>

462
DRAFT ANSI C12.19-2012

15777 I.2.11.2 <set> Attributes

Name Document Form Equivalent Description


name Publishes the set name in the The set name identifier. This identifier can be used to refer to this
syntax and description sections. table element. Element names instances shall be unique within
the parent packedRecord element scope; i.e., multiple definitions
are possible when they are introduced within <if> or <switch>
elements. In those cases the element names shall be introduced in
such a manner that each instance of the identifier can only be
instantiated once inside the packed record.
type None. Fixed at BOOL.
dimension Publishes the number of Octets An expression that results in an integer and number of entries
used to map the set to a (single bit entries) for this set. Set Elements can be accessed
collection of Octets using the individually, but they are communicated one Octet at a time.
expression ((dimension + 7 ) / 8 When sets are allocated in C12.19 Tables the number of Octets
truncated to an integer in the used is (dimension+7)/8 Octets.
Syntax section.
label None. Used by GUIs.
enumerator Publishes the set enumeration A reference to an enumerator identifier whose values/label pairs
reference in the description are associated with each of the values of this element.
sections.
accessibility The text “Non-default Implementer’s intended design for read and write access for a
properties: Accessibility = this Element. Possible values are:
value” in the description of the
set shall be generated. READONLY: this Element can be accessed but not modified.
READWRITE: this Element is can be accessed and modified.
WRITEONLY: this Element can be accessed and modified. It
contains one or more members that may not read back
exactly what was written to them.
UNIMPLEMENTED: this Element is not implemented in this
End Device; therefore, its value should be disregarded.
atomic The text “Non-default The element is monolithic, when true. See <packedRecord> for
properties: Atomic = value” in more details. When “JOIN” is entered, then the set is Atomic,
the description of the element and if the previous element were Atomic, then the pair of
shall be generated. elements is also Atomic. Default value is false.
deprecated The text Deprecated in the Indicates that this element is deprecated and is likely to be
description of the element shall removed or renamed in a future release of the TDL. Default
be generated. value is false.
metrological The text “Non-default An indication that this element is metrological. Default value is
properties: Metrological = false.
value” in the description of the
element shall be generated.
volatile The text “Non-default An indication of the set’s volatility. When volatile is set to true,
properties: Volatile = value” in then the value of this element may change between consecutive
the description of the element reads, implying that the Element should not be cached by the
shall be generated. AMI application, as it may change. When set to false, then it is
an indication that this element is not likely to change between
consecutive reads (assuming no operator intervention); it is
therefore safe for the AMI application to cache the Element’s
value.

When the volatile attribute is set to “AUTO_AS_PER_ROLE”


(default value), then the values of the Table’s attribute role
should be probed to determine the volatility of this element
according to the Table’s role as follows: “CONTROL” sets
volatility to false; “DATA” sets volatility to true; “LIMITING”
sets volatility to false; “ACTUAL” sets volatility to false;
“UNDEFINED” sets volatility to true; “PRIVATE” sets
volatility to true.
15778
Annex I / TDL XML File Format of the TDL Document 463
<set> Element (Child of <packedRecord> element)
DRAFT ANSI C12.19-2012

15779 I.2.11.3 <set> Document Form

15780 The <set> definitions are mapped to BNF.rcdMember of type BNF.sizedType of BNF.set, and all the descriptions
15781 and enumerations are expressed in the description section.

15782 Example: Given the XML text below:

15783 <set name="TO_SET" dimension="ACT_LOAD_CONTROL_TBL.NBR_OF_CONTROL_POINTS">


15784 <description>List of control points selected.</description>
15785 <enumerator>
15786 <enum value="false"
15787 text="This control point is not affected by this load control directive."/>
15788 <enum value="true"
15789 text="This control point is affected by this load control directive."/>
15790 </enumerator>
15791 </set>

15792 The following may be a partial output generated by a TDL processor in the syntax section:

15793 TO_SET : SET((ACT_LOAD_CONTROL_TBL.NBR_OF_CONTROL_POINTS + 7) / 8);

15794 The following may be a partial output generated by a TDL processor in the description section:

15795 Identifier Value Definition

15796 TO_SET List of control points selected.


15797 FALSE This control point is not affected by this load control directive.
15798 TRUE This control point is affected by this load control directive.

15799

15800 I.2.12 <if> Element (Child of <packedRecord>)

15801 The <if> element introduces a Boolean expression. The <then> child element is to be processed when the expression
15802 evaluates to true. The optional <else> child element is to be processed by the application when the expression
15803 evaluates to false.

15804 I.2.12.1 <if> DTD (Child of <packedRecord>)

15805 <!ELEMENT if ((description, extension?)?, (then, else?))>


15806 <!ATTLIST if
15807 condition CDATA #REQUIRED>
15808

15809 I.2.12.2 <if> Attributes (Child of <packedRecord>)

Name Document Form Equivalent Description


condition Published in the syntax section An expression encoded as BNF.intMathExpression and reduces
between the IF and THEN to a Boolean values.
tokens.
15810

464
DRAFT ANSI C12.19-2012

15811 I.2.12.3 <if> Document Form

15812 The <if> definitions are mapped to BNF.rcdIf in the syntax section. Any <description> elements that precede or are
15813 contained in the <if> element may be produced in the syntax section prior to the introduction of the BNF.rcdIf
15814 syntax enclosed within the comment characters ‘{‘ and ‘}’.

15815 I.2.12.4 <then> Element (Child of <packedRecord>/<if>)

15816 The <then> element introduces Table Elements that are present when the <if>’s parent attribute condition evaluates
15817 to true.

15818 I.2.12.5 <then> DTD

15819 <!ELEMENT then ((description, extension?)? | element | array | set | if | switch | assert)*>

15820 I.2.12.6 <then> Attributes

15821 None.

15822 I.2.12.7 <then> Document Form

15823 The <then> definitions are mapped to the BNF.rcdMember member’s THEN clause of the BNF.rcdIf clause. If this
15824 element contains a <description> element, then the description may be produced in the syntax section following to
15825 the THEN token. This description shall be enclosed within the comment characters ‘{‘ and ‘}’. All elements
15826 enclosed will be published in the syntax section. All Elements’ descriptions and enumerations may be published in
15827 the description section.

15828 I.2.13 <else> Element (Child of <packedRecord>/<if>)

15829 The <else> element introduces Table Elements that are present when the <if>’s parent attribute condition evaluates
15830 to false.

15831 I.2.13.1 <else> DTD

15832 <!ELEMENT else (((description, extension?)? | element | array | set | if | switch | assert)*)>

15833 I.2.13.2 <else> Attributes

15834 None.

15835 I.2.13.3 <else> Document Form

15836 The <else> definitions are mapped to the BNF.rcdMember member’s ELSE clause of the BNF.rcdIf clause. If this
15837 element contains a <description> element, then the description may be produced in the syntax section following to
15838 the ELSE token. This description shall be enclosed within the comment characters ‘{‘ and ‘}’. All elements enclosed
15839 will be published in the syntax section. All Element descriptions and enumerations may be published in the
15840 description section.

15841 Given the XML text below:

15842 <packedRecord name="MANUFACTURER_IDENT_RCD">


15843 …
15844 <element name="FW_REVISION_NUMBER" type="UINT8">

Annex I / TDL XML File Format of the TDL Document 465


<else> Element (Child of <packedRecord>/<if>)
DRAFT ANSI C12.19-2012

15845 <description>
15846 Manufacturer&apos;s firmware revision number. Changes in value imply
15847 product corrections or improvements. Recommend use of &apos;0&apos;
15848 to designate preproduction or prototyping software.
15849 </description>
15850 </element>
15851 <if condition="GEN_CONFIG_TBL.ID_FORM != 0">
15852 <description>
15853 This is an example of dual use of <b>BCD</b> or <b>STRING</b> to
15854 express an <b>ID_FORM</b>.
15855 </description>
15856 <then>
15857 <description>Encoded as <b>BCD(8)</b>.</description>
15858 <element name="MFG_SERIAL_NUMBER" type="BCD" length="8">
15859 <description>
15860 Manufacturer&apos;s serial number for the End Device.
15861 16 BCD digits or CHARs.
15862 </description>
15863 </element>
15864 </then>
15865 <else>
15866 <description>Encoded as <b>STRING(16)</b>.</description>
15867 <element name="MFG_SERIAL_NUMBER" type="STRING" length="16">
15868 <description documentation="false">
15869 Manufacturer&apos;s serial number for the End Device.
15870 16 BCD digits or CHARs.
15871 </description>
15872 </element>
15873 </else>
15874 </if>
15875 …
15876 </packedRecord>

15877 The following may be a partial output generated by a TDL processor in the syntax section:

15878 TYPE MANUFACTURER_IDENT_RCD = PACKED RECORD


15879 …
15880 FW_REVISION_NUMBER : UINT8;

15881 { This is an example of dual use of BCD or STRING to express an ID_FORM. }


15882 IF GEN_CONFIG_TBL.ID_FORM != 0 THEN
15883 { Encoded as BCD(8). }
15884 MFG_SERIAL_NUMBER : BCD(8);
15885 ELSE
15886 { Encoded as STRING(16). }
15887 MFG_SERIAL_NUMBER : STRING(16);
15888 END;
15889 END;

15890 The following may be a partial output generated by a TDL processor in the description section:

15891 Identifier Value Definition

15892 MANUFACTURER_IDENT_RCD
466
DRAFT ANSI C12.19-2012

15893 …

15894 FW_REVISION_NUMBER 0..255 Manufacturer’s firmware revision number. Changes


15895 in value imply product corrections or
15896 improvements. Recommend use of ‘0' to designate
15897 preproduction or prototyping software.

15898 MFG_SERIAL_NUMBER Manufacturer’s serial number for the End Device. 16


15899 BCD digits or CHARs.

15900 I.2.14 <switch> Element (Child of <packedRecord>)

15901 The <switch> element introduces a selector expression. The <case> child elements are to be included when
15902 startValueInclusive/endValueInclusive attributes match the evaluated expression of the selection attribute. The
15903 optional <default> child element is to be processed by the application when the expression evaluates none of the
15904 available selection.

15905 I.2.14.1 <switch> DTD

15906 <!ELEMENT switch ((description, extension?)?, case*, default?)>


15907 <!ATTLIST switch
15908 selection CDATA #REQUIRED>

15909 I.2.14.2 <switch> Attributes

Name Document Form Equivalent Description


selection Publishes the switch selector An expression encoded as BNF.intMathExpression and reduces
expression in the syntax section. to a integer value.
15910

15911 I.2.14.3 <switch> Document Form

15912 The <switch> definitions are mapped to the BNF.rcdCase syntax. If this element contains a <description> element,
15913 then the description may be produced in the syntax section just prior to the SWITCH token. This description shall be
15914 enclosed within the comment characters ‘{‘ and ‘}’.

15915 I.2.14.4 <case> Element (Child of <packedRecord>/<switch>)

15916 The <case> definitions are mapped to the BNF.rcdCaseMember, which introduces the CASE token in the syntax
15917 section.

15918 I.2.14.5 <case> DTD

15919 <!ELEMENT case (((description, extension?)? | element | array | set | if | switch | assert)*)>
15920 <!ATTLIST case
15921 startValueInclusive CDATA #REQUIRED
15922 endValueInclusive CDATA #IMPLIED>
15923

Annex I / TDL XML File Format of the TDL Document 467


<switch> Element (Child of <packedRecord>)
DRAFT ANSI C12.19-2012

15924 I.2.14.6 <case> Attributes

Name Document Form Equivalent Description


startValueInclusive Publishes the case low-bound The selection case lower bound or value for the contained packed
value in the syntax section. record syntax.
endValueInclusive Publishes the case high-bound The selection case for the upper bound for the contained packed
value in the syntax section. record syntax.
15925

15926 I.2.14.7 <case> Document Form

15927 The <case> definitions are mapped to the BNF.rcdCaseMember CASE token and related ranges. The
15928 startValueInclusive and the optional endValueInclusive range attributes are expressed only in the syntax section
15929 followed by the Elements definitions. All Element descriptions and enumerations may be published in the
15930 description section. If this element contains a <description> element, then the description may be produced in the
15931 syntax section just prior to the CASE token. This description shall be enclosed within the comment characters ‘{‘
15932 and ‘}’.

15933 I.2.14.8 <default> element (Child of <packedRecord>/<switch>)

15934 The <default> definitions are mapped to the BNF.rcdCaseMember DEFAULT token syntax.

15935 I.2.14.9 <default> DTD

15936 <!ELEMENT default ((description, extension?)? | element | array | set | if | switch | assert)*>

15937 I.2.14.10 <default> Attributes

15938 None.

15939 I.2.14.11 <default> Document Form

15940 The <default> definitions are mapped to the default clause of the BNF.rcdCaseMember DEFAULT syntax followed
15941 by the Elements definitions. All Element descriptions and enumerations may be published in the description section.
15942 If this element contains a <description> element, then the description may be produced in the syntax section just
15943 prior to the DEFAULT token. This description shall be enclosed within the comment characters ‘{‘ and ‘}’.

15944 Example: Given the XML text below:

15945 <switch selection="GEN_CONFIG_TBL.NAMEPLATE_TYPE">


15946 <case startValueInclusive="0">
15947 <element name="G_GAS_DEVICE" type="G_GAS_DEVICE_RCD">
15948 <description>
15949 Element present when the End Device is a gas meter.
15950 See <b>G_GAS_DEVICE_RCD</b> for details.
15951 </description>
15952 </element>
15953 </case>
15954 <case startValueInclusive="1">
15955 <element name="W_WATER_DEVICE" type="W_WATER_DEVICE_BFLD">
15956 <description>

468
DRAFT ANSI C12.19-2012

15957 Element present when the End Device is a water meter.


15958 See <b>W_WATER_DEVICE_BFLD</b> for details.
15959 </description>
15960 </element>
15961 </case>
15962 <case startValueInclusive="2">
15963 <element name="E_ELECTRIC_DEVICE" type="E_ELECTRIC_DEVICE_RCD">
15964 <description>
15965 Element present when the End Device is an electricity meter.
15966 See <b>E_ELECTRIC_DEVICE_RCD</b> for details.
15967 </description>
15968 </element>
15969 </case>
15970 <default >
15971 <element name="RESERVED" type="NIL">
15972 <description documentation="false">Reserved.</description>
15973 </element>
15974 </default>
15975 </switch>
15976

Annex I / TDL XML File Format of the TDL Document 469


<switch> Element (Child of <packedRecord>)
DRAFT ANSI C12.19-2012

15977 The following may be a partial output generated by a TDL processor in the syntax section:

15978 SWITCH GEN_CONFIG_TBL.NAMEPLATE_TYPE OF


15979 CASE 0 :
15980 G_GAS_DEVICE : G_GAS_DEVICE_RCD;
15981 CASE 1 :
15982 W_WATER_DEVICE : W_WATER_DEVICE_BFLD;
15983 CASE 2 :
15984 E_ELECTRIC_DEVICE : E_ELECTRIC_DEVICE_RCD;
15985 DEFAULT:
15986 RESERVED : NIL;
15987 END;

15988 The following may be a partial output generated by a TDL processor in the description section:

15989 Identifier Value Definition

15990 G_GAS_DEVICE Element present when the End Device is a gas meter.
15991 See G_GAS_DEVICE_RCD for details.
15992 W_WATER_DEVICE Element present when the End Device is a water
15993 meter. See W_WATER_DEVICE for details.
15994 E_ELECTRIC_DEVICE Element present when the End Device is an
15995 electricity meter. See E_ELECTRIC_DEVICE for
15996 details.

15997 I.2.15 <bitField> element

15998 The <bitField> element introduces the BIT FIELD OF derived type. This maps to the BNF.bfldType. This type is
15999 defined to be local to the parent scope (either Standard or Manufacturer context) TDL, decade, table, or procedures
16000 (see G.6.1, “Scoping rules”).

16001 I.2.15.1 <bitField> DTD

16002 <!ELEMENT bitField ((description, extension?)? | subElement | if | switch | assert)*>


16003 <!ATTLIST bitField
16004 name CDATA #REQUIRED
16005 type (UINT8 | UINT16 | UINT32) #REQUIRED
16006 replace CDATA #IMPLIED
16007 override CDATA #IMPLIED
16008 redefine CDATA #IMPLIED
16009 showRedefined ( true | false ) “false”
16010 strict ( true | false ) "true"
16011 atomic CDATA #FIXED "true"
16012 label CDATA #IMPLIED
16013 accessibility (READONLY | WRITEONLY | READWRITE ) "READWRITE"
16014 metrological ( true | false ) "false"
16015 deprecated ( true | false ) "false">

470
DRAFT ANSI C12.19-2012

16016 I.2.15.2 <bitField> Attributes

Name Document Form Equivalent Description


name Publishes the bit field name in The bit field identifier. This identifier can be used to refer to this
the syntax and description bit field. Bit field names shall be expressed according to the
sections. BNF.bfldIdentifier rule and shall be unique within the defining
scope.
type Publishes the bit field type in the An Atomic element type that can be used to establish the size of
syntax section. the bit field and its transmission requirements. The type shall be
expressed as BNF. bfldAssignedType.
replace The text Replaces: target in the A reference to a BIT FIELD identifier in accordance with
description of the packed record BNF.bfldReference, whose type is mapped to a new type. Any
shall be generated. reference to the old type, from any context, will access the new
definition. This feature enables one Standard to be derived from
another, and for a manufacturer device class to define (thus,
document) Standard opaque fields.
It is important to note that:
1) A referenced type can be replaced only once. Replacement
of a type that has already been previously replaced by
another type is not permitted.
2) The replaced type cannot be defined in the same XML file
that defines the original packed record for that type.
3) Replaced types shall have identical element offsets and
indices for existing elements, and they may expose
additional detail to the internal structure of an element that
is otherwise opaque.
4) The application processor is encouraged to issue a warning
upon all encounters of replaced types.
override The text Overrides: target in the A relaxed variation of the replace attributes. An override of a
description of the bit field shall BIT FIELD identifier, in accordance with BNF.bfldReference,
be generated. whose type is mapped to a new type. Any reference to the old,
from any context, type will access the new definition. This
feature enables one Standard to be derived from another, and for
a manufacturer device class to displace, and then recreate, any bit
field.
It is important to note that:
1) An overridden type can be displaced only once. Override of
a type that has already been previously replaced by another
type is not permitted.
2) The overridden type cannot be defined in the same XML
file that defines the original packed record for that type.
3) Overridden types can change subelement offsets and
indices for existing subelements, or expose additional detail
to the internal structure of subelements that is otherwise
opaque.
4) The application processor is encouraged to issue a warning
upon all encounters of overridden types.

Annex I / TDL XML File Format of the TDL Document 471


<bitField> element
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


redefine The text Redefines: target in the A reference to a BIT FIELD identifier, in accordance with
description of the bit field shall BNF.bfldReference, whose type is used as a restriction to the
be generated. newly defined bit field in the local scope. This feature enables
one to ensure that data type structures are maintained while
modification to element names or meta-data is desired. This is
useful when defining dimension-limiting tables, then reusing
only the element types (not the element names or meta-data –
descriptions) to introduce the actual limits tables. The presence
of this attribute does not absolve the writer from entering the
entire element names and types. However, the only variations
permitted are limited to
redefinition of <enumerator>
redefinition of <description>
redefinition of <extension>
redefinition of <subElement> name attributes.
The referred bit field is left unaffected.

It is important to note that:


1) A redefined type can be redefined any number of times.
Redefinition of a type that has already been previously
redefined elsewhere is permitted.
2) Redefined types can be defined in the same XML file,
which also provided in the original definition for bit field
that is now being redefined.
3) Redefinition of a replaced, overridden, or redefined bit field
is permitted. When the redefined type is encountered in the
same XML file [see item 2)], the redefinition shall be
applied after the application of any replace or override
directives (i.e., replacements are processed prior to
redefinitions).
showRedefined When true, the redefining, When a bit field is redefined, replaced, or overridden, the
replacing, or overriding type is redefining syntax may not be expressed in the syntax section
placed the syntax section. where the reference is made. As a TDL documentation aid,
setting this attribute to true shall force the Document Form
processor to expose the syntax of the redefining, replacing, or
overriding type in the syntax section.
strict Suffix the term “reference is When bit field is created and the replace, override, or redefine
strict” to the replace, override, or attribute is asserted, then the search rule for the target type will
redefine referenced type in the be strict (if strict is set to true, the default value) or not strict (if
description of the bit field the strict attribute is set to false). A strict search requires that the
generated. implied or explicit target scope contain the replaced or redefined
type. A nonstrict search requires that the implied or explicit
target scope is where the search will start in the End Device
scope hierarchy; i.e., the first encounter of the target type within
any of the parent scopes will be considered a match for the
sought replaced or redefined type.
atomic The text “Non-default An indication (when true) stating that this bit field can only be
properties: Atomic = value” in read or written entirely as one unit. The only permitted value
the description of the bit field shall be true.
shall be generated..
label None. A text field that may be presented as an alternative to the value of
the attribute name. If this optional attribute is not provided, then
applications shall present the value of the name attribute.

472
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


accessibility The text “Non-default The bit field access restrictions. Possible values are:
properties: Accessibility = READONLY: this bit field may be accessed but not modified.
value” in the description of the WRITEONLY: this bit field may be accessed and modified. It
bit field shall be generated. contains one or more members that may not read back
exactly the values written to them.
READWRITE: this bit field may be written and its values read
back from the End Device. The value read shall be identical
to the value last written.
The default value is READWRITE.
metrological The text “Non-default An indication that this bit field is metrological. Thus, any Table
properties: Metrological = or Element that contains it is also metrological. Default value is
value” (true or false) in the false.
description of the packed record
shall be generated.
deprecated The text Deprecated in the Indicates that this bit field is deprecated and is likely to be
description of the bit field shall removed or renamed in future releases of the TDL. Default value
be generated.. is false.
16017

16018 I.2.15.3 <bitField> Document Form

16019 The <bitField> definitions are mapped to BNF.bfldType in the syntax section, and all the descriptions and
16020 enumerations are expressed in the description section.

16021 Example: Given the XML text below:

16022 <bitField name="PE_STATUS_BFLD" type="UINT8">


16023 <description>Selectors indicating action to be performed upon activation of
16024 selected table.
16025 </description>
16026 <subElement name="EVENT_CODE" type="UINT" startBitInclusive="0" endBitInclusive="3">
16027 <description>
16028 Element that specifies the condition upon which the pending table shall be
16029 made active. The trigger condition is stored in the <b>EVENT_STORAGE</b>
16030 record.
16031 </description>
16032 <enumerator>
16033 <enum value="0"
16034 text="The pending table is activated based on an absolute time.">
16035 <description>
16036 Pending Table is activated based on an absolute time contained in the
16037 <b>EVENT_STORAGE</b> record. The time is interpreted as
16038 <b>STIME_DATE</b>.</description>.
16039 </enum>
16040 <enum value="1"
16041 text="The pending table is activated based on a relative time.">
16042 <description>
16043 The pending table is activated based on a relative time
16044 contained in the <b>EVENT_STORAGE</b> record.
16045 </description>
16046 </enum>
16047 <enum value="2"
16048 text="The pending table is activated based on a non-time
16049 associated trigger.">
16050 <description>

Annex I / TDL XML File Format of the TDL Document 473


<bitField> element
DRAFT ANSI C12.19-2012

16051 The pending table is activated based on a non-time associated


16052 trigger contained in the <b>EVENT_STORAGE</b> record.
16053 </description>
16054 </enum>
16055 <enum value="3" endValueInclusive="15" exclude="true"
16056 text="Reserved."/>
16057 </enumerator>
16058 </subElement>
16059 …
16060 </bitField>

16061 The following may be a partial output generated by a TDL processor in the syntax section:

16062 TYPE PE_STATUS_BFLD = BIT FIELD OF UINT8


16063 EVENT_CODE : UINT(0..3);
16064 …
16065 END;

16066 The following may be a partial output generated by a TDL processor in the description section:

16067 Identifier Value Definition


16068 PE_STATUS_BFLD Selectors indicating action to be performed upon activation of
16069 selected Pending Table.
16070 EVENT_CODE Element that specifies the condition upon which the Pending
16071 Table shall be made active. The trigger condition is stored in
16072 the EVENT_STORAGE record.
16073 0 Pending Table is activated based on an absolute time
16074 contained in the EVENT_STORAGE record. The time is
16075 interpreted as STIME_DATE.
16076 1 Pending Table is activated based on a relative time contained
16077 in the EVENT_STORAGE record.
16078 2 Pending Table is activated based on a non-time-associated
16079 trigger contained in the EVENT_STORAGE record.
16080 3..15 Reserved.

16081 I.2.16 <subElement> Element (Child of <bitField>)

16082 The <subElement> element binds a bit field member type to an identifier. This type is defined to be local to the bit
16083 field scope.

16084 I.2.16.1 <subElement> DTD

16085 <!ELEMENT subElement ((description, extension?)?, enumerator?, assert*)>


16086 <!ATTLIST subElement
16087 name CDATA #REQUIRED
16088 type CDATA #REQUIRED
16089 startBitInclusive CDATA #REQUIRED
16090 endBitInclusive CDATA #IMPLIED
16091 label CDATA #IMPLIED
16092 enumerator CDATA #IMPLIED
16093 min CDATA #IMPLIED
16094 max CDATA #IMPLIED

474
DRAFT ANSI C12.19-2012

16095 atomic CDATA #FIXED "JOIN"


16096 accessibility (UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE )
16097 "READWRITE"
16098 volatile (AUTO-AS-PER-TYPE | true | false ) "AUTO-AS-PER-TYPE"
16099 metrological ( true | false ) "false"
16100 deprecated ( true | false ) "false">

16101 I.2.16.2 <subElement> Attributes

Name Document Form Equivalent Description


name Publishes the Subelement name The Subelement name identifier. This identifier can be used to
in the syntax and description refer to the table <subElement>. Subelement name instances
sections. shall be unique within the parent bit field element scope; i.e.,
multiple definitions are possible when they are introduced within
<if> or <switch> elements. In those cases, the subelement names
shall be introduced in such a manner that each instance of the
identifier can only be instantiated once inside the bit field.
type Publishes the Subelement type in The Subelement type. The <bitField> type limits its type and bit
the syntax section. offset size.
startBitInclusive Publishes the starting bit- The bit number representing the first bit of this Subelement.
position of bits for the selected
type within parenthesis ‘(‘ and
‘)’ in the syntax section. It also
controls the publication numeric
range for the type in the
description section.
endBitInclusive Publishes the ending bit-position The bit number representing the last bit of this subelement. If it is
of bits for the selected type not supplied, then it takes the value of the startBitInclusive.
within parenthesis ‘(‘ and ‘)’ in
the syntax section. It also
controls the publication numeric
range for the type in the
description section.
label None. A textual label used to label the subelement in a graphic context.
enumerator Publishes the Subelement A reference to an enumerator identifier whose values/label pairs
enumeration reference in the are associated with the values of this Subelement.
description sections.
min Impacts on low-bound The smallest value (inclusive) this subelement may have.
publication in the description
section.
max Impacts on high-bound The largest value (inclusive) this subelement may have.
publication in the description
section.
atomic None An indication (always “JOIN”) stating that this Subelement can
only be read or written entirely as one unit and is joined to the
next Subelement in the sequence of Subelements.
accessibility The text “Non-default The subelement access restrictions. Possible values are:
properties: Accessibility = READONLY: this subelement be accessed but not modified.
value” in the description of the READWRITE: this subelement is may be written and its values
Subelement shall be generated. read back from the End Device.
WRITEONLY: this subelement may be accessed and modified. It
may not read back exactly as written.

Annex I / TDL XML File Format of the TDL Document 475


<subElement> Element (Child of <bitField>)
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


volatile The text “Non-default An indication of the Subelement’s volatility. When volatile is set
properties: Volatile = value” in to true, then the value of this Subelement may change between
the description of the consecutive reads, implying that the element should not be
Subelement shall be generated. cached by the AMI application, as it may change. When set to
false, then it is an indication that this Subelement is not likely to
change between consecutive reads (assuming no operator
intervention); it is therefore safe for the AMI application to cache
the Subelement’s value.

When the volatile attribute is set to “AUTO_AS_PER_ROLE”


(default value), then the values of the Table’s attribute role
should be probed to determine the volatility of this element’s
according to the Table’s role as follows: “CONTROL” sets
volatility to false; “DATA” sets volatility to true; “LIMITING”
sets volatility to false; “ACTUAL” sets volatility to false;
“UNDEFINED” sets volatility to true; “PRIVATE” sets
volatility to true.
metrological The text “Non-default An indication that this Subelement is metrological. Default value
properties: Metrological = is false.
value” in the description of the
Subelement shall be generated.
deprecated The text Deprecated in the Indicates that this Subelement is deprecated and is likely to be
description of the element shall removed or renamed in future releases of the TDL. Default value
be generated. is false.
16102

16103 I.2.16.3 <subElement> Document Form Equivalent

16104 The <subElement> definitions are mapped to BNF.bfldMember, and all the descriptions and enumerations are
16105 expressed in the description section.

16106 For a Document Form publication example, see the definition of <bitField> above.

16107 I.2.17 <if> Element (Child of <bitField>)

16108 The <if> element provides for encoding alternative syntax based on a conditional expression.

16109 I.2.17.1 <if> DTD

16110 <!ELEMENT if ((description, extension?)?, then, else?)>


16111 <!ATTLIST if
16112 condition CDATA #REQUIRED>

16113 I.2.17.2 <if> Attributes

Name Table Document Equivalent Description


condition Published in the syntax section An expression encoded as BNF.intMathExpression and reduces
between the IF and THEN to a Boolean value.
tokens.
16114

16115 I.2.17.3 <if> Document Form

16116 The <if> definitions are mapped to BNF.bfldIf in the syntax section. Any <description> elements that precede or are
16117 contained in the <if> element may be produced in the syntax section prior to the introduction of the BNF.bfldIf
16118 syntax and be enclosed within the comment characters ‘{‘ and ‘}’.
476
DRAFT ANSI C12.19-2012

16119 For a Document form publication example, see <if>/<then>, <if>/<else> of <packedRecord>.

16120 I.2.18 <then> Element (Child of <bitField>/<if>)

16121 The <then> element introduces Table Subelements that are present when the <if>’s parent attribute condition
16122 evaluates to true.

16123 I.2.18.1 <then> DTD

16124 <!ELEMENT then ((description, extension?) | subElement | if | switch | assert)*>

16125 I.2.18.2 Attributes

16126 None.

16127 I.2.18.3 <then> Document Form

16128 The <then> definitions are mapped to the BNF.bfldMember member’s THEN clause of the BNF.bfldIf clause. If this
16129 element contains a <description> element, then the description may be produced in the syntax section following to
16130 the THEN token. This description shall be enclosed within the comment characters ‘{‘ and ‘}’. All elements
16131 enclosed will be published in the syntax section. All Subelements’ descriptions and enumerations may be published
16132 in the description section.

16133 I.2.19 <else> Element (Child of <bitField>/<if>)

16134 The <else> element introduces Table Subelements that are present when the <if>’s parent attribute condition
16135 evaluates to false.

16136 I.2.19.1 <else> DTD definition

16137 <!ELEMENT else ((description, extension?)? | subElement | if | switch | assert)*>

16138 I.2.19.2 <else> Attributes

16139 None.

16140 I.2.19.3 <else> Document Form

16141 The <else> definitions are mapped to the BNF.bfldMember member’s ELSE clause of the BNF.bfldIf clause. If this
16142 element contains a <description> element, then the description may be produced in the syntax section following to
16143 the ELSE token. This description shall be enclosed within the comment characters ‘{‘ and ‘}’. All elements enclosed
16144 will be published in the syntax section. All Element descriptions and enumerations may be published in the
16145 description section.

16146 For a Document form publication example, see <if>/<then>, <if/else> of <packedRecord>.

16147 I.2.20 <switch> Element (Child of <bitField>)

16148 The <switch> element introduces a selector expression. The <case> child elements are to be included when
16149 startValueInclusive/endValueInclusive attributes match the evaluated expression of the selection attribute. The
16150 optional <default> child element is to be processed by the application when the expression evaluates none of the
16151 available selection.

Annex I / TDL XML File Format of the TDL Document 477


<then> Element (Child of <bitField>/<if>)
DRAFT ANSI C12.19-2012

16152 For a Document form publication example, see <switch>/<case>, <switch>/<default> of <packedRecord>.

16153 I.2.20.1 <switch> DTD

16154 <!ELEMENT switch ((description, extension?)?, case*, default?)>


16155 <!ATTLIST switch
16156 selection CDATA #REQUIRED>

16157 I.2.20.2 <switch> Attributes

Name Document Form Equivalent Description


selection Publishes the switch selector An expression encoded as BNF.intMathExpression and reduces
expression in the syntax section. to a integer value.
16158

16159 I.2.20.3 <switch> Document Form

16160 The <switch> definitions are mapped to the BNF.bfldCase syntax. If this element contains a <description> element,
16161 then the description may be produced in the syntax section just prior to the SWITCH token. This description shall be
16162 enclosed within the comment characters ‘{‘ and ‘}’.

16163 I.2.21 <case> Element (Child of <bitField>/<switch>)

16164 The <case> definitions are mapped to the BNF.bfldCaseMember, which introduces the CASE token in the syntax
16165 section.

16166 I.2.21.1 <case> DTD

16167 <!ELEMENT case ((description, extension?) | subElement | if | switch | assert)*>


16168 <!ATTLIST case
16169 startValueInclusive CDATA #REQUIRED
16170 endValueInclusive CDATA #IMPLIED>

16171 I.2.21.2 <case> Attributes

Name Document Form Equivalent Description


startValueInclusive Publishes the case low-bound The selection case lower bound or value for the contained bit
value in the syntax section. field syntax.
endValueInclusive Publishes the case high-bound The selection case for the upper bound for the contained bit field
value in the syntax section. syntax.
16172

16173 I.2.21.3 <case> Document Form

16174 The <case> definitions are mapped to the BNF.bfldCaseMember CASE token and related ranges. The
16175 startValueInclusive and the optional endValueInclusive range attributes are expressed only in the syntax section
16176 followed by the Subelements definitions. All Subelement descriptions and enumerations may be published in the
16177 description section. If this element contains a <description> element, then the description may be produced in the
16178 syntax section just prior to the CASE token. This description shall be enclosed within the comment characters ‘{‘
16179 and ‘}’.

16180 I.2.22 <default> Element (Child of <bitField>/<switch>)

16181 The <default> definitions are mapped to the BNF.bfldCaseMember DEFAULT token syntax.

478
DRAFT ANSI C12.19-2012

16182 I.2.22.1 <default> DTD

16183 <!ELEMENT default ((description, extension?) | subElement | if | switch | assert)*>

16184 I.2.22.2 <default> Attributes

16185 None.

16186 I.2.22.3 <default> Document Form

16187 The <default> definitions are mapped to the default clause of the BNF.bfldCaseMember DEFAULT syntax
16188 followed by the Subelements definitions. All Subelement descriptions and enumerations may be published in the
16189 description section. If this element contains a <description> element, then the description may be produced in the
16190 syntax section just prior to the DEFAULT token. This description shall be enclosed within the comment characters
16191 ‘{‘ and ‘}’.

16192 I.2.23 <decade> Element (Child of <tdl>)

16193 The decade element introduces a Decade. A Decade is a common processing scope, and it can contain a maximum
16194 of ten Tables of any one kind. Standard-defined or Manufacturer-defined Tables or procedures may also be
16195 associated with a Decade, thus, effectively increasing the total number of tables in a Decade. All types (see
16196 <packedRecord>, <bitField>, and <enumerator> elements) defined inside a decade scope are local to the Decade’s
16197 scope without conflict with all other types that may be defined in any other scope (see G.6.1, “Scoping rules”).
16198 However, these types are visible to associated tables or procedures, as if they were introduced inside the decade
16199 scope.

16200 I.2.23.1 <decade> DTD

16201 <!ELEMENT decade ((description, extension?)? | enumerator | packedRecord | bitField | table |


16202 procedure | assert)*>
16203 <!ATTLIST decade
16204 name CDATA #REQUIRED
16205 number CDATA #REQUIRED
16206 label CDATA #IMPLIED>

16207 I.2.23.2 <decade> Attributes

Name Document Form Equivalent Description


name Publishes a new section heading The Decade identifier encoded as BNF.decIdentifier. This
for the named Decade. identifier can be used to refer to the Decade symbolically or be
Optionally publishes the Decade incorporated into a reference to a component that was defined
name in a manner that binds its inside the Decade. Decade names shall be encoded according to
name to its number. the BNF.decIdentifier syntax and shall be unique within one End
Device class across all defining TDL XML Form files (i.e.,
including all Standard and manufacturer referenced XML file
segments or referenced TDLs).
number Publishes the Decade number in The Decade number, ranging from 0 to 203. This number shall be
the section heading. used as a substitute for the Decade name in an arithmetic
expression. Decade numbers shall be unique for one End Device
class, just like Decade names.
label Published in the Decade section A textual label used to label the container in a graphic context. It
header. shall be incorporated in the description of the Decade in the
Standard.
16208

Annex I / TDL XML File Format of the TDL Document 479


<decade> Element (Child of <tdl>)
DRAFT ANSI C12.19-2012

16209 I.2.23.3 <decade> Document Form

16210 Introduces a Decade section whose name is obtained from the name attribute, number from the number attribute,
16211 and description from the <description> element. Following the Decade description, the Decade scope type
16212 definition syntax and type descriptions are presented, followed by the Tables defined in the Decade. The Tables
16213 shall be ordered in increasing table number.

16214 Decades shall be ordered in increasing Decade number.

16215 Example: Given the XML text below:

16216 <decade name="DATA_SOURCE_DEC" number="1" label="Data Source Tables">


16217 <description>This Decade contains tables associated with data sources.</description>
16218 …
16219 </decade>

16220 The following may be a partial output generated by a TDL processor in the description section:

16221 9.2 Decade 1: Data Source Tables

16222 This Decade contains tables associated with data sources.

16223 …

16224 Identifier Value Definition

16225 DATA_SOURCE_DEC 1 Implicit numerical constant designation for Data


16226 Source Tables number.
16227

16228 I.2.24 <table> Element (Child of <tdl> or <decade>)

16229 The <table> Element introduces a Table definition and a Table scope. All types (see <packedRecord>, <bitField>,
16230 and <enumerator> elements) defined inside a table scope are local to the table’s scope without conflict with any
16231 other type that may be defined in any other scope.

16232 I.2.24.1 <table> DTD

16233 <!ELEMENT table ((description, extension?)?, (enumerator | packedRecord | bitField | assert)*)>


16234 <!ATTLIST table
16235 name CDATA #REQUIRED
16236 number CDATA #REQUIRED
16237 label CDATA #IMPLIED
16238 type CDATA #REQUIRED
16239 role (UNDEFINED | LIMITING | ACTUAL |
16240 CONTROL | DATA | PRIVATE) “UNDEFINED”
16241 associate CDATA #IMPLIED
16242 atomic ( true | false ) "false"
16243 accessibility (UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE | EXTERNAL)
16244 “READWRITE”
16245 deprecated (true | false) “false”
16246 metrological (true | false) “false”
16247 volatile (true | false | AUTO_AS_PER_ROLE) “AUTO_AS_PER_ROLE”>

480
DRAFT ANSI C12.19-2012

16248 class ((CDATA) | STD | STD.UDT | STD.EUDT) “STD”>

16249 I.2.24.2 <table> Attributes

Name Document Form Equivalent Description


name Publishes a new section heading The table identifier encoded as BNF.tblIdentifier. This identifier
for the named table. Optionally can be used to refer to the Table or be incorporated into a
publishes the table name in a reference to a component that was defined inside this Table.
manner that binds its name to its Table names shall be unique for one device class TDL definition
number. Then it publishes the (i.e., including all Standard and manufacturer referenced XML
table name in the syntax section. file segments or referenced TDLs).
number Publishes the Table number in The Table number, ranging from 0 to 2039. This number shall be
the section heading. Then it used as a substitute for the table name in arithmetic expressions.
publishes the table number in the Table numbers shall be unique within one Standard TDL or one
syntax section. Manufacturer device class TDL (i.e., Standard table numbers and
Manufacturer table numbers can be identical, since the
application uses TABLE_Id<x>_BFLD.MFG_FLAG and the
<tdl> deviceClass attribute to resolve this ambiguity).
label Published in the Table section A textual label used to label the container in a graphic context. It
header. shall be incorporated in the description of the table in the
Standard.
type Then it publishes the table type A reference to a packed record identifier whose type is mapped
in the syntax section. to this table according to G.6.1, “Scoping rules”.
role The text “Non-default An indication of the use case for this Table.
properties: role = value” in the
description of the Table shall be UNDEFINED (default): This End Device Table has no known
generated. role.

LIMITING: This End Device Table contains function control


limiting (FLC Table) values.

ACTUAL: This End Device Table contains actual function


limiting (FLC+1 Table) values.

CONTROL: This End Device Table contains control program


parameters.

DATA: This End Device Table contains data information or


sensor values.

PRIVATE: This End Device role is proprietary, and its purpose


was not disclosed.

When the volatile attribute is set to “AUTO_AS_PER_ROLE”,


then the following values shall be assumed for Table volatility as
follows:

role = “UNDEFINED” sets volatility to true.


role = “LIMITING” sets volatility to false.
role = “ACTUAL” sets volatility to false.
role = “CONTROL” sets volatility to false.
role = “DATA” sets volatility to true.
role = “PRIVATE” sets volatility to true.
associate The text “Associated with scope: A reference to a Decade identifier that represents the Decade
target” in the description of the associated with this table. A search for unqualified references to
Table shall be generated. packed records or bit fields that are not found in the local scope
of this table will continue in the associated decade scope, as if
this table were defined inside the associated Decade.

Annex I / TDL XML File Format of the TDL Document 481


<table> Element (Child of <tdl> or <decade>)
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


atomic The text “Non-default The Table is monolithic, when true. When communicating an
properties: Atomic = value” in atomic Table, it shall be transported and presented as one unit,
the description of the Table shall including all of its internal element members. The
be generated. communication protocol shall only utilize a full-table read or
full-table write service request when referencing this table.
accessibility The text “Non-default Implementer’s intended design for read and write access for a
properties: Accessibility = this Table. Possible values are:
value” in the description of the
Table shall be generated. READWRITE (default): This Table can be read or written from
or to the End Device.
READONLY: This Table can be read from or to the End Device
but not written.
WRITEONLY: This Table can be read or written from or to the
End Device. It contains one or more Elements that may not
read back exactly as written.
UNIMPLEMENTED: This Table is not implemented in this End
Device; therefore, it should not be listed in the
GEN_CONFIG_TABLE.
EXTERNAL: This Table is implemented in this End Device;
however, it is not accessible from the End Device. An
appropriate EDL XML document needs to be read externally
by the AMI application in order to determine the values
assumed by the Elements of this Table.

The default value is READWRITE.


deprecated The text Deprecated in the Indicates that this Table is deprecated and is likely to be removed
description of the Table shall be or renamed in a future release of the TDL. Default value is false.
generated.
metrological The text “Non-default An indication that this Table is metrological. Default value is
properties: Metrological = false.
value” in the description of the
Table shall be generated. Note that if any element within the Table is metrological, then
the entire table shall be metrological.
volatile The text “Non-default An indication of the Table’s volatility. When volatile is set to
properties: Volatile = value” in true, then the values of this Table may change between
the description of the Table shall consecutive Table reads, implying that the Table’s elements
be generated. should not be cached by the AMI application, as they may
change. When set to false, then it is an indication that this Table
is not likely to change between consecutive reads (assuming no
operator intervention); it is therefore safe for the AMI application
to cache the Table values.
When the volatile attribute is set to “AUTO_AS_PER_ROLE”
(default value), then the values of the Table’s attribute role
should be probed to determine the volatility of this Table.
class None. A tag that identifies an AMI Application run-time class (module)
that should be used to manage this Table. Currently, the
following Standard classes are defined:
STD (default value): Process the Table according to the default
actions called for those Tables by this Standard.
STD.UDT: To process User-defined Tables.
STD.EUDT: To process Extended User-defined Tables

The meter manufacturer may disclose special processing


algorithms and bind them to processing class names to facilitate
special data processing on select tables.
16250

482
DRAFT ANSI C12.19-2012

16251 I.2.24.3 <table> Document Form

16252 The <table> definitions are mapped to BNF.tableDefinition in a new Table section. All the Table scope defined
16253 (contained) descriptions, enumerators, packed records, and bit fields are published in this section.

16254 Example: Given the XML text below:

16255 <table name="TIME_REMAIN_TBL" number="56" type="TIME_REMAIN_RCD"


16256 label="Time remaining table" role=”DATA” atomic=”true” accessibility=”READONLY”>
16257 <description>
16258 <b>TIME_REMAIN_TBL</b> (Table 56) provides predictive time quantities.
16259 </description>
16260 <packedRecord name="TIME_REMAIN_RCD">
16261 <if condition="ACT_TIME_TOU_TBL.SEPARATE_SUM_DEMANDS_FLAG">
16262 <then>
16263 <element name="SUMM_TIER_TIME_REMAIN" type="UINT16">
16264 <description>
16265 Minutes remaining until the next tier change that
16266 affects summations. Used when the capability flag
16267 <b>ACT_TIME_TOU_TBL.
16268 SEPARATE_SUM_DEMANDS_FLAG</b> (Table 51) =
16269 TRUE.
16270 </description>
16271 </element>
16272 <element name="DEMAND_TIER_TIME_REMAIN" type="UINT16">
16273 <description>
16274 Minutes remaining before the next tier change that
16275 affects demands. Used when the capability flag
16276 <b>ACT_TIME_TOU_TBL.
16277 SEPARATE_SUM_DEMANDS_FLAG</b> (Table 51) =
16278 TRUE.
16279 </description>
16280 </element>
16281 </then>
16282 <else>
16283 <element name="TIER_TIME_REMAIN" type="UINT16">
16284 <description>
16285 Minutes remaining before the next tier change.
16286 </description>
16287 </element>
16288 </else>
16289 </if>
16290 <element name="SELF_READ_DAYS_REMAIN" type="UINT8">
16291 <description>
16292 Days remaining before the next scheduled Self-read.
16293 </description>
16294 </element>
16295 </packedRecord>
16296 </table>

16297
16298

16299

Annex I / TDL XML File Format of the TDL Document 483


<table> Element (Child of <tdl> or <decade>)
DRAFT ANSI C12.19-2012

16300 The following may be the output generated by a TDL processor in the new Table section:

16301 9.6.7 Table 56 Time Remaining Table

16302 Table 56 Description

16303 TIME_REMAIN_TBL (Table 56) provides predictive time quantities.

16304 Table 56 Non-default properties: Atomic = true, Role = DATA, Accessibility = READONLY.

16305 Table 56 Type Definitions

16306 TYPE TIME_REMAIN_RCD = PACKED RECORD


16307 IF ACT_TIME_TOU_TBL.SEPARATE_SUM_DEMANDS_FLAG THEN
16308 SUMM_TIER_TIME_REMAIN : UINT16;
16309 DEMAND_TIER_TIME_REMAIN : UINT16;
16310 ELSE
16311 TIER_TIME_REMAIN : UINT16;
16312 END;
16313 SELF_READ_DAYS_REMAIN : UINT8;
16314 END;

16315 TABLE 56 TIME_REMAIN_TBL = TIME_REMAIN_RCD;

16316 Table 56 Element Descriptions

16317 Identifier Value Definition

16318 TIME_REMAIN_RCD
16319 SUMM_TIER_TIME_REMAIN 0..65535 Minutes remaining until the next tier change that
16320 affects summations. Used when the capability flag
16321 ACT_TIME_TOU_TBL.
16322 SEPARATE_SUM_DEMANDS_FLAG (Table 51)
16323 = TRUE.

16324 DEMAND_TIER_TIME_REMAIN
16325 0..65535 Minutes remaining before the next tier change that
16326 affects demands. Used when the capability flag
16327 ACT_TIME_TOU_TBL.
16328 SEPARATE_SUM_DEMANDS_FLAG (Table 51)
16329 = TRUE.

16330 TIER_TIME_REMAIN 0..65535 Minutes remaining before the next tier change.

16331 SELF_READ_DAYS_REMAIN 0..255 Days remaining before the next scheduled Self-read.

16332 I.2.25 <procedure> Element (Child of <tdl> or <decade>)

16333 The <procedure> element introduces a procedure definition that maps to BNF.procDefinition and creates a
16334 Procedure scope. All types defined inside a procedure scope are local to the procedure’s scope without conflict with
16335 all other types that may be defined in any other scope. In addition to providing yet another scope, procedure
16336 elements also provide implicit instructions to construct the parameters and the response elements in Table 7,
16337 PROC_INITIATE_TBL, and Table 8, PROC_RESP_TBL (see G.14, “Procedures”, for details).

484
DRAFT ANSI C12.19-2012

16338 I.2.25.1 <procedure> DTD

16339 <!ELEMENT procedure ((description, extension?)?, (enumerator | packedRecord | bitField | assert)*, extend?,
16340 extend?)>
16341 <!ATTLIST procedure
16342 name CDATA #REQUIRED
16343 number CDATA #REQUIRED
16344 label CDATA #IMPLIED
16345 associate CDATA #IMPLIED>
16346 atomic ( true | false ) "true"
16347 accessibility (UNIMPLEMENTED | WRITEONLY | READWRITE)
16348 “READWRITE”
16349 deprecated (true | false) “false”
16350 metrological (true | false) “false”
16351 class ((CDATA) | STD) “STD”>

16352 I.2.25.2 <procedure> Attributes

Name Document Form Equivalent Description


name Publishes a new section heading The Procedure identifier encoded as BNF.procIdentifier. This
for the named procedure. identifier can be used to refer to the procedure or be incorporated
Optionally publishes the into a reference to a component that was defined inside this
procedure name in a manner that Procedure. Procedure names shall be unique for one End Device
binds its name to its number. class TDL definition (i.e., including all Standard and
Then it publishes the procedure Manufacturer referenced XML file segments or referenced
name in the syntax section of TDLs).
Table 7 and Table 8.
number Publishes the Procedure number The Procedure number, ranging from 0 to 2039. This number
in the section heading. Then it shall be used as a substitute for the procedure name in arithmetic.
publishes the procedure number This number shall also be used in generating the unique index
in the syntax section. for references to procedure parameters (see
STD:PROC_INITIATE_TBL.
(STANDARD|MANUFACTURER).PARM.
PROC_DATA_<procedure number>) and response data (see
PROC_RESPONSE_TBL.(STANDARD|MANUFACTURER).
RESP_DATA.PROC_DATA_<procedure number>). Procedure
numbers shall be unique within one Standard TDL or one
Manufacturer device class TDL (i.e., Standard procedure numbers
and Manufacturer procedure numbers can be identical, since the
application uses PROC_INITIATE_TBL.PROC.MFG_FLAG and
the <tdl> deviceClass attribute to resolve this ambiguity).
Note that the application shall allocate procedure indices
implicitly in PROC_INITIATE_TBL and
PROC_RESPONSE_TBL for all procedures that are not
explicitly identified in an extend attribute.
label Published in the Procedure A textual label used to label the container in a graphic context. It
section header. shall be incorporated in the description of the procedure in the
Standard.
associate The text “Associated with A reference to a Decade identifier that represents the Decade
scope: target” in the description associated with this procedure. A search for unqualified
of the Procedure shall be references to packed records or bit fields that are not found in the
generated. local scope of this procedure will continue in the associated
decade scope, as if this procedure were defined inside the
associated Decade.

Annex I / TDL XML File Format of the TDL Document 485


<procedure> Element (Child of <tdl> or <decade>)
DRAFT ANSI C12.19-2012

atomic The text “Non-default The Procedure is monolithic, when true. When communicating
properties: Atomic = value” in an atomic Procedure, it shall be transported and presented as one
the description of the Procedure unit, including all of its internal element members. The
shall be generated. communication protocol shall only utilize a full-table read or full-
table write service request when referencing this procedure via
Table 7 or Table 8.
accessibility The text “Non-default Implementer’s intended design for read and write access for this
properties: Accessibility = Procedure. Possible values are:
value” in the description of the
Procedure shall be generated. READWRITE (default): This Procedure (Table 7 and Table 8)
can be read or written from or to the End Device.
WRITEONLY: This Procedure can be read or written from or to
the End Device. It contains one or more Elements that may
not read back exactly as written.
UNIMPLEMENTED: This Procedure is not implemented in this
End Device; therefore, it should not be listed in
GEN_CONFIG_TABLE.

The default value is READWRITE.


deprecated The text Deprecated in the Indicates that this Procedure is deprecated and is likely to be
description of the Procedure removed or renamed in a future release of the TDL. Default value
shall be generated. is false.
metrological The text “Non-default An indication that this Procedure is metrological. Default value is
properties: Metrological = false.
value” in the description of the
Procedure shall be generated. Note that if any element within the Procedure is metrological,
then the entire procedure shall be metrological.
class None. A tag that identifies an AMI Application run-time class (module)
that should be used to manage this Procedure. Currently, the
following Standard classes are defined:
STD (default value): Process the Procedure according to the
default actions called for those Procedures by this Standard.

The meter manufacturer may disclose special processing


algorithms and bind them to processing class names to facilitate
special data processing on select procedures.
16353

16354 I.2.25.3 <procedure> Document Form

16355 The <procedure> definitions are mapped to BNF.procDefinition in a new Procedure section. All the Procedure
16356 scope defined (contained) descriptions, enumerators, packed records, and bit fields are published in this section.

16357 Example: Given the XML text below:

16358 <procedure name="UPDATE_LAST_READ_ENTRY_PROC" number="5"


16359 label="Update Last Read Entry">
16360 <description>
16361 When invoked, the End Device attempts to reduce the list Element
16362 <b>NBR_UNREAD_ENTRIES</b> by the value specified. To execute this procedure,
16363 the initiator shall in addition be required to have access to the procedure and
16364 write access to the table containing the selected list(s).
16365 </description>
16366 <packedRecord name="PARM_DATA_RCD">
16367 <element name="LIST" type="UINT8"
16368 enumerator="RESET_LIST_POINTERS_PROC.LIST_ENUM">
16369 <description>List selected.</description>

486
DRAFT ANSI C12.19-2012

16370 </element>
16371 <element name="ENTRIES_READ" type="UINT16">
16372 <description>Number of entries confirmed.</description>
16373 </element>
16374 </packedRecord>
16375 <extend type="UPDATE_LAST_READ_ENTRY_PROC.PARM_DATA_RCD"
16376 target="PROC_INITIATE_TBL.STD_PARM_RCD"/>
16377 </procedure>

16378 The following may be the output generated by a TDL processor in the new Procedure section:

16379 9.1.8.1.6 Procedure 05: Update Last Read Entry

16380 Procedure 05 Description

16381 When this procedure is invoked, the End Device attempts to reduce the list Element NBR_UNREAD_ENTRIES by
16382 the value specified. To execute this procedure, the initiator shall in addition be required to have access to the
16383 procedure and write access to the table containing the selected list(s).

16384 Procedure 05 Type Definitions

16385 TYPE UPDATE_LAST_READ_ENTRY_RCD = PACKED RECORD


16386 LIST : UINT8;
16387 ENTRIES_READ : UINT16;
16388 END;

16389 PROCEDURE 5 UPDATE_LAST_READ_ENTRY_PROC


16390 REQUEST = UPDATE_LAST_READ_ENTRY_PROC.UPDATE_LAST_READ_ENTRY_RCD;

16391 Procedure 05 Element Descriptions

16392 Identifier Value Definition

16393 UPDATE_LAST_READ_ENTRY_RCD
16394 LIST List selected. See
16395 RESET_LIST_POINTERS_PROC.LIST_ENUM.

16396 ENTRIES_READ 0..65535 Number of entries confirmed.

16397 I.2.26 <extend> Element (Child of <procedure>)

16398 The extend element within the procedure element introduces parameter and response field extensions to Table 7,
16399 STD.PROC_INITIATE_TBL, and Table 8, STD.PROC_RESP_TBL, respectively. When an extension is not
16400 provided, then the value of the PARM or RESP is NIL.

16401 I.2.26.1 <extend> DTD definition

16402 <!ELEMENT extend (description, extension?)?>


16403 <!ATTLIST extend
16404 type CDATA #REQUIRED
16405 target CDATA #REQUIRED
16406 strict ( true | false ) "true">

Annex I / TDL XML File Format of the TDL Document 487


<extend> Element (Child of <procedure>)
DRAFT ANSI C12.19-2012

16407 I.2.26.2 <extend> Attributes

Name Table Document Equivalent Description


type The name of the packed record A reference to a packed record identifier whose type is being
that is used to define the used to extend PROC_INITIATE_TBL.STD_PARM_RCD or
procedure response or request PROC_RESPONSE_TBL.STD_RESP_RCD (subject to the
parameters is published in the target selected).
syntax section. The type reference should be encoded as BNF.rcdReference in a
manner that it can be resolved completely and correctly in the
scope of Table 7 and Table 8.
target None. A reference to a target (remote) packed record identifier that is
encoded as BNF.rcdReference whose type is being extended.
Although it is possible to reference any type, this implementation
restricts the resolved reference only to:
PROC_INITIATE_TBL.STD_PARM_RCD or
PROC_RESPONSE_TBL.STD_RESP_RCD (subject to the
target selected).

Target data type being extended


strict Suffix the term “reference is When a target extension record is created, the search rule for the
strict” to the description of the target type will be strict (if strict is set to true, the default value)
Procedure in reference to the or not strict (if the strict attribute is set to false). A strict search
request or response parameters. requires that the implied or explicit target scope can only contain
the extended type. A nonstrict search simply requires that the
implied or explicit target scope search be searched first and then
the search continues following the End Device scope hierarchy.
The first encounter of the target type within any of the parent
scopes will be considered a match for the sought extension.
16408

16409 I.2.26.3 <extend> Document Form

16410 See the example in definition I.2.25.3, “<procedure> Document Form”. For more discussion and examples, see
16411 G.14, “Procedures”.

16412 I.2.27 <qualify> Element (Child of <tdl>)

16413 The qualify element enables the Standard and the End Device Manufacturer extensions to the Standard to provide
16414 additional information about decades, tables, and procedures as a whole or about single elements that are defined
16415 within. General qualifications can be provided by the Standard (as published in C12.19). These are considered to be
16416 suggestions to implementers. Additional qualifications or re-qualifications can be provided by manufactures when
16417 they register the device classes (new meter models) to describe the actual restrictions, capabilities, and features of
16418 their device. Therefore, a manufacturer device class can add, replace, or extend any Standard qualification.

16419 I.2.27.1 <qualify> DTD

16420 <!ELEMENT qualify (table | procedure | element | packedRecord | bitField | assert)*>

16421 I.2.27.2 <qualify> Attributes

16422 None.

16423 I.2.27.3 <qualify> Document Form

16424 When expressing the qualified information in Document form as part of the Standard, then it shall document the
16425 corresponding types, Tables, and Elements where defined, inline, as if the types, Tables, or Elements were qualified

488
DRAFT ANSI C12.19-2012

16426 at the definition time. When expressing the qualified information in Document form as part of a specific End Device
16427 registration, then it shall document the corresponding changes to types, Tables, and Elements in a tabular form that
16428 identifies the components affected and the nature of the qualification applied.

16429 I.2.28 <table> element (Child of <qualify> element)

16430 Qualifies the properties of a predefined Table. Any supplied attribute value acts to override the value set at
16431 definition time. For example, if a Table is defined to be atomic (atomic=“true”) and it is re-qualified as
16432 atomic=“false”, then it is no longer atomic.

16433 I.2.28.1 <table> DTD definition

16434 <!ELEMENT table (description, extension?)? >


16435 <!ATTLIST table
16436 name CDATA #REQUIRED
16437 alias CDATA #IMPLIED
16438 atomic ( true | false ) "#IMPLIED"
16439 accessibility ( UNIMPLEMENTED | EXTERNAL | READONLY | WRITEONLY | READWRITE )
16440 #IMPLIED
16441 class CDATA #IMPLIED
16442 role ( UNDEFINED | LIMITING | ACTUAL | CONTROL | DATA | PRIVATE )
16443 #IMPLIED
16444 volatile ( AUTO-AS-PER-TYPE | true | false ) #IMPLIED
16445 metrological ( true | false ) #IMPLIED
16446 deprecated ( true | false ) #IMPLIED>

16447 I.2.28.2 <table> Attributes

Name Table Document Equivalent Description


name The table identifier encoded as BNF.tblIdentifier. This identifier
shall refer to an already defined Table.
alias Publishes the fact that name is An alias is an alternative name for a table. This name can be used
“also known as” alias. to address the named table. Each instance of an entry with an
alias attribute will add a new alias for the table name list.
atomic See atomic attribute of <tdl>/<table> and| <decade>/<table>.
accessibility See accessibility attribute of <tdl>/<table> and
<decade>/<table>.
class See class attribute of <tdl>/<table> and <decade>/<table>.
role See role attribute of <tdl>/<table> | <decade>/<table>.
volatile See volatile attribute of <tdl>/<table> and <decade>/<table>.
metrological See metrological attribute of <tdl>/<table> and
<decade>/<table>.
deprecated See deprecated attribute of <tdl>/<table> and
<decade>/<table>.
16448

16449 I.2.29 <procedure> Element (Child of <qualify>)

16450 Qualifies the properties of a predefined Procedure. Any supplied attribute value acts to override the value set at
16451 definition time.

16452

Annex I / TDL XML File Format of the TDL Document 489


<table> element (Child of <qualify> element)
DRAFT ANSI C12.19-2012

16453 I.2.29.1 <procedure> DTD

16454 <!ELEMENT procedure (description, extension? )?>


16455 <!ATTLIST procedure
16456 name CDATA #REQUIRED
16457 alias CDATA #IMPLIED
16458 atomic ( true | false ) #IMPLIED
16459 accessibility ( UNIMPLEMENTED | WRITEONLY | READWRITE )
16460 #IMPLIED
16461 metrological ( true | false ) #IMPLIED
16462 deprecated ( true | false ) #IMPLIED >

16463 I.2.29.2 <procedure> Attributes

Name Table Document Equivalent Description


name The procedure identifier encoded as BNF.procIdentifier. This
identifier shall refer to an already defined Procedure.
alias Publishes the fact that name is An alias is an alternative name for a procedure. This name can be
“also known as” alias. used to address the named procedure. Each instance of an entry
with an alias attribute will add a new alias for the procedure
name list.
atomic See atomic attribute of <tdl>/<procedure> and <decade>/<
procedure >.
accessibility See accessibility attribute of <tdl>/<procedure> and
<decade>/<procedure>.
metrological See metrological attribute of <tdl>/<procedure> and <decade>/<
procedure >.
deprecated See deprecated attribute of <tdl>/<procedure> and
<decade>/<procedure>.
16464

16465 I.2.30 <element> Element (Child of <qualify>)

16466 Qualifies the properties of a predefined Table Element. Any supplied attribute value acts to override the value set at
16467 definition time.

16468 I.2.30.1 <element> DTD

16469 <!ELEMENT element (description, extension? )?>


16470 <!ATTLIST element
16471 name CDATA #REQUIRED
16472 alias CDATA #IMPLIED
16473 atomic (JOIN | true | false ) #IMPLIED
16474 accessibility (UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE )
16475 #IMPLIED
16476 metrological ( true | false ) #IMPLIED
16477 volatile ( AUTO-AS-PER-TYPE | true | false )
16478 #IMPLIED
16479 deprecated ( true | false ) #IMPLIED>

490
DRAFT ANSI C12.19-2012

16480 I.2.30.2 <element> Attributes

Name Table Document Equivalent Description


name The element identifier encoded as BNF.
elementIdentifierReference. This identifier shall refer to an
already defined Element or Final Element of a defined Packed
Record or Bit Field.
alias Publishes the fact that name is An alias is an alternative name for an Element or Final Element.
“also known as” alias. This name can be used to address this attribute or final element.
The alias applies to the tail end of the element identified. Each
instance of this element with an alias attribute adds an alias to the
alias list for this element.
atomic See atomic attribute of <element>, <subElement>, <array> or
<set>.
accessibility See accessibility attribute of <element>, <subElement>, <array>
or <set>.
metrological See metrological attribute of <element>, <subElement>, <array>
or <set>.
volatile See volatile attribute of <element>, <subElement>, <array> or
<set>.
deprecated See accessibility attribute of <element>, <subElement>, <array>
or <set>.
16481

16482 I.2.31 <packedRecord> Element (Child of <qualify>)

16483 Qualifies the properties of a predefined PACKED RECORD type. Any supplied attribute value acts to override the
16484 value set at definition time.

16485 I.2.31.1 <packedRecord> DTD

16486 <!ELEMENT packedRecord (description, extension? )?>


16487 <!ATTLIST packedRecord
16488 name CDATA #REQUIRED
16489 atomic ( true | false ) "#IMPLIED"
16490 accessibility ( READONLY | WRITEONLY | READWRITE ) "#IMPLIED"
16491 metrological ( true | false ) #IMPLIED
16492 deprecated ( true | false ) "#IMPLIED">

16493 I.2.31.2 Attributes

Name Table Document Equivalent Description


name The PACKED RECORD type identifier encoded as
BNF.rcdReference. This identifier shall refer to an already
defined packed record.
atomic See atomic attribute of <packedRecord>.
accessibility See accessibility attribute of <packedRecord>.
metrological See metrological attribute of <packedRecord>.
deprecated See deprecated attribute of <packedRecord>.
16494

16495 I.2.32 <bitField> Element (Child of <qualify>)

16496 Qualifies the properties of a predefined BIT FIELD type. Any supplied attribute value acts to override the value set
16497 at definition time.

Annex I / TDL XML File Format of the TDL Document 491


<packedRecord> Element (Child of <qualify>)
DRAFT ANSI C12.19-2012

16498 I.2.32.1 <bitField> DTD

16499 <!ELEMENT bitField (description, extension? )?>


16500 <!ATTLIST bitField
16501 name CDATA #REQUIRED
16502 atomic ( true ) "true"
16503 accessibility ( READONLY | WRITEONLY | READWRITE ) "#IMPLIED"
16504 deprecated ( true | false ) "#IMPLIED">

16505 I.2.32.2 <bitField> Attributes

Name Table Document Equivalent Description


name The BIT FIELD type identifier encoded as BNF.bfldReference.
This identifier shall refer to an already defined bit field.
atomic See atomic attribute of <bitField>.
accessibility See accessibility attribute of < bitField >.
metrological See metrological attribute of < bitField >.
deprecated See deprecated attribute of < bitField >.

16506 I.2.33 <assert> Element (Child of <qualify>)

16507 The assert element is provided to document additional relationships among Table and Elements to enable application
16508 alert processing.

16509 I.2.33.1 <assert> DTD

16510 <!ELEMENT assert ((description, extension? )?, condition+)>


16511 <!ATTLIST assert
16512 raise (ERROR | WARN | INFO) “ERROR”
16513 text CDATA #REQUIRED>

16514 <!ELEMENT condition (#PCDATA)>

16515 I.2.33.2 <assert> Attributes

Name Document Form Equivalent Description


raise Indicates the type of assertion to be raised when the indicated
expression (see the condition element) evaluates to true.
text This is a short text message that will be generated when the
assertion is raised.

16516 I.3 EDL XML Format

16517 I.3.1 Overview

16518 The EDL XML Form is described in this subclause. It is an expression of the TDL/EDL architecture described in
16519 I.2. The EDL XML Form is used to express End Device data values that make up the device tables in a manner that
16520 is independent solely on the C12.19 Tables and independent of the communication protocol used to acquire them.
16521 The EDL XML Form provides the following features:

16522 a) XML encoding of Default Sets used values assigned to the Standard’s FLC and FLC+1 tables.

16523 b) XML encoding of constants or fixed values that may be assigned to select elements within Standard Tables
16524 by the Standard.

492
DRAFT ANSI C12.19-2012

16525 c) XML encoding of constant or fixed values that may be assigned to select elements of Standard or
16526 Manufacturer tables by the End Device manufacturer.

16527 d) XML encoding of Final Element values that were read from or written to an End Device by any
16528 communication protocol (e.g., C12.18, C12.21, or C12.22).

16529 The EDL XML Form file is associated with one specific End Device model; thus, it is uniquely associated with an
16530 End Device class. This property implies that the structure of the EDL file is derived from the data model of all tables
16531 (Standard and Manufacturer) and all procedures (Standard and Manufacturer) that are defined for that End Device
16532 class.

16533 The EDL XML Form can be validated by EDL schemas like C1219TDL-xxxx-EDLSchema.xsd (for exclusively
16534 Standard-based End Devices) or by augmented schemas like <MfgEdClass>-EDLSChema.xsd (for Manufacturer
16535 expansion on the Standard). In this context, xxxx stands for the Standard’s year of publication and <MfgEdClass> is
16536 the registered End Device class. These schemas can be automatically generated from the Standard and Manufacturer
16537 TDL XML Form using an XSL transform, such as the C1219TDLEDLTransform.xsl and related technology.

16538 Thereafter, Default Sets, constant values, and End Device communicated Final Element values can be imported and
16539 exported using the EDL XML Forms, like C1219TDL-xxxx-DefaultSet.xml or <MfgEdClass>.xml, where xxxx is
16540 the Standard’s year of publication and <MfgEdClass> is the registered End Device Class (although the use of
16541 <MfgEdClass> does not have to be encoded in the name of the EDL XML Form).

16542 The EDL XML Form file may also be processed to yield a printable EDL Document Form for inclusion in the
16543 Standard’s or manufacturer’s documentation.

16544 I.3.2 <edl> Root Element

16545 The <edl> element is a container of the End Device Default Sets, constants, and imported or exported Final Element
16546 data values. It provides some limited meta-data, such as Table name, Table number, Table source being the Standard
16547 or the Manufacturer, and the names of Final Elements and their index position within the containing packed record
16548 or bit field. The <edl> element also documents the End Device class attribute (deviceClass), which identifies the
16549 matching TDL XML Form file of that End Device class.

16550 A table’s subset document can describe Standard table definitions, extend (or revise) an existing Standard into a new
16551 Standard, or extend existing an Standard using Manufacturer-supplied extensions.

16552 There shall be only one <edl> element in an EDL XML Form file. The target EDL XML Form namespace and the
16553 EDL Schema namespace shall be derived uniquely from the End Device class registered via a TDL XML Form file.

16554 I.3.2.1 <edl> DTD

16555 The <edl> element has the following attributes and child elements.

16556 <!ELEMENT edl (description?, defaultSet*, data*)>


16557 <!ATTLIST edl
16558 xmlns[:name] CDATA #REQUIRED
16559 deviceClass CDATA #REQUIRED
16560 registry CDATA #IMPLIED
16561 isoBranch CDATA #IMPLIED
16562 standard CDATA #IMPLIED
16563 title CDATA #IMPLIED
16564 version CDATA #IMPLIED
16565 defaultSetUsed CDATA “0”>

Annex I / EDL XML Format 493


<edl> Root Element
DRAFT ANSI C12.19-2012

16566 I.3.2.2 <edl> Attributes

Name Document Form Equivalent Description


xmlns[:name] Not expressed in Document The reference EDL Schema namespaces used. One of these
Form. namespaces shall be identical to the target namespace of the EDL
XML validation schema as defined by its targetNamespace
attribute. That namespace shall be derived uniquely from the
registry and deviceClass attributes.
deviceClass In the Document Form heading The deviceClass defines the registered TDL for that End Device
section of the constant data, class. This is derived from the deviceClass attribute of the TDL
Default Sets or import/export root XML Form element.
data.
registry In the Document Form heading The name of the entity that is the registrar of this End Device
section of the constant data, class.
Default Sets or import/export
data.
isoBranch In the Document Form heading The ISO branch attribute associates a registry name with an ISO
section of the constant data, object directory branch. The deviceClass attribute is relative to
Default Sets or import/export this branch.
data.
standard In the Document Form heading The reference standard this End Device is based on. Example:
section, the name of the URI of “http://www.ansi.org/C1219TDL-2008.xml”. If the deviceClass
the referred standard is shown. attribute contains a Standard class, then this is a reference to
“self”.
The URI provided refers to a Standard that is the base document
for this EDL. When not provided, then no document is referred.
URI formats are as follows:
1) The Standard URI format is
http://www.ansi.org/C1219TDL-xxxx.xml, where xxxx is
the year.
2) URIs for TDL class files is
http://www.ansi.org/C1219TDL-x.x.x.x.xml, where x.x.x.x
is the registered device class (see deviceClass).
Viable alternatives for www.ansi.org are www.ieee.org and
www.ic.gc.ca.
version In the Document Form heading The version of this data set. This may be used as an indicator to
section of the constant data, an AMI application to provide for early identification of the
Default Sets or import/export nature of the EDL data sets contained within.
data.
title In the Document Form heading The text to display in a graphic context or at the beginning of the
section of the constant data, data document. Example: “ANSI C12.19-2008 Utility Industry
Default Sets or import/export Standard Table Default Sets”.
data.
defaultSetUsed In the Document Form heading The default set to use when the value of the final element
section of the constant data, GEN_CONFIG_TBL.DEFAULT_SET_USED is not explicitly
Default Sets or import/export available from this data set.
data.
16567

16568 I.3.2.3 <edl> Document Form

16569 A Default Set values section is introduced (when Default Sets are provided) or a new constants section is introduced
16570 (when constants are provided); otherwise a new End Device values section is introduced. The Default Sets section is
16571 Annex C, “(normative) Default Sets for Decade Tables”.

16572 I.3.3 <description> Element (Child of <edl>)

16573 The <description> element is an optional text-formatting element that accepts simple formatting directives. It
16574 provides a text area to document the EDL.
494
DRAFT ANSI C12.19-2012

16575 I.3.3.1 <description> DTD

16576 Identical to the DTD definition of the <description> element of the TDL XML Form.

16577 I.3.3.2 <description> Document Form

16578 The formatted text is produced.

16579 I.3.4 Pseudo Element Names

16580 In order to facilitate TDL XML Form driven Table names and Element names generation, the Standard introduces
16581 the BNF definitions for XML-element macro types. These need to be substituted for the actual names of the
16582 indicated content (in this case, an Element name). The following macros are defined:

16583 ${tableName} ::= BNF.tblIdentifier / constraint : text { The name of a Table obtained from the
16584 name attribute of a <table> element or ‘EUDT_TBL’. } /
16585 match : (‘/tdl//table/@name’ | ‘EUDT_TBL’);
16586 ${limitingTableName} ::= BNF.tblIdentifier / constraint : text { The name of a FCL+1 Table as obtained
16587 from the name attribute of a <table> element that is also
16588 qualified as “LIMITING”. } / match :
16589 ‘/tdl//table/@name[@role=“LIMITING”]’ ;
16590 ${elementName} ::= BNF.anyElementName
16591 / constraint : text { Any Element or Final Element that may
16592 be used as a component in the path that leads to a the value of
16593 a Final Element. } (
16594 / match : ‘/tdl//element/@name’ |
16595 / match : ‘/tdl//subElement/@name’ |
16596 / match : ‘/tdl//array/@name’ |
16597 / match : ‘/tdl//set/@name’ );

16598 For example, if the TDL XML Form contains entries like:

16599 <table name=“ACT_REGS_TBL” number=“21” type=“REGS_RCD” role=“LIMITING”


16600 …
16601 </table>
16602 <table name=“CURRENT_REG_DATA_TBL” number=“23” type=“REGISTER_DATA_RCD”
16603 …
16604 </table>

16605 then the pseudo-DTD definition

16606 <!ELEMENT ${tableName} (pendingHeader?, ${if-switch-clause}?, ${elementName}*)>


16607 <!ATTLIST ${tableName}
16608 source (standard | manufacturer) #IMPLIED
16609 instance (active | pending) “active”
16610 number CDATA #IMPLIED
16611 binary CDATA #IMPLIED >

16612 is a valid production rule for the above Table entries in an EDL file.

16613 <ACT_REGS_TBL source=“ standard” instance=“active” number=“21”> … </ACT_REGS_TBL>


16614 and
16615 <CURRENT_REG_DATA_TBL> … </CURRENT_REG_DATA_TBL>

Annex I / EDL XML Format 495


Pseudo Element Names
DRAFT ANSI C12.19-2012

16616 I.3.5 Resolving Second Edition XML Schema Constraints

16617 The release of the second edition of the states:

16618 “Schema Component Constraint: Element Declarations Consistent


16619
16620 If the {particles} contains, either directly, indirectly (that is, within the {particles} of a contained model
16621 group, recursively) or ·implicitly· two or more element declaration particles with the same {name} and
16622 {target namespace}, then all their type definitions must be the same top-level definition, that is, all of the
16623 following must be true:
16624 1 all their {type definition}s must have a non-·absent· {name}.
16625 2 all their {type definition}s must have the same {name}.
16626 3 all their {type definition}s must have the same {target namespace}.”
16627
16628 “Copyright © 2004 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research
16629 Consortium for Informatics and Mathematics, Keio University). All Rights Reserved.
16630 http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231.
16631
16632 This is a W3C Recommendation, which forms part of the Second Edition of XML Schema. This document has been
16633 reviewed by W3C Members and other interested parties and has been endorsed by the Director as a W3C
16634 Recommendation. It is a stable document and may be used as reference material or cited as a normative reference
16635 from another document. W3C's role in making the Recommendation is to draw attention to the specification and to
16636 promote its widespread deployment. This enhances the functionality and interoperability of the Web”.
16637 Ref: Section 3.8.6 Constraints on Model Group Schema Components, XML Schema Part 1: Structures Second
16638 Edition, W3C Recommendation 28 October 2004 (XMLSchema-2004).

16639 I.3.5.1 The Schema Constraints Problem

16640 The following resolution may provide some relief in some implementation; however, it does not provide a universal
16641 resolution to the uniqueness constraint in all implementations. The root cause is that in this standard it is possible to
16642 define different Element types for Elements that have a same name within a given hierarchy level in a Table
16643 definition. For this reason, and to provide relief, it shall be permissible for implementers not to enforce the rule
16644 described below and not to enforce the EDL schema uniqueness constraint on element types.

16645 ANSI C12.19 promotes the construction of types that do not meet the above constraint. The Schema Component
16646 Constraint violation can be seen clearly in the definition of Table 5, Device Identification Table.

16647 TYPE IDENT_RCD = PACKED RECORD


16648 IF GEN_CONFIG_TBL.ID_FORM != 0 THEN
16649 IDENTIFICATION : BCD(10);
16650 ELSE
16651 IDENTIFICATION : STRING(20);
16652 END;
16653 END;

16654 TABLE 5 DEVICE_IDENT_TBL = IDENT_RCD;

16655 It is rather obvious that this table contains the Element IDENTIFICATION, which repeats two times in the same
16656 packed record. Also, each IDENTIFICATION definition has different types.

16657 This problem can only manifest itself in elements delimited by IF / THEN / ELSE or SWITCH / CASE /
16658 DEFAULT statements (see Document Form syntax).

496
DRAFT ANSI C12.19-2012

16659 I.3.5.2 Resolution of The Schema Constraints Problem

16660 The EDL XML form definition introduces the macro notation ${if-switch-clause} to be used ahead of any collection
16661 of EDL elements that are derived from TDL elements contained within a <then>…</then>, <else>…</else>,
16662 <case>…</case>, or <default>…</default> members of the <if> and <switch> XML elements. Each instance of the
16663 ${if-switch-clause} has to be unique so that the Schema Component Constraint is not violated. Otherwise this
16664 element shall be ignored by all processors.

16665 ${if-switch-clause} ::= ((‘if-then‘ | ‘if-else’ | ‘switch-case’ | ‘switch-default’) ‘-‘ BNF.number) /

16666 constraint : text { Each instance of this element shall be automatically generated
16667 by the EDL processor so that the Schema Component Constraint is not violated. } ;

16668 I.3.6 <${if-switch-clause}> Element

16669 The <${if-switch-clause}> element is optional unless its absence can lead to a Schema Component Constraint
16670 violation.

16671 I.3.6.1 <${if-switch-clause}> DTD

16672 <!ELEMENT ${if-switch-clause} EMPTY>

16673 Using the above DEVICE_IDENT_TBL example, it can be demonstrated that the following XML EDL file
16674 element names are uniquely consistent with the XML schema constraint rules.

16675 Case 1:

16676 <edl …>


16677 <data>
16678 <DEVICE_IDENT_TBL>
16679 <if-then-1/> <!--See ${if-switch-clause} -->
16680 <IDENTIFICATION index="0">10-20-30</IDENTIFICATION >
16681 </DEVICE_IDENT_TBL>
16682 </data>
16683 </edl>

16684 Case 2:

16685 <edl …>


16686 <data>
16687 <DEVICE_IDENT_TBL>
16688 <if-else-1/> <!--See ${if-switch-clause} -->
16689 <IDENTIFICATION index="1">MY BEST METER</IDENTIFICATION >
16690 </DEVICE_IDENT_TBL>
16691 </data>
16692 </edl>

16693 I.3.7 <defaultSet> Element (Child of <edl>)

16694 The <defaultSet> element is an optional Standards placeholder for up to 254 Default Sets (1..255). Each default set
16695 provides information about the End Device FLC+1 Tables and assumed values.

Annex I / EDL XML Format 497


<${if-switch-clause}> Element
DRAFT ANSI C12.19-2012

16696 I.3.7.1 <defaultSet> DTD

16697 <!ELEMENT defaultSet (${limitingTableName}*)>

16698 <!ATTLIST defaultSet


16699 number CDATA #REQUIRED>

16700 I.3.7.2 <defaultSet> Attributes

Name Document Form Equivalent Description


number Label for the default set number The number of the default set presented by the <defaultSet>
column. parent element. For more details, see GEN_CONFIG_TBL.
DEFAULT_SET_USED.
16701

16702 I.3.7.3 <defaultSet> Document Form

16703 A tabulation of all Final Elements listed as one column for the table indicated by the ${limitingTableName}
16704 attribute per default set number indicated by the number attribute. These are sorted first by table number followed
16705 by the element index.

16706 Given the XML text below:

16707 <edl …>


16708 <description>
16709 <i>The following values are assigned to the Decade and Decade+1 table values
16710 based on the value of the Table 00 element <b>DEFAULT_SET_USED</b></i>.
16711 </description>
16712 <defaultSet number="1">
16713 <ACT_SOURCES_LIM_TBL>
16714 <SOURCE_FLAGS>
16715 <PF_EXCLUDE_FLAG>false</PF_EXCLUDE_FLAG>
16716 <RESET_EXCLUDE_FLAG>false</RESET_EXCLUDE_FLAG>
16717 <BLOCK_DEMAND_FLAG>false</BLOCK_DEMAND_FLAG>
16718 <SLIDING_DEMAND_FLAG>false</SLIDING_DEMAND_FLAG>
16719 <THERMAL_DEMAND_FLAG>false</THERMAL_DEMAND_FLAG>
16720 <SET1_PRESENT_FLAG>false</SET1_PRESENT_FLAG>
16721 <SET2_PRESENT_FLAG>false</SET2_PRESENT_FLAG>
16722 <FILLER>0</FILLER>
16723 </SOURCE_FLAGS>
16724 <NBR_UOM_ENTRIES>0</NBR_UOM_ENTRIES>
16725 <NBR_DEMAND_CTRL_ENTRIES>0</NBR_DEMAND_CTRL_ENTRIES>
16726 <DATA_CTRL_LENGTH>1</DATA_CTRL_LENGTH>
16727 <NBR_DATA_CTRL_ENTRIES>1</NBR_DATA_CTRL_ENTRIES>
16728 <NBR_CONSTANTS_ENTRIES>1</NBR_CONSTANTS_ENTRIES>
16729 <CONSTANTS_SELECTOR>2</CONSTANTS_SELECTOR>
16730 <NBR_SOURCES>1</NBR_SOURCES>
16731 </ACT_SOURCES_LIM_TBL>
16732 …
16733 </defaultSet>
16734 <defaultSet number="2">
16735 <ACT_SOURCES_LIM_TBL>
16736 <SOURCE_FLAGS>
16737 <PF_EXCLUDE_FLAG>false</PF_EXCLUDE_FLAG>

498
DRAFT ANSI C12.19-2012

16738 <RESET_EXCLUDE_FLAG>true</RESET_EXCLUDE_FLAG>
16739 <BLOCK_DEMAND_FLAG>true</BLOCK_DEMAND_FLAG>
16740 <SLIDING_DEMAND_FLAG>false</SLIDING_DEMAND_FLAG>
16741 <THERMAL_DEMAND_FLAG>false</THERMAL_DEMAND_FLAG>
16742 <SET1_PRESENT_FLAG>false</SET1_PRESENT_FLAG>
16743 <SET2_PRESENT_FLAG>false</SET2_PRESENT_FLAG>
16744 <FILLER>0</FILLER>
16745 </SOURCE_FLAGS>
16746 <NBR_UOM_ENTRIES>0</NBR_UOM_ENTRIES>
16747 <NBR_DEMAND_CTRL_ENTRIES>1</NBR_DEMAND_CTRL_ENTRIES>
16748 <DATA_CTRL_LENGTH>1</DATA_CTRL_LENGTH>
16749 <NBR_DATA_CTRL_ENTRIES>2</NBR_DATA_CTRL_ENTRIES>
16750 <NBR_CONSTANTS_ENTRIES>1</NBR_CONSTANTS_ENTRIES>
16751 <CONSTANTS_SELECTOR>2</CONSTANTS_SELECTOR>
16752 <NBR_SOURCES>2</NBR_SOURCES>
16753 </ACT_SOURCES_LIM_TBL>
16754 …
16755 </defaultSet>
16756 <defaultSet number="3">
16757 <ACT_SOURCES_LIM_TBL>
16758 <SOURCE_FLAGS>
16759 <PF_EXCLUDE_FLAG>true</PF_EXCLUDE_FLAG>
16760 <RESET_EXCLUDE_FLAG>true</RESET_EXCLUDE_FLAG>
16761 <BLOCK_DEMAND_FLAG>true</BLOCK_DEMAND_FLAG>
16762 <SLIDING_DEMAND_FLAG>false</SLIDING_DEMAND_FLAG>
16763 <THERMAL_DEMAND_FLAG>false</THERMAL_DEMAND_FLAG>
16764 <SET1_PRESENT_FLAG>false</SET1_PRESENT_FLAG>
16765 <SET2_PRESENT_FLAG>false</SET2_PRESENT_FLAG>
16766 <FILLER>0</FILLER>
16767 </SOURCE_FLAGS>
16768 <NBR_UOM_ENTRIES>0</NBR_UOM_ENTRIES>
16769 <NBR_DEMAND_CTRL_ENTRIES>3</NBR_DEMAND_CTRL_ENTRIES>
16770 <DATA_CTRL_LENGTH>1</DATA_CTRL_LENGTH>
16771 <NBR_DATA_CTRL_ENTRIES>2</NBR_DATA_CTRL_ENTRIES>
16772 <NBR_CONSTANTS_ENTRIES>1</NBR_CONSTANTS_ENTRIES>
16773 <CONSTANTS_SELECTOR>2</CONSTANTS_SELECTOR>
16774 <NBR_SOURCES>2</NBR_SOURCES>
16775 </ACT_SOURCES_LIM_TBL>
16776 …
16777 </defaultSet>
16778 <defaultSet number="4">
16779 <ACT_SOURCES_LIM_TBL>
16780 <SOURCE_FLAGS>
16781 <PF_EXCLUDE_FLAG>false</PF_EXCLUDE_FLAG>
16782 <RESET_EXCLUDE_FLAG>false</RESET_EXCLUDE_FLAG>
16783 <BLOCK_DEMAND_FLAG>true</BLOCK_DEMAND_FLAG>
16784 <SLIDING_DEMAND_FLAG>false</SLIDING_DEMAND_FLAG>
16785 <THERMAL_DEMAND_FLAG>false</THERMAL_DEMAND_FLAG>
16786 <SET1_PRESENT_FLAG>false</SET1_PRESENT_FLAG>
16787 <SET2_PRESENT_FLAG>false</SET2_PRESENT_FLAG>
16788 <FILLER>0</FILLER>
16789 </SOURCE_FLAGS>
16790 <NBR_UOM_ENTRIES>0</NBR_UOM_ENTRIES>
16791 <NBR_DEMAND_CTRL_ENTRIES>1</NBR_DEMAND_CTRL_ENTRIES>
16792 <DATA_CTRL_LENGTH>1</DATA_CTRL_LENGTH>
Annex I / EDL XML Format 499
<defaultSet> Element (Child of <edl>)
DRAFT ANSI C12.19-2012

16793 <NBR_DATA_CTRL_ENTRIES>2</NBR_DATA_CTRL_ENTRIES>
16794 <NBR_CONSTANTS_ENTRIES>1</NBR_CONSTANTS_ENTRIES>
16795 <CONSTANTS_SELECTOR>2</CONSTANTS_SELECTOR>
16796 <NBR_SOURCES>2</NBR_SOURCES>
16797 </ACT_SOURCES_LIM_TBL>
16798 …
16799 </defaultSet>
16800 </edl>

16801 The following may be a partial tabular output generated by an EDL processor:

16802 The following values are assigned to the Decade and Decade+1 table values based on the value of the TABLE 00
16803 Element DEFAULT_SET_USED.

Final Element Name DEFAULT_SET_USED


TABLE 11 - ACT_SOURCES_LIM_TBL 1 2
SOURCE_FLAGS
PF_EXCLUDE_FLAG FALSE FALSE TRUE FALSE
RESET_EXCLUDE_FLAG FALSE TRUE TRUE FALSE
BLOCK_DEMAND_FLAG FALSE TRUE TRUE TRUE
SLIDING_DEMAND_FLAG FALSE FALSE FALSE FALSE
THERMAL_DEMAND_FLAG FALSE FALSE FALSE FALSE
SET1_PRESENT_FLAG FALSE FALSE FALSE FALSE
SET2_PRESENT_FLAG FALSE FALSE FALSE FALSE
NBR_UOM_ENTRIES 0 0 0 0
NBR_DEMAND_CTRL_ENTRIES 0 1 3 1
DATA_CTRL_LENGTH 1 1 1 1
NBR_DATA_CTRL_ENTRIES 1 2 2 2
NBR_CONSTANTS_ENTRIES 1 1 1 1
CONSTANTS_SELECTOR 2 2 2 2
NBR_SOURCES 1 2 2 2
16804

16805 I.3.8 <${limitingTableName}> Element (Child of <defaultSet>)

16806 The <${limitingTableName}> element is a container for Final Element default set values of FLC+1, Function
16807 Limiting Control Tables, which are strictly used for defining Default Sets.

16808

16809

16810 I.3.8.1 <${limitingTableName}> DTD

16811 <!ELEMENT ${limitingTableName} (${if-switch-clause}?, ${elementName}*)>

16812 <!ATTLIST ${limitingTableName}


16813 source (standard | manufacturer) #IMPLIED
16814 number CDATA #IMPLIED

500
DRAFT ANSI C12.19-2012

16815 I.3.8.2 <${limitingTableName}> Attributes

Name Document Form Equivalent Description


source A publication of the type of table An indication of the source of this table being a Manufacturer or
being Manufacturer or Standard. a Standard. This assumes that a Manufacturer may wish to
augment the default set used with its own as part of the
documentation process of Manufacturer decades.
number A publication of the table The table number.
number
16816

16817 I.3.8.3 <${limitingTableName}> Document Form

16818 A tabulation of all final elements listed as one column for the table indicated by the ${limitingTableName} attribute
16819 for default set number indicated by the number attribute, and by the Final Element index.

16820 I.3.9 <data> Element (Child of <edl>)

16821 The <data> element is an optional Standard or Manufacturer data value placeholder for zero or more self-consistent
16822 Table value-sets. A self-consistent Table value-set is a collection of tables and values that together with the
16823 registered device class form a data set that can be interpreted uniformly and unambiguously. A Table value-set
16824 contains constants and imported or exported values. All the values expressed and contained within one <data>
16825 element are related and shall originate from one instance of a source or destination data set that belongs to one End
16826 Device values and instance.

16827 I.3.9.1 <data> DTD

16828 <!ELEMENT data (${tableName}*)>

16829 I.3.9.2 <data> Document Form

16830 One tabulation for each <data> element. Each <data> element tabulation consists of a list of all found Tables and
16831 their Final Elements’ name and value. The Elements and Final Elements of each Table are sorted by their Element
16832 index.

16833 I.3.10 <${tableName}> Element

16834 The <${tableName}> element is a container for Final Element data values. The minimum requirement is that all
16835 Elements and Final Elements be present in the order defined in corresponding Table definitions and the inner-most
16836 elements shall be Final Elements.

16837

16838 I.3.10.1 <${tableName}> DTD

16839 <!ELEMENT ${tableName} (pendingHeader?, ${if-switch-clause}?, ${elementName}*)>

16840 <!ATTLIST ${tableName}


16841 source (standard | manufacturer | eudt) #IMPLIED
16842 instance (active | pending) “active”
16843 number CDATA #IMPLIED
16844 binary CDATA #IMPLIED>

Annex I / EDL XML Format 501


<data> Element (Child of <edl>)
DRAFT ANSI C12.19-2012

16845 I.3.10.2 <${tableName}> Attributes

Name Document Form Equivalent Description


source A publication of the type of An indication of the source of this Table being a Manufacturer,
Table being Manufacturer, Standard, or Extended-user-defined.
Standard, or Extended-user-
defined.
number A publication of the Table The Table number (see BNF.tblNumber).
number.
instance A publication of the tables The type of the Table from which contains the data. An active
instance being active or pending Table or a pending table. If the instance is pending, then the
data. <pendingHeader> element may be included.
pendingHeader The elements of the PENDING_EVENT_DESC_RCD mapped
into the corresponding EDL <${elementName}.> members.
binary Hex dump of the all table values. All Table Final Element values encoded using hexadecimal
notation exactly as transmitted to or received from the End
Device as if a full table read or a full table write service were
performed. The content of this attribute shall span recursively all
of the Final Elements contained within. When this element is
present, then the data set shall also minimally include
GEN_CONFIG_TBL.FORMAT_CONTROL_1,
GEN_CONFIG_TBL.FORMAT_CONTROL_2, and
GEN_CONFIG_TBL. FORMAT_CONTROL_3 binaries or
their Final Elements to guarantee the interpretability of the binary
content.

16846 I.3.10.3 <${tableName}>Document Form

16847 A tabulation of all final elements listed as one column for the table indicated by the ${tableName}, sorted by the
16848 Final Element index. See <${elementName}> for an example.

16849 I.3.11 <${elementName}> Element

16850 The <${elementName}> element maps any TDL Element name of type <element>, <subElement> <array>, <set>,
16851 and ultimately their Final Element values.

16852 I.3.11.1 <${elementName}> DTD

16853 <!ELEMENT ${elementName} ((${if-switch-clause}?, (${elementName} | entry)*) | (#PCDATA))>


16854 <!ATTLIST ${elementName}
16855 index CDATA #IMPLIED
16856 binary CDATA #IMPLIED>

16857 I.3.11.2 <${elementName}> Attributes

Name Document Form Equivalent Description


index The index of this Element is The Element’s relative position in the containing data type (e.g.,
published in brackets to the right position within a PACKED RECORD or a BIT FIELD).
of the Element’s name.

502
DRAFT ANSI C12.19-2012

Name Document Form Equivalent Description


binary Hex dump of the values. The Element’s value encoded using hexadecimal notation exactly
as transmitted to or received from the End Device. The content of
this attribute shall span recursively all of the Final Elements
contained within. When this element is present, then the data set
shall also minimally include
GEN_CONFIG_TBL.FORMAT_CONTROL_1,
GEN_CONFIG_TBL.FORMAT_CONTROL_2, and
GEN_CONFIG_TBL. FORMAT_CONTROL_3 binaries or
their Final Elements to guarantee the interpretability of the binary
content.
16858

16859 I.3.11.3 <${elementName}> Document Form

16860 Non Final Element ${elementName} is published by its name. If the element is not the first Element in the Final
16861 Element’s list, then it is preceded with a period ‘.’. If the Element is a Final Element, then the its data value is
16862 presented. A number of presentation formats variations may be possible.

16863 Given the XML text below:

16864 <GEN_CONFIG_TBL instance=“active” number=0” source=“standard”>


16865 <FORMAT_CONTROL_1>
16866 <DATA_ORDER>0</DATA_ORDER>
16867 <CHAR_FORMAT>2</CHAR_FORMAT>
16868 </FORMAT_CONTROL_1>
16869 …
16870 </ GEN_CONFIG_TBL>

16871 The following may be a partial tabular output generated by an EDL processor:

TABLE 00 - GEN_CONFIG_TBL Final Element Value


FORMAT_CONTROL_1
DATA_ORDER 0
CHAR_FORMAT 2

16872 Alternatively, the following may be a partial relative textual output generated by an EDL processor:

TABLE 00 - GEN_CONFIG_TBL Final Element Value


FORMAT_CONTROL_1.DATA_ORDER 0
FORMAT_CONTROL_1.CHAR_FORMAT 2

16873 Alternatively, the following may be an absolute textual output generated by an EDL processor:

TABLE 00 - GEN_CONFIG_TBL Final Element Value


GEN_CONFIG_TBL.FORMAT_CONTROL_1.DATA_ORDER 0
GEN_CONFIG_TBL.FORMAT_CONTROL_1.CHAR_FORMAT 2

16874

16875 I.3.12 <entry> Element

16876 The <entry> element is a container of TDL <array> elements or TDL <set> elements.

Annex I / EDL XML Format 503


<entry> Element
DRAFT ANSI C12.19-2012

16877 I.3.12.1 <entry> DTD

16878 <!ELEMENT entry ((${if-switch-clause}?, ${elementName}+) | (#PCDATA))?>


16879 <!ATTLIST entry
16880 index CDATA #IMPLIED
16881 binary CDATA #IMPLIED>

16882 I.3.12.2 <entry> Attributes

Name Document Form Equivalent Description


index Element index for this array or The relative element index or range of indices for this array or set
set member. member. When the index is not present, then the entry takes on
the index of the previous entry +1. If the entry is the first entry
and an index is not specified, the entry takes on the index value
of 0. When an index is expressed as a range, then all final
elements that correspond to the index range will have the
indicated value. The last index in a range of indices shall be used
in the computation of the next index for the entry that follows (if
any) for the containing element. When collecting values for
placement in arrays or sets, the <entry> collection will be
repeatedly searched until an index is located or the list is
exhausted. If an index is located (matched), then the value will be
assigned; otherwise the entry value is considered absent.
The index value shall match the following BNF regular
expression notation:

index :: = ([0-9]+\S*([\-]\S*[0-9]+)?)(\S*,\S*([0-9]+\S*([\-
]\S*[0-9]+)?))* { A number, a range of numbers separated by ‘-‘;
or a collection of numbers or ranges each separated by a ‘,’}.
binary Hex dump of the values. The Element’s entry value encoded using hexadecimal notation
exactly as transmitted to or received from the End Device. The
content of this attribute shall span recursively all of the Final
Elements contained within. When this element is present, then
the data set shall also minimally include
GEN_CONFIG_TBL.FORMAT_CONTROL_1,
GEN_CONFIG_TBL.FORMAT_CONTROL_2, and
GEN_CONFIG_TBL. FORMAT_CONTROL_3 binaries or
their Final Elements to guarantee the interpretability of the binary
content.
16883

16884 I.3.12.3 <entry> Document Form

16885 Array entry is presented by an empty set or brackets, [], or using the index, such as: [n].

16886 Given the XML text below:

16887 <CURRENT_REG_DATA_TBL instance=“active” number=23” source=“standard”>


16888 <NBR_DEMAND_RESETS index=“0”>324</NBR_DEMAND_RESETS>
16889 <TOT_DATA_BLOCK index=“1”>
16890 <SUMMATIONS index=“0”>
16891 <entry index=“0”>654738.2</<entry>
16892 <entry index=“1”>1435.2</<entry>
16893 </SUMMATIONS>
16894 <DEMANDS index=“1”>
16895 <entry index=“0”>
16896 <EVENT_TIME index=“0”>
504
DRAFT ANSI C12.19-2012

16897 <entry index=“0”>2007-03-07T12:34:00-06:00</entry>


16898 <entry index=“1”>2007-03-14T12:00:20-06:00</entry>
16899 <entry index=“2”>2007-03-21T12:21:00-06:00</entry>
16900 </EVENT_TIME>
16901 <CUM_DEMAND index=“1”>6345.2</CUM_DEMAND>
16902 </entry>
16903 <entry index=“1”>
16904 <EVENT_TIME index=“0”>
16905 <entry index=“0”>2007-03-06T11:32:00-06:00</entry>
16906 <entry index=“1”>2007-03-13T11:01:00-06:00</entry>
16907 <entry index=“2”>2007-03-20T11:12:00-06:00</entry>
16908 </EVENT_TIME>
16909 <CUM_DEMAND index=“1”>3241.5</CUM_DEMAND>
16910 </entry>
16911 </DEMANDS>
16912 </TOT_DATA_BLOCK>
16913 </CURRENT_REG_DATA_TBL>
16914 NOTE—In the above example, we do not require the presence of <${if-switch-clause}> elements since the Table Element names
16915 are unique in this sequence.

16916 The following may be a partial output generated by an EDL processor:

TABLE 23 - CURRENT_REG_DATA_TBL Final Element Value


NBR_DEMAND_RESETS 324
TOT_DATA_BLOCK
SUMMATIONS[0] 654738.2
SUMMATIONS[1] 1435.2
DEMANDS[0]
EVENT_TIME[0] Wed Mar 7 12:34:00 MDT 2007
EVENT_TIME[1] Wed Mar 14 12:00:00 MDT 2007
EVENT_TIME[2] Wed Mar 21 12:21:00 MDT 2007
CUM_DEMAND 6345.2
DEMANDS[1]
EVENT_TIME[0] Tue Mar 6 11:32:00 MDT 2007
EVENT_TIME[1] Tue Mar 13 11:01:00 MDT 2007
EVENT_TIME[2] Tue Mar 20 11:12:00 MDT 2007
CUM_DEMAND 3241.5

TIER_DATA_BLOCK …

16917

16918 I.3.13 <pendingHeader> element

16919 The <pendingHeader> element is a container for an event descriptor of a pending event that will trigger or has
16920 triggered the Table values provided. This element shall be present when the instance attribute of the
16921 <${tableName}> element is set to “pending”.

16922 I.3.13.1 <pendingHeader> DTD

16923 <!ELEMENT pendingHeader PENDING_EVENT_DESC_RCD>

16924 <!ELEMENT PENDING_EVENT_DESC_RCD (EVENT_SELECTOR, EVENT_STORAGE)>

Annex I / EDL XML Format 505


<pendingHeader> element
DRAFT ANSI C12.19-2012

16925 <!ELEMENT EVENT_SELECTOR (EVENT_CODE, SELF_READ_FLAG?,


16926 DEMAND_RESET_FLAG?, RESERVED?)>
16927 <!ELEMENT (EVENT_CODE |
16928 SELF_READ_FLAG | DEMAND_RESET_FLAG | RESERVED) (#PCDATA) >
16929
16930 <!ELEMENT EVENT_STORAGE (PE_STIME_DATE | -- Contains STIME_DATE value --
16931 (WEEKS?, DAYS?, HOURS?, MINUTES?, SECONDS?) |
16932 (MFG_CODE?, MFG_EVENT_CODE?))? >

16933 <!ELEMENT (PE_STIME_DATE | WEEKS | DAYS | HOURS | MINUTES | SECONDS |


16934 MFG_CODE | MFG_EVENT_CODE) (#PCDATA) >

16935 I.3.13.2 <pendingHeader> Document Form

16936 Publish an expression of the pending event that will activate this table or an expression of the pending event and the
16937 table activation date of an activated table in front of all related Element values.

16938 I.4 EDL XML Form Encoding of Final Element Values

16939 Final Element #PCDATA values shall be encoded as shown in the table below, where the prefix “xsd” in front of the
16940 “EDL XML Form Type” column represents the association between the schema namespace prefix for the referenced
16941 XML schema namespace “http://www.w3.org/2001/XMLSchema”. The actual data type definition shall be derived
16942 from the corresponding TDL XML File that shares the same End Device class.

16943 The following notes apply to the table below:

16944 a) Some computer languages do not support unsigned integer types. Special care shall be taken when
16945 processing unsigned types in systems capable of handling only signed types.

16946 b) Some computer languages do not support unsigned integer types. In addition, they cannot handle signed
16947 integers that are encoded with more than 64 bits. These systems need to apply extra special handling for the
16948 type UINT64. It is recommended that the use of UINT64 data type be minimized by End Device
16949 manufacturers.

Document Form EDL XML Form Comment


Type Type
NIL Element shall not be present in the EDL file.

INT8 xsd:byte
INT16 xsd:short
INT24 xsd:int
INT32 xsd:int
INT40 xsd:long
INT48 xsd:long
INT56 xsd:long
INT64 xsd:long

UINT8 xsd:unsignedByte See note a) above.


UINT16 xsd:unsignedShort See note a) above.
UINT24 xsd:unsignedInt See note a) above.
UINT32 xsd:unsignedInt See note a) above.
UINT40 xsd:unsignedLong See note a) above.
UINT48 xsd:unsignedLong See note a) above.
UINT56 xsd:unsignedLong See note a) above.
UINT64 xsd:unsignedLong See note b) above.

506
DRAFT ANSI C12.19-2012

Document Form EDL XML Form Comment


Type Type

FLOAT32 xsd:double
FLOAT64 xsd:double
FLOAT_CHAR6 xsd:double
FLOAT_CHAR12 xsd:double
FLOAT_CHAR21 xsd:double
FIXED_BCD4 xsd:double
FIXED_BCD6 xsd:double
FIXED_BCD8 xsd:double

NI_FMAT1 xsd:double
NI_FMAT2 xsd:double

FILL8 xsd:unsignedByte Shall be set to 0.


FILL16 xsd:unsignedShort Shall be set to 0.
FILL32 xsd:unsignedInt Shall be set to 0.
FILL64 xsd:unsignedLong Shall be set to 0.

BCD xsd:string Preserve spaces. Same as BCD(1).


CHAR xsd:string Preserve spaces. Same as STRING(1).
STRING xsd:string Preserve spaces. Same as STRING(1).

HTIME_DATE xsd:dateTime Maps HTIME_DATE_RCD during TDL processing.


LTIME_DATE xsd:dateTime Maps LTIME_DATE_RCD during TDL processing.
STIME_DATE xsd:dateTime Maps STIME_DATE_RCD during TDL processing.
HTIME xsd:time Maps HTIME_RCD during TDL processing.
TIME xsd:time Maps TIME_RCD during TDL processing.
STIME xsd:time Maps STIME_RCD during TDL processing.

DATE xsd:date
RDATE xsd:unsignedShort Maps to/from RDATE_RCD during TDL processing.

SET(n) xsd:boolean Encoded as an array of Booleans.


STRING(n) xsd:string Preserve spaces.
BCD(n) xsd:string Preserve spaces. Any BCD character may be entered in any order with no assumed
nor implied association between a numeric representation. These are encoded as a
collection of BNF.bcdNibble that are mapped into CHAR and assembled into a
STRING from left to right. For example, the BCD sequence [#x1] [#x2] [#xD] [#x4]
[#xE] [#x0], [#x6] representing the fixed-point value 12.406 shall be truncated upon
evaluation to 12.45 and then converted to a the xsd:string representation “12.45”.
BINARY(n) xsd:hexBinary A collection of Octets encoded as hexadecimal values.

INT(n..m) xsd:long Member of BIT FIELD


UINT(n..m) xsd:unsignedLong Member of BIT FIELD, See note b) above.
BOOL(n) xsd:boolean Member of BIT FIELD
FILL(n..m) xsd:long Member of BIT FIELD

Annex I / EDL XML Form Encoding of Final Element Values 507


DRAFT ANSI C12.19-2012

16950 Annex J (normative) Universal Identifier


16951 ANSI C12.19 makes use of the ISO Universal Identifier to uniquely identify objects. This is used for ANSI C12.19
16952 and related standards to uniquely identify components of the End Device Class, EDL, and TDL.

16953 <device-class-root-oid> ::= 2.16.124.113620.1.19 {ISO registered absolute object identifier root for End
16954 Device Classes. This value shall be encoded for the
16955 purpose of transmission using ISO/IEC 8825-1:2002
16956 [BER] as:
16957 06 07 60 7C 86 F7 54 01 13H }

16958 The following table summarizes the list of objects actually defined:

Use Universal identifier


ANSI C12.19 Device Class <device-class-root-oid>.<device class id>
16959

16960 ANSI C12.19 Device Class

16961 Absolute C12.19 Device Class identifiers shall be globally unique. To ensure this, users of the Standard may register
16962 a Device Class Universal Identifier. It is not necessary to register a Device Class Universal Identifier already defined
16963 by this Standard. However, any other Device Class Universal Identifier shall be registered. This identifier shall be
16964 common to all End Devices that share the same End Device operating model, data structures, and operational
16965 constants (i.e., C12.19 TDL and C12.19 EDL). This identifier may be used by an upstream device to interpret
16966 incoming data structures and operational assumptions made by the manufacturer of the End Device.

16967 Device Classes will be assigned on a “first come, first served” basis. The first 128 Device Class IDs are reserved for
16968 registration of one-way devices. Preferred Device Class IDs may also be requested and assigned if available.

16969 Also submitted with the registration request is a simple XML-text TDL file (as defined in this standard) and an
16970 optional EDL if desired. For one-way devices, EDL and TDL shall include enough information to completely
16971 describe any unsolicited messages that the C12.22 Node might generate. For two-way devices, no specific
16972 information is required to be included in the EDL and TDL.

16973 Registration

16974 Information on registration can be found through the North American End Device Registration Authority
16975 (NAEDRA)19, or an equivalent registration authority.

19
Available from NAEDRA at http://www.naedra.org.
508
DRAFT ANSI C12.19-2012

16976 Annex K (informative) Algorithms for the conversion of Table Element


16977 values to engineering units
16978 The following algorithms describe how Table Element values, which are retrieved from the End Device, may be
16979 converted to physical and meaningful engineering units in reference to the point of metering and to the point of
16980 delivery. These algorithms are applicable to Table Elements that represent register readings, such as Elements from
16981 Table 23 through Table 25 and Table 28 or Table 64 through Table 67 or Table 155 through Table 158. The
16982 conversion factors are described in 9.2, “Decade 1: Data Source Tables”, and may be retrieved from the End Device
16983 or from EDL files. This annex utilizes GENERIC_CONSTANTS_RCD for purpose of illustration.
16984 GENERIC_CONSTANTS_RCD may be equivalently replaced with ELECTRIC_CONSTANTS_RCD with an
16985 assume DIVISOR equal to 1.0.

16986 The conversion process is broken into a number of steps:

16987 a) The first step in the sequence is the locating of conversion factors in Decade 1. This step is necessary to
16988 obtain the correct conversion factors, scalars, multipliers, and unit of measure that need to be applied.

16989 b) The second step in the sequence is the de-normalization of interval data elements. This step is needed only
16990 when processing interval data of load profile or Quality-of-service (Decade 6 or Decade 15).

16991 c) The third step in the sequence is the conversion to engineering units at the point of metering. This step is
16992 always required in order to scale the data as sensed by the End Device where the End Device is attached.

16993 d) The fourth step in the sequence is the conversion to engineering units at the point of delivery. This step is
16994 needed only when it is desired to scale the data as seen at the point of delivery (e.g., kWh consumed for
16995 billing data).

16996 e) Finally, it is necessary to assign to the result the correct engineering units. This final step provides two key
16997 attributes:

16998 1) Assignment of the basic physical units (e.g., Wh).

16999 2) Assignment if correct power-of-ten prefix expression to the converted value (e.g., value reported is in
17000 kWh).

17001 These steps are illustrated in the following subclauses using pseudo-code. Table Elements are shown in BOLD.
17002 Pseudo-code variables are shown in BOLD-ITALICS. Pseudo-code is illustrated by box enclosure.

17003 K.1 Locating conversion factors from Decade 1

17004 When a Table Final Element represents a register value, it is also associated with a data source selection Element in
17005 a corresponding control Table. This association is based on the Element’s placement index in its containing array.
17006 For example, the Final Element CURRENT_REG_DATA_TBL . TOT_DATA_BLOCK . SUMMATIONS[ N ]
17007 is the Nth summation in an array of summation retrieved from in Table 23. The corresponding data source selector
17008 that is association with this Final Element may be retrieved from DATA_SELECTION_TBL .
17009 SUMMATION_SELECT[ N ], whose type is STD.SOURCE_SELECT_RCD. The packed record
17010 STD.SOURCE_SELECT_RCD contains the Final Element SI = SOURCE_INDEX, which links the above
17011 register with the source-attributes Element, SOURCES_TBL.SOURCES_LINK [SI]. This Element contains
17012 selection-flags (per SOURCES_TBL.SOURCE_LINK_BFLD) that identify the conversion factors used from
17013 Table Elements found in Decade 1, “Data Sources Tables”, as shown in the table below:

17014

Annex K / Locating conversion factors from Decade 1 509


DRAFT ANSI C12.19-2012

SOURCES_TBL.SOURCES_LINK [ SI ] Action to be take when set to TRUE


UOM_ENTRY_FLAG Retrieve UOM_ENTRY[ SI_UOM ] Element from Table 12, “Units
of Measure Entry Table”.
DEMAND_CTRL_FLAG Retrieve INTERVAL_VALUE[ SI_DMD ] Element from Table 13,
“Demand Control Table”.
DATA_CTRL_FLAG Retrieve and process SOURCES_ID[ SI_CTL ] Element from Table
14, “Data Control Table”.
CONSTANTS_FLAG Retrieve and process SELECTION[ SI_CST ] Element from Table
15, “Constants Table”.
PULSE_ENGR_FLAG This flag does not impact the calculation. Its state does not affect the
calculation outcome, whether set to TRUE or whether set to FALSE.
CONSTANT_TO_BE_APPLIED This flag affects the use of the MULTIPLIER, DIVISOR and
OFFSET Final Elements of CONSTANTS_TBL . SELECTION[
SI_CST ]. GENERIC_CONSTANTS.

17015 Array indices SI_UOM, SI_DMD, SI_CTL, and SI_CST are the indices of the referenced Elements that need be
17016 retrieved from Table 12 through Table 15 to affect calculations. When the dimension of any one of
17017 NBR_UOM_ENTRIES, NBR_DEMAND_CTRL_ENTRIES, NBR_DATA_CTRL_ENTRIES, or
17018 NBR_CONSTANTS_ENTRIES that are found in ACT_SOURCES_LIM_TBL is the same as
17019 ACT_SOURCES_LIM_TBL.NBR_SOURCES, the value of the corresponding SI_UOM, SI_DMD, SI_CTL,
17020 SI_CST shall be set to SI. Otherwise the index is computed by performing a “bit walk” across all flags in
17021 SOURCES_TBL and by counting all the flags that are set to TRUE, as shown in the pseudo-code below:

17022 SI = the desired index (SOURCE_INDEX) of a register’s the array of source


17023 selectors in Table 16.

17024 IF ACT_SOURCES_LIM_TBL.NBR_UOM_ENTRIES == ACT_SOURCES_LIM_TBL.NBR_SOURCES


17025 THEN
17026 SI_UOM = SI
17027 ELSE
17028 SI_UOM = -1
17029 IF SOURCES_TBL.SOURCES_LINK[SI].UOM_ENTRY_FLAG == TRUE THEN
17030 K = 0
17031 WHILE K <= SI REPEAT
17032 IF SOURCES_TBL.SOURCES_LINK[K].UOM_ENTRY_FLAG == TRUE THEN
17033 SI_UOM = SI_UOM + 1
17034 END
17035 K = K + 1
17036 END
17037 END
17038 END

17039 IF ACT_SOURCES_LIM_TBL.NBR_DEMAND_CTRL_ENTRIES ==
17040 ACT_SOURCES_LIM_TBL.NBR_SOURCES THEN
17041 SI_DMD = SI
17042 ELSE
17043 SI_DMD = -1
17044 IF SOURCES_TBL.SOURCES_LINK[SI].DEMAND_CTRL_FLAG == TRUE THEN
17045 K = 0
17046 WHILE K <= SI REPEAT
17047 IF SOURCES_TBL.SOURCES_LINK[K].DEMAND_CTRL_FLAG == TRUE
17048 THEN
17049 SI_DMD = SI_DMD + 1
17050 END
17051 K = K + 1
17052 END

510
DRAFT ANSI C12.19-2012

17053 END
17054 END

17055 IF ACT_SOURCES_LIM_TBL.NBR_DATA_CTRL_ENTRIES ==
17056 ACT_SOURCES_LIM_TBL.NBR_SOURCES THEN
17057 SI_CTL = SI
17058 ELSE
17059 SI_CTL = -1
17060 IF SOURCES_TBL.SOURCES_LINK[SI].DATA_CTRL_FLAG == TRUE THEN
17061 K = 0
17062 WHILE K <= SI REPEAT
17063 IF SOURCES_TBL.SOURCES_LINK[K].DATA_CTRL_FLAG == TRUE THEN
17064 SI_CTL = SI_CTL + 1
17065 END
17066 K = K + 1
17067 END
17068 END
17069 END

17070 IF ACT_SOURCES_LIM_TBL.NBR_CONSTANTS_ENTRIES ==
17071 ACT_SOURCES_LIM_TBL.NBR_SOURCES THEN
17072 SI_CST = SI
17073 ELSE
17074 SI_CST = -1
17075 IF SOURCES_TBL.SOURCES_LINK[SI].CONSTANTS_FLAG == TRUE THEN
17076 K = 0
17077 WHILE K <= SI REPEAT
17078 IF SOURCES_TBL.SOURCES_LINK[K].CONSTANTS_FLAG == TRUE THEN
17079 SI_CST = SI_CST + 1
17080 END
17081 K = K + 1
17082 END
17083 END
17084 END

17085 The above algorithm yields the values SI_UOM, SI_DMD, SI_CTL, and SI_CST. Positive values are index entries
17086 into the corresponding conversion factors of the related Table 12 through Table 15. Negative values imply that there
17087 is no applicable information available for that source.

17088 Note that when Table 16 is not retrievable from the End Device (meter) or from the an EDL file, then there shall be
17089 an assumed correspondence of 1:1 between each entry index in Table 16 and index into the corresponding entry in
17090 Table 12 through Table 15.

17091 That is,

17092 IF GEN_CONFIG_TBL.STD_TBLS_USED[16] == FALSE THEN


17093 SI_UOM = SI_DMD = SI_CTL = SI_CST = SI = SOURCE_INDEX
17094 END

17095 The content of VALUE represents the Final Element-value read from a Table. The remainder of this annex describes
17096 how to apply the necessary conversion factors to convert VALUE to physically meaningful engineering units (e.g.,
17097 Wh) when the End Device is an electricity meter.

Annex K / Locating conversion factors from Decade 1 511


DRAFT ANSI C12.19-2012

17098 K.2 De-normalizing interval data elements

17099 Register Elements that represent interval data that are retrieved from load profile Tables or Quality-of-service Tables
17100 need to be “de-normalized” before proceeding with the remaining algorithm conversions described in the next
17101 subclause. This preliminary conversion applies to register Elements that are found in load profile Table 64 through
17102 Table 67 and Quality-of-service Table 155 through Table 158.

17103 Note that the reference to Elements from ACT_LP_TBL assumes that when ACT_LP_TBL is not available from
17104 the End Device, then the application shall obtain values of the needed Elements by consulting other available
17105 resources in the following order of priority: (1) utilize the FLC/FLC+1 rules; (2) search the EDL file (when
17106 available); (3) use Default Sets (if available); and (4) otherwise assume a value of 0 (of FALSE) to all numeric
17107 Elements.

17108 CH = The load profile or Quality-of-service channel number that is associated with VALUE
17109 DIVISOR = SCALAR = 1
17110
17111 IF VALUE from Table 64 && ACT_LP_TBL.LP_FLAGS.SCALAR_DIVISOR_FLAG_SET1 THEN
17112 SCALAR = LP_CTRL_TBL.SCALARS_SET1[ CH ]
17113 DIVISOR = LP_CTRL_TBL.DIVISOR_SET1[ CH ]
17114 END

17115 IF VALUE from Table 65 && ACT_LP_TBL.LP_FLAGS.SCALAR_DIVISOR_FLAG_SET2 THEN


17116 SCALAR = LP_CTRL_TBL.SCALARS_SET2[ CH ]
17117 DIVISOR = LP_CTRL_TBL.DIVISOR_SET2[ CH ]
17118 END

17119 IF VALUE from Table 66 && ACT_LP_TBL.LP_FLAGS.SCALAR_DIVISOR_FLAG_SET3 THEN


17120 SCALAR = LP_CTRL_TBL.SCALARS_SET3[ CH ]
17121 DIVISOR = LP_CTRL_TBL.DIVISOR_SET3[ CH ]
17122 END

17123 IF VALUE from Table 67 && ACT_LP_TBL.LP_FLAGS.SCALAR_DIVISOR_FLAG_SET4 THEN


17124 SCALAR = LP_CTRL_TBL.SCALARS_SET4[ CH ]
17125 DIVISOR = LP_CTRL_TBL.DIVISOR_SET4[ CH ]
17126 END
17127
17128 IF ( VALUE from Table 155 &&
17129 ACT_QUALITY_OF_SERVICE_TBL.FEATURES.TD_SCALAR_DIVISOR_FLAG )
17130 THEN
17131 SCALAR = QUALITY_CONTROL_TBL.QUALITY_DESC.TD_ASYNC_CONTROL.
17132 CHANNEL_SOURCE_ID[ CH ]. SCALAR
17133 DIVISOR = QUALITY_CONTROL_TBL.QUALITY_DESC.TD_ASYNC_CONTROL.
17134 CHANNEL_SOURCE_ID[ CH ]. DIVISOR
17135 END

17136 IF ( VALUE from Table 156 &&


17137 ACT_QUALITY_OF_SERVICE_TBL.FEATURES.SCALAR_DIVISOR_FD_ASYNC_FLAG )
17138 THEN
17139 SCALAR = QUALITY_CONTROL_TBL.QUALITY_DESC. FD_ASYNC_CONTROL.
17140 CHANNEL_SOURCE_ID[ CH ]. SCALAR
17141 DIVISOR = QUALITY_CONTROL_TBL.QUALITY_DESC. FD_ASYNC_CONTROL.
17142 CHANNEL_SOURCE_ID[ CH ]. DIVISOR
17143 END

512
DRAFT ANSI C12.19-2012

17144 IF ( VALUE from Table 157 &&


17145 ACT_QUALITY_OF_SERVICE_TBL.SCALAR_DIVISOR_TD_PERIODIC_FLAG )
17146 THEN
17147 SCALAR = QUALITY_CONTROL_TBL.QUALITY_DESC.
17148 TD_PERIODIC_WAVEFORM_CONTROL. CHANNEL_SOURCE_ID[ CH ]. SCALAR
17149 DIVISOR = QUALITY_CONTROL_TBL.QUALITY_DESC.
17150 TD_PERIODIC_WAVEFORM_CONTROL. CHANNEL_SOURCE_ID[ CH ]. DIVISOR
17151 END

17152 IF ( VALUE from Table 158 &&


17153 ACT_QUALITY_OF_SERVICE_TBL.SCALAR_DIVISOR_FD_PERIODIC_FLAG )
17154 THEN
17155 SCALAR = QUALITY_CONTROL_TBL.QUALITY_DESC.
17156 FD_PERIODIC_WAVEFORM_CONTROL. CHANNEL_SOURCE_ID[ CH ]. SCALAR
17157 DIVISOR = QUALITY_CONTROL_TBL.QUALITY_DESC.
17158 FD_PERIODIC_WAVEFORM_CONTROL. CHANNEL_SOURCE_ID[ CH ]. DIVISOR
17159 END

17160 De-normalize VALUE with appropriate SCALAR and DIVISOR.

17161 VALUE = VALUE * DIVISOR / SCALAR

17162 K.3 Converting to engineering units at the point of metering

17163 With source selection indices SI, SI_UOM, SI_DMD, SI_CTL, and SI_CST at hand and a de-normalized VALUE,
17164 it is now the time to apply the internal metering conversion factors. For a better understanding of the intended use of
17165 SET1_CONSTANTS and SET2_CONSTANTS in the following algorithms, consult Figure K-1.

Annex K / Converting to engineering units at the point of metering 513


DRAFT ANSI C12.19-2012

Point of delivery

7.2 / 12.47 current


KV 3ph transformer
Gnd wye 200A / 5A = 40
277 / 480 SET2_CONSTANTS.RATIO_F1
volts

voltage
transformer
277V / 120V = 2.0833
SET2_CONSTANTS.RATIO_P1

Point of metering

Transformer rated meter


Load does not go through End Device
(meter)
Customer
SET1_CONSTANTS.RATIO_F1 load center
SET1_CONSTANTS.RATIO_P1
When CTs and PTs are also designed
internal to the End Device.
17166

17167 Figure K-1—A typical electricity meter installation

17168 IF SOURCES_TBL.SOURCES_LINK[ SI ].CONSTANT_TO_BE_APPLIED && SI_CST >= 0 THEN


17169 MULTIPLIER = CONSTANTS_TBL.SELECTION[ SI_CST ].GENERIC_CONSTANTS.
17170 MULTIPLIER
17171 IF ACT_SOURCES_LIM_TBL.CONSTANTS_SELECTOR == 3 THEN
17172 DIVISOR = CONSTANTS_TBL.SELECTION[ SI_CST ].GENERIC_CONSTANTS.
17173 DIVISOR
17174 ELSE
17175 DIVISOR = 1.0
17176 END
17177 OFFSET = CONSTANTS_TBL.SELECTION[ SI_CST ].GENERIC_CONSTANTS.
17178 OFFSET
17179 VALUE = VALUE * MULTIPLIER / DIVISOR + OFFSET
17180 END

17181 IF (ACT_SOURCES_LIM_TBL.SET1_PRESENT_FLAG && SI_CST >= 0 &&


17182 CONSTANTS_TBL.SELECTION[ SI_CST ].
17183 GENERIC_CONSTANTS.SET_FLAGS.SET_APPLIED_FLAG == FALSE ) THEN
17184 RATIO_F1 = CONSTANTS_TBL.SELECTION[ SI_CST ].
17185 GENERIC_CONSTANTS.SET1_CONSTANTS.RATIO_F1
17186 RATIO_P1 = CONSTANTS_TBL.SELECTION[ SI_CST ].
17187 GENERIC_CONSTANTS.SET1_CONSTANTS.RATIO_P1
17188 VALUE = VALUE * RATIO_F1 * RATIO_P1
17189 END

17190 At this point VALUE should be the End Device reading at the point of metering. This is because
17191 SET1_CONSTANTS represent the intermediary transformer that is closest to the End Device or embedded within

514
DRAFT ANSI C12.19-2012

17192 the End Device, whereas SET2_CONSTANTS represent the intermediary transformer that is next in proximity to
17193 the End Device (e.g., the utility metering transformer).

17194 Note that the reader needs to be made aware of a possible condition where ACT_SOURCES_LIM_TBL.
17195 SET2_PRESENT_FLAG is TRUE and CONSTANTS_TBL.SELECTION [ SI_CST ].
17196 GENERIC_CONSTANTS. SET_FLAGS. SET_APPLIED_FLAG is also TRUE; i.e., the register value reported
17197 was already converted internally by the End Device to engineering units at the point of delivery. When this
17198 condition is true, then VALUE computed in this subclause already represents the point of delivery and not the point
17199 of metering.

17200 K.4 Converting to engineering units at the point of delivery

17201 With source selection indices SI, SI_UOM, SI_DMD, SI_CTL, and SI_CST at hand and VALUE scaled in the
17202 previous steps, it may be desirable to apply conversion factors so that VALUE represents the measurement as
17203 “would be seen” at the point of delivery as consumed by the load and billed by the Utility.

17204 IF (ACT_SOURCES_LIM_TBL.SET2_PRESENT_FLAG && SI_CST >= 0 &&


17205 CONSTANTS_TBL.SELECTION[ SI_CST ].
17206 GENERIC_CONSTANTS.SET_FLAGS.SET_APPLIED_FLAG == FALSE ) THEN
17207 RATIO_F1 = CONSTANTS_TBL.SELECTION[ SI_CST ].
17208 GENERIC_CONSTANTS.SET2_CONSTANTS.RATIO_F1
17209 RATIO_P1 = CONSTANTS_TBL.SELECTION[ SI_CST ].
17210 GENERIC_CONSTANTS.SET2_CONSTANTS.RATIO_P1
17211 VALUE = VALUE * RATIO_F1 * RATIO_P1
17212 END

17213 K.5 Assigning engineering units

17214 At this point, the VALUE represents the measurement at the point of delivery. The engineering units can be derived
17215 from the Unit of Measure Table (Table 12). This calculation cannot be performed when Table 12 cannot be retrieved
17216 from the End Device or from an EDL.

17217 IF (SI_UOM >= 0) THEN


17218 UNITS = cast UOM_ENTRY_TBL. UOM_ENTRY[SI_UOM].ID_CODE with
17219 UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].TIME_BASE and
17220 UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM ].MULTIPLIER to units indicator
17221 END

17222 K.6 Assigning fundamental engineering units

17223 The following operation can be done (as an alternative to the units assigned in K.5) to normalize the VALUE to the
17224 fundamental unit of measure. Fundamental units is a set of units for physical quantities from which every other unit
17225 can be generated (e.g., Watt-hour). This calculation cannot be performed when Table 12 cannot be retrieved from
17226 the End Device or from an EDL.

17227 IF (SI_UOM >= 0) THEN


17228 UNITS = cast UOM_ENTRY_TBL. UOM_ENTRY[SI_UOM ].ID_CODE and
17229 UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM ].TIME_BASE to units indicator

17230 IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 0 THEN


17231 MULTIPLIER = 1
17232 ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 1 THEN
17233 MULTIPLIER = 1.0E+02
17234 ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 2 THEN
Annex K / Converting to engineering units at the point of delivery 515
DRAFT ANSI C12.19-2012

17235 MULTIPLIER = 1.0E+03


17236 ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 3 THEN
17237 MULTIPLIER = 1.0E+06
17238 ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 4 THEN
17239 MULTIPLIER = 1.0E+09
17240 ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 5 THEN
17241 MULTIPLIER = 1.0E-02
17242 ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 6 THEN
17243 MULTIPLIER = 1.0E-03
17244 ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 7 THEN
17245 MULTIPLIER = 1.0E-06
17246 ELSE
17247 MULTIPLIER = 1
17248 END
17249 VALUE = VALUE * MULTIPLIER
17250 END

17251 At this point, VALUE is the reading at the point of delivery with all the fundamental engineering unit-attributes
17252 applied.

17253 K.7 Table value to engineering units conversion: An example

17254 Let us assume the application retrieved the following Final Element values from the End Device:

Element Name Value Comment


T23_VALUE 1419472 Value retrieved
from Table 23
T64_VALUE 39 Value retrieved
from Table 64
ACT_SOURCES_LIM_TBL.SET1_PRESENT_FLAG TRUE
ACT_SOURCES_LIM_TBL.SET2_PRESENT_FLAG TRUE
SOURCES_TBL.SOURCES_LINK[SI ].UOM_ENTRY_FLAG TRUE
SOURCES_TBL.SOURCES_LINK[SI ].DEMAND_CTRL_FLAG FALSE Does not affect
calculations
SOURCES_TBL.SOURCES_LINK[SI ].DATA_CTRL_FLAG FALSE Does not affect
calculations
SOURCES_TBL.SOURCES_LINK[SI ].CONSTANTS_FLAG TRUE
SOURCES_TBL.SOURCES_LINK[SI ].PULSE_ENGR_FLAG FALSE Does not affect
calculations
SOURCES_TBL.SOURCES_LINK[SI].CONSTANT_TO_BE_APPLIED TRUE The application
needs to apply
these constants
UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].ID_CODE 0 Active power – W
UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].TIME_BASE 0 Used in Example 1

Values have the


units stated in the
ID_CODE × Hour
(Energy units), i.e.,
Wh

516
DRAFT ANSI C12.19-2012

Element Name Value Comment


UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].TIME_BASE 5 Used in Example 2

Integral of
commodity usage
rate over a
specified period of
time T1 to T2
Values have the
units stated in the
ID_CODE × Hour
(Energy units), i.e.,
Wh
UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].MULTIPLIER 2 1.0E+03
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS. 20 Internal meter
MULTIPLIER factor.
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS. 0 Offset to adjust to
OFFSET actual dial reading
at the time of
installation when
the register
Element cannot be
preset
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS. 1000 Internal meter
DIVISOR factor
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS. 1 Internal factor
SET1_CONSTANTS.RATIO_F1
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS. 1 Internal factor
SET1_CONSTANTS.RATIO_F1
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS. 400 Transforming 2000
SET2_CONSTANTS.RATIO_F1 amps to 5 amps
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS. 60 Transforming 7200
SET2_CONSTANTS.RATIO_F1 volts to 120 volts
ACT_LP_TBL.LP_FLAGS.SCALAR_DIVISOR_FLAG_SET1 TRUE Applicable to
Table 64
LP_CTRL_TBL.DIVISOR_SET1[CH] 25 Applicable to
Table 64
LP_CTRL_TBL.SCALARS_SET1[CH] 10000 Applicable to
Table 64
17255 NOTE—The above values are just an example. There is no reason to assume that Elements that are encoded as NI_FMAT1 (e.g.,
17256 CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS’ MULTIPLIER, OFFSET, RATIO_F1 and
17257 RATIO_P1) cannot have fractional values like 0.25 or 0.0001, subject to the proper value set for
17258 GEN_CONFIG_TBL.FORMAT_CONTROL_3.NI_FORMAT1.

17259 Example 1:

17260 Based on the above values, the application can reliably convert the value T23_VALUE retrieved from Table 23 into
17261 fundamental engineering units as follows:

17262 Reading at the point of metering

17263 (1419472 × 20 / 1000 + 0) × (1 × 1) × (1.0E+03 Wh) = 28,389.44 kWh


17264 = 28,389,440 Wh

17265 Reading at the point of delivery

17266 (1419472 × 20 / 1000 + 0) × (1 × 1) × (400 × 60) × (1.0E+03 Wh) = 681,346,560 kWh


17267 = 681,346,560,000 Wh
Annex K / Table value to engineering units conversion: An example 517
DRAFT ANSI C12.19-2012

17268 Given that UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].TIME_BASE = 0, the results represent the total energy
17269 recorded by this register.

17270 Example 2:

17271 Based on the above values, the application can reliably convert the value T64_VALUE retrieved from Table 64 into
17272 fundamental engineering units as follows:

17273 Reading at the point of metering

17274 ((39 × 25 / 10000) × 20 / 1000 + 0) × (1 × 1) × (1.0E+03 Wh) = 0.00195 kWh


17275 = 1.95 Wh

17276 Reading at the point of delivery

17277 ((39 × 25 / 10000) × 20 / 1000 + 0) × (1 × 1) × (400 × 60) × (1.0E+03 Wh) = 46.8 kWh
17278 = 46,800 Wh

17279 Given that UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].TIME_BASE = 5, the results represent the incremental


17280 energy recorded by this register within one load profile interval period.

17281

518
DRAFT ANSI C12.19-2012

17282 Annex L (informative) Registering or updating DEVICE CLASS OID


17283 Item b) in 7.1 on compliance states that the DEVICE_CLASS Element in GEN_CONFIG_TBL (Table 00)
17284 contains a relative universal object identifier relative to the End Device class registered root context, which makes it
17285 globally unique. Also Annex J, “(normative) Universal Identifier”, explains that to ensure this, users of the Standard
17286 may register a Device Class Universal Identifier. This identifier shall be common to all End Devices that share the
17287 same End Device operating model, data structures, and operational constants (i.e., C12.19 TDL and C12.19 EDL).
17288 This identifier may be used by upstream devices to interpret incoming data structures and operational assumptions
17289 made by the manufacturer of the End Device. Also it is important to note that relative Device Classes that begin with
17290 zero (0), under the <device-class-root-oid>, are reserved for use by ANSI C12.19. That is, the various versions of
17291 ANSI C12.19 are preregistered with relative Device Classes that have the form 0.version.revision.0 for each
17292 version/revision of the Standard. The version and revision are the values of the Elements
17293 GEN_CONFIG_TBL.STD_VERSION_NO and GEN_CONFIG_TBL.STD_REVISION_NO, respectively. For
17294 example, DEVICE_CLASS 0.2.0.0 refers to ANSI C12.19-2008, and DEVICE_CLASS 0.1.0.0 refers to
17295 ANSI C12.19-1997.

17296 A number of pertinent operational questions need answers:

17297 a) In the context of issuing a Device Class, what do we mean by End Devices that share the same End Device
17298 operating model, data structures, and operational constants?

17299 b) Can (or how can) an End Device be deployed without registering its Device Class?

17300 c) What are the criteria for re-registering (assigning a new Device Class) to an already registered End Device
17301 following a change in its firmware and/or operating modes?

17302 d) When can one just issue an update to the registration files of an End Device without requiring it to be re-
17303 registered with a new Device Class?

17304 Subclauses L.1 through L.3 look at each of the above questions and scenarios and provide guidance and examples so
17305 that users of the Standard (including meter manufacturers, meter vendors, and utilities and service providers) have a
17306 consistent operational understanding and expectation for the registration process.

17307 L.1 Binding a Device Class to End Device operating model

17308 End Device instantiated entity manifests itself on an AMI system as a combination of the knowledge of this
17309 Standard, available information that may be retrieved from the End Device, and information that may be retrieved
17310 off-line from an information system, e.g., Meter Data Management System (MDMS). The aggregation of this
17311 knowledge is commonly referred to as an End Device Instance, as shown in Figure L-1. The off-line content that is
17312 common to all End Devices that share the same Device Class is commonly referred to as the End Device Data
17313 Model. The Data Models are expressed as a collation of TDL and EDL files that are registered and therefore can be
17314 uniquely associated with a single Device Class. That is, the Data Model aims to document any End Device instance
17315 information that is either unavailable directly from the End Device or it is a constant and nonchanging property of
17316 the End Device.

Annex L / Binding a Device Class to End Device operating model 519


DRAFT ANSI C12.19-2012

End Device Instance

A Registered End Device Data Model


End Device exposing
Tables, Procedures, TDL Table Syntax, EDL External Table and
Elements, and Behaviors + Attributes, and + Default Sets Attributes
Behaviors and Values

17317

17318 Figure L-1—A registered End Device instance

17319 A change in the End Device registered Data Model may necessitate a change in the End Device Class designation.
17320 The governing criteria for re-registration is that the change may cause a reader, who uses the previously registered
17321 Device Class, to misinterpret the revised End Devices’ Table-elements, Structures, or Behaviors. That is, the revised
17322 Data Model represents a new End Device model that needs to be registered with a new Device Class. These
17323 statements loosely address the first question regarding the meaning of End Devices sharing the same operating
17324 model, data structures, and operational constants. Figure L-2 should be used to make a determination of the need to
17325 re-register an End Device that has undergone changes to its Data Model.

520
DRAFT ANSI C12.19-2012

START
Did not change anything in the
1 End Device hardware,
firmware, software, features,
Changed registered TDL options, and operating
+ EDL Standard types or characteristics.
Tables, or Manufacturer 2.2
types or Tables, or End No Reuse Device
Device Behavior ?
Class

Yes
Changed or re-qualified 2.1
existing Tables or Elements or Changed existing
data types or operating Yes documented Tables or
instructions or Elements or values or
constants that
known behavior ?
are already
known based
on the No Created new Tables or new data types or appended
registered new Elements at the end of existing Tables or added
Device Class. documentation where none existed before or
provided values for external entities or exposed
Manufacturer content that was previously obscure.

3.1
The changes are backward and
Did the change create forward compatible with any
Yes conflicting behavior or No reader that uses the
create conflict with previously registered Device
existing syntax or Class; therefore, it will
assumed values of the not misinterpret the
End Device ? revised End Device
Table-elements,
Structures, and
Behaviors.
3.2 4

Register a new Reuse existing Device


Device Class Class with Updated
version number

END

17326

17327 Figure L-2—Device Class re-registration decision-making process flow

17328 Whenever the End Device Data Model of a registered Device Class changes, it is necessary to determine whether to
17329 re-register the revised End Device. The flowchart shown in Figure L-2 should be used to make this determination.
17330 When the concluding step is (3.2), then the End Device needs to be registered as “new” and obtain a new Device
17331 Class. When the concluding step is (4), then the End Device may reuse its existing Device Class, but it must update

Annex L / Binding a Device Class to End Device operating model 521


DRAFT ANSI C12.19-2012

17332 the registered TDLs and EDLs and issue a new version number that will be placed in the version attribute of the
17333 <tdl> root element of the registered TDL and in the <edl> root element of the registered EDL. When the concluding
17334 step is (2.2), then no further action is necessary.

17335 L.2 End Devices referencing the Standard’s Device Class

17336 It was mentioned previously that relative Device Classes that begin with zero (0) under the <device-class-root-oid>
17337 are reserved for use by ANSI C12.19. For instance, Device Class 0.2.0.0 refers to version 2 and revision 0 of this
17338 Standard.

17339 When an End Device is a compliant instance of a version/revision of this Standard then it is permissible to use the
17340 Standard’s registered Device Class without the necessity for the Manufacturer to register a TDL or an EDL. When
17341 using the Standard’s registered Device Classes, it is not permissible for the End Device Data Model to deviate from
17342 the Table structures, Default-sets Used, Element offsets, Element indices, data types, FLC/FLC+1 behavior of
17343 Decades, and all other normative behaviors prescribed in the referenced Standard.

17344 Under this scenario, any AMI application or End Device reader implementing the referenced Standard should be
17345 able to interpret the data sets and behaviors of the End Device strictly by consulting the retrieved DEVICE_CLASS
17346 Element from GEN_CONFIG_TBL (Table 00), the referenced Standard TDL and EDL files, and Element values
17347 retrieved from the End Device. However, because the End Device is implicitly registered, it is not possible to
17348 ascertain more information about the device type or to identify its manufacturer strictly from the DEVICE_CLASS
17349 Element.

17350 L.3 Practical examples and use-cases

17351 In this subclause, we present a collection of example of possible revisions to registered End Device Data Models.
17352 The nature of the revisions are explained, and then the algorithm shown in Figure L-2 is applied. Each step executed
17353 in this algorithm is explained leading to one of two conclusions. Conclusion (3.2), where the End Device needs to be
17354 registered, or conclusion (4), where the End Device may reuse its existing Device Class with updated
17355 version/revision. Outcome (2.2) is not considered here because all of the examples begin with the presumption that
17356 the End Device has undergone some change.

17357 L.3.1 Examples: Initial registration condition—an empty TDL

17358 In this example, we assume that the manufacturer registers an empty TDL in order to enable the industry to discover
17359 the device type and manufacturer identification strictly from the DEVICE_CLASS Element. The registrar issues
17360 Device Class 10.20.30.40 for the submitted TDL as follows:

17361 <?xml version=“1.0” encoding=“UTF-8”?>


17362 <tdl xmlns=“http://www.ansi.org/2008/C1219TDLSchema”
17363 version=“1.0”
17364 deviceClass=“10.20.30.40”
17365 standard=“http://www.ansi.org/C1219TDL-2008.xml”
17366 title=“Model-X Meter”
17367 date=“2008-05-31”
17368 validation=“http://someregistrar.com/xxxx”>
17369 </tdl>

17370 L.3.1.1 Case 1: Exposing manufacturer’s content

17371 Case 1: Use-case scenario

17372 In this example, the Manufacturer of the End Device chooses to provide an elaboration on controlling the display
17373 format of data values that may be displayed. The Standard provides a binary placeholder for that purpose in
522
DRAFT ANSI C12.19-2012

17374 DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD.DISPLAY_SOURCE. The elaboration is expressed as a


17375 replacement of DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD in a manner that preserves the Element
17376 names, sizes offsets, and indices of DISPLAY_SOURCE but exposes the internal structure of the BINARY opaque
17377 content.

17378 Case 1: Device Class re-registration decision-making process flow

Step # Test performed and outcome Consequence


1 The TDL was changed in a manner that performs an “in-place” Proceed to step 2.1
global replacement of the standard’s data type (packed record)
and the introduction of a manufacturer-defined bit field.
2.1 Did not change existing documented behavior. It elaborated on Proceed to step 3.1
behavior of manufacturer-defined binary opaque Element
DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD.
3.1 Did not create a conflict since the behavior was never Proceed to step 4
documented and the new behavior does not change the name of
the Element DISPLAY_SOURCE nor it affects its offset,
index, or size, given that the condition
ACT_DISP_TBL.WIDTH_DISP_SOURCES == 2 is enforced
by the syntax.
4 Reuse existing Device Class 10.20.30.40 and increase modify Update version number
version number (e.g., to 1.1)

The new TDL preamble may look as follows:


<?xml version=“1.0” encoding=“UTF-8”?>
<tdl
xmlns=“http://www.ansi.org/2008/C1219TDLSchema”
version=“1.1”
deviceClass=“10.20.30.40”
standard=“http://www.ansi.org/C1219TDL.2008.xml”
title=“Model-X Meter”
date=“2008-07-31”
validation=“http://someregistrar.com/xxxx”>

See detailed elaboration of the full content to be placed


here in the next section.

</tdl>

17379 The logic flow above lets the Manufacturer retain the originally registered Device Class and simply update its
17380 version number.

17381 Case 1: Exposing manufacturer’s content elaboration

17382 The following is the Standard’s description of DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD for registered


17383 Device Class 10.20.30.40 version 1.0.

Annex L / Practical examples and use-cases 523


Examples: Initial registration condition—an empty TDL
DRAFT ANSI C12.19-2012

17384 …

17385 TYPE DISP_SOURCE_DESC_RCD = PACKED RECORD


17386 DISPLAY_SOURCE :
17387 BINARY(ACT_DISP_TBL.WIDTH_DISP_SOURCES);
17388 END;

17389 …

17390 Identifier Value Definition


17391 DISP_SOURCE_DESC_RCD Manufacturer-defined display description entry.
17392 DISPLAY_SOURCE Contains the manufacturer-defined display description entries.

17393 The above document form representation translates to the equivalent TDL referenced by the standard attribute
17394 (“http://www.ansi.org/C1219TDL-2008.xml”) of the registered Device Class as follows:

17395 <packedRecord name=“DISP_SOURCE_DESC_RCD”>


17396 <description>Manufacturer-defined display description entry.</description>
17397 <element name=“DISPLAY_SOURCE” type=“BINARY”
17398 length=“ACT_DISP_TBL.WIDTH_DISP_SOURCES”>
17399 <description>
17400 Contains the manufacturer-defined display description entries.
17401 </description>
17402 </element>
17403 </packedRecord>

17404 The manufacturer elaborates on DISP_SOURCE_DESC_RCD.DISPLAY_SOURCE as follows:

17405 …

17406 TYPE FORMATTING_HINTS_BFLD = BIT FIELD OF UINT16


17407 LEADING_DIGITS : UINT(0..3);
17408 SUPP_LEADING_ZEROS : BOOL(4);
17409 TRAILING_DIGITS : UINT(5..8);
17410 SCALE : INT(9..13);
17411 FILLER : FILL(14..15);
17412 END;

17413 TYPE MODEL_X_DISP_SOURCE_DESC_RCD = PACKED RECORD


17414 DISPLAY_SOURCE : FORMATTING_HINTS_BFLD
17415 ASSERT (ACT_DISP_TBL.WIDTH_DISP_SOURCES != 2) WARN
17416 “The value of ACT_DISP_TBL.WIDTH_DISP_SOURCES must be set to 2”;
17417 ; { The semicolon closes DISPLAY_SOURCE phrase. }
17418 END;

17419 …

17420 Identifier Value Definition

17421 FORMATTING_HINTS_BFLD
17422 LEADING_DIGITS 0..15 This Element defines the number of digits before the decimal
17423 point used.

524
DRAFT ANSI C12.19-2012

17424 SUPP_LEADING_ZEROS This Element indicates whether leading zeros should be


17425 suppressed.
17426 FALSE Do not suppress leading zeros.
17427 TRUE Suppress leading zeros.

17428 TRAILING_DIGITS 0..15 This Element defines the number of digits after the decimal
17429 point.

17430 SCALE -16..15 This Element defines the scale factor to be applied computed
17431 as 10SCALE.

17432 MODEL_X_DISP_SOURCE_DESC_RCD Manufacturer-defined display description entry.


17433 Replaces:
17434 DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD.

17435 DISPLAY_SOURCE Contains the manufacturer-defined display description entries.

17436 Assert: WARN on (ACT_DISP_TBL .


17437 WIDTH_DISP_SOURCES != 2) due to “The value of
17438 ACT_DISP_TBL . WIDTH_DISP_SOURCES must be set to
17439 2”.

17440 The above manufacturer Document Form elaboration translates to TDL as shown below:

17441 <bitField name="FORMATTING_HINTS_BFLD" type="UINT16">


17442 <subElement name="LEADING_DIGITS" type="UINT"
17443 startBitInclusive="0" endBitInclusive="3">
17444 <description>
17445 This Element defines the number of digits before the decimal point used.
17446 </description>
17447 </subElement>
17448 <subElement name="SUPP_LEADING_ZEROS" type="BOOL" startBitInclusive="4">
17449 <description>
17450 This Element indicates whether leading zeros should be suppressed.
17451 </description>
17452 <enumerator>
17453 <enum value="false" text="Do not suppress leading zeros."/>
17454 <enum value="true" text="Suppress leading zeros."/>
17455 </enumerator>
17456 </subElement>
17457 <subElement name="TRAILING_DIGITS" type="UINT"
17458 startBitInclusive="5" endBitInclusive="8">
17459 <description>
17460 This Element defines the number of digits after the decimal point.
17461 </description>
17462 </subElement>
17463 <subElement name="SCALE" type="INT" startBitInclusive="9" endBitInclusive="13">
17464 <description>
17465 This Element defines the scale factor to be applied computed as
17466 10<sup><b>SCALE</b></sup>.
17467 </description>
17468 </subElement>
17469 <subElement name="FILLER" type="FILL" startBitInclusive="14" endBitInclusive="15"/>
17470 </bitField>

Annex L / Practical examples and use-cases 525


Examples: Initial registration condition—an empty TDL
DRAFT ANSI C12.19-2012

17471 <packedRecord name="MODEL_X_DISP_SOURCE_DESC_RCD"


17472 replace="DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD">
17473 <description>Manufacturer-defined display description entry.</description>
17474 <element name="DISPLAY_SOURCE" type="FORMATTING_HINTS_BFLD">
17475 <description>Contains the manufacturer-defined display description entries.
17476 </description>
17477 <assert
17478 text="The value of ACT_DISP_TBL.WIDTH_DISP_SOURCES must be set to 2."
17479 raise="WARN">
17480 <condition>ACT_DISP_TBL.WIDTH_DISP_SOURCES != 2</condition>
17481 </assert>
17482 </element>
17483 </packedRecord>

17484 L.3.1.2 Case 2: Changing End Device behavior

17485 Case 2: Use-case scenario

17486 In this example, the Manufacturer of the End Device chooses to provide an elaboration of the behavioral fact that
17487 DIM_REGS_TBL (Table 20) cannot be not retrievable from the End Device and that ACT_REGS_TBL (Table 21)
17488 can only be retrieved using full table read mechanism (i.e., partial read index or partial read offsets are not supported
17489 by this device). Finally, it may be useful to the AMI application to know that ACT_REGS_TBL (Table 21) cannot
17490 be changed.

17491 Case 2: Device Class re-registration decision-making process flow

Step # Test performed and outcome Consequence


1 The TDL was changed in a manner that re-qualifies the Proceed to step 2.1
attributes of Table 20 and Table 21; therefore, there is a change
in End Device behavior.
2.1 Changed Standard Table 20 and Table 21 documented behavior. Proceed to step 3.2
3.2 Register a new Device Class Done

The new TDL preamble may look as follows:


<?xml version=“1.0” encoding=“UTF-8”?>
<tdl
xmlns=“http://www.ansi.org/2008/C1219TDLSchema”
version=“1.0”
deviceClass=“10.20.30.41”
standard=“http://www.ansi.org/C1219TDL.2008.xml”
title=“Model-Y Meter”
date=“2008-08-01”
validation=“http://someregistrar.com/xxxx”>

See detailed elaboration of the full content to be placed


here in the next section.

</tdl>

17492 The flow logic above requires the manufacturer to obtain a new Device Class since the behavior of the End Device
17493 changed sufficiently to cause a read error on Table 21, when invoking a partial table read.

17494 Case 2: Changing End Device behavior elaboration

526
DRAFT ANSI C12.19-2012

17495 The following is the standard’s description of DIM_REGS_TBL (Table 20) and ACT_REGS_TBL (Table 21) for
17496 registered Device Class 10.20.30.40 version 1.0.

17497 …

17498 Table 20 Data Description

17499 DIM_REGS_TBL (Table 20) specifies the maximum dimensional values for measured values Registers. The
17500 constants defined are used for setting the absolute maximum limits of Arrays used in the transport of these values.

17501 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility=“READONLY”

17502 …

17503 Table 21 Data Description

17504 ACT_REGS_TBL (Table 21) contains actual limiting values for Registers.

17505 Global Default Table Property Overrides: Role=“ACTUAL”

17506 …

17507 The above document form representation translates to the equivalent TDL referenced by the standard attribute
17508 (“http://www.ansi.org/C1219TDL-2008.xml”) of the registered Device Class as follows:

17509 <table number="20" name="DIM_REGS_TBL"


17510 type="REGS_RCD" label="Register Dimension Limits Table" role="LIMITING"
17511 accessibility="READONLY">

17512 <description>
17513 <b>DIM_REGS_TBL</b> (Table 20) specifies the maximum dimensional values for
17514 Measured values Registers. The constants defined are used for setting the absolute
17515 maximum limits of Arrays used in the transport of these values.
17516 </description>
17517 …

17518 </table>

17519 …

17520 <table number="21" name="ACT_REGS_TBL"


17521 type="REGS_RCD" label="Actual Register Limiting Table" role="ACTUAL">

17522 <description>
17523 <b>ACT_REGS_TBL</b> (Table 21) contains actual limiting values for Registers.
17524 </description>

17525 …

17526 </table>

17527 The manufacturer may elaborate on DIM_REGS_TBL and ACT_REGS_TBL as follows:

Annex L / Practical examples and use-cases 527


Examples: Initial registration condition—an empty TDL
DRAFT ANSI C12.19-2012

17528 Standard Tables re-qualified by this TDL

17529 DIM_REGS_TBL (Table 20)

17530 Global Default Table Property Overrides: Role=“LIMITING”, Accessibility="UNIMPLEMENTED".

17531 ACT_REGS_TBL (Table 21)

17532 Global Default Table Property Overrides: Role=“ACTUAL”, Accessibility="READONLY" Atomic="true".

17533 …

17534 The above manufacturer elaboration can be translated to a TDL segment as follows:

17535 <qualify>
17536 <table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
17537 <table name="ACT_REGS_TBL" accessibility="READONLY" atomic="true"/>
17538 </qualify>

17539 The above elaboration preserves all of the standard’s attributes except for the accessibility (for Table 20 and
17540 Table 21) and atomic (for Table 21).

17541 L.3.2 Examples: Initial registration conditions—nonempty TDL

17542 The Manufacturer registers a TDL with some content in order to enable the industry to ascertain information about
17543 the type and manufacturer of this End Device strictly from its DEVICE_CLASS Element and to obtain behavioral
17544 information about the End Device. The registrar issues the following Device Class 10.20.30.42 for the bound TDL
17545 as follows:

17546 <?xml version=“1.0” encoding=“UTF-8”?>


17547 <tdl xmlns=“http://www.ansi.org/2008/C1219TDLSchema”
17548 version=“1.0”
17549 deviceClass=“10.20.30.42”
17550 standard=“http://www.ansi.org/C1219TDL-2008.xml”
17551 title=“Model-Z Meter”
17552 date=“2008-08-21”
17553 validation=“http://someregistrar.com/xxxx”>
17554 <table name="METER_Z_AAA_TBL" number="322"
17555 type="METER_Z_AAA_RCD" accessibility="READONLY"
17556 label="Meter-Z AAA Record">
17557 <packedRecord name="METER_Z_AAA_RCD">
17558 <element name="FIELD_1" type="UINT8">
17559 <description>An 8-bit field 1.</description>
17560 </element>
17561 <element name="FIELD_2" type="UINT8">
17562 <description>An 8-bit field 2.</description>
17563 </element>
17564 </packedRecord>
17565 </table>
17566 <qualify>
17567 <table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
17568 <table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
17569 </qualify>

528
DRAFT ANSI C12.19-2012

17570 </tdl>

17571 The above registration states that Table 20 is not available from the End Device and that in fact it cannot be made
17572 available. Table 21 is also unavailable for retrieval from the End Device; however, its Element values can be
17573 obtained externally from the registered EDL. Therefore, it is expected that the Manufacturer also submits an EDL
17574 file as a companion to this TDL. Also the TDL includes a definition of METER_Z_AAA_TBL (Manufacturer
17575 Table 322). The following is an example of what this EDL may look like:

17576 <?xml version="1.0" encoding="UTF-8"?>


17577 <edl xmlns="http://www.ansi.org/2008/CNST-10.20.30.42-EDLSchema"
17578 version=“1.0” deviceClass=“10.20.30.42”
17579 standard=“http://www.ansi.org/C1219TDL-2008.xml”>
17580 <data>
17581 <ACT_REGS_TBL>
17582 <REG_FUNC1_FLAGS>
17583 <SEASON_INFO_FIELD_FLAG>true</SEASON_INFO_FIELD_FLAG>
17584 <DATE_TIME_FIELD_FLAG>true</DATE_TIME_FIELD_FLAG>
17585 <DEMAND_RESET_CTR_FLAG>true</DEMAND_RESET_CTR_FLAG>
17586 <DEMAND_RESET_LOCK_FLAG>true</DEMAND_RESET_LOCK_FLAG>
17587 <CUM_DEMAND_FLAG>false</CUM_DEMAND_FLAG>
17588 <CONT_CUM_DEMAND_FLAG>false</CONT_CUM_DEMAND_FLAG>
17589 <TIME_REMAINING_FLAG>true</TIME_REMAINING_FLAG>
17590 </REG_FUNC1_FLAGS>
17591 <REG_FUNC2_FLAGS>
17592 <SELF_READ_INHIBIT_OVERFLOW_FLAG>
17593 false</SELF_READ_INHIBIT_OVERFLOW_FLAG>
17594 <SELF_READ_SEQ_NBR_FLAG>true</SELF_READ_SEQ_NBR_FLAG>
17595 <DAILY_SELF_READ_FLAG>true</DAILY_SELF_READ_FLAG>
17596 <WEEKLY_SELF_READ_FLAG>false</WEEKLY_SELF_READ_FLAG>
17597 <SELF_READ_DEMAND_RESET>3</SELF_READ_DEMAND_RESET>
17598 </REG_FUNC2_FLAGS>
17599 <NBR_SELF_READS>64</NBR_SELF_READS>
17600 <NBR_SUMMATIONS>3</NBR_SUMMATIONS>
17601 <NBR_DEMANDS>3</NBR_DEMANDS>
17602 <NBR_COIN_VALUES>3</NBR_COIN_VALUES>
17603 <NBR_OCCUR>3</NBR_OCCUR>
17604 <NBR_TIERS>24</NBR_TIERS>
17605 <NBR_PRESENT_DEMANDS>3</NBR_PRESENT_DEMANDS>
17606 <NBR_PRESENT_VALUES>3</NBR_PRESENT_VALUES>
17607 </ACT_REGS_TBL>
17608 </data>
17609 </edl>

17610 L.3.2.1 Case 1: Appending a new element to an existing table

17611 Case 1: Use-case scenario

17612 In this example, the Manufacturer of the End Device determined that there is a need to extend
17613 METER_Z_AAA_TBL.METER_Z_AAA_RCD by adding a new Element FIELD_3 of type UINT16. All other
17614 information remains identical. The implication is that the manufacturer changed the
17615 METER_Z_AAA_TBL.METER_Z_AAA_RCD member of the TDL as shown in the elaboration section that
17616 follows the process flow.

17617 Case 1: Device Class re-registration decision-making process flow


Annex L / Practical examples and use-cases 529
Examples: Initial registration conditions—nonempty TDL
DRAFT ANSI C12.19-2012

Step # Test performed and outcome Consequence


1 The TDL was changed in a manner that a new element was Proceed to step 2.1
added to an existing Table.
2.1 The change is to an existing table, but it does not impact on Proceed to step 3.1
previously registered behavior.
3.1 The change did not create a conflict since it was added to the Proceed to step 4
end of the Table.
4 Reuse existing Device Class 10.20.30.42 and modify the version Update version number
number (e.g., to 1.1).

17618 The flow logic above requires the manufacturer to update the version of the Device Class registered since it exposed
17619 new Elements that otherwise were not known.

17620 Case 1: Appending a new element to an existing table elaboration

17621 <?xml version="1.0" encoding="UTF-8"?>


17622 <tdl xmlns=“http://www.ansi.org/2008/C1219TDLSchema”
17623 version=“1.1”
17624 deviceClass=“10.20.30.42”
17625 standard=“http://www.ansi.org/C1219TDL-2008.xml”
17626 title=“Model-Z Meter”
17627 date=“2008-09-12”
17628 validation=“http://someregistrar.com/xxxx”>
17629 <table name="METER_Z_AAA_TBL" number="322"
17630 type="METER_Z_AAA_RCD" accessibility="READONLY"
17631 label="Meter-Z AAA Record">
17632 <packedRecord name="METER_Z_AAA_RCD">
17633 <element name="FIELD_1" type="UINT8">
17634 <description>An 8-bit field 1.</description>
17635 </element>
17636 <element name="FIELD_2" type="UINT8">
17637 <description>An 8-bit field 2.</description>
17638 </element>
17639 <element name="FIELD_3" type="UINT16">
17640 <description>A 16-bit field 3.</description>
17641 </element>
17642 </packedRecord>
17643 </table>
17644 <qualify>
17645 <table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
17646 <table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
17647 </qualify>
17648 </tdl>
17649

530
DRAFT ANSI C12.19-2012

17650 L.3.2.2 Case 2: Inserting a new element into an existing table

17651 Case 2: Use-case scenario

17652 In this example, the Manufacturer of the End Device determined that there is a need to extend
17653 METER_Z_AAA_TBL.METER_Z_AAA_RCD by adding a new Element FIELD_3 of type UINT8. All other
17654 information remains identical. The implication is that the manufacturer changed the
17655 METER_Z_AAA_TBL.METER_Z_AAA_RCD member of the TDL as shown in the elaboration section that
17656 follows the process flow.

17657 Case 2: Device Class re-registration decision-making process flow

Step # Test performed and outcome Consequence


1 The TDL was changed in a manner that a new element was Proceed to step 2.1
added to an existing Table.
2.1 The change is to an existing table, but it does not impact on Proceed to step 3.1
previously registered behavior.
3.1 The change creates a conflict since it was added in the middle of Proceed to step 3.2
the Table, therefore, causing a change to the offset and index of
FIELD_2. In readers that utilize the existing Device Class,
10.20.30.42 will confuse FIELD_3 for FIELD_2.
3.2 Register a new Device Class. Done

17658 The flow logic above requires the manufacturer to obtain a new Device Class since the behavior of the End Device
17659 changed sufficiently to cause a misinterpretation of FIELD_2 of Table 322.

17660 Case 2: Inserting a new element into an existing table elaboration

17661 The following is the resulting TDL produced for the new Device Class:

17662 <?xml version="1.0" encoding="UTF-8"?>


17663 <tdl xmlns=“http://www.ansi.org/2008/C1219TDLSchema”
17664 version=“1.0”
17665 deviceClass=“10.20.30.43”
17666 standard=“http://www.ansi.org/C1219TDL-2008.xml”
17667 title=“Model-Z Meter”
17668 date=“2008-08-11”
17669 validation=“http://someregistrar.com/xxxx”>
17670 <table name="METER_Z_AAA_TBL" number="322"
17671 type="METER_Z_AAA_RCD" accessibility="READONLY"
17672 label="Meter-Z AAA Record">
17673 <packedRecord name="METER_Z_AAA_RCD">
17674 <element name="FIELD_1" type="UINT8">
17675 <description>An 8-bit field 1.</description>
17676 </element>
17677 <element name="FIELD_3" type="UINT8">
17678 <description>An 8-bit field 3.</description>
17679 </element>
17680 <element name="FIELD_2" type="UINT8">
17681 <description>An 8-bit field 2.</description>
17682 </element>
17683 </packedRecord>
17684 </table>
17685 <qualify>
17686 <table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
Annex L / Practical examples and use-cases 531
Examples: Initial registration conditions—nonempty TDL
DRAFT ANSI C12.19-2012

17687 <table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>


17688 </qualify>
17689 </tdl>

17690 L.3.2.3 Case 3: Modifying an element of an existing table

17691 Case 3: Use-case scenario

17692 In this example, the Manufacturer of the End Device determined that there is a need to modify
17693 METER_Z_AAA_TBL.METER_Z_AAA_RCD by changing a the Element FIELD_1 to be of type UINT16. All
17694 other information remains identical. The implication is that the manufacturer changed the
17695 METER_Z_AAA_TBL.METER_Z_AAA_RCD member of the TDL as shown in the elaboration section that
17696 follows.

17697 Case 3: Device Class re-registration decision-making process flow

Step # Test performed and outcome Consequence


1 The TDL was changed in a manner that a new element was Proceed to step 2.1
modified in an existing Table.
2.1 The change is to an existing table, but somehow it is perceived Proceed to step 3.1
that this change does not impact on previously registered
behavior.
3.1 The change created a conflict since the data type was changed Proceed to step 3.2
from UINT8 to UINT16; thus, it will lead to errors in access
and interpretation of FIELD_1 (size and data order) and
FIELD_2 (offset).
3.2 Register a new Device Class (see elaboration in the next Done
subsection).

17698 The flow logic above requires the manufacturer to obtain a new Device Class since the behavior of the End Device
17699 changed sufficiently to cause a data interpretation error for FIELD_1 (size and data order) and FIELD_2. Also note
17700 that process (3.1) acts as a trap that catches conflicts.

17701 Case 3: Modifying an Element of an Existing Table Elaboration

17702 As per discussion above, a new Device Class is registered.

17703 <?xml version="1.0" encoding="UTF-8"?>


17704 <tdl xmlns=“http://www.ansi.org/2008/C1219TDLSchema”
17705 version=“1.0”
17706 deviceClass=“10.20.30.44”
17707 standard=“http://www.ansi.org/C1219TDL-2008.xml”
17708 title=“Model-Z Meter”
17709 date=“2008-09-12”
17710 validation=“http://someregistrar.com/xxxx”>
17711 <table name="METER_Z_AAA_TBL" number="322"
17712 type="METER_Z_AAA_RCD" accessibility="READONLY"
17713 label="Meter-Z AAA Record">
17714 <packedRecord name="METER_Z_AAA_RCD">
17715 <element name="FIELD_1" type="UINT16">
17716 <description>An 16-bit field 1.</description>
17717 </element>
17718 <element name="FIELD_2" type="UINT8">
17719 <description>An 8-bit field 2.</description>
17720 </element>
532
DRAFT ANSI C12.19-2012

17721 </packedRecord>
17722 </table>
17723 <qualify>
17724 <table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
17725 <table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
17726 </qualify>
17727 </tdl>

17728 L.3.2.4 Case 4: Modifying a constant element in a table

17729 Case 4: Use-case scenario

17730 In this example, the Manufacturer of the End Device decided to release a new End Device that has fewer self-reads
17731 (down to 12 from 64) and time-of-use tiers (down to 4 from 24). Otherwise the End Device is identical to the
17732 previously register Device Class 10.20.30.42. The implication is that the manufacturer changed an externally
17733 available constant leading to the following process flow.

17734 Case 4: Device Class re-registration decision-making process flow

Step # Test performed and outcome Consequence


1 The EDL was changed in a manner that the value of an Element Proceed to step 2.1
constant was changed The TDL did not change.
2.1 There was a change to documented Elements constant values. Proceed to step 3.2
3.2 Register a new Device Class. Done

17735 The flow logic above requires the Manufacturer to obtain a new Device Class that uses the same TDL body but with
17736 a new EDL that captures the change in the Element values.

17737 Case 4: Modifying a constant element in a table elaboration

17738 As per discussion above, a new Device Class is registered. The body (content) of the re-registered TDL is identical
17739 to the TDL registered previously as Device Class 10.20.30.42. The re-registration serves to produce a unique
17740 reference to the EDL file (see below).

17741 <?xml version="1.0" encoding="UTF-8"?>


17742 <tdl xmlns=“http://www.ansi.org/2008/C1219TDLSchema”
17743 version=“1.0”
17744 deviceClass=“10.20.30.45”
17745 standard=“http://www.ansi.org/C1219TDL-2008.xml”
17746 title=“Model-Z Meter”
17747 date=“2008-08-21”
17748 validation=“http://someregistrar.com/xxxx”>
17749 <table name="METER_Z_AAA_TBL" number="322"
17750 type="METER_Z_AAA_RCD" accessibility="READONLY"
17751 label="Meter-Z AAA Record">
17752 <packedRecord name="METER_Z_AAA_RCD">
17753 <element name="FIELD_1" type="UINT8">
17754 <description>An 8-bit field 1.</description>
17755 </element>
17756 <element name="FIELD_2" type="UINT8">
17757 <description>An 8-bit field 2.</description>
17758 </element>
17759 </packedRecord>
17760 </table>

Annex L / Practical examples and use-cases 533


Examples: Initial registration conditions—nonempty TDL
DRAFT ANSI C12.19-2012

17761 <qualify>
17762 <table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
17763 <table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
17764 </qualify>
17765 </tdl>

17766 The above TDL is identical to the TDL of Device Class 10.20.30.42. The actual change occurs only in the EDL
17767 below.

17768 <?xml version="1.0" encoding="UTF-8"?>


17769 <edl xmlns="http://www.ansi.org/2008/CNST-10.20.30.45-EDLSchema"
17770 version=“1.0” deviceClass=“10.20.30.45”
17771 standard=“http://www.ansi.org/C1219TDL-2008.xml”>
17772 <data>
17773 <ACT_REGS_TBL>
17774 <REG_FUNC1_FLAGS>
17775 <SEASON_INFO_FIELD_FLAG>true</SEASON_INFO_FIELD_FLAG>
17776 <DATE_TIME_FIELD_FLAG>true</DATE_TIME_FIELD_FLAG>
17777 <DEMAND_RESET_CTR_FLAG>true</DEMAND_RESET_CTR_FLAG>
17778 <DEMAND_RESET_LOCK_FLAG>true</DEMAND_RESET_LOCK_FLAG>
17779 <CUM_DEMAND_FLAG>false</CUM_DEMAND_FLAG>
17780 <CONT_CUM_DEMAND_FLAG>false</CONT_CUM_DEMAND_FLAG>
17781 <TIME_REMAINING_FLAG>true</TIME_REMAINING_FLAG>
17782 </REG_FUNC1_FLAGS>
17783 <REG_FUNC2_FLAGS>
17784 <SELF_READ_INHIBIT_OVERFLOW_FLAG>
17785 false</SELF_READ_INHIBIT_OVERFLOW_FLAG>
17786 <SELF_READ_SEQ_NBR_FLAG>true</SELF_READ_SEQ_NBR_FLAG>
17787 <DAILY_SELF_READ_FLAG>true</DAILY_SELF_READ_FLAG>
17788 <WEEKLY_SELF_READ_FLAG>false</WEEKLY_SELF_READ_FLAG>
17789 <SELF_READ_DEMAND_RESET>3</SELF_READ_DEMAND_RESET>
17790 </REG_FUNC2_FLAGS>
17791 <NBR_SELF_READS>12</NBR_SELF_READS>
17792 <NBR_SUMMATIONS>3</NBR_SUMMATIONS>
17793 <NBR_DEMANDS>3</NBR_DEMANDS>
17794 <NBR_COIN_VALUES>3</NBR_COIN_VALUES>
17795 <NBR_OCCUR>3 </NBR_OCCUR>
17796 <NBR_TIERS>4</NBR_TIERS>
17797 <NBR_PRESENT_DEMANDS>3</NBR_PRESENT_DEMANDS>
17798 <NBR_PRESENT_VALUES>3</NBR_PRESENT_VALUES>
17799 </ACT_REGS_TBL>
17800 </data>
17801 </edl>
17802

534
DRAFT ANSI C12.19-2012

17803 L.3.2.5 Case 5: Adding a new Table to an End Device

17804 Case 5: Use-case scenario

17805 In this example, the Manufacturer of the End Device decided to introduce a new Table in an End Device that was
17806 previously registered with Device Class 10.20.30.42. All other attributes and behaviors of the registered Device
17807 Class remained the same.

17808 Case 5: Device Class re-registration decision-making process flow

Step # Test performed and outcome Consequence


1 The TDL was changed. Proceed to step 2.1
2.1 There was a change to an undocumented Table or a Table that Proceed to step 3.1
did not previously exist.
3.1 This new Table does not cause a conflict with any previous Proceed to step 4
instance of the registered Device Class.
4 Reuse existing Device Class 10.20.30.42, and modify the Update version number
version number (e.g., to 1.1).

17809 The flow logic above lets the Manufacturer retain the originally registered Device Class and simply update its
17810 version number.

17811 Case 5: Adding a new table to an End Device elaboration

17812 As per discussion above, an existing Device Class is reused, but the version of the TDL is updated.

17813 <?xml version="1.0" encoding="UTF-8"?>


17814 <tdl xmlns=“http://www.ansi.org/2008/C1219TDLSchema”
17815 version=“1.1”
17816 deviceClass=“10.20.30.42”
17817 standard=“http://www.ansi.org/C1219TDL-2008.xml”
17818 title=“Model-Z Meter”
17819 date=“2008-12-13”
17820 validation=“http://someregistrar.com/xxxx”>
17821 <table name="METER_Z_AAA_TBL" number="322"
17822 type="METER_Z_AAA_RCD" accessibility="READONLY"
17823 label="Meter-Z AAA Record">
17824 <packedRecord name="METER_Z_AAA_RCD">
17825 <element name="FIELD_1" type="UINT8">
17826 <description>An 8-bit field 1.</description>
17827 </element>
17828 <element name="FIELD_2" type="UINT8">
17829 <description>An 8-bit field 2.</description>
17830 </element>
17831 </packedRecord>
17832 </table>
17833 <table name="METER_Z_BBB_TBL" number="323"
17834 type="METER_Z_BBB_RCD" accessibility="READONLY"
17835 label="Meter-Z BBB Record">
17836 <packedRecord name="METER_Z_BBB_RCD">
17837 <element name="FIELD_1" type="STRING" length=”10”>
17838 <description>A 10 character field 1.</description>
17839 </element>
17840 <element name="FIELD_2" type="STRING" length=”10”>
17841 <description>A 10 character field 2.</description>
Annex L / Practical examples and use-cases 535
Examples: Initial registration conditions—nonempty TDL
DRAFT ANSI C12.19-2012

17842 </element>
17843 </packedRecord>
17844 </table>
17845 <qualify>
17846 <table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
17847 <table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
17848 </qualify>
17849 </tdl>

536
DRAFT ANSI C12.19-2012

17850 Annex M (informative) Bibliography


17851 Bibliographical references are resources that provide additional or helpful material but do not need to be understood
17852 or used to implement this standard. Reference to these resources is made for informational use only.

17853 [B1] CRC Standard Mathematical Tables and Formulae, 30th ed. Boca Raton, FL: CRC Press, 2011.

17854 [B2] Grisby, L. L., ed. The Electric Power Engineering Handbook. Boca Raton, FL: CRC Press, 2000.

17855 [B3] Handbook for Electricity Metering, 10th ed. Washington, DC: Edison Electric Institute, 2002.

17856 [B4] Hannah, A.“Algorithm for computing and programming transformer loss constants in solid-state
17857 meters,” 1998 Rural Electric Power Conference, pp. B3-1–B3-17.

17858 [B5] Measurement Canada, 1999-07-26, Principles for Sealing Meters and Trade Devices. 20

17859 [B6] Measurement Canada, MC S-EG-05:2011, Measurement Canada Specifications for the Approval of
17860 Software Controlled Electricity and Gas Metering Devices.

17861 [B7] Measurement Canada, MC S-EG-06:2011, Measurement Canada Specifications Relating to Event
17862 Loggers for Electricity and Gas Metering Devices (supersedes: IS-E-01).

17863 [B8] Measurement Canada, Utility Industry Standard Tables User’s Guide, Revised Version 3.2, 2005.

17864 [B9] Merritt, S. Y., and S. D. Chaitkin, “No-load versus load loss,” IEEE Industry Applications Magazine,
17865 pp. 21–28, Nov./Dec. 2003.

17866 [B10] The IEEE Standards Dictionary: Glossary of Terms & Definitions. Piscataway, NJ: IEEE.21

17867 [B11] The Unified Modeling Language Reference Manual. The Addison-Wesley Object Technology Series.
17868 Upper Saddle River, NJ: Addison-Wesley, 1999.

17869 [B12] The Unified Modeling Language Reference Manual, 2d ed. Upper Saddle River, NJ: Addison-Wesley,
17870 2005.

17871 [B13] Unicode Consortium, The Unicode Standard, Version 4.0. Boston, MA: Addison-Wesley, 2003.22

17872 [B14] XML Path Language (XPATH), Version 2.0, 2d ed., W3C Recommendation 14, Dec. 2010.23

20
MC publications are available from Measurement Canada (http://www.ic.gc.ca/eic/site/mc-mc.nsf/eng/home).
21
The IEEE Standards Dictionary Online subscription is available at http://www.ieee.org/portal/innovate/products/standard/
standards_dictionary.html.
22
This document is available at http://www.unicode.org/versions/Unicode4.0.0/.
23
World Wide Web (W3) Consortium publications are available from the World Wide Web Consortium (http://www.w3.org/). This document is
available at http://www.w3.org/TR/xpath20/.
Annex M 537
DRAFT ANSI C12.19-2012

17873 Annex N (informative) Historical Background

17874 N.1 Foreword of American National Standard C12.19-1997


17875
17876 Foreword (This foreword is not part of American National Standard for Protocol Specification for ANSI C12.19-1997.)
17877
17878 The ANSI C12.19 standard provides a common data structure for use in transferring data to and from utility end
17879 devices, typically meters. It has been approved after considerable cooperative effort among utilities, electric meter
17880 manufacturers, Industry Canada, AMRA and other interested parties.
17881
17882 The standard data structure is defined as sets of tables. Table sets are grouped together into segments called decades.
17883 Each decade pertains to a particular feature set and data type such as Time of Use, Load Profile, etc. Data is
17884 transferred by reading from or writing to a particular table or portion of a table. It is anticipated that the set of
17885 standard tables will grow to meet the need for common implementations of expanded functionality.
17886
17887 The Secretariat of the Accredited Standards Committee on Electricity Metering, C12, is held by the National Electrical
17888 Manufacturers Association (NEMA) and the National Institute of Standards and Technology. At the time this standard
17889 was processed and approved, the C12 Committee had the following members:
17890
17891 Nile Oldham, Chairman
17892 Vince Baclawski, Secretary
17893
17894 Organization Represented Name of Representative
17895
17896 Underwriters Laboratory Ron Breschini
17897
17898 Idaho Power Company Richard Canderan
17899
17900 ABB Power T&D Company, Inc. Tom C. Drew
17901 Ted York
17902
17903 GE Warren Germer
17904
17905 City of Los Angeles Cruz R. Gomez
17906
17907 State of New York Edmund J. Hofmann
17908
17909 Memphis Light H. Carey Jones
17910
17911 Rural Utilities Service George Keel
17912
17913 B-Line Systems, Inc. Francis A. Marta
17914
17915 Clemson University D. McAuliff
17916
17917 Florida Power & Light Co. John McEvoy
17918
17919 Edison Electric Institute Gary N. Miller
17920
17921 City of Austin Metering Operations Herman M. Millican
17922
17923 T. U. Electric James Mining
17924
17925 National Institute of Standards & Technology Nile Oldham
538
DRAFT ANSI C12.19-2012

17926
17927 Pacificorp Lauren Pananen
17928 Clark J. Smith
17929
17930 Florida Public Service Commission James Ruehl
17931
17932 Arizona Public Service Company Paul Taylor
17933
17934 Pacific Gas & Electric Tim Vahstrom
17935
17936 The following members of the C12.17 Data Communications Protocols Committee were actively involved in the
17937 revision of this standard:
17938
17939 Wesley Ray, Chairman
17940
17941 Organization Represented Name of Representative
17942
17943 Indianapolis Power & Light Company Robert D. Adams
17944
17945 Landis & Gyr Michael Anderson
17946
17947 Public Utillities Commission Vlado Bevc
17948
17949 APTECH, Inc. William C. Beverly, Jr.
17950
17951 ITRON William J. Buckley
17952
17953 American Innovations, Ltd. Randall Chance
17954
17955 Rick Darby
17956
17957 Entergy Services, Inc. Lynnda K. Ell
17958
17959 Lucent Technologies Stuart M. Garland
17960
17961 Centerior Energy Corporation Kenneth E. Hauzer
17962
17963 T U Electric Brad Johnson
17964 James Mining (Alt.)
17965
17966 LILCO Sunil Katwala
17967
17968 MidAmerican Energy Company Jerry Klipkenberg
17969
17970 Commonwealth Edison Larry Kotewa
17971
17972 Echelon Chris Stanfield
17973 Pradip Madan (Alt.)
17974
17975 Southern California Edison Company Kit Maughan
17976 Mario A. Natividad
17977
17978 Georgia Power Company Kevin McDonald
17979 Terry Penn
17980
Annex N / Foreword of American National Standard C12.19-1997 539
DRAFT ANSI C12.19-2012

17981 Radix Corporation Laurel Miller


17982
17983 City of Austin Metering Operations Herman M. Millican
17984
17985 Future DOS R&D, Inc. Avygdor Moise
17986
17987 National Institute of Standards & Technology Nile Oldham
17988
17989 Pacificorp Lauren Pananen
17990 Clark J. Smith
17991
17992 Pacific Gas & Electric Co. Charles A. Partridge
17993
17994 GE Meter Jack Pazdon
17995
17996 Schlumberger Electricity Marc Purc
17997
17998 American Electric Power Servs. Corp. William A. Randle, Jr.
17999
18000 Duke Energy Company Wesley Ray
18001
18002 Institute of Gas Technology William F. Rush
18003
18004 Utility Translation Systems Chris M. Schafer
18005
18006 Bell Sotuh Telecommunications Jerry Schull
18007
18008 Radix Corporation Brian Simpson
18009
18010 Arizona Public Service Company Paul Taylor (Alt.)
18011
18012 Wisconsin Public Service Corp. Thomas C. Thiel
18013
18014 Tucker Engineering Richard Tucker
18015
18016 Nertec Design Michael Veillette
18017
18018 DAC Steve Weil
18019
18020 ABB Power T&D Company, Inc. Ted York
18021
18022

18023 N.2 Foreword of American National Standard C12.19-2008


18024
18025 Foreword (This Foreword is not part of American National Standard C12.19-2008.)
18026
18027 The ANSI C12.19 standard provides a common data structure for use in transferring data to and from utility End
18028 Devices, typically meters. It has been approved after considerable cooperative effort among utilities, meter
18029 manufacturers, automated meter reading service companies, ANSI, Measurement Canada (for Industry Canada),
18030 NEMA, IEEE, Utilimetrics, and other interested parties.
18031
18032 The standard data structure is defined as sets of tables. The tables are grouped together into sections called decades.
18033 Each decade pertains to a particular feature-set and related function such as Time-of-use, Load Profile, etc. Table
540
DRAFT ANSI C12.19-2012

18034 data is transferred from or to the End Device by reading from or writing to a particular table or portion of a table.
18035
18036 The second release of the standard represents a philosophical departure from the first release. This release of the
18037 standard is intended to accommodate the concept of an advanced metering infrastructure such as that identified by
18038 the Office of Electricity Delivery and Energy Reliability of the U.S. Department of Energy; the Smart Metering
18039 Initiative of the Ontario Ministry of Energy (Canada) and the stated requirements of Measurement Canada for the
18040 approval of a metering device for use in Canada.
18041
18042 This standard covers a broader range of functionality relative to its previous version; however, it does not follow that
18043 implementations of this standard need to be large or complex. Implementers are encouraged to choose an
18044 appropriate subset that is suitable for their needs. Therefore, it is very unlikely for any one End Device to embed all
18045 tables or even the majority of the tables described herein. Thereby, implementers are encouraged to deploy their
18046 desired functionalities using complete and consistent suites of standard tables from standard decades to the largest
18047 extent practical.
18048
18049 Readers that are acquainted with ANSI C12.19-1997 will discover that the new version contains many changes. The
18050 changes may be categorized as follows:
18051
18052 1. Additions of new features or new functionality through the introduction of new tables, decades, or syntax.
18053 2. Extensions or improvements to pre-existing functionality in support of contemporary and anticipated
18054 industry needs.
18055 3. Corrections of errors and provision of clarifications that address known deficiencies and documentation of
18056 the accepted or anticipated industry practice.
18057 4. Introduction of XML-based table description language (TDL/EDL) and documentation of services
18058 supporting the needs expressed by initiatives such as Smart Metering, Advanced Metering Infrastructure
18059 and alike.
18060 5. Removal of features that were found undesirable.
18061 6. Provision of guidelines for implementers of this standard and developers of future versions of the standard
18062 on backward compatibility and planned phase-out of obsolete features.
18063
18064 Some of the many new features introduced in this revision of the standard include:
18065
18066 Addition of new data types in support of high-precision sub-second time stamps, such as HTIME_DATE
18067 and HTIME.
18068 Creation of new syntax for the aggregation of transmitted characters into strings, STRING.
18069 Creation of new syntax for the aggregation of transmitted octets into opaque blobs, BINARY.
18070 Addition of new Decade 9, Telephone tables. This decade imports and supersedes the tables and syntax
18071 defined in ANSI C12.21.
18072 Creation of new Decade 11, Load Control and Pricing Tables. This decade provides for demand-side
18073 management capabilities, including load control, demand response, prepayment and direct customer billing
18074 functions.
18075 Creation of Decade 14, Extended User-defined Tables. This decade provides capability for transmitting
18076 and receiving a contiguous stream of element and sub-element data. The data are referenced methodically
18077 to the legitimate and formal C12.19 data element.
18078 Creation of Decade 15, Quality-of-service Tables. This decade provides control, capture and logging of
18079 high-precision Quality-of-service performance indicators, such as power quality, and the inclusion of
18080 detailed waveforms, power spectra and related information.
18081 Creation of Decade 16, One-way Devices Tables. This decade provides control and management tables in
18082 support of one-way (talk-only) End Devices.
18083
18084 Some extensions or improvements to pre-existing functionality include:
18085
18086 Table 0, General Configuration Table, retains its original form and it is backward compatible with ANSI
18087 C12.19-1997. However, a few notable control elements were modified:

Annex N / Foreword of American National Standard C12.19-2008 541


DRAFT ANSI C12.19-2012

18088
18089 i. Extended CHAR_FORMAT to support UTF-8.
18090 ii. Replaced MANUFACTURER element with DEVICE_CLASS element to facilitate a more
18091 dynamic End Device data model recognition.
18092 iii. Extended TM_FORMAT in support of high-precision, sub-second, time stamps.
18093
18094 Changed all data source selections in all tables (e.g., Table 22) from UINT8 to SOURCE_SELECT_RCD.
18095 This form is backward and forward compatible with ANSI C12.19-1997 when MODEL_SELECT is 0.
18096 Table 3, End Device Mode Status Table, incorporates the changes proposed in ANSI C12.21.
18097 Table 7, Procedure Initiate Table, and Table 8, Procedure Response Table, were updated and extended to
18098 provide procedures in support of new functionality that is needed by:
18099 i. Decade 7, History and Event Log Tables;
18100 ii. Decade 9, Telephone Control Tables;
18101 iii. Decade 11, Load Control and Pricing Tables;
18102 iv. Decade 12, Network Control Tables and
18103 v. Decade 15 Quality-of-service Tables.
18104
18105 Table 12, Unit of Measure Entry table, was expanded with new UOMs.
18106 Table 17, Transformer Loss Compensation, was added to Decade 1.
18107 Extended the event log tables to provide a new capability to manage and detect program changes through
18108 the life of the End Device.
18109 Extended the event log tables to provide a new capability to manage, authenticate and verify the integrity of
18110 data read from an End Device service point by any receiving client application that may reside across any
18111 communication system.
18112 Extended the table type that can be transmitted to include up to 2040 extended-user-defined tables via
18113 TABLE_IDA_BFLD. Also introduced a new Decade 14, Extended User-defined Tables, to manage the
18114 collation of table elements, down to the bit level, into extended-user-defined tables.
18115
18116 Major corrections of errors and provision of clarifications include:
18117
18118 Section 7.0, Compliance, was updated to reduce variations in the implementation of the standard.
18119 Section 8.0, Table Transportation Issues, was updated to include the “Errata to ANSI Standard C12.19-
18120 1997, Utility Industry Data Tables” published in 2001. It also updated to harmonize this standard with
18121 ANSI C12.18, ANSI C12.21 and ANSI C12.22.
18122 Table 7, Procedure Initiate Table, and Table 8, Procedure Response Table, indices calculations were
18123 completely rewritten in order to eliminate a fatal error in the production of unique indices for procedure
18124 parameters when using index/count access methods.
18125
18126 Removal of features that were found undesirable include:
18127
18128 Section 5.0, Syntax, no longer supports two-dimensional arrays. Appropriate corrections were applied
18129 wherever this syntax was used. This does not impact the offset/count data access methods.
18130
18131 The reader is encouraged to review the descriptive text as it brings significant clarifications and examples of use
18132 where appropriate.
18133
18134 Suggestions for improvement to this Standard are welcome. They should be sent to:
18135
18136 National Electrical Manufacturers Association
18137 Vice President, Technical Services
18138 1300 North 17th Street
18139 Suite 1752
18140 Rosslyn, VA 22209
18141
18142 The Secretariat of the Accredited Standards Committee on Electricity Metering, C12, is held by the National Electrical
542
DRAFT ANSI C12.19-2012

18143 Manufacturers Association (NEMA) and the National Institute of Standards and Technology. At the time this standard
18144 was processed and approved, the C12 Committee had the following members:
18145
18146 Tom Nelson, Chairman
18147 Paul Orr, Secretary
18148
18149 Organization Represented: Name of Representative:
18150 Georgia Power Larry Barto
18151 Underwriters Laboratories, Inc. Ron Breschini
18152 Itron, Inc. Brent Cain
18153 GE Energy Curt Crittenden
18154 Florida Power & Light Co. Jim DeMars
18155 Public Service Electric & Gas David Ellis
18156 Radian Research, Inc. Tim Everidge
18157 Milbank Manufacturing Shawn Glasgow
18158 Technology for Energy Corporation Bill Hardy
18159 Schweitzer Engineering Labs, Inc. Bob Hughes
18160 Oncor Group Brad Johnson
18161 Center for Neighborhood Technology Lawrence Kotewa
18162 Austin Energy Herman Millican
18163 Future DOS R&D Avygdor Moise
18164 Duke Energy Company Tim Morgan
18165 Natl Inst. of Standards & Technology Tom Nelson
18166 Pacific Gas & Electric Company D. Young Nguyen
18167 Xcel Energy EMC Dan Nordell
18168 Plexus Dave Scott
18169 EnerNex Corporation Aaron Snyder
18170 Sensus Metering George Steiner
18171 Baltimore Gas & Electric Company Jim Thurber
18172 Tucker Engineering Richard Tucker
18173 Trilliant Networks, Inc. Michel Veillette
18174 Landis+Gyr John Voisine
18175 Watthour Engineering Co. H.A. Wall
18176
18177 The following members of Working Group 2 of Subcommittee 17 worked on the development of this revision of the
18178 standard since its first publication:
18179
18180 Avygdor Moise, Chairman
18181 Michael Anderson, Past Chairman
18182 Richard D. Tucker, Vice Chairman
18183 Terry L. Penn, Editor
18184 Paul Orr, Secretary
18185
18186
Organizations Represented: Name of Representative:

American Innovations Ltd. John Taylor


Austin International, Inc. William Beverly
Badger Meter Greg Gomez
Center for Neighborhood Technology Larry Kotewa
C-MAC Raymond Gaudreault
Consultant for Itron, Inc. William Buckley
Datamatic Energy Systems Robert McMichael
Distribution Control Systems, Inc. Mark Iacoviello
Peter Martin
Annex N / Foreword of American National Standard C12.19-2008 543
DRAFT ANSI C12.19-2012

Organizations Represented: Name of Representative:

Duke Energy Corp. David Wiseman


Wesley Ray
Elster Electricity, LLC Edward J. Beroset
Future DOS R&D, Inc. Avygdor Moise
General Electric Virginia Zinkowski
Jack Pazdon
Hexagram, Inc. Kendall Smith
Hydro-Québec Jean Joly
Hypertek Inc. for EPRI Martin Burns
IGT William Rush
IntraLynx Canada Ron Begley
Invensys Metering Systems William Mazza
Itron, Inc. Don Grundhauser
Aaron Snyder
Chris Schafer
Janice Jennings
Ken Gilmer
Landis+Gyr Inc. Bin Qiu
Michael Anderson
Lucent Technologies, Bell Labs Stuart Garland
Main Street Networks Thomas Chen
Measurement Canada Vuong Nguyen
Northern States Power Co. Dan Nordell,
Shawn Bagley
Ontario Hydro Services Co. Alex Lunycz
Open University John Newbury
Power Measurement Richard Stetler
Rochester Instrument Systems Gregory Bray
Schlumberger Brian Seal
Marc Purc
Sensus Metering Systems Norbert Balko
Southern Company Terry L. Penn
Tantalus Systems Corp. Keith Martin
Terasen Gas David Taylor
THY Consulting, Inc. Ted York
Trilliant Networks Michel Veillette
Paul Aubin
Tucker Engineering Associates Inc. Richard D. Tucker
18187

544

You might also like