Ansi c12.19 2008

Download as pdf or txt
Download as pdf or txt
You are on page 1of 580

ANSI C12.

19-2008
American National Standard
For Utility Industry
End Device
Data Tables

ANSI C12.19-2008

American National Standard


For Utility Industry
End Device
Data Tables

Secretariat:

National Electrical Manufacturers Association


IEEE Number: 1377-2009
Measurement Canada Number: MC1219-2009
Approved February 24, 2009

American National Standards Institute, Inc.

NOTICE AND DISCLAIMER


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

ANSI C12.19-2008

AMERICAN
NATIONAL
STANDARD

Approval of an American National Standard requires verification by


ANSI that the requirements for due process, consensus, and other
criteria for approval have been met by the standards developer.
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.

Published by

National Electrical Manufacturers Association


1300 North 17th Street, Rosslyn, VA 22209
Copyright 2008 by National Electrical Manufacturers Association
All rights reserved including translation into other languages, reserved under the Universal Copyright
Convention, the Berne Convention for the Protection of Literary and Artistic Works, and the International
and Pan American Copyright Conventions.
No part of this publication may be reproduced in any form, in an electronic retrieval system or otherwise, without the
prior written permission of the publisher.

Printed in the United States of America

ANSI C12.19-2008

This page intentionally left blank.

ii

ANSI C12.19-2008

Contents
Page

1 SCOPE..................................................................................................................................................... 1
2 REFERENCES......................................................................................................................................... 1
2.1 NORMATIVE ......................................................................................................................................... 1
2.2 OTHER ................................................................................................................................................ 2
3 DEFINITIONS .......................................................................................................................................... 3
3.1 ACT ................................................................................................................................................... 3
3.2 ADDRESS ............................................................................................................................................ 3
3.3 ADVANCED METERING INFRASTRUCTURE (AMI).................................................................................... 3
3.4 ALIAS .................................................................................................................................................. 3
3.5 ARRAY.............................................................................................................................................. 3
3.6 BIT FIELD (BFLD) ............................................................................................................................ 3
3.7 BLOCK ................................................................................................................................................ 3
3.8 CHANNEL ............................................................................................................................................ 3
3.9 CLOCK ................................................................................................................................................ 3
3.10 COUNT .............................................................................................................................................. 3
3.11 CUMULATIVE DEMAND ....................................................................................................................... 3
3.12 CUSTOMER ........................................................................................................................................ 4
3.13 DATA ENCRYPTION ............................................................................................................................ 4
3.14 DECADE ............................................................................................................................................ 4
3.15 DEFAULT SET .................................................................................................................................... 4
3.16 DEMAND............................................................................................................................................ 4
3.17 DEMAND, BLOCK ............................................................................................................................... 4
3.18 DEMAND, MAXIMUM ........................................................................................................................... 4
3.19 DEMAND, MINIMUM ............................................................................................................................ 4
3.20 DEMAND, PRESENT ........................................................................................................................... 4
3.21 DEMAND, SLIDING WINDOW (ROLLING-INTERVAL)............................................................................... 4
3.22 DEPRECATED .................................................................................................................................... 4
3.23 DIM .................................................................................................................................................. 4
3.24 DOCUMENT TYPE DEFINITION (DTD) .................................................................................................. 4
3.25 ELEMENT .......................................................................................................................................... 4
3.26 ELEMENT, ATOMIC ............................................................................................................................ 5
3.27 ELEMENT, FINAL................................................................................................................................ 5
3.28 ELEMENT, VOLATILE .......................................................................................................................... 5
3.29 ELEMENT-COUNT ............................................................................................................................... 5
3.30 END DEVICE ...................................................................................................................................... 5
3.31 END DEVICE AGENT........................................................................................................................... 5
3.32 EVENT............................................................................................................................................... 5
3.33 EVENT INSTANCE ............................................................................................................................... 5
3.34 EVENT LOGGER DATA........................................................................................................................ 5
3.35 EVENT LOGGER RECORD ................................................................................................................... 5
3.36 EVENT, CALL .................................................................................................................................... 6
3.37 EVENT, CHANGE ................................................................................................................................ 6
3.38 EVENT, SIGNAL ................................................................................................................................. 6
3.39 EVENT, TIME ..................................................................................................................................... 6
3.40 EXCHANGE DATA LANGUAGE (EDL)................................................................................................... 6
3.41 EXTENSIBLE MARKUP LANGUAGE (XML)............................................................................................ 6
3.42 INDEX ................................................................................................................................................ 6
3.43 INTERHARMONICS .............................................................................................................................. 6
iii

ANSI C12.19-2008

3.44 LOAD PROFILE .................................................................................................................................. 6


3.45 METER .............................................................................................................................................. 6
3.46 METROLOGICAL ADJUSTMENT ............................................................................................................ 6
3.47 MODE, FACTORY ............................................................................................................................... 7
3.48 MODE, METER SHOP ......................................................................................................................... 7
3.49 MODE, METERING.............................................................................................................................. 7
3.50 MODE, TEST...................................................................................................................................... 7
3.51 OBJECT ............................................................................................................................................ 7
3.52 OBJECT, ELEMENT ............................................................................................................................ 7
3.53 OBJECT, TABLE ................................................................................................................................ 7
3.54 OCTET .............................................................................................................................................. 7
3.55 OFFSET ............................................................................................................................................. 7
3.56 OVERRIDE ......................................................................................................................................... 7
3.57 PACKED RECORD......................................................................................................................... 7
3.58 PROCEDURE ...................................................................................................................................... 7
3.59 PROCEDURE, MANUFACTURER ........................................................................................................... 7
3.60 PROCEDURE, METROLOGICAL ............................................................................................................ 7
3.61 PROCEDURE, STANDARD ................................................................................................................... 8
3.62 QUADRANT ........................................................................................................................................ 8
3.63 REDEFINE.......................................................................................................................................... 8
3.64 REGISTER ......................................................................................................................................... 8
3.65 REGISTER, SECURED ......................................................................................................................... 9
3.66 REPLACE .......................................................................................................................................... 9
3.67 RESERVED ........................................................................................................................................ 9
3.68 SEAL................................................................................................................................................. 9
3.69 SEAL, LOGICAL (EVENT LOGGABLE) .................................................................................................. 9
3.70 SEAL, PHYSICAL................................................................................................................................ 9
3.71 SEALABLE PARAMETER ..................................................................................................................... 9
3.72 SEASON ............................................................................................................................................ 9
3.73 SECURED READ ................................................................................................................................. 9
3.74 SELF-READ...................................................................................................................................... 10
3.75 SET................................................................................................................................................ 10
3.76 SIGNATURE ..................................................................................................................................... 10
3.77 STRICT ............................................................................................................................................ 10
3.78 STRING ......................................................................................................................................... 10
3.79 SUB-ELEMENT ................................................................................................................................. 10
3.80 TABLE ............................................................................................................................................. 10
3.81 TABLE DEFINITION LANGUAGE (TDL) ............................................................................................... 10
3.82 TABLE, EXTENDED USER-DEFINED (EUDT) ...................................................................................... 10
3.83 TABLE, FUNCTION LIMITING CONTROL (FLC).................................................................................... 10
3.84 TABLE, MANUFACTURER .................................................................................................................. 10
3.85 TABLE, METROLOGICAL ................................................................................................................... 10
3.86 TABLE, PENDING ............................................................................................................................. 10
3.87 TABLE, PROGRAM ........................................................................................................................... 11
3.88 TABLE, SECURED ............................................................................................................................ 11
3.89 TABLE, STANDARD .......................................................................................................................... 11
3.90 TABLE, USER-DEFINED (UDT).......................................................................................................... 11
3.91 TARIFF ............................................................................................................................................ 11
3.92 TIER ................................................................................................................................................ 11
3.93 TIME-OF-USE (TOU) METERING ...................................................................................................... 11
3.94 UNDEFINED ..................................................................................................................................... 11
3.95 UTILITY ........................................................................................................................................... 11
4 GENERAL.............................................................................................................................................. 12
4.1 STANDARD TABLES ........................................................................................................................... 12

iv

ANSI C12.19-2008

Standard Tables Grouping ............................................................................................... 12


4.1.1
4.1.2
Standard Tables Properties ............................................................................................. 12
4.1.3
Standard Procedure Properties ....................................................................................... 13
4.2 MANUFACTURER TABLES ................................................................................................................... 14
4.2.1
Manufacturer Tables Grouping........................................................................................ 14
4.2.2
Manufacturer Tables Properties ...................................................................................... 14
4.2.3
Manufacturer Procedure Properties................................................................................ 14
4.3 PACKED RECORD, BIT FIELD AND ELEMENT PROPERTIES ................................................................... 15
4.4 EXTENDED USER-DEFINED TABLES PROPERTIES................................................................................. 15
5 SYNTAX................................................................................................................................................. 16
5.1 DESCRIPTIVE SYNTAX ........................................................................................................................ 16
6 SPECIAL DATA TYPES........................................................................................................................ 16
6.1 CHARACTER SET SELECTION ............................................................................................................. 16
6.2 NON-INTEGER FORMATS .................................................................................................................... 17
6.2.1
STRING Numbers .............................................................................................................. 18
6.3 DATE AND TIME FORMATS .................................................................................................................. 19
6.3.1
HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME types .................... 20
6.3.2
RDATE type........................................................................................................................ 25
6.3.3
DATE Type ......................................................................................................................... 26
6.4 COMMON TABLE OR PROCEDURE IDENTIFIER FORMATS ........................................................................ 27
6.4.1
TABLE_IDA_BFLD bit field............................................................................................... 27
6.4.2
TABLE_IDB_BFLD bit field............................................................................................... 28
6.4.3
TABLE_IDC_BFLD bit field............................................................................................... 29
6.4.4
SOURCE_SEL_RCD .......................................................................................................... 30
7 COMPLIANCE & COMPATIBILITY ...................................................................................................... 31
7.1 COMPLIANCE ..................................................................................................................................... 31
7.2 BACKWARD AND FORWARD COMPATIBILITY ........................................................................................ 31
8 TABLE TRANSPORTATION ISSUES .................................................................................................. 33
8.1 MINIMUM SERVICES AND PARAMETERS ............................................................................................... 33
8.1.1
Read Service ...................................................................................................................... 33
8.1.2
Write Service...................................................................................................................... 34
8.1.3
Partial Table Access Using the Index/element-count Method...................................... 36
8.1.4
Partial Table Access Using the Offset/octet-count Method.......................................... 38
8.1.5
Index Count Access Method Examples .......................................................................... 39
8.2 PENDING EVENT DESCRIPTION ........................................................................................................... 39
8.3 LIST MANAGEMENT DESCRIPTION ....................................................................................................... 42
9 TABLES................................................................................................................................................. 44
9.1 DECADE 0: GENERAL CONFIGURATION TABLES .................................................................................. 44
9.1.1
Table 00 General Configuration Table ............................................................................ 44
9.1.2
Table 01 General Manufacturer Identification Table...................................................... 51
9.1.3
Table 02 Device Nameplate Table.................................................................................... 53
9.1.4
Table 03 End Device Mode Status Table......................................................................... 61
9.1.5
Table 04 Pending Status Table ........................................................................................ 64
9.1.6
Table 05 Device Identification Table ............................................................................... 67
9.1.7
Table 06 Utility Information Table.................................................................................... 68
9.1.8
Table 07 Procedure Initiate Table .................................................................................... 71
9.1.9
Table 08 Procedure Response Table .............................................................................. 76
9.1.10 Standard Procedures ........................................................................................................ 81
9.1.10.1
9.1.10.2

Procedure 00 Cold Start...........................................................................................................81


Procedure 01 Warm Start.........................................................................................................81

ANSI C12.19-2008

9.1.10.3
9.1.10.4
9.1.10.5
9.1.10.6
9.1.10.7
9.1.10.8
9.1.10.9
9.1.10.10
9.1.10.11
9.1.10.12
9.1.10.13
9.1.10.14
9.1.10.15
9.1.10.16
9.1.10.17
9.1.10.18
9.1.10.19
9.1.10.20
9.1.10.21
9.1.10.22
9.1.10.23
9.1.10.24
9.1.10.25
9.1.10.26
9.1.10.27
9.1.10.28
9.1.10.29
9.1.10.30
9.1.10.31
9.1.10.32
9.1.10.33

Procedure 02 Save Configuration ...........................................................................................81


Procedure 03 Clear Data ..........................................................................................................81
Procedure 04 Reset List Pointers ...........................................................................................81
Procedure 05 Update Last Read Entry ...................................................................................82
Procedure 06 Change End Device Mode ................................................................................83
Procedure 07 Clear Standard Status Flags ............................................................................84
Procedure 08 Clear Manufacturer Status Flags.....................................................................84
Procedure 09 Remote Reset....................................................................................................85
Procedure 10 Set Date and/or Time ........................................................................................86
Procedure 11 Execute Diagnostics Procedure ......................................................................88
Procedure 12 Activate All Pending Tables .............................................................................88
Procedure 13 Activate Specific Pending Table(s) .................................................................88
Procedure 14 Clear All Pending Tables..................................................................................89
Procedure 15 Clear Specific Pending Table(s) ......................................................................89
Procedure 16 Start Load Profile..............................................................................................89
Procedure 17 Stop Load Profile ..............................................................................................90
Procedure 18 Log In.................................................................................................................90
Procedure 19 Log Out ..............................................................................................................90
Procedure 20 Initiate an Immediate Call.................................................................................91
Procedure 21 Direct Load Control ..........................................................................................91
Procedure 22 Modify Credit.....................................................................................................92
Procedure 23 Reserved............................................................................................................93
Procedure 24 Reserved............................................................................................................93
Procedure 25 Reserved............................................................................................................93
Procedure 26 Reserved............................................................................................................93
Procedure 27 Clear Pending Call Status ................................................................................93
Procedure 28 Start Quality-of-service Monitors ....................................................................93
Procedure 29 Stop Quality-of-service Monitors.....................................................................93
Procedure 30 Start Secured Register .....................................................................................94
Procedure 31 Stop Secured Register .....................................................................................95
Procedure 32 Set Precision Date and/or Time .......................................................................96

9.2 DECADE 1: DATA SOURCE TABLES .................................................................................................... 98


9.2.1
Table 10 Data Source Dimension Limits Table .............................................................. 99
9.2.2
Table 11 Actual Data Sources Limiting Table .............................................................. 102
9.2.3
Table 12 Units of Measure Entry Table ......................................................................... 104
9.2.4
Table 13 Demand Control Table .................................................................................... 113
9.2.5
Table 14 Data Control Table ........................................................................................... 115
9.2.6
Table 15 Constants Table ............................................................................................... 116
9.2.7
Table 16 Source Definition Table................................................................................... 123
9.2.8
Table 17 Transformer Loss Compensation Table........................................................ 125
9.3 DECADE 2: REGISTER TABLES ......................................................................................................... 127
9.3.1
Table 20 Register Dimension Limits Table ................................................................... 127
9.3.2
Table 21 Actual Register Limiting Table ....................................................................... 131
9.3.3
Table 22 Data Selection Table........................................................................................ 134
9.3.4
Table 23 Current Register Data Table ........................................................................... 135
9.3.5
Table 24 Previous Season Data Table........................................................................... 137
9.3.6
Table 25 Previous Demand Reset Data Table .............................................................. 138
9.3.7
Table 26 Self-read Data Table ........................................................................................ 139
9.3.8
Table 27 Present Register Selection Table................................................................... 141
9.3.9
Table 28 Present Register Data Table ........................................................................... 142
9.4 DECADE 3: LOCAL DISPLAY TABLES ................................................................................................ 143
9.4.1
Table 30 Display Dimension Limits Table..................................................................... 143
9.4.2
Table 31 Actual Display Limiting Table......................................................................... 145
9.4.3
Table 32 Display Source Table....................................................................................... 147
9.4.4
Table 33 Primary Display List Table .............................................................................. 148
9.4.5
Table 34 Secondary Display List Table ......................................................................... 150
9.5 DECADE 4: SECURITY TABLES ......................................................................................................... 152
9.5.1
Table 40 Security Dimension Limits Table ................................................................... 152

vi

ANSI C12.19-2008

Table 41 Actual Security Limiting Table ....................................................................... 154


9.5.2
9.5.3
Table 42 Security Table ................................................................................................. 155
9.5.4
Table 43 Default Access Control Table......................................................................... 157
9.5.5
Table 44 Access Control Table ...................................................................................... 159
9.5.6
Table 45 Key Table .......................................................................................................... 161
9.5.7
Table 46 Reserved........................................................................................................... 162
9.5.8
Table 47 Reserved........................................................................................................... 162
9.6 DECADE 5: TIME-OF-USE TABLES .................................................................................................... 163
9.6.1
Table 50 Time and TOU Dimension Limits Table ......................................................... 165
9.6.2
Table 51 Actual Time and TOU Limiting Table ............................................................. 168
9.6.3
Table 52 Clock Table....................................................................................................... 171
9.6.4
Table 53 Time Offset Table............................................................................................. 173
9.6.5
Table 54 Calendar Table ................................................................................................. 174
9.6.6
Table 55 Clock State Table ............................................................................................. 180
9.6.7
Table 56 Time Remaining Table..................................................................................... 182
9.6.8
Table 57 Precision Clock State Table............................................................................ 182
9.7 DECADE 6: LOAD PROFILE TABLES .................................................................................................. 184
9.7.1
Table 60 Load Profile Dimension Limits Table............................................................. 184
9.7.2
Table 61 Actual Load Profile Limiting Table................................................................. 190
9.7.3
Table 62 Load Profile Control Table.............................................................................. 194
9.7.4
Table 63 Load Profile Status Table................................................................................ 197
9.7.5
Table 64 Load Profile Data Set One Table .................................................................... 200
9.7.6
Table 65 Load Profile Data Set Two Table.................................................................... 205
9.7.7
Table 66 Load Profile Data Set Three Table ................................................................. 208
9.7.8
Table 67 Load Profile Data Set Four Table ................................................................... 211
9.8 DECADE 7: HISTORY & EVENT LOGS ................................................................................................ 214
9.8.1
Table 70 Log Dimension Limits Table........................................................................... 216
9.8.2
Table 71 Actual Log Limiting Table............................................................................... 219
9.8.3
Table 72 Events Identification Table ............................................................................. 222
9.8.4
Table 73 History Log Control Table............................................................................... 223
9.8.5
Table 74 History Log Data Table.................................................................................... 225
9.8.6
Table 75 Event Log Control Table ................................................................................. 228
9.8.7
Table 76 Event Log Data Table ...................................................................................... 230
9.8.8
Table 77 Event Log and Signatures Enable Table ....................................................... 233
9.8.9
Table 78 End Device Program State Table ................................................................... 236
9.8.10 Table 79 Event Counters Table ...................................................................................... 240
9.9 DECADE 8: USER-DEFINED TABLES .................................................................................................. 241
9.9.1
Table 80 User-defined Tables Dimension Limits Table............................................... 241
9.9.2
Table 81 Actual User-defined Tables Limiting Table................................................... 244
9.9.3
Table 82 User-defined Tables List Table....................................................................... 246
9.9.4
Table 83 User-defined Tables Selections Table........................................................... 248
9.9.5
Table 84 User-defined Table Zero.................................................................................. 249
9.9.6
Table 85 User-defined Table One .................................................................................. 250
9.9.7
Table 86 User-defined Table Two .................................................................................. 251
9.9.8
Table 87 User-defined Table Three................................................................................ 252
9.9.9
Table 88 User-defined Table Four ................................................................................. 253
9.9.10 Table 89 User-defined Table Five .................................................................................. 254
9.10 DECADE 9: TELEPHONE CONTROL TABLES..................................................................................... 255
9.10.1 Table 90 Telephone Dimension Limits Table ............................................................... 255
9.10.2 Table 91 Actual Telephone Table .................................................................................. 258
9.10.3 Table 92 Telephone Global Parameters Table ............................................................. 260
9.10.4 Table 93 Telephone Call Originate Parameters Table ................................................. 262
9.10.5 Table 94 Telephone Call Originate Schedule Table..................................................... 265
9.10.6 Table 95 Telephone Call Answer Parameters .............................................................. 268
9.10.7 Table 96 Originating Telephone Call Purpose ............................................................. 270
vii

ANSI C12.19-2008

9.10.8 Table 97 Last Telephone Call Status............................................................................. 272


9.10.9 Table 98 Telephone Call Originate Status .................................................................... 274
9.11 DECADE 10: UNASSIGNED ............................................................................................................. 276
9.12 DECADE 11: LOAD CONTROL AND PRICING TABLES ........................................................................ 277
9.12.1 Table 110 Load Control Dimension Limits Table......................................................... 278
9.12.2 Table 111 Actual Load Control Limiting Table ............................................................. 281
9.12.3 Table 112 Load Control Status ...................................................................................... 283
9.12.4 Table 113 Load Control Configuration.......................................................................... 285
9.12.5 Table 114 Load Control Schedule ................................................................................. 287
9.12.6 Table 115 Load Control Conditions............................................................................... 290
9.12.7 Table 116 Prepayment Status ........................................................................................ 294
9.12.8 Table 117 Prepayment Control....................................................................................... 296
9.12.9 Table 118 Billing Control ................................................................................................ 297
9.13 DECADE 12: RESERVED................................................................................................................. 300
9.14 DECADE 13: RESERVED................................................................................................................. 301
9.15 DECADE 14: EXTENDED USER-DEFINED TABLES ............................................................................. 302
9.15.1 Table 140 Extended User-defined Tables Function Limiting Table ........................... 303
9.15.2 Table 141 Extended User-defined Tables Actual Limits Table................................... 305
9.15.3 Table 142 Extended User-defined Selections Table .................................................... 307
9.15.4 Table 143 Extended User-defined Constants Table .................................................... 315
9.16 DECADE 15: QUALITY-OF-SERVICE ................................................................................................. 316
9.16.1 Table 150 Quality-of-service Dimension Limits Table................................................. 319
9.16.2 Table 151 Actual Quality-of-Service Limiting Table .................................................... 329
9.16.3 Table 152 Quality-of-service Control Table .................................................................. 337
9.16.4 Table 153 Quality-of-service Incidents Table ............................................................... 352
9.16.5 Table 154 Quality-of-service Log Table ........................................................................ 355
9.16.6 Table 155 Asynchronous Time-Domain Waveforms Table......................................... 357
9.16.7 Table 156 Asynchronous Frequency-Domain Spectrum Table.................................. 360
9.16.8 Table 157 Periodic Time Domain Waveforms Table .................................................... 364
9.16.9 Table 158 Periodic Frequency-Domain Spectrum Table............................................. 367
9.17 DECADE 16: ONE-WAY DEVICES .................................................................................................... 370
9.17.1 Table 160 Dimension One-way ...................................................................................... 370
9.17.2 Table 161 actual One-way table ..................................................................................... 374
9.17.3 Table 162 One-way Control Table.................................................................................. 377
9.17.4 Table 163 One-way Data Table....................................................................................... 380
9.17.5 Table 164 One-way Commands/Responses/Extended User-defined Tables Table . 383
ANNEX A: RESERVED CLASSES FOR METER EQUIPMENT MANUFACTURERS IMPLEMENTING
ANSI C12.19-1997 DEVICES................................................................................................................. 385
ANNEX B: HISTORY & EVENT LOG CODES ...................................................................................... 386
B.1 CODES ........................................................................................................................................... 386
B.2 LOGGER ARGUMENTS IMPLEMENTATION DETAILS ............................................................................. 388
B.3 LOGGER CODES INTERPRETATION DETAILS ...................................................................................... 392
ANNEX C: DEFAULT SETS FOR DECADE TABLES .......................................................................... 397
ANNEX D: INDICES FOR PARTIAL TABLE READ/WRITE ACCESS ................................................ 404
ANNEX E: EVENT LOGGER IMPLEMENTATION................................................................................ 406
E.1 BACKGROUND ................................................................................................................................. 406
E.2 SIGNATURE ALGORITHM ................................................................................................................... 407
ANNEX F: TRANSFORMER LOSSES COMPENSATION.................................................................... 409
F.1 TRANSFORMER LOSSES CONSIDERATION .......................................................................................... 409

viii

ANSI C12.19-2008

F.1.1 No-Load Loss and Exciting Current ................................................................................... 409


F.1.2 Load Loss.............................................................................................................................. 409
F.1.3 Transformer Losses Compensation................................................................................... 409
F.2 TRANSFORMER LOSS COMPENSATION CALCULATIONS [ACPTLC : 1998] ........................................ 410
F.3 TRANSFORMER LOSS COMPENSATION CALCULATION EXAMPLE ........................................................ 410
ANNEX G: DOCUMENT-FORM DESCRIPTIVE SYNTAX.................................................................... 412
G.1 GENERAL NOTES ON SYMBOLS, RULES AND THEIR MEANING BELOW: ................................................. 412
G.2 EXTENDED BNF SYMBOLS AND MEANING ........................................................................................ 412
G.3 FLOW OF INFORMATION ................................................................................................................... 419
G.4 IDENTIFIERS .................................................................................................................................... 419
G.5 BASIC DATA TYPES.......................................................................................................................... 425
G.5.1 Basic data type definitions ................................................................................................. 427
G.5.2 Data type handling ............................................................................................................... 429
G.5.2.1 Signed integers..............................................................................................................................429
G.5.2.2 Characters and Strings .................................................................................................................430
G.5.2.3 Non-integer numbers ....................................................................................................................430
G.5.2.4 Date and time formats...................................................................................................................430

G.6 REFERENCES TO TYPES, CONSTANTS AND VALUES .......................................................................... 430


G.6.1 Scoping Rules ...................................................................................................................... 431
G.6.1.1 Predefined STD and TDL Scopes.................................................................................................431
G.6.1.2 Container scopes ..........................................................................................................................432

G.6.2 References to values ........................................................................................................... 434


G.6.3 Value...................................................................................................................................... 437
G.7 CONDITIONALS................................................................................................................................ 439
G.7.1 IF statements ........................................................................................................................ 439
G.7.2 SWITCH statements............................................................................................................. 440
G.8 BIT FIELD........................................................................................................................................ 440
G.9 SET ................................................................................................................................................ 441
G.10 ARRAY ......................................................................................................................................... 442
G.11 PACKED RECORD .......................................................................................................................... 442
G.12 CONSTANTS ................................................................................................................................. 443
G.13 TABLES ........................................................................................................................................ 444
G.14 PROCEDURES ............................................................................................................................... 444
G.15 SINGLE LINE MATH EXPRESSIONS ................................................................................................. 446
G.16 PROPERTIES ................................................................................................................................. 448
G.17 DOCUMENT FORM STARTING PRODUCTION RULE ........................................................................... 449
ANNEX H: DATE-TIME ELEMENTS CONVERSION ALGORITHM (TM_FORMAT=3 AND
TM_FORMAT=4) .................................................................................................................................... 450
ANNEX I: XML FILE FORMAT OF TDL AND EDL FILES .................................................................... 451
I.1 OVERVIEW OF THE TDL/EDL XML DOCUMENT FRAMEWORK............................................................. 451
I.1.1 TDL/EDL Files and Terminology .......................................................................................... 451
I.2 TDL XML FILE FORMAT OF THE TDL DOCUMENT ............................................................................. 455
I.2.1 <tdl> Root Element ................................................................................................................ 456
I.2.1.1 <tdl> DTD .........................................................................................................................................456
I.2.1.2 <tdl> Attributes................................................................................................................................456
I.2.1.3 <tdl> Document Form .....................................................................................................................457

I.2.2 <description> element........................................................................................................... 457


I.2.2.1 <description> DTD ..........................................................................................................................457
I.2.2.2 <description> Attributes .................................................................................................................458
I.2.2.3 <description> Child Elements........................................................................................................458
I.2.2.4 <description> Child DTDs ..............................................................................................................458
I.2.2.5 <description> Child Elements Summary.......................................................................................460
I.2.2.6 <p> Attributes ..................................................................................................................................461

ix

ANSI C12.19-2008

I.2.2.7 <blockquote> Attributes .................................................................................................................461


I.2.2.8 <ol> Attributes .................................................................................................................................461
I.2.2.9 <ul> Attributes .................................................................................................................................461
I.2.2.10 <ol> and <ul> sub-element usage................................................................................................461
I.2.2.11 <dt> and <dd> sub-element usage of <dl>..................................................................................462
I.2.2.12 <description> Document Form ....................................................................................................462
I.2.2.13 <extension> Element ....................................................................................................................463
I.2.2.14 <extension> DTD ...........................................................................................................................463
I.2.2.15 <extension> Attributes..................................................................................................................463
I.2.2.16 <extension> Document Form .......................................................................................................463

I.2.3 <assert> Element ................................................................................................................... 463


I.2.3.1 <assert> DTD (named) ....................................................................................................................463
I.2.3.2 <assert> Attributes..........................................................................................................................463

I.2.4 <enumerator> Element.......................................................................................................... 464


I.2.4.1 <enumerator> DTD (named) ...........................................................................................................464
I.2.4.2 <enumerator> Attributes (named)..................................................................................................464
I.2.4.3 <enumerator> Document Form (named) .......................................................................................467

I.2.5 <positional> element of <enumerator> (named) ................................................................ 468


I.2.5.1 <positional> DTD.............................................................................................................................468
I.2.5.2 <enumerator> DTD (un-named)......................................................................................................468
I.2.5.3 <positional> Document Form.........................................................................................................468

I.2.6 <enum> Element (Child of <enumerator>) .......................................................................... 468


I.2.6.1 <enum> DTD ....................................................................................................................................469
I.2.6.2 <enum> Attributes...........................................................................................................................469
I.2.6.3 <enum> Document Form ................................................................................................................469

I.2.7 <default> element (Child of <enumerator> element) ......................................................... 470


I.2.7.1 <default> DTD..................................................................................................................................470
I.2.7.2 <default> Attributes ........................................................................................................................471
I.2.7.3 <default> Document Form..............................................................................................................471

I.2.8 <packedRecord> Element..................................................................................................... 471


I.2.8.1 <packedRecord> DTD .....................................................................................................................471
I.2.8.2 <packedRecord> Attributes............................................................................................................471
I.2.8.3 <packedRecord> Document Form .................................................................................................474

I.2.9 <element> Element (Child of <packedRecord>)................................................................. 474


I.2.9.1 <element> DTD ................................................................................................................................475
I.2.9.2 <element> Attributes.......................................................................................................................475
I.2.9.3 <element> Document Form ............................................................................................................476

I.2.10 <array> Element (Child of <packedRecord>).................................................................... 477


I.2.10.1 <array> DTD ...................................................................................................................................477
I.2.10.2 <array> Attributes..........................................................................................................................477
I.2.10.3 <array> Document Form ...............................................................................................................479

I.2.11 <set> Element (Child of <packedRecord> element)......................................................... 479


I.2.11.1 <set> DTD ......................................................................................................................................479
I.2.11.2 <set> Attributes .............................................................................................................................480
I.2.11.3 <set> Document Form ..................................................................................................................481

I.2.12 <if> Element (Child of <packedRecord>) .......................................................................... 481


I.2.12.1 <if> DTD (Child of <packedRecord>) ...........................................................................................482
I.2.12.2 <if> Attributes (Child of <packedRecord>)..................................................................................482
I.2.12.3 <if> Document Form .....................................................................................................................482
I.2.12.4 <then> Element (Child of <packedRecord>/<if>)........................................................................482
I.2.12.5 <then> DTD ....................................................................................................................................482
I.2.12.6 <then> Attributes...........................................................................................................................482
I.2.12.7 <then> Document Form ................................................................................................................482

I.2.13 <else> Element (Child of <packedRecord>/<if>) .............................................................. 482


I.2.13.1 <else> DTD.....................................................................................................................................482
I.2.13.2 <else> Attributes ...........................................................................................................................482
I.2.13.3 <else> Document Form.................................................................................................................483

I.2.14 <switch> Element (Child of <packedRecord>) ................................................................. 484


I.2.14.1 <switch> DTD ................................................................................................................................484

ANSI C12.19-2008

I.2.14.2 <switch> Attributes .......................................................................................................................484


I.2.14.3 <switch> Document Form ............................................................................................................484
I.2.14.4 <case> Element (Child of <packedRecord>/<switch>) ..............................................................485
I.2.14.5 <case> DTD....................................................................................................................................485
I.2.14.6 <case> Attributes ..........................................................................................................................485
I.2.14.7 <case> Document Form................................................................................................................485
I.2.14.8 <default> element (Child of <packedRecord>/<switch>)...........................................................485
I.2.14.9 <default> DTD ................................................................................................................................485
I.2.14.10 <default> Attributes ....................................................................................................................485
I.2.14.11 <default> Document Form..........................................................................................................485

I.2.15 <bitField> element ............................................................................................................... 487


I.2.15.1 <bitField> DTD...............................................................................................................................487
I.2.15.2 <bitField> Attributes .....................................................................................................................487
I.2.15.3 <bitField> Document Form...........................................................................................................490

I.2.16 <subElement> Element (Child of <bitField>) .................................................................... 491


I.2.16.1 <subElement> DTD .......................................................................................................................491
I.2.16.2 <subElement> Attributes ..............................................................................................................491
I.2.16.3 <subElement> Document Form Equivalent ................................................................................493

I.2.17 <if> Element (Child of <bitField>) ...................................................................................... 493


I.2.17.1 <if> DTD .........................................................................................................................................493
I.2.17.2 <if> Attributes ................................................................................................................................493
I.2.17.3 <if> Document Form .....................................................................................................................493

I.2.18 <then> Element (Child of <bitField>/<if>).......................................................................... 494


I.2.18.1 <then> DTD ....................................................................................................................................494
I.2.18.2 Attributes .......................................................................................................................................494
I.2.18.3 <then> Document Form ................................................................................................................494

I.2.19 <else> Element (Child of <bitField>/<if>) .......................................................................... 494


I.2.19.1 <else> DTD definition...................................................................................................................494
I.2.19.2 <else> Attributes ...........................................................................................................................494
I.2.19.3 <else> Document Form.................................................................................................................494

I.2.20 <switch> Element (Child of <bitField>) ............................................................................. 494


I.2.20.1 <switch> DTD ................................................................................................................................495
I.2.20.2 <switch> Attributes .......................................................................................................................495
I.2.20.3 <switch> Document Form ............................................................................................................495

I.2.21 <case> Element (Child of <bitField>/<switch>) ................................................................ 495


I.2.21.1 <case> DTD....................................................................................................................................495
I.2.21.2 <case> Attributes ..........................................................................................................................495
I.2.21.3 <case> Document Form................................................................................................................495

I.2.22 <default> Element (Child of <bitField>/<switch>) ............................................................ 495


I.2.22.1 <default> DTD ................................................................................................................................496
I.2.22.2 <default> Attributes ......................................................................................................................496
I.2.22.3 <default> Document Form............................................................................................................496

I.2.23 <decade> Element (Child of <tdl>)..................................................................................... 496


I.2.23.1 <decade> DTD ...............................................................................................................................496
I.2.23.2 <decade> Attributes ......................................................................................................................496
I.2.23.3 <decade> Document Form ...........................................................................................................497

I.2.24 <table> Element (Child of <tdl> or <decade>) .................................................................. 497


I.2.24.1 <table> DTD ...................................................................................................................................497
I.2.24.2 <table> Attributes..........................................................................................................................498
I.2.24.3 <table> Document Form ...............................................................................................................500

I.2.25 <procedure> Element (Child of <tdl> or <decade>) ......................................................... 502


I.2.25.1 <procedure> DTD ..........................................................................................................................502
I.2.25.2 <procedure> Attributes.................................................................................................................502
I.2.25.3 <procedure> Document Form ......................................................................................................504

I.2.26 <extend> Element (Child of <procedure>) ........................................................................ 505


I.2.26.1 <extend> DTD definition ...............................................................................................................505
I.2.26.2 <extend> Attributes.......................................................................................................................505
I.2.26.3 <extend> Document Form ............................................................................................................506

I.2.27 <qualify> Element (Child of <tdl>) ..................................................................................... 506


xi

ANSI C12.19-2008

I.2.27.1 <qualify> DTD ................................................................................................................................506


I.2.27.2 <qualify> Attributes.......................................................................................................................506
I.2.27.3 <qualify> Document Form ............................................................................................................506

I.2.28 <table> element (Child of <qualify> element) ................................................................... 506


I.2.28.1 <table> DTD definition ..................................................................................................................507
I.2.28.2 <table> Attributes..........................................................................................................................507

I.2.29 <procedure> Element (Child of <qualify>) ........................................................................ 507


I.2.29.1 <procedure> DTD ..........................................................................................................................508
I.2.29.2 <procedure> Attributes.................................................................................................................508

I.2.30 <element> Element (Child of <qualify>) ............................................................................ 508


I.2.30.1 <element> DTD ..............................................................................................................................508
I.2.30.2 <element> Attributes.....................................................................................................................509

I.2.31 <packedRecord> Element (Child of <qualify>) ................................................................. 509


I.2.31.1 <packedRecord> DTD ...................................................................................................................509
I.2.31.2 Attributes .......................................................................................................................................509

I.2.32 <bitField> Element (Child of <qualify>) ............................................................................. 510


I.2.32.1 <bitField> DTD...............................................................................................................................510
I.2.32.2 <bitField> Attributes .....................................................................................................................510

I.2.33 <assert> Element (Child of <qualify>) ............................................................................... 510


I.2.33.1 <assert> DTD .................................................................................................................................510
I.2.33.2 <assert> Attributes........................................................................................................................510

I.3 EDL XML FORMAT .......................................................................................................................... 511


I.3.1 Overview ................................................................................................................................. 511
I.3.2 <edl> Root Element ............................................................................................................... 511
I.3.2.1 <edl> DTD ........................................................................................................................................512
I.3.2.2 <edl> Attributes ...............................................................................................................................512
I.3.2.3 <edl> Document Form ....................................................................................................................513

I.3.3 <description> Element (Child of <edl>)............................................................................... 513


I.3.3.1 <description> DTD ..........................................................................................................................513
I.3.3.2 <description> Document Form ......................................................................................................513

I.3.4 Pseudo Element Names ........................................................................................................ 513


I.3.5 Resolving Second Edition XML Schema Constraints........................................................ 514
I.3.5.1 The Schema Constraints Problem .................................................................................................514
I.3.5.2 Resolution of The Schema Constraints Problem .........................................................................515

I.3.6 <${if-switch-clause}> Element.............................................................................................. 515


I.3.6.1 <${if-switch-clause}> DTD ..............................................................................................................515

I.3.7 <defaultSet> Element (Child of <edl>)................................................................................. 516


I.3.7.1 <defaultSet> DTD ............................................................................................................................516
I.3.7.2 <defaultSet> Attributes ...................................................................................................................516
I.3.7.3 <defaultSet> Document Form ........................................................................................................516

I.3.8 <${limitingTableName}> Element (Child of <defaultSet>) ................................................. 518


I.3.8.1 <${limitingTableName}> DTD .........................................................................................................518
I.3.8.2 <${limitingTableName}> Attributes................................................................................................519
I.3.8.3 <${limitingTableName}> Document Form .....................................................................................519

I.3.9 <data> Element (Child of <edl>)........................................................................................... 519


I.3.9.1 <data> DTD ......................................................................................................................................519
I.3.9.2 <data> Document Form ..................................................................................................................519

I.3.10 <${tableName}> Element..................................................................................................... 519


I.3.10.1 <${tableName}> DTD.....................................................................................................................519
I.3.10.2 <${tableName}> Attributes ...........................................................................................................520
I.3.10.3 <${tableName}>Document Form..................................................................................................520

I.3.11 <${elementName}> Element ............................................................................................... 520


I.3.11.1 <${elementName}> DTD................................................................................................................520
I.3.11.2 <${elementName}> Attributes ......................................................................................................520
I.3.11.3 <${elementName}> Document Form............................................................................................521

I.3.12 <entry> Element ................................................................................................................... 522


I.3.12.1 <entry> DTD ...................................................................................................................................522
I.3.12.2 <entry> Attributes .........................................................................................................................522

xii

ANSI C12.19-2008

I.3.12.3 <entry> Document Form...............................................................................................................523

I.3.13 <pendingHeader> element.................................................................................................. 524


I.3.13.1 <pendingHeader> DTD..................................................................................................................524
I.3.13.2 <pendingHeader> Document Form..............................................................................................524

I.4 EDL XML FORM ENCODING OF FINAL ELEMENT VALUES................................................................... 525


ANNEX J: UNIVERSAL IDENTIFIER .................................................................................................... 527
ANNEX K: ALGORITHMS FOR THE CONVERSION OF TABLE ELEMENT VALUES TO
ENGINEERING UNITS ........................................................................................................................... 528
K.1 LOCATING CONVERSION FACTORS FROM DECADE 1......................................................................... 528
K.2 DE-NORMALIZING INTERVAL DATA ELEMENTS .................................................................................. 531
K.3 CONVERTING TO ENGINEERING UNITS AT THE POINT OF METERING ................................................... 532
K.4 CONVERTING TO ENGINEERING UNITS AT THE POINT OF DELIVERY .................................................... 534
K.5 ASSIGNING ENGINEERING UNITS ...................................................................................................... 534
K.6 ASSIGNING FUNDAMENTAL ENGINEERING UNITS............................................................................... 534
K.7 TABLE VALUE TO ENGINEERING UNITS CONVERSION: AN EXAMPLE .................................................. 535
VALUE................................................................................................................................................... 535
COMMENT ............................................................................................................................................. 535
ANNEX L: REGISTERING OR UPDATING DEVICE CLASS OID........................................................ 538
L.1 END DEVICES REFERENCING THE STANDARDS DEVICE CLASS ......................................................... 541
L.2 PRACTICAL EXAMPLES AND USE-CASES ........................................................................................... 541
L.2.1 Examples: Initial Registration Conditionan Empty TDL ............................................... 541
L.2.1.1 Case 1: Exposing Manufacturers Content ..................................................................................541
L.2.1.2 Case 2: Changing End Device Behavior ......................................................................................545

L.2.2 Examples: Initial Registration ConditionsNon-empty TDL........................................... 547


L.2.2.1 Case 1: Appending a New Element to an Existing Table............................................................549
L.2.2.2 Case 2: Inserting a New Element to an Existing Table ...............................................................550
L.2.2.3 Case 3: Modifying an Element of an Existing Table....................................................................551
L.2.2.4 Case 4: Modifying a Constant Element in a Table.......................................................................552
L.2.2.5 Case 5: Adding a New Table to an End Device............................................................................554

ANNEX M: HISTORICAL BACKGROUND............................................................................................ 556


M.1 FOREWORD OF AMERICAN NATIONAL STANDARD C12.19-1997 ....................................................... 556

xiii

ANSI C12.19-2008

Foreword (This Foreword is not part of American National Standard C12.19-2008.)


The ANSI C12.19 standard provides a common data structure for use in transferring data to and from
utility End Devices, typically meters. It has been approved after considerable cooperative effort among
utilities, meter manufacturers, automated meter reading service companies, ANSI, Measurement Canada
(for Industry Canada), NEMA, IEEE, Utilimetrics, and other interested parties.
The standard data structure is defined as sets of tables. The tables are grouped together into sections
called decades. Each decade pertains to a particular feature-set and related function such as Time-ofuse, Load Profile, etc. Table data is transferred from or to the End Device by reading from or writing to a
particular table or portion of a table.
The second release of the standard represents a philosophical departure from the first release. This
release of the standard is intended to accommodate the concept of an advanced metering infrastructure
such as that identified by the Office of Electricity Delivery and Energy Reliability of the U.S. Department of
Energy; the Smart Metering Initiative of the Ontario Ministry of Energy (Canada) and the stated
requirements of Measurement Canada for the approval of a metering device for use in Canada.
This standard covers a broader range of functionality relative to its previous version; however, it does not
follow that implementations of this standard need to be large or complex. Implementers are encouraged
to choose an appropriate subset that is suitable for their needs. Therefore, it is very unlikely for any one
End Device to embed all tables or even the majority of the tables described herein. Thereby,
implementers are encouraged to deploy their desired functionalities using complete and consistent suites
of standard tables from standard decades to the largest extent practical.
Readers that are acquainted with ANSI C12.19-1997 will discover that the new version contains many
changes. The changes may be categorized as follows:
1. Additions of new features or new functionality through the introduction of new tables, decades, or
syntax.
2. Extensions or improvements to pre-existing functionality in support of contemporary and
anticipated industry needs.
3. Corrections of errors and provision of clarifications that address known deficiencies and
documentation of the accepted or anticipated industry practice.
4. Introduction of XML-based table description language (TDL/EDL) and documentation of services
supporting the needs expressed by initiatives such as Smart Metering, Advanced Metering
Infrastructure and alike.
5. Removal of features that were found undesirable.
6. Provision of guidelines for implementers of this standard and developers of future versions of the
standard on backward compatibility and planned phase-out of obsolete features.
Some of the many new features introduced in this revision of the standard include:

xiv

Addition of new data types in support of high-precision sub-second time stamps, such as
HTIME_DATE and HTIME.
Creation of new syntax for the aggregation of transmitted characters into strings, STRING.
Creation of new syntax for the aggregation of transmitted octets into opaque blobs, BINARY.
Addition of new Decade 9, Telephone tables. This decade imports and supersedes the tables
and syntax defined in ANSI C12.21.
Creation of new Decade 11, Load Control and Pricing Tables. This decade provides for demandside management capabilities, including load control, demand response, prepayment and direct
customer billing functions.
Creation of Decade 14, Extended User-defined Tables. This decade provides capability for
transmitting and receiving a contiguous stream of element and sub-element data. The data are
referenced methodically to the legitimate and formal C12.19 data element.

ANSI C12.19-2008

Creation of Decade 15, Quality-of-service Tables. This decade provides control, capture and
logging of high-precision Quality-of-service performance indicators, such as power quality, and
the inclusion of detailed waveforms, power spectra and related information.
Creation of Decade 16, One-way Devices Tables. This decade provides control and management
tables in support of one-way (talk-only) End Devices.

Some extensions or improvements to pre-existing functionality include:

Table 0, General Configuration Table, retains its original form and it is backward compatible with
ANSI C12.19-1997. However, a few notable control elements were modified:
i.
ii.
iii.

Extended CHAR_FORMAT to support UTF-8.


Replaced MANUFACTURER element with DEVICE_CLASS element to facilitate a more
dynamic End Device data model recognition.
Extended TM_FORMAT in support of high-precision, sub-second, time stamps.

Changed all data source selections in all tables (e.g., Table 22) from UINT8 to
SOURCE_SELECT_RCD. This form is backward and forward compatible with ANSI C12.191997 when MODEL_SELECT is 0.
Table 3, End Device Mode Status Table, incorporates the changes proposed in ANSI C12.21.
Table 7, Procedure Initiate Table, and Table 8, Procedure Response Table, were updated and
extended to provide procedures in support of new functionality that is needed by:
i.
Decade 7, History and Event Log Tables;
ii.
Decade 9, Telephone Control Tables;
iii.
Decade 11, Load Control and Pricing Tables;
iv.
Decade 12, Network Control Tables and
v.
Decade 15 Quality-of-service Tables.

Table 12, Unit of Measure Entry table, was expanded with new UOMs.
Table 17, Transformer Loss Compensation, was added to Decade 1.
Extended the event log tables to provide a new capability to manage and detect program
changes through the life of the End Device.
Extended the event log tables to provide a new capability to manage, authenticate and verify the
integrity of data read from an End Device service point by any receiving client application that
may reside across any communication system.
Extended the table type that can be transmitted to include up to 2040 extended-user-defined
tables via TABLE_IDA_BFLD. Also introduced a new Decade 14, Extended User-defined Tables,
to manage the collation of table elements, down to the bit level, into extended-user-defined
tables.

Major corrections of errors and provision of clarifications include:

Section 7.0, Compliance, was updated to reduce variations in the implementation of the standard.
Section 8.0, Table Transportation Issues, was updated to include the Errata to ANSI Standard
C12.19-1997, Utility Industry Data Tables published in 2001. It also updated to harmonize this
standard with ANSI C12.18, ANSI C12.21 and ANSI C12.22.
Table 7, Procedure Initiate Table, and Table 8, Procedure Response Table, indices calculations
were completely rewritten in order to eliminate a fatal error in the production of unique indices for
procedure parameters when using index/count access methods.

Removal of features that were found undesirable include:

Section 5.0, Syntax, no longer supports two-dimensional arrays. Appropriate corrections were
applied wherever this syntax was used. This does not impact the offset/count data access
methods.
xv

ANSI C12.19-2008

The reader is encouraged to review the descriptive text as it brings significant clarifications and examples
of use where appropriate.
Suggestions for improvement to this Standard are welcome. They should be sent to:
National Electrical Manufacturers Association
Vice President, Technical Services
1300 North 17th Street
Suite 1752
Rosslyn, VA 22209
The Secretariat of the Accredited Standards Committee on Electricity Metering, C12, is held by the National
Electrical Manufacturers Association (NEMA) and the National Institute of Standards and Technology. At the
time this standard was processed and approved, the C12 Committee had the following members:
Tom Nelson, Chairman
Paul Orr, Secretary
Organization Represented:
Georgia Power
Underwriters Laboratories, Inc.
Itron, Inc.
GE Energy
Florida Power & Light Co.
Public Service Electric & Gas
Radian Research, Inc.
Milbank Manufacturing
Technology for Energy Corporation
Schweitzer Engineering Labs, Inc.
Oncor Group
Center for Neighborhood Technology
Austin Energy
Future DOS R&D
Duke Energy Company
Natl Inst. of Standards & Technology
Pacific Gas & Electric Company

Name of Representative:
Larry Barto
Ron Breschini
Brent Cain
Curt Crittenden
Jim DeMars
David Ellis
Tim Everidge
Shawn Glasgow
Bill Hardy
Bob Hughes
Brad Johnson
Lawrence Kotewa
Herman Millican
Avygdor Moise
Tim Morgan
Tom Nelson
D. Young Nguyen

Xcel Energy EMC


Plexus
EnerNex Corporation
Sensus Metering
Baltimore Gas & Electric Company
Tucker Engineering
Trilliant Networks, Inc.
Landis+Gyr
Watthour Engineering Co.

Dan Nordell
Dave Scott
Aaron Snyder
George Steiner
Jim Thurber
Richard Tucker
Michel Veillette
John Voisine
H.A. Wall

The following members of Working Group 2 of Subcommittee 17 worked on the development of this
revision of the standard since its first publication:
Avygdor Moise, Chairman
Michael Anderson, Past Chairman
Richard D. Tucker, Vice Chairman
Terry L. Penn, Editor
Paul Orr, Secretary

xvi

ANSI C12.19-2008
Organizations Represented:

Name of Representative:

American Innovations Ltd.

John Taylor

Austin International, Inc.


Badger Meter
Center for Neighborhood Technology
C-MAC
Consultant for Itron, Inc.
Datamatic Energy Systems
Distribution Control Systems, Inc.

William Beverly
Greg Gomez
Larry Kotewa
Raymond Gaudreault
William Buckley
Robert McMichael
Mark Iacoviello
Peter Martin
David Wiseman
Wesley Ray
Edward J. Beroset
Avygdor Moise
Virginia Zinkowski
Jack Pazdon
Kendall Smith
Jean Joly
Martin Burns
William Rush
Ron Begley
William Mazza
Don Grundhauser
Aaron Snyder
Chris Schafer
Janice Jennings
Ken Gilmer
Bin Qiu
Michael Anderson
Stuart Garland
Thomas Chen
Vuong Nguyen
Dan Nordell,
Shawn Bagley
Alex Lunycz
John Newbury
Richard Stetler
Gregory Bray
Brian Seal
Marc Purc
Norbert Balko
Terry L. Penn
Keith Martin
David Taylor
Ted York
Michel Veillette
Paul Aubin
Richard D. Tucker

Duke Energy Corp.


Elster Electricity, LLC
Future DOS R&D, Inc.
General Electric
Hexagram, Inc.
Hydro-Qubec
Hypertek Inc. for EPRI
IGT
IntraLynx Canada
Invensys Metering Systems
Itron, Inc.

Landis+Gyr Inc.
Lucent Technologies, Bell Labs
Main Street Networks
Measurement Canada
Northern States Power Co.
Ontario Hydro Services Co.
Open University
Power Measurement
Rochester Instrument Systems
Schlumberger
Sensus Metering Systems
Southern Company
Tantalus Systems Corp.
Terasen Gas
THY Consulting, Inc.
Trilliant Networks
Tucker Engineering Associates Inc.

xvii

ANSI C12.19-2008

This page intentionally left blank.

xviii

ANSI C12.19-2008

AMERICAN NATIONAL STANDARD

ANSI C12.19-2008

Utility Industry End Device Data Tables


1 Scope
This Standard defines a Table structure for utility application data to be passed between an End Device
and any other device. It neither defines device design criteria nor specifies the language or protocol used
to transport that data.

2 References
2.1 Normative
ANSI C12.10-2004

American National Standard for Physical Aspects of Watthour Meters


Safety Standard, (or latest version).

ANSI X9.31-1998

Public Key Cryptography Using Reversible Algorithms for the Financial


Services Industry (rDSA), 1998.

ANSI/IEEE 100-2000

The Authoritative Dictionary of IEEE Standards Terms, Seventh Edition (New


York, New York, IEEE Press, 2000, ISBN 0-7381-2601-2).

AS 4140-1995

Australian Standard, Metering and Utility Information ExchangeGlossary of


Terms.

CAN/CSA ISO/IEC-10118-1: 2000


Information TechnologySecurity TechniquesHash-functionsPart 1:
General.
CAN/CSA ISO/IEC-10118-2: 2000
Information TechnologySecurity TechniquesHash-functionsPart 2:
Hash-Functions Using an n-bit Block Cipher.
ECMA 94 (1996)

8-Bit Single-Byte Coded Graphic Character SetsLatin Alphabets No. 1 to


No. 4-2nd Edition.

IEEE Std 519-1992

IEEE Recommended Practices and Requirements for Harmonic Control in


Electrical Power Systems.

IEEE Std 754-1985

IEEE Standard for Binary Floating-Point Arithmetic.

IEEE Std 1159-1995 (R2001)

IEEE Recommended Practice for Monitoring Electric Power Quality.

IEEE Std C57.123-2002

IEEE Guide for Transformer Loss Measurement.

IEC 62053-23 (2003-01)

Electricity Metering Equipment (a.c.)Particular RequirementsPart 23:


Static Meters for Reactive Energy (classes 2 and 3).

IEC/TR 61000-2-1 (1990-05) Electromagnetic Compatibility (EMC)Part 2: EnvironmentSection 1:


Description of the EnvironmentElectromagnetic Environment for Low-

ANSI C12.19-2008

References
frequency Conducted Disturbances and Signalling in Public Power Supply
Systems.

ISO 8859-1: 1998

Information Technology8-bit Single-byte Coded Graphic Character Sets


Part 1: Lating Alphabet No 1.

ISO/IEC 646: 1991

Information TechnologyISO 7-bit Coded Character Set for Information


Interchange.

ISO/IEC 7498-1: 1996

Information TechnologyOpen Systems InterconnectionBasic Reference


Model: The Basic Model.

ISO/IEC 10646: 2003

Information TechnologyUniversal Multiple-Octet Coded Character Set


(UCS).

2.2 Other
ACPTLC : 1998

Algorithm for Computing and Programming Transformer Loss Constants in


Solid-State Meters, A. Hannah, in Proc. 1998 Rural Electric Power
Conference, pp. B3-1-17.

EEI HEM : 2002

Handbook for Electricity Metering, 10th Edition (Washington, District of


Columbia, Edison Electric Institute, 2002, ISBN 0-931032-52-0).

IEEE EPEH : 2000

The Electric Power Engineering Handbook, CRC Press and IEEE Press,
2000, L. L. Grigsby, Ed., Section 3, Transformers, J.H. Harlow, Ed.

IEEE IAM : 11/12 2003

S. Y. Merritt and S. D. Chaitkin, No-load Versus Load Loss, IEEE Industry


Applications Magazine, pp. 21-28, Nov./Dec. 2003.

ISBN 0-201-30998-X

The Unified Modeling Language Reference Manual (The Addison-Wesley


Object Technology Series, 1999, ISBN 0-201-30998-X)

ISBN 0-321-18578-1

The Unicode Consortium. The Unicode Standard, Version 4.0.0, defined by:
The Unicode Standard, Version 4.0 (Boston, Massachusetts, AddisonWesley, 2003. ISBN 0-321-18578-1).
http://www.unicode.org/versions/Unicode4.0.0/

ISBN 0-321-24562-8

The Unified Modeling Language Reference Manual, Second Edition (Upper


Saddle River, New Jersey, Addison-Wesley, 2005, ISBN 0-321-24562-8).

ISBN 0-8493-0628-0

CRC Standard Mathematical Tables, 28th Edition (CRC Press, Inc.,1987,


Boca Raton, Florida, ISBN 0-8493-0628-0).

IS-E-01-E

Specifications Relating to Event Loggers for Electricity Metering Devices and


Systems (Measurement Canada, IS-E-01-E, 2003)

MCPSMTD : 1999

Principles for Sealing Meters and Trade Devices (Measurement Canada,


1999-07-26)

UG : 2005

Utility Industry Standard Tables Users Guide (Measurement Canada,


Revised Version 3.2, 2005) .

Other

Definitions

ANSI C12.19-2008

3 Definitions
The definitions used in this Standard have been derived from the sources cited in Section 2, References,
with the exception of those introduced in this Standard revision, labeled [New].

3.1 ACT
Abbreviation for "ACTUAL"; the programmed functional capabilities of an End Device. [ANSI C12.191997]

3.2 Address
Those inputs whose states select a particular cell or group of cells. [IEEE 100-2000]

3.3 Advanced Metering Infrastructure (AMI)


AMI is defined as the communications hardware and software and associated system and data
management software that creates a network between advanced meters and utility business systems and
which allows collection and distribution of information to customers and other parties such as competitive
retail providers, in addition to providing it to the utility itself. [Federal Energy Regulatory Commission,
FERC-727 and FERC-728, OMB Control Nos. 1902-0214 & 1902-0213 Glossary, Survey on Demand
Response, Time-Based Rate Programs/Tariffs and Advanced Metering Infrastructure]

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

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

3.6 BIT FIELD (BFLD)


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

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

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

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

3.10 Count
The number of Octets selected when using the offset/octet-count partial Table access method. [ANSI
C12.19-1997]

3.11 Cumulative Demand


Summation of Maximum Demands during the preceding periods is indicated during the period after the
meter has had a demand reset performed and before it has been reset again. Note: The maximum
demand for any one demand interval is equal or proportional to the difference between the accumulated
readings before and after reset. [IEEE 100-2000]

ACT

ANSI C12.19-2008

Definitions

3.12 Customer
The purchaser/user of a product or service supplied by a service provider or utility. [AS4140-1995]

3.13 Data Encryption


The changing of the form of a data stream such that only the intended recipient can read or alter the
information and detect unauthorized messages. [ANSI C12.19-1997]

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

3.15 Default Set


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

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

3.17 Demand, Block


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

3.18 Demand, Maximum


The highest Demand measured over a selected period of time. Also referred to as Peak Demand.
[ANSI C12.19-1997]

3.19 Demand, Minimum


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

3.20 Demand, Present


Demand occurring during the present Demand interval or subinterval (e.g., Watts or VA). [ANSI C12.191997]

3.21 Demand, Sliding Window (Rolling-Interval)


The Block Demand calculated over an integration period which includes sub-intervals of previous
Demand calculations. [ANSI C12.19-1997]

3.22 Deprecated
Outdated or superseded. Deprecated syntax. Tables or Elements are defined in the Standard or
Manufacturer reference documentation of the End Device (TDL) and are clearly marked in the document.

3.23 DIM
Abbreviation for "DIMENSION"; the maximum functional capability designed into an End Device. See
definition of Function Limiting Control Table. [ANSI C12.19-1997]

3.24 Document Type Definition (DTD)


The XML document type declaration contains or points to markup declarations that provide a grammar for
a class of documents. This grammar is known as a document type definition, or DTD. The document type
declaration can point to an external subset (a special kind of external entity) containing markup
declarations, or can contain the markup declarations directly in an internal subset, or can do both. The
DTD for a document consists of both subsets taken together. [W3C Recommendation, Extensible Markup
Language (XML) 1.1 (Second Edition)]

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

Customer

Definitions

ANSI C12.19-2008

3.26 Element, Atomic


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

3.27 Element, Final


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

3.28 Element, Volatile


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

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

3.30 End Device


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

3.31 End Device Agent


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

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

3.33 Event Instance


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

3.34 Event Logger Data


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

3.35 Event Logger Record


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

Element, Atomic

ANSI C12.19-2008

Definitions

3.36 Event, Call


An Event Instance caused by a receipt of an explicit synchronous request (e.g., a request to write a Table
by a communication protocol). [Adopted from ISBN 0-201-30998-X, The Unified Modeling Reference
Language Manual]

3.37 Event, Change


An Event Instance caused by change in the value of a Boolean expression (e.g., tamper detect, change
in metering mode). [Adopted from ISBN 0-201-30998-X, The Unified Modeling Reference Language
Manual]

3.38 Event, Signal


An Event Instance caused by explicitly named asynchronous communication among Objects (e.g.,
advancing list pointers as a result of execution of an advance list pointers procedure). [Adopted from
ISBN 0-201-30998-X, The Unified Modeling Reference Language Manual]

3.39 Event, Time


An Event Instance caused by the occurrence of an absolute time or the passage of a relative amount of
time (e.g., time-of-use schedule invoking a self-read). [Adopted from ISBN 0-201-30998-X, The Unified
Modeling Reference Language Manual]

3.40 Exchange Data Language (EDL)


Exchange Data Language is for encoding, import and export of Default Sets defined by this Standard,
Table Element values retrieved from an End Device, Table Element values to be stored in an End Device,
Manufacturer constant Element-values and Utility or Customer site-specific constant Element-values that
need to be known by application. The Exchange Data Language Element-values are encoded using XML.
[New]

3.41 Extensible Markup Language (XML)


Extensible Markup Language is a recommendation for a lexical grammar produced by the World Wide
Web Consortium (W3C). The Extensible Markup Language, abbreviated XML, describes a class of data
objects called XML documents and partially describes the behavior of computer programs that process
them. XML is an application profile or restricted form of SGML, the Standard Generalized Markup
Language [ISO 8879]. By construction, XML documents are conforming SGML documents. [Adopted
from W3C Recommendation, Extensible Markup Language (XML) 1.1 (Second Edition)]

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

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

3.44 Load Profile


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

3.45 Meter
A device that measures and records the consumption or usage of the product/service. [ANSI C12.191997]

3.46 Metrological Adjustment


Any physical means or methods designed or used, whether directly or indirectly, whether intentionally or
unintentionally, to alter or correct the measurement characteristics of an End Device or any of its subsystems that are used for trade measurement purposes. This includes altering or replacing Registers,
components, connections or internal working parts of the End Device. It also includes the alteration of any
Metrological Parameter that would be made available from the End Device or any of its outputs.

Event, Call

Definitions

ANSI C12.19-2008

Metrological Adjustments manifest themselves in changes to Metrological Tables. [Adopted from


Measurement Canada IS-E-01-E and Utility Industry Standard Tables Users Guide].

3.47 Mode, Factory


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

3.48 Mode, Meter Shop


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

3.49 Mode, Metering


The operating state of the End Device wherein measured or input quantities are accumulated for the
purpose of revenue metering. [New]

3.50 Mode, Test


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

3.51 Object
A Table Object or an Element Object [Revised]

3.52 Object, Element


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

3.53 Object, Table


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

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

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

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

3.57 PACKED RECORD


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

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

3.59 Procedure, Manufacturer


A Procedure whose structure and actions are defined by an individual End Device manufacturer. [New]

3.60 Procedure, Metrological


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

Mode, Factory

ANSI C12.19-2008

Definitions

3.61 Procedure, Standard


A Procedure whose structure and actions are defined by this Standard. [New]

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

Quadrant 2
Leading current
Capacitive

Quadrant 1
Lagging current
Inductive

Received Watts
(P-, Export Power)

Delivered Watts
(P+, Import
Power)
Quadrant 3
Lagging current
Inductive

Quadrant 4
Leading current
Capacitive

Received VAR
(Q-, Export ReactivePower)

3.63 Redefine
Used in the context of declaration of type. The new type definition is constrained by the referenced type
definition whereby the new definition shall have identical Element content, types, Indices and Offsets to
those found in the referenced type. The referenced type is left unaffected. This feature is useful when
defining ACT Tables, then reusing only the Element types (not the Element names or descriptions) of the
DIM Tables to define actual limits Tables. The local redefinition feature is subject to the following
constraints:
1. A type can be Redefined any number of times. Redefinition of a type that has already been
previously redefined elsewhere is possible.
2. New types based on Redefined types can be defined in the same TDL document that defines the
referenced type.
3. Redefinition of a Replaced packed record is possible.
4. Redefinitions are processed after Replacements and Overrides.

3.64 Register
A device for use with a meter that indicates or records units of the delivered commodity or other quantity
measured. Registers in End Devices are often spoken of according to the units involved, such as
accumulation (energy, volume, mass), Demand, Time-of-use (TOU), instantaneous values or other(s) as

Procedure, Standard

Definitions

ANSI C12.19-2008

appropriate. [New, portions adopted from ANSI C12.1-2001 and ANSI C12.19-1997]

3.65 Register, Secured


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

3.66 Replace
The action whereby an older type definition shall be replaced by (i.e., mapped to) a new type definition.
Any reference to the old definition shall resolve to the new definition. This feature enables one Standard
to be derived from another Standard and for a manufacturers of End Devices to define (thus document)
opaque fields that are defined by the referenced Standard and implemented in the End Device. The
replacement feature is subject to the following constraints:
1. A referenced type can be Replaced only once in any one instance of an End Device TDL
definition; therefore, Replacement of a type that has already been previously replaced elsewhere
is not possible.
2. The Replaced type cannot be defined in the same TDL document that defines the original type.
3. Replaced types have identical Element Offsets and Indices as those of the referenced Elements;
however, they can expose additional detail to internal structure of Element that were otherwise
opaque.
4. A Replaced type cannot be Overridden in the same TDL document.
[New]

3.67 Reserved
Qualifier applied to one or more Elements or values indicating they are not available for use with this
Standard. The use of a Reserved Element or value shall render an application non-compliant with this
Standard. [New]

3.68 Seal
An item or process that has the purpose of providing marketplace integrity and confidence against End
Device tampering and as such it has three main functions: (1) To secure an End Device so that access or
changes to Metrological Adjustments and Sealable Parameters will be detectable. (2) To identify the date
and organization which verified the End Device. This information is necessary for the administration and
enforcement of legislation, for complaint or dispute investigation purposes, and also for seal period and
seal extension purposes. (3) To act as a deterrent to the unauthorized access or changing of
metrologically sensitive adjustments and Sealable Parameters. Seals may be implemented as Physical
Seals and/or Logical Seals. [Adopted from Measurement Canada, 1999-07-26 Principles for Sealing
Meters and Trade Devices]

3.69 Seal, Logical (Event Loggable)


A Seal that is comprised of firmware and software mechanisms that work together to secure access to an
End Devices Metrological Adjustments and Sealable Parameters. This Standard provides Event Log
Tables for the management of Seals. [New]

3.70 Seal, Physical


A physical mechanism that is used to secure access to an End Devices Metrological Adjustments and
Sealable Parameters. [New]

3.71 Sealable Parameter


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

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

3.73 Secured Read


Reading of a Secured Register from an End Device that is capable of generating an End Device Secured

Register, Secured

ANSI C12.19-2008

Definitions

Register event, and provided that this capability was enabled in the End Device. [New]

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

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

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

3.77 Strict
In the context of declaration of type. When a type is created and the Replace, Redefine or the Override
attribute is used and strictness is asserted (TRUE), then the search rule for the target type shall be strictly
applied. A strict search requires that the implied or explicit target scope contains the Replaced,
Redefined or Overridden type. A non-strict search requires that the implied or explicit target scope is
where the search starts in the End Device TDL document scope hierarchy. This search is carried in such
a manner that 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. [New]

3.78 STRING
An Atomic Array of Octets to be interpreted as characters dependent upon CHAR_FORMAT.
Section 6.1, Character Set Selection. [New]

See

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

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

3.81 Table Definition Language (TDL)


Syntax used for detailing the Standards or an End Devices Table structure, defined types and
constraints in a machine-readable format. The Table Definition Language is encoded using XML. [new]

3.82 Table, Extended User-defined (EUDT)


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

3.83 Table, Function Limiting Control (FLC)


The first Table in each Decade. This Table specifies the limits designed into an End Device with respect
to Elements used within that Decade. [ANSI C12.19-1997]

3.84 Table, Manufacturer


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

3.85 Table, Metrological


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

3.86 Table, Pending


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

10

Self-read

Definitions

ANSI C12.19-2008

3.87 Table, Program


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

3.88 Table, Secured


A Table that contains Secured Register. [New]

3.89 Table, Standard


A Table whose structure is defined by this Standard. [New]

3.90 Table, User-defined (UDT)


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

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

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

3.93 Time-Of-Use (TOU) Metering


The use of metering equipment to separately record metered or measured quantities according to a time
schedule. [ANSI C12.19-1997]

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

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

Table, Program

11

ANSI C12.19-2008

General

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

Standard Tables Grouping

The Standard Tables are grouped together in Decades, with each Decade covering a general area of
functionality. The first Table of each Decade, beginning with the Decade 1, is referred to as a Function
Limiting Control (FLC) Table. The purpose of the FLC Table is to specify the designed DIMENSION
(DIM) limits (maximum limits) for Elements used within the Decade for the End Device.
If present, the Table immediately following an FLC table is called the FLC+1 Table. The FLC+1 Table
defines the ACTUAL (ACT) limits used for Elements in the current configuration of the End Device.
If the FLC+1 Table is not present, the ACTUAL (ACT) limits are identical to the designed DIMENSION
(DIM) limits specified in the FLC Table.
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 default sets for a particular Decade are defined within this Standard in Annex C, Default
Sets for 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

Not Used
Not Used
Not Used
Not Used
Used
Used
Used
Used

Not Used
Not Used
Used
Used
Not Used
Not Used
Used
Used

Not Used
Used
Not Used
Used
Not Used
Used
Not Used
Used

None - Decade not used


Default set, per Standard
Decade FLC+1 Table**
Decade FLC+1 Table
Decade FLC Table**
Decade FLC Table
Decade FLC+1 Table**
Decade FLC+1 Table

A
B
C
D
E
F
G
H

** Not recommended practice.

Figure 4.1Possible Combinations of FLC, FLC+1, and Decade Tables


4.1.2

Standard Tables Properties

All Standard Tables assume a set of properties that are defined by this Standard. Listed below are the
Tables default properties to be assumed when not explicitly qualified by this Standard. The default Table
properties are shown in the figure below:

12

Table
Property*

Required

name

Yes

number
label

Yes
No

type

Yes

role

No

FLC Table

Global Default Table Property Value


FLC+1 Table
FLC+n Table (n>1)

Table name

Table name

Table name

LIMITING

ACTUAL

UNDEFINED

Standard Tables / Standard Tables Grouping

General

ANSI C12.19-2008

Global Default Table Property Value


FLC+1 Table
FLC+n Table (n>1)

Table
Property*

Required

FLC Table

associate

No

Scope of the Decade


where defined

Scope of the Decade


where defined

Scope of the Decade


where defined

atomic

No

false

false

false

accessibility

No

READONLY

READWRITE

READWRITE

deprecated

No

false

false

false

metrological
volatile**

No
No

false
AUTO_AS_PER_ROLE

false
AUTO_AS_PER_ROLE

false
AUTO_AS_PER_ROLE

class***

No

STD

STD

STD

* For more information, see Annex I.2.25, <table> Element (Child of <tdl> or <decade>).
** When the volatile attribute is set to AUTO_AS_PER_ROLE, then the values shall be assumed for Table volatility
based on their assumed role as follows:
role = UNDEFINED implies volatility is true.
role = LIMITING implies volatility is false.
role = ACTUAL implies volatility is false.
role = CONTROL implies volatility is false.
role = DATA implies volatility is true.
role = PRIVATE implies volatility is true..
*** A tag that identifies an application run-time class (module) that should be used to manage this Table. Standard
classes defined are STD.UDT, STD.EUDT and STD.

Figure 4.2Default Standard Tables Properties


4.1.3

Standard Procedure Properties

All Standard Procedures (Table 7, Table 8 and procedures defined within) assume a set of properties that
are defined by this Standard. Listed below are the default properties to be assumed when not explicitly
qualified by this Standard. The default Procedure properties are shown in the figure below:
Procedure
Property*
name
number
label
type
role
associate

Required

atomic
accessibility
deprecated
metrological
volatile
class
target

No
No
No
No
No
No
Yes

strict

No

Yes
Yes
No
Yes
No
No

Global Default Procedure Property Value


Table 7 / Procedure Request
Table 8 / Procedure Response

TABLE name / Procedure Name

TABLE name / Procedure Name

CONTROL
Scope of Procedure where defined
then PROC_INITIATE_TBL.
STD_PARM_RCD then its parents
scope.
true
READWRITE
false
false
AUTO_AS_PER_ROLE
STD
Not Applicable /
PROC_INITIATE_TBL.
STD_PARM_RCD
Not applicable / true

DATA
Scope of Procedure where defined
then PROC_RESPONSE_TBL.
STD_RESP_RCD then its parents
scope.
true
READONLY
false
false
AUTO_AS_PER_ROLE
STD
Not Applicable /
PROC_RESPONSE_TBL.
STD_RESP_RCD
Not applicable / true

* For more information see Annex I.2.26, <procedure> Element (Child of <tdl> or <decade>).

Figure 4.3Default Standard Tables 7,8 and Procedures Properties

Standard Tables / Standard Procedure Properties

13

ANSI C12.19-2008

General

4.2 Manufacturer Tables


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

Manufacturer Tables Grouping

This Standard provides access for a total of 2040 Manufacturer Tables. When Manufacturer Tables may
introduce new Decades, then the implementation guidance enumerated in Figure 4.1 shall be followed.
When Manufacturer Tables are introduced singly (i.e., as FLC+N Tables), they shall be associated with
an existing Decade. More details are found in Annex I.2, TDL XML File Format of the TDL Document
and more specifically see the associate attribute described in Annex I.2.25, <table> Element (Child of
<tdl> or <decade>).
4.2.2

Manufacturer Tables Properties

All Manufacturer Tables assume a set of properties that are defined by this Standard. Listed below are
the Tables default properties to be assumed when not explicitly qualified by the manufacturers TDL. The
default Manufacturer Table properties are shown in the figure below:
Mfg Table
Property*
name
number
label
type
role
associate

Required

atomic
accessibility
deprecated
metrological
volatile
Class*

No
No
No
No
No
No

Yes
Yes
No
Yes
No
No

Global Default Table


Property Value

Table name
UNDEFINED
Scope of the TDL or
Decade where defined
false
READWRITE
false
false
AUTO_AS_PER_ROLE
STD

* A tag that identifies an application run-time class (module) that should be used to manage this Manufacturer Table.
STD signifies that the Standards Table-read and Table-write and TDL rules apply, with no additional assumptions
for interpretation. Other predefined algorithms are STD.UDT and STD.EUDT.

Figure 4.4Default Manufacturer Tables Properties


4.2.3

Manufacturer Procedure Properties

All Manufacturer Procedures share, by default, a set of properties that are defined by this Standard.
Listed below are the default properties to be assumed when not explicitly qualified by the Manufacturers
TDL. The default Procedure properties are shown in the figure below:

14

Manufacturer Tables / Manufacturer Tables Grouping

General

ANSI C12.19-2008

Procedure
Property
name
number
label
extend
role
associate

Required

atomic
accessibility
deprecated
metrological
volatile
class
target

No
No
No
No
No
No
Yes

strict

No

Yes
Yes
No
Yes
No
No

Global Default Procedure Property Value


MFG Procedure Request
MFG Procedure Response

Procedure Name

Procedure Name

CONTROL
Scope of Procedure where defined
then PROC_INITIATE_TBL.
MFG_PARM_RCD then its parents
scope.
true
READWRITE
false
false
AUTO_AS_PER_ROLE
STD
PROC_INITIATE_TBL.
MFG_PARM_RCD
true

DATA
Scope of Procedure where defined
then PROC_RESPONSE_TBL.
MFG_RESP_RCD then its parents
scope.
true
READWRITE
false
false
AUTO_AS_PER_ROLE
STD
PROC_RESPONSE_TBL.
MFG_RESP_RCD
true

Figure 4.5Default Manufacturer Procedures Properties

4.3 Packed Record, Bit Field and Element Properties


Packed Records, Bit Fields and the contained Element definitions also have default properties. These
default properties are fully described in Annex I, XML File Format of TDL and EDL Files.

4.4 Extended User-defined Tables Properties


Extended User-defined Tables default properties are identical to the properties shown in Section 4.1.2,
Standard Tables properties, except for the class=STD.EUDT. The class STD.EUDT invokes the
Standards processing requirements for Extended User-defined Tables.

Packed Record, Bit Field and Element Properties

15

ANSI C12.19-2008

Syntax

5 Syntax
5.1 Descriptive syntax
Describing data definitions is usually accomplished within the confines of a given language and the
grammar rules of that language. Since the data definitions embodied within this document are meant to
be independent of a specific language and capable of being implemented within the confines of any
language, a method for describing the data definitions has been adopted. The descriptive syntax is
expressed using the Extended BNF definitions defined in Annex G, "Document-form Descriptive Syntax.
The definition syntax is a merge between the traditional Backus Naur Format and XML simple BNF as
described in http://www.w3.org/TR/2000/REC-xml-20001006 Extensible Markup Language (XML) 1.0,
Second Edition, with extensions that facilitate the binding of production rules needed for the definition of
the published pseudo PASCAL text (Section 9.0) and the machine-readable XML based TDL. In addition,
the Extended BNF syntax provides definitions for constraints on binary transmission and interpretation of
types.

6 Special Data Types


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

6.1 Character Set Selection


This selection is used to determine the encoding of characters that are used in the Tables.
GEN_CONFIG_TBL.FORMAT_CONTROL_1.CHAR_FORMAT is the controlling selector for the
encoding of CHAR, STRING, FLOAT_CHAR6, FLOAT_CHAR12 and FLOAT_CHAR21.
TDL Type Definitions
{ Enumerator CHAR_FORMAT_ENUM }
TDL Element Descriptions
Identifier

Value

Definition

Reserved.

ISO 7-bit coded character set for information


interchange, per ISO/IEC 646: 1991, a fixedwidth encoding using 8 bits as its base unit for
length calculations and UINT8 as the base unit
for transmission.

ISO 8-bit coded character as per ISO 8859/1 or


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

CHAR_FORMAT_ENUM

16

Descriptive syntax

Special Data Types

ANSI C12.19-2008
3

UTF-8 as per utf8., variable-width encoding


using 8 bits as its base unit for length
calculations and UINT8 as the base unit for
transmission. This type maximizes compatibility
with CHAR_FORMATs 1 and 2 as per Section
2.5, Encoding Forms / UTF-8 and Section
15.9, Specials of The Unicode Standard,
Version 4.0. In UTF-8 the byte order mark,
BOM, corresponds to the byte sequence [#xEF]
[#xBB] [#xBF]. The BOM of UTF-8 shall be
permitted only when it can be accommodated by
the size of the element that is of type UTF-8
whose size is at least three octets, but it shall be
ignored (not produce displayable text) by the
processing application.

4..7

Reserved.

6.2 Non-integer Formats


This selection is used to determine the structure of non-integer numbers used in the Tables. The Table
Elements
GEN_CONFIG_TBL.FORMAT_CONTROL_3.NI_FORMAT1
and GEN_CONFIG_TBL.
FORMAT_CONTROL_3.NI_FORMAT2 are the controlling selectors for the built-in types NI_FMAT1 and
NI_FMAT2. They provide the final associations between BNF.anyFloat non-integer data types and the
actual atomic encoding used to transmit NI_FMAT1 and NI_FMAT2 data items as defined below.
TDL Type Definitions
{ Enumerator NI_FORMAT_ENUM }
TDL Element Descriptions
Identifier

Value

NI_FORMAT_ENUM

Values
that
may
be
assumed
by
GEN_CONFIG_TBL.FORMAT_CONTROL_3.N
I_FORMAT1 (which controls the interpretation of
the
built-in
type
NI_FMAT1)
and
GEN_CONFIG_TBL.FORMAT_CONTROL_3.N
I_FORMAT2 (which controls the interpretation of
the built-in type NI_FMAT2).
0
1
2
3
4
5
6
7
8
9
10

Non-integer Formats

Definition

FLOAT64
FLOAT32
FLOAT_CHAR12 (A STRING Number)
FLOAT_CHAR6 (A STRING Number)
INT32 (Implied decimal point between fourth
and fifth digits from least significant digit. For
example 0.0001 is represented as 1)
FIXED_BCD6
FIXED_BCD4
INT24
INT32
INT40
INT48

17

ANSI C12.19-2008

Special Data Types

11
12
13
14..15
6.2.1

INT64
FIXED_BCD8
FLOAT_CHAR21 (A STRING Number)
Reserved

STRING Numbers

When STRING is used and GEN_CONFIG_TBL.FORMAT_CONTROL_3.NI_FORMAT1 or


GEN_CONFIG_TBL.FORMAT_CONTROL_3.NI_FORMAT2 has a value of 2, 3 or 13, the number shall
be represented according to BNF.floatingPointStringNumber.
A STRING number (BNF.floatingPointStringNumber) representation can have any number of leading
spaces, followed by an optional plus or minus sign, followed by a mandatory one or more digits, followed
by an optional period and zero or more digits, followed by an optional exponent. An exponent is
composed of the letter E, e; followed by an optional plus or minus sign, followed by a mandatory one
or more digits. Any number of spaces can lead or follow the BNF.floatingPointStringNumber, but spaces
shall not be embedded within.
This format ensures that clear identification of any
BNF.floatingPointStringNumber is possible in a stream (sequence) of BNF.floatingPointStringNumber+,
using the space character as a separator.
Examples:
Valid production based on BNF.floatingPointStringNumber
+1.0E-7
123.6478e+03
1.2345
1.0E-3
Invalid production based on BNF.floatingPointStringNumber
.5
e+03
e3
-1.e3

18

Non-integer Formats / STRING Numbers

Special Data Types

ANSI C12.19-2008

6.3 Date and Time Formats


This selection is used to determine the structure of dates and times used in the tables. The Element
GEN_CONFIG_TBL.FORMAT_CONTROL_2.TM_FORMAT is the controlling selector
for
HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME and HTIME.
TDL Type Definitions
{ Enumerator NI_FORMAT_ENUM }
TDL Element Descriptions
Identifier

Value

TM_FORMAT_ENUM

Date and Time Formats

Definition
Values
that
may
be
assumed
by
GEN_CONFIG_TBL.FORMAT_CONTROL_2.
TM_FORMAT (which controls the interpretation
of
the
built-in
types
HTIME_DATE,
LTIME_DATE, STIME_DATE, TIME, STIME
and HTIME).

No clock in the End Device.

BCD type with discrete fields for year, month,


day, hour, minute seconds and fractional
seconds.

UINT8 type with discrete fields for year, month,


day, hour, minute seconds and fractional
seconds.

UINT32
counters
where
HTIME_DATE,
LTIME_DATE and STIME_DATE types are
encoded relative to 01/01/1970 @ 00:00:00
UTC, with discrete fields for minutes and fraction
of a minute.

UINT32
counters
where
HTIME_DATE,
LTIME_DATE and STIME_DATE types are
encoded relative to 01/01/1970 @ 00:00:00
UTC), with discrete fields for seconds and
fraction of a second.

5..7

Reserved.

19

ANSI C12.19-2008

6.3.1

Special Data Types

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

The date and time structures are described next as packed records, but are transmitted as Atomic Table
Elements.
TDL Type Definitions
TYPE HTIME_DATE_RCD = PACKED RECORD
SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
CASE 0 :
NIL
: NIL;
CASE 1 :
YEAR
: BCD;
MONTH
: BCD;
DAY
: BCD;
HOUR
: BCD;
MINUTE
: BCD;
SECOND
: BCD;
BCD_SEC_FRACTION : BCD(3);
CASE 2 :
YEAR
: UINT8;
MONTH
: UINT8;
DAY
: UINT8;
HOUR
: UINT8;
MINUTE
: UINT8;
SECOND
: UINT8;
UINT_SEC_FRACTION : UINT24;
CASE 3 :
U_TIME
: UINT32;
SECOND
: UINT8;
UINT_SEC_FRACTION : UINT24;
CASE 4 :
U_TIME_SEC
: UINT32;
U_SEC_FRACTION
: UINT32;
END;
END;
TYPE LTIME_DATE_RCD = PACKED RECORD
SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
CASE 0 :
NIL
: NIL;
CASE 1 :
YEAR
: BCD;
MONTH
: BCD;
DAY
: BCD;
HOUR
: BCD;
MINUTE
: BCD;
SECOND
: BCD;
CASE 2 :
YEAR
: UINT8;
MONTH
: UINT8;
DAY
: UINT8;
HOUR
: UINT8;
MINUTE
: UINT8;
SECOND
: UINT8;
CASE 3 :
U_TIME
: UINT32;
SECOND
: UINT8
CASE 4 :
U_TIME_SEC : UINT32;
END;
END;

20

Date and Time Formats / HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME types

Special Data Types

ANSI C12.19-2008

TYPE STIME_DATE_RCD = PACKED RECORD


SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
CASE 0 :
NIL
: NIL;
CASE 1 :
YEAR
: BCD;
MONTH
: BCD;
DAY
: BCD;
HOUR
: BCD;
MINUTE
: BCD;
CASE 2 :
YEAR
: UINT8;
MONTH
: UINT8;
DAY
: UINT8;
HOUR
: UINT8;
MINUTE
: UINT8;
CASE 3 :
U_TIME
: UINT32;
CASE 4 :
U_TIME_SEC : UINT32;
END;
END;
TYPE HTIME_RCD = PACKED RECORD
SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
CASE 0 :
NIL
: NIL;
CASE 1 :
HOUR
: BCD;
MINUTE
: BCD;
SECOND
: BCD;
BCD_SEC_FRACTION : BCD(3);
CASE 2 :
HOUR
: UINT8;
MINUTE
: UINT8;
SECOND
: UINT8;
UINT_SEC_FRACTION : UINT24;
CASE 3 :
D_TIME
: UINT32;
U_SEC_FRACTION
: UINT32;
CASE 4 :
D_TIME
: UINT32;
U_SEC_FRACTION
: UINT32;
END;
END;
TYPE TIME_RCD = PACKED RECORD
SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
CASE 0 :
NIL
: NIL;
CASE 1 :
HOUR
: BCD;
MINUTE
: BCD;
SECOND
: BCD;
CASE 2 :
HOUR
: UINT8;
MINUTE
: UINT8;
SECOND
: UINT8;
CASE 3 :
D_TIME
: UINT32;
CASE 4 :
D_TIME
: UINT32;
END;
END;

Date and Time Formats / HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME types

21

ANSI C12.19-2008

Special Data Types

TYPE STIME_RCD = PACKED RECORD


SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
CASE 0 :
NIL
: NIL;
CASE 1 :
HOUR
: BCD;
MINUTE
: BCD;
CASE 2 :
HOUR
: UINT8;
MINUTE
: UINT8;
CASE 3 :
D_TIME
: UINT32;
CASE 4 :
D_TIME
: UINT32;
END;
END;
TDL Element Descriptions
Value

Definition

YEAR

00..89
90..99
> 100

High-precision (sub-second) time stamp. This is


the prototype definition of the built-in type
HTIME_DATE.
Years 2000..2089.
Years 1990..1999.
Reserved.

MONTH

0
1..12
> 12

Reserved.
Month of year.
Reserved.

DAY

0
1..31
> 31

Unassigned.
Day of month.
Reserved.

HOUR

00..23
> 23

Hour of day, 24 hour basis.


Reserved.

MINUTE

00..59
> 59

Minute of hour.
Reserved.

SECOND

00..59
> 59

Seconds of minute.
Reserved.

BCD_SEC_FRACTION

0..999999

The sub-minute portion of SECOND expressed


in units of 1 / 1000000 of a second.

UINT_SEC_FRACTION

0..16777215

The sub-minute portion of SECOND expressed


in units of 1 / 16777216 of a second.

U_TIME

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


GMT.

U_TIME_SEC

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


GMT.

U_SEC_FRACTION

0..4294967295 The sub-second portion of U_TIME_SEC


expressed in units of 1 / 4294967296 of a
second.

Identifier
HTIME_DATE_RCD

22

Date and Time Formats / HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME types

Special Data Types

ANSI C12.19-2008

LTIME_DATE_RCD
YEAR

00..89
90..99
> 100

Normal-precision (seconds) time stamp. This is


the prototype definition of the built-in type
LTIME_DATE.
Years 2000..2089.
Years 1990..1999.
Reserved.

MONTH

0
1..12
> 12

Reserved.
Month of year.
Reserved.

DAY

0
1..31
> 31

Unassigned.
Day of month.
Reserved.

HOUR

00..23
> 23

Hour of day, 24 hour basis.


Reserved.

MINUTE

00..59
> 59

Minute of hour.
Reserved.

SECOND

00..59
> 59

Seconds of minute.
Reserved.

U_TIME

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


GMT.

U_TIME_SEC

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


GMT.

STIME_DATE_RCD
YEAR

00..89
90..99
> 100

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


prototype definition of the built-in type
STIME_DATE.
Years 2000..2089.
Years 1990..1999.
Reserved.

MONTH

0
1..12
> 12

Reserved.
Month of year.
Reserved.

DAY

0
1..31
> 31

Unassigned.
Day of month.
Reserved.

HOUR

00..23
> 23

Hour of day, 24 hour basis.


Reserved.

MINUTE

00..59
> 59

Minute of hour.
Reserved.

U_TIME

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


GMT.

Date and Time Formats / HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME types

23

ANSI C12.19-2008

Special Data Types

HTIME_RCD

High-precision (sub-second) time interval or


localized time. This is the prototype definition of
the built-in type HTIME.

HOUR

00..23
> 23

Hour of day, 24 hour basis.


Reserved.

MINUTE

00..59
> 59

Minute of hour.
Reserved.

SECOND

00..59
> 59

Seconds of minute.
Reserved.

BCD_SEC_FRACTION

0..999999

The sub-minute portion of SECOND expressed


in units of 1 / 1000000 of a second.

UINT_SEC_FRACTION

0..16777215

The sub-minute portion of SECOND expressed


in units of 1 / 16777216 of a second.

D_TIME

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

U_SEC_FRACTION

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


units of 1 / 4294967296 of a second.

TIME_RCD
HOUR

00..23
> 23

Normal-precision (seconds) time interval or


localized time. This is the prototype definition of
the built-in type TIME.
Hour of day, 24 hour basis.
Reserved.

MINUTE

00..59
> 59

Minute of hour.
Reserved.

SECOND

00..59
> 59

Seconds of minute.
Reserved.

D_TIME

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

STIME_RCD

24

HOUR

00..23
> 23

Low-precision (minutes) time interval or


localized time. This is the prototype definition of
the built-in type STIME.
Hour of day, 24 hour basis.
Reserved.

MINUTE

00..59
> 59

Minute of hour.
Reserved.

D_TIME

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

Date and Time Formats / HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME types

Special Data Types

6.3.2

ANSI C12.19-2008

RDATE type

This type defines a recurrent date. This recurrence can be yearly, monthly, or weekly, based on a
constant cycle of days or minutes.
TDL Type Definitions
TYPE RDATE_BFLD = BIT FIELD OF UINT16
MONTH
: UINT(0..3);
SWITCH .MONTH OF
CASE 0 :
PERIOD_IN_MINUTES
CASE 1..13 :
OFFSET
WEEKDAY
DAY
CASE 14 :
FILLER1
WEEKDAY
FILLER2
CASE 15 :
PERIOD_IN_DAYS
DELTA
END;
END;

: UNIT(4..15);
: UINT(4..7);
: UINT(8..10);
: UINT(11..15);
: FILL(4..7);
: UINT(8..10);
: FILL(11..15);
: UINT(4..9);
: UINT(10..15);

TDL Element Descriptions


Identifier

Value

RDATE_BFLD
MONTH

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

PERIOD_IN_MINS

Date and Time Formats / RDATE type

0..4095

Definition
This is the prototype definition of the built-in type
RDATE.
Action is repeated each PERIOD_IN_MINS.
The starting date and time shall be supplied
separately.
Action is repeated each January.
Action is repeated each February.
Action is repeated each March.
Action is repeated each April.
Action is repeated each May.
Action is repeated each June.
Action is repeated each July.
Action is repeated each August.
Action is repeated each September.
Action is repeated each October.
Action is repeated each November.
Action is repeated each December.
Action is repeated monthly.
Action is repeated weekly.
Action is repeated each PERIOD_IN_DAYS
referenced by an ANCHOR_DATE plus DELTA.
The ANCHOR_DATE shall be supplied
separately.
0 to 4095 minutes (or 68 hours).

25

ANSI C12.19-2008

OFFSET

Special Data Types

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

6.3.3

No offset.
Advance to WEEKDAY before date entered.
Postpone to the first WEEKDAY on or after date
entered.
Postpone to the second WEEKDAY on or after
date entered.
Postpone to the third WEEKDAY on or after
date entered.
Postpone to the fourth WEEKDAY on or after
date entered.
Postpone to the last WEEKDAY of the MONTH
on or after date entered.
Observe on date entered as well as day
following date entered.
Postpone to Monday if Sunday.
Advance to Friday if Sunday.
Postpone to Monday if Saturday.
Advance to Friday if Saturday.
Postpone to Monday if Sunday or Saturday.
Advance to Friday if Sunday or Saturday.
Postpone to Monday if Sunday, advance to
Friday if Saturday.
Do not observe date entered. Observe on day
following date entered.

WEEKDAY

0
1
2
3
4
5
6
7

Sunday
Monday.
Tuesday.
Wednesday.
Thursday.
Friday.
Saturday.
Reserved.

DAY

0
1-31

Reserved.
Day of month.

PERIOD_IN_DAYS

0..63

0 to 63 days.

DELTA

0..63

0 to 63 days.

DATE Type

This type defines a non recurrent date in the localized time using a field having the same size as the
recurrent date type "RDATE".
TDL Type Definitions
TYPE DATE_BFLD = BIT FIELD OF UINT16
YEAR
: UINT(0..6);
MONTH
: UINT(7..10);
DAY
: UINT(11..15);
END;

26

Date and Time Formats / DATE Type

Special Data Types

ANSI C12.19-2008

TDL Element Descriptions


Value

Definition

YEAR

00..89
90..99
> 100

This is the prototype definition of the built-in type


DATE.
Years 2000..2089.
Years 1990..1999.
Reserved.

MONTH

0
1..12
> 12

Reserved.
Month of year.
Reserved.

DAY

0
1-31

Reserved.
Day of month.

Identifier
DATE_BFLD

6.4 Common table or procedure identifier formats


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

TABLE_IDA_BFLD bit field

Type TABLE_IDA_BFLD provides the table or procedure number; a flag indicating standard or
manufacturer table or procedure; a flag indicating pending status; a flag indicating extended-user-defined
table and two additional fields for definition and use within the defining data structure. When the
EUDT_FLAG flag is set then MFG_FLAG shall be set to zero.
TDL Type Definitions
TYPE TABLE_IDA_BFLD = BIT FIELD OF UINT16
TBL_PROC_NBR
: UINT(0..10);
MFG_FLAG
: BOOL(11);
PENDING_FLAG
: BOOL(12);
EUDT_FLAG
: BOOL(13);
FLAG2
: BOOL(14);
FLAG3
: BOOL(15);
END;
TDL Element Descriptions
Identifier

Value

Definition

TABLE_IDA_BFLD
TBL_PROC_NBR

0..2039

Table number or Procedure number selected or


identified.

MFG_FLAG
FALSE
TRUE

Alias: STD_VS_MFG_FLAG.
The Table or Procedure selected or identified by
TBL_PROC_NBR is defined by this standard.
The Table or Procedure selected or identified by
TBL_PROC_NBR is defined by the End Device
manufacturer.

Common table or procedure identifier formats / TABLE_IDA_BFLD bit field

27

ANSI C12.19-2008

Special Data Types

PENDING_FLAG

FALSE
TRUE

EUDT_FLAG
FALSE

TRUE

FLAG2

Alias: FLAG1.
The
entity
selected
or
identified
by
TBL_PROC_NBR shall be an instance of a
Table within the End Device. This table shall be
listed
in
one
of
the
sets
GEN_CONFIG_TBL.STD_TBLS_USED
or
GEN_CONFIG_TBL.MFG_TBLS_USED.
The
entity
selected
or
identified
by
TBL_PROC_NBR shall be an instance of an
extended-user-defined Table of the End Device.

FALSE
TRUE

General purpose flag to be Redefined where


used.
As defined where used.
As defined where used.

FALSE
TRUE

General purpose flag to be Redefined where


used.
As defined where used.
As defined where used.

FLAG3

6.4.2

The Table or Procedure selected or identified by


TBL_PROC_NBR is an active instance of a
Table or Procedure of the End Device.
The Table or Procedure selected or identified by
TBL_PROC_NBR is an pending (deferred)
instance of a Table or Procedure of the End
Device.

TABLE_IDB_BFLD bit field

Type TABLE_IDB_BFLD provides the table or procedure number; a flag indicating standard or
manufacturer table or procedure; and a four bit unsigned integer for definition and use within the defining
data structure.
TDL Type Definitions
TYPE TABLE_IDB_BFLD = BIT FIELD OF UINT16
TBL_PROC_NBR
: UINT(0..10);
MFG_FLAG
: BOOL(11);
SELECTOR
: UINT(12..15);
END;
TDL Element Descriptions
Identifier

Value

Definition

TABLE_IDB_BFLD
TBL_PROC_NBR

0..2039

Table number or Procedure number selected or


identified. This reference number shall be to an
active Table or Procedure of the End Device.
i.e., it shall not reference a pending Table,
pending Procedure or extended-user-defined
Table.

MFG_FLAG

28

Alias: STD_VS_MFG_FLAG.

Common table or procedure identifier formats / TABLE_IDB_BFLD bit field

Special Data Types

ANSI C12.19-2008
FALSE
TRUE

SELECTOR

6.4.3

0..15

The Table or Procedure selected or identified by


TBL_PROC_NBR is defined by this standard.
The Table or Procedure selected or identified by
TBL_PROC_NBR is defined by the End Device
manufacturer.
A general purpose selector that is encoded as
an enumerated Sub-element which shall be
Redefined where used.

TABLE_IDC_BFLD bit field

Type TABLE_IDC_BFLD provides the table or procedure number; a flag indicating standard or
manufacturer; a flag indicating table or procedure; and three additional fields for definition and use within
the defining data structure.
TDL Type Definitions
TYPE TABLE_IDC_BFLD = BIT FIELD OF UINT16
TBL_PROC_NBR
: UINT(0..10);
MFG_FLAG
: BOOL(11);
PROC_FLAG
: BOOL(12);
FLAG1
: BOOL(13);
FLAG2
: BOOL(14);
FLAG3
: BOOL(15);
END;
TDL Element Descriptions
Identifier

Value

Definition

TABLE_IDC_BFLD
TBL_PROC_NBR

0..2039

Table number or Procedure number selected or


identified. This reference number shall be to an
active Table or Procedure of the End Device.
i.e., it shall not reference a pending Table,
pending Procedure or extended-user-defined
Table.

MFG_FLAG
FALSE
TRUE

PROC_FLAG

FALSE
TRUE

The TBL_PROC_NBR is a table number.


The TBL_PROC_NBR is a procedure number.

FALSE
TRUE

General purpose flag to be Redefined where


used.
As defined where used.
As defined where used.

FLAG1

FLAG2

Alias: STD_VS_MFG_FLAG.
The Table or Procedure selected or identified by
TBL_PROC_NBR is defined by this standard.
The Table or Procedure selected or identified by
TBL_PROC_NBR is defined by the End Device
manufacturer.

General purpose flag to be Redefined where


used.

Common table or procedure identifier formats / TABLE_IDC_BFLD bit field

29

ANSI C12.19-2008

Special Data Types


FALSE
TRUE

As defined where used.


As defined where used.

FALSE
TRUE

General purpose flag to be Redefined where


used.
As defined where used.
As defined where used.

FLAG3

6.4.4

SOURCE_SEL_RCD

Type SOURCE_SEL_RCD provides a data source selection index and related qualifiers that describe the
data source completely and unambiguously used in selections of data sources in control areas. This data
type is used each time a measurement needs to be selected from a source defined in Decade 1.
TDL Type Definitions
TYPE SOURCE_SELECT_RCD = PACKED RECORD
SWITCH GEN_CONFIG_TBL.MODEL_SELECT OF
CASE 0 :
SOURCE_INDEX
: UINT8;
END;
END;
TDL Element Descriptions
Identifier
SOURCE_SELECT_RCD
SOURCE_INDEX

30

Value

Definition
When MODEL_SELECT is set to 0, this index
selects a source defined in Decade 1 using 8-bit
selection indices.

Common table or procedure identifier formats / SOURCE_SEL_RCD

Compliance & Compatibility

ANSI C12.19-2008

7 Compliance & Compatibility


7.1 Compliance
An End Device is considered to be in compliance with this Standard if all of the following conditions are
met:
a

Two-way communicating End Devices shall accept and act upon all services defined in Section
8.0, Table Transportation Issues.

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

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

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

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

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

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

An End Device is not required to use every data structure within a Table; however, it shall
transport all non-collapsed data structures within a Table. Unused fields are considered in
compliance if byte Count and format are correct and if manufacturers identify unused fields. It is
recommended that unused fields be filled with zeros or spaces.

This Standard specifies variable formats for some data structures. The variable formats shall be
consistent with the format as specified in GEN_CONFIG_TBL (Table 00). Refer to Section 5,
Syntax, and Section 6, Special Data Types, for details.

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

7.2 Backward and Forward Compatibility


Any future revision of this Standard shall be backward compatible with the previous two (2) revisions of
the Standard according to the governing Standard's revision cycle requirement. It is recommended that
new implementations of the Standard avoid using Deprecated Elements and attributes whenever
practical. Forward compatibility is not ensured as Deprecated Elements may become obsolete in future

Compliance

31

ANSI C12.19-2008

Compliance & Compatibility

versions of the Standard or End Device.


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

32

Backward and Forward Compatibility

Table Transportation Issues

ANSI C12.19-2008

8 Table Transportation Issues


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

8.1 Minimum Services and Parameters


8.1.1

Read Service

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

The Read Service Request shall be capable of


both a complete and a partial Table read. This is
accomplished by one required parameter and
optional parameters. The required parameter is
a Table Identifier. Optional parameters define
partial Table retrieval.

Identifier

Value

Definition

Table Identifier

This parameter has a range of 0 to 65535 and is further


subdivided.
0..2039

Provides access to Standard Tables 00 to 2039.

2048..4087

Provides access to Manufacturer Tables 00 to


2039.

4096..6135

Provides access to Standard Pending Tables 00


to 2039.

6144-8183

Provides access to
Tables 00 to 2039.

8192..10231

Provides access to User-defined Tables 00 to


2039.

12288..14327

Provides access to
Tables 00 to 2039.

Manufacturer

User-defined

Pending

Pending

All others values are Reserved.


The maximum number of Decades supported is
204 (10 Tables per Decade) resulting in the
Standard supporting a maximum of 2040 tables
in each of the Standard, Standard Pending,
Manufacturer, and Manufacturer Pending
groups of Tables. The User-defined Tables do
not use the Decade structure since they

Minimum Services and Parameters

33

ANSI C12.19-2008

Table Transportation Issues


represent a sequential set of views of selections
from other Tables.

Partial Table Retrieval

The retrieval of a portion of a Table, a partial


Table, is possible through the use of one of two
methods, the index/element count method and
offset/octet count method. The absence of either
of these methods implies the entire Table shall
be read.

Index/Element-Count Method

The index/element-count method is based upon


accommodating a minimum of five (5) indices
relative to the beginning of the Table data
structure, and optionally a count of the number
of elements to read starting at that index. Each
index shall range from zero (0) to a maximum of
65535. The range of the count of the number of
elements read from that index point is zero (0) to
a maximum of 65535 elements. A zero for the
count value or the absence of the count value
shall cause the remaining portion of the table to
be read starting at the stated index value (for
additional details see section 8.1.3).

Offset/Octet-Count Method

The offset/octet-count method is based upon


supplying an offset from the beginning of the
selected Table and, optionally, a count of the
number of Octets to read from the offset point.
The range of the offset from the beginning of the
Table shall be at least 65535 Octets. The range
of the count of the number of Octets to read
from the offset point shall be at least 65535
Octets. A zero for the count value or the
absence of the count value shall cause the
remaining portion of the Table to be read
starting at the offset point (for additional details,
see section 8.1.5). The count does not include
the pending header length for pending Tables.

Read Service Response


Data

The Read Service Response shall contain as a


minimum the Table data selected by the
aforementioned parameters supplied with the
Read Service Request.
When the Read Service Request Table Identifier
specifies a Pending Table, a six-octet pending
event description precedes the requested
information. The pending event description
parameters are described in
Section 8.2,
Pending Event Description.

8.1.2

Write Service

The Write Service causes the transfer of un-requested data to a target device from the initiating device

34

Minimum Services and Parameters / Write Service

Table Transportation Issues

ANSI C12.19-2008

and is required for both one and two way communications.


Write Service Request

The Write Service Request shall be capable of


both a complete and a partial Table write. This is
accomplished by one required parameter and
partial Table Identifiers and the write data field.
The required parameter is a Table Identifier.
Optional parameters define partial Table write.

Identifier

Value

Definition

Table Identifier

This parameter has a range of 0 to 65535 and is further


subdivided as follows:
0..2039

Provides access to Standard Tables 00 to 2039.

2048..4087

Provides access to Manufacturer Tables 00 to


2039.

4096..6135

Provides access to Standard Pending Tables 00


to 2039. Several additional parameters are
required for writing to a Pending Table. These
parameters are appended to the front of the
Table data to be written. These parameters are
described in Section 8.2, Pending Event
Description.

6144..8183

Provides access to Manufacturer Pending


Tables 00 to 2039. Several additional
parameters are required for writing to a Pending
Table. These parameters are appended to the
front of the Table data to be written as a pending
event description. The pending event description
parameters are described in Section 8.2,
Pending Event Description.

8192..10231

Provides access to User-defined Tables 00 to


2039.

12288..14327

Provides access to User-defined pending Tables


00 to 2039.
All other values are Reserved.
The maximum number of Decades supported is
204 (10 Tables per Decade) resulting in the
Standard supporting a maximum of 2040 Tables
in each of the Standard, Standard Pending,
Manufacturer, and Manufacturer Pending
groups of Tables. The User-defined Tables do
not use the Decade structure since they
represent a sequential set of views of selections
from other Tables.

Partial Table Identifier

Minimum Services and Parameters / Write Service

The writing of a portion of a Table, a partial


Table, is possible through the use of one of two

35

ANSI C12.19-2008

Table Transportation Issues


methods, the index/element-count method and
offset/octet-count method. The absence of either
of these methods implies the entire Table shall
be written.

Index/Element-count Method

The Index/Element-count Method is based upon


accommodating a minimum of five indices
relative to the beginning of the Table data
structure and, optionally, a count of the number
of elements to write starting at the index point.
Each index shall range from zero (0) to a
maximum of 65535. The range of the count of
the number of elements to write shall range from
zero (0) to a maximum of 65535. A zero for the
count value or the absence of the count value
shall imply writing the remaining portion of the
Table from the index point (for additional details,
see section 8.1.3).

Offset/Octet-Count Method

The offset/octet-count method is based upon


supplying an offset from the beginning of the
selected Table and, optionally, a count of the
number of Octets to write to the offset point.
The range of the offset from the beginning of the
Table shall be at least 65535 octets. The range
of the count of the number of Octets to write to
the offset point shall be at least 65535 octets. A
zero for the count value or the absence of the
count value shall cause the remaining portion of
the Table to be written from the offset point (for
additional details, see Section 8.1.5).

Data

The data field contains the information to write.


When the Write Service Request Table Identifier
specifies a Pending Table, a six-octet pending
event description precedes the information in
the data field.

Write Service Response


8.1.3

No response is required to the Write Service


Request.

Partial Table Access Using the Index/element-count Method

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

36

Each member of a PACKED RECORD gets a unique number.

The positional number of the first element of a PACKED RECORD is assigned the value
zero.

The positional numbers of subsequent elements in the same PACKED RECORD are
incremented by one for each subsequent element in the PACKED RECORD.

Minimum Services and Parameters / Partial Table Access Using the Index/element-count Method

Table Transportation Issues

ANSI C12.19-2008

Each sub element of a BIT FIELD is assigned a unique positional number.

The positional number of the first sub element of a BIT FIELD is assigned the value zero.

The positional numbers of subsequent sub elements in the same BIT FIELD are incremented
by one for each subsequent sub element in the BIT FIELD, independent of the bit range
assigned to the sub element.

Positional numbers are assigned independently of any IF or SWITCH statements that may be
present inside PACKED RECORDs or BIT FIELDs, as if the elements or sub-elements
were not enclosed within any IF or SWITCH statements.

For non final elements, one level of index is appended to the index of the parents element
index for use in selections.

Boolean members within a SET are referenced in the same way as array members of a onedimensional array.

For elements of an ARRAY one level of index is appended to the index of the arrays
element for each dimension (as per BNF.dim) for use in selections into entries of the
ARRAY.

2. Selection based on an index method using element count=1 will deliver the whole selected
element.
3. For the purpose of binary transmission, index cannot select into a sub-element or final elements
that are not atomic, with the exception of SETs, where the first octet selected for transmission is
that computed by integer division of the atomic index number requested by eight (8), and the
number of elements is the number of bits requested
4. For the purpose of transmission, an index selection into a non-existing element shall result in an
"Inappropriate Action Requested" error. However, it is permissible to append zeros at the end of
an index to indicate the desired access level of an index selection within the table element
hierarchy.
5. When element-count > 1, the application shall return up to element-count elements at the
same or higher hierarchical level of the index used to initiate the request traversing all element
types serially.
6. When element-count > (number of elements available for transmission), the number of
elements transmitted will be limited to the maximum number of elements available at the same
or higher hierarchical level of the index used to initiated the request. The response elementcount shall be adjusted to reflect the actual number of elements transferred in the response.
7. The number of numeric segments that make up the index (using trailing zero segments if
necessary) defines the initial hierarchical level for element serialization and for element-count
interpretation.
8. For the purpose of transmission, as a part of a request, element-count = 0 shall be interpreted
as all data to be written or all data requested.
9. For the purpose of transmission, as a part of a response, element-count = 0 shall be interpreted
as no data was written, or no data was received.

Minimum Services and Parameters / Partial Table Access Using the Index/element-count Method

37

ANSI C12.19-2008

Table Transportation Issues

10. For the purpose of transmission, as a part of a write request, element-count shall correctly
represent the actual number of elements requested to be written, at the hierarchical level of the
selection start index.
11. For the purpose of transmission, as a part of a read request, element-count represents the
maximum number of elements requested.
12. For the purpose of transmission, the counter shall not count elements that are not present in the
table by virtue of the elements themselves being excluded from the data stream through the use
of the IF or SWITCH conditional statements.
13. For the purpose of transmission, the counter shall not count elements that are not present in the
table by virtue of themselves being excluded from the data stream through the use of zero length
arrays, sets, strings, binaries, or bcd.
14. Generally, for the purpose of transmission, any element whose size is zero shall not be a
candidate for transmission and not be counted.
15. The element-count counts elements and not octets.
16. If the respondent application does not support the transmission elements at the requested index
level, or the respondent application cannot deliver the element requested from an ARRAY the
respondent application shall assert the error condition "Inappropriate Action Requested". The
requester may then attempt a retry of the read/write request on an index of an element that is
higher or lower in hierarchy relative to the index of the failed attempt.
8.1.4

Partial Table Access Using the Offset/octet-count Method

1. An offset sets up a start of selection into a table object relative to the beginning of the table.
2. Offset zero (0) is the octet offset to the first octet of the first object in the table as prescribed by
the object data type and the value of DATA_ORDER, found in the GEN_CONFIG_TBL (Table
00).
3. When count > 1, the application shall return up to count octets from the offset used to initiate
the request, traversing all element types serially, where each element will be transferred
according to its type and the value of DATA_ORDER, found in the GEN_CONFIG_TBL (Table
00).
4. When count > (number of octets available for transmission), the number of octets transmitted will
be limited to the maximum number octets available. The response count shall be adjusted to
reflect the actual number of octets transferred in the response.
5. For the purpose of transmission, as a part of a read request, count = 0 shall be interpreted as all
data requested.
6. For the purpose of transmission, as a part of a response, count = 0 shall be interpreted as no
data was written, or no data was received.
7. For the purpose of transmission, as a part of a write request, octet count shall correctly represent
the actual number of octets requested to be written starting at the table offset requested.
8. For the purpose of transmission, as a part of a read request, count represents the maximum
number of octets requested.

38

Minimum Services and Parameters / Partial Table Access Using the Offset/octet-count Method

Table Transportation Issues

ANSI C12.19-2008

9. For the purpose of transmission, the counter shall not count elements that are not present in the
table by virtue of themselves being excluded from the data stream through the use of zero length
arrays, sets, strings, binaries or bcd.
10. Generally, for the purpose of transmission, any element whose size is zero shall not be a
candidate for transmission and not be counted.
11. The octet counter counts octets and not elements.
12. If the respondent application does not support the transmission of octets at the requested offset,
then the respondent application shall assert the error condition "Inappropriate Action Requested.
8.1.5

Index Count Access Method Examples

The following are examples for the use of the Index/Element-Count method to select data.
Example 1
Index = 1.0
Element-Count = 2

0
1.0
1.1
1.2
2
3.0
3.1.0
3.1.1
3.2
4

8.2

(Selected)
(Selected)

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

Example 3
Index = 1.2.0,
Element-Count = 4

0
1.0
1.1
1.2
2
3.0
3.1.0
3.1.1
3.2
4

(Selected)
(Selected)
(Selected)
(Selected)

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

Pending Event Description

This Standard supports the transmission of a set of shadow Tables, known as Pending Tables. Data read
from or written to a Pending Table is identical in format to the data read from or written to regular Tables
(Standard Tables or Manufacturer Tables), except for the addition of the fixed length Pending Event
Description that is placed ahead of the Table data during transmission, defined below.
TDL Type Definitions
TYPE STATUS_BFLD = BIT FIELD OF UINT8
EVENT_CODE
: UINT(0..3);
SELF_READ_FLAG
: BOOL(4);
DEMAND_RESET_FLAG
: BOOL(5);
RESERVED
: FILL(6..7);
END;

Pending Event Description

39

ANSI C12.19-2008

Table Transportation Issues

TYPE PE_STIME_DATE_RCD = PACKED RECORD


SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
CASE 0:
RESERVED
: ARRAY[5] of FILL8;
CASE 1:
YEAR
: BCD;
MONTH
: BCD;
DAY
: BCD;
HOUR
: BCD;
MINUTE
: BCD;
CASE 2:
YEAR
: UINT8;
MONTH
: UINT8;
DAY
: UINT8;
HOUR
: UINT8;
MINUTE
: UINT8;
CASE 3:
U_TIME
: UINT32;
FILL
: FILL8;
CASE 4:
U_TIME_SEC :UINT32;
FILL
: FILL8;
END;
END;
TYPE EVENT_STORAGE_RCD = PACKED RECORD
SWITCH STATUS_BFLD.EVENT_CODE OF
CASE 0:
PE_STIME_DATE
: PE_STIME_DATE_RCD;
CASE 1:
WEEKS
: UINT8;
DAYS
: UINT8;
HOURS
: UINT8;
MINUTES
: UINT8;
SECONDS
: UINT8;
CASE 2:
MFG_CODE
: BINARY(4);
MFG_EVENT_CODE : UINT8;
END;
END;
TYPE PENDING_EVENT_DESC_RCD = PACKED RECORD
EVENTS_SELECTOR
: STATUS_BFLD;
EVENT_STORAGE
: EVENT_STORAGE_RCD;
END;
TDL Element Descriptions
Identifier

Value

STATUS_BFLD

Selectors indicating action to be performed upon


activation of selected Pending Table.

EVENT_CODE

40

Definition

Element that specifies the condition upon which


the Pending Table shall be made active. The
trigger
condition
is
stored
in
the
EVENT_STORAGE record.
Pending Table is activated based on an
absolute
time
contained
in
the
EVENT_STORAGE record. The time is
interpreted as SDATE_TIME.

Pending Event Description

Table Transportation Issues

ANSI C12.19-2008
1
2
3..15

SELF_READ_FLAG

FALSE
TRUE

DEMAND_RESET_FLAG

FALSE
TRUE

RESERVED

Pending Table is activated based on a relative


time contained in the EVENT_STORAGE
record.
Pending Table is activated based on a non-time
associated
trigger
contained
in
the
EVENT_STORAGE record.
Reserved.
Do not perform a Self-read before Pending
Table is activated.
Perform a Self-read, if capable, before Pending
Table is activated.
Do not perform a demand reset before Pending
Table is activated.
Perform a demand reset, if capable, before
Pending Table is activated.
Reserved.

PE_STIME_DATE_RCD

Fields and interpretation of the pending event


short time and date format is identical to that of
STIME_DATE, except that the data structure
length is fixed in length.

EVENT_STORAGE_RCD

Pending event trigger condition that causes a


Pending Table to become active. The size of
EVENT_STORAGE_RCD always occupies five
Octets and is transmitted as ARRAY[5] of
UINT8. The actual interpretation of this record is
controlled
by
the
content
of
EVENT_SELECTOR.EVENT_CODE as follows:

PENDING_EVENT_DESC_RCD

PE_STIME_DATE_RCD, year, month, day,


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

WEEKS, DAYS, HOURS, MINUTES and


SECONDS represented as a UINT8 (0..255).

Four-byte
manufacturer
code
as
per
GEN_CONFIG_TBL.DEVICE_CLASS, followed
by a one-byte manufacturer-specific event code
(MFG_EVENT_CODE).
Any Tables PENDING_EVENT_DESC
PENDING_EVENT_DESC_RCD.

EVENTS_SELECTOR

Status bits indicating various


associated with a Pending Table.

EVENT_STORAGE

Trigger condition that causes a Pending Table to


become
active,
as
defined
in

Pending Event Description

conditions

41

ANSI C12.19-2008

Table Transportation Issues

EVENT_STORAGE_RCD.EVENT_STORAGE.
It always occupies five Octets and is transmitted
as ARRAY[5] of UINT8.

8.3 List Management Description


The following declarations are of value to any list management system that requires a capability for
issuing an advance warning or notification when a list is about to overflow or when a list contains a
minimum number of events.
TYPE LIST_OVERFLOW_CONTROL_BFLD = BIT FIELD OF UINT8
PERCENT_OR_VALUE_FLAG
: BOOL(0);
LOW_OVERFLOW_INDICATION_FLAG
: BOOL(1);
HIGH_OVERFLOW_INDICATION_FLAG
: BOOL(2);
REPEAT_OVERFLOW_INDICATION_FLAG : BOOL(3);
FILLER
: FILL(4..7);
END;
TYPE LIST_OVERFLOW_CONTROL_RCD
LIST_OVERFLOW_ENABLE
: STD.LIST_OVERFLOW_CONTROL_BFLD;
IF .LIST_OVERFLOW_ENABLE.LOW_OVERFLOW_INDICATION_FLAG == TRUE THEN
LOW_THRESHOLD
: UINT16;
END;
IF .LIST_OVERFLOW_ENABLE.HIGH_OVERFLOW_INDICATION_FLAG == TRUE THEN
HIGH_THRESHOLD
: UINT16;
IF .LIST_OVERFLOW_ENABLE.REPEAT_OVERFLOW_INDICATION_FLAG == TRUE
THEN
REPEAT_INTERVAL
: UINT16;
MAX_REPEATS
: UINT16;
END;
END;
END;
TDL Element Descriptions
Identifier

Value

LIST_OVERFLOW_CONTROL_BFLD
PERCENT_OR_VALUE_FLAG

FALSE
TRUE

LOW_OVERFLOW_INDICATION_FLAG
FALSE

42

Definition
A bit field which contains selections and
enabling
mechanisms
for
list
overflow
management.
A selector that provides an interpretation for the
controlling values of the limiting values exposed
by
LOW_OVERFLOW_INDICATION_FLAG,
HIGH_OVERFLOW_INDICATION_FLAG, and
REPEAT_OVERFLOW_INDICATION_FLAG.
Number of entries.
The controlling value is the number of entries in
the list.
Percent of full list.
The controlling value is expressed in percent of
full list size.
A selector for low limit list overflow threshold.
Low threshold value indication is not available.

List Management Description

Table Transportation Issues

ANSI C12.19-2008

TRUE

HIGH_OVERFLOW_INDICATION_FLAG
FALSE

TRUE

REPEAT_OVERFLOW_INDICATION_FLAG
FALSE

TRUE

LIST_OVERFLOW_CONTROL_RCD
LIST_OVERFLOW_ENABLE

List management warnings, such as notification


on overflow, are not possible based on low
threshold value.
Low threshold value indication is available.
List management warnings, such as notification
on overflow, are not possible based on low
threshold value.
A selector for high limit list overflow threshold.
High threshold value indication is not available.
List management warnings, such as notification
on overflow, are not possible based on low
threshold value.
High threshold value indication is available.
List management warnings, such as notification
on overflow, are possible based on low
threshold value.
A selector for repeat interval following the
issuance of a high limit list overflow indication.
Repeat threshold value not available.
List management, such as notification on
overflow, is not possible following initial high
threshold report.
Repeat threshold value available.
List management, such as notification on
overflow, is possible following initial high
threshold report.
A general list management control element
used by End Devices to manage the action
taken as a result of list overflows.
See
STD.LIST_OVERFLOW_CONTROL_BFLD.

LOW_THRESHOLD

The low threshold value or percent of full list


size (See by .LIST_OVERFLOW_ENABLE.
PERCENT_OR_VALUE_FLAG) used to sense
a possible list overflow.

HIGH_THRESHOLD

The high threshold value or percent of full list


size (See by .LIST_OVERFLOW_ENABLE.
PERCENT_OR_VALUE_FLAG) used to sense
a possible list overflow.

REPEAT_INTERVAL

The repeat threshold value or percent of full list


size (See by .LIST_OVERFLOW_ENABLE.
PERCENT_OR_VALUE_FLAG) used re-trigger
a sense a possible list overflow, following an
initial trigger based on HIGH_THRESHOLD.

MAX_REPEATS

The maximum number of times an overflow


condition shall re-trigger following detection if
not serviced and cleared.

List Management Description

43

ANSI C12.19-2008

Tables

9 Tables
9.1 Decade 0: General Configuration Tables
Decade 0 Name
GEN_CONFIG_DEC
Decade 0 Data Description
This decade contains tables associated with End Device configuration, identification, procedures and
responses, and information required for data manipulation due to hardware configurations.
9.1.1

Table 00 General Configuration Table

Table 00 Data Description


GEN_CONFIG_TBL (Table 00) contains general End Device configuration information. It also
establishes the total set of tables, procedures, and the selection of special types used in the End Device.
If a default set is used, it is indicated by this table.
Global Default Table Property Overrides: atomic = true, role=CONTROL,
accessibility=READONLY
Table 00 Type Definitions
TYPE FORMAT_CONTROL_1_BFLD = BIT FIELD OF UINT8
DATA_ORDER
: UINT(0..0);
CHAR_FORMAT
: UINT(1..3);
MODEL_SELECT
: UINT(4..6);
FILLER
: FILL(7);
END;
TYPE FORMAT_CONTROL_2_BFLD = BIT FIELD OF UINT8
TM_FORMAT
: UINT(0..2);
DATA_ACCESS_METHOD
: UINT(3..4);
ID_FORM
: UINT(5..5);
INT_FORMAT
: UINT(6..7);
END;
TYPE FORMAT_CONTROL_3_BFLD = BIT FIELD OF UINT8
NI_FORMAT1
: UINT(0..3);
NI_FORMAT2
: UINT(4..7);
END;

44

Decade 0: General Configuration Tables / Table 00 General Configuration Table

Tables

ANSI C12.19-2008

TYPE GEN_CONFIG_RCD = PACKED RECORD


FORMAT_CONTROL_1
: FORMAT_CONTROL_1_BFLD;
FORMAT_CONTROL_2
: FORMAT_CONTROL_2_BFLD;
FORMAT_CONTROL_3
: FORMAT_CONTROL_3_BFLD;
DEVICE_CLASS
: BINARY(4);
NAMEPLATE_TYPE
: UINT8;
DEFAULT_SET_USED
: UINT8;
MAX_PROC_PARM_LENGTH : UINT8;
MAX_RESP_DATA_LEN
: UINT8;
STD_VERSION_NO
: UINT8;
STD_REVISION_NO
: UINT8;
DIM_STD_TBLS_USED
: UINT8;
DIM_MFG_TBLS_USED
: UINT8;
DIM_STD_PROC_USED
: UINT8;
DIM_MFG_PROC_USED
: UINT8;
DIM_MFG_STATUS_USED
: UINT8;
NBR_PENDING
: UINT8;
STD_TBLS_USED
: SET(GEN_CONFIG_TBL.DIM_STD_TBLS_USED);
MFG_TBLS_USED
: SET(GEN_CONFIG_TBL.DIM_MFG_TBLS_USED);
STD_PROC_USED
: SET(GEN_CONFIG_TBL.DIM_STD_PROC_USED);
MFG_PROC_USED
: SET(GEN_CONFIG_TBL.DIM_MFG_PROC_USED);
STD_TBLS_WRITE
: SET(GEN_CONFIG_TBL.DIM_STD_TBLS_USED);
MFG_TBLS_WRITE
: SET(GEN_CONFIG_TBL.DIM_MFG_TBLS_USED);
END;
TABLE 0 GEN_CONFIG_TBL = GEN_CONFIG_RCD;
Table 00 Element Descriptions
Identifier

Value

Definition

0
1

Element to define order of multi-byte numeric


data transfer.
Least significant byte first.
Most significant byte first.

FORMAT_CONTROL_1_BFLD
DATA_ORDER

CHAR_FORMAT

Character set selection as described in Section


6.1,
Special
Data
Types.
See
STD.CHAR_FORMAT_ENUM.

MODEL_SELECT

Unsigned binary code indicating the decade to


be used for selecting the data sources as
follows:

FORMAT_CONTROL_2_BFLD
TM_FORMAT

A code indicating the data source selection


model selects sources as an 8-bit index into the
SOURCES_TBL (Table 16).

1..7

Reserved.
Data representation format selector for use by
HTIME_DATE, LTIME_DATE, STIME_DATE,
TIME, STIME and HTIME. See STD.
TM_FORMAT_ENUM.

Decade 0: General Configuration Tables / Table 00 General Configuration Table

45

ANSI C12.19-2008

Tables

DATA_ACCESS_METHOD
0
1
2
3
ID_FORM
0
1
INT_FORMAT
0
1
2
3
FORMAT_CONTROL_3_BFLD
NI_FORMAT1

NI_FORMAT2

Element to designate method of passing the


table data after GEN_CONFIG_TBL (Table 00)
has been interrogated.
Full table access only. No partial table access
methods are supported.
Full table access and offset-count access
methods are supported.
Full table access and index-count methods are
supported.
Both methods 1 and 2 of data access methods
are supported.
Indicates the format of the
defined in Decade 00.
STRING.
BCD.

identifier fields

Indicates the format of signed integer types.


Signed integer types are represented in twos
complement format.
Signed integer types are represented in ones
complement format.
Signed integer types are represented in
sign/magnitude format.
Reserved.
Indicates the type of non-integer value used
throughout the tables where specified as
NI_FMAT1. Refer to Section 6.2, Non-integer
Formats,
for
details.
See
STD.NI_FORMAT_ENUM.
Indicates the type of non-integer value
throughout the tables where shown as
NI_FMAT2. Refer to Section 6.2, Non-integer
Formats,
for
details.
See
STD.NI_FORMAT_ENUM.

GEN_CONFIG_RCD
FORMAT_CONTROL_1
FORMAT_CONTROL_2
FORMAT_CONTROL_3
DEVICE_CLASS

See FORMAT_CONTROL_1_BFLD.
See FORMAT_CONTROL_2_BFLD.
See FORMAT_CONTROL_3_BFLD.
A group of End Devices sharing the same table
structure. This Element contains a relative
universal object identifier derived from the
following structure:
<device-class-root-oid>.<class>
The <class> (DEVICE_CLASS) is registered in
a manner that it shall be unique among all
C12.19 implementations, within a registered root

46

Decade 0: General Configuration Tables / Table 00 General Configuration Table

Tables

ANSI C12.19-2008
context. This numeric sequence is encoded
according to ISO 8825-1-1997 Basic Encoding
Rules. The value to be used for this Element
by unregistered End Devices that implement this
Standard shall be 0.2.0.0. For registered End
Devices, refer to Annex J, Universal Identifier.
Example:
<class> = 35.
DEVICE_CLASS = 23H 00H 00H 00H.
Relative UID ASN.1 Encoding = 0DH 01H 23H.
For
ANSI
C12.19-1997
End
Device
MANUFACTURER codes, refer to Annex A,
Reserved Classes for Meter Equipment
Manufacturers Implementing ANSI C12.19-1997
Devices.
Alias: MANUFACTURER.
NAMEPLATE_TYPE
0
1
2
3..255
DEFAULT_SET_USED
0
1
2
3
4
5..255

Entry used to select the nameplate record


structure
to
be
used
in
DEVICE_NAMEPLATE_TBL (Table 02).
Gas.
Water.
Electric.
Reserved.
Indicates which, if any, default sets are used.
See Annex C, Default Sets for Decade Tables,
for the default set definitions.
Default sets are not used. See Section 4.1,
Standard Tables, Figure 4.1, conditions C
through H for more detail.
Default set #1, Simple Meter Register, in use.
Default set #2, Simple Demand Meter, in use.
Default set #3, Simple TOU Meter, in use.
Default set #4, Simple Profile Recorder, in use.
Reserved.

MAX_PROC_PARM_LENGTH 0..255

Manufacturer-defined maximum length for


argument parameters passed to procedures in
PROC_INITIATE_TBL (Table 07).

MAX_RESP_DATA_LEN

Manufacturer-defined
maximum
length
representing length returned by procedures in
PROC_RESPONSE_TBL (Table 08).

0..255

STD_VERSION_NO
0
1

A number that designates the version of the


particular industry set of Standard Tables.
Pre-release or informal release document.
Original Standard Table Set, first release of the
standard, C12.19-1997. If the Decade 9 tables
are implemented, this implies the use of C12.211999.
Second Standard Table Set, second release of
the standard as defined by this document.

Decade 0: General Configuration Tables / Table 00 General Configuration Table

47

ANSI C12.19-2008

Tables
3..255

STD_REVISION_NO

A number that designates a minor change to a


version of this standard. Within a given version
of this standard, all revisions with a lower
revision number shall be backward compatible.
If this is not true then a new version number
shall be required.
0
1..255

Representing both STD_VERSION_NO = 1 and


STD_VERSION_NO = 2.
Reserved.

DIM_STD_TBLS_USED

0..255

The number of octets required to represent the


set
of
standard
tables
used
in
GEN_CONFIG_TBL.STD_TBLS_USED (Table
00). This is a mechanism to allow the table
identifier set to expand in size from simple
devices to complex devices.

DIM_MFG_TBLS_USED

0..255

The number of octets required to represent the


set
of
manufacturer
tables
used
in
GEN_CONFIG_TBL.MFG_TBLS_USED (Table
00). This is a mechanism to allow the table
identifier set to expand in size from simple
devices to complex devices.

DIM_STD_PROC_USED

Octets required to represent the set of standard


procedures
used
in
GEN_CONFIG_TBL.STD_PROC_USED (Table
00). This is a mechanism to allow the standard
defined procedure identifier set to expand in
size.

DIM_MFG_PROC_USED

0..255

The number of octets required to represent the


set of manufacturer procedures used in
GEN_CONFIG_TBL.MFG_PROC_USED (Table
00).
This is a mechanism to allow the
manufacturer-defined procedure identifier set to
expand in size.

DIM_MFG_STATUS_USED

0..255

The number of octets allocated for indicating


manufacturer specific status flags.

NBR_PENDING

0..255

The number of pending status


PENDING_STATUS_TBL (Table 04).

STD_TBLS_USED

sets

in

This set Element indicates which of the


Standard Tables are implemented by the End
Device. Tables are represented by bit-indices 0
through (8*DIM_STD_TBLS_USED-1).
FALSE

48

Reserved.

The Standard Table represented by this SET


index is not available from the End Device.

Decade 0: General Configuration Tables / Table 00 General Configuration Table

Tables

ANSI C12.19-2008

TRUE

MFG_TBLS_USED

This set Element indicates which of the


Manufacturer Tables are implemented by the
End Device. Tables are represented by bitindices 0 through (8*DIM_MFG_TBLS_USED1).
FALSE
TRUE

STD_PROC_USED

The Manufacturer Table represented by this


SET index is not available from the End Device.
The Manufacturer Table represented by this
SET index is implemented and it is available
from the End Device.
This set Element indicates which of the
Standard Procedures are implemented by the
End Device. Procedures are represented by bitindices 0 through (8*DIM_STD_PROC_USED1).

FALSE
TRUE
MFG_PROC_USED

The Standard Procedure represented by this


SET index is not implemented by the End
Device.
The Standard Procedure represented by this
SET index is implemented the End Device.
This set Element indicates which of the
Manufacturer's Procedures are implemented by
the End Device. Procedures are represented by
bit-indices
0
through
(8*DIM_MFG_PROC_USED-1).

FALSE
TRUE
STD_TBLS_WRITE

The Manufacturer Procedure represented by


this SET index is not implemented by the End
Device.
The Manufacturer Procedure represented by
this SET index is implemented the End Device.
This set Element indicates which of the
Standard Tables are capable of being written-to.
Tables are represented by bit-indices 0 through
(8*DIM_STD_TBLS_USED-1).

FALSE
TRUE

MFG_TBLS_WRITE

The Standard Table represented by this SET


index is implemented and it is available from the
End Device.

The Standard Table represented by this SET


index cannot be written.
The Standard Table represented by this SET
index may be written (as constrained by other
security and access provisions).
This set Element indicates which of the
Manufacturer's Tables are capable of being
written-to. Tables are represented by bits 0
through (8*DIM_MFG_TBLS_USED-1).

Decade 0: General Configuration Tables / Table 00 General Configuration Table

49

ANSI C12.19-2008

Tables

FALSE
TRUE

50

The Manufacturer Table represented by this


SET index cannot be written.
The Manufacturer Table represented by this
SET index may be written (as constrained by
other security and access provisions).

Decade 0: General Configuration Tables / Table 00 General Configuration Table

Tables

9.1.2

ANSI C12.19-2008

Table 01 General Manufacturer Identification Table

Table 01 Data Description


GENERAL_MFG_ID_TBL (Table 01) is a general manufacturer identification data table for Water, Gas,
and Electric Utility End Devices. The values of the data items shall be set up by the manufacturer and left
unchanged since they are determined by the functionality of the device.
Global Default Table Property Overrides: Role=CONTROL, Accessibility=READONLY
Table 01 Type Definitions
TYPE MANUFACTURER_IDENT_RCD = PACKED RECORD
MANUFACTURER
: STRING(4);
ED_MODEL
: STRING(8);
HW_VERSION_NUMBER
: UINT8;
HW_REVISION_NUMBER
: UINT8;
FW_VERSION_NUMBER
: UINT8;
FW_REVISION_NUMBER
: UINT8;
IF GEN_CONFIG_TBL.ID_FORM THEN
MFG_SERIAL_NUMBER
: BCD(8);
ELSE
MFG_SERIAL_NUMBER
: STRING(16);
END;
END;
TABLE 1 GENERAL_MFG_ID_TBL = MANUFACTURER_IDENT_RCD;
Table 01 Element Descriptions
Identifier

Value

MANUFACTURER_IDENT_RCD
MANUFACTURER

Definition
Acronym for the manufacturer name.

ED_MODEL

Model identifier of the End Device left justified.


For example 'ENG M3 '.

HW_VERSION_NUMBER

0..255

Manufacturer's hardware
Implies functional changes.

version

HW_REVISION_NUMBER

0..255

Manufacturer's hardware revision number.


Implies product corrections or improvements.
Recommended use of '0' to designate
prototyping device.

FW_VERSION_NUMBER

0..255

Manufacturer's firmware version number.


Changes in value imply functional differences.

FW_REVISION_NUMBER

0..255

Manufacturer's firmware revision number.


Changes in value imply product corrections or
improvements. Recommend use of '0' to
designate preproduction or prototyping software.

Decade 0: General Configuration Tables / Table 01 General Manufacturer Identification Table

number.

51

ANSI C12.19-2008

MFG_SERIAL_NUMBER

52

Tables

Manufacturer's serial number for the End


Device.

Decade 0: General Configuration Tables / Table 01 General Manufacturer Identification Table

Tables

9.1.3

ANSI C12.19-2008

Table 02 Device Nameplate Table

Table 02 Data Description


DEVICE_NAMEPLATE_TBL (Table 02) is the nameplate data table. This table contains a record
structure for each type of End Device (e.g., water, gas, electric). The structure to be used is specified in
GEN_CONFIG_TBL.NAMEPLATE_TYPE (Table 00). This table presently has nameplate structures
defined for an electric meter, a gas meter and a water meter.
Global Default Table Property Overrides: Role=CONTROL
Table 02 Type Definitions
{water device structures}
TYPE W_WATER_DEVICE_BFLD = BIT FIELD OF UINT16
W_ED_TYPE
: UINT(0..2);
W_FLUID_TYPE
: UINT(3..6);
W_ED_DRIVE
: UINT(7..10);
W_ED_PIPE_SIZE
: UINT(11..15);
END;
{gas device structures}
TYPE G_ED_TYPE_BFLD = BIT FIELD OF UINT8
G_ED_TYPE
: UINT(0..2);
G_MECH_FORM
: UINT(3..5);
G_ENG_METRIC
: UINT(6..6);
FILLER
: FILL(7..7);
END;
TYPE G_PRESSURE_RCD = PACKED RECORD
G_MAX_PRESS
: NI_FMAT2;
G_UOM_PRESS
: UINT8;
END;
TYPE G_FLOW_RCD = PACKED RECORD
G_MAX_FLOW
: NI_FMAT2;
G_UOM_FLOW
: UINT8;
END;
TYPE G_SIZE_BFLD = BIT FIELD OF UINT8
G_GEAR_DRIVE
: UINT(0..2);
G_INPUT_OUTPUT_PIPE
: UINT(3..7);
END;
TYPE G_COMPENSATION_BFLD = BIT FIELD OF UINT8
G_COMP_TEMP
: UINT(0..4);
G_COMP_PRESS
: UINT(5..7);
END;
TYPE G_GAS_DEVICE_RCD = PACKED RECORD
G_ED_TYPE
: G_ED_TYPE_BFLD;
G_MAX_PRESS
: G_PRESSURE_RCD;
G_FLOW
: G_FLOW_RCD;

Decade 0: General Configuration Tables / Table 02 Device Nameplate Table

53

ANSI C12.19-2008

Tables

G_GEAR_PIPE_SIZE
G_COMPENSATION

: G_SIZE_BFLD;
: G_COMPENSATION_BFLD;

END;
{electric device structures}
TYPE E_ELEMENTS_BFLD = BIT FIELD OF UINT16
E_FREQ
: UINT(0..2);
E_NO_OF_ELEMENTS
: UINT(3..5);
E_BASE_TYPE
: UINT(6..9);
E_ACCURACY_CLASS
: UINT(10..15);
END;
TYPE E_VOLTS_BFLD = BIT FIELD OF UINT8
E_ELEMENTS_VOLTS
: UINT(0..3);
E_ED_SUPPLY_VOLTS
: UINT(4..7);
END;
TYPE E_AMPS_RCD = PACKED RECORD
E_CLASS_MAX_AMPS
: STRING(6);
E_TA
: STRING(6);
END;
TYPE E_ELECTRIC_DEVICE_RCD = PACKED RECORD
E_KH
: STRING(6);
E_KT
: STRING(6);
E_INPUT_SCALAR
: UINT8;
E_ED_CONFIG
: STRING(5);
E_ELEMENTS
: E_ELEMENTS_BFLD;
E_VOLTS
: E_VOLTS_BFLD;
E_AMPS
: E_AMPS_RCD;
END;
TYPE DEVICE_DEFINITION_RCD = PACKED RECORD
SWITCH GEN_CONFIG_TBL.NAMEPLATE_TYPE OF
CASE 0
: G_GAS_DEVICE
: G_GAS_DEVICE_RCD;
CASE 1
: W_WATER_DEVICE
: W_WATER_DEVICE_BFLD;
CASE 2
: E_ELECTRIC_DEVICE
: E_ELECTRIC_DEVICE_RCD;
CASE 3..255 : RESERVED
: NIL;
END;
END;
TABLE 2 DEVICE_NAMEPLATE_TBL = DEVICE_DEFINITION_RCD;
Table 02 Water Data Description
The following structures are generally associated with Water Utility End Devices. The values of the data
items shall be set up by the manufacturer and left unchanged since they are determined by the
functionality of the device.

54

Decade 0: General Configuration Tables / Table 02 Device Nameplate Table

Tables

ANSI C12.19-2008

Table 02 Water Element Descriptions


Identifier

Value

Definition

0
1
2
3
4
5
6..7

Code representing water End Device type.


Meter.
Valve.
Pressure Regulator.
Pressure gauge.
Backflow.
Other.
Reserved.

0
1
2
3
4
5
6
7

Code representing type of fluid measured by


water End Device.
Potable water.
Hot water.
Non-potable water.
Sewage primary water.
Sewage secondary water.
Sewage tertiary water.
Other.
Reserved.

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14..15

Code representing water End Device drive.


Piston.
Disc.
Multi-jet.
Turbine.
Compound.
Propeller.
Ultra-sonic.
Magnetic-coupled.
Differential pressure.
Mass.
Variable area.
Open channel.
Oscillatory.
Other.
Reserved.

0
1
2
3
4
5
6
7
8
9
10
11

Code representing End Device pipe size.


English
Metric.
1/2"
13 mm.
5/8"
15 mm.
3/4
20 mm.
1"
25 mm.
1 1/2"
40 mm.
2"
50 mm.
3"
80 mm.
4"
100 mm.
6"
160 mm.
8"
200 mm.
10"
250 mm.
12"
300 mm.

W_WATER_DEVICE_BFLD
W_ED_TYPE

W_FLUID_TYPE

W_ED_DRIVE

W_ED_PIPE_SIZE

Decade 0: General Configuration Tables / Table 02 Device Nameplate Table

55

ANSI C12.19-2008

Tables
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26..31

14"
16"
18"
20"
22"
24"
26"
28"
30"
32"
34"
36"
40
48
Reserved.

350 mm.
400 mm.
450 mm.
500 mm.
Not standard.
600 mm.
Not standard.
Not standard.
Not standard.
800 mm.
Not standard.
900 mm.
1000 mm.
1200 mm.

Table 02 Gas Data Description


The following structures are generally associated with Gas Utility End Devices. The values of the data
items shall be set up by the manufacturer and left unchanged since they are determined by the
functionality of the device.
Table 02 Gas Element Descriptions
Identifier

Value

Definition

0
1
2
3
4
5
6..7

Code representing gas End Device type.


Unclassified.
Gas meter.
Gas pressure regulator.
Sensor.
Load shed device.
Cathodic protection unit.
Reserved.

0
1
2
3
4
5
6..7

Unsigned binary number identifying the primary


mechanical design principle of the device
depending upon value of G_ED_TYPE.
For G_ED_TYPE = 1.
Unclassified.
Bellows meter.
Rotary.
Turbine meter.
Fluidic oscillator.
Anemometer.
Reserved.

0
1
2..7

For G_ED_TYPE = 2.
Unclassified.
Diaphragm.
Reserved.

0
1

For G_ED_TYPE = 3.
Unclassified.
Physical parameter to voltage.

G_ED_TYPE_BFLD
G_ED_TYPE

G_MECH_FORM

56

Decade 0: General Configuration Tables / Table 02 Device Nameplate Table

Tables

ANSI C12.19-2008

G_ENG_METRIC

2
3
4
5..7

Physical parameter to current.


Physical parameter to frequency.
Open/closed switch.
Reserved.

0
1
2
3..7

For G_ED_TYPE = 5.
Unclassified.
Pipe to soil.
Impedance.
Reserved.

0
1

English.
Metric.

G_PRESSURE_RCD
G_MAX_PRESS

End Device maximum design pressure.

G_UOM_PRESS

See UOM_ID_CODES_ENUM enumerator in


UOM_ENTRY_TBL (Table 12).

G_FLOW_RCD
G_MAX_FLOW
G_UOM_FLOW

End Device maximum design flow rate.


See

G_SIZE_BFLD
G_GEAR_DRIVE

UOM_ID_CODES_ENUM
enumerator
UOM_ENTRY_TBL (Table 12).

in

0
1
2
3
4
5
6
7

Code representing gas meter gear drive size.


English
Metric.
None
None.
0.01 or 0.015 m3.
1/2 ft3
3
0.02 m3.
1 ft
3
0.05 m3.
2 ft
3
0.1 m3.
5 ft
3
10 ft
0.2 m3.
3
1.0 m3.
100 ft
10 m3.
1000 ft3

0
1
2
3
4
5
6
7
8
9
10
11
12
13

Code representing gas meter internal pipe


diameter (ID).
English
Metric.
None
None.
1/2"
13 mm.
5/8"
15 mm.
3/4"
20 mm.
1"
25 mm.
1 1/2"
40 mm.
2"
50 mm.
4"
100 mm.
6"
150 mm.
8"
200 mm.
10"
250 mm.
12"
300 mm.
14"
350 mm.
16"
400 mm.

G_INPUT_OUTPUT_PIPE

Decade 0: General Configuration Tables / Table 02 Device Nameplate Table

57

ANSI C12.19-2008

Tables
14
15
16
17
18
19
20
21
22
23
24..31

18"
20"
22"
24"
26"
28"
30"
32"
34"
36"
Reserved.

0
1
2
3..31

Code representing the gas meter temperature


compensation type.
Uncompensated.
Mechanical.
Sensor.
Reserved.

0
1
2
3..7

Code representing the gas meter pressure


compensation type.
Uncompensated.
Mechanical.
Sensor.
Reserved.

G_COMPENSATION_BFLD
G_COMP_TEMP

G_COMP_PRESS

G_GAS_DEVICE_RCD
G_ED_TYPE
G_MAX_PRESS
G_FLOW
G_GEAR_PIPE_SIZE
G_COMPENSATION

450 mm.
500 mm.
Not standard.
600 mm.
Not standard.
Not standard.
750 mm.
Not standard.
Not standard.
900 mm.

See G_ED_TYPE_BFLD.
See G_PRESSURE_RCD.
See G_FLOW_RCD.
See G_SIZE_BFLD.
See G_COMPENSATION_BFLD.

Table 02 Electric Data Description


The following structures are generally associated with Electric Utility End Devices. The values of the data
items shall be set up by the manufacturer and left unchanged since they are determined by the
functionality of the device.
Table 02 Electric Element Descriptions
Identifier

Value

E_ELEMENTS_BFLD

Contains binary codes physically describing the


End Device.

E_FREQ
0
1
2
3
4
5
6
7
58

Definition

Power frequency rating code.


DC.
25 Hz.
50 Hz.
50 or 60 Hz.
60 Hz.
400 Hz.
Reserved.
Unclassified.

Decade 0: General Configuration Tables / Table 02 Device Nameplate Table

Tables

ANSI C12.19-2008

E_NO_OF_ELEMENTS
0
1
2
3
4
5
6
7

Number of commodity measuring elements per


measuring input to the End Device. This code
indicates the number of elements.
None.
1 element.
2 elements.
2.5 elements.
3 elements.
6 elements.
1.5 elements.
Reserved.

0
1
2
3
4
5
6
7
8
9..15

Indicates the type of meter base.


None.
S-base (socket).
A-base (ANSI bottom connected).
K-base.
IEC bottom connected.
switchboard.
rack mount.
B-base.
P-base (Canadian Standard).
Reserved.

E_BASE_TYPE

E_ACCURACY_CLASS

0..63

E_VOLTS_BFLD

ANSI solid state meter standard accuracy class


definitions.
Contains binary codes describing meter RMS
voltages.

E_ELEMENTS_VOLTS
0
1
2
3
4
5
6
7
8
9
10
11
12..15

Meter element voltage code. This binary code


indicates the End Device voltage class.
None.
69.3.
72.
120.
208.
240.
277.
480.
120 thru 277.
120 thru 480.
347.
600.
Reserved.

0
1
2
3
4
5
6

External supply voltage code. This Element


identifies the End Device supply voltage.
Internal.
69.3 AC.
72 AC.
120 AC.
208 AC.
240 AC.
277 AC.

E_ED_SUPPLY_VOLTS

Decade 0: General Configuration Tables / Table 02 Device Nameplate Table

59

ANSI C12.19-2008

Tables
7
8
9
10
11
12
13
14
15

E_AMPS_RCD
E_CLASS_MAX_AMPS
E_TA

End Device class or IEC max amp rating.


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

E_ELECTRIC_DEVICE_RCD
E_KH

Watt-hours per revolution. (May be represented


as unit-hours per equivalent revolution).

E_KT

The commodity amount selected for the test


pulse output.

E_INPUT_SCALAR

Divisor by which to scale input values. For


example if input consists of pulses, an
INPUT_SCALAR value of 2 would cause the
pulse stream to be divided by 2.

E_ED_CONFIG

Form number per ANSI C12.10. characters.

E_ELEMENTS

See E_ELEMENTS_BFLD.

E_VOLTS

See E_VOLTS_BFLD.

E_AMPS

See E_AMPS_RCD.

DEVICE_DEFINITION_RCD

This is full device nameplate data structure


configured as a switch statement for selection of
water, gas or electric End Devices.
The
selection
Element
is
GEN_CONFIG_TBL.NAMEPLATE_TYPE
(Table 00).

G_GAS_DEVICE
W_WATER_DEVICE
E_ELECTRIC_DEVICE

60

480 AC.
120 thru 277 AC.
120 thru 480 AC.
48 DC.
25 DC.
250 DC.
347 AC.
600 AC.
Reserved.

Element present when the End Device is a gas


meter. See G_GAS_DEVICE_RCD for details.
Element present when the End Device is a
water meter. See W_WATER_DEVICE_BFLD
for details.
Element present when the End Device is an
electricity
meter.
See
E_ELECTRIC_DEVICE_RCD for details.

Decade 0: General Configuration Tables / Table 02 Device Nameplate Table

Tables

9.1.4

ANSI C12.19-2008

Table 03 End Device Mode Status Table

Table 03 Data Description


ED_MODE_STATUS_TBL (Table 03) provides the current operating mode and status of various
conditions in the End Device. It allows for both standard and manufacturer specific status definitions.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 03 Type Definitions
TYPE ED_MODE_BFLD = BIT FIELD OF UINT8
METERING_FLAG
: BOOL(0);
TEST_MODE_FLAG
: BOOL(1);
METER_SHOP_MODE_FLAG
: BOOL(2);
FACTORY_FLAG
: BOOL(3);
FILLER
: FILL(4..7);
END;
TYPE ED_STD_STATUS1_BFLD = BIT FIELD OF UINT16
UNPROGRAMMED_FLAG
: BOOL(0);
CONFIGURATION_ERROR_FLAG
: BOOL(1);
SELF_CHK_ERROR_FLAG
: BOOL(2);
RAM_FAILURE_FLAG
: BOOL(3);
ROM_FAILURE_FLAG
: BOOL(4);
NONVOL_MEM_FAILURE_FLAG
: BOOL(5);
CLOCK_ERROR_FLAG
: BOOL(6);
MEASUREMENT_ERROR_FLAG
: BOOL(7);
LOW_BATTERY_FLAG
: BOOL(8);
LOW_LOSS_POTENTIAL_FLAG
: BOOL(9);
DEMAND_OVERLOAD_FLAG
: BOOL(10);
POWER_FAILURE_FLAG
: BOOL(11);
TAMPER_DETECT_FLAG
: BOOL(12);
REVERSE_ROTATION_FLAG
: BOOL(13);
FILLER
: FILL(14..15);
END;
TYPE ED_STD_STATUS2_BFLD = BIT FIELD OF UINT8
FILLER
: FILL(0..7);
END;
TYPE ED_MFG_STATUS_RCD = PACKED RECORD
ED_MFG_STATUS
: SET(GEN_CONFIG_TBL.DIM_MFG_STATUS_USED);
END;
TYPE ED_MODE_STATUS_RCD = PACKED RECORD
ED_MODE
: ED_MODE_BFLD;
ED_STD_STATUS1
: ED_STD_STATUS1_BFLD;
ED_STD_STATUS2
: ED_STD_STATUS2_BFLD;
ED_MFG_STATUS
: ED_MFG_STATUS_RCD;
END;
TABLE 3 ED_MODE_STATUS_TBL = ED_MODE_STATUS_RCD;
Table 03 Element Descriptions

Decade 0: General Configuration Tables / Table 03 End Device Mode Status Table

61

ANSI C12.19-2008

Tables

Identifier
ED_MODE_BFLD
METERING_FLAG

TEST__MODE_FLAG

Value

Definition

FALSE
TRUE

End Device is not in Metering Mode.


End Device is in Metering Mode.
The
METER_SHOP_FLAG cannot be true while this
flag is true.

FALSE
TRUE

End Device is not in Test Mode.


End Device is in Test Mode.

METER_SHOP_MODE_FLAG FALSE
TRUE

End Device is not in Meter Shop Mode.


End Device is in Meter Shop Mode. The
METERING_FLAG cannot be true while this flat
is true.

FACTORY_FLAG

FALSE
TRUE

End Device is not in Factory Mode.


End Device is in Factory Mode.

FALSE
TRUE

End Device is programmed.


End Device is not programmed or it is in a
factory default state.

ED_STD_STATUS1_BFLD
UNPROGRAMMED_FLAG

CONFIGURATION_ERROR_FLAG
FALSE
TRUE
SELF_CHK_ERROR_FLAG

FALSE
TRUE

End Device did not detect a self check error.


End Device did detect a self check error.

RAM_FAILURE_FLAG

FALSE

End Device did not detect a RAM Memory


failure.
End Device did detect a RAM Memory failure.

TRUE
ROM_FAILURE_FLAG

FALSE
TRUE

NONVOL_MEM_FAILURE_FLAG
FALSE
TRUE
CLOCK_ERROR_FLAG

FALSE
TRUE

MEASUREMENT_ERROR_FLAG
FALSE
TRUE

62

End Device did not detect a configuration error.


End Device did detect a configuration error.

End Device did not detect a ROM memory


failure.
End Device did detect a ROM Memory failure.
End Device did not detect a nonvolatile memory
failure.
End Device did detect a nonvolatile memory
failure.
End Device did not detect a clock error.
End Device did detect a clock error.
End Device did not detect a measurement
element error.
End Device did detect a measurement element
error.

Decade 0: General Configuration Tables / Table 03 End Device Mode Status Table

Tables

ANSI C12.19-2008

LOW_BATTERY_FLAG

FALSE
TRUE

LOW_LOSS_POTENTIAL_FLAG
FALSE
TRUE
DEMAND_OVERLOAD_FLAG FALSE
TRUE

End Device did not detect a low battery error.


End Device did detect a low battery error.
End Device did not detect a potential that is
below a predetermined value.
End Device did detect a device potential that is
below a predetermined value.
End Device did not detect a demand threshold
overload.
End Device did detect a demand threshold
overload.

POWER_FAILURE_FLAG

FALSE
TRUE

End Device did not detect a power failure.


End Device did detect a power failure.

TAMPER_DETECT_FLAG

FALSE
TRUE

End Device did not detect tamper activity.


End Device did detect tamper activity.

REVERSE_ROTATION_FLAG FALSE
TRUE
ED_STD_STATUS2_BFLD
ED_MFG_STATUS_RCD
ED_MFG_STATUS
ED_MODE_STATUS_RCD
ED_MODE
ED_STD_STATUS1
ED_STD_STATUS2
ED_MFG_STATUS

End Device did not detect reverse rotation.


End Device did detect reverse rotation.
Standard status code bit field 2 is a place holder
for future expansion.
Set containing the manufacturer specific status
flags.
See ED_MODE_BFLD.
See ED_STD_STATUS1_BFLD.
See ED_STD_STATUS2_BFLD.
See ED_MFG_STATUS_RCD.

Decade 0: General Configuration Tables / Table 03 End Device Mode Status Table

63

ANSI C12.19-2008

9.1.5

Tables

Table 04 Pending Status Table

Table 04 Data Description


PENDING_STATUS_TBL (Table 04) is established to provide an indication of the tables present in the
End Device with a pending status. Information contained within this table includes table number,
manufacturer or standard table indicator, conditions (events) upon which activation of a pending table is
to occur, self-read or demand reset upon activation indicators and several additional status Elements.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 04 Type Definitions
TYPE PE_STATUS_BFLD = BIT FIELD OF UINT8
EVENT_CODE
: UINT(0..3);
SELF_READ_FLAG
: BOOL(4);
DEMAND_RESET_FLAG
: BOOL(5);
RESERVED
: FILL(6..7);
END;
TYPE PE_STIME_DATE_RCD = PACKED RECORD
SWITCH GEN_CONFIG_TBL.TM_FORMAT OF
CASE 0:
RESERVED
: ARRAY[5] OF FILL8;
CASE 1:
YEAR
: BCD;
MONTH
: BCD;
DAY
: BCD;
HOUR
: BCD;
MINUTE
: BCD;
CASE 2:
YEAR
: UINT8;
MONTH
: UINT8;
DAY
: UINT8;
HOUR
: UINT8;
MINUTE
: UINT8;
CASE 3:
U_TIME
: UINT32;
FILLER
: FILL8;
CASE 4:
U_TIME_SEC :UINT32;
FILLER
: FILL8;
END;
END;
TYPE EVENT_STORAGE_RCD = PACKED RECORD
SWITCH .EVENT_SELECTOR.EVENT_CODE OF
CASE 0:
PE_STIME_DATE
: PE_STIME_DATE_RCD;
CASE 1:
WEEKS
: UINT8;
DAYS
: UINT8;
HOURS
: UINT8;
MINUTES
: UINT8;
SECONDS
: UINT8;
CASE 2:
MFG_CODE
: BINARY(4);
MFG_EVENT_CODE : UINT8;
END;
END;

64

Decade 0: General Configuration Tables / Table 04 Pending Status Table

Tables

ANSI C12.19-2008

TYPE EVENT_RCD = PACKED RECORD


EVENT_SELECTOR
: PE_STATUS_BFLD;
EVENT_STORAGE
: EVENT_STORAGE_RCD;
END;
TYPE ENTRY_ACTIVATION_RCD = PACKED RECORD
EVENT
: EVENT_RCD;
TABLE_SELECTOR
: TABLE_IDA_BFLD;
END;
TYPE PENDING_ACTIVATION_RCD = PACKED RECORD
STANDARD_PENDING
: SET(GEN_CONFIG_TBL.DIM_STD_TBLS_USED);
MANUFACT_PENDING
: SET(GEN_CONFIG_TBL.DIM_MFG_TBLS_USED);
LAST_ACTIVATION_DATE_TIME
: STIME_DATE;
NBR_PENDING_ACTIVATION
: UINT8;
PENDING_TABLES
: ARRAY[GEN_CONFIG_TBL.NBR_PENDING] OF
ENTRY_ACTIVATION_RCD;
END;
TABLE 4 PENDING_STATUS_TBL = PENDING_ACTIVATION_RCD;
Table 04 Element Descriptions
Identifier

Value

PE_STATUS_BFLD
EVENT_CODE

0
1
2
3..15
SELF_READ_FLAG

FALSE
TRUE

DEMAND_RESET_FLAG

FALSE
TRUE

RESERVED

Definition
Selectors indicating action to be performed upon
activation of selected table.
Element that specifies the condition upon which
the pending table shall be made active. The
trigger
condition
is
stored
in
the
EVENT_STORAGE Element.
The pending table is activated based on an
absolute
time
contained
in
the
EVENT_STORAGE Element.
The pending table is activated based on a
relative
time
contained
in
the
EVENT_STORAGE Element.
The pending table is activated based on a nontime associated trigger contained in the
EVENT_STORAGE Element.
Reserved.
Do not perform a Self-read before pending table
is activated.
Perform a Self-read, if capable, before pending
table is activated.
Do not perform a demand reset before pending
table is activated.
Perform a demand reset, if capable, before
pending table is activated.
Reserved for future use.

Decade 0: General Configuration Tables / Table 04 Pending Status Table

65

ANSI C12.19-2008

Tables

PE_STIME_DATE_RCD

The fields and interpretation of the pending


event short time and date format is identical to
that of STIME_DATE, except that the data
structure length is fixed in length.

EVENT_STORAGE_RCD

The pending event trigger condition that causes


a pending table to become active. The
EVENT_STORAGE_RCD always occupies five
octets and is transmitted as BINARY(5). The
actual interpretation of this record is controlled
by
the
content
of
EVENTS_SELECTOR.EVENT_CODE. In the
case
where
EVENT_SELECTOR.EVENT_CODE = 2, this
structure contains a four-byte manufacturer
code (MFG_CODE) as per GEN_CONFIG_TBL
.DEVICE_CLASS followed by a one-byte
manufacturer-defined
event
code
(MFG_EVENT_CODE).

EVENT_RCD
EVENTS_SELECTOR

Status bits indicating various


associated with a pending table.

EVENT_STORAGE

Element for storage of the trigger condition that


causes a pending table to become active.

ENTRY_ACTIVATION_RCD
EVENT

Details of the event that triggers pending table


activation(s).
Element containing the table number, the
standard or manufacturer flag and the pending
flag. The pending flag, if set, indicates that the
associated table has not been activated.

TABLE_SELECTOR

PENDING_ACTIVATION_RCD
STANDARD_PENDING

66

conditions

This set Element indicates which of the standard


tables are capable of being written with a
pending status.

MANUFACT_PENDING

This set Element indicates which of the


manufacturer tables are capable of being written
with a pending status.

LAST_ACTIVATION_DATE_TIME

Date and time of the last pending table


activated.

NBR_PENDING_ACTIVATION

Number
of
activation
events
in
the
PENDING_STATUS_TBL structure that have
yet to be activated.

PENDING_TABLES

List of pending tables and associated activation


triggers.

Decade 0: General Configuration Tables / Table 04 Pending Status Table

Tables

9.1.6

ANSI C12.19-2008

Table 05 Device Identification Table

Table 05 Data Description


DEVICE_IDENT_TBL (Table 05) This table provides the unique identifier for the device as specified by
the user.
Global Default Table Property Overrides: Role=CONTROL
Table 05 Type Definitions
TYPE IDENT_RCD = PACKED RECORD
IF GEN_CONFIG_TBL.ID_FORM != 0 THEN
IDENTIFICATION
: BCD(10);
ELSE
IDENTIFICATION
: STRING(20);
END;
END;
TABLE 5 DEVICE_IDENT_TBL = IDENT_RCD;
Table 05 Element Descriptions
Identifier
IDENT_RCD
IDENTIFICATION

Value

Definition
String of 20 characters or 20 BCD digits used to
uniquely identify the device. This Element is the
same as UTIL_INFO_TBL.DEVICE_ID when
they both are available.

Decade 0: General Configuration Tables / Table 05 Device Identification Table

67

ANSI C12.19-2008

9.1.7

Tables

Table 06 Utility Information Table

Table 06 Data Description


UTIL_INFO_TBL (Table 06) is for utility use in providing additional End Device identifying or tracking
information.
Global Default Table Property Overrides: Role=CONTROL
Table 06 Type Definitions
TYPE UTIL_INFO_RCD = PACKED RECORD
OWNER_NAME
: STRING(20);
UTILITY_DIV
: STRING(20);
IF GEN_CONFIG_TBL.ID_FORM THEN
SERVICE_POINT_ID
: BCD(10);
ELEC_ADDR
: BCD(10);
DEVICE_ID
: BCD(10);
UTIL_SER_NO
: BCD(10);
CUSTOMER_ID
: BCD(10);
ELSE
SERVICE_POINT_ID
: STRING(20);
ELEC_ADDR
: STRING(20);
DEVICE_ID
: STRING(20);
UTIL_SER_NO
: STRING(20);
CUSTOMER_ID
: STRING(20);
END;
COORDINATE_1
: BINARY(10);
COORDINATE_2
: BINARY(10);
COORDINATE_3
: BINARY(10);
TARIFF_ID
: STRING(8);
EX1_SW_VENDOR
: STRING(4);
EX1_SW_VERSION_NUMBER
: UINT8;
EX1_SW_REVISION_NUMBER
: UINT8;
EX2_SW_VENDOR
: STRING(4);
EX2_SW_VERSION_NUMBER
: UINT8;
EX2_SW_REVISION_NUMBER
: UINT8;
PROGRAMMER_NAME
: STRING(10);
MISC_ID
: STRING(30);
IF GEN_CONFIG_TBL.STD_VERSION_NO >= 2 THEN
IF GEN_CONFIG_TBL.TM_FORMAT != 0 THEN
FW_LOAD_DATE
: DATE;
END;
END;
END;
TABLE 6 UTIL_INFO_TBL = UTIL_INFO_RCD;
Table 06 Element Descriptions
Identifier

Value

Definition

UTIL_INFO_RCD

68

Decade 0: General Configuration Tables / Table 06 Utility Information Table

Tables

ANSI C12.19-2008

OWNER_NAME

Up to 20 characters. All printable characters are


valid.

UTILITY_DIV

Utility division number. Up to 16 characters. All


printable characters are valid.

SERVICE_POINT_ID

Up to 20 characters or BCD digits. ID number


attached to the service point.

ELEC_ADDR

End Device logical electrical address for


mapping and study purposes. This is used by
the utility as information only.

DEVICE_ID

The ID attached to the hardware. 20 characters


or 20 BCD digits. This DEVICE_ID shall have
the same value and interpretation as
DEVICE_IDENT_TBL.IDENTIFICATION.

UTIL_SER_NO

Utility-specified serial number.


characters or 20 BCD digits.

CUSTOMER_ID

Up to 20 characters or 20 BCD digits. All


printable characters are valid if characters.

COORDINATE_1

Generalized mapping coordinate x.

COORDINATE_2

Generalized mapping coordinate y.

COORDINATE_3

Generalized mapping coordinate z.

TARIFF_ID

Identification of the billing tariff.

EX1_SW_VENDOR

Name
of
manufacturer
that
configuration/programming software.

EX1_SW_VERSION_NUMBER 0..255

Configuration/programming software version


number, unsigned binary number. Changes in
value imply functional differences.

EX1_SW_REVISION_NUMBER 0..255

Configuration/programming software revision


number, unsigned binary number. Changes in
value
imply
product
corrections
or
improvements. Recommend use of '0' to
designate preproduction or prototyping software.

EX2_SW_VENDOR

Name of the manufacturer that


configuration/programming software.

EX2_SW_VERSION_NUMBER 0..255

Configuration/programming software version


number. Changes in value imply functional
differences.

EX2_SW_REVISION_NUMBER 0..255

Configuration/programming software revision


number, unsigned binary number. Changes in
value
imply
product
corrections
or

Decade 0: General Configuration Tables / Table 06 Utility Information Table

Up

to

20

provided

provided

69

ANSI C12.19-2008

Tables
improvements. Recommend use of '0' to
designate preproduction or prototyping software.

70

PROGRAMMER_NAME

Name of the last programmer or programming


device.

MISC_ID

Thirty characters, free form. All printable


characters are allowed. This could be used to
contain approval number, verification number,
bar code, etc.

FW_LOAD_DATE

Date of the last End Device firmware loading in


the field. The initial value, if the End Device was
not updated yet in the field, shall be left to the
discretion of the Manufacturer. This may be
used to track End Devices that have suspect
firmware, as an example.

Decade 0: General Configuration Tables / Table 06 Utility Information Table

Tables

9.1.8

ANSI C12.19-2008

Table 07 Procedure Initiate Table

Table 07 Data Description


PROC_INITIATE_TBL (Table 07) allows for the execution of commands using the table structure. To
execute a command, a procedure identifier (PROC), a sequence number (SEQ_NBR), and an optional
parameter list (PARM) are written into this table. The response to the command is placed in
PROC_RESPONSE_TBL (Table 08) and is available to be read. As a minimum response, all commands
shall produce an echo of the procedure identifier (PROC), an echo of the sequence number (SEQ_NBR),
and a result code in the procedure response table (Table 08). When the End Device supports more than
one concurrent session or association, then the binding between procedure initiation and procedure
response shall be limited to the session or association which initiated the procedure. The processing of
procedure initiates and procedure responses of any session or association shall not interfere with another
concurrent session or association. If a procedure initiate request is followed by another procedure initiate
request, the procedure response for the first procedure initiate request may be lost. Note that the scope
of the Procedure request parameters (defined in section Standard Procedures below) needs to be
specified absolutely when referenced in syntax within the context of PROC_INITIATE_TBL (Table 7),
since the scope of the Procedure Initiate Table is different from the scope of any one Procedure
definition.
Global Default Table Property Overrides: Atomic = true, Role=CONTROL
Table 07 Type Definitions
TYPE STD_PARM_RCD = PACKED RECORD
IF PROC.TABLE_PROC_NBR == COLD_START_PROC THEN
PROC_DATA_0 : NIL;
END;
IF PROC.TABLE_PROC_NBR == WARM_START_PROC THEN
PROC_DATA_1 : NIL;
END;
IF PROC.TABLE_PROC_NBR == SAVE_CONFIGURATION_PROC THEN
PROC_DATA_2 : NIL;
END;
IF PROC.TABLE_PROC_NBR == CLEAR_DATA_PROC THEN
PROC_DATA_3 : NIL;
END;
IF PROC.TABLE_PROC_NBR == RESET_LIST_POINTERS_PROC THEN
PROC_DATA_4 : RESET_LIST_POINTERS_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == UPDATE_LAST_READ_ENTRY_PROC THEN
PROC_DATA_5 : UPDATE_LAST_READ_ENTRY_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == CHANGE_END_DEVICE_MODE_PROC THEN
PROC_DATA_6 : CHANGE_END_DEVICE_MODE_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == CLEAR_STANDARD_STATUS_FLAGS_PROC THEN

Decade 0: General Configuration Tables / Table 07 Procedure Initiate Table

71

ANSI C12.19-2008

Tables

PROC_DATA_7 : NIL;
END;
IF PROC.TABLE_PROC_NBR == CLEAR_MANUFACTURER_STATUS_FLAGS_PROC THEN
PROC_DATA_8 : NIL;
END;
IF PROC.TABLE_PROC_NBR == REMOTE_RESET_PROC THEN
PROC_DATA_9 : REMOTE_RESET_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == SET_DATE_TIME_PROC THEN
PROC_DATA_10 : SET_DATE_TIME_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == EXECUTE_DIAGNOSTICS_PROC THEN
PROC_DATA_11 : NIL;
END;
IF PROC.TABLE_PROC_NBR == ACTIVATE_ALL_PENDING_TABLES_PROC THEN
PROC_DATA_12 : NIL;
END;
IF PROC.TABLE_PROC_NBR == ACTIVATE_SPECIFIC_PENDING_TABLE_PROC THEN
PROC_DATA_13 :
ACTIVATE_SPECIFIC_PENDING_TABLE_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == CLEAR_ALL_PENDING_TABLES_PROC THEN
PROC_DATA_14 : NIL;
END;
IF PROC.TABLE_PROC_NBR == CLEAR_SPECIFIC_PENDING_TABLE_PROC THEN
PROC_DATA_15 : CLEAR_SPECIFIC_PENDING_TABLE_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == START_LOAD_PROFILE_PROC THEN
PROC_DATA_16 : NIL;
END;
IF PROC.TABLE_PROC_NBR == STOP_LOAD_PROFILE_PROC THEN
PROC_DATA_17 : NIL;
END;
IF PROC.TABLE_PROC_NBR == LOGIN_PROC THEN
PROC_DATA_18 : LOGIN_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == LOGOUT_PROC THEN
PROC_DATA_19 : NIL;
END;
IF PROC.TABLE_PROC_NBR == INITIATE_AN_IMMEDIATE_CALL_PROC THEN
PROC_DATA_20 : INITIATE_AN_IMMEDIATE_CALL_PROC.PARM_DATA_RCD;
END;

72

Decade 0: General Configuration Tables / Table 07 Procedure Initiate Table

Tables

ANSI C12.19-2008

IF PROC.TABLE_PROC_NBR == DIRECT_LOAD_CONTROL_PROC THEN


PROC_DATA_21 : DIRECT_LOAD_CONTROL_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == MODIFY_CREDIT_PROC THEN
PROC_DATA_22 : MODIFY_CREDIT_PROC.PARM_DATA_RCD;
END;
{ Procedures 23-26 are reserved. }
IF PROC.TABLE_PROC_NBR == CLEAR_PENDING_CALL_STATUS_PROC THEN
PROC_DATA_27 : NIL;
END;
IF PROC.TABLE_PROC_NBR == START_QUALITY_SERVICE_PROC THEN
PROC_DATA_28 : NIL;
END;
IF PROC.TABLE_PROC_NBR == STOP_QUALITY_SERVICE_PROC THEN
PROC_DATA_29 : NIL;
END;
IF PROC.TABLE_PROC_NBR == START_SECURED_REGISTER_PROC THEN
PROC_DATA_30 : START_SECURED_REGISTER_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == STOP_SECURED_REGISTER_PROC THEN
PROC_DATA_31 : STOP_SECURED_REGISTER_PROC.PARM_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == SET_HTIME_DATE_PROC THEN
PROC_DATA_32 : SET_HTIME_DATE_PROC.PARM_DATA_RCD;
END;
END;
TYPE MFG_PARM_RCD = PACKED RECORD
{ NO PROCEDURES DEFINED. }
END;
TYPE PARM_RCD = PACKED RECORD
IF PROC.MFG_FLAG == FALSE THEN
STANDARD: STD_PARM_RCD;
END;
IF PROC.MFG_FLAG == TRUE THEN
MANUFACTURER: MFG_PARM_RCD;
END;
END;
TYPE PROC_FORMAT_RCD = PACKED RECORD
PROC
: TABLE_IDB_BFLD;
SEQ_NBR
: UINT8;
PARM
: PARM_RCD;
END;

Decade 0: General Configuration Tables / Table 07 Procedure Initiate Table

73

ANSI C12.19-2008

Tables

TABLE 7 PROC_INITIATE_TBL = PROC_FORMAT_RCD;


Table 07 Element Descriptions
Identifier

Value

Definition

TABLE_IDB_BFLD
TBL_PROC_NBR

0..2039

Redefines: STD.TABLE_IDB_BFLD.
Procedure number to be executed.

MFG_FLAG
FALSE
TRUE
SELECTOR
0
1
2
3

4..15

Alias: STD_VS_MFG_FLAG.
Procedure selected by TBL_PROC_NBR is a
standard defined procedure.
Procedure selected by TBL_PROC_NBR is a
manufacturer-defined procedure.
Describes how the response to the procedure is
handled.
Post response in PROC_RESPONSE_TBL
(Table 08) on completion.
Post response in PROC_RESPONSE_TBL
(Table 08) on exception.
Do
not
post
response
in
PROC_RESPONSE_TBL (Table 08).
Post response in PROC_RESPONSE_TBL
(Table 08) immediately and post another
response in PROC_RESPONSE_TBL (Table
08) on completion.
Reserved.

STD_PARM_RCD

The place holder for the Elements of all


Standard defined Procedure parameters. Each
Standard-procedures
request
parameter
extends this packed record by adding a
conditional PROC_DATA_x element whose
index x is the Standard procedure number
expressed without leading zeros. This definition
al applies to version 1.0 of the Standard since
the version 1.0 Standard is unclear in regards to
the assignment of procedure indices. For more
details on the procedure specific parameters
see Section 9.1.10, Standard Procedures.

MFG_PARM_RCD

The place holder for the Elements of all


Manufacturer-defined Procedure parameters.
Each
Manufacturer-procedures
request
parameter extends this packed record by adding
a conditional PROC_DATA_x element whose
index x is the Manufacturer procedure number
expressed without leading zeros. This definition
al applies to version 1.0 of the Standard since
the version 1.0 Standard is unclear in regards to
the assignment of procedure indices. This
Standard does not define any manufacturer
Procedures.

74

Decade 0: General Configuration Tables / Table 07 Procedure Initiate Table

Tables

ANSI C12.19-2008

PARM_RCD
STANDARD

See STD_PARM_RCD.

MANUFACTURER

See MFG_PARM_RCD.

PROC_FORMAT_RCD
PROC

SEQ_NBR

PARM

Bit field indicating procedure number to be


executed and whether the procedure is a
standard defined procedure or a manufacturerdefined procedure. It also defines the response
format.
0..255

The sequence number is supplied by initiator of


the procedure.
It shall be returned with
procedure
response
in
PROC_RESPONSE_TBL (Table 08) as a
means of coordination.
Argument for procedure as defined for individual
procedures as defined in Section 9.1.10,
Standard Procedures.

Decade 0: General Configuration Tables / Table 07 Procedure Initiate Table

75

ANSI C12.19-2008

9.1.9

Tables

Table 08 Procedure Response Table

Table 08 Data Description


PROC_RESPONSE_TBL (Table 08) is a complementary table to PROC_INITIATE_TBL (Table 07). This
table contains a response, which gets posted to Table 08 as a result of a write to PROC_INITIATE_TBL
(Table 07). When the End Device supports more than one concurrent session or association then the
binding between procedure initiation and procedure response shall be limited to the session or
association which initiated the procedure. If a procedure initiate request is followed by another procedure
initiate request (within a session or association), the procedure response for the first initiated procedure
may be lost. However, receipt of the first sequence number (SEQ_NBR) instead of a later sequence
number indicates that one or more reads of Table 08 may be required to recover the related procedure
response. Also the content of the procedure response table following termination of a session or
association is not defined by this Standard. Note that the scope of the Procedure response parameters
(defined in section Standard Procedures above) needs to be specified absolutely when referenced in
syntax within the context of PROC_RESPONSE_TBL (Table 08), since the scope of the Procedure
Response Table is different from the scope of any one Procedure definition.
Global Default Table Property Overrides: Atomic = true, Role=DATA
Table 08 Type Definitions
TYPE STD_RESP_RCD = PACKED RECORD
IF PROC.TABLE_PROC_NBR == COLD_START_PROC THEN
PROC_DATA_0 : NIL;
END;
IF PROC.TABLE_PROC_NBR == WARM_START_PROC THEN
PROC_DATA_1 : NIL;
END;
IF PROC.TABLE_PROC_NBR == SAVE_CONFIGURATION_PROC THEN
PROC_DATA_2 : NIL;
END;
IF PROC.TABLE_PROC_NBR == CLEAR_DATA_PROC THEN
PROC_DATA_3 : NIL;
END;
IF PROC.TABLE_PROC_NBR == RESET_LIST_POINTERS_PROC THEN
PROC_DATA_4 : NIL;
END;
IF PROC.TABLE_PROC_NBR == UPDATE_LAST_READ_ENTRY_PROC THEN
PROC_DATA_5 : NIL;
END;
IF PROC.TABLE_PROC_NBR == CHANGE_END_DEVICE_MODE_PROC THEN
PROC_DATA_6 : CHANGE_END_DEVICE_MODE_PROC.RESP_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == CLEAR_STANDARD_STATUS_FLAGS_PROC THEN
PROC_DATA_7 : CLEAR_STANDARD_STATUS_FLAGS_PROC.RESP_DATA_RCD;
END;

76

Decade 0: General Configuration Tables / Table 08 Procedure Response Table

Tables

ANSI C12.19-2008

IF PROC.TABLE_PROC_NBR == CLEAR_MANUFACTURER_STATUS_FLAGS_PROC THEN


PROC_DATA_8 :
CLEAR_MANUFACTURER_STATUS_FLAGS_PROC.RESP_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == REMOTE_RESET_PROC THEN
PROC_DATA_9 : REMOTE_RESET_PROC.RESP_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == SET_DATE_TIME_PROC THEN
PROC_DATA_10 : SET_DATE_TIME_PROC.RESP_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == EXECUTE_DIAGNOSTICS_PROC THEN
PROC_DATA_11 : NIL;
END;
IF PROC.TABLE_PROC_NBR == ACTIVATE_ALL_PENDING_TBL_PROC THEN
PROC_DATA_12 : NIL;
END;
IF PROC.TABLE_PROC_NBR == ACTIVATE_SPECIFIC_PENDING_TBL_PROC THEN
PROC_DATA_13 : NIL;
END;
IF PROC.TABLE_PROC_NBR == CLEAR_ALL_PENDING_TBL_PROC THEN
PROC_DATA_14 : NIL;
END;
IF PROC.TABLE_PROC_NBR == CLEAR_SPECIFIC_PENDING_TBL_PROC THEN
PROC_DATA_15 : NIL;
END;
IF PROC.TABLE_PROC_NBR == START_LOAD_PROFILE_PROC THEN
PROC_DATA_16 : NIL;
END;
IF PROC.TABLE_PROC_NBR == STOP_LOAD_PROFILE_PROC THEN
PROC_DATA_17 : NIL;
END;
IF PROC.TABLE_PROC_NBR == LOGIN_PROC THEN
PROC_DATA_18 : NIL;
END;
IF PROC.TABLE_PROC_NBR == LOGOUT_PROC THEN
PROC_DATA_19 : NIL;
END;
IF PROC.TABLE_PROC_NBR == INITIATE_IMMEDIATE_CALL_PROC THEN
PROC_DATA_20 : NIL;
END;
IF PROC.TABLE_PROC_NBR == DIRECT_LOAD_CONTROL_PROC THEN
PROC_DATA_21 : NIL;
END;

Decade 0: General Configuration Tables / Table 08 Procedure Response Table

77

ANSI C12.19-2008

Tables

IF PROC.TABLE_PROC_NBR == MODIFY_CREDIT_PROC THEN


PROC_DATA_22 : MODIFY_CREDIT_PROC. RESP_DATA_RCD;
END;
{ Procedures 23-26 are reserved. }
IF PROC.TABLE_PROC_NBR == CLEAR_PENDING_CALL_STATUS_PROC THEN
PROC_DATA_27 : NIL;
END;
IF PROC.TABLE_PROC_NBR == START_QUALITY_SERVICE_PROC THEN
PROC_DATA_28 : NIL;
END;
IF PROC.TABLE_PROC_NBR == STOP_QUALITY_SERVICE_PROC THEN
PROC_DATA_29 : NIL;
END;
IF PROC.TABLE_PROC_NBR == START_SECURED_REGISTER_PROC THEN
PROC_DATA_30 : START_SECURED_REGISTER_PROC.RESP_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == STOP_SECURED_REGISTER_PROC THEN
PROC_DATA_31 : STOP_SECURED_REGISTER_PROC.RESP_DATA_RCD;
END;
IF PROC.TABLE_PROC_NBR == SET_HTIME_DATE_PROC THEN
PROC_DATA_32 : SET_HTIME_DATE_PROC.RESP_DATA_RCD;
END;
END;
TYPE MFG_RESP_RCD = PACKED RECORD
{ NO PROCEDURES DEFINED }
END;
TYPE RESP_DATA_RCD = PACKED RECORD
IF PROC.MFG_FLAG == FALSE THEN
STANDARD
: STD_RESP_RCD;
END;
IF PROC.MFG_FLAG == TRUE THEN
MANUFACTURER
: MFG_RESP_RCD;
END;
END;
TYPE PROC_RESPONSE_RCD = PACKED RECORD
PROC
: TABLE_IDB_BFLD;
SEQ_NBR
: UINT8;
RESULT_CODE
: UINT8;
RESP_DATA
: RESP_DATA_RCD;
END;
TABLE 8 PROC_RESPONSE_TBL = PROC_RESPONSE_RCD;
Table 08 Element Descriptions

78

Decade 0: General Configuration Tables / Table 08 Procedure Response Table

Tables

ANSI C12.19-2008

Identifier

Value

Definition

TABLE_IDB_BFLD
TBL_PROC_NBR

0..2039

Redefines: STD.TABLE_IDB_BFLD.
Procedure number executed by End Device.

MFG_FLAG
FALSE
TRUE
SELECTOR

Alias: STD_VS_MFG_FLAG.
Procedure was a standard procedure.
Procedure
was
a
manufacturer-defined
procedure.
Not used in PROC_RESPONSE_TBL (Table
08). See PROC_INITIATE_TBL (Table 07).

STD_RESP_RCD

The place holder for the Elements of all


Standard defined Procedure responses. Each
Standard-procedures response data extends
this packed record by adding a conditional
PROC_DATA_x element whose index x is the
Standard procedure number expressed without
leading zeros. This definition al applies to
version 1.0 of the Standard since the version 1.0
Standard is unclear in regards to the assignment
of procedure indices. For more details on the
procedure specific responses see Section
9.1.10, Standard Procedures.

MFG_RESP_RCD

The place holder for the Elements of all


Manufacturer-defined Procedure responses.
Each Manufacturer-procedures response data
extends this packed record by adding a
conditional PROC_DATA_x element whose
index x is the Manufacturer procedure number
expressed without leading zeros. This definition
applies to version 1.0 of the Standard since the
version 1.0 Standard is unclear in regards to the
assignment of procedure indices. This Standard
does not define any manufacturer Procedures.

RESP_DATA_RCD
STANDARD
MANUFACTURER

See STD_RESP_RCD.
See MFG_RESP_RCD.

PROC_RESPONSE_RCD
PROC

SEQ_NBR

Bit field indicating procedure number executed


and whether the procedure was a standard
defined or a manufacturer-defined.
0..255

RESULT_CODE
0

Supplied by initiator of the procedure


PROC_INITIATE_TBL (Table 07). Returned
with response as a means of coordination.
Code which identifies the status of the
procedure execution. The codes are defined as
follows:
Procedure completed.

Decade 0: General Configuration Tables / Table 08 Procedure Response Table

79

ANSI C12.19-2008

Tables
1
2
3
4
5
6
7..255

RESP_DATA_RCD

80

Procedure accepted but not fully completed.


Invalid parameter for known procedure,
procedure was ignored.
Procedure conflicts with current device setup,
procedure was ignored.
Timing constraint, procedure was ignored.
No authorization for requested procedure,
procedure was ignored.
Un-recognized procedure, procedure was
ignored.
Reserved.
Procedure response record as defined for
individual procedures in PROC_INITIATE_TBL
(Table 07). RESP_DATA_RCD is posted if
procedure
was
successfully
completed
(RESULT_CODE = 0) and SELECTOR in
PROC_INITIATE_TBL (Table 07) is not set to a
value of 2.

Decade 0: General Configuration Tables / Table 08 Procedure Response Table

Tables

ANSI C12.19-2008

9.1.10 Standard Procedures


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

Procedure 00 Cold Start

Procedure 00 Data Description


This procedure causes the End Device to return to a manufacturer default known state. All data values,
programs and conditions may be lost. Communication may be broken. If an Event Log exists, an attempt
shall be made to retain it.
Procedure 00 Type Definitions
PROCEDURE 0 COLD_START_PROC;
9.1.10.2

Procedure 01 Warm Start

Procedure 01 Data Description


This procedure causes the End Device to return to a "power-up" state. Communication may be broken.
Procedure 01 Type Definitions
PROCEDURE 1 WARM_START_PROC;
9.1.10.3

Procedure 02 Save Configuration

Procedure 02 Data Description


This procedure causes the End Device to save its active configuration.
Procedure 02 Type Definitions
PROCEDURE 2 SAVE_CONFIGURATION_PROC;
9.1.10.4

Procedure 03 Clear Data

Procedure 03 Data Description


This procedure causes the End Device to purge generated data fields but retain programming fields.
Data fields to be purged are specified by the device manufacturer.
Procedure 03 Type Definitions
PROCEDURE 3 CLEAR_DATA_PROC;
9.1.10.5

Procedure 04 Reset List Pointers

Procedure 04 Data Description


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

Decade 0: General Configuration Tables / Standard Procedures

81

ANSI C12.19-2008

Tables

Note: When PARM_DATA_RCD.LIST is set to 1,2,8,9,10,11,12 or 11 then the related


LAST_ENTRY_SEQ_NBR Element may be reset to zero. When PARM_DATA_RCD.LIST is set to
3,4,5,6 or 7 then the related LAST_BLOCK_SEQ_NBR Element may be reset to zero.
Procedure 04 Type Definitions
TYPE PARM_DATA_RCD = PACKED RECORD
LIST : UINT8;
END;
PROCEDURE 4 RESET_LIST_POINTERS_PROC
REQUEST = PARM_DATA_RCD;
Procedure 04 Element Descriptions
Identifier
PARM_DATA_RCD
LIST

Value

Definition

0
1
2
3
4
5
6
7

Reserved.
EVENT_LOG_TBL (Table 76).
SELF_READ_DATA_TBL (Table 26).
LP_DATA_SET1_TBL (Table 64).
LP_DATA_SET2_TBL (Table 65).
LP_DATA_SET3_TBL (Table 66).
LP_DATA_SET4_TBL (Table 67).
LP_DATA_SET1_TBL (Table 64) and
LP_DATA_SET2_TBL (Table 65) and
LP_DATA_SET3_TBL (Table 66) and
LP_DATA_SET4_TBL (Table 67).
HISTORY_LOG_TBL (Table 74).
QUALITY_LOG_TBL (Table 154).
TD_ASYNC_TBL (Table 155).
FD_ASYNC_TBL (Table 156).
TIME_DOMAIN_TBL (Table 157).
FREQUENCY_DOMAIN_TBL (Table 158).
Reserved.
Reserved for Manufacturers Lists.
All lists except EVENT_LOG_TBL (Table 76).

8
9
10
11
12
13
14..127
128..254
255
9.1.10.6

Procedure 05 Update Last Read Entry

Procedure 05 Data Description


When this procedure is invoked, the End Device attempts to reduce the list Element
NBR_UNREAD_ENTRIES by the value specified. To execute this procedure, the initiator shall in
addition be required to have access to the procedure and write access to the table containing the
selected list(s).
Note: When PARM_DATA_RCD.LIST is set to 1,2,8,9,10,11,12 or 11 then the related
LAST_ENTRY_SEQ_NBR Element shall not reset to zero. When PARM_DATA_RCD.LIST is set to
3,4,5,6 or 7 then the related LAST_BLOCK_SEQ_NBR Element shall not reset to zero.
Procedure 05 Type Definitions

82

Decade 0: General Configuration Tables / Standard Procedures

Tables

ANSI C12.19-2008

TYPE PARM_DATA_RCD = PACKED RECORD


LIST
: UINT8;
ENTRIES_READ
: UINT16;
END;
PROCEDURE 5 UPDATE_LAST_READ_ENTRY_PROC
REQUEST = PARM_DATA_RCD;
Procedure 05 Element Descriptions
Identifier
PARM_DATA_RCD
LIST

ENTRIES_READ
9.1.10.7

Value

Definition

0
1
2
3
4
5
6
7

8
9
10
11
12
13
14..127
128..254
255

Reserved.
EVENT_LOG_TBL (Table 76).
SELF_READ_DATA_TBL (Table 26).
LP_DATA_SET1_TBL (Table 64).
LP_DATA_SET2_TBL (Table 65).
LP_DATA_SET3_TBL (Table 66).
LP_DATA_SET4_TBL (Table 67).
LP_DATA_SET1_TBL (Table 64) and
LP_DATA_SET2_TBL (Table 65) and
LP_DATA_SET3_TBL (Table 66) and
LP_DATA_SET4_TBL (Table 67).
HISTORY_LOG_TBL (Table 74).
QUALITY_LOG_TBL (Table 154).
TD_ASYNC_TBL (Table 155).
FD_ASYNC_TBL (Table 156).
TIME_DOMAIN_TBL (Table 157).
FREQUENCY_DOMAIN_TBL (Table 158).
Reserved.
Reserved for Manufacturers Lists.
All lists except EVENT_LOG_TBL (Table 76).

0..65535

Number of entries confirmed.

Procedure 06 Change End Device Mode

Procedure 06 Data Description


This procedure changes the operational modes of the End Device.
Procedure 06 Type Definitions
TYPE PARM_DATA_RCD = PACKED RECORD
ED_MODE
: ED_MODE_STATUS_TBL.ED_MODE_BFLD;
END;
TYPE RESP_DATA_RCD = PACKED RECORD
ED_MODE
: ED_MODE_STATUS_TBL.ED_MODE_BFLD;
END;
PROCEDURE 6 CHANGE_END_DEVICE_MODE_PROC
REQUEST = PARM_DATA_RCD
RESPONSE = RESP_DATA_RCD;

Decade 0: General Configuration Tables / Standard Procedures

83

ANSI C12.19-2008

Tables

Procedure 06 Element Descriptions


Value

Identifier
PARM_DATA_RCD
ED_MODE

See
ED_MODE_STATUS_TBL.ED_MODE
(Table 03). This Element contains the desired
mode.

RESP_DATA_RCD
ED_MODE

9.1.10.8

Definition

See
ED_MODE_STATUS_TBL.ED_MODE
(Table 03). This Element contains the mode
resulting from the execution of this Procedure.

Procedure 07 Clear Standard Status Flags

Procedure 07 Data Description


When invoked, this procedure causes the End Device to attempt to clear all standard status flags.
Procedure 07 Type Definitions
TYPE RESP_DATA_RCD = PACKED RECORD
ED_STD_STATUS_1 : ED_MODE_STATUS_TBL.ED_STD_STATUS1_BFLD;
ED_STD_STATUS_2 : ED_MODE_STATUS_TBL.ED_STD_STATUS2_BFLD;
END;
PROCEDURE 7 CLEAR_STANDARD_STATUS_FLAGS_PROC
RESPONSE = RESP_DATA_RCD;
Procedure 07 Element Descriptions
Value

Identifier
RESP_DATA_RCD
ED_STD_STATUS_1
ED_STD_STATUS_2

9.1.10.9

Definition
The End Device resulting status flags following
the execution of this Procedure.
See
ED_MODE_STATUS_TBL.ED_STD_STATUS1
_BFLD (Table 03).
See
ED_MODE_STATUS_TBL.ED_STD_STATUS2
_BFLD (Table 03).

Procedure 08 Clear Manufacturer Status Flags

Procedure 08 Data Description


When invoked, the End Device attempts to clear all manufacturer status flags.
Procedure 08 Type Definitions
TYPE RESP_DATA_RCD = PACKED RECORD
ED_MFG_STATUS
: ED_MODE_STATUS_TBL.ED_MFG_STATUS_RCD;

84

Decade 0: General Configuration Tables / Standard Procedures

Tables

ANSI C12.19-2008

END;
PROCEDURE 8 CLEAR_MANUFACTURER_STATUS_FLAGS_PROC
RESPONSE = RESP_DATA_RCD;
Procedure 08 Element Descriptions
Value

Identifier
RESP_DATA_RCD
ED_MFG_STATUS

9.1.10.10

Definition
See
ED_MODE_STATUS_TBL.ED_MFG_STATUS
_RCD (Table 03).

Procedure 09 Remote Reset

Procedure 09 Data Description


When invoked, this procedure attempts to perform the specified combination of resets. The following
resets are supported: Self-read, Demand Reset, and Season Change.
Procedure 09 Type Definitions
TYPE ACTION_FLAG_BFLD = BIT FIELD OF UINT8
DEMAND_RESET_FLAG
: BOOL(0);
SELF_READ_FLAG
: BOOL(1);
SEASON_CHANGE_FLAG
: BOOL(2);
NEW_SEASON
: UINT(3..6);
FILLER
: FILL(7..7);
END;
TYPE PARM_DATA_RCD = PACKED RECORD
ACTION_FLAG
: ACTION_FLAG_BFLD;
END;
TYPE RESP_DATA_RCD = PACKED RECORD
SUCCESS_FLAG
: ACTION_RESPONSE_FLAG_BFLD;
END;
PROCEDURE 9 REMOTE_RESET_PROC
REQUEST = PARM_DATA_RCD
RESPONSE = RESP_DATA_RCD;
Procedure 09 Element Descriptions
Identifier
ACTION_FLAG_BFLD
DEMAND_RESET_FLAG
SELF_READ_FLAG

Value

Definition

FALSE
TRUE

Do not perform a demand reset.


Perform a demand reset.

FALSE
TRUE

Do not perform a Self-read.


Perform a Self-read.

Decade 0: General Configuration Tables / Standard Procedures

85

ANSI C12.19-2008

SEASON_CHANGE_FLAG

Tables

FALSE
TRUE

NEW_SEASON

0..15

Do not perform a change to the new season


specified.
Perform a change to the new season specified.
Season to change to if SEASON_CHANGE bit
is set.

PARM_DATA_RCD
ACTION_FLAG

Bit mask denotes the reset actions to perform.

ACTION_RESPONSE_FLAG_BFLD

Redefines: ACTION_FLAG_BFLD.

DEMAND_RESET_FLAG

FALSE
TRUE

Did not perform a demand reset.


Performed a demand reset.

SELF_READ_FLAG

FALSE
TRUE

Did not perform a Self-read.


Performed a Self-read.

SEASON_CHANGE_FLAG

FALSE

Did not perform a change to the new season


specified.
Performed a change to the new season
specified.

TRUE
NEW_SEASON

0..15

RESP_DATA_RCD
SUCCESS_FLAG
9.1.10.11

The season number the End Device changed to


if SEASON_CHANGE bit was set.
Indicates which "resets" were successful by
setting corresponding bits.

Procedure 10 Set Date and/or Time

Procedure 10 Data Description


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 field within this procedure REQUEST (DATE_TIME) might be transported using a different time
reference (End Device operational time, Standard time or UTC) from the one published by the Clock
Table (Table 52), Clock State Table (Table 55) or Precision Clock State Table (Table 57). See the
introduction of Decade 5 for more information.
Procedure 10 Type Definitions
TYPE SET_MASK_BFLD = BIT FIELD OF UINT8
SET_TIME_FLAG
: BOOL(0);
SET_DATE_FLAG
: BOOL(1);
SET_TIME_DATE_QUAL
: BOOL(2);
FILLER
: FILL(3..7);
END;
TYPE PARM_DATA_RCD = PACKED RECORD
SET_MASK
: SET_MASK_BFLD;
DATE_TIME
: LTIME_DATE;
TIME_DATE_QUAL
: TIME_DATE_QUAL_BFLD;
END;
TYPE RESP_DATA_RCD = PACKED RECORD
DEV_DATE_TIME_BEFORE : LTIME_DATE;

86

Decade 0: General Configuration Tables / Standard Procedures

Tables

ANSI C12.19-2008

DEV_DATE_TIME_AFTER

: LTIME_DATE;

END;
PROCEDURE 10 SET_DATE_TIME_PROC
REQUEST = PARM_DATA_RCD
RESPONSE = RESP_DATA_RCD;
Procedure 10 Element Descriptions
Value

Definition

FALSE
TRUE

Do not set time.


Set time.

SET_DATE_FLAG

FALSE
TRUE

Do not set date.


Set date.

SET_TIME_DATE_QUAL

FALSE
TRUE

Do not set time date qualifier.


Set time date qualifier.

0
1
2
3
4
5
6
7

Redefines:
CLOCK_TBL.TIME_DATE_QUAL_BFLD.
Current day of the week.
Sunday.
Monday.
Tuesday.
Wednesday.
Thursday.
Friday.
Saturday.
Do not set DAY_OF_WEEK.

Identifier
SET_MASK_BFLD
SET_TIME_FLAG

TIME_DATE_QUAL_BFLD
DAY_OF_WEEK

DST_FLAG

FALSE
TRUE

GMT_FLAG

FALSE
TRUE

TM_ZN_APPLIED_FLAG

FALSE
TRUE
DST_APPLIED_FLAG

FALSE

The DATE_TIME Element is not within a


daylight saving time period.
The DATE_TIME Element is within a daylight
saving time period.
Reserved.
Shall be set to true.
This
field
and
the
following
one
(DST_APPLIED_FLAG)
define
the
time
reference (End Device operational time,
Standard time or UTC time) used during the
transport
of
the
new
date-time
field
(DATE_TIME).
The DATE_TIME Element does not include time
zone offset adjustment.
The DATE_TIME Element includes time zone
offset adjustment.
The DATE_TIME Element does not include
daylight savings adjustment.

Decade 0: General Configuration Tables / Standard Procedures

87

ANSI C12.19-2008

DST_SUPPORTED_FLAG

Tables
TRUE

The DATE_TIME Element includes daylight


savings adjustment.

FALSE
TRUE

Disable Daylight Saving Time tracking.


Enable Daylight Saving Time tracking.

PARM_DATA_RCD
SET_MASK

Bit mask denotes the actions to perform.

DATE_TIME

New date and time.

TIME_DATE_QUAL

See TIME_DATE_QUAL_BFLD.

RESP_DATA_RCD
DEV_DATE_TIME_BEFORE

Date and time in the End Device just before setdate-time procedure was executed. This field is
transported according to TIME_DATE_QUAL
found in any one of Clock table (Table 52),
Clock State Table (Table 55) or Precision Clock
State Table (Table 57).

DEV_DATE_TIME_AFTER

9.1.10.12

Date and time in the End Device just after setdate-time procedure was executed. This field is
transported according to TIME_DATE_QUAL in
any one of the Clock table (Table 52), Clock
State Table (Table 55) and Precision Clock
State Table (Table 57).

Procedure 11 Execute Diagnostics Procedure

Procedure 11 Data Description


This procedure initiates an End Device diagnostic procedure.
Procedure 11 Type Definitions
PROCEDURE 11 EXECUTE_DIAGNOSTICS_PROC;
9.1.10.13

Procedure 12 Activate All Pending Tables

Procedure 12 Data Description


This procedure causes the End Device to immediately activate all pending tables regardless of activation
trigger(s).
Procedure 12 Type Definitions
PROCEDURE 12 ACTIVATE_ALL_PENDING_TABLES_PROC;
9.1.10.14 Procedure 13 Activate Specific Pending Table(s)
Procedure 13 Data Description
This procedure causes the End Device to immediately activate any pending table(s) with the specified
activation trigger.

88

Decade 0: General Configuration Tables / Standard Procedures

Tables

ANSI C12.19-2008

Procedure 13 Type Definitions


TYPE PARM_DATA_RCD = PACKED RECORD
EVENT
: PENDING_STATUS_TBL.EVENT_RCD;
END;
PROCEDURE 13 ACTIVATE_SPECIFIC_PENDING_TABLE_PROC
REQUEST = PARM_DATA_RCD;
Procedure 13 Element Descriptions
Value

Identifier
PARM_DATA_RCD
EVENT
9.1.10.15

Definition
See
PENDING_STATUS_TBL.EVENT_RCD
(Table 04).

Procedure 14 Clear All Pending Tables

Procedure 14 Data Description


This procedure causes the End Device to immediately clear the pending state of all pending tables.
Procedure 14 Type Definitions
PROCEDURE 14 CLEAR_ALL_PENDING_TABLES_PROC;
9.1.10.16

Procedure 15 Clear Specific Pending Table(s)

Procedure 15 Data Description


This procedure causes the End Device to immediately clear the pending status of all pending table(s) with
the specified activation trigger.
Procedure 15 Type Definitions
TYPE PARM_DATA_RCD = PACKED RECORD
EVENT
: PENDING_STATUS_TBL.EVENT_RCD;
END;
PROCEDURE 15 CLEAR_SPECIFIC_PENDING_TABLE_PROC
REQUEST = PARM_DATA_RCD;
Procedure 15 Element Descriptions
Value

Identifier
PARM_DATA_RCD
EVENT
9.1.10.17

Definition
See
PENDING_STATUS_TBL.EVENT_RCD
(Table 04).

Procedure 16 Start Load Profile

Procedure 16 Data Description

Decade 0: General Configuration Tables / Standard Procedures

89

ANSI C12.19-2008

Tables

This procedure starts all defined load profile sets.


Procedure 16 Type Definitions
PROCEDURE 16 START_LOAD_PROFILE_PROC;
9.1.10.18

Procedure 17 Stop Load Profile

Procedure 17 Data Description


This procedure stops all active load profile sets.
Procedure 17 Type Definitions
PROCEDURE 17 STOP_LOAD_PROFILE_PROC;
9.1.10.19

Procedure 18 Log In

Procedure 18 Data Description


When invoked, this procedure establishes the active USER_ID that is used in the HISTORY_LOG_TBL
(Table 74) and in the EVENT_LOG_TBL (Table 76) and supplies a password.
Procedure 18 Type Definitions
TYPE PARM_DATA_RCD = PACKED RECORD
USER_ID
: UINT16;
PASSWORD
: BINARY(20);
END;
PROCEDURE 18 LOGIN_PROC
REQUEST = PARM_DATA_RCD;
Procedure 18 Element Descriptions
Identifier

Value

Definition

PARM_DATA_RCD
USER_ID

0..65535

ID associated with current user.


Note: USER_ID of zero and USER_ID of one
should be avoided since it represents an End
Device initiated event and manually initiated
event respectively in the loggers.

PASSWORD

9.1.10.20

Password supplied. The first octet of the


password shall be placed in the lowest index
position of the Element.

Procedure 19 Log Out

Procedure 19 Data Description


Deactivates the USER_ID and password.

90

Decade 0: General Configuration Tables / Standard Procedures

Tables

ANSI C12.19-2008

Procedure 19 Type Definitions


PROCEDURE 19 LOGOUT_PROC;
9.1.10.21

Procedure 20 Initiate an Immediate Call

Procedure 20 Data Description


This procedure causes the End Device to immediately initiate a call with the phone number specified. Call
windows are ignored.
Procedure 20 Type Definitions
TYPE PARM_DATA_RCD = PACKED RECORD
PHONE_NUMBER_INDEX : UINT8;
END;
PROCEDURE 20 INITIATE_AN_IMMEDIATE_CALL_PROC
REQUEST = PARM_DATA_RCD;
Procedure 20 Element Descriptions
Identifier

Value

Definition

PARM_DATA_RCD
PHONE_NUMBER_INDEX

0..6

Selection of which phone number to use for the


call originating procedure. This value is an index
to the PHONE_NUMBERS array in table
ORIGINATE_PARAMETERS_TBL (Table 93).

9.1.10.22

Procedure 21 Direct Load Control

Procedure 21 Data Description


This procedure provides direct load control through a communication link. The load control directive data
structure used by this procedure is shared by all other methods supported in the load control decade.
Procedure 21 Type Definitions
TYPE PARM_DATA_RCD = PACKED RECORD
NEW_LEVEL : UINT8;
TO_SET
: SET((ACT_LOAD_CONTROL_TBL.NBR_OF_CONTROL_POINTS + 7) / 8);
IF ACT_LOAD_CONTROL_TBL.DURATION_SUPPORTED_FLAG THEN
DURATION
: TIME;
END;
IF ACT_LOAD_CONTROL_TBL.RANDOMIZATION_SUPPORTED_FLAG THEN
RANDOMIZATION_PERIOD : TIME;
END;
END;
PROCEDURE 21 DIRECT_LOAD_CONTROL_PROC
REQUEST = PARM_DATA_RCD;
Procedure 21 Element Descriptions

Decade 0: General Configuration Tables / Standard Procedures

91

ANSI C12.19-2008

Tables

Identifier

Value

Definition

PARM_DATA_RCD
NEW_LEVEL

0..100

New level (0% to 100%) requested for the


selected control points. For control points that
dont support level, where
LEVEL_SUPPORTED in the Load control status
table (Table 112) = FALSE, NEW_LEVEL lower
than 50% means OFF and greater than or equal
to means ON.

TO_SET
FALSE
TRUE

List of control points selected.


This control point is not affected by this load
control directive.
This control point is affected by this load control
directive.

DURATION

Period of time before automatically restoring the


original state of the selected control points.
Duration set to 00:00:00 means no duration and
produces a permanent state change.

RANDOMIZATION_PERIOD

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

9.1.10.23

Procedure 22 Modify Credit

Procedure 22 Data Description


This procedure is used to modify the PREPAYMENT_STATUS_TBL.REMAINING_CREDIT as defined in
table Prepayment status table (Table 116).
Procedure 22 Type Definitions
TYPE PARM_DATA_RCD = PACKED RECORD
OPERATION
: UINT8;
VALUE
: NI_FMAT1;
END;
TYPE RESP_DATA_RCD = PACKED RECORD
NEW_REMAINING_CREDIT : NI_FMAT1;
END;
PROCEDURE 22 MODIFY_CREDIT_PROC
REQUEST = PARM_DATA_RCD
RESPONSE = RESP_DATA_RCD;
Procedure 22 Element Descriptions
Identifier

Value

Definition

PARM_DATA_RCD

92

Decade 0: General Configuration Tables / Standard Procedures

Tables

ANSI C12.19-2008

OPERATION
0
1
2
3..255
VALUE
RESP_DATA_RCD
NEW_REMAINING_CREDIT

Operation requested on the


PREPAYMENT_STATUS_TBL.
REMAINING_CREDIT value.
Add to credit.
Subtract from credit.
Adjust credit.
Reserved.
Parameter of this operation.
PREPAYMENT_STATUS_TBL.
REMAINING_CREDIT
available
processing this request.

after

9.1.10.24 Procedure 23 Reserved


Reserved for ANSI C12.22.
9.1.10.25 Procedure 24 Reserved
Reserved for ANSI C12.22.
9.1.10.26 Procedure 25 Reserved
Reserved for ANSI C12.22.
9.1.10.27 Procedure 26 Reserved
Reserved for ANSI C12.22.
9.1.10.28 Procedure 27 Clear Pending Call Status
Procedure 27 Data Description
This procedure causes the End Device to immediately clear all pending call reasons in Table 98 Originate
Status.
Procedure 27 Type Definitions
PROCEDURE 27 CLEAR_PENDING_CALL_STATUS_PROC;
9.1.10.29

Procedure 28 Start Quality-of-service Monitors

Procedure 28 Data Description


This procedure starts all Quality-of-service reporting.
Procedure 28 Type Definitions
PROCEDURE 28 START_QUALITY_SERVICE_PROC;
9.1.10.30

Procedure 29 Stop Quality-of-service Monitors

Procedure 29 Data Description


This procedure stops all active Quality-of-service reporting.
Procedure 29 Type Definitions
PROCEDURE 29 STOP_QUALITY_SERVICE_PROC;

Decade 0: General Configuration Tables / Standard Procedures

93

ANSI C12.19-2008

9.1.10.31

Tables

Procedure 30 Start Secured Register

Procedure 30 Data Description


This procedure enables event logging (if implemented) of secure register reads (if implemented) and
volatile data freezing (if implemented), in Event Log Data Table (Table 76), to facilitate End Device
reading.
Procedure 30 Type Definitions
TYPE SECURED_READ_REQ_BFLD = BIT FIELD OF UINT16
SECURED_REGISTER_FLAG : BOOL(0);
DATA_FREEZE_FLAG
: BOOL(1);
RESERVED
: FILL(2..15);
END;
TYPE PARM_DATA_RCD = PACKED RECORD
READ_ENABLE
: SECURED_READ_REQ_BFLD;
SECURED_READ_MAX
: UINT16;
END;
PROCEDURE 30 START_SECURED_REGISTER_PROC
REQUEST = PARM_DATA_RCD
RESPONSE = RESP_DATA_RCD;
Procedure 30 Element Descriptions
Identifier

Value

SECURED_READ_REQ_BFLD

Definition
Bit field use to indicate the secured read related
operational parameters being enabled.

SECURED_REGISTER_FLAG
FALSE
TRUE

DATA_FREEZE_FLAG

FALSE
TRUE

94

The operational state of the secured register


read is left un-changed.
Begin secured read operations. The End Device
shall generate End Device secured register
events (Read Secured Register or Read
Secured Table) following the transfer of a
secured register Table or Element to an EndDevice reader, provided that this feature is
implemented by the End Device. Event logging
of
secured-register
reads
shall
cease
immediately upon invocation of the Stop
Secured Register procedure, termination of the
communication session that invoked the Start
Secured Register procedure, or upon reaching
the maximum number of secured read
operations that were permitted for this session
or association.
The operational state of the data freeze is left
un-changed.
Create a frozen (unchanging) copy of all volatile
End Device data values. Following acceptance
of this optional capability all values read from the

Decade 0: General Configuration Tables / Standard Procedures

Tables

ANSI C12.19-2008
End Device shall be non-changing and
coincident. The data shall remain frozen while
the number of active sessions plus active
communication associations that initiated a data
freeze is greater than zero (0).

PARM_DATA_RCD
READ_ENABLE
SECURED_READ_MAX
0
1..65535
SECURED_READ_RESP_BFLD

See request SECURED_READ_REQ_BFLD.


The maximum number of Event Log entries
estimated as needed to report the upcoming
secured read events.
Reserved.
The maximum number of events requested.
Redefines: SECURED_READ_REQ_BFLD.
Bit field used to indicate the secured read
related operations enabled status.

SECURED_REGISTER_FLAG

DATA_FREEZE_FLAG

FALSE
TRUE

Secured read Event Logging is disabled.


Secured read Event Logging is enabled.

FALSE

End Device Table data is not frozen (the End


Device shall report real-time data values).
End Device Table data is frozen (the End
Device shall continue normal data processing in
the background to prevent loss of data).

TRUE

RESP_DATA_RCD

Redefines: PARM_DATA_RCD.
Procedure response data.

READ_ENABLE
SECURED_READ_MAX
0
1..65535
9.1.10.32

See response SECURED_READ_RESP_BFLD.


The maximum number of Event Log entries
available to report the upcoming secured read
events.
The maximum number of secured register
reading events has been reached.
The remaining number of secured register
reading events that can be recorded.

Procedure 31 Stop Secured Register

Procedure 31 Data Description


This procedure disables event logging (if implemented) of secure register reads (if implemented) and
volatile data freezing (if implemented), in Event Log Data Table (Table 76), to reinstate non-secured End
Device reading.
Procedure 31 Type Definitions
TYPE PARM_DATA_RCD = PACKED RECORD
READ_DISABLE
: SECURED_READ_REQ_BFLD;
END;
PROCEDURE 31 STOP_SECURED_REGISTER_PROC
REQUEST = PARM_DATA_RCD

Decade 0: General Configuration Tables / Standard Procedures

95

ANSI C12.19-2008

Tables

RESPONSE = RESP_DATA_RCD;
Procedure 31 Element Descriptions
Value

Identifier
SECURED_READ_REQ_BFLD

Definition
Redefines:
START_SECURED_REGISTER_PROC.
SECURED_READ_REQ_BFLD.
Bit field used to indicate the secured read
related operations parameters being disabled.

SECURED_REGISTER_FLAG
FALSE
TRUE
DATA_FREEZE_FLAG

FALSE
TRUE

PARM_DATA_RCD
READ_DISABLE

The operational state of the secured register


read is left unchanged.
Stop secured read operations.
The operational state of the data freeze is left
unchanged.
Unfreeze all volatile End Device data values.
See request SECURED_READ_REQ_BFLD.

SECURED_READ_RESP_BFLD

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

SECURED_REGISTER_FLAG

DATA_FREEZE_FLAG

FALSE
TRUE

Secured read Event Logging is disabled.


Secured read Event Logging is enabled.

FALSE

End Device Table data not frozen (the End


Device shall report real-time data values).
End Device Table data copy is frozen (the End
Device shall continue normal data processing in
the background to prevent loss of data).

TRUE

RESP_DATA_RCD

Redefines:
STOP_SECURED_REGISTER_PROC.
PARM_DATA_RCD.
Procedure response data.

READ_ENABLE
SECURED_READ_MAX

0
1..65535
9.1.10.33

See response SECURED_READ_RESP_BFLD.


The total number of Event Log entries created to
report the secured read events since the last
initiation of the Stop Secured Register
procedure in Event Log Data Table (Table 76).
No events recorded.
The actual number of secured register reading
events recorded.

Procedure 32 Set Precision Date and/or Time

Procedure 32 Data Description

96

Decade 0: General Configuration Tables / Standard Procedures

Tables

ANSI C12.19-2008

This procedure is used to set the date and/or time in the End Device with higher precision than that
provided by Procedure 10, SET_DATE_TIME_PROC. It is important to note that the new date-time field
within this procedure REQUEST (DATE_TIME) can be transported using a different time reference (End
Device operational time, Standard time or UTC) from the one published by the Clock Table (Table 52),
Clock State Table (Table 55) or Precision Clock State Table (Table 57). See the introduction of Decade 5
for more information.
Procedure 32 Type Definitions
TYPE PARM_DATA_RCD = PACKED RECORD
SET_MASK
: SET_DATE_TIME_PROC.SET_MASK_BFLD;
DATE_TIME
: HTIME_DATE;
TIME_DATE_QUAL
: SET_DATE_TIME_PROC.TIME_DATE_QUAL_BFLD;
END;
TYPE RESP_DATA_RCD = PACKED RECORD
DEV_DATE_TIME_BEFORE : HTIME_DATE;
DEV_DATE_TIME_AFTER
: HTIME_DATE;
END;
PROCEDURE 32 SET_HTIME_DATE_PROC
REQUEST = PARM_DATA_RCD;
RESPONSE = RESP_DATA_RCD;
Procedure 32 Element Descriptions
Identifier
PARM_DATA_RCD
SET_MASK

Value

Definition
Bit mask denotes the actions to perform. See
SET_DATE_TIME_PROC.SET_MASK_BFLD

DATE_TIME

New date and time.

TIME_DATE_QUAL

See
SET_DATE_TIME_PROC.TIME_DATE_QUAL_
BFLD.

RESP_DATA_RCD
DEV_DATE_TIME_BEFORE

DEV_DATE_TIME_AFTER

Date and time in the End Device just before setdate-time procedure was executed. This field is
transported according to TIME_DATE_QUAL
found in any one of Clock table (Table 52),
Clock State Table (Table 55) or Precision Clock
State Table (Table 57).
Date and time in the End Device just after setdate-time procedure was executed. This field is
transported according to TIME_DATE_QUAL in
any one of the Clock table (Table 52), Clock
State Table (Table 55) and Precision Clock
State Table (Table 57).

Decade 0: General Configuration Tables / Standard Procedures

97

ANSI C12.19-2008

Tables

9.2 Decade 1: Data Source Tables


Decade 1 Name
DATA_SOURCE_DEC
Decade 1 Data Description
The role of a Data Sources is to provide information about the different measurements supported by the
End Device such as the Unit Of Measure, accountability, scalars, and to allows control and configuration
of these measurements.
When Decade 1 is used, the MODEL_SELECT field defined in the General Configuration Table (Table 0)
shall be set to 0.
See Annex K, Algorithms For The Conversion Of Table Element Values To Engineering Units, for
details on possible Algorithms for computing Metering Data.

98

Decade 1: Data Source Tables

Tables

9.2.1

ANSI C12.19-2008

Table 10 Data Source Dimension Limits Table

Table 10 Data Description


DIM_SOURCES_LIM_TBL (Table 10) contains maximum dimensions and End Device capabilities for
establishing data sources.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 10 Type Definitions
TYPE SOURCE_FLAGS_BFLD = BIT FIELD OF UINT8
PF_EXCLUDE_FLAG
: BOOL(0);
RESET_EXCLUDE_FLAG
: BOOL(1);
BLOCK_DEMAND_FLAG
: BOOL(2);
SLIDING_DEMAND_FLAG
: BOOL(3);
THERMAL_DEMAND_FLAG : BOOL(4);
SET1_PRESENT_FLAG
: BOOL(5);
SET2_PRESENT_FLAG
: BOOL(6);
IF GEN_CONFIG_TBL.STD_VERSION_NO < 2 THEN
FILLER
: FILL(7..7);
ELSE
CONVERSION_ALG_FLAG
: BOOL(7);
END;
END;
TYPE SOURCE_RCD = PACKED RECORD
SOURCE_FLAGS
NBR_UOM_ENTRIES
NBR_DEMAND_CTRL_ENTRIES
DATA_CTRL_LENGTH
NBR_DATA_CTRL_ENTRIES
NBR_CONSTANTS_ENTRIES
CONSTANTS_SELECTOR
NBR_SOURCES
END;

: SOURCE_FLAGS_BFLD;
: UINT8;
: UINT8;
: UINT8;
: UINT8;
: UINT8;
: UINT8;
: UINT8;

TABLE 10 DIM_SOURCES_LIM_TBL = SOURCE_RCD;


Table 10 Element Descriptions
Identifier

Value

SOURCE_FLAGS_BFLD
PF_EXCLUDE_FLAG
FALSE
TRUE
RESET_EXCLUDE_FLAG

Definition
Power fail exclusion is defined as ignoring
demand for maximum calculations for some
period immediately after a power failure.
End Device is not capable of power fail
exclusion.
End Device is capable of power fail exclusion.
Reset exclusion is defined as inhibiting demand
reset for some period after a reset.

Decade 1: Data Source Tables / Table 10 Data Source Dimension Limits Table

99

ANSI C12.19-2008

Tables
FALSE
TRUE

BLOCK_DEMAND_FLAG

FALSE
TRUE

SLIDING_DEMAND_FLAG

FALSE
TRUE

THERMAL_DEMAND_FLAG

FALSE
TRUE

SET1_PRESENT_FLAG

FALSE
TRUE

SET2_PRESENT_FLAG

FALSE
TRUE

CONVERSION_ALG_FLAG

FALSE

TRUE

SOURCE_RCD
SOURCE_FLAGS

NBR_UOM_ENTRIES

100

Reset exclusion is not supported by the End


Device.
Reset exclusion is supported by the End Device.
Block demand is not supported by the End
Device.
Block demand is supported by the End Device.
Sliding demand is not supported by the End
Device.
Sliding demand is supported by the End Device.
Thermal demand is not supported by the End
Device.
Thermal demand is supported by the End
Device.
The End Device does not support the first set of
optional constants in the electric record of the
CONSTANTS_TBL (Table 15).
The End Device does support the first set of
optional constants in the electric record of the
CONSTANTS_TBL (Table 15).
The End Device does not support the second
set of optional constants in the electric record of
the CONSTANTS_TBL (Table 15).
The End Device does support the second set of
optional constants in the electric record of the
CONSTANTS_TBL (Table 15).
The algorithm used for the conversion of
measurements to engineering values, based on
the information contained within this decade and
as defined in Annex K, is not implemented by
this End Device.
The algorithm used for the conversion of
measurements to engineering values, based on
the information contained within this decade and
as defined in Annex K, is implemented by this
End Device.
Bit fields that indicate what demand and TOU
register functions the End Device is capable of
performing.

0..255

entries

in

NBR_DEMAND_CTRL_ENTRIES 0..255

Maximum
number
of
entries
in
DEMAND_CONTROL_TBL (Table 13).

the

DATA_CTRL_LENGTH

Manufacturer supplied value that determines the


width in octets of an entry in the first array of the
DATA_CONTROL_TBL (Table 14).

0..255

Maximum
number
of
UOM_ENTRY_TBL (Table 12).

Decade 1: Data Source Tables / Table 10 Data Source Dimension Limits Table

Tables

ANSI C12.19-2008

NBR_DATA_CTRL_ENTRIES 0..255

Maximum
number
of
entries
DATA_CONTROL_TBL (Table 14).

in

the

NBR_CONSTANTS_ENTRIES 0..255

Maximum
number
of
entries
CONSTANTS_TBL (Table 15).

in

the

CONSTANTS_SELECTOR

This value is the selector for the record structure


used in the CONSTANTS_TBL (Table 15).
GAS_CONSTANTS_AGA3_RCD data structure
selected.
GAS_CONSTANTS_AGA7_RCD data structure
selected.
ELECTRIC_CONSTANTS_RCD data structure
selected.
Reserved.

0
1
2
3..255
NBR_SOURCES

0..255

Maximum
number
of
entries
SOURCES_TBL (Table 16).

Decade 1: Data Source Tables / Table 10 Data Source Dimension Limits Table

in

the

101

ANSI C12.19-2008

9.2.2

Tables

Table 11 Actual Data Sources Limiting Table

Table 11 Data Description


ACT_SOURCES_LIM_TBL (Table 11) contains the actual parameters of Table 10 the End Device has
been configured with.
Global Default Table Property Overrides: Role=ACTUAL
Table 11 Type Definitions
TABLE 11 ACT_SOURCES_LIM_TBL = SOURCE_RCD;
Table 11 Element Descriptions
Value

Definition

FALSE
TRUE

Redefines:
DIM_SOURCES_LIM_TBL.
SOURCE_FLAGS_BFLD.
Power fail exclusion is defined as ignoring
demand for maximum calculations for some
period immediately after a power failure.
Power fail exclusion is not active.
Power fail exclusion is active.

FALSE
TRUE

Reset exclusion is defined as inhibiting demand


reset for some period after a reset.
Reset exclusion is not in use by the End Device.
Reset exclusion is in use by the End Device.

BLOCK_DEMAND_FLAG

FALSE
TRUE

Block demand is not in use by the End Device.


Block demand is in use by the End Device.

SLIDING_DEMAND_FLAG

FALSE
TRUE

Sliding demand is not in use by the End Device.


Sliding demand is in use by the End Device.

THERMAL_DEMAND_FLAG

FALSE

Thermal demand is not in use by the End


Device.
Thermal demand is in use by the End Device.

Identifier
SOURCE_FLAGS_BFLD
PF_EXCLUDE_FLAG

RESET_EXCLUDE_FLAG

TRUE
SET1_PRESENT_FLAG

FALSE
TRUE

SET2_PRESENT_FLAG

FALSE
TRUE

102

The End Device is not using the first set of


optional constants in the electric record of the
CONSTANTS_TBL (Table 15).
The End Device is using the first set of optional
constants in the electric record of the
CONSTANTS_TBL (Table 15).
The End Device is not using the second set of
optional constants in the electric record of the
CONSTANTS_TBL (Table 15).
The End Device is using the second set of
optional constants in the electric record of the
CONSTANTS_TBL (Table 15).

Decade 1: Data Source Tables / Table 11 Actual Data Sources Limiting Table

Tables

ANSI C12.19-2008

CONVERSION_ALG_FLAG

FALSE
TRUE

SOURCE_RCD

Redefines:
DIM_SOURCES_LIM_TBL.
SOURCE_RCD.
Bit fields that indicate what demand and TOU
register functions are in use by the End Device
as configured.

SOURCE_FLAGS

NBR_UOM_ENTRIES

This field has the same meaning and shall have


the same value as the corresponding field in the
Data Source Dimension Limits Table (Table 10).
This field has the same meaning and shall have
the same value as the corresponding field in the
Data Source Dimension Limits Table (Table 10).

0..255

Actual number of entries in UOM_ENTRY_TBL


(Table 12).

NBR_DEMAND_CTRL_ENTRIES 0..255

Actual
number
of
entries
in
DEMAND_CONTROL_TBL (Table 13).

DATA_CTRL_LENGTH

Manufacturer-defined number of octets in an


element
of
the
array
of
the
DATA_CONTROL_TBL (Table 14).

0..255

the

NBR_DATA_CTRL_ENTRIES 0..255

Actual
number
of
entries
DATA_CONTROL_TBL (Table 14).

in

the

NBR_CONSTANTS_ENTRIES 0..255

Actual
number
of
entries
CONSTANTS_TBL (Table 15).

in

the

CONSTANTS_SELECTOR

This value is the selector for the record structure


used in the CONSTANTS_TBL (Table 15).
GAS_CONSTANTS_AGA3_RCD data structure
selected.
GAS_CONSTANTS_AGA7_RCD data structure
selected.
ELECTRIC_CONSTANTS_RCD data structure
selected.
Reserved.

0..255
0
1
2
3..255

NBR_SOURCES

0..255

Actual number of entries in the SOURCES_TBL


(Table 16).

Decade 1: Data Source Tables / Table 11 Actual Data Sources Limiting Table

103

ANSI C12.19-2008

9.2.3

Tables

Table 12 Units of Measure Entry Table

Table 12 Data Description


UOM_ENTRY_TBL (Table 12) provides a method for describing data attributes. It may be used to tag
data sources. One entry exists in this Table (UOM_ENTRY_TBL) only for each entry in
SOURCES_TBL.SOURCE_LINK_RCD.UOM_ENTRY_FLAG that is set to TRUE. Therefore the
application has to perform a bit walk across all UOM_ENTRY_FLAG in SOURCES_TBL that are set to
TRUE, in order to locate the related SELECTION array Element found in this Table (UOM_ENTRY_TBL).
Global Default Table Property Overrides: Role=CONTROL
Table 12 Type Definitions
TYPE UOM_ENTRY_BFLD = BIT FIELD OF UINT32
ID_CODE
: UINT(0..7);
TIME_BASE
: UINT(8..10);
MULTIPLIER
: UINT(11..13);
Q1_ACCOUNTABILITY
: BOOL(14);
Q2_ACCOUNTABILITY
: BOOL(15);
Q3_ACCOUNTABILITY
: BOOL(16);
Q4_ACCOUNTABILITY
: BOOL(17);
NET_FLOW_ACCOUNTABILITY
: BOOL(18);
SEGMENTATION
: UINT(19..21);
HARMONIC
: BOOL(22);
RESERVED
: FILL(28..30);
NFS
: BOOL(31);
ID_RESOURCE
: UINT(23..27);
END;
TYPE UOM_ENTRY_RCD = PACKED RECORD
UOM_ENTRY : ARRAY[ACT_SOURCES_LIM_TBL.NBR_UOM_ENTRIES] OF
UOM_ENTRY_BFLD;
END;
TABLE 12 UOM_ENTRY_TBL = UOM_ENTRY_RCD;
Table 12 Element Descriptions
Identifier

Value

UOM_ID_CODES_ENUM

Definition
The following are the Unit of Measure codes
used throughout this Standard.
Electric Industry units
Power:

0
1

104

Active power W.
Reactive power VAR.
Direct measurement, e.g., by lagging the current
waveform by 90 relative to the voltage
waveform.
Apparent power VA, e.g., Result of IRMS x
VRMS.

Decade 1: Data Source Tables / Table 12 Units of Measure Entry Table

Tables

ANSI C12.19-2008
3
4
5
6

Phasor power - VA = sqrt (W2+VAR2).


Quantity power - Q(60).
Quantity power - Q(45).
Phasor Reactive Power - RMS. This is
computed as square root (VA2 - W2), where W is
associated with UOM.ID_CODE 0 and VA is
associated with UOM.ID_CODE 2. This term
(UOM.ID_CODE 6) includes the distortion voltamperes quantity D defined by VA2 = W2 + VAR2
+ D2.
Distortion volt-amperes - RMS. Defined as VA2 =
W2 + VAR2 + D2, where VA is selected by
UOM.ID_CODE 2 (VRMS x IRMS), W is selected by
UOM.ID_CODE 0 and VAR is selected by
UOM.ID_CODE 1. The distortion D can also be
computed (when D is not reported directly by the
meter via (new) UOM.ID_CODE 7) from
UOM.ID_CODE 2 and UOM.ID_CODE 3 as
follows: D2 = VA2 (UOM.ID_CODE 2) - VA2
(UOM.ID_CODE 3).
Voltage:

8
9
10
11

RMS Volts.
Average Volts (average of |V|).
RMS Volts Squared (V2).
Instantaneous volts.
Current:

12
13
14
15

RMS Amps.
Average Current (average of |I|).
RMS Amps Squared (I2).
Instantaneous current.
Percent Total Harmonic Distortion:

16
17
18
19

T.H.D. V (IEEEInstitute of Electrical and


Electronics Engineers).
T.H.D. I (IEEE).
T.H.D. V (ICIndustry Canada).
T.H.D. I (IC).
Phase Angle:

20
21
22
23
24
25
26

V-VA, Voltage phase angle.


Vx-Vy, where x and y are phases defined in
phase selector.
I-VA, Current phase angle.
Ix-Iy, where x and y are phases defined in phase
selector.
Power factor computed using apparent power,
UOM.ID_CODE=2.
Power factor computed using phasor power,
UOM.ID_CODE=3.
Average Power Factor.

Decade 1: Data Source Tables / Table 12 Units of Measure Entry Table

105

ANSI C12.19-2008

Tables
27..28

Reserved.
Time:

29
30
31
32
33
34
35
36
37
38

39
40
41
42
43
44
45
46
47
48
49

Time of day.
Date.
Time of day and Date.
Interval timer.
Frequency.
Counter.
Sense input (TRUE/on or FALSE/off).
Pulse output Form A. Single Pole Single Throw
(SPST), Normally Open.
Pulse output Form B. Single Pole Single Throw
(SPST), Normally Closed.
Pulse output Form C. Single Pole Double Throw
(SPDT), also referred to as a changeover
switch. The form C has two contacts, one that
opens and one that closes.
Zero Flow Duration (Condition which is normally
timed for diagnostics).
Voltage sag.
Voltage swell.
Power outage (system mains).
Voltage excursion low.
Voltage excursion high.
Normal voltage level.
Phase voltage phase imbalance.
Voltage T.H.D. excess.
Current T.H.D. excess.
Power outage (End Device) device may be
powered separately from power being
monitored.
Event Counters:

50
51
52
53
54
55
56
57
58
59
60
61
62
63

Number of power outages.


Number of demand resets.
Number of times programmed.
Number of minutes on battery carryover.
Number of inversion tampers.
Number of removal tampers.
Number of reprogramming tampers.
Number of power loss tampers.
Number of reverse rotation tampers.
Number of physical tampers.
Number of encoder tampers.
Number of watchdog timeout-recoveries the End
Device has encountered.
Number of diagnostic alarms.
Reserved.
Gas Industry units
Volume:

106

Decade 1: Data Source Tables / Table 12 Units of Measure Entry Table

Tables

ANSI C12.19-2008
64
65
66
67
68
69

Cubic meter gas (volume un-corrected , meter


index reading) per Hr.
Cor cubic meter gas (volume corrected to base
conditions) per Hr.
Cor cubic meter gas (volume corrected to
pressure base, without supercompressibility per
Hr.
Cubic feet gas (volume corrected, meter index
reading) per Hr.
Cor cubic feet gas (volume corrected to base
conditions) per Hr.
Pcor cubic feet gas (volume corrected to pressure
base, without supercompressibility per Hr.
Temperature:

70
71
72
73
74
75

Dry bulb temp degree C.


Wet bulb temp degree C.
Dry bulb temp degree F.
Wet bulb temp degree F.
Dry bulb temp degree K.
Wet bulb temp degree K.
Energy:

76
77

Joules per Hr.


Therm per Hr.
Pressure:

78
79
80
81
82
83
84
85
86

Static Pascal.
Differential Pascal.
Static pound per square inch.
Differential pound per square inch.
Gram cm2.
Meter Hg column.
Inch Hg column.
Inch H2O column.
Bar.
Other:

87
88
89
90
91
92
93..127

% relative humidity.
Parts per million odorant.
Absolute pressure (PSIA).
Degree rankine.
Mole %.
Calories.
Reserved.
Water Industry units

128
129
130
131

Cubic meter liquid per Hr.


Cubic feet liquid per Hr.
US gallons per Hr.
IMP gallons per Hr.

Decade 1: Data Source Tables / Table 12 Units of Measure Entry Table

107

ANSI C12.19-2008

Tables
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146..189

Acre feet per Hr.


Parts per million lead.
Turbidity.
Parts per million chlorine.
PH factor.
Corrosion.
Ionization.
Parts per million SO2.
Liters.
Cubic feet liquid.
Pounds per sq. ft. differential.
Inches of water.
Feet of water.
Atmospheres.
Reserved.
Generic industry units

190
191
192
193
194
195
196
197
198
199
200
201..209

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


Inch.
Foot.
Meter.
Differential value (diff val=x2-x1).
dBm (Receive Signal Strength Indicator).
% Capacity.
Second(s).
Angle in degrees.
Frequency in Hertz (Hz).
Bandwidth in Hertz (Hz).
Reserved.
HVAC Industry

210
211
212
213
214
215
216
217
218
219
220
220
221..255
UOM_ENTRY_BFLD
ID_CODE

108

Return air temp.


Return air flow (Cubic feet).
Return humidity.
Supply air temp.
Supply air humidity.
Discharge suction line pressure.
Discharge line temp.
Ambient temperature.
Ambient humidity.
Suction discharge line temp.
Suction line pressure liquid line temp.
Suction line temp.
Reserved.
The UOM ID_CODE identifies the physical
quantity of interest (equivalent to physical units
in the field of physics as used for dimensional
analysis). The standard defines entries for use
by the Water, Gas, or Electrical Utilities and
provides for generic entries for description of
internal data items.
The defined units of
measure have been grouped solely for

Decade 1: Data Source Tables / Table 12 Units of Measure Entry Table

Tables

ANSI C12.19-2008
readability purposes. Note that because the unit
of measure record includes a time base
indicator some of the units have an extra time
factor that is canceled out by the unit of measure
record time base indicator.
For example,
ID_CODE 77, Therm per Hr is actually Therm
once the time base indicator is properly set. See
UOM_ID_CODES_ENUM.
TIME_BASE
0

1
2
3
4

6
7
MULTIPLIER

This field describes the measurement method


with respect to time.
Bulk Quantity of Commodity (Dial Reading).
Quantity of commodity; integral of commodity
usage rate. Values have the units stated in the
ID_CODE x Hour (Energy units).
Instantaneous (Sampled). This is the fastest
rate at which a measurement is acquired.
Period based. This is a time period based upon
the period of a fundamental frequency (Power,
RMS).
Sub-block Average Demand. Sub-block Average
Demand values are the most recent averaging
demand subinterval values (Demand).
Block Average Demand. Block Average
Demand values may be either the average over
a number of Sub-block Average Demand
subintervals or the average over a single
interval.
The averaging period is typically
greater or equal to the Sub-block Average
Demand period (Demand).
Net Bulk Quantity of Commodity (Relative Dial
Reading). Quantity of commodity; integral of
commodity usage rate over a specified period of
time T1 to T2. T1 and T2 are quite arbitrary and
defined by mechanisms and table driven
schedules. Values have the units stated in the
ID_CODE x Hour, e.g., W x h = Wh (Energy)
Thermal quantity (Demand).
Event quantity (Number of occurrences of an
identified item).
The multiplier identifies the decimal scaling
value to apply to the reported value after
delivery to the application of all conversion
constants of the tagged item; e.g., if the
ID_CODE = 0 and MULTIPLIER = 2 then the
UOM represents kW (Other flags are assumed
to have been set accordingly and all
conversions applied).

0
1
2
3
4
5

100
102
103
106
109
10-2

Decade 1: Data Source Tables / Table 12 Units of Measure Entry Table

109

ANSI C12.19-2008

Tables
6
7

Q1_ACCOUNTABILITY
FALSE
TRUE
Q2_ACCOUNTABILITY
FALSE
TRUE
Q3_ACCOUNTABILITY
FALSE
TRUE
Q4_ACCOUNTABILITY
FALSE
TRUE
NET_FLOW_ACCOUNTABILITY
FALSE

TRUE

110

10-3
10-6
Indication that tagged quantity lies in Quadrant 1
(See Quadrant definition).
Tagged item is not in quadrant 1. It shall be
excluded accounting or measurement.
Tagged item is in quadrant 1. It shall be included
accounting or measurement.
Indication that tagged quantity lies in Quadrant 2
(See Quadrant definition).
Tagged item is not in quadrant 2. It shall be
excluded accounting or measurement.
Tagged item is in quadrant 2. It shall be included
accounting or measurement.
Indication that tagged quantity lies in Quadrant 3
(See Quadrant definition).
Tagged item is not in quadrant 3. It shall be
excluded accounting or measurement.
Tagged item is in quadrant 3. It shall be included
accounting or measurement.
Indication that tagged quantity lies in Quadrant 4
(See Quadrant definition).
Tagged item is not in quadrant 4. It shall be
excluded accounting or measurement.
Tagged item is in quadrant 4. It shall be included
accounting or measurement.
This bit is required to identify the manner in
which the quadrants specified are being
summed.
Absolute power or commodity flow per time unit
delivered through selected quadrants, i.e.,
power or commodity per hour is added positively
regardless of direction of flow, |delivered| +
|received|.
Net of delivered - received, where Watts are
delivered in quadrants 1 & 4, received in
quadrants 2 & 3; and VARs are delivered in
quadrants 1 & 2, received in quadrants 3 & 4.
Other commodities, i.e., Water in gallons per
time unit are delivered in 1 and received in
quadrant 2.
Note that Electricity must be
measured by vectorial summation, requiring the
use of all four (4) quadrants, 1 through 4.
Commodity measurement such as water and
gas require only two accumulators to segregate
delivered and received amounts. To utilize the
accountability tools available, commodities such

Decade 1: Data Source Tables / Table 12 Units of Measure Entry Table

Tables

ANSI C12.19-2008
as water and gas are assigned to 1 and 2
(describing 0 to 180 degrees) for delivered and
received quantities per time unit respectively.
SEGMENTATION

When the ID_CODE field represents the electric


utility industry unit of measures this bit indicates
phase measurement associations.
When the ID_CODE does not represent an
electric utility unit of measure then this field
represents an a yet to be defined quantity,
except for the value 0, which stands for all
sources and flows. In this case the value should
be set to zero.
0
1
2
3
4
5
6
7

HARMONIC
FALSE
TRUE

Measurement is not a phase related or no phase


information is applicable. e.g., All phases on a
polyphase End Device.
Phase A to B. i.e. A-B.
Phase B to C. i.e. B-C.
Phase C to A. i.e. C-A.
Neutral to ground, or no phase information. e.g.,
Neutral current in a 4Y wire system.
Phase A to Neutral. i.e. A-N.
Phase B to Neutral. i.e. B-N.
Phase C to Neutral. i.e. C-N.
When the ID_CODE does not represent an
electric utility unit of measure then this field
represents an as yet to be defined quantity,
except for the value 0, which stands for all
sources and flows.
This identifies harmonic related quantities.
The identified ID_CODE is the entire signal unfiltered.
The identified ID_CODE is a harmonic
component of an associated source.

RESERVED

Reserved.

NFS

Not Fully Supported: Bit used to indicate that


this unit of measure entry does not follow the
unit of measure definition in some manner.
FALSE
TRUE

ID_RESOURCE

This unit of measure entry description follows


the unit of measure definitions defined in this
standard.
This unit of measure entry description does not
follow the unit of measure definitions defined in
this standard.
A descriptive code identifying to the reader the
resource used to generated the commodity
selected by ID_CODE.
This field was
specifically requested by the REA Research

Decade 1: Data Source Tables / Table 12 Units of Measure Entry Table

111

ANSI C12.19-2008

Tables
Institute for the express desire to tabulate
Green
Power.
The
metering
and
instrumentation utilizing this UOM is not limited
to but intended to be used for the generation
facilities of the interested region or power
system.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
25..31

UOM_ENTRY_RCD
UOM_ENTRY

112

Unspecified or unknown resource.


Green Source.
Nuclear, U235 fission.
Nuclear U238 breeder.
Hydro.
Hydro-pump storage.
Coal fired fossil.
Natural gas turbine.
MSW (Municipal Solid Waste) gasification
Methane turbine.
Animal waste gasification Methane turbine.
Coal gasification Methane turbine.
Wind horizontal vanes.
Wind vertical vanes.
Solar electric-panels.
Solar steam turbines.
Ethanol engine generation.
Bio-diesel fuel engine generation.
Automobile tire reclaimed diesel engine
generation.
Geothermal steam turbine.
Hydro-tidal storage generation.
Wave action generation.
Fuel cells.
Plug In Hybrid Electric Vehicle.
Plant Biomass methane gasification Methane
turbine.
Reserved.
Each of the entries in this array is associated to
an entry in the SOURCES_TBL (Table 16). This
array
contains
one
entry
for
each
SOURCES_TBL (Table 16) entry having the
UOM_ENTRY_FLAG set. The order of the
parameters in this array corresponds to the order
of the sources in table SOURCES_TBL (Table
16).

Decade 1: Data Source Tables / Table 12 Units of Measure Entry Table

Tables

9.2.4

ANSI C12.19-2008

Table 13 Demand Control Table

Table 13 Data Description


DEMAND_CONTROL_TBL (Table 13) contains information pertaining to the application of rates and
global rate controls.
Global Default Table Property Overrides: Role=CONTROL
Table 13 Type Definitions
TYPE INT_CONTROL_RCD = PACKED RECORD
IF ACT_SOURCES_LIM_TBL.SLIDING_DEMAND_FLAG THEN
SUB_INT
: UINT8;
INT_MULTIPLIER
: UINT8;
ELSE
INT_LENGTH
: UINT16;
END;
END;
TYPE DEMAND_CONTROL_RCD = PACKED RECORD
IF ACT_SOURCES_LIM_TBL.RESET_EXCLUDE_FLAG THEN
RESET_EXCLUSION
: UINT8;
END;
IF ACT_SOURCES_LIM_TBL.PF_EXCLUDE_FLAG THEN
P_FAIL_RECOGNTN_TM
: UINT8;
P_FAIL_EXCLUSION
: UINT8;
COLD_LOAD_PICKUP
: UINT8;
END;
INTERVAL_VALUE
: ARRAY[ACT_SOURCES_LIM_TBL.
NBR_DEMAND_CTRL_ENTRIES]
OF INT_CONTROL_RCD;
END;
TABLE 13 DEMAND_CONTROL_TBL = DEMAND_CONTROL_RCD;
Table 13 Element Descriptions
Identifier

Value

Definition

INT_CONTROL_RCD
SUB_INT

0..255

The number of minutes in the subinterval.

INT_MULTIPLIER

0..255

The multiplier by which the SUB_INT is


multiplied.

INT_LENGTH

0..65535

The length of the demand interval in minutes.

0..255

Number of minutes after demand reset to


exclude additional reset action.

DEMAND_CONTROL_RCD
RESET_EXCLUSION

Decade 1: Data Source Tables / Table 13 Demand Control Table

113

ANSI C12.19-2008

P_FAIL_RECOGNTN_TM

0..255

Number of seconds after a power failure occurs


until a valid power failure is recorded and a
specified action is initiated.

P_FAIL_EXCLUSION

0..255

Number of minutes after a valid power failure


occurs to inhibit demand calculations.

COLD_LOAD_PICKUP

0..255

Number of minutes after a valid power failure


occurs to provide cold load pickup functions.

INTERVAL_VALUE

114

Tables

Each of the entries in this array is associated


with an entry in the SOURCES_TBL (Table 16).
This array contains one entry for each
SOURCES_TBL (Table 16) entry having the
DEMAND_CTRL_FLAG set. The order of the
parameters in this array corresponds to the
order of the sources in table SOURCES_TBL
(Table 16).

Decade 1: Data Source Tables / Table 13 Demand Control Table

Tables

9.2.5

ANSI C12.19-2008

Table 14 Data Control Table

Table 14 Data Description


DATA_CONTROL_TBL (Table 14) contains the data source information that serves as data input
sources for the following tables. This table serves as an interface between areas of the End Device
considered manufacturer specific and the areas of the End Device to be standardized.
Each entry in the table is manufacturer defined. Examples of entries into this table are: entry contains
address of data to be processed; or entry contains data to be processed.
Global Default Table Property Overrides: Role=CONTROL
Table 14 Type Definitions
TYPE DATA_RCD = PACKED RECORD
SOURCE_ID : BINARY(ACT_SOURCES_LIM_TBL.DATA_CTRL_LENGTH);
END;
TYPE DATA_CONTROL_RCD = PACKED RECORD
SOURCES_ID : ARRAY[ACT_SOURCES_LIM_TBL.NBR_DATA_CTRL_ENTRIES] OF
DATA_RCD;
END;
TABLE 14 DATA_CONTROL_TBL = DATA_CONTROL_RCD;
Table 14 Element Descriptions
Identifier
DATA_RCD
SOURCE_ID

DATA_CONTROL_RCD
SOURCES_ID

Value

Definition
Each entry is defined by the manufacturer as to
length and content. The length is identical for all
entries.
Each of the entries in this array is associated
with an entry in the SOURCES_TBL (Table 16).
This array contains one entry for each
SOURCES_TBL (Table 16) entry having the
DATA_CTRL_FLAG set. The order of the
parameters in this array corresponds to the
order of the sources in table SOURCES_TBL
(Table 16).

Decade 1: Data Source Tables / Table 14 Data Control Table

115

ANSI C12.19-2008

9.2.6

Tables

Table 15 Constants Table

Table 15 Data Description


CONSTANTS_TBL (Table 15) contains the record structures supporting constants for application to the
sources. This table has been designed for easy inclusion of new constants structures.
Global Default Table Property Overrides: Role=CONTROL
Table 15 Type Definitions
{gas industry constants}
TYPE GAS_PRESS_RCD = PACKED RECORD
GAS_PRESS_ZERO
: NI_FMAT2;
GAS_PRESS_FULLSCALE
: NI_FMAT2;
BASE_PRESSURE
: NI_FMAT2;
END;
TYPE GAS_TEMP_RCD = PACKED RECORD
GAS_TEMP_ZERO
: NI_FMAT2;
GAS_TEMP_FULLSCALE
: NI_FMAT2;
BASE_TEMP
: NI_FMAT2;
END;
TYPE GAS_DP_RCD = PACKED RECORD
GAS_DP_ZERO
: NI_FMAT2;
GAS_DP_FULLSCALE
: NI_FMAT2;
END;
TYPE PIPE_ORIF_DIA_RCD = PACKED RECORD
PIPE_DIA
: NI_FMAT2;
ORIF_DIA
: NI_FMAT2;
END;
TYPE GAS_AGA3_CORR_RCD = PACKED RECORD
AUX_CORR_FCTR
: NI_FMAT2;
GAS_AGA3_CORR_FCTR
: NI_FMAT2;
PIPE_ORIF_DIA
: PIPE_ORIF_DIA_RCD;
TAP_UP_DN
: UINT8;
GAS_PRESS_PARM
: GAS_PRESS_RCD;
GAS_TEMP_PARM
: GAS_TEMP_RCD;
END;
TYPE GAS_AGA7_CORR_RCD = PACKED RECORD
GAS_PRESS_PARM
: GAS_PRESS_RCD;
GAS_TEMP_PARM
: GAS_TEMP_RCD;
AUX_CORR_FCTR
: NI_FMAT2;
GAS_AGA7_CORR
: NI_FMAT2;
END;
TYPE GAS_ENERGY_RCD = PACKED RECORD
GAS_ENERGY_ZERO
: NI_FMAT2;
GAS_ENERGY_FULL
: NI_FMAT2;

116

Decade 1: Data Source Tables / Table 15 Constants Table

Tables

ANSI C12.19-2008

END;
TYPE GAS_DP_SHUTOFF_RCD = PACKED RECORD
GAS_SHUTOFF
: NI_FMAT2;
END;
{Constant selector 0}
TYPE GAS_CONSTANTS_AGA3_RCD = PACKED RECORD
GAS_DP_PARM
: GAS_DP_RCD;
GAS_DP_SHUTOFF
: GAS_DP_SHUTOFF_RCD;
GAS_PRESS_PARM
: GAS_PRESS_RCD;
GAS_AGA3_CORR
: GAS_AGA3_CORR_RCD;
GAS_ENERGY
: GAS_ENERGY_RCD;
END;
{Constant selector 1}
TYPE GAS_CONSTANTS_AGA7_RCD = PACKED RECORD
GAS_AGA7_CORR
: GAS_AGA7_CORR_RCD;
GAS_ENERGY
: GAS_ENERGY_RCD;
END;
{Constant selector 2}
TYPE SET_CTRL_BFLD = BIT FIELD OF UINT8
SET_APPLIED_FLAG
: BOOL(0);
FILLER
: FILL(1..7);
END;
TYPE SET_APPLIED_RCD = PACKED RECORD
SET_FLAGS
: SET_CTRL_BFLD;
RATIO_F1
: NI_FMAT1;
RATIO_P1
: NI_FMAT1;
END;
TYPE ELECTRIC_CONSTANTS_RCD = PACKED RECORD
MULTIPLIER
: NI_FMAT1;
OFFSET
: NI_FMAT1;
IF ACT_SOURCES_LIM_TBL.SET1_PRESENT_FLAG THEN
SET1_CONSTANTS : SET_APPLIED_RCD;
END;
IF ACT_SOURCES_LIM_TBL.SET2_PRESENT_FLAG THEN
SET2_CONSTANTS : SET_APPLIED_RCD;
END;
END;
{Constant selector 3}
TYPE GENERIC_CONSTANTS_RCD = PACKED RECORD
MULTIPLIER
: NI_FMAT1;
DIVISOR
: NI_FMAT1;
OFFSET
: NI_FMAT1;

Decade 1: Data Source Tables / Table 15 Constants Table

117

ANSI C12.19-2008

Tables

IF ACT_SOURCES_LIM_TBL.SET1_PRESENT_FLAG THEN
SET1_CONSTANTS : SET_APPLIED_RCD;
END;
IF ACT_SOURCES_LIM_TBL.SET2_PRESENT_FLAG THEN
SET2_CONSTANTS : SET_APPLIED_RCD;
END;
END;
{Constants record structure selection}
TYPE CONSTANTS_RCD = PACKED RECORD
SWITCH ACT_SOURCES_LIM_TBL.CONSTANTS_SELECTOR OF
CASE 0
: GAS_CONSTANTS_AGA3 : GAS_CONSTANTS_AGA3_RCD;
CASE 1
: GAS_CONSTANTS_AGA7 : GAS_CONSTANTS_AGA7_RCD;
CASE 2
: ELECTRIC_CONSTANTS
: ELECTRIC_CONSTANTS_RCD;
CASE 3
: GENERIC_CONSTANTS
: GENERIC_CONSTANTS_RCD;
CASE 4..255 : RESERVED
: NIL;
END;
END;
TYPE CONSTANT_SELECTION_RCD = PACKED RECORD
SELECTION
: ARRAY[ACT_SOURCES_LIM_TBL.NBR_CONSTANTS_ENTRIES]
OF CONSTANTS_RCD;
END;
TABLE 15 CONSTANTS_TBL = CONSTANT_SELECTION_RCD;
Table 15 Element Descriptions
Identifier
GAS_PRESS_RCD
GAS_PRESS_ZERO

Definition
Flow pressure calibration, zero offset.

GAS_PRESS_FULLSCALE

Flow pressure calibration, full scale.

BASE_PRESSURE

Pressure for base condition.


absolute base pressure.

GAS_TEMP_RCD
GAS_TEMP_ZERO

This value is

Flow temperature calibration, zero offset.

GAS_TEMP_FULLSCALE

Flow temperature calibration, full scale.

BASE_TEMP

Temperature for base condition.

GAS_DP_RCD
GAS_DP_ZERO
GAS_DP_FULLSCALE
PIPE_ORIF_DIA_RCD
PIPE_DIA

118

Value

Flow Differential pressure calibration, zero offset


(used for AGA 3 only).
Flow Differential pressure calibration, full scale
(used for AGA 3 only).
The pipe diameter of an orifice meter (used for
AGA 3 only).

Decade 1: Data Source Tables / Table 15 Constants Table

Tables

ANSI C12.19-2008

ORIF_DIA

The orifice diameter of an orifice meter (used for


AGA 3 only).

GAS_AGA3_CORR_RCD
AUX_CORR_FCTR

Factor to provide other possible correction to the


gas corrected volume.

GAS_AGA3_CORR_FCTR

Factor is used to correct the uncorrected gas


volume using AGA3 (used for AGA3 only).

PIPE_ORIF_DIA

Record structure from above.

TAP_UP_DN
0
1
2
3
4
5..255

Tap configuration (used for AGA3 only).


No tap or flange.
Up stream flange.
Down stream flange.
Upstream pipe.
Down stream pipe.
Reserved.

GAS_PRESS_PARM

Refer to GAS_PRESS_RCD.

GAS_TEMP_PARM

Refer to GAS_TEMP_RCD.

GAS_AGA7_CORR_RCD
GAS_PRESS_PARM

Refer to GAS_PRESS_RCD.

GAS_TEMP_PARM

Refer to GAS_TEMP_RCD.

AUX_CORR_FCTR

Factor to provide other possible correction to the


gas corrected volume.

GAS_AGA7_CORR

Factor is used to correct the uncorrected gas


volume using AGA7 (used for AGA7 only).

GAS_ENERGY_RCD
GAS_ENERGY_ZERO
GAS_ENERGY_FULL
GAS_DP_SHUTOFF_RCD
GAS_SHUTOFF

Energy calibration, zero offset.


Energy calibration, full scale.
This parameter is used to disable the AGA3 flow
calculations when differential pressure is below
the value indicated by this parameter (used for
AGA 3 only).

GAS_CONSTANTS_AGA3_RCD
GAS_DP_PARM
GAS_DP_SHUTOFF
GAS_PRESS_PARM
GAS_AGA3_CORR
GAS_ENERGY

When Constants selector is 0.


Refer to GAS_DP_RCD.
Refer to GAS_DP_SHUTOFF_RCD.
Refer to GAS_PRESS_RCD.
Refer to GAS_AGA3_CORR_RCD.
Refer to GAS_ENERGY_RCD.

GAS_CONSTANTS_AGA7_RCD
GAS_AGA7_CORR

When Constants selector is 1.


Refer to GAS_AGA7_CORR_RCD.

Decade 1: Data Source Tables / Table 15 Constants Table

119

ANSI C12.19-2008

Tables

GAS_ENERGY
SET_CTRL_BFLD
SET_APPLIED_FLAG

Refer to GAS_ENERGY_RCD.
FALSE
TRUE

SET_APPLIED_RCD
SET_FLAGS

When Constants selector is 2.


The RATIO_P1 and RATIO_F1 represented by
this flag have not been applied to the associated
source.
The RATIO_P1 and RATIO_F1 represented by
this flag have been applied to the associated
source.
See SET_CTRL_BFLD above.

RATIO_F1

Ratio of intermediary device to allow interface of


commodity flow to utility meters. For example,
electric utilities use a current transformer to
reduce the current at the meter. Transforming
2000 amps to 5 amps is a ratio of 400.

RATIO_P1

Ratio of intermediary device to allow interface of


commodity pressure to utility meters. For
example, electric utilities use a voltage
transformer to reduce the voltage at the meter.
Transforming 7200 volts to 120 volts is a ratio of
60.

ELECTRIC_CONSTANTS_RCD

Offsets, multipliers and divisors that were


applied (or need to be applied) in order to
convert raw End Device Table Element values to
engineering units. MULTIPLIER and OFFSET
shall be applied if the corresponding
CONSTANT_TO_BE_APPLIED that is found in
SOURCES_TBL.SOURCE_LINK_BFLD is set
to TRUE.

MULTIPLIER

Final
Element
value
used
in
multiplication/division adjustment. This multiplier
shall be applied before OFFSET.

OFFSET

Final Element value used in addition/subtraction


adjustment. This Element shall be applied after
MULTIPLIER.

SET1_CONSTANTS

Conditional conversion ratios that were applied


(or need to be applied) immediately after the
application of MULTIPLIER and OFFSET Final
Elements.
This Element is associated with the intermediary
device that is closest to the End Device or
embedded within the End Device.

SET2_CONSTANTS

120

Conditional conversion ratios that were applied


(or need to be applied) immediately after the
application of SET1_CONSTANTS Elements.

Decade 1: Data Source Tables / Table 15 Constants Table

Tables

ANSI C12.19-2008

This Element is associated with the intermediary


device that is next in proximity to the End Device
relative to the intermediary device that is scaled
by the SET1_CONSTANTS Element.
GENERIC_CONSTANTS_RCD

Offsets, multipliers and divisors that were


applied (or need to be applied) in order to
convert raw End Device Table Element values to
engineering units. MULTIPLIER, DIVISOR and
OFFSET shall be applied if the corresponding
CONSTANT_TO_BE_APPLIED that is found in
SOURCES_TBL.SOURCE_LINK_BFLD is set
to TRUE.

MULTIPLIER

Final Element value used in multiplication


adjustment. This multiplier shall be applied
before OFFSET.

DIVISOR

Final Element value used in division adjustment.


This divisor shall be applied before OFFSET
and after the MULTIPLIER.

OFFSET

Final Element value used in addition/subtraction


adjustment. This Element shall be applied after
MULTIPLIER.

SET1_CONSTANTS

Conditional conversion ratios that were applied


(or need to be applied) immediately after the
application of MULTIPLIER, DIVISOR and
OFFSET Final Elements.
This Element is associated with the intermediary
device that is closest to the End Device or
embedded within the End Device.

SET2_CONSTANTS

Conditional conversion ratios that were applied


(or need to be applied) immediately after the
application of SET1_CONSTANTS Elements.
This Element is associated with the intermediary
device that is next in proximity to the End Device
relative to the intermediary device that is scaled
by the SET1_CONSTANTS Element.

CONSTANTS_RCD
GAS_CONSTANTS_AGA3
GAS_CONSTANTS_AGA7
ELECTRIC_CONSTANTS
CONSTANT_SELECTION_RCD
SELECTION

Structure that selects the constant record


structure to use.
See GAS_CONSTANTS_AGA3_RCD.
See GAS_CONSTANTS_AGA7_RCD.
See ELECTRIC_CONSTANTS_RCD.
Each of the entries in this array is associated
with an entry in the SOURCES_TBL (Table 16).

Decade 1: Data Source Tables / Table 15 Constants Table

121

ANSI C12.19-2008

Tables
This array contains one entry for each
SOURCES_TBL (Table 16) entry having the
CONSTANTS_FLAG set. The order of the
parameters in this array corresponds to the
order of the sources in table SOURCES_TBL
(Table 16).

122

Decade 1: Data Source Tables / Table 15 Constants Table

Tables

9.2.7

ANSI C12.19-2008

Table 16 Source Definition Table

Table 16 Data Description


SOURCES_TBL (Table 16) contains the information regarding the sources selected by the other tables.
Global Default Table Property Overrides: Role=CONTROL
Table 16 Type Definitions
TYPE SOURCE_LINK_BFLD = BIT FIELD OF UINT8
UOM_ENTRY_FLAG
: BOOL(0);
DEMAND_CTRL_FLAG
: BOOL(1);
DATA_CTRL_FLAG
: BOOL(2);
CONSTANTS_FLAG
: BOOL(3);
PULSE_ENGR_FLAG
: BOOL(4);
CONSTANT_TO_BE_APPLIED
: BOOL(5);
FILLER
: FILL(6..7);
END;
TYPE SOURCE_LINK_RCD = PACKED RECORD
SOURCES_LINK
: ARRAY[ACT_SOURCES_LIM_TBL.NBR_SOURCES] OF
SOURCE_LINK_BFLD;
END;
TABLE 16 SOURCES_TBL = SOURCE_LINK_RCD;
Table 16 Element Descriptions
Identifier

Value

Definition

SOURCE_LINK_BFLD
UOM_ENTRY_FLAG

FALSE

A UOM_ENTRY_TBL (Table 12) entry does not


exist for this source.
A UOM_ENTRY_TBL (Table 12) entry is
associated with this source.

TRUE
DEMAND_CTRL_FLAG

FALSE
TRUE

DATA_CTRL_FLAG

FALSE
TRUE

CONSTANTS_FLAG

FALSE
TRUE

PULSE_ENGR_FLAG

A DEMAND_CONTROL_TBL (Table 13) entry


does not exist for this source.
A DEMAND_CONTROL_TBL (Table 13) entry
is associated with this source.
A DATA_CONTROL_TBL (Table 14) entry does
not exist for this source.
A DATA_CONTROL_TBL (Table 14) entry is
associated with this source.
A CONSTANTS_TBL (Table 15) entry does not
exist for this source.
A CONSTANTS_TBL (Table 15) entry is
associated with this source.
This Final Element is just a source descriptor. It
is provided solely for information purpose. The

Decade 1: Data Source Tables / Table 16 Source Definition Table

123

ANSI C12.19-2008

Tables
conversion algorithm from raw Table values to
final usable engineering values does not depend
on the state of the PULSE_ENGR_FLAG being
TRUE or FALSE.
FALSE
TRUE

The source is in pulse units.


The source is in engineering units.

CONSTANT_TO_BE_APPLIEDThis flag affects the use of the MULTIPLIER and OFFSET


Elements
of
CONSTANTS_TBL.
ELECTRIC_CONSTANTS_RCD. Otherwise this
flag has no effect.

124

FALSE

The entry in the CONSTANTS_TBL (Table 15) if


present, does not have to be applied by the
Utility application. The constants have been
applied by the End Device to the source prior to
transmission.

TRUE

The entry in the CONSTANTS_TBL (Table 15) if


present, have to be applied by the Utility
application. The constants were not applied
bye the End Device to the source prior to
transmission.

Decade 1: Data Source Tables / Table 16 Source Definition Table

Tables

9.2.8

ANSI C12.19-2008

Table 17 Transformer Loss Compensation Table

Table 17 Data Description


TLC_TBL (Table 17) provides the electrical End Device with information for accounting for transformer
related losses. This table shows total no-load losses and load losses calculated by the End Device. It
also contains the Watt losses and VAR losses constants. See Annex F, Transformer Losses
Compensation, for a detailed discussion on the implementation model assumed by this Standard.
Global Default Table Property Overrides: Role=CONTROL
Table 17 Type Definitions
TYPE TLC_COEFFICIENTS_RCD = PACKED RECORD
KWCU
: NI_FMAT1;
KVCU
: NI_FMAT1;
KWFE
: NI_FMAT1;
KVFE
: NI_FMAT1;
DELIVERED_PCT
: UINT8;
RECEIVED_PCT
: UINT8;
END;
TYPE TLC_INFORMATION_RCD = PACKED RECORD
DELIVERED_WATT_CU
: NI_FMAT1;
DELIVERED_VAR_CU
: NI_FMAT1;
DELIVERED_WATT_FE
: NI_FMAT1;
DELIVERED_VAR_FE
: NI_FMAT1;
RECEIVED_WATT_CU
: NI_FMAT1;
RECEIVED_VAR_CU
: NI_FMAT1;
RECEIVED_WATT_FE
: NI_FMAT1;
RECEIVED_VAR_FE
: NI_FMAT1;
END;
TYPE TLC_RCD = PACKED RECORD
TR_CONFIGURE
: UINT8;
TLC_CONSTANTS
: TLC_COEFFICIENTS_RCD;
TLC_SUM
: TLC_INFORMATION_RCD;
END;
TABLE 17 TLC_TBL = TLC_RCD;
Table 17 Element Descriptions
Identifier
TLC_COEFFICIENTS_RCD
KWCU

KVCU

Value

Definition
Copper coefficient used in determining watt
losses of the transformer due to load (Copper)
losses
Copper coefficient used in determining var
losses of the transformer due to load (Copper)
losses.

Decade 1: Data Source Tables / Table 17 Transformer Loss Compensation Table

125

ANSI C12.19-2008

Tables

KWFE

Iron coefficient used in determining watt losses


of the transformer due to no-load (Iron) losses.

KVFE

Iron coefficient used in determining VAR losses


of the transformer due to no-load (Iron) losses.

DELIVERED_PCT

0..100

Percentage of losses in the delivered direction.

RECEIVED_PCT

0..100

Percentage of losses in the received direction.


Note: when directionality is not available this
Element shall be set to zero (0).

TLC_INFORMATION_RCD

This record delivers the


compensation calculations.

loss

DELIVERED_WATT_CU

Delivered total Watt copper loss accumulator.

DELIVERED_VAR_CU

Delivered total VAR copper loss accumulator.

DELIVERED_WATT_FE

Delivered total Watt iron loss accumulator.

DELIVERED_VAR_FE

Delivered total VAR iron loss accumulator.

RECEIVED_WATT_CU

Received Watt copper loss accumulator.

RECEIVED_VAR_CU

Received VAR copper loss accumulator.

RECEIVED_WATT_FE

Received Watt iron loss accumulator.

RECEIVED_VAR_FE

Received VAR iron loss accumulator.

TLC_RCD
TR_CONFIGURE

0
1
2255

126

transformer

The billing point is on the high voltage side of a


transformer, the meter is located on the low
voltage side of the transformer.
The billing point is on the low voltage side of a
transformer, the meter is located on the high
voltage side of the transformer.
Reserved.

TLC_CONSTANTS

See TLC_COEFFICIENTS_RCD.

TLC_SUM

See TLC_INFORMATION_RCD.

Decade 1: Data Source Tables / Table 17 Transformer Loss Compensation Table

Tables

ANSI C12.19-2008

9.3 Decade 2: Register Tables


Decade 2 Name
REGISTER_DEC
This Decade contains Tables associated with Registers for measured values. These Registers can be
accumulating (energy), demand, TOU, instantaneous or other(s) as appropriate.
9.3.1

Table 20 Register Dimension Limits Table

Table 20 Data Description


DIM_REGS_TBL (Table 20) specifies the maximum dimensional values for measured values Registers.
The constants defined are used for setting the absolute maximum limits of Arrays used in the transport of
these values.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 20 Type Definitions
TYPE REG_FUNC1_BFLD = BIT FIELD OF UINT8
SEASON_INFO_FIELD_FLAG
: BOOL(0);
DATE_TIME_FIELD_FLAG
: BOOL(1);
DEMAND_RESET_CTR_FLAG
: BOOL(2);
DEMAND_RESET_LOCK_FLAG
: BOOL(3);
CUM_DEMAND_FLAG
: BOOL(4);
CONT_CUM_DEMAND_FLAG
: BOOL(5);
TIME_REMAINING_FLAG
: BOOL(6);
FILLER
: FILL(7..7);
END;
TYPE REG_FUNC2_BFLD = BIT FIELD OF UINT8
SELF_READ_INHIBIT_OVERFLOW_FLAG
SELF_READ_SEQ_NBR_FLAG
DAILY_SELF_READ_FLAG
WEEKLY_SELF_READ_FLAG
SELF_READ_DEMAND_RESET
FILLER
END;

: BOOL(0);
: BOOL(1);
: BOOL(2);
: BOOL(3);
: UINT(4..5);
: FILL(6..7);

TYPE REGS_RCD = PACKED RECORD


REG_FUNC1_FLAGS
: REG_FUNC1_BFLD;
REG_FUNC2_FLAGS
: REG_FUNC2_BFLD;
NBR_SELF_READS
: UINT8;
NBR_SUMMATIONS
: UINT8;
NBR_DEMANDS
: UINT8;
NBR_COIN_VALUES
: UINT8;
NBR_OCCUR
: UINT8;
NBR_TIERS
: UINT8;
NBR_PRESENT_DEMANDS : UINT8;
NBR_PRESENT_VALUES
: UINT8;
END;
TABLE 20 DIM_REGS_TBL = REGS_RCD;
Decade 2: Register Tables / Table 20 Register Dimension Limits Table

127

ANSI C12.19-2008

Tables

Table 20 Element Descriptions


Identifier

Value

Definition

FALSE

End Device is not capable of reporting the


representative season in Tables in this decade.
End Device is capable of reporting the
representative season in Tables in this decade.

REG_FUNC1_BFLD
SEASON_INFO_FIELD_FLAG
TRUE
DATE_TIME_FIELD_FLAG

FALSE
TRUE

End Device is not capable of providing the date


and time in Tables in this decade.
End Device is capable of providing the date and
time in Tables in this decade.

DEMAND_RESET_CTR_FLAG
FALSE
TRUE
DEMAND_RESET_LOCK_FLAG
FALSE
TRUE
CUM_DEMAND_FLAG

FALSE
TRUE

End Device is not capable of counting the


number of activations of demand resets.
End Device is capable of counting the number of
activations of demand resets.
Demand reset lockout is not supported by the
End Device.
Demand reset lockout is supported by the End
Device.
Cumulative Demand is not supported by the End
Device.
Cumulative Demand is supported by the End
Device.

CONT_CUM_DEMAND_FLAG
FALSE
TRUE
TIME_REMAINING_FLAG

FALSE
TRUE

Continuous Cumulative Demand is not


supported by the End Device.
Continuous Cumulative Demand is supported by
the End Device.
End Device is not capable of reporting the time
remaining in the Demand interval.
End Device is capable of reporting the time
remaining in the Demand interval.

REG_FUNC2_BFLD
SELF_READ_INHIBIT_OVERFLOW_FLAG
FALSE
TRUE
SELF_READ_SEQ_NBR_FLAG
FALSE

128

End Device is not capable of inhibiting Selfreads once an overflow occurs.


End Device is capable of inhibiting Self-reads
once an overflow occurs.
End Device is not capable of providing a Selfread sequential number for each entry.

Decade 2: Register Tables / Table 20 Register Dimension Limits Table

Tables

ANSI C12.19-2008
TRUE
DAILY_SELF_READ_FLAG

End Device is capable of providing a Self-read


sequential number.

FALSE
TRUE

Indicates whether daily Self-reads are


supported.
These readings are taken at
00:00:00.
Daily Self-reads are not supported.
Daily Self-reads are supported.

FALSE
TRUE

Indicates whether weekly Self-reads are


supported.
These readings are taken at
00:00:00 on Sunday.
Weekly Self-reads are not supported.
Weekly Self-reads are supported.

WEEKLY_SELF_READ_FLAG

SELF_READ_DEMAND_RESET

0
1
2
3

Specifies whether the End Device is capable of


performing a Self-read whenever a Demand
reset (by any method) is performed and whether
the End Device is capable of performing a
Demand reset whenever a Self-read (by any
method) is performed.
End Device is not capable of performing either a
Self-read on every Demand reset or a Demand
reset on every Self-read.
End Device is capable of performing only a Selfread on every Demand reset.
End Device is capable of performing only a
Demand reset on every Self-read.
End Device is capable of performing a Self-read
on every Demand reset and a Demand reset on
every Self-read.

REGS_RCD
REG_FUNC1_FLAGS

See REG_FUNC1_BFLD.

REG_FUNC2_FLAGS

See REG_FUNC2_BFLD.

NBR_SELF_READS

0..255

Maximum number of Self-reads supported by


the End Device.

NBR_SUMMATIONS

0..255

Maximum number of summation Registers in


each data block.

NBR_DEMANDS

0..255

Maximum number of Demand Registers in each


data block.

NBR_COIN_VALUES

0..255

Maximum number of coincident values saved


concurrently in each data block.

NBR_OCCUR

0..255

Maximum number of occurrences stored for a


particular selection.

NBR_TIERS

0..255

Maximum number of tiers for data storage.

Decade 2: Register Tables / Table 20 Register Dimension Limits Table

129

ANSI C12.19-2008

130

Tables

NBR_PRESENT_DEMANDS

0..255

Maximum number of present demand values


that can be stored.

NBR_PRESENT_VALUES

0..255

Maximum number of present values that can be


stored.

Decade 2: Register Tables / Table 20 Register Dimension Limits Table

Tables

9.3.2

ANSI C12.19-2008

Table 21 Actual Register Limiting Table

Table 21 Data Description


ACT_REGS_TBL (Table 21) contains actual limiting values for Registers.
Global Default Table Property Overrides: Role=ACTUAL
Table 21 Type Definitions
TABLE 21 ACT_REGS_TBL = REGS_RCD;
Table 21 Element Descriptions
Identifier

Value

REG_FUNC1_BFLD

Definition
Redefines:
REG_FUNC1_BFLD.

DIM_REGS_TBL.

SEASON_INFO_FIELD_FLAG
FALSE
TRUE
DATE_TIME_FIELD_FLAG

FALSE
TRUE

End Device is not reporting the representative


season in Tables in this Decade.
End Device is reporting the representative
season in Tables in this Decade.
End Device is not providing the date and time in
Tables in this Decade.
End Device is providing the date and time in
Tables in this Decade.

DEMAND_RESET_CTR_FLAG
FALSE
TRUE
DEMAND_RESET_LOCK_FLAG
FALSE
TRUE
CUM_DEMAND_FLAG

FALSE
TRUE

End Device is not counting the number of


activations of Demand resets.
End Device is counting the number of
activations of Demand resets.
Demand reset lockout is not enabled.
Demand reset lockout is enabled.
Cumulative Demand is not in use by the End
Device.
Cumulative Demand is in use by the End
Device.

CONT_CUM_DEMAND_FLAG
FALSE
TRUE
TIME_REMAINING_FLAG

FALSE

Continuous Cumulative Demand is not in use by


the End Device.
Continuous Cumulative Demand is in use by the
End Device.
End Device does not report the time remaining
in Demand interval.

Decade 2: Register Tables / Table 21 Actual Register Limiting Table

131

ANSI C12.19-2008

Tables
TRUE

REG_FUNC2_BFLD

Redefines:
REG_FUNC2_BFLD.

SELF_READ_INHIBIT_OVERFLOW_FLAG
FALSE
TRUE
SELF_READ_SEQ_NBR_FLAG
FALSE
TRUE
DAILY_SELF_READ_FLAG

End Device is not inhibiting Self-reads once an


overflow occurs.
End Device is inhibits Self-reads once an
overflow occurs.
End Device is not providing a Self-read
sequential number for each entry.
End Device is providing a Self-read sequential
number.

FALSE
TRUE

FALSE
TRUE

Indicates whether weekly Self-reads are in use.


These readings are taken at 00:00:00 on
Sunday.
Weekly Self-reads are not in use.
Weekly Self-reads are in use.

SELF_READ_DEMAND_RESET

0
1
2
3

REGS_RCD

Specifies whether the End Device will perform a


Self-read whenever a Demand reset (by any
method) is performed and whether the End
Device will perform a Demand reset whenever a
self-read (by any method) is performed.
End Device shall not perform either a Self-read
on every Demand reset or a Demand reset on
every Self-read.
End Device shall perform a Self-read on every
Demand reset.
End Device shall perform a Demand reset on
every Self-read.
End Device shall perform a Self-read on every
Demand reset and a Demand reset on every
Self-read.
Redefines: DIM_REGS_TBL.REGS_RCD.

REG_FUNC1_FLAGS

See REG_FUNC1_BFLD.

REG_FUNC2_FLAGS

See REG_FUNC2_BFLD.

NBR_SELF_READS

Number of Self-reads in use.

NBR_SUMMATIONS

DIM_REGS_TBL.

Indicates whether daily self-reads are in use.


These readings are taken at 00:00:00.
Daily Self-reads are not in use.
Daily Self-reads are in use.

WEEKLY_SELF_READ_FLAG

132

End Device reports the time remaining in


Demand interval.

0..255

Number of summation Registers in each data


block.

Decade 2: Register Tables / Table 21 Actual Register Limiting Table

Tables

ANSI C12.19-2008

NBR_DEMANDS

0..255

Number of Demand Registers in each data


block.

NBR_COIN_VALUES

0..255

Number of coincident values saved in each data


block.

NBR_OCCUR

0..255

Number of occurrences stored for a particular


selection.

NBR_TIERS

0..255

Number of tiers in use.

NBR_PRESENT_DEMANDS

0..255

Number of present demand values that are


stored.

NBR_PRESENT_VALUES

0..255

Number of present values that are stored.

Decade 2: Register Tables / Table 21 Actual Register Limiting Table

133

ANSI C12.19-2008

9.3.3

Tables

Table 22 Data Selection Table

Table 22 Data Description


DATA_SELECTION_TBL (Table 22) contains grouped lists of source indices. These indices point
towards Array elements in SOURCES_TBL (Table 16) when Table 22 is present. These lists are used to
build the Table that contains the data to be captured. The groupings are described below.
Global Default Table Property Overrides: Role=CONTROL
Table 22 Type Definitions
TYPE DATA_SELECTION_RCD = PACKED RECORD
SUMMATION_SELECT
: ARRAY[ACT_REGS_TBL.NBR_SUMMATIONS]
OF STD.SOURCE_SELECT_RCD;
DEMAND_SELECT
: ARRAY[ACT_REGS_TBL.NBR_DEMANDS] OF
STD.SOURCE_SELECT_RCD;
MIN_OR_MAX_FLAGS
: SET((ACT_REGS_TBL.NBR_DEMANDS+7)/8);
COINCIDENT_SELECT
: ARRAY[ACT_REGS_TBL.NBR_COIN_VALUES]
OF STD.SOURCE_SELECT_RCD;
COIN_DEMAND_ASSOC
: ARRAY[ACT_REGS_TBL.NBR_COIN_VALUES] OF UINT8;
END;
TABLE 22 DATA_SELECTION_TBL = DATA_SELECTION_RCD;
Table 22 Element Descriptions
Identifier

Value

Definition

DATA_SELECTION_RCD
SUMMATION_SELECT

List of source selectors that groups together


bulk/energy/summation that are associated with
the SUMMATIONS defined in this decade.

DEMAND_SELECT

List of source selectors that groups together


demand sources that are associated with
DEMANDS defined in this decade.
SET of bit flags, each corresponding to an entry
in DEMAND_SELECT.
Indicates
that
the
associated
DEMAND_SELECT entry is a minimum.
Indicates
that
the
associated
DEMAND_SELECT entry is a maximum.

MIN_OR_MAX_FLAGS
FALSE
TRUE

134

COINCIDENT_SELECT

Data source selectors for quantites to be placed


in the COINCIDENTS array of the Current
Register Data Table (Table 23).

COIN_DEMAND_ASSOC

Each entry corresponds to an entry in


COINCIDENT_SELECT and provides an index
into DEMAND_SELECT identifying the Demand
for which this coincident value is taken.

Decade 2: Register Tables / Table 22 Data Selection Table

Tables

9.3.4

ANSI C12.19-2008

Table 23 Current Register Data Table

Table 23 Data Description


CURRENT_REG_DATA_TBL (Table 23) contains the current Register data. Current is with respect to
the previous demand reset, season or Self-read. Table 23 is intended for billing purposes.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 23 Type Definitions
TYPE COINCIDENTS_RCD = PACKED RECORD
COINCIDENT_VALUES
: ARRAY[ACT_REGS_TBL.NBR_OCCUR] OF
NI_FMAT2;
END;
TYPE DEMANDS_RCD = PACKED RECORD
IF ACT_REGS_TBL.DATE_TIME_FIELD_FLAG THEN
EVENT_TIME
: ARRAY[ACT_REGS_TBL.NBR_OCCUR] OF STIME_DATE;
END;
IF ACT_REGS_TBL.CUM_DEMAND_FLAG THEN
CUM_DEMAND
: NI_FMAT1;
END;
IF ACT_REGS_TBL.CONT_CUM_DEMAND_FLAG THEN
CONT_CUM_DEMAND : NI_FMAT1;
END;
DEMAND
: ARRAY[ACT_REGS_TBL.NBR_OCCUR] OF NI_FMAT2;
END;
TYPE DATA_BLK_RCD = PACKED RECORD
SUMMATIONS
: ARRAY[ACT_REGS_TBL.NBR_SUMMATIONS] OF
NI_FMAT1;
DEMANDS
: ARRAY[ACT_REGS_TBL.NBR_DEMANDS] OF
DEMANDS_RCD;
COINCIDENTS
: ARRAY[ACT_REGS_TBL.NBR_COIN_VALUES] OF
COINCIDENTS_RCD;
END;
TYPE REGISTER_DATA_RCD = PACKED RECORD
IF ACT_REGS_TBL.DEMAND_RESET_CTR_FLAG THEN
NBR_DEMAND_RESETS
: UINT8;
END;
TOT_DATA_BLOCK
: DATA_BLK_RCD;
TIER_DATA_BLOCK
: ARRAY[ACT_REGS_TBL.NBR_TIERS] OF
DATA_BLK_RCD;
END;
TABLE 23 CURRENT_REG_DATA_TBL = REGISTER_DATA_RCD;

Decade 2: Register Tables / Table 23 Current Register Data Table

135

ANSI C12.19-2008

Tables

Table 23 Element Descriptions


Identifier

Value

COINCIDENTS_RCD
COINCIDENT_VALUES

Definition
Coincident
values
selected
by
DATA_SELECTION_TBL.COINCIDENT_SELE
CT (Table 22).

DEMANDS_RCD
EVENT_TIME

Array that contains the date and time of each


minimum or maximum recorded.
Entry in
position zero (0) corresponds to the entry in
position zero (0) of the DEMAND Array. The
presence of this field is dependent on capability
flag
in
the
ACT_REG_TBL.DATE_TIME_FIELD_FLAG
(Table 21).

CUM_DEMAND

Value of the Cumulative Demand register.

CONT_CUM_DEMAND

Value of the Continuous Cumulative Demand


register.

DEMAND

Array that contains the minimum or maximum


values. The value in position zero (0) is the
smallest minimum or largest maximum. In
position one (1) is the second smallest minimum
or the second largest maximum and so on until
the end of the Array is reached.

DATA_BLK_RCD
SUMMATIONS

Array that contains the values of the selected


summation measurements.

DEMANDS

Array that contains the values of the selected


min/max Demand measurements.

COINCIDENTS

Array that contains the values of the selected


measurement coincident to the selected
minimum/maximum Demands.

REGISTER_DATA_RCD
NBR_DEMAND_RESETS

136

0..255

Number of Demand resets executed by the End


Device.

TOT_DATA_BLOCK

Data block independent of Time-of-Use


structures or other means of selection.

TIER_DATA_BLOCK

Data block dependent on Time-of-Use


structures or other means of selection.

Decade 2: Register Tables / Table 23 Current Register Data Table

Tables

9.3.5

ANSI C12.19-2008

Table 24 Previous Season Data Table

Table 24 Data Description


PREVIOUS_SEASON_DATA_TBL (Table 24) contains a snapshot of the current Register data taken at
the last season change.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 24 Type Definitions
TYPE REGISTER_INFO_RCD = PACKED RECORD
IF ACT_REGS_TBL.DATE_TIME_FIELD_FLAG THEN
END_DATE_TIME
: STIME_DATE;
END;
IF ACT_REGS_TBL.SEASON_INFO_FIELD_FLAG THEN
SEASON
: UINT8;
END;
END;
TYPE PREVIOUS_SEASON_DATA_RCD = PACKED RECORD
REGISTER_INFO
: REGISTER_INFO_RCD;
PREV_SEASON_REG_DATA : CURRENT_REG_DATA_TBL.REGISTER_DATA_RCD;
END;
TABLE 24 PREVIOUS_SEASON_DATA_TBL = PREVIOUS_SEASON_DATA_RCD;
Table 24 Element Descriptions
Identifier

Value

Definition

REGISTER_INFO_RCD
END_DATE_TIME

End Eevice time when the snapshot of the


current Register data occurred.

SEASON

Current season value when the snapshot of the


current Register data occurred.

PREVIOUS_SEASON_DATA_RCD
REGISTER_INFO

See REGISTER_INFO_RCD.

PREV_SEASON_REG_DATA

Snapshot of the CURRENT_DATA_REG_TBL


(Table 23) stored at the time of the last season
change.
See CURRENT_DATA_REG_TBL
(Table 23).

Decade 2: Register Tables / Table 24 Previous Season Data Table

137

ANSI C12.19-2008

9.3.6

Tables

Table 25 Previous Demand Reset Data Table

Table 25 Data Description


PREVIOUS_DEMAND_RESET_DATA_TBL (Table 25) contains a snapshot of the current Register data
taken at the time of the last Demand reset.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 25 Type Definitions
TYPE PREV_DEMAND_RESET_DATA_RCD = PACKED RECORD
REGISTER_INFO
: PREVIOUS_SEASON_DATA_TBL.REGISTER_INFO_RCD;
PREV_DEMAND_RESET_DATA: CURRENT_REG_DATA_TBL.REGISTER_DATA_RCD;
END;
TABLE 25 PREVIOUS_DEMAND_RESET_DATA_TBL = PREV_DEMAND_RESET_DATA_RCD;
Table 25 Element Descriptions
Value

Identifier

Definition

PREV_DEMAND_RESET_DATA_RCD

138

REGISTER_INFO

Snapshot of Register information included with


previous Demand reset register data.

PREV_DEMAND_RESET_DATA

Snapshot of the CURRENT_DATA_REG_TBL


(Table 23) stored at the time of the last Demand
reset.

Decade 2: Register Tables / Table 25 Previous Demand Reset Data Table

Tables

9.3.7

ANSI C12.19-2008

Table 26 Self-read Data Table

Table 26 Data Description


SELF_READ_DATA_TBL (Table 26) contains Self-read data.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 26 Type Definitions
TYPE SELF_READ_DATA_RCD = PACKED RECORD
IF ACT_REGS_TBL.SELF_READ_SEQ_NBR_FLAG THEN
SELF_READ_SEQ_NBR
: UINT16;
END;
REGISTER_INFO
: PREVIOUS_SEASON_DATA_TBL.REGISTER_INFO_RCD;
SELF_READ_REGISTER_DATA: CURRENT_REG_DATA_TBL.REGISTER_DATA_RCD;
END;
TYPE LIST_STATUS_BFLD = BIT FIELD OF UINT8
ORDER
: UINT(0..0);
OVERFLOW_FLAG
: BOOL(1);
LIST_TYPE
: UINT(2..2);
INHIBIT_OVERFLOW_FLAG : BOOL(3);
FILLER
: FILL(4..7);
END;
TYPE SELF_READ_LIST_RCD = PACKED RECORD
LIST_STATUS
: LIST_STATUS_BFLD;
NBR_VALID_ENTRIES
: UINT8;
LAST_ENTRY_ELEMENT
: UINT8;
LAST_ENTRY_SEQ_NBR
: UINT16;
NBR_UNREAD_ENTRIES
: UINT8;
SELF_READS_ENTRIES
: ARRAY[ACT_REGS_TBL.NBR_SELF_READS] OF
SELF_READ_DATA_RCD;
END;
TABLE 26 SELF_READ_DATA_TBL = SELF_READ_LIST_RCD;
Table 26 Element Descriptions
Identifier

Value

Definition

SELF_READ_DATA_RCD
SELF_READ_SEQ_NBR

0..65535

Sequence number assigned to the Self-read


measurement. This number is set to zero (0)
when the End Device is configured.
This
number is incremented with each Self-read
occurrence.

REGISTER_INFO

Snapshot of Register data taken at the time of


the Self-read.

Decade 2: Register Tables / Table 26 Self-read Data Table

139

ANSI C12.19-2008

Tables

SELF_READ_REGISTER_DATA

Snapshot of current Register data taken when


requested by any means offered by the End
Device.

LIST_STATUS_BFLD
ORDER

Alias: ORDER_FLAG.
Self-reads are transported in ascending order (N
is older than N+1).
Self-reads are transported in descending order
(N is newer than N+1).

0
1
OVERFLOW_FLAG

FALSE
TRUE

LIST_TYPE

Alias: LIST_TYPE_FLAG.
FIFO (First In First Out), as placed in Self-read
list.
Circular list, as placed in Self-read list.

0
1
INHIBIT_OVERFLOW_FLAG

The
same
value
as
ACT_REG_TBL.SELF_READ_INHIBIT_OVER
FLOW (Table 21).

SELF_READ_LIST_RCD
LIST_STATUS

See LIST_STATUS_BFLD above.

NBR_VALID_ENTRIES

0..255

Number of valid Self-reads stored in the Selfreads Array. The range is zero (0), meaning no
self-reads in the Array, to the actual dimension
of the number of Self-reads.

LAST_ENTRY_ELEMENT

0..65535

Array element number of the newest valid entry


in the Self-read Array. This field is valid only if
NBR_VALID_ENTRIES is greater than zero (0).

LAST_ENTRY_SEQ_NBR

0..65535

Sequence number of the last element in the


Self-read array.

NBR_UNREAD_ENTRIES

0..255

Number of Self-read entries that have not been


read. This number shall only be updated by a
procedure.

SELF_READS_ENTRIES

140

Overflow has not occurred.


An attempt was made to enter a Self-read such
that the number of unread Self-reads would
have exceeded the actual number of possible
entries in the log.

Array of snapshots of Register data taken at


prescribed instance in time.

Decade 2: Register Tables / Table 26 Self-read Data Table

Tables

9.3.8

ANSI C12.19-2008

Table 27 Present Register Selection Table

Table 27 Data Description


PRESENT_REGISTER_SELECT_TBL (Table 27) provides selections to sources of present demands
and present values. These indices point towards array elements in SOURCES_TBL (Table 16) when
Table 16 is present. The values selected are available in PRESENT_REGISTER_DATA_TBL (Table
28). Table 27 is used to select sources for Table 28, which is continually updated.
Global Default Table Property Overrides: Role=CONTROL
Table 27 Type Definitions
TYPE PRESENT_REGISTER_SELECT_RCD = PACKED RECORD
PRESENT_DEMAND_SELECT : ARRAY[ACT_REGS_TBL.NBR_PRESENT_DEMANDS] OF
STD.SOURCE_SELECT_RCD;
PRESENT_VALUE_SELECT : ARRAY[ACT_REGS_TBL.NBR_PRESENT_VALUES] OF
STD.SOURCE_SELECT_RCD;
END;
TABLE 27 PRESENT_REGISTER_SELECT_TBL = PRESENT_REGISTER_SELECT_RCD;
Table 27 Element Descriptions
Identifier

Value

Definition

PRESENT_REGISTER_SELECT_RCD
PRESENT_DEMAND_SELECT

Array that contains data source selectors for


quantities used to measure present demand.
The present demand values shall be reported at
the
same
index
position
in
PRESENT_REGISTER_DATA_TBL.
PRESENT_DEMAND (Table 28).

PRESENT_VALUE_SELECT

Array that contains data source selectors for


quantities used to measure present value. The
present values shall be reported at the same
index
position
in
PRESENT_REGISTER_DATA_TBL.PRESENT
_VALUES (Table 28).

Decade 2: Register Tables / Table 27 Present Register Selection Table

141

ANSI C12.19-2008

9.3.9

Tables

Table 28 Present Register Data Table

Table 28 Data Description


PRESENT_REGISTER_DATA_TBL (Table 28) contains the present demand and values as selected by
the PRESENT_REGISTER_SELECT_TBL (Table 27). Table 28 is continually updated.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 28 Type Definitions
TYPE PRESENT_DEMAND_RCD = PACKED RECORD
IF ACT_REGS_TBL.TIME_REMAINING_FLAG THEN
TIME_REMAINING
: TIME;
END;
DEMAND_VALUE
: NI_FMAT2;
END;
TYPE PRESENT_REGISTER_DATA_RCD = PACKED RECORD
PRESENT_DEMAND : ARRAY[ACT_REGS_TBL.NBR_PRESENT_DEMANDS] OF
PRESENT_DEMAND_RCD;
PRESENT_VALUE
: ARRAY[ACT_REGS_TBL.NBR_PRESENT_VALUES] OF NI_FMAT1;
END;
TABLE 28 PRESENT_REGISTER_DATA_TBL = PRESENT_REGISTER_DATA_RCD;
Table 28 Element Descriptions
Identifier

Value

Definition

PRESENT_DEMAND_RCD
TIME_REMAINING

Time remaining to the end of the present


demand interval.

DEMAND_VALUE

Present demand value.

PRESENT_REGISTER_DATA_RCD

142

PRESENT_DEMAND

Array that contains present demand selected by


PRESENT_REGISTER_SELECT_TBL.
PRESENT_DEMAND_SELECT (Table 27).

PRESENT_VALUE

Array that contains present value selected by


PRESENT_REGISTER_SELECT_TBL.
PRESENT_VALUE_SELECT (Table 27).

Decade 2: Register Tables / Table 28 Present Register Data Table

Tables

ANSI C12.19-2008

9.4 Decade 3: Local Display Tables


Decade 3 Name
LOCAL_DISPLAY_DEC
This decade contains tables associated with the transport of information required to establish a local
display.
9.4.1

Table 30 Display Dimension Limits Table

Table 30 Data Description


DIM_DISP_TBL (Table 30) specifies the maximum dimensional values for local display operation in an
End Device. The constants defined are used for setting the absolute maximum limits of display array
sizes.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 30 Type Definitions
TYPE DISP_FLAG_BFLD = BIT FIELD OF UINT8
ON_TIME_FLAG
: BOOL(0);
OFF_TIME_FLAG
: BOOL(1);
HOLD_TIME_FLAG
: BOOL(2);
FILLER
: FILL(3..7);
END;
TYPE DISP_RCD = PACKED RECORD
DISPLAY_CTRL
NBR_DISP_SOURCES
WIDTH_DISP_SOURCES
NBR_PRI_DISP_LIST_ITEMS
NBR_PRI_DISP_LISTS
NBR_SEC_DISP_LIST_ITEMS
NBR_SEC_DISP_LISTS
END;

: DISP_FLAG_BFLD;
: UINT16;
: UINT8;
: UINT16;
: UINT8;
: UINT16;
: UINT8;

TABLE 30 DIM_DISP_TBL = DISP_RCD;


Table 30 Element Descriptions
Identifier

Value

Definition

DISP_FLAG_BFLD
ON_TIME_FLAG

FALSE

Programmable on time is not supported by the


End Device.
Programmable on time is supported by the End
Device.

TRUE
OFF_TIME_FLAG

FALSE
TRUE

Programmable off time is not supported by the


End Device.
Programmable off time is supported by the End
Device.

Decade 3: Local Display Tables / Table 30 Display Dimension Limits Table

143

ANSI C12.19-2008

Tables

HOLD_TIME_FLAG

FALSE
TRUE

DISP_RCD
DISPLAY_CTRL

Programmable hold time is not supported by the


End Device.
Programmable hold time is supported by the
End Device.
See DISP_FLAG_BFLD above.

NBR_DISP_SOURCES

0..65535

Maximum number of display sources. A number


representing
the
maximum
number
of
manufacturer-defined
display
sources,
described in DISP_SOURCE_TBL (Table 32),
and which may be used for the creation of
display lists.

WIDTH_DISP_SOURCES

0..255

Maximum number of octets a manufacturer may


use to define the row width of all entries in
DISP_SOURCE_TBL (Table 32).

0..65535

Maximum number of primary display items per


display list defined in PRI_DISP_LIST_TBL
(Table 33). The maximum number of items in all
primary display lists shall not exceed this value.

0..255

Maximum number of primary display lists


defined in PRI_DISP_LIST_TBL (Table 33).

0..65535

Maximum number of secondary display items


per display list defined in SEC_DISP_LIST_TBL
(Table 34). The maximum number of items in all
secondary display lists shall not exceed this
value.

0..255

Maximum number of secondary display lists


defined in SEC_DISP_LIST_TBL (Table 34).

NBR_PRI_DISP_LIST_ITEMS

NBR_PRI_DISP_LISTS
NBR_SEC_DISP_LIST_ITEMS

NBR_SEC_DISP_LISTS

144

Decade 3: Local Display Tables / Table 30 Display Dimension Limits Table

Tables

9.4.2

ANSI C12.19-2008

Table 31 Actual Display Limiting Table

Table 31 Data Description


ACT_DISP_TBL (Table 31) specifies the actual dimensional values for local display operation in an End
Device. The dimensions defined are used for setting the actual limits of display array sizes.
Global Default Table Property Overrides: Role=ACTUAL
Table 31 Type Definitions
TABLE 31 ACT_DISP_TBL = DISP_RCD;
Table 31 Element Descriptions
Value

Definition

ON_TIME_FLAG

FALSE
TRUE

Redefines:
DIM_DISP_TBL.
DISP_FLAG_BFLD.
On time is not programmable in the End Device.
On time is programmable in the End Device.

OFF_TIME_FLAG

FALSE
TRUE

Off time is not programmable in the End Device.


Off time is programmable in the End Device.

HOLD_TIME_FLAG

FALSE

Hold time is not programmable in the End


Device.
Hold time is programmable in the End Device.

Identifier
DISP_FLAG_BFLD

TRUE
DISP_RCD
DISPLAY_CTRL

Redefines: DIM_DISP_TBL. DISP_RCD.


See DISP_FLAG_BFLD above.

NBR_DISP_SOURCES

0..65535

Actual number of display sources. A number


representing the actual number of manufacturerdefined
display
sources,
described
in
DISP_SOURCE_TBL (Table 32), and which
should be used for the creation of display lists.

WIDTH_DISP_SOURCES

0..255

Actual number of octets a manufacturer uses to


define the row width of all entries in
DISP_SOURCE_TBL (Table 32).

0..65535

Actual number of primary display items per


display list defined in PRI_DISP_LIST_TBL
(Table 33). The total number of items in all
primary display lists shall not exceed this value.

0..255

Actual number of primary display lists defined in


PRI_DISP_LIST_TBL (Table 33).

0..65535

Actual number of secondary display items per


display list defined in SEC_DISP_LIST_TBL

NBR_PRI_DISP_LIST_ITEMS

NBR_PRI_DISP_LISTS
NBR_SEC_DISP_LIST_ITEMS

Decade 3: Local Display Tables / Table 31 Actual Display Limiting Table

145

ANSI C12.19-2008

Tables
(Table 34). The total number of items in all
secondary display lists shall not exceed this
value.

NBR_SEC_DISP_LISTS

146

0..255

Actual number of secondary display lists defined


in SEC_DISP_LIST_TBL (Table 34).

Decade 3: Local Display Tables / Table 31 Actual Display Limiting Table

Tables

9.4.3

ANSI C12.19-2008

Table 32 Display Source Table

Table 32 Data Description


DISP_SOURCE_TBL (Table 32) manufacturer-defined display identifications and format characteristics.
Although
manufacturer
specific,
this
tables
designation
and
dimensions
(ACT_DISP_TBL.WIDTH_DISP_SOURCES by ACT_DISP_TBL.NBR_DISP_SOURCES) (Table 31),
permit the protocol to deposit local display description information. The actual interpretation of each
display entry is not defined by this standard. The entry offsets to individual items in this table are used in
display scroll sequences entered in tables PRI_DISP_LIST_TBL (Table 33) and SEC_DISP_LIST_TBL
(Table 34).
Global Default Table Property Overrides: Role=CONTROL
Table 32 Type Definitions
TYPE DISP_SOURCE_DESC_RCD = PACKED RECORD
DISPLAY_SOURCE
: BINARY(ACT_DISP_TBL.WIDTH_DISP_SOURCES);
END;
TYPE DISPLAY_SOURCE_RCD = PACKED RECORD
DISPLAY_SOURCES : ARRAY[ACT_DISP_TBL.NBR_DISP_SOURCES] OF
DISP_SOURCE_DESC_RCD;
END;
TABLE 32 DISP_SOURCE_TBL = DISPLAY_SOURCE_RCD;
Table 32 Element Descriptions
Identifier
DISP_SOURCE_DESC_RCD
DISPLAY_SOURCE
DISPLAY_SOURCE_RCD
DISPLAY_SOURCES

Value

Definition
Manufacturer-defined display description entry.
Contains the manufacturer-defined
description entries.
Manufacturer-defined
entries.

display

display

description

These
entries
make
up
the
DISP_SOURCE_TBL (Table 32). Indices to
these entries (starting with 0) are used in
subsequent display scrolling sequences.

Decade 3: Local Display Tables / Table 32 Display Source Table

147

ANSI C12.19-2008

9.4.4

Tables

Table 33 Primary Display List Table

Table 33 Data Description


PRI_DISP_LIST_TBL (Table 33) contains a list of operational parameters and references into the table,
DISP_SOURCE_TBL, (Table 32) necessary for programming the primary display lists, timing, and scroll
sequences.
Global Default Table Property Overrides: Role=CONTROL
Table 33 Type Definitions
TYPE DISP_SCROLL1_BFLD = BIT FIELD OF UINT8
ON_TIME
: UINT(0..3);
OFF_TIME
: UINT(4..7);
END;
TYPE DISP_SCROLL2_BFLD = BIT FIELD OF UINT8
HOLD_TIME
: UINT(0..3);
DEFAULT_LIST
: UINT(4..7);
END;
TYPE DISP_LIST_DESC_RCD = PACKED RECORD
DISP_SCROLL1
: DISP_SCROLL1_BFLD;
DISP_SCROLL2
: DISP_SCROLL2_BFLD;
NBR_LIST_ITEMS
: UINT8;
END;
TYPE PRI_DISP_LIST_RCD = PACKED RECORD
PRI_DISP_LIST
: ARRAY[ACT_DISP_TBL.NBR_PRI_DISP_LISTS] OF
DISP_LIST_DESC_RCD;
PRI_DISP_SOURCES : ARRAY[ACT_DISP_TBL.NBR_PRI_DISP_LIST_ITEMS] OF
UINT16;
END;
TABLE 33 PRI_DISP_LIST_TBL = PRI_DISP_LIST_RCD;
Table 33 Element Descriptions
Identifier

Value

Definition

DISP_SCROLL1_BFLD
ON_TIME

0..15

The number of seconds each display item is


displayed.

0..15

The number of seconds display is blank


between display items. 0 = No deliberate OFF
Time.

0..15

The number of minutes to wait before


automatically restarting the normal display scroll
after hold has been initiated.

OFF_TIME
DISP_SCROLL2_BFLD
HOLD_TIME

148

Decade 3: Local Display Tables / Table 33 Primary Display List Table

Tables

ANSI C12.19-2008

DEFAULT_LIST

Associates this display list with a standard


display list type. The "normal" display list
scrolling resumes after HOLD_TIME has
expired. The following values are recognized:
0
1
2
3
4..15

DISP_LIST_DESC_RCD
DISP_SCROLL1

This contains the ON_TIME and OFF_TIME


values for the associated list.

DISP_SCROLL2
NBR_LIST_ITEMS

PRI_DISP_LIST_RCD
PRI_DISP_LIST
PRI_DISP_SOURCES

Display selectable via communication link only.


Normal display.
Alternate Display.
Test Display.
Reserved.

This
contains
the
HOLD_TIME
and
DEFAULT_LIST values for the associated list.
0..255

Number of items in this display list. The total


number of items (list entries) in all display lists of
this
table
shall
not
exceed
ACT_DISP_TBL.NBR_PRI_DISP_LIST_ITEM
(Table 31).
An array of list descriptor records.
Ordered list of references to display items
contained in DISP_SOURCE_TBL (Table 32).
This list establishes the order of the primary
display.
This standard does not preclude additional items
from popping up or being displayed out of
sequence as a result of an End Device error
condition or an End Device status report being
generated.

Decade 3: Local Display Tables / Table 33 Primary Display List Table

149

ANSI C12.19-2008

9.4.5

Tables

Table 34 Secondary Display List Table

Table 34 Data Description


SEC_DISP_LIST_TBL (Table 34) contains a list of operational parameters and references into the table,
DISP_SOURCE_TBL, (Table 32) necessary for programming the secondary display lists, timing, and
scroll sequences.
Global Default Table Property Overrides: Role=CONTROL
Table 34 Type Definitions
TYPE SEC_DISP_LIST_RCD = PACKED RECORD
SEC_DISP_LIST
: ARRAY[ACT_DISP_TBL.NBR_SEC_DISP_LISTS] OF
DISP_LIST_DESC_RCD;
SEC_DISP_SOURCES : ARRAY[ACT_DISP_TBL.NBR_SEC_DISP_LIST_ITEMS] OF
UINT16;
END;
TABLE 34 SEC_DISP_LIST_TBL = SEC_DISP_LIST_RCD;
Table 34 Element Descriptions
Identifier

Value

DISP_SCROLL1_BFLD
ON_TIME

0..15

OFF_TIME

0..15

DISP_SCROLL2_BFLD
HOLD_TIME

0..15

DEFAULT_LIST

150

Redfines:
PRI_DISP_LIST_TBL.DISP_SCROLL1_BFLD.
The number of seconds each display item is
displayed.
The number of seconds display is blank
between display items. 0 = No deliberate OFF
Time.
Redfines:
PRI_DISP_LIST_TBL.DISP_SCROLL2_BFLD.
The number of minutes to wait before
automatically restarting the normal display scroll
after hold has been initiated.
Associates this display list with a standard
display list type. The "normal" display list
scrolling resumes after HOLD_TIME has
expired. The following values are recognized:

0
1
2
3
4..15
DISP_LIST_DESC_RCD

Definition

Display selectable via communication link only.


Normal display.
Alternate Display.
Test Display.
Reserved.
Redfines:
PRI_DISP_LIST_TBL.DISP_LIST_DESC_RCD.

Decade 3: Local Display Tables / Table 34 Secondary Display List Table

Tables

ANSI C12.19-2008

DISP_SCROLL1

This contains the ON_TIME and OFF_TIME


values for the associated list.

DISP_SCROLL2

This
contains
the
HOLD_TIME
and
DEFAULT_LIST values for the associated list.

NBR_LIST_ITEMS

SEC_DISP_LIST_RCD
SEC_DISP_LIST
SEC_DISP_SOURCES

0..255

Number of items in this display list. The total


number of items (list entries) in all display lists of
this
table
shall
not
exceed
ACT_DISP_TBL.NBR_PRI_DISP_LIST_ITEM
(Table 31).
An array of list descriptor records.
Ordered list of references to display items
contained in DISP_SOURCE_TBL (Table 32).
This list establishes the order of the secondary
display.
This standard does not preclude additional items
from popping up or being displayed out of
sequence as a result of an End Device error
condition or an End Device status report being
generated.

Decade 3: Local Display Tables / Table 34 Secondary Display List Table

151

ANSI C12.19-2008

Tables

9.5 Decade 4: Security Tables


Decade 4 Name
SECURITY_DEC
The security tables provide holding areas for the placement of End Device passwords and
Encryption/Authentication keys used to establish group access permissions. Access permissions are
used to limit table read or write access and procedure execute permissions to groups of users based on
the interpretation of the password and encryption/authentication fields. The exact means for granting
access are not defined by this standard.
9.5.1

Table 40 Security Dimension Limits Table

Table 40 Data Description


DIM_SECURITY_LIMITING_TBL (Table 40) defines the maximum number of passwords and security
access level entries supported by the End Device.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 40 Type Definitions
TYPE SECURITY_RCD = PACKED RECORD
NBR_PASSWORDS
: UINT8;
PASSWORD_LEN
: UINT8;
NBR_KEYS
: UINT8;
KEY_LEN
: UINT8;
NBR_PERM_USED
: UINT16;
END;
TABLE 40 DIM_SECURITY_LIMITING_TBL = SECURITY_RCD;
Table 40 Element Descriptions
Identifier

Value

Definition

SECURITY_RCD
NBR_PASSWORDS

Access levels cannot be established using the


Standard password mechanism.
Maximum number of passwords this End Device
is capable of supporting.

1..255
PASSWORD_LEN

0
1..20
21..255

152

Reserved.
Maximum length of passwords in octets this End
Device is capable of supporting.
Reserved.

NBR_KEYS

0..255

Maximum
number
of
keys
for
authentication/encryption this End Device is
capable of supporting.

KEY_LEN

0..255

Maximum length of keys in octets this End


Device is capable of supporting.

Decade 4: Security Tables / Table 40 Security Dimension Limits Table

Tables

ANSI C12.19-2008

NBR_PERM_USED

0..65535

Maximum number of user-defined security


access entries this End Device supports in
addition to those defined through default access
permissions.

Decade 4: Security Tables / Table 40 Security Dimension Limits Table

153

ANSI C12.19-2008

9.5.2

Tables

Table 41 Actual Security Limiting Table

Table 41 Data Description


ACT_SECURITY_LIMITING_TBL (Table 41) defines the actual number of passwords and security
access level entries supported by the End Device.
Global Default Table Property Overrides: Role=ACTUAL
Table 41 Type Definitions
TABLE 41 ACT_SECURITY_LIMITING_TBL = SECURITY_RCD;
Table 41 Element Descriptions
Identifier

Value

SECURITY_RCD
NBR_PASSWORDS

0
1..255

PASSWORD_LEN

0
1..20
21..255

154

Definition
Redefines: DIM_SECURITY_LIMITING_TBL.
SECURITY_RCD.
Actual access levels are not established through
the Standard password mechanism.
Actual number of passwords used by this End
Device.
Reserved.
Actual length of passwords in octets this End
Device is supporting.
Reserved.

NBR_KEYS

0..255

Actual number of keys this End Device is


supporting.

KEY_LEN

0..255

Actual length of keys in octets this End Device is


supporting.

NBR_PERM_USED

0..65535

Actual number of user-defined security access


entries this End Device supports in addition to
those
defined
through
default
access
permissions.

Decade 4: Security Tables / Table 41 Actual Security Limiting Table

Tables

9.5.3

ANSI C12.19-2008

Table 42 Security Table

Table 42 Data Description


SECURITY_TBL (Table 42) stores actual End Device passwords. It is used to associate passwords with
read, write and procedure execute access permission bits.
Any table or procedure whose access control bits match with respect to position at least one of the group
access permissions bits, as defined in SECURITY_TBL (Table 42) for the supplied password, can
become a candidate for data transfers.
Notes:
1. Although it may be possible to read the security table, the values reported (read back) are not defined
by this standard.
2. When access permissions are given to a procedure that accesses or modifies table data, then the
invoker of that procedure shall in addition be required to have read or write access to the table that is
read or modified.
3. When access permissions are given to a User-defined table, which accesses or modifies other
tables, then the invoker of that User-defined table shall in addition be required to have read or write
access to the tables indirectly read or written.
Global Default Table Property Overrides: Role=CONTROL, Accessibility=WRITEONLY
Table 42 Type Definitions
TYPE ACCESS_PERMISSION_BFLD = BIT FIELD OF UINT8
GROUP_PERM_0_FLAG
: BOOL(0);
GROUP_PERM_1_FLAG
: BOOL(1);
GROUP_PERM_2_FLAG
: BOOL(2);
GROUP_PERM_3_FLAG
: BOOL(3);
GROUP_PERM_4_FLAG
: BOOL(4);
GROUP_PERM_5_FLAG
: BOOL(5);
GROUP_PERM_6_FLAG
: BOOL(6);
GROUP_PERM_7_FLAG
: BOOL(7);
END;
TYPE SECURITY_ENTRY_RCD = PACKED RECORD
PASSWORD : BINARY(ACT_SECURITY_LIMITING_TBL.PASSWORD_LEN);
ACCESS_PERMISSIONS
: ACCESS_PERMISSION_BFLD;
END;
TYPE SECURITY_RCD = PACKED RECORD
SECURITY_ENTRIES : ARRAY[ACT_SECURITY_LIMITING_TBL.NBR_PASSWORDS] OF
SECURITY_ENTRY_RCD;
END;
TABLE 42 SECURITY_TBL = SECURITY_RCD;
Table 42 Element Descriptions
Identifier

Value

Decade 4: Security Tables / Table 42 Security Table

Definition

155

ANSI C12.19-2008

ACCESS_PERMISSIONS_BFLD
GROUP_PERM_0_FLAG

Tables

FALSE
TRUE

GROUP_PERM_1_FLAG

FALSE
TRUE

GROUP_PERM_2_FLAG

FALSE
TRUE

GROUP_PERM_3_FLAG

FALSE
TRUE

GROUP_PERM_4_FLAG

FALSE
TRUE

GROUP_PERM_5_FLAG

FALSE
TRUE

GROUP_PERM_6_FLAG

FALSE
TRUE

GROUP_PERM_7_FLAG

FALSE
TRUE

SECURITY_ENTRY_RCD
PASSWORD
ACCESS_PERMISSIONS
SECURITY_RCD
SECURITY_ENTRIES

156

Group 0 privileges are not granted by this


password.
Group 0 privileges are granted by this password.
Group 1 privileges are not granted by this
password.
Group 1 privileges are granted by this password.
Group 2 privileges are not granted by this
password.
Group 2 privileges are granted by this password.
Group 3 privileges are not granted by this
password.
Group 3 privileges are granted by this password.
Group 4 privileges are not granted by this
password.
Group 4 privileges are granted by this password.
Group 5 privileges are not granted by this
password.
Group 5 privileges are granted by this password.
Group 6 privileges are not granted by this
password.
Group 6 privileges are granted by this password.
Group 7 privileges are not granted by this
password.
Group 7 privileges are granted by this password.
Password to be matched and be associated with
group access permission bits.
Group access
password.

permissions

bits

for

this

Array containing a list of security limiting


parameters.

Decade 4: Security Tables / Table 42 Security Table

Tables

9.5.4

ANSI C12.19-2008

Table 43 Default Access Control Table

Table 43 Data Description


DEFAULT_ACCESS_CONTROL_TBL (Table 43) is used to establish default table and procedure
access permissions. These permissions are applied to any table that is not included in the
ACCESS_CONTROL_TABLE (Table 44).
Global Default Table Property Overrides: Role=CONTROL
Table 43 Type Definitions
TYPE DEFAULT_ACCESS_TABLE_DEF_BFLD = BIT FIELD OF UINT16
RESERVED
: FILL(0..12);
ANY_READ_FLAG
: BOOL(13);
ANY_WRITE_FLAG
: BOOL(14);
FILL2
: FILL(15..15);
END;
TYPE DEFAULT_ACCESS_CONTROL_RCD = PACKED RECORD
ACCESS_TABLE_DEFAULT : DEFAULT_ACCESS_TABLE_DEF_BFLD;
READ
: SECURITY_TBL.ACCESS_PERMISSION_BFLD;
WRITE
: SECURITY_TBL.ACCESS_PERMISSION_BFLD;
END;
TYPE DEFAULT_ACCESS_RCD = PACKED RECORD
TABLE_DEFAULT
: DEFAULT_ACCESS_CONTROL_RCD;
PROCEDURE_DEFAULT
: DEFAULT_ACCESS_CONTROL_RCD;
END;
TABLE 43 DEFAULT_ACCESS_CONTROL_TBL = DEFAULT_ACCESS_RCD;
Table 43 Element Descriptions
Identifier

Value

DEFAULT_ACCESS_TABLE_DEF_BFLD
RESERVED
ANY_READ_FLAG

FALSE
TRUE

ANY_WRITE_FLAG

FALSE
TRUE

DEFAULT_ACCESS_CONTROL_ENTRY_RCD
ACCESS_TABLE_DEF

Definition
Reserved.
Any unrecognized user does not have read
access permission to any tables.
Any unrecognized user has read access
permission to any table not defined in
ACCESS_CONTROL_TBL (Table 44).
Any unrecognized user does not have write
access permission to any tables.
Any unrecognized user has write access
permission to any table not defined in
ACCESS_CONTROL_TBL (Table 44).
Read and write access permissions
unrecognized users as defined above.

Decade 4: Security Tables / Table 43 Default Access Control Table

for

157

ANSI C12.19-2008

READ

Group security access permission bits for users


that have been recognized and request read
access to tables that are not listed in the
ACCESS_CONTROL_TBL (Table 44).

WRITE

Group security access permission bits for users


that have been recognized and request write
access to tables that are not listed in the
ACCESS_CONTROL_TBL (Table 44).

DEFAULT_ACCESS_RCD
TABLE_DEFAULT
PROCEDURE_DEFAULT

158

Tables

Default access control for all tables, except the


PROC_INITIATE_TBL (Table 07).
Default access control for all procedures using
PROC_INITIATE_TBL (Table 07).

Decade 4: Security Tables / Table 43 Default Access Control Table

Tables

9.5.5

ANSI C12.19-2008

Table 44 Access Control Table

Table 44 Data Description


ACCESS_CONTROL_TBL (Table 44) establishes table and procedure access permissions on a tableby-table and a procedure-by-procedure basis for those not using the default access level.
Global Default Table Property Overrides: Role=CONTROL
Table 44 Type Definitions
TYPE ACCESS_CONTROL_ENTRY_RCD = PACKED RECORD
ACCESS_TABLE_DEF
: TABLE_IDC_BFLD;
READ
: SECURITY_TBL.ACCESS_PERMISSION_BFLD;
WRITE
: SECURITY_TBL.ACCESS_PERMISSION_BFLD;
END;
TYPE ACCESS_CONTROL_RCD = PACKED RECORD
ACCESS_CONTROL : ARRAY[ACT_SECURITY_LIMITING_TBL.NBR_PERM_USED] OF
ACCESS_CONTROL_ENTRY_RCD;
END;
TABLE 44 ACCESS_CONTROL_TBL = ACCESS_CONTROL_RCD;
Table 44 Element Descriptions
Identifier

Value

Definition

TABLE_IDC_BFLD
TBL_PROC_NBR

0..2039

Redefines: STD.TABLE_IDC_BFLD.
Table or procedure number associated with this
access permission entry.

FALSE
TRUE

Alias: STD_VS_MFG_FLAG.
Entry is a Standard table or Standard procedure.
Entry is a manufacturer table or manufacturer
procedure.

FALSE
TRUE

Numeric ID is a table number.


Numeric ID is a procedure number.

MFG_FLAG

PROC_FLAG

UNRESTRICTED_READ_FLAG
FALSE

TRUE

UNRESTRICTED_WRITE_FLAG
FALSE

Alias: FLAG1.
Associated table or procedure requires read
access control bits. Only approved group
members may access the associated table or
procedure.
Associated table or procedure has unrestricted
read access. Any user may read the associated
table or procedure.
Alias: FLAG2.
Associated table or procedure requires write
access control bits. Only approved group
members may write to the associated table or
execute the associated procedure.

Decade 4: Security Tables / Table 44 Access Control Table

159

ANSI C12.19-2008

Tables
TRUE

FLAG3
ACCESS_CONTROL_ENTRY_RCD
ACCESS_TABLE_DEF

Reserved.
Table identification and public access control.

READ

Group read access control bits. See


SECURITY_TBL.
ACCESS_PERMISSION_BFLD (Table 42).

WRITE

Group write access control bits. See


SECURITY_TBL.
ACCESS_PERMISSION_BFLD (Table 42).

ACCESS_CONTROL_RCD
ACCESS_CONTROL

160

Associated table or procedure has unrestricted


write or execute permission. Any user may write
into the associated table or execute the
associated procedure.

Array containing access permission for specific


table or procedure.

Decade 4: Security Tables / Table 44 Access Control Table

Tables

9.5.6

ANSI C12.19-2008

Table 45 Key Table

Table 45 Data Description


KEY_TBL (Table 45) is a table established to contain authentication and/or encryption keys.
Note: Although it may be possible to read the KEY_TBL (Table 45), the values reported (read back) are
not defined by this standard.
Global Default Table Property Overrides: Role=CONTROL, Accessibility=WRITEONLY
Table 45 Type Definitions
TYPE KEY_ENTRY_RCD = PACKED RECORD
KEY
: BINARY(ACT_SECURITY_LIMITING_TBL.KEY_LEN);
END;
TYPE KEY_RCD = PACKED RECORD
KEY_ENTRIES
: ARRAY[ACT_SECURITY_LIMITING_TBL.NBR_KEYS] OF
KEY_ENTRY_RCD;
END;
TABLE 45 KEY_TBL = KEY_RCD;
Table 45 Element Descriptions
Identifier

Value

KEY_ENTRY_RCD
KEY

KEY_RCD
KEY_ENTRIES

Decade 4: Security Tables / Table 45 Key Table

Definition
A key to be applied in the authentication and/or
encryption processes. the use of the key is not
defined by this standard.
An array of keys used to establish authentication
and/or encryption.

161

ANSI C12.19-2008

9.5.7

Table 46 Reserved

9.5.8

Table 47 Reserved

162

Tables

Decade 4: Security Tables / Table 46 Reserved

Tables

ANSI C12.19-2008

9.6 Decade 5: Time-of-Use Tables


Decade 5 Name
TIME_OF_USE_DEC
The tables in this decade provide information related to the End Device date and time as well as the
Time-of-use (TOU) scheduler and event trigger operations. The rules governing the transport of date,
time and time stamp Elements within this Decade and their influence on the transport of Elements from
other Decades are defined below.
Date-time Elements representation during transport (HTIME_DATE, LTIME_DATE and
STIME_DATE)
When the End Device is programmed to transport time related information according to representation
indicated by GEN_CONFIG_TBL.TM_FORMAT then HTIME_DATE, LTIME_DATE and STIME_DATE
Elements can be represented as:
End Device operational time: Date and time the End Device has been set to operate. This time is
used by the End Device for doing its normal operations such as:
o Scheduling
o Display
o Triggers such as call back, load control,
Standard time: date and time at the location where the End Device has been set to operate;
without daylight saving time adjustment.
UTC time: Universal Time Coordinated, international time standard also known as Greenwich
Mean Time (GMT).
In general terms:
Standard time = UTC time + Time zone offset.
End Device operational time = Standard time + Daylight Saving Time offset.
Knowledge about the representation used by an End Device is found in the Clock Table (Table 52), Clock
State Table (Table 55) or Precision Clock State Table (Table 57), Elements DST_APPLIED_FLAG and
TM_ZN_APPLIED_FLAG. When these Tables are present, all common Elements shall be identical in
value. At least one of these Tables shall be present when a End Device supports time (as indicated by
the Final Element GEN_CONFIG_TBL.TM_FORMAT). The relation between the time representation and
the DST_APPLIED_FLAG and TM_ZN_APPLIED_FLAG Final Elements is as follows:
Transported Time stamp
End Device operational time
Standard time
UTC time

TM_ZN_APPLIED_FLAG
True
True
False

DST_APPLIED_FLAG
True
False
False

When implemented using TM_FORMAT=3 or TM_FORMAT=4, HTIME_DATE, LTIME_DATE and


STIME_DATE Elements shall be transported in UTC, being the number of minutes (or seconds as per
selected data type) since 01/01/1970 @ 00:00:00 UTC. This implies that when these implementations are
used, DST_APPLIED_FLAG and TM_ZN_APPLIED_FLAG shall be set to FALSE; also
ACT_TIME_TOU_TBL.CAP_TM_ZN_OFFSET_FLAG shall be set to TRUE. For a code example on how
date and time Elements can be converted to a Gregorian calendar date, see ANNEX H, Date-time
Element Conversion Algorithm (TM_FORMAT=3 and TM_FORMAT=4).
In all cases, and subject to the above conditions, the following algorithms can be used to convert
transported date and time Elements to an End Device operational time or to UTC. The Elements
DST_APPLIED_FLAG and TM_ZN_APPLIED_FLAG shall be retrieved from Clock Table (Table 52),

Decade 5: Time-of-Use Tables

163

ANSI C12.19-2008

Tables

Clock State Table (Table 55) or Precision Clock State Table (Table 57). In the following algorithms, it is
assumed that Clock Table (Table 52) is being used.
Algorithm for converting from transported End Device time to End Device operational time
dateTimeField = HTIME_DATE, LTIME_DATE or STIME_DATE Element of interest
if (CLOCK_TBL.TM_ZN_APPLIED_FLAG == false)
dateTimeField = dateTimeField + TIME_OFFSET_TBL.TIME_ZONE_OFFSET
if (dateTimeField within a Daylight Saving Time period and CLOCK_TBL.DST_APPLIED_FLAG == false)
dateTimeField = dateTimeField + TIME_OFFSET_TBL.DST_TIME_AMT
dateTimeField is the End Device operational time.
Algorithm for converting from transported End Device time to UTC
The following is only applicable when GMT_FLAG = TRUE in Clock table (Table 52).
dateTimeField = HTIME_DATE, LTIME_DATE or STIME_DATE Element of interest
if (CLOCK_TBL.TM_ZN_APPLIED_FLAG == true)
dateTimeField = dateTimeField - TIME_OFFSET_TBL.TIME_ZONE_OFFSET
if (dateTimeField within a Daylight Saving Time period and CLOCK_TBL.DST_APPLIED_FLAG == true)
dateTimeField = dateTimeField - TIME_OFFSET_TBL.DST_TIME_AMT
dateTimeField is in UTC
Date-only and Time-only Element Representation for Transport
RDATE, DATE, TIME, STIME and HTIME Elements within Tables shall always be transported in End
Device operational time.

164

Decade 5: Time-of-Use Tables

Tables

9.6.1

ANSI C12.19-2008

Table 50 Time and TOU Dimension Limits Table

Table 50 Data Description


DIM_TIME_TOU_TBL (Table 50) defines the maximum capabilities for Date and Time clock control and
Time of Use (TOU) control for the End Device.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 50 Type Definitions
TYPE TIME_FUNC_FLAG1_BFLD = BIT FIELD OF UINT8
TOU_SELF_READ_FLAG
: BOOL(0);
SEASON_SELF_READ_FLAG
: BOOL(1);
SEASON_DEMAND_RESET_FLAG
: BOOL(2);
SEASON_CHNG_ARMED_FLAG
: BOOL(3);
SORT_DATES_FLAG
: BOOL(4);
ANCHOR_DATE_FLAG
: BOOL(5);
FILLER
: FILL(6..7);
END;
TYPE TIME_FUNC_FLAG2_BFLD = BIT FIELD OF UINT8
CAP_DST_AUTO_FLAG
: BOOL(0);
SEPARATE_WEEKDAYS_FLAG
: BOOL(1);
SEPARATE_SUM_DEMANDS_FLAG : BOOL(2);
SORT_TIER_SWITCHES_FLAG
: BOOL(3);
CAP_TM_ZN_OFFSET_FLAG
: BOOL(4);
FILLER
: FILL(5..7);
END;
TYPE CALENDAR_BFLD = BIT FIELD OF UINT8
NBR_SEASONS
: UINT(0..3);
NBR_SPECIAL_SCHED
: UINT(4..7);
END;
TYPE TIME_TOU_RCD = PACKED RECORD
TIME_FUNC_FLAG1
: TIME_FUNC_FLAG1_BFLD;
TIME_FUNC_FLAG2
: TIME_FUNC_FLAG2_BFLD;
CALENDAR_FUNC
: CALENDAR_BFLD;
NBR_NON_RECURR_DATES : UINT8;
NBR_RECURR_DATES
: UINT8;
NBR_TIER_SWITCHES
: UINT16;
CALENDAR_TBL_SIZE
: UINT16;
END;
TABLE 50 DIM_TIME_TOU_TBL = TIME_TOU_RCD;
Table 50 Element Descriptions
Identifier

Value

Definition

TIME_FUNC_FLAG1_BFLD
TOU_SELF_READ_FLAG

FALSE

End Device is not capable of TOU-triggered selfreads.

Decade 5: Time-of-Use Tables / Table 50 Time and TOU Dimension Limits Table

165

ANSI C12.19-2008

Tables
TRUE

SEASON_SELF_READ_FLAG FALSE
TRUE
SEASON_DEMAND_RESET_FLAG
FALSE
TRUE
SEASON_CHNG_ARMED_FLAG
FALSE
TRUE

SORT_DATES_FLAG

FALSE

TRUE

ANCHOR_DATE_FLAG

FALSE
TRUE

TIME_FUNC_FLAG2_BFLD
CAP_DST_AUTO_FLAG

FALSE
TRUE

SEPARATE_WEEKDAYS_FLAG
FALSE
TRUE

End Device is capable of TOU-triggered selfreads.


Self-read with season change capability does
not exist.
Self-read with season change capability exists.
Automatic demand reset with season change
capability does not exist.
Automatic demand reset with season change
capability exists.
Season change arming capability does not exist.
Season change arming capability exists. That is,
the End Device is only armed to do a season
change as a result of an indicated change of
season. The actual season change does not
occur until the next demand reset occurs (by
manual or other means).
End
Device
does
not
require
the
CALENDAR_TBL.NON_RECURR_DATES
(Table 54) be presorted by date (Year, Month,
Day) when received.
End
Device
requires
the
CALENDAR_TBL.NON_RECURR_DATES
(Table 54) be presorted by date (Year, Month,
Day) when received.
Non-recurring dates
starting with 1990 and ending with 2089 shall
occur in that order. No sorting of recurring
dates, if present, is assumed.
End Device is not capable of accepting an
anchor date for the Period/Delta RDATE type
(recurring date).
End Device is capable of accepting an Anchor
Date for the Period/Delta RDATE type (recurring
date).
End Device is not capable of handling daylight
saving time changes independently of dates
supplied by the CALENDAR_TBL (Table 54).
End Device is capable of handling daylight
saving time changes independently of dates
supplied by the CALENDAR_TBL (Table 54).
End Device is not capable of having a different
schedule for each of the five weekdays.
End Device is capable of having a different
schedule for each of the five weekdays.

SEPARATE_SUM_DEMANDS_FLAG

166

Decade 5: Time-of-Use Tables / Table 50 Time and TOU Dimension Limits Table

Tables

ANSI C12.19-2008
FALSE
TRUE
SORT_TIER_SWITCHES_FLAG
FALSE
TRUE

CAP_TM_ZN_OFFSET_FLAG FALSE
TRUE
CALENDAR_BFLD
NBR_SEASONS
NBR_SPECIAL_SCHED

End Device is not capable of switching


summation and demands independently.
End Device is capable of switching summation
and demands independently.
End
Device
does
not
require
that
CALENDAR_TBL.TIER_SWITCHES (Table 54)
be presorted.
End
Device
requires
that
CALENDAR_TBL.TIER_SWITCHES (Table 54)
be presorted.
Reserved.
TIME_ZONE_OFFSET is present in Time Offset
Table (Table 53).

0..15

Maximum number of seasons supported by this


End Device.

0..12

Maximum number of special


supported by this End Device.
Reserved.

13..15
TIME_TOU_RCD
TIME_FUNC_FLAG1
TIME_FUNC_FLAG2
CALENDAR_FUNC

schedules

See TIME_FUNC_FLAG1_BFLD above.


See TIME_FUNC_FLAG2_BFLD above.
See CALENDAR_BFLD above.

NBR_NON_RECURR_DATES 0..255

Maximum number of non-recurring dates


supported by the End Device calendar. Each
entry allows the control of one or more events
like demand reset, Self-read, daylight saving
time, season change and special schedule.

NBR_RECURR_DATES

0..255

Maximum number of recurring dates supported


by the End Device calendar. Each entry allows
the definition of a recurring event like demand
reset, Self-read, daylight saving time, season
change and special schedule.

NBR_TIER_SWITCHES

0..65535

Maximum number of tier switches supported by


the End Device calendar. This number
comprises the total collection of tier switches for
all day types in the CALENDAR_TBL.
DAILY_SCHEDULE_ID_MATRIX (Table 54).

CALENDAR_TBL_SIZE

0..65535

Maximum octets of data transported by


CALENDAR_TBL (Table 54). This includes
recurring dates, non-recurring dates and tier
switches. Anchor date is counted even if it is
unused.

Decade 5: Time-of-Use Tables / Table 50 Time and TOU Dimension Limits Table

167

ANSI C12.19-2008

9.6.2

Tables

Table 51 Actual Time and TOU Limiting Table

Table 51 Data Description


ACT_TIME_TOU_TBL (Table 51) defines the actual capabilities for Date and Time clock control limits as
well as the Time of Use (TOU) control limits for the End Device. The data structure of this table is
identical to DIM_TIME_TOU_TBL (Table 50).
Global Default Table Property Overrides: Role=ACTUAL
Table 51 Type Definitions
TABLE 51 ACT_TIME_TOU_TBL = TIME_TOU_RCD;
Table 51 Element Descriptions
Value

Identifier
TIME_FUNC_FLAG1_BFLD
TOU_SELF_READ_FLAG

FALSE
TRUE

SEASON_SELF_READ_FLAG FALSE
TRUE
SEASON_DEMAND_RESET_FLAG
FALSE
TRUE
SEASON_CHNG_ARMED_FLAG
FALSE
TRUE

SORT_DATES_FLAG

FALSE

TRUE

168

Definition
Redefines:
DIM_TIME_TOU_TBL.
TIME_FUNC_FLAG1_BFLD.
End Device TOU-triggered self-read function is
disabled.
End Device TOU-triggered self-read function is
enabled.
Self-read with season change capability function
is disabled.
Self-read with season change capability function
is enabled.
Automatic demand
function is disabled.
Automatic demand
function is enabled.

reset

season

change

reset

season

change

Season change arming function is disabled.


Season change arming function is enabled. That
is, the End Device is only armed to do a season
change as a result of an indicated change of
season. The actual season change does not
occur until the next demand reset occurs (by
manual or other means).
End
Device
does
not
require
the
CALENDAR_TBL.NON_RECURR_DATES
(Table 54) to be presorted by date (Year, Month,
Day) when received.
End
Device
requires
the
CALENDAR_TBL.NON_RECURR_DATES
(Table 54) be presorted by date (Year, Month,
Day) when received. Non-recurring dates
starting with 1990 and ending with 2089 shall be

Decade 5: Time-of-Use Tables / Table 51 Actual Time and TOU Limiting Table

Tables

ANSI C12.19-2008
sorted in that order. No sorting of recurring
dates, if present, is required.
ANCHOR_DATE_FLAG

FALSE
TRUE

TIME_FUNC_FLAG2_BFLD
CAP_DST_AUTO_FLAG

FALSE
TRUE

SEPARATE_WEEKDAYS_FLAG
FALSE
TRUE
SEPARATE_SUM_DEMANDS_FLAG
FALSE
TRUE
SORT_TIER_SWITCHES_FLAG
FALSE
TRUE

CAP_TM_ZN_OFFSET_FLAG FALSE
TRUE
CALENDAR_BFLD
NBR_SEASONS

0..15

NBR_SPECIAL_SCHED

0..12
13..15

TIME_TOU_RCD
TIME_FUNC_FLAG1
TIME_FUNC_FLAG2
CALENDAR_FUNC

End Device does not accept an anchor date for


the Period/Delta RDATE type (recurring date).
End Device accepts an anchor date for the
Period/Delta RDATE type (recurring date).
Redefines:
DIM_TIME_TOU_TBL.
TIME_FUNC_FLAG2_BFLD.
End Device is not handling daylight saving time
changes independently of dates supplied by the
CALENDAR_TBL (Table 54).
End Device is handling daylight saving time
changes independently of dates supplied by the
CALENDAR_TBL (Table 54).
End Device is not using a different schedule for
each of the five weekdays.
End Device is using a different schedule for
each of the five weekdays.
End Device is not switching summation and
demands independently.
End Device is switching summation and
demands independently.
End
Device
does
not
require
that
CALENDAR_TBL.TIER_SWITCHES (Table 54)
be presorted.
End
Device
requires
that
CALENDAR_TBL.TIER_SWITCHES (Table 54)
be presorted.
Reserved.
TIME_ZONE_OFFSET is present in Time Offset
Table (Table 53).
Redefines:
DIM_TIME_TOU_TBL.
CALENDAR_BFLD.
Actual number of seasons in use by the End
Device.
Actual number of special schedules in use by
the End Device.
Reserved.
Redefines:
DIM_TIME_TOU_TBL.
TIME_TOU_RCD.
See TIME_FUNC_FLAG1_BFLD above.
See TIME_FUNC_FLAG2_BFLD above.
See CALENDAR_BFLD above.

Decade 5: Time-of-Use Tables / Table 51 Actual Time and TOU Limiting Table

169

ANSI C12.19-2008

170

Tables

NBR_NON_RECURR_DATES 0..255

Actual number of non-recurring dates in use by


the End Device calendar. Each entry allows the
control of one or more events like demand reset,
Self-read, daylight saving time, season change
and special schedule.

NBR_RECURR_DATES

0..255

Actual number of recurring dates in use by the


End Device calendar. Each entry allows the
definition of a recurring event like demand reset,
Self-read, daylight saving time, season change
and special schedule.

NBR_TIER_SWITCHES

0..65535

Actual number of tier switches in use by the End


Device calendar. This number comprises the
total collection of tier switches for all day types in
the
CALENDAR_TBL.
DAILY_SCHEDULE_ID_MATRIX (Table 54).

CALENDAR_TBL_SIZE

0..65535

Actual octets of data transported by


CALENDAR_TBL (Table 54). This includes the
recurring dates, non-recurring dates and tier
switches.

Decade 5: Time-of-Use Tables / Table 51 Actual Time and TOU Limiting Table

Tables

9.6.3

ANSI C12.19-2008

Table 52 Clock Table

Table 52 Data Description


CLOCK_TBL (Table 52) provides the End Device real time clock information. This table provides a
subset of the information available for reading from CLOCK_STATE_TBL (Table 55) or
PRECISION_CLOCK_STATE_TBL (Table 57).
Global Default Table Property Overrides: Atomic = true, Role=DATA, Accessibility=READONLY
Table 52 Type Definitions
TYPE TIME_DATE_QUAL_BFLD = BIT FIELD OF UINT8
DAY_OF_WEEK
: UINT(0..2);
DST_FLAG
: BOOL(3);
GMT_FLAG
: BOOL(4);
TM_ZN_APPLIED_FLAG
: BOOL(5);
DST_APPLIED_FLAG
: BOOL(6);
IF GEN_CONFIG_TBL.STD_VERSION_NO < 2 THEN
FILLER
: FILL(7..7);
ELSE
DST_SUPPORTED_FLAG
: BOOL(7);
END;
END;
TYPE CLOCK_STATE_RCD = PACKED RECORD
CLOCK_CALENDAR : LTIME_DATE;
TIME_DATE_QUAL
: TIME_DATE_QUAL_BFLD;
END;
TABLE 52 CLOCK_TBL = CLOCK_STATE_RCD;
Table 52 Element Descriptions
Identifier

Value

TIME_DATE_QUAL_BFLD
DAY_OF_WEEK
0
1
2
3
4
5
6
7
DST_FLAG

Decade 5: Time-of-Use Tables / Table 52 Clock Table

Definition
Status qualifying the End Device time.
Current day of the week.
Sunday.
Monday.
Tuesday.
Wednesday.
Thursday.
Friday.
Saturday.
DAY_OF_WEEK is undefined, this field is not
supported by the End Device.
Daylight
saving
time
status.
When
DST_APPLIED_FLAG is false, there is no
expectation that the state of this flag is
meaningful. To determine if this flag tracks DST,
see DST_SUPPORTED_FLAG.

171

ANSI C12.19-2008

Tables
FALSE
TRUE

GMT_FLAG

FALSE

TRUE
TM_ZN_APPLIED_FLAG

FALSE
TRUE
DST_APPLIED_FLAG

FALSE
TRUE

DST_SUPPORTED_FLAG

FALSE
TRUE

CLOCK_STATE_RCD
CLOCK_CALENDAR
TIME_DATE_QUAL

172

End Device operational time is not in daylight


saving time.
End Device operational time is in daylight saving
time.
TIME_ZONE_OFFSET in Time Offset Table
(Table 53) is not relative to GMT. The value of
the
TIME_ZONE_OFFSET
reference
is
indeterminate. This value is not permitted when
TM_FORMAT = 3 or TM_ FORMAT = 4.
TIME_ZONE_OFFSET in Time Offset Table
(Table 53) is relative to GMT.
This
flag
and
the
following
one
(DST_APPLIED_FLAG)
define
the
time
representation (End Device operational time,
Standard time or UTC time) used during the
transport of date and time Elements.
Time zone offset is not applied by the End
Device to date and time Elements prior to
transport.
Time zone offset is applied by the End Device to
date and time Elements prior to transport.
Daylight saving adjustment is not applied by the
End Device to date and time Elements prior to
transport.
Daylight saving adjustment is applied by the End
Device to date and time Elements prior to
transport.
The End Device does not implement the
DST_FLAG value. The DST_FLAG value shall
be ignored.
The End Device supports the DST_FLAG. The
DST_FLAG returned is meaningful.
Current End Device time.
See DATE_TIME_QUAL_BFLD above.

Decade 5: Time-of-Use Tables / Table 52 Clock Table

Tables

9.6.4

ANSI C12.19-2008

Table 53 Time Offset Table

Table 53 Data Description


TIME_OFFSET_TBL (Table 53) provides time zone offset and daylight saving time information for the
End Device.
Global Default Table Property Overrides: Role=CONTROL
Table 53 Type Definitions
TYPE TIME_OFFSET_RCD = PACKED RECORD
DST_TIME_EFF
: TIME;
DST_TIME_AMT
: UINT8;
IF ACT_TIME_TOU_TBL.CAP_TM_ZN_OFFSET_FLAG THEN
TIME_ZONE_OFFSET : INT16;
END;
IF GEN_CONFIG_TBL.STD_VERSION_NO > 1 THEN
STD_TIME_EFF
: TIME;
END;
END;
TABLE 53 TIME_OFFSET_TBL = TIME_OFFSET_RCD;
Table 53 Element Descriptions
Identifier

Value

TIME_OFFSET_RCD
DST_TIME_EFF

Definition
The time of day the End Device shifts to
daylight saving time from standard time. The
date of occurrence is based on entries in the
CALENDAR_TBL (Table 54) and the
ACT_TIME_TOU_TBL.
CAP_DST_AUTO_FLAG (Table 51) flag. This
time represents the standard time just prior to
the shift.

DST_TIME_AMT

0..255

TIME_ZONE_OFFSET

-32368..32767 Time zone offset is geographical displacement


in minutes from GMT to the End Device
standard time. It does not vary over the calendar
year. It represents the number of 1 minute
segments relative to Greenwich Mean Time;
negative number means west of Greenwich
Mean Time.

STD_TIME_EFF

End Device daylight saving time adjustment


specified in minutes.

The time of day the End Device shifts from


daylight saving time to standard time. The date
of occurrence is based on entries in the
CALENDAR_TBL (Table 54) and the
ACT_TIME_TOU_TBL.

Decade 5: Time-of-Use Tables / Table 53 Time Offset Table

173

ANSI C12.19-2008

Tables

CAP_DST_AUTO_FLAG (Table 51) flag. This


time represents the daylight saving time just
prior to the shift.
9.6.5

Table 54 Calendar Table

Table 54 Data Description


CALENDAR_TBL (Table 54) is the schedule definition table for TOU metering activities.
Global Default Table Property Overrides: Role=CONTROL
Table 54 Type Definitions
TYPE CALENDAR_ACTION_BFLD = BIT FIELD OF UINT8
CALENDAR_CTRL
: UINT(0..4);
DEMAND_RESET_FLAG
: BOOL(5);
SELF_READ_FLAG
: BOOL(6);
FILLER
: FILL(7..7);
END;
TYPE RECURR_DATE_RCD = PACKED RECORD
RECURR_DATE
: RDATE;
CALENDAR_ACTION : CALENDAR_ACTION_BFLD;
END;
TYPE NON_RECURR_DATE_RCD = PACKED RECORD
NON_RECURR_DATE : DATE;
CALENDAR_ACTION : CALENDAR_ACTION_BFLD;
END;
TYPE TIER_SWITCH_BFLD = BIT FIELD OF UINT16
NEW_TIER
: UINT(0..2);
IF ACT_TIME_TOU_TBL.SEPARATE_SUM_DEMANDS_FLAG THEN
SUMMATION_SWITCH_FLAG : BOOL(3);
DEMANDS_SWITCH_FLAG
: BOOL(4);
ELSE
FILLER
: FILL(3..4);
END;
SWITCH_MIN
: UINT(5..10);
SWITCH_HOUR
: UINT(11..15);
END;
TYPE TIER_SWITCH_RCD = PACKED RECORD
TIER_SWITCH
: TIER_SWITCH_BFLD;
DAY_SCH_NUM
: UINT8;
END;
TYPE SCHEDULE_RCD = PACKED RECORD
SUNDAY_SCHEDULE
: UINT8;
MONDAY_SCHEDULE
: UINT8;
TUESDAY_SCHEDULE
: UINT8;
WEDNESDAY_SCHEDULE
: UINT8;
THURSDAY_SCHEDULE
: UINT8;

174

Decade 5: Time-of-Use Tables / Table 54 Calendar Table

Tables

ANSI C12.19-2008

FRIDAY_SCHEDULE
SATURDAY_SCHEDULE
SPECIAL_SCHEDULE

: UINT8;
: UINT8;
: ARRAY[ACT_TIME_TOU_TBL.NBR_SPECIAL_SCHED] OF
UINT8;

END;
TYPE WEEKDAYS_SCHEDULE_RCD = PACKED RECORD
SATURDAY_SCHEDULE
: UINT8;
SUNDAY_SCHEDULE
: UINT8;
WEEKDAY_SCHEDULE
: UINT8;
SPECIAL_SCHEDULE
: ARRAY[ACT_TIME_TOU_TBL.NBR_SPECIAL_SCHED] OF
UINT8;
END;
TYPE CALENDAR_RCD = PACKED RECORD
IF ACT_TIME_TOU_TBL.ANCHOR_DATE_FLAG THEN
ANCHOR_DATE
: DATE;
END;
NON_RECURR_DATES : ARRAY[ACT_TIME_TOU_TBL.NBR_NON_RECURR_DATES]
OF NON_RECURR_DATE_RCD;
RECURR_DATES
: ARRAY[ACT_TIME_TOU_TBL.NBR_RECURR_DATES] OF
RECURR_DATE_RCD;
TIER_SWITCHES
: ARRAY[ACT_TIME_TOU_TBL.NBR_TIER_SWITCHES] OF
TIER_SWITCH_RCD;
IF ACT_TIME_TOU_TBL.SEPARATE_WEEKDAYS_FLAG THEN
DAILY_SCHEDULE_ID_MATRIX
: ARRAY[ACT_TIME_TOU_TBL.NBR_SEASONS] OF
SCHEDULE_RCD;
ELSE
DAILY_SCHEDULE_ID_MATRIX
: ARRAY[ACT_TIME_TOU_TBL.NBR_SEASONS] OF
WEEKDAYS_SCHEDULE_RCD;
END;
END;
TABLE 54 CALENDAR_TBL = CALENDAR_RCD;
Table 54 Element Descriptions
Identifier
CALENDAR_ACTION_BFLD
CALENDAR_CTRL

Value

Definition
Number specifying the calendar action that
takes place on the date specified.
Daylight Saving Time On/Off
Daylight Saving Time On and Off actions causes
a time adjustment to be made at
TIME_OFFSET_TBL.DST_TIME_EFF
(Table
53) time. If TIME_OFFSET_TBL (Table 53) is
not supported, the time adjustment is made at
02:00 A.M. and the time adjustment equals one
(1) hour.

Decade 5: Time-of-Use Tables / Table 54 Calendar Table

175

ANSI C12.19-2008

Tables

If
ACT_TIME_TOU_TBL.
CAP_DST_AUTO_FLAG (Table 51) = TRUE
then Daylight Saving Time On/Off actions in this
table are ignored.
Season Changes
If
ACT_TIME_TOU_TBL.
SEASON_CHNG_ARMED_FLAG (Table 51) =
FALSE, a season change action causes a
season change to occur at 00:00 A.M. hours on
the date specified. If ACT_TIME_TOU_TBL.
SEASON_CHNG_ARMED_FLAG (Table 51) =
TRUE, a season change action "arms" a season
change, but the season change will not occur
until the next demand reset.
If
ACT_TIME_TOU_TBL.
SEASON_DEMAND_RESET_FLAG (Table 51)
= TRUE, a season change causes a demand
reset to occur automatically.
A Self-read of the current register data is saved
in the SELF_READ_DATA_TBL (Table 26) if
ACT_TIME_TOU_TBL.
SEASON_SELF_READ_FLAG (Table 51) =
TRUE when the season change occurs.
If
GEN_CONFIG_TBL.STD_TBLS_USED.
PREVIOUS_SEASON_DATA_TBL (Table 00) =
TRUE, a season change causes a copy of the
current register data to be saved in the
PREVIOUS_SEASON_DATA_TBL (Table 24).
Special Schedules
Special schedules are used for holidays or other
special daily schedules. These schedules take
effect at midnight (00:00 A.M.) and end 24 hours
later (23:59 P.M.). The special schedule takes
precedence over the normal day of week
schedule.
End of List
End of List Action is to trigger a notification that
the CALENDAR_TBL (Table 54) entries are
approaching expiration. Notification is by history
message, display, or other means provided by
the device End Device.
0
1
2
3..17
18
19..30

176

No Action.
Daylight Saving Time On.
Daylight Saving Time Off.
Select Season 0 through Season 14.
Reserved.
Select Special Schedule 0 through Special
Schedule 11.

Decade 5: Time-of-Use Tables / Table 54 Calendar Table

Tables

ANSI C12.19-2008

DEMAND_RESET_FLAG

31

End Of List.

FALSE
TRUE

Demand reset shall not occur.


Demand reset shall occur at 00:00 A.M. on the
date specified.
If
GEN_CONFIG_TBL.STD_TBLS_USED.
PREVIOUS_DEMAND_RESET_DATA_TBL
(Table 00) = TRUE, a Demand Reset causes
data
to
be
saved
in
PREVIOUS_DEMAND_RESET_DATA_TBL
(Table 25).
If
ACT_REGS_TBL.
SELF_READ_DEMAND_RESET_FLAG (Table
21) = 1 or 3, a Self-read shall occur in
conjunction with the demand reset.

SELF_READ_FLAG

FALSE
TRUE

Self-read shall not occur.


Self-read shall occur at 00:00 A.M. on the date
specified.
If
ACT_REGS_TBL.
SELF_READ_DEMAND_RESET_FLAG (Table
21) = 2 or 3, a demand reset shall occur in
conjunction with the Self-read.

RECURR_DATE_RCD
RECURR_DATE

Date definition of a recurring event. The


recurrence can be yearly, monthly, or weekly.
The recurring event is referenced to midnight.
Defined action that shall take place on this date.
See CALENDAR_ACTION_BFLD above.

CALENDAR_ACTION
NON_RECURR_DATE_RCD
NON_RECURR_DATE

Non-recurring event date. Action shall occur at


midnight.
Defined action that shall take place on this date.
See CALENDAR_ACTION_BFLD above.

CALENDAR_ACTION
TIER_SWITCH_BFLD
NEW_TIER

0..7

SUMMATION_SWITCH_FLAG

FALSE
TRUE
DEMANDS_SWITCH_FLAG

Identifies the tier number that becomes effective


at the time specified in the tier switch on the
daily
schedule
type
defined
by
the
DAILY_SCHEDULE_ID_MATRIX.
Specifies whether or not this tier switch selects a
new tier for summations. Only used when
ACT_TIME_TOU_TBL.
SEPARATE_SUM_DEMANDS_FLAG
(Table
51) = TRUE.
Tier switch is not specified for summations.
Tier switch is specified for summations.
Specifies whether or not this tier switch selects a
new tier for demands. Only used when
ACT_TIME_TOU_TBL.

Decade 5: Time-of-Use Tables / Table 54 Calendar Table

177

ANSI C12.19-2008

SWITCH_MIN
SWITCH_HOUR

Tables

FALSE
TRUE
0..59
60..63
0..23
24..31

TIER_SWITCH_RCD
TIER_SWITCH
DAY_SCH_NUM

0..255

SEPARATE_SUM_DEMANDS_FLAG
(Table
51) = TRUE.
Tier switch is not specified for demands.
Tier switch is specified for demands.
Minute when the tier switch occurs.
Reserved.
Hour when the tier switch occurs.
Reserved.
Defines a switch point for a certain day type
defined
by
the
DAILY_SCHEDULE_ID_MATRIX.
Specifies the daily schedule type associated
with the tier switch. All identifiers are stored in
the DAILY_SCHEDULE_ID_MATRIX.

SCHEDULE_RCD
SUNDAY_SCHEDULE

0..255

MONDAY_SCHEDULE

0..255

TUESDAY_SCHEDULE

0..255

WEDNESDAY_SCHEDULE

0..255

THURSDAY_SCHEDULE

0..255

FRIDAY_SCHEDULE
SATURDAY_SCHEDULE

0..255
0..255

SPECIAL_SCHEDULE

Daily schedule selector programmed for


Sunday.
Daily schedule selector programmed for
Monday.
Daily schedule selector programmed for
Tuesday.
Daily schedule selector programmed for
Wednesday.
Daily schedule selector programmed for
Thursday.
Daily schedule selector programmed for Friday.
Daily schedule selector programmed for
Saturday.
Array
of
special
schedule
selectors
programmed.

WEEKDAYS_SCHEDULE_RCD
SATURDAY_SCHEDULE

0..255

SUNDAY_SCHEDULE

0..255

WEEKDAY_SCHEDULE

0..255

SPECIAL_SCHEDULE
CALENDAR_RCD
ANCHOR_DATE

NON_RECURR_DATES

178

Daily schedule selector programmed for


Saturday.
Daily schedule selector programmed for
Sunday.
Daily schedule selector programmed for Monday
to Friday.
Array
of
special
schedule
selectors
programmed.
Anchor date is only used in conjunction with an
RDATE type recurring date using the
PERIOD/OFFSET mechanism. See Section
6.3.2, RDATE Type. If specified, any recurring
date using the PERIOD/OFFSET type shall use
this date as a starting date.
Array containing non-recurring dates.

Decade 5: Time-of-Use Tables / Table 54 Calendar Table

Tables

ANSI C12.19-2008

RECURR_DATES

Array containing recurring dates.

TIER_SWITCHES

Array that contains the tier switches.

DAILY_SCHEDULE_ID_MATRIX

An array containing daily schedule selectors.


The calendar choice of selector is used to tie tier
switch entries (See TIER_SWITCH_RCD.
DAY_SCH_NUM) to specific daily schedules.
An example of a daily schedule is Special
Schedule 1 in Season 2 or Saturday Day Type
in Season 1.
The assignment of selector values is left to the
utilitys discretion.
If
ACT_TIME_TOU_TBL.SEPARATE_WEEKD
AYS_FLAG = TRUE, the End Device is
programmed with a different schedule for each of
the five weekdays, Sunday, Saturday and the
special schedules. See SCHEDULE_RCD.
SPECIAL_SCHEDULE.
If
ACT_TIME_TOU_TBL.SEPARATE_WEEKDA
YS_FLAG = FALSE, the End Device has a
common schedule for all of the five weekdays,
and separate schedules for Sunday, Saturday
and
the
special
schedules.
See
WEEKDAYS_SCHEDULE_RCD.
SPECIAL_SCHEDULE.

Decade 5: Time-of-Use Tables / Table 54 Calendar Table

179

ANSI C12.19-2008

9.6.6

Tables

Table 55 Clock State Table

Table 55 Data Description


CLOCK_STATE_TBL (Table 55) provides the End Device real time clock information that is accurate to
the
nearest
second.
For
highest
real-time
clock
precision
reading
see
PRECISION_CLOCK_STATE_TBL (Table 57).
Global Default Table Property Overrides: Atomic = true, Role=DATA, Accessibility=READONLY
Table 55 Type Definitions
TYPE STATUS_BFLD = BIT FIELD OF UINT16
IF ACT_TIME_TOU_TBL.SEPARATE_SUM_DEMANDS_FLAG THEN
CURR_SUMM_TIER : UINT(0..2);
CURR_DEMAND_TIER : UINT(3..5);
ELSE
CURR_TIER
: UINT(0..2);
FILLER
: FILL(3..5);
END;
TIER_DRIVE
: UINT(6..7);
SPECIAL_SCHD_ACTIVE
: UINT(8..11);
SEASON
: UINT(12..15);
END;
TYPE CLOCK_STATE_RCD = PACKED RECORD
CLOCK_CALENDAR : LTIME_DATE;
TIME_DATE_QUAL
: CLOCK_TBL.TIME_DATE_QUAL_BFLD;
STATUS
: STATUS_BFLD;
END;
TABLE 55 CLOCK_STATE_TBL = CLOCK_STATE_RCD;
Table 55 Element Descriptions
Identifier

Value

STATUS_BFLD

180

Definition
The status of the active TOU tier.

CURR_SUMM_TIER

0..7

Active tier corresponding to summations. This


Element is only used when the capability flag
ACT_TIME_TOU_TBL.
SEPARATE_SUM_DEMANDS_FLAG
(Table
51) = TRUE.

CURR_DEMAND_TIER

0..7

Active tier corresponding to demands. This


Element is only used when the capability flag
ACT_TIME_TOU_TBL.
SEPARATE_SUM_DEMANDS_FLAG
(Table
51) = TRUE.

CURR_TIER

0..7

Number representing the tier that is currently


active in the End Device. This Element is only
used
when
the
capability
flag

Decade 5: Time-of-Use Tables / Table 55 Clock State Table

Tables

ANSI C12.19-2008

ACT_TIME_TOU_TBL.
SEPARATE_SUM_DEMANDS_FLAG
51) = FALSE.
TIER_DRIVE

(Table

1..3

Tier drive source.


Tier
selection
is
controlled
by
CALENDAR_TBL.TIER_SWITCHES
(Table
54).
Tier selection is not controlled by this Standard.

SPECIAL_SCHD_ACTIVE

0..11
12..14
15

Active special schedule number.


Reserved.
No special schedule active.

SEASON

0..15

Number representing the season


currently active in the End Device.

CLOCK_STATE_RCD
CLOCK_CALENDAR

that

is

Current End Device date and time.

TIME_DATE_QUAL

See CLOCK_TBL.TIME_DATE_QUAL_BFLD.

STATUS

See STATUS_BFLD.

Decade 5: Time-of-Use Tables / Table 55 Clock State Table

181

ANSI C12.19-2008

9.6.7

Tables

Table 56 Time Remaining Table

Table 56 Data Description


TIME_REMAIN_TBL (Table 56) provides predictive time quantities.
Global Default Table Property Overrides: Atomic = true, Role=DATA, Accessibility=READONLY
Table 56 Type Definitions
TYPE TIME_REMAIN_RCD = PACKED RECORD
IF ACT_TIME_TOU_TBL.SEPARATE_SUM_DEMANDS_FLAG THEN
SUMM_TIER_TIME_REMAIN
: UINT16;
DEMAND_TIER_TIME_REMAIN
: UINT16;
ELSE
TIER_TIME_REMAIN
: UINT16;
END;
SELF_READ_DAYS_REMAIN
: UINT8;
END;
TABLE 56 TIME_REMAIN_TBL = TIME_REMAIN_RCD;
Table 56 Element Descriptions
Identifier

Value

Definition

TIME_REMAIN_RCD
SUMM_TIER_TIME_REMAIN

0..65535

Minutes remaining until the next tier change


which affects summations. Used when the
capability
flag
ACT_TIME_TOU_TBL.
SEPARATE_SUM_DEMANDS_FLAG
(Table
51) = TRUE.

DEMAND_TIER_TIME_REMAIN 0..65535

Minutes remaining before the next tier change


which affects demands. Used when the
capability
flag
ACT_TIME_TOU_TBL.
SEPARATE_SUM_DEMANDS_FLAG
(Table
51) = TRUE.

TIER_TIME_REMAIN

Minutes remaining before the next tier change.

0..65535

SELF_READ_DAYS_REMAIN 0..255
9.6.8

Days remaining before the next scheduled Selfread.

Table 57 Precision Clock State Table

Table 57 Data Description


PRECISION_CLOCK_STATE_TBL (Table 57) provides the End Device real time clock information with
increased time precision using the HTIME_DATE data type. It is identical to CLOCK_STATE_TBL (Table
55) except for the extra sub-second precision capability offered.
Global Default Table Property Overrides: Atomic = true, Role=DATA, Accessibility=READONLY

182

Decade 5: Time-of-Use Tables / Table 56 Time Remaining Table

Tables

ANSI C12.19-2008

Table 57 Type Definitions


TYPE CLOCK_STATE_RCD = PACKED RECORD
CLOCK_CALENDAR : HTIME_DATE;
TIME_DATE_QUAL
: CLOCK_TBL.TIME_DATE_QUAL_BFLD;
STATUS
: CLOCK_STATE_TBL.STATUS_BFLD;
END;
TABLE 57 PRECISION_CLOCK_STATE_TBL = CLOCK_STATE_RCD;
Table 57 Element Descriptions
Identifier
CLOCK_STATE_RCD
CLOCK_CALENDAR

Value

Definition
Current End Device high-precision date and
time.

TIME_DATE_QUAL

See CLOCK_TBL.TIME_DATE_QUAL_BFLD.

STATUS

See CLOCK_STATE_TBL.STATUS_BFLD.

Decade 5: Time-of-Use Tables / Table 57 Precision Clock State Table

183

ANSI C12.19-2008

Tables

9.7 Decade 6: Load Profile Tables


Decade 6 Name
LOAD_PROFILE_DEC
Decade 6 Data Description
These Tables provide structures for Load Profile data.
9.7.1

Table 60 Load Profile Dimension Limits Table

Table 60 Data Description


DIM_LP_TBL (Table 60) specifies the maximum dimensional values and control selectors and options for
Load Profile data. This Decade provides for up to four independent sets of Load Profile data.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 60 Type Definitions
TYPE LP_FLAGS_BFLD = BIT FIELD OF UINT16
LP_SET1_INHIBIT_OVF_FLAG
: BOOL(0);
LP_SET2_INHIBIT_OVF_FLAG
: BOOL(1);
LP_SET3_INHIBIT_OVF_FLAG
: BOOL(2);
LP_SET4_INHIBIT_OVF_FLAG
: BOOL(3);
BLK_END_READ_FLAG
: BOOL(4);
BLK_END_PULSE_FLAG
: BOOL(5);
SCALAR_DIVISOR_FLAG_SET1
: BOOL(6);
SCALAR_DIVISOR_FLAG_SET2
: BOOL(7);
SCALAR_DIVISOR_FLAG_SET3
: BOOL(8);
SCALAR_DIVISOR_FLAG_SET4
: BOOL(9);
EXTENDED_INT_STATUS_FLAG
: BOOL(10);
SIMPLE_INT_STATUS_FLAG
: BOOL(11);
BLK_END_RD_INDICATOR_FLAG
: BOOL(12);
FILLER
: FILL (13..15);
END;
TYPE LP_FMATS_BFLD = BIT FIELD OF UINT8
INV_UINT8_FLAG
: BOOL(0);
INV_UINT16_FLAG
: BOOL(1);
INV_UINT32_FLAG
: BOOL(2);
INV_INT8_FLAG
: BOOL(3);
INV_INT16_FLAG
: BOOL(4);
INV_INT32_FLAG
: BOOL(5);
INV_NI_FMAT1_FLAG
: BOOL(6);
INV_NI_FMAT2_FLAG
: BOOL(7);
END;

184

Decade 6: Load Profile Tables / Table 60 Load Profile Dimension Limits Table

Tables

ANSI C12.19-2008

TYPE LP_SET_RCD = PACKED RECORD


LP_MEMORY_LEN
: UINT32;
LP_FLAGS
: LP_FLAGS_BFLD;
LP_FMATS
: LP_FMATS_BFLD;
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET1_TBL] THEN
NBR_BLKS_SET1
NBR_BLK_INTS_SET1
NBR_CHNS_SET1
MAX_INT_TIME_SET1

: UINT16;
: UINT16;
: UINT8;
: UINT8;

END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET2_TBL] THEN
NBR_BLKS_SET2
: UINT16;
NBR_BLK_INTS_SET2
: UINT16;
NBR_CHNS_SET2
: UINT8;
MAX_INT_TIME_SET2
: UINT8;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET3_TBL] THEN
NBR_BLKS_SET3
: UINT16;
NBR_BLK_INTS_SET3
: UINT16;
NBR_CHNS_SET3
: UINT8;
MAX_INT_TIME_SET3
: UINT8;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET4_TBL] THEN
NBR_BLKS_SET4
: UINT16;
NBR_BLK_INTS_SET4
: UINT16;
NBR_CHNS_SET4
: UINT8;
MAX_INT_TIME_SET4
: UINT8;
END;
END;
TABLE 60 DIM_LP_TBL = LP_SET_RCD;
Table 60 Element Descriptions
Identifier

Value

LP_FLAGS_BFLD

Definition
This bit field specifies
management capabilities.

LP_SET1_INHIBIT_OVF_FLAG
FALSE
TRUE
LP_SET2_INHIBIT_OVF_FLAG
FALSE
TRUE
LP_SET3_INHIBIT_OVF_FLAG
FALSE

Load

Profile

list

End Device is not capable of inhibiting Load


Profile set 1 once an overflow occurs.
End Device is capable of inhibiting Load Profile
set 1 once an overflow occurs.
End Device is not capable of inhibiting Load
Profile set 2 once an overflow occurs.
End Device is capable of inhibiting Load Profile
set 2 once an overflow occurs.
End Device is not capable of inhibiting Load
Profile set 3 once an overflow occurs.

Decade 6: Load Profile Tables / Table 60 Load Profile Dimension Limits Table

185

ANSI C12.19-2008

Tables
TRUE

LP_SET4_INHIBIT_OVF_FLAG
FALSE
TRUE
BLK_END_READ_FLAG

FALSE
TRUE

BLK_END_PULSE_FLAG

FALSE
TRUE

SCALAR_DIVISOR_FLAG_SET1
FALSE
TRUE
SCALAR_DIVISOR_FLAG_SET2
FALSE
TRUE

SCALAR_DIVISOR_FLAG_SET3
FALSE
TRUE

SCALAR_DIVISOR_FLAG_SET4
FALSE
TRUE

EXTENDED_INT_STATUS_FLAG
FALSE
TRUE

186

End Device is capable of inhibiting Load Profile


set 3 once an overflow occurs.
End Device is not capable of inhibiting Load
Profile set 4 once an overflow occurs.
End Device is capable of inhibiting Load Profile
set 4 once an overflow occurs.
End Device is not capable of providing blockend Register reading information.
The End Device is capable of providing blockend Register reading information.
End Device is not capable of providing blockend pulse accumulator data.
The End Device is capable of providing blockend pulse accumulator data.
End Device is not capable of having scalars and
divisors associated with set 1 Load Profile
interval data.
End Device is capable of having scalars and
divisors associated with set 1 Load Profile
interval data.
End Device is not capable of having scalars and
divisors associated with set 2 Load Profile
interval data.
End Device is capable of having scalars and
divisors associated with set 2 Load Profile
interval data.
End Device is not capable of having scalars and
divisors associated with set 3 Load Profile
interval data.
End Device is capable of having scalars and
divisors associated with set 3 Load Profile
interval data.
End Device is not capable of having scalars and
divisors associated with set 4 Load Profile
interval data.
End Device is capable of having scalars and
divisors associated with set 4 Load Profile
interval data.
End Device is not capable of returning extended
interval status with Load Profile interval data.
End Device is capable of returning extended
interval status with Load Profile interval data.

Decade 6: Load Profile Tables / Table 60 Load Profile Dimension Limits Table

Tables

ANSI C12.19-2008

SIMPLE_INT_STATUS_FLAG FALSE
TRUE
BLK_END_RD_INDICATOR_FLAG
FALSE
TRUE
LP_FMATS_BFLD

INV_UINT8_FLAG

FALSE

FALSE
TRUE

INV_UINT32_FLAG

FALSE
TRUE

INV_INT8_FLAG

FALSE
TRUE

INV_INT16_FLAG

FALSE
TRUE

INV_INT32_FLAG

FALSE
TRUE

INV_NI_FMAT1_FLAG

FALSE
TRUE

INV_NI_FMAT2_FLAG

Block-end readings (END_READINGS) are


cumulative across all blocks.
Block-end readings (END_READINGS) are
cumulative only across the associated block.
This set of booleans specifies the format(s)
acceptable for use in DIM_LP_TBL (Table 60)
and ACT_LP_TBL (Table 61).

TRUE
INV_UINT16_FLAG

End Device is not capable of returning simple


interval status with Load Profile interval data.
End Device is capable of returning simple
interval status with Load Profile interval data.

FALSE
TRUE

UINT8 format for intervals is not capable of


being used.
An interval format of UINT8 is capable of being
used.
UINT16 format for intervals is not capable of
being used.
An interval format of UINT16 is capable of being
used.
UINT32 format for intervals is not capable of
being used.
An interval format of UINT32 is capable of being
used.
INT8 format for intervals is not capable of being
used.
An interval format of INT8 is capable of being
used.
INT16 format for intervals is not capable of being
used.
An interval format of INT16 is capable of being
used.
INT32 format for intervals is not capable of being
used.
An interval format of INT32 is capable of being
used.
NI_FMAT1 format for intervals is not capable of
being used.
An interval format of NI_FMAT1 is capable of
being used.
NI_FMAT2 format for intervals is not capable of
being used.
An interval format of NI_FMAT2 is capable of
being used.

Decade 6: Load Profile Tables / Table 60 Load Profile Dimension Limits Table

187

ANSI C12.19-2008

Tables

LP_SET_RCD

This record contains information defining how


each set of Load Profile information works.

LP_MEMORY_LEN

0..4294967295
Maximum number of octets of storage available
for Load Profile data. This reflects the combined
sizes of tables LP_DATA_SET1_TBL (Table
64),
LP_DATA_SET2_TBL
(Table
65),
LP_DATA_SET3_TBL
(Table
66),
and
LP_DATA_SET4_TBL (Table 67).

188

LP_FLAGS

See LP_FLAGS_BFLD.

LP_FMATS

See LP_FMATS_BFLD.

NBR_BLKS_SET1

0..65535

Maximum number of blocks that can be


contained in LP_DATA_SET1_TBL (Table 64).

NBR_BLK_INTS_SET1

0..65535

Maximum number of intervals per block that can


be contained in LP_DATA_SET1_TBL (Table
64).

NBR_CHNS_SET1

0..255

Maximum number of channels of Load Profile


data
that
can
be
contained
in
LP_DATA_SET1_TBL (Table 64).

MAX_INT_TIME_SET1

0..255

Maximum time in minutes for Load Profile


interval duration that can be contained in
LP_DATA_SET1_TBL (Table 64).

NBR_BLKS_SET2

0..65535

Maximum number of blocks that can be


contained in LP_DATA_SET2_TBL (Table 65).

NBR_BLK_INTS_SET2

0..65535

Maximum number of intervals per block that can


be contained in LP_DATA_SET2_TBL (Table
65).

NBR_CHNS_SET2

0..255

Maximum number of channels of Load Profile


data
that
can
be
contained
in
LP_DATA_SET2_TBL (Table 65).

MAX_INT_TIME_SET2

0..255

Maximum time in minutes for Load Profile


interval duration that can be contained in
LP_DATA_SET2_TBL (Table 65).

NBR_BLKS_SET3

0..65535

Maximum number of blocks that can be


contained in LP_DATA_SET3_TBL (Table 66).

NBR_BLK_INTS_SET3

0..65535

Maximum number of intervals per block that can


be contained in LP_DATA_SET3_TBL (Table
66).

NBR_CHNS_SET3

0..255

Maximum number of channels of Load Profile


data
that
can
be
contained
in
LP_DATA_SET3_TBL (Table 66).

Decade 6: Load Profile Tables / Table 60 Load Profile Dimension Limits Table

Tables

ANSI C12.19-2008

MAX_INT_TIME_SET3

0..255

Maximum time in minutes for Load Profile


interval duration that can be contained in
LP_DATA_SET3_TBL (Table 66).

NBR_BLKS_SET4

0..65535

Maximum number of blocks that can be


contained in LP_DATA_SET4_TBL (Table 67).

NBR_BLK_INTS_SET4

0..65535

Maximum number of intervals per block that can


be contained in LP_DATA_SET4_TBL (Table
67).

NBR_CHNS_SET4

0..255

Maximum number of channels of Load Profile


data
that
can
be
contained
in
LP_DATA_SET4_TBL (Table 67).

MAX_INT_TIME_SET4

0..255

Maximum time in minutes for Load Profile


interval duration that can be contained in
LP_DATA_SET4_TBL (Table 67).

Decade 6: Load Profile Tables / Table 60 Load Profile Dimension Limits Table

189

ANSI C12.19-2008

9.7.2

Tables

Table 61 Actual Load Profile Limiting Table

Table 61 Data Description


ACT_LP_TBL (Table 61) contains actual dimensions for Load Profile data. This Decade provides for up
to four independent sets of Load Profile data.
Global Default Table Property Overrides: Role=ACTUAL
Table 61 Type Definitions
TABLE 61 ACT_LP_TBL = LP_SET_RCD;
Table 61 Element Descriptions
Value

Identifier
LP_FLAGS_BFLD

Redefines: DIM_LP_TBL.LP_FLAGS_BFLD.
This bit field specifies Load Profile list
management capabilities.

LP_SET1_INHIBIT_OVF_FLAG
FALSE
TRUE
LP_SET2_INHIBIT_OVF_FLAG
FALSE
TRUE
LP_SET3_INHIBIT_OVF_FLAG
FALSE
TRUE
LP_SET4_INHIBIT_OVF_FLAG
FALSE
TRUE
BLK_END_READ_FLAG

FALSE
TRUE

190

Definition

End Device is not inhibiting Load Profile set 1


once an overflow occurs.
End Device is inhibiting Load Profile set 1 once
an overflow occurs.
End Device is not inhibiting Load Profile set 2
once an overflow occurs.
End Device is inhibiting Load Profile set 2 once
an overflow occurs.
End Device is not inhibiting Load Profile set 3
once an overflow occurs.
End Device is inhibiting Load Profile set 3 once
an overflow occurs.
End Device is not inhibiting Load Profile set 4
once an overflow occurs.
End Device is inhibiting Load Profile set 4 once
an overflow occurs.
End Device is not providing block-end register
reading information.
End Device is providing block-end register
reading information. Although it is possible for
BLK_END_READ_FLAG
and
BLK_END_PULSE_FLAG to both be set to
TRUE, this combination shall not be used.

Decade 6: Load Profile Tables / Table 61 Actual Load Profile Limiting Table

Tables

ANSI C12.19-2008

BLK_END_PULSE_FLAG

FALSE
TRUE

SCALAR_DIVISOR_FLAG_SET1
FALSE
TRUE
SCALAR_DIVISOR_FLAG_SET2
FALSE
TRUE
SCALAR_DIVISOR_FLAG_SET3
FALSE
TRUE
SCALAR_DIVISOR_FLAG_SET4
FALSE
TRUE
EXTENDED_INT_STATUS_FLAG
FALSE
TRUE
SIMPLE_INT_STATUS_FLAG FALSE
TRUE
BLK_END_RD_INDICATOR_FLAG

FALSE
TRUE
LP_FMATS_BFLD

End Device does not have block-end pulse


accumulator data.
End Device has block-end pulse accumulator
data.
Although
it
is
possible
for
BLK_END_READ_FLAG
and
BLK_END_PULSE_FLAG to both be set to
TRUE, this combination shall not be used.
End Device does not have scalars and divisors
associated with set 1 Load Profile interval data.
End Device does have scalars and divisors
associated with set 1 Load Profile interval data.
End Device does not have scalars and divisors
associated with set 2 Load Profile interval data.
The End Device has scalars and divisors
associated with set 2 Load Profile interval data.
End Device does not have scalars and divisors
associated with set 3 Load Profile interval data.
End Device does have scalars and divisors
associated with set 3 Load Profile interval data.
End Device does not have scalars and divisors
associated with set 4 Load Profile interval data.
End Device does have scalars and divisors
associated with set 4 Load Profile interval data.
End Device does not return extended interval
status with Load Profile interval data.
End Device returns extended interval status with
Load Profile interval data.
End Device does not return simple interval
status with Load Profile interval data.
End Device returns simple interval status with
Load Profile interval data.
The end block reading flag. When DIM_LP_TBL
(Table 60) and ACT_LP_TBL (Table 61) are
both present then they shall have identical
values for BLK_END_RD_INDICATOR_FLAG.
Block-end readings (END_READINGS) are
cumulative across all blocks.
Block-end readings (END_READINGS) are only
across the associated block.
Redefines: DIM_LP_TBL.LP_FMATS_BFLD.
This set of Booleans specifies the format(s) in
use in LP_CTRL_TBL (Table 62).

Decade 6: Load Profile Tables / Table 61 Actual Load Profile Limiting Table

191

ANSI C12.19-2008

Tables

INV_UINT8_FLAG

FALSE
TRUE

UINT8 format is not in use.


An interval format of UINT8 is being used.

INV_UINT16_FLAG

FALSE
TRUE

UINT16 format is not in use.


An interval format of UINT16 is being used.

INV_UINT32_FLAG

FALSE
TRUE

UINT32 format is not in use.


An interval format of UINT32 can be used.

INV_INT8_FLAG

FALSE
TRUE

INT8 format is not in use.


An interval format of INT8 is being used.

INV_INT16_FLAG

FALSE
TRUE

INT16 format is not in use.


An interval format of INT16 is being used.

INV_INT32_FLAG

FALSE
TRUE

INT32 format is not in use.


An interval format of INT32 is being used.

INV_NI_FMAT1_FLAG

FALSE
TRUE

NI_FMAT1 format is not in use.


An interval format of NI_FMAT1 is being used.

INV_NI_FMAT2_FLAG

FALSE
TRUE

NI_FMAT2 format is not in use.


An interval format of NI_FMAT2 is being used.

LP_SET_RCD

Redefines: DIM_LP_TBL.LP_SET_RCD.
This record contains information defining each
set of Load Profile information.

LP_MEMORY_LEN

0..4294967295
Current number of octets of storage being used
for Load Profile data. This reflects the combined
sizes of LP_DATA_SET1_TBL (Table 64),
LP_DATA_SET2_TBL
(Table
65),
LP_DATA_SET3_TBL
(Table
66),
and
LP_DATA_SET4_TBL (Table 67).

192

LP_FLAGS

See LP_FLAGS_BFLD.

LP_FMATS

See LP_FMATS_BFLD.

NBR_BLKS_SET1

0..65535

Actual number of blocks in


LP_DATA_SET1_TBL (Table 64).

use

NBR_BLK_INTS_SET1

0..65535

Actual number of intervals per block contained


in LP_DATA_SET1_TBL (Table 64).

NBR_CHNS_SET1

0..255

Actual number of channels of Load Profile data


contained in LP_DATA_SET1_TBL (Table 64).

MAX_INT_TIME_SET1

0..255

Actual interval duration in minutes for Load


Profile contained in LP_DATA_SET1_TBL
(Table 64).

NBR_BLKS_SET2

0..65535

Actual number of blocks in


LP_DATA_SET2_TBL (Table 65).

use

in

in

Decade 6: Load Profile Tables / Table 61 Actual Load Profile Limiting Table

Tables

ANSI C12.19-2008

NBR_BLK_INTS_SET2

0..65535

Actual number of intervals per block contained


in LP_DATA_SET2_TBL (Table 65).

NBR_CHNS_SET2

0..255

Actual number of channels of Load Profile data


contained in LP_DATA_SET2_TBL (Table 65).

MAX_INT_TIME_SET2

0..255

Actual interval duration in minutes for Load


Profile contained in LP_DATA_SET2_TBL
(Table 65).

NBR_BLKS_SET3

0..65535

Actual number of blocks in


LP_DATA_SET3_TBL (Table 66).

NBR_BLK_INTS_SET3

0..65535

Actual number of intervals per block contained


in LP_DATA_SET3_TBL (Table 66).

NBR_CHNS_SET3

0..255

Actual number of channels of Load Profile data


contained in LP_DATA_SET3_TBL (Table 66).

MAX_INT_TIME_SET3

0..255

Actual interval duration in minutes for Load


Profile contained in LP_DATA_SET3_TBL
(Table 66).

NBR_BLKS_SET4

0..65535

Actual number of blocks in


LP_DATA_SET4_TBL (Table 67).

NBR_BLK_INTS_SET4

0..65535

Actual number of intervals per block contained


in LP_DATA_SET4_TBL (Table 67).

NBR_CHNS_SET4

0..255

Actual number of channels of Load Profile data


contained in LP_DATA_SET4_TBL (Table 67).

MAX_INT_TIME_SET4

0..255

Actual interval duration in minutes for Load


Profile contained in LP_DATA_SET4_TBL
(Table 67).

Decade 6: Load Profile Tables / Table 61 Actual Load Profile Limiting Table

use

use

in

in

193

ANSI C12.19-2008

9.7.3

Tables

Table 62 Load Profile Control Table

Table 62 Data Description


LP_CTRL_TBL (Table 62) defines the data sources and formats used in the collection of Load Profile
data.
Global Default Table Property Overrides: Role=CONTROL
Table 62 Type Definitions
TYPE LP_CTRL_FLAGS_BFLD = BIT FIELD OF UINT8
END_RDG_FLAG
: BOOL(0);
FILLER
: FILL(1..7);
END;
TYPE LP_SOURCE_SEL_RCD = PACKED RECORD
CHNL_FLAG
: LP_CTRL_FLAGS_BFLD;
LP_SOURCE_SELECT
: STD.SOURCE_SELECT_RCD;
END_BLK_RDG_SOURCE_SELECT : STD.SOURCE_SELECT_RCD;
END;
{Enumerator INT_FMT_ENUM}
TYPE DATA_SELECTION_RCD = PACKED RECORD
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET1_TBL] THEN
LP_SEL_SET1
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET1] OF
LP_SOURCE_SEL_RCD;
INT_FMT_CDE1
: UINT8;
IF ACT_LP_TBL.SCALAR_DIVISOR_FLAG_SET1 THEN
SCALARS_SET1
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET1] OF
UINT16;
DIVISOR_SET1: ARRAY[ACT_LP_TBL.NBR_CHNS_SET1] OF UINT16;
END;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET2_TBL] THEN
LP_SEL_SET2
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET2] OF
LP_SOURCE_SEL_RCD;
INT_FMT_CDE2
: UINT8;
IF ACT_LP_TBL.SCALAR_DIVISOR_FLAG_SET2 THEN
SCALARS_SET2
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET2] OF
UINT16;
DIVISOR_SET2: ARRAY[ACT_LP_TBL.NBR_CHNS_SET2] OF UINT16;
END;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET3_TBL] THEN
LP_SEL_SET3
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET3] OF
LP_SOURCE_SEL_RCD;
INT_FMT_CDE3
: UINT8;
IF ACT_LP_TBL.SCALAR_DIVISOR_FLAG_SET3 THEN
SCALARS_SET3
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET3] OF
UINT16;
DIVISOR_SET3: ARRAY[ACT_LP_TBL.NBR_CHNS_SET3] OF UINT16;
END;
194

Decade 6: Load Profile Tables / Table 62 Load Profile Control Table

Tables

ANSI C12.19-2008

END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET4_TBL] THEN
LP_SEL_SET4
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET4] OF
LP_SOURCE_SEL_RCD;
INT_FMT_CDE4
: UINT8;
IF ACT_LP_TBL.SCALAR_DIVISOR_FLAG_SET4 THEN
SCALARS_SET4
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET4] OF
UINT16;
DIVISOR_SET4: ARRAY[ACT_LP_TBL.NBR_CHNS_SET4] OF UINT16;
END;
END;
END;
TABLE 62 LP_CTRL_TBL = DATA_SELECTION_RCD;
Table 62 Element Descriptions
Identifier

Value

Definition

FALSE

Channel does not have an associated end


reading.
Channel does have an associated end reading.

LP_CTRL_FLAGS_BFLD
END_RDG_FLAG

TRUE
LP_SOURCE_SEL_RCD
CHNL_FLAG

Flags associated with a particular channel.

LP_SOURCE_SELECT

Data source selector of the interval data for a


specific channel.

END_BLK_RDG_SOURCE_SELECT

Data source selector of the block end reading


for a specific channel.

INT_FMT_ENUM
1
2
4
8
16
32
64
128

Code identifying the format of interval data.


UINT8
UINT16
UINT32
INT8
INT16
INT32
NI_FMAT1
NI_FMAT2
All other code values are Reserved.

DATA_SELECTION_RCD
LP_SEL_SET1

This record stores all information concerning


each of the selected channels.
Array of records that identifies sources of data
for each channel of interval data in
LP_DATA_SET1_TBL (Table 64).

Decade 6: Load Profile Tables / Table 62 Load Profile Control Table

195

ANSI C12.19-2008

196

Tables

INT_FMT_CDE1

Single code selecting the format for all interval


data in LP_DATA_SET1_TBL (Table 64). See
INT_FMT_ENUM.

SCALARS_SET1

Array of scalars applied to interval data before


recording pulse data in Load Profile set 1.

DIVISORS_SET1

Array of divisors applied to interval data before


recording pulse data in Load Profile set 1.

LP_SEL_SET2

An array of records that identifies sources of


data for each channel of interval data in
LP_DATA_SET2_TBL (Table 65).

INT_FMT_CDE2

Single code selecting the format for all interval


data in LP_DATA_SET2_TBL (Table 65). See
INT_FMT_ENUM.

SCALARS_SET2

Array of scalars applied to interval data before


recording pulse data in Load Profile set 2.

DIVISORS_SET2

Array of divisors applied to interval data before


recording pulse data in Load Profile set 2.

LP_SEL_SET3

Array of records that identifies sources of data


for each channel of interval data in
LP_DATA_SET3_TBL (Table 66).

INT_FMT_CDE3

Single code selecting the format for all interval


data in LP_DATA_SET3_TBL (Table 66). See
INT_FMT_ENUM.

SCALARS_SET3

Array of scalars applied to interval data before


recording pulse data in Load Profile set 3.

DIVISORS_SET3

Array of divisors applied to interval data before


recording pulse data in Load Profile set 3.

LP_SEL_SET4

Array of records that identifies sources of data


for each channel of interval data in
LP_DATA_SET4_TBL (Table 67).

INT_FMT_CDE4

Single code selecting the format for all interval


data in LP_DATA_SET4_TBL (Table 67). See
INT_FMT_ENUM.

SCALARS_SET4

Array of scalars applied to interval data before


recording pulse data in Load Profile set 4.

DIVISORS_SET4

Array of divisors applied to interval data before


recording pulse data in Load Profile set 4.

Decade 6: Load Profile Tables / Table 62 Load Profile Control Table

Tables

9.7.4

ANSI C12.19-2008

Table 63 Load Profile Status Table

Table 63 Data Description


LP_STATUS_TBL (Table 63) contains the status of each Load Profile data set.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 63 Type Definitions
TYPE LP_SET_STATUS_BFLD = BIT FIELD OF UINT8
ORDER
: UINT(0..0);
OVERFLOW_FLAG
: BOOL(1);
LIST_TYPE
: UINT(2..2);
BLOCK_INHIBIT_OVERFLOW_FLAG
: BOOL(3);
INTERVAL_ORDER
: UINT(4..4);
ACTIVE_MODE_FLAG
: BOOL(5);
TEST_MODE
: UINT(6..6);
FILLER
: FILL(7..7);
END;
TYPE LP_SET_STATUS_RCD = PACKED RECORD
LP_SET_STATUS_FLAGS
: LP_SET_STATUS_BFLD;
NBR_VALID_BLOCKS
: UINT16;
LAST_BLOCK_ELEMENT
: UINT16;
LAST_BLOCK_SEQ_NBR
: UINT32;
NBR_UNREAD_BLOCKS
: UINT16;
NBR_VALID_INT
: UINT16;
END;
TYPE LP_STATUS_RCD = PACKED RECORD
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET1_TBL] THEN
LP_STATUS_SET1
: LP_SET_STATUS_RCD;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET2_TBL] THEN
LP_STATUS_SET2
: LP_SET_STATUS_RCD;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET3_TBL] THEN
LP_STATUS_SET3
: LP_SET_STATUS_RCD;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[LP_DATA_SET4_TBL] THEN
LP_STATUS_SET4
: LP_SET_STATUS_RCD;
END;
END;
TABLE 63 LP_STATUS_TBL = LP_STATUS_RCD;

Decade 6: Load Profile Tables / Table 63 Load Profile Status Table

197

ANSI C12.19-2008

Tables

Table 63 Element Descriptions


Identifier

Value

Definition

LP_SET_STATUS_BFLD
ORDER
0
1
OVERFLOW_FLAG

FALSE
TRUE

LIST_TYPE
0
1

Overflow has not occurred.


An attempt was made to enter an interval in a
new data block such that the number of unread
blocks exceeded the actual number of possible
blocks in Load Profile storage.
Alias: LIST_TYPE_FLAG.
FIFO (First In First Out) as placed in Load
Profile storage.
Circular list as placed in Load Profile storage.

BLOCK_INHIBIT_OVERFLOW_FLAG

The
same
value
as
ACT_LP_TBL.
LP_SETn_INHIBIT_OVF_FLAG.

INTERVAL_ORDER

Intervals in each block of Load Profile are


transported in ascending order (N is older than
N+1).
Intervals in each block of Load Profile are
transported in descending order (N is newer
than N+1).

0
1

ACTIVE_MODE_FLAG

FALSE
TRUE

Data set is not collecting data.


Data set is collecting data.

TEST_MODE

0
1

Data set is collecting Metering Mode data.


Data set is collecting Test Mode data.

LP_SET_STATUS_RCD

Atomic=true, Accessibility=READONLY.

LP_SET_STATUS_FLAGS
NBR_VALID_BLOCKS

198

Alias: BLOCK_ORDER.
Blocks of Load Profile data are transported in
ascending order (N is older than N+1).
Blocks of Load Profile data are transported in
descending order (N is newer than N+1).

See LP_SET_STATUS_BFLD.
0..65535

Number of valid Load Profile data blocks in Load


Profile data tables LP_DATA_SET1_TBL
(Table 64), LP_DATA_SET2_TBL (Table 65),
LP_DATA_SET3_TBL
(Table
66),
and
LP_DATA_SET4_TBL (Table 67), Load Profile
block arrays. The range is zero (meaning no
data blocks in Load Profile Data Table) to the
actual dimension of the number of Load Profile
data blocks. The block is considered valid when
at least one interval is written.

Decade 6: Load Profile Tables / Table 63 Load Profile Status Table

Tables

ANSI C12.19-2008

LAST_BLOCK_ELEMENT

0..65535

LAST_BLOCK_SEQ_NBR

0..4294967295

Array element index of the newest valid data


block in the Load Profile data array. This field is
valid only if NBR_VALID_BLOCKS is greater
than zero.
Sequence number of the newest valid data
block (LAST_BLOCK_ELEMENT) in the Load
Profile data array. This sequence number
corresponds to the first valid interval entry in the
block.

NBR_UNREAD_BLOCKS

0..65535

Number of Load Profile blocks that have not


been read. This number shall only be updated
through the invocation of
Procedure 04,
Reset List Pointers or Procedure 05, Update
Last Read Entry.

NBR_VALID_INT

0..65535

Number of valid intervals stored in the newest


Load Profile block whose array index is
LAST_BLOCK_ELEMENT. Valid values are in
the range of zero (meaning no interval in the
array) to the actual dimension of the number of
intervals per block.

LP_STATUS_RCD
LP_STATUS_SET1

Status information for profile data set 1.

LP_STATUS_SET2

Status information for profile data set 2.

LP_STATUS_SET3

Status information for profile data set 3.

LP_STATUS_SET4

Status information for profile data set 4.

Decade 6: Load Profile Tables / Table 63 Load Profile Status Table

199

ANSI C12.19-2008

9.7.5

Tables

Table 64 Load Profile Data Set One Table

Table 64 Data Description


LP_DATA_SET1_TBL (Table 64) contains information on Load Profile data set one.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 64 Type Definitions
TYPE INT_FMT1_RCD = PACKED RECORD
SWITCH LP_CTRL_TBL.INT_FMT_CDE1 OF
CASE 1
: ITEM : UINT8;
CASE 2
: ITEM : UINT16;
CASE 4
: ITEM : UINT32;
CASE 8
: ITEM : INT8;
CASE 16
: ITEM : INT16;
CASE 32
: ITEM : INT32;
CASE 64
: ITEM : NI_FMAT1;
CASE 128
: ITEM : NI_FMAT2;
END;
END;
{ Enumerator CHANNEL_STATUS_ENUM }
TYPE EXTENDED_STATUS_BFLD = BIT FIELD OF UINT8
{ This bit field is expected to be used as an entry of an array. The interpretation of the nibbles of
each UINT8 member of the array depends on its position index being the first in the collection
(.lastIndex == 0) or not being the first (.lastIndex > 0). }
IF .lastIndex == 0 THEN
{ The index value of this bit field (i.e., the first UINT8) in the containing array is 0,
implying that this UINT8 contains the extended common status flags (bits 4..7) and the
extended channel status of channel 1 (bits 0..3). }
COMMON_DST_FLAG
: BOOL(4);
COMMON_POWER_FAIL_FLAG
: BOOL(5);
COMMON_CLOCK_SET_FWD_FLAG : BOOL(6);
COMMON_CLOCK_SET_BKWD_FLAG: BOOL(7);
ELSE
{ This is the description of the extended status array indices that are greater than zero.
Each UINT8 contains data for of even channels 2,4,6 and odd channels 3,5,7 through
channel NBR_CHNS_SETn, where n is the load profile set number. The last
CHANNEL_STATUS_ODD bits are FILL bits, when the number of channels is even. }
CHANNEL_STATUS_EVEN
END;
CHANNEL_STATUS_ODD

: UINT(4..7);
: UINT(0..3);

END;
TYPE INT_SET1_RCD = PACKED RECORD
IF ACT_LP_TBL.EXTENDED_INT_STATUS_FLAG THEN
EXTENDED_INT_STATUS
: ARRAY[(ACT_LP_TBL.NBR_CHNS_SET1/2)+1] OF
EXTENDED_STATUS_BFLD;
200

Decade 6: Load Profile Tables / Table 64 Load Profile Data Set One Table

Tables

ANSI C12.19-2008

END;
INT_DATA

: ARRAY[ACT_LP_TBL.NBR_CHNS_SET1] OF INT_FMT1_RCD;

END;
TYPE READINGS_RCD = PACKED RECORD
IF ACT_LP_TBL.BLK_END_READ_FLAG THEN
BLOCK_END_READ : NI_FMAT1;
END;
IF ACT_LP_TBL.BLK_END_PULSE_FLAG THEN
BLOCK_END_PULSE : UINT32;
END;
END;
TYPE LP_BLK1_DAT_RCD = PACKED RECORD
BLK_END_TIME
: STIME_DATE;
END_READINGS
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET1] OF READINGS_RCD;
IF ACT_LP_TBL.SIMPLE_INT_STATUS_FLAG THEN
SIMPLE_INT_STATUS : SET((ACT_LP_TBL.NBR_BLK_INTS_SET1+7)/8);
END;
LP_INT
: ARRAY[ACT_LP_TBL.NBR_BLK_INTS_SET1] OF
INT_SET1_RCD;
END;
TYPE LP_DATA_SET1_RCD = PACKED RECORD
LP_DATA_SET1
: ARRAY[ACT_LP_TBL.NBR_BLKS_SET1] OF
LP_BLK1_DAT_RCD;
END;
TABLE 64 LP_DATA_SET1_TBL = LP_DATA_SET1_RCD;
Table 64 Element Descriptions
Identifier

Value

Definition

INT_FMT1_RCD

Selector for the format of the channel data. Also


See LP_CTRL_TBL.INT_FMT_ENUM.

CHANNEL_STATUS_ENUM

The contents of the even and odd channel


status
nibbles.
See
EXTENDED_STATUS_BFLD.
0
1
2
3
4
5
6
7
8..15

No exception status indicated.


Numeric overflow condition detected.
Partial interval due to common state. The cause
is indicated in the common status flags.
Long interval due to common state. The cause
is indicated in the common status flags.
Skipped interval due to common state. The
cause is indicated in the common status flags.
The INT_DATA shall be set to zero (0).
The interval contains test mode data.
The configuration changed during this interval.
Load profile recording stopped.
Reserved.

Decade 6: Load Profile Tables / Table 64 Load Profile Data Set One Table

201

ANSI C12.19-2008

Tables

EXTENDED_INT_STATUS_BFLD

This bit field is expected to be used as an entry


of an array. The interpretation of the nibbles of
each UINT8 member of the array depends on its
position index being the first in the collection
(.lastIndex == 0) or not being the first
(.lastIndex > 0).

COMMON_DST_ FLAG
FALSE
TRUE
COMMON_POWER_FAIL_FLAG

FALSE
TRUE
COMMON_CLOCK_SET_FWD_FLAG

FALSE
TRUE
COMMON_CLOCK_SET_BKWD_FLAG
FALSE
TRUE

Power fail detection flag. If the power fail


condition spans an entire interval duration then
the value of INT_DATA shall be set to zero (0)
in all applicable intervals of the affected block
until the power is restored or the block is closed,
whichever occurs first.
Power fail did not occur during or at the start of
this interval.
Power fail occurred during or at the start of this
interval.
Clock set forward indication flag. Setting the
clock forward may cause intervals and blocks to
be partial or skipped. Time reset across a block
boundary may result in the closure of that active
block and setting all remaining interval
INT_DATA to zero (0) asserting the
COMMON_CLOCK_SET_FWD_FLAG
repeatedly to TRUE and the channels status to
skipped interval due to common state (4).
The clock was not set forward during or at the
start of this interval.
The clock was set forward during or at start of
this interval The interval may be short.
Clock set backward indication flag.
The clock was not set backward during or at the
start of this interval.
The clock was set backward during or at start of
this interval The interval may be long.

CHANNEL_STATUS_EVEN

The contents of the even channel status nibble.


See CHANNEL_STATUS_ENUM.

CHANNEL_STATUS_ODD

The contents of the odd channel status nibble.


See CHANNEL_STATUS_ENUM.

INT_SET1_RCD
EXTENDED_INT_STATUS

202

Daylight saving time status change flag.


Daylight standard time was not in effect during
or at start of this interval.
Daylight saving time was in effect during or at
start of this interval.

This is one or more single octets of interval


status conditions provided for all channels. One
nibble (4 bits) of status information is provided
for each channel in the set, plus one extra nibble
is provided for status conditions common to all

Decade 6: Load Profile Tables / Table 64 Load Profile Data Set One Table

Tables

ANSI C12.19-2008
channels. This common status nibble is always
the first nibble of the set (that is, the high order 4
bits
of
the
first
octet
of
EXTENDED_INT_STATUS).
Since
EXTENDED_INT_STATUS is an integral
number of octets in length, this field contains
one nibble of FILL, if the number of channels in
the set is even. This fill field, when present
always
occupies
the
last
nibble
of
EXTENDED_INT_STATUS (that is, the low
order 4 bits of the last octet of
EXTENDED_INT_STATUS).
See
EXTENDED_INT_STATUS_BFLD.
INT_DATA

Array of interval values for each channel in the


block, recorded at a single time. Channels are
presented in the same order. The order of the
channels
matches
their
definition
in
LP_CTRL_TBL (Table 62).

READINGS_RCD
BLOCK_END_READ
BLOCK_END_PULSE

End-of-block data reading.


0..4294967295 End-of-block pulse accumulator value.

LP_BLK1_DAT_RCD
BLK_END_TIME

Parameter containing the ending date and time


of the last interval of data entered in this data
block. This shall only contain the expected endof-interval value (for example, if a one-hour
interval starting at 10:00 terminates prematurely
at 10:15, the BLK_END_TIME shall indicate
11:00). When the block is closed (it is no longer
the current active block) for any reason the
BLK_END_TIME shall be set to the blocks
starting time + NBR_BLK_INTS_SET1 *
MAX_INT_TIME_SET1.

END_READINGS

Array of readings of the end reading sources,


taken at the interval end time of the last interval
of data entered in the block. One end reading is
provided for each channel in the block. The
order of the readings matches their definition in
LP_CTRL_TBL (Table 62). The format is
controlled by READING_RCD.

SIMPLE_INT_STATUS

Set of status bits, one per interval, that specifies


whether the corresponding interval is valid.
FALSE
TRUE

This interval data has one or more invalid


entries.
This interval data is valid.

Decade 6: Load Profile Tables / Table 64 Load Profile Data Set One Table

203

ANSI C12.19-2008

LP_INT

LP_DATA_SET1_RCD
LP_DATA_SET1

204

Tables

Array of interval records in the block. Intervals


are stored in the chronological order, specified
by INTERVAL_ORDER.
The Load Profile data blocks.
Array of Load Profile data blocks.

Decade 6: Load Profile Tables / Table 64 Load Profile Data Set One Table

Tables

9.7.6

ANSI C12.19-2008

Table 65 Load Profile Data Set Two Table

Table 65 Data Description


LP_DATA_SET2_TBL (Table 65) contains information on Load Profile data set two.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 65 Type Definitions
TYPE INT_FMT2_RCD = PACKED RECORD
SWITCH LP_CTRL_TBL.INT_FMT_CDE2 OF
CASE 1
:
ITEM : UINT8;
CASE 2
:
ITEM : UINT16;
CASE 4
:
ITEM : UINT32;
CASE 8
:
ITEM : INT8;
CASE 16
:
ITEM : INT16;
CASE 32
:
ITEM : INT32;
CASE 64
:
ITEM : NI_FMAT1;
CASE 128
:
ITEM : NI_FMAT2;
END;
END;
TYPE INT_SET2_RCD = PACKED RECORD
IF ACT_LP_TBL.EXTENDED_INT_STATUS_FLAG THEN
EXTENDED_INT_STATUS
: ARRAY[(ACT_LP_TBL.NBR_CHNS_SET2 / 2)+1] OF
LP_DATA_SET1_TBL.EXTENDED_STATUS_BFLD;
END;
INT_DATA

: ARRAY[ACT_LP_TBL.NBR_CHNS_SET2] OF INT_FMT2_RCD;

END;
TYPE READINGS_RCD = PACKED RECORD
IF ACT_LP_TBL.BLK_END_READ_FLAG THEN
BLOCK_END_READ : NI_FMAT1;
END;
IF ACT_LP_TBL.BLK_END_PULSE_FLAG THEN
BLOCK_END_PULSE : UINT32;
END;
END;
TYPE LP_BLK2_DAT_RCD = PACKED RECORD
BLK_END_TIME
: STIME_DATE;
END_READINGS
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET2] OF READINGS_RCD;
IF ACT_LP_TBL.SIMPLE_INT_STATUS_FLAG THEN
SIMPLE_INT_STATUS : SET((ACT_LP_TBL.NBR_BLK_INTS_SET2+7)/8);
END;
LP_INT
: ARRAY[ACT_LP_TBL.NBR_BLK_INTS_SET2] OF
INT_SET2_RCD;
END;
TYPE LP_DATA_SET2_RCD = PACKED RECORD
LP_DATA_SET2
: ARRAY[ACT_LP_TBL.NBR_BLKS_SET2] OF

Decade 6: Load Profile Tables / Table 65 Load Profile Data Set Two Table

205

ANSI C12.19-2008

Tables

LP_BLK2_DAT_RCD;
END;
TABLE 65 LP_DATA_SET2_TBL = LP_DATA_SET2_RCD;
Table 65 Element Descriptions
Value

Identifier
INT_FMT2_RCD

Definition
Selector for the format of the channel data. Also
See LP_CTRL_TBL.INT_FMT_ENUM.

INT_SET2_RCD
EXTENDED_INT_STATUS

INT_DATA

An array of extended status and flags per


LP_DATA_SET1.
EXTENDED_INT_STATUS_BFLD.
For
additional
details
see
LP_DATA_SET1.
INT_SET1_RCD.EXTENDED_INT_STATUS.
Array of interval values for each channel in the
block, recorded at a single time. Channels are
presented in the same order. The order of the
channels
matches
their
definition
in
LP_CTRL_TBL (Table 62).

READINGS_RCD
BLOCK_END_READ

End-of-block data reading.

BLOCK_END_PULSE

0..4294967295 End-of-block pulse accumulator value.

LP_BLK2_DAT_RCD

206

BLK_END_TIME

Parameter containing the ending date and time


of the last interval of data entered in this data
block. This shall only contain the expected endof-interval value (for example, if a one-hour
interval starting at 10:00 terminates prematurely
at 10:15, the BLK_END_TIME shall indicate
11:00). When the block is closed (it is no longer
the active block) for any reason the
BLK_END_TIME shall be set to the blocks
starting time + NBR_BLK_INTS_SET2 *
MAX_INT_TIME_SET2.

END_READINGS

Array of readings of the end reading sources,


taken at the interval end time of the last interval
of data entered in the block. One end reading is
provided for each channel in the block. The
order of the readings matches their definition in
LP_CTRL_TBL (Table 62). The format is
controlled by READING_RCD.

SIMPLE_INT_STATUS

Set of status bits, one per interval, that specifies


whether the corresponding interval is valid.

Decade 6: Load Profile Tables / Table 65 Load Profile Data Set Two Table

Tables

ANSI C12.19-2008

FALSE
TRUE
LP_INT

LP_DATA_SET2_RCD
LP_DATA_SET2

This interval data has one or more invalid


entries.
This interval data is valid.
Array of interval records in the block. Intervals
are stored in the chronological order, specified
by INTERVAL_ORDER.
The Load Profile data blocks.
Array of Load Profile data blocks.

Decade 6: Load Profile Tables / Table 65 Load Profile Data Set Two Table

207

ANSI C12.19-2008

9.7.7

Tables

Table 66 Load Profile Data Set Three Table

Table 66 Data Description


LP_DATA_SET3_TBL (Table 66) contains information on Load Profile data set three.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 66 Type Definitions
TYPE INT_FMT3_RCD = PACKED RECORD
SWITCH LP_CTRL_TBL.INT_FMT_CDE3 OF
CASE 1
:
ITEM : UINT8;
CASE 2
:
ITEM : UINT16;
CASE 4
:
ITEM : UINT32;
CASE 8
:
ITEM : INT8;
CASE 16
:
ITEM : INT16;
CASE 32
:
ITEM : INT32;
CASE 64
:
ITEM : NI_FMAT1;
CASE 128
:
ITEM : NI_FMAT2;
END;
END;
TYPE INT_SET3_RCD = PACKED RECORD
IF ACT_LP_TBL.EXTENDED_INT_STATUS_FLAG THEN
EXTENDED_INT_STATUS :
ARRAY[(ACT_LP_TBL.NBR_CHNS_SET3 / 2)+1] OF
LP_DATA_SET1_TBL.EXTENDED_STATUS_BFLD;
END;
INT_DATA
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET3] OF INT_FMT3_RCD;
END;
TYPE READINGS_RCD = PACKED RECORD
IF ACT_LP_TBL.BLK_END_READ_FLAG THEN
BLOCK_END_READ : NI_FMAT1;
END;
IF ACT_LP_TBL.BLK_END_PULSE_FLAG THEN
BLOCK_END_PULSE : UINT32;
END;
END;
TYPE LP_BLK3_DAT_RCD = PACKED RECORD
BLK_END_TIME
: STIME_DATE;
END_READINGS
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET3] OF READINGS_RCD;
IF ACT_LP_TBL.SIMPLE_INT_STATUS_FLAG THEN
SIMPLE_INT_STATUS : SET((ACT_LP_TBL.NBR_BLK_INTS_SET3+7)/8);
END;
LP_INT
: ARRAY[ACT_LP_TBL.NBR_BLK_INTS_SET3] OF
INT_SET3_RCD;
END;
TYPE LP_DATA_SET3_RCD = PACKED RECORD
LP_DATA_SET3
: ARRAY[ACT_LP_TBL.NBR_BLKS_SET3] OF
LP_BLK3_DAT_RCD;
208

Decade 6: Load Profile Tables / Table 66 Load Profile Data Set Three Table

Tables

ANSI C12.19-2008

END;
TABLE 66 LP_DATA_SET3_TBL = LP_DATA_SET3_RCD;
Table 66 Element Descriptions
Identifier
INT_FMT3_RCD

Value

Definition
Selector for the format of the channel data. Also
See LP_CTRL_TBL.INT_FMT_ENUM.

INT_SET3_RCD
EXTENDED_INT_STATUS

An array of extended status and flags per


LP_DATA_SET1.
EXTENDED_INT_STATUS_BFLD.
For
additional
details
see
LP_DATA_SET1.
INT_SET1_RCD.EXTENDED_INT_STATUS.

INT_DATA

Array of interval values for each channel in the


block, recorded at a single time. Channels are
presented in the same order. The order of the
channels
matches
their
definition
in
LP_CTRL_TBL (Table 62).

READINGS_RCD
BLOCK_END_READ
BLOCK_END_PULSE

End-of-block data reading.


0..4294967295 End-of-block pulse accumulator value.

LP_BLK3_DAT_RCD
BLK_END_TIME

Parameter containing the ending date and time


of the last interval of data entered in this data
block. This shall only contain the expected endof-interval value (for example, if a one-hour
interval starting at 10:00 terminates prematurely
at 10:15, the BLK_END_TIME shall indicate
11:00). When the block is closed (it is no longer
the active block) for any reason the
BLK_END_TIME shall be set to the blocks
starting time + NBR_BLK_INTS_SET3 *
MAX_INT_TIME_SET3.

END_READINGS

Array of readings of the end reading sources,


taken at the interval end time of the last interval
of data entered in the block. One end reading is
provided for each channel in the block. The
order of the readings matches their definition in
LP_CTRL_TBL (Table 62). The format is
controlled by READING_RCD.

SIMPLE_INT_STATUS

Set of status bits, one per interval, that specifies


whether the corresponding interval is valid.

Decade 6: Load Profile Tables / Table 66 Load Profile Data Set Three Table

209

ANSI C12.19-2008

Tables

FALSE
TRUE
LP_INT

LP_DATA_SET3_RCD
LP_DATA_SET3

210

This interval data has one or more invalid


entries.
This interval data is valid.
Array of interval records in the block. Intervals
are stored in the chronological order, specified
by INTERVAL_ORDER.
The Load Profile data blocks.
Array of Load Profile data blocks.

Decade 6: Load Profile Tables / Table 66 Load Profile Data Set Three Table

Tables

9.7.8

ANSI C12.19-2008

Table 67 Load Profile Data Set Four Table

Table 67 Data Description


LP_DATA_SET4_TBL (Table 67) contains information on Load Profile data set four.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 67 Type Definitions
TYPE INT_FMT4_RCD = PACKED RECORD
SWITCH LP_CTRL_TBL.INT_FMT_CDE4 OF
CASE 1
:
ITEM : UINT8;
CASE 2
:
ITEM : UINT16;
CASE 4
:
ITEM : UINT32;
CASE 8
:
ITEM : INT8;
CASE 16
:
ITEM : INT16;
CASE 32
:
ITEM : INT32;
CASE 64
:
ITEM : NI_FMAT1;
CASE 128
:
ITEM : NI_FMAT2;
END;
END;
TYPE INT_SET4_RCD = PACKED RECORD
IF ACT_LP_TBL.EXTENDED_INT_STATUS_FLAG THEN
EXTENDED_INT_STATUS
: ARRAY[(ACT_LP_TBL.NBR_CHNS_SET4 / 2)+1] OF
LP_DATA_SET1_TBL.EXTENDED_STATUS_BFLD;
END;
INT_DATA

: ARRAY[ACT_LP_TBL.NBR_CHNS_SET4] OF INT_FMT4_RCD;

END;
TYPE READINGS_RCD = PACKED RECORD
IF ACT_LP_TBL.BLK_END_READ_FLAG THEN
BLOCK_END_READ : NI_FMAT1;
END;
IF ACT_LP_TBL.BLK_END_PULSE_FLAG THEN
BLOCK_END_PULSE : UINT32;
END;
END;
TYPE LP_BLK4_DAT_RCD = PACKED RECORD
BLK_END_TIME
: STIME_DATE;
END_READINGS
: ARRAY[ACT_LP_TBL.NBR_CHNS_SET4] OF READINGS_RCD;
IF ACT_LP_TBL.SIMPLE_INT_STATUS_FLAG THEN
SIMPLE_INT_STATUS : SET((ACT_LP_TBL.NBR_BLK_INTS_SET4+7)/8);
END;
LP_INT
: ARRAY[ACT_LP_TBL.NBR_BLK_INTS_SET4] OF
INT_SET4_RCD;
END;
TYPE LP_DATA_SET4_RCD = PACKED RECORD
LP_DATA_SET4
: ARRAY[ACT_LP_TBL.NBR_BLKS_SET4] OF

Decade 6: Load Profile Tables / Table 67 Load Profile Data Set Four Table

211

ANSI C12.19-2008

Tables

LP_BLK4_DAT_RCD;
END;
TABLE 67 LP_DATA_SET4_TBL = LP_DATA_SET4_RCD;
Table 67 Element Descriptions
Value

Identifier
INT_FMT4_RCD

Definition
Selector for the format of the channel data. Also
See LP_CTRL_TBL.INT_FMT_ENUM.

INT_SET4_RCD
EXTENDED_INT_STATUS

An array of extended status and flags per


LP_DATA_SET1.
EXTENDED_INT_STATUS_BFLD.
For
additional
details
see
LP_DATA_SET1.
INT_SET1_RCD.EXTENDED_INT_STATUS.

INT_DATA

Array of interval values for each channel in the


block, recorded at a single time. Channels are
presented in the same order. The order of the
channels
matches
their
definition
in
LP_CTRL_TBL (Table 62).

READINGS_RCD
BLOCK_END_READ

End-of-block data reading.

BLOCK_END_PULSE

0..4294967295 End-of-block pulse accumulator value.

LP_BLK4_DAT_RCD

212

BLK_END_TIME

Parameter containing the ending date and time


of the last interval of data entered in this data
block. This shall only contain the expected endof-interval value (for example, if a one-hour
interval starting at 10:00 terminates prematurely
at 10:15, the BLK_END_TIME shall indicate
11:00). When the block is closed (it is no longer
the active block) for any reason the
BLK_END_TIME shall be set to the blocks
starting time + NBR_BLK_INTS_SET4 *
MAX_INT_TIME_SET4.

END_READINGS

Array of readings of the end reading sources,


taken at the interval end time of the last interval
of data entered in the block. One end reading is
provided for each channel in the block. The
order of the readings matches their definition in
LP_CTRL_TBL (Table 62). The format is
controlled by READING_RCD.

Decade 6: Load Profile Tables / Table 67 Load Profile Data Set Four Table

Tables

ANSI C12.19-2008

SIMPLE_INT_STATUS

Set of status bits, one per interval, that specifies


whether the corresponding interval is valid.
FALSE
TRUE

LP_INT

LP_DATA_SET4_RCD
LP_DATA_SET4

This interval data has one or more invalid


entries.
This interval data is valid.
Array of interval records in the block. Intervals
are stored in the chronological order, specified
by INTERVAL_ORDER.
The Load Profile data blocks.
Array of Load Profile data blocks.

Decade 6: Load Profile Tables / Table 67 Load Profile Data Set Four Table

213

ANSI C12.19-2008

Tables

9.8 Decade 7: History & Event Logs


Decade 7 Name
HISTORY_EVENT_DEC
Decade 7 Data Description
This decade contains the tables associated with the maintenance of the History and Event Logs.
Although very similar in design, the role of the History Log Data (Table 74) is significantly distinguished
from that of the Event Log Data (Table 76). The Event Log Data (Table 76) was designed in a manner to
facilitate the establishment and maintenance of consumer confidence in the End Device operation. For
that reason, the event logger implementation needs to adhere to strict guidelines and uniform rules that
are consistent with the implementation of an audit trail that is capable of tracking securely all End Device
changes to entities of metrological importance. On the other hand, the history logger provides for
monitoring any End Device activity or events which may be of general interest to the operator, utility or
technician (e.g., communication access logs, debugging information, clock drift data, demand reset
tracking, etc.). Both history logger and event logger (secured audit trail) may be coexist in an End Device.
Decade 7 Type Definitions
{ Enumerator EVENT_CODES_ENUM }
Decade 7 Element Descriptions
Identifier

Value

EVENT_CODES_ENUM

The following are the Standard event codes that


may be entered into the history log and event
log tables. For more information on their use
See ANNEX B, History & Event Log Codes
and ANNEX E, Event Logger Implementation.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

214

Definition

No Event.
Primary Power Down.
Primary Power Up.
Time Changed (Time-stamp is old time).
Time Changed (Time-stamp is new time).
Time Changed (Time-stamp is old time in
STIME_DATE format).
Time Changed (Time-stamp new time in
STIME_DATE format).
End Device Accessed for Read.
End Device Accessed for Write.
Procedure Invoked.
Table Written To.
End Device Programmed.
Communication Terminated Normally.
Communication Terminated Abnormally.
Reset List Pointers.
Updated List Pointers.
History Log Cleared.
History Log Pointers Updated.
Event Log Cleared.
Event Log Pointers Updated.

Decade 7: History & Event Logs

Tables

ANSI C12.19-2008
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

Decade 7: History & Event Logs

Demand Reset Occurred.


Self-read Occurred.
Daylight Saving Time On.
Daylight Savings Time Off.
Season Changed.
Rate Change.
Special Schedule Activated.
Tier Switch / Change.
Pending Table Activated.
Pending Table Activation Cleared.
Metering mode started.
Metering mode stopped.
Test mode started.
Test mode stopped.
Meter shop mode started.
Meter shop mode stopped.
End Device reprogrammed.
Configuration error detected.
Self check error detected.
RAM failure detected.
ROM failure detected.
Nonvolatile memory failure detected.
Clock error detected.
Measurement error detected.
Low battery detected.
Low loss potential detected.
Demand overload detected.
Tamper attempt detected.
Reverse rotation detected.
Control point changed by a command.
Control point changed by the schedule.
Control point changed by a condition.
Control point changed for the prepayment.
Added to remaining credit.
Subtracted from remaining credit.
Adjusted the remaining credit.
End Device sealed.
End Device unsealed.
Procedure Invoked (with values).
Table Written To (with values).
End Device Programmed (with values).
End Device sealed (with values).
End Device unsealed (with values).
Procedure Invoked (with signature).
Table Written To (with signature).
End Device Programmed (with signature).
End Device sealed (with signature).
End Device unsealed (with signature).
Procedure Invoked (with signature and values).
Table Written To(with signature and values).
End Device Programmed (with signature and
values).
End Device sealed(with signature and values).
End Device unsealed(with signature and
values).
Read Secured Table.

215

ANSI C12.19-2008

Tables
74
75
76
77.. 2047

9.8.1

Read Secured Register.


Read Secured Table (with values).
Read Secured Register (with values).
Reserved.

Table 70 Log Dimension Limits Table

Table 70 Data Description


DIM_LOG_TBL (Table 70) defines the maximum size and capabilities of the History and Event Log
decade.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 70 Type Definitions
TYPE LOG_FLAGS_BFLD = BIT FIELD OF UINT8
EVENT_NUMBER_FLAG
: BOOL(0);
HIST_DATE_TIME_FLAG
: BOOL(1);
HIST_SEQ_NBR_FLAG
: BOOL(2);
HIST_INHIBIT_OVF_FLAG
: BOOL(3);
EVENT_INHIBIT_OVF_FLAG
: BOOL(4);
FILLER
: FILL(5..7);
END;
TYPE EXT_LOG_FLAGS_BFLD = BIT FIELD OF UINT8
METROLOGICAL_SIG_FLAG
: BOOL(0);
PROGRAM_SIG_FLAG
: BOOL(1);
ALTERNATE_SIG_FLAG
: BOOL(2);
SECURED_REGISTER_FLAG : BOOL(3);
FILLER
: FILL(4..7);
END;
TYPE LOG_RCD = PACKED RECORD
LOG_FLAGS
: LOG_FLAGS_BFLD;
NBR_STD_EVENTS
: UINT8;
NBR_MFG_EVENTS
: UINT8;
HIST_DATA_LENGTH
: UINT8;
EVENT_DATA_LENGTH
: UINT8;
NBR_HISTORY_ENTRIES
: UINT16;
NBR_EVENT_ENTRIES
: UINT16;
IF GEN_CONFIG_TBL.STD_VERSION_NO > 1 THEN
EXT_LOG_FLAGS
: EXT_LOG_FLAGS_BFLD;
NBR_PROGRAM_TABLES
: UINT16;
END;
END;
TABLE 70 DIM_LOG_TBL = LOG_RCD;
Table 70 Element Descriptions
Identifier

Value

Definition

LOG_FLAGS_BFLD

216

Decade 7: History & Event Logs / Table 70 Log Dimension Limits Table

Tables

ANSI C12.19-2008

EVENT_NUMBER_FLAG

FALSE
TRUE

HIST_DATE_TIME_FLAG

FALSE
TRUE

HIST_SEQ_NBR_FLAG

FALSE
TRUE

HIST_INHIBIT_OVF_FLAG

FALSE
TRUE

EVENT_INHIBIT_OVF_FLAG FALSE
TRUE
EXT_LOG_FLAGS_BFLD

A common event number cannot be maintained


in the History and Event Logs.
A common event number can be maintained in
the History and Event Logs.
Date and time cannot be maintained in the
History Log.
Date and time can be maintained in the History
Log.
A sequence number cannot be transported
through the History Log.
A sequence number can be transported through
the History Log.
History Log is not capable of inhibiting overflow.
History Log is capable of inhibiting overflow.
Event Log is not capable of inhibiting overflow.
Event Log is capable of inhibiting overflow.
Additional flags that were introduced in Verision
2 of this Standard in support of audit trail
management.

METROLOGICAL_SIG_FLAG
FALSE
TRUE

The End Device is not capable of including the


METROLOGICAL_SIG field in the End Device
program state table (Table 78).
The End Device is capable of including the
METROLOGICAL_SIG field in the End Device
program state table (Table 78).

PROGRAM_SIG_FLAG
FALSE
TRUE

The End Device is not capable of including the


PROGRAM_SIG field in the End Device
program state table (Table 78).
The End Device is capable of including the
PROGRAM_SIG field in the End Device
program state table (Table 78).

ALTERNATE_SIG_FLAG
FALSE
TRUE

SECURED_REGISTER_FLAG

The End Device is not capable of including the


ALTERNATE_SIG field in the End Device
program state table (Table 78).
The End Device is capable of including the
ALTERNATE_SIG field in the End Device
program state table (Table 78).
The End Device secured register read events
capability flag.

FALSE

The End Device is not capable of generating an


End Device secured register event (Read
Secured Register or Read Secured Table).

Decade 7: History & Event Logs / Table 70 Log Dimension Limits Table

217

ANSI C12.19-2008

Tables
TRUE

LOG_RCD
LOG_FLAGS

See LOG_FLAGS_BFLD.

NBR_STD_EVENTS

0..255

Maximum number of octets in the set


EVENTS_SUPPORTED_TBL.STD_EVENTS_S
UPPORTED (Table 72).

NBR_MFG_EVENTS

0..255

Maximum number of octets in the set


EVENTS_SUPPORTED_TBL.MFG_EVENTS_S
UPPORTED (Table 72).

HIST_DATA_LENGTH

0..255

Maximum
number
of
octets
in
the
HISTORY_LOG_DATA_TBL.HISTORY_ARGU
MENT (Table 74).

EVENT_DATA_LENGTH

0..255

Maximum
number
of
octets
in
the
EVENT_LOG_DATA_TBL.EVENT_ARGUMEN
T (Table 76).

NBR_HISTORY_ENTRIES

0..65535

Maximum number of entries in the History Log in


HISTORY_LOG_DATA_TBL (Table 74).

NBR_EVENT_ENTRIES

0..65535

Maximum number of entries in the Event Log in


EVENT_LOG_DATA_TBL (Table 76).

EXT_LOG_FLAGS

See EXT_LOG_FLAGS_BFLD.

NBR_PROGRAM_TABLES

218

The End Device is capable of generating an End


Device secured register event (Read Secured
Register or Read Secured Table).

0..65535

Maximum number of tables that can be included


in the TABLE_LIST of the End Device program
state (Table 78).

Decade 7: History & Event Logs / Table 70 Log Dimension Limits Table

Tables

9.8.2

ANSI C12.19-2008

Table 71 Actual Log Limiting Table

Table 71 Data Description


ACT_LOG_TBL (Table 71) defines the actual size and capabilities of the History and Event Log Decade.
Global Default Table Property Overrides: Role=ACTUAL
Table 71 Type Definitions
TABLE 71 ACT_LOG_TBL = LOG_RCD;
Table 71 Element Descriptions
Identifier

Value

LOG_FLAGS_BFLD
EVENT_NUMBER_FLAG

FALSE
TRUE

HIST_DATE_TIME_FLAG

FALSE
TRUE

HIST_SEQ_NBR_FLAG

FALSE
TRUE

Definition
Redefines:
DIM_LOG_TBL.LOG_FLAGS_BFLD.
A common event number is not maintained in
the History & Event Logs.
A common event number is maintained in the
History & Event Logs.
A date & time is not maintained in the History
Log.
A date & time is maintained in the History Log.
A sequence number is not transported through
the History Log.
A sequence number is transported through the
History Log.

HIST_INHIBIT_OVF_FLAG
FALSE
TRUE

History Log is not inhibiting new entries when an


overflow condition exists.
History Log is inhibiting new entries when an
overflow condition exists.

EVENT_INHIBIT_OVF_FLAG
FALSE
TRUE
EXT_LOG_FLAGS_BFLD

Event Log is not inhibiting new entries when an


overflow condition exists.
Event Log is inhibiting new entries when an
overflow condition exists.
Redefines:
DIM_LOG_TBL.EXT_LOG_FLAGS_BFLD.
Additional flags that were introduced in Version
2 of this Standard in support of audit trail
management.

METROLOGICAL_SIG_FLAG
FALSE

METROLOGICAL_SIG field is not included in


the End Device program state table (Table 78).

Decade 7: History & Event Logs / Table 71 Actual Log Limiting Table

219

ANSI C12.19-2008

Tables

TRUE

METROLOGICAL_SIG field is included in the


End Device program state table (Table 78).

FALSE

PROGRAM_SIG field is not included in the End


Device program state table (Table 78).
PROGRAM_SIG field is included in the End
Device program state table (Table 78).

PROGRAM_SIG_FLAG
TRUE
ALTERNATE_SIG_FLAG
FALSE
TRUE
SECURED_REGISTER_FLAG

The End Device secured register read events


enabling flag.
FALSE
TRUE

LOG_RCD
LOG_FLAGS

220

ALTERNATE_SIG field is not included in the


End Device program state table (Table 78).
ALTERNATE_SIG field is included in the End
Device program state table (Table 78).

The End Device shall not generate End Device


secured register events (Read Secured Register
or Read Secured Table).
The End Device shall generate End Device
secured register events (Read Secured Register
or Read Secured Table) following the transfer of
a secured register table or elements to an End
Device reader, provided that this capability was
enabled by a successful invocation of the Start
Secured Register procedure. Event logging of
secured register reads shall cease immediately
upon invocation of the Stop Secured Register
procedure, termination of the communication
session (which invoked the Start Secured
Register procedure), or upon reaching the
maximum number of secured read operations
that were permitted.
Redefines: DIM_LOG_TBL.LOG_RCD.
See LOG_FLAG_BFLD.

NBR_STD_EVENTS

0..255

Actual number of octets in the


EVENTS_SUPPORTED_TBL.
STD_EVENTS_SUPPORTED (Table 72).

set

NBR_MFG_EVENTS

0..255

Actual number of octets in the


EVENTS_SUPPORTED_TBL.
MFG_EVENTS_SUPPORTED (Table 72).

set

HIST_DATA_LENGTH

0..255

Actual
number
of
octets
HISTORY_LOG_DATA_TBL.
HISTORY_ARGUMENT (Table 74).

in

the

EVENT_DATA_LENGTH

0..255

Actual
number
of
octets
EVENT_LOG_DATA_TBL.
EVENT_ARGUMENT (Table 76).

in

the

Decade 7: History & Event Logs / Table 71 Actual Log Limiting Table

Tables

ANSI C12.19-2008

NBR_HISTORY_ENTRIES

0..65535

Actual maximum number of entries in the History


Log.

NBR_EVENT_ENTRIES

0..65535

Actual maximum number of entries in the Event


Log.

EXT_LOG_FLAGS
NBR_PROGRAM_TABLES

See EXT_LOG_FLAGS_BFLD.
0..65535

Actual number of tables included in the


TABLE_LIST of the End Device program state
(Table 78).

Decade 7: History & Event Logs / Table 71 Actual Log Limiting Table

221

ANSI C12.19-2008

9.8.3

Tables

Table 72 Events Identification Table

Table 72 Data Description


EVENTS_ID_TBL (Table 72) contains the events that are supported by the End Device. Any of these
events may be expressed in the History Log Data (Table 74) and the Event Log Data (Table 76).
Global Default Table Property Overrides: Role=CONTROL
Table 72 Type Definitions
TYPE EVENTS_SUPPORTED_RCD = PACKED RECORD
STD_EVENTS_SUPPORTED : SET(ACT_LOG_TBL.NBR_STD_EVENTS);
MFG_EVENTS_SUPPORTED : SET(ACT_LOG_TBL.NBR_MFG_EVENTS);
END;
TABLE 72 EVENTS_ID_TBL = EVENTS_SUPPORTED_RCD;
Table 72 Element Descriptions
Value

Identifier
EVENTS_SUPPORTED_RCD
STD_EVENTS_SUPPORTED

MFG_EVENTS_SUPPORTED

222

Definition
This set Element indicates which of the standard
events are supported in the Event Log. See
Annex B, History & Event Log Codes, for
standard event codes. Event codes are
represented by bits 0 through (8 *
ACT_LOG_TBL.NBR_STD_EVENTS - 1), with
a 1 representing a TRUE or implemented
condition and a 0 representing a FALSE or not
implemented condition.
This set Element indicates which of the
manufacturer events are supported in the Event
Log. Events are enabled by bits 0 through (8 *
ACT_LOG_TBL.NBR_MFG_EVENTS - 1), with
a 1 representing a TRUE or implemented
condition and a 0 representing a FALSE or not
implemented condition.

Decade 7: History & Event Logs / Table 72 Events Identification Table

Tables

9.8.4

ANSI C12.19-2008

Table 73 History Log Control Table

Table 73 Data Description


HISTORY_LOG_CTRL_TBL (Table 73) defines the History Log codes to be written to the History Log
Data (Table 74). It also defines which specific procedures and/or table writes are to be acknowledged in
the History Log Data (Table 74). For a specific procedure or table to be acknowledged, three
independent tests shall all be true:
1) The procedure or table shall be used in the End Device, per the GEN_CONFIG_TBL (Table 00).
2) The appropriate History Log code shall be used, per this table.
3) The procedure or table shall be requested to be acknowledged, per this table.
This table (Table 73) and its associated data logger table (Table 74) can be used to monitor any End
Device activity that may be of interest to the operator, utility or technician. The monitored events may
include communication events, debugging information or any other useful information that may be of
general interest. When there is an expressed need to establish and maintain consumer confidence in the
End Device metrology, the reliable audit trail (Event Logger Data Table 76) shall be implemented.
Global Default Table Property Overrides: Role=CONTROL
Table 73 Type Definitions
TYPE HISTORY_CTRL_RCD = PACKED RECORD
STD_EVENTS_MONITORED_FLAGS : SET(ACT_LOG_TBL.NBR_STD_EVENTS);
MFG_EVENTS_MONITORED_FLAGS : SET(ACT_LOG_TBL.NBR_MFG_EVENTS);
STD_TBLS_MONITORED_FLAGS
: SET(GEN_CONFIG_TBL.DIM_STD_TBLS_USED);
MFG_TBLS_MONITORED_FLAGS
: SET(GEN_CONFIG_TBL.DIM_MFG_TBLS_USED);
STD_PROC_MONITORED_FLAGS
: SET(GEN_CONFIG_TBL.DIM_STD_PROC_USED);
MFG_PROC_MONITORED_FLAGS
: SET(GEN_CONFIG_TBL.DIM_MFG_PROC_USED);
END;
TABLE 73 HISTORY_LOG_CTRL_TBL = HISTORY_CTRL_RCD;
Table 73 Element Descriptions
Identifier

Value

HISTORY_CTRL_RCD
STD_EVENTS_MONITORED_FLAGS
FALSE
TRUE
MFG_EVENTS_MONITORED_FLAGS
FALSE
TRUE

Definition
Bit position is linearly associated with
corresponding standard event code.
Turns off event recording for associated event
code.
Turns on event recording for associated event
code.
Bit position is linearly associated with
corresponding manufacturer event code.
Turns off event recording for associated event
code.
Turns on event recording for associated event
code.

Decade 7: History & Event Logs / Table 73 History Log Control Table

223

ANSI C12.19-2008

Tables

STD_TBLS_MONITORED_FLAGS
FALSE
TRUE
MFG_TBLS_MONITORED_FLAGS
FALSE
TRUE
STD_PROC_MONITORED_FLAGS
FALSE
TRUE
MFG_PROC_MONITORED_FLAGS
FALSE
TRUE

224

Bit position is linearly associated with


corresponding standard table number.
Turns off event recording for associated table.
Turns on event recording for associated table.
Bit position is linearly associated with
corresponding manufacturer table number.
Turns off event recording for associated table.
Turns on event recording for associated table.
Bit position is linearly associated with
corresponding standard procedure number.
Turns off event recording for associated
procedure.
Turns on event recording for associated
procedure.
Bit position is linearly associated with
corresponding manufacturer procedure number.
Turns off event recording for associated
procedure.
Turns on event recording for associated
procedure.

Decade 7: History & Event Logs / Table 73 History Log Control Table

Tables

9.8.5

ANSI C12.19-2008

Table 74 History Log Data Table

Table 74 Data Description


HISTORY_LOG_DATA_TBL (Table 74) provides the History Log Data that is controlled by Table 73,
History Log Control Table.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 74 Type Definitions
TYPE HISTORY_ENTRY_RCD = PACKED RECORD
IF ACT_LOG_TBL.HIST_DATE_TIME_FLAG THEN
HISTORY_TIME
: LTIME_DATE;
END;
IF ACT_LOG_TBL.EVENT_NUMBER_FLAG THEN
EVENT_NUMBER
: UINT16;
END;
IF ACT_LOG_TBL.HIST_SEQ_NBR_FLAG THEN
HISTORY_SEQ_NBR : UINT16;
END;
USER_ID
: UINT16;
HISTORY_CODE
: TABLE_IDB_BFLD;
HISTORY_ARGUMENT
: BINARY(ACT_LOG_TBL.HIST_DATA_LENGTH);
END;
TYPE HISTORY_LOG_RCD = PACKED RECORD
HIST_FLAGS
: LIST_STATUS_BFLD;
NBR_VALID_ENTRIES
: UINT16;
LAST_ENTRY_ELEMENT
: UINT16;
LAST_ENTRY_SEQ_NBR
: UINT32;
NBR_UNREAD_ENTRIES
: UINT16;
ENTRIES
: ARRAY[ACT_LOG_TBL.NBR_HISTORY_ENTRIES] OF
HISTORY_ENTRY_RCD;
END;
TABLE 74 HISTORY_LOG_DATA_TBL = HISTORY_LOG_RCD;
Table 74 Element Descriptions
Identifier

Value

Definition

Redefines:
SELF_READ_DATA_TBL.
LIST_STATUS_BFLD.
Alias: ORDER_FLAG.
History log entries are transported in ascending
order (N is older than N+1).
History log entries are transported in descending
order (N is newer than N+1).

LIST_STATUS_BFLD
ORDER
1
OVERFLOW_FLAG

FALSE
TRUE

Overflow has not occurred.


An attempt was made to enter a history event
such that the number of unread events entries

Decade 7: History & Event Logs / Table 74 History Log Data Table

225

ANSI C12.19-2008

Tables
would have exceeded the actual number of
possible entries in the log.

LIST_TYPE
0
1
INHIBIT_OVERFLOW_FLAG

TABLE_IDB_BFLD
EVENT_NUMBER

Shall have the same definition and value as


ACT_LOG_TBL.HIST_INHIBIT_OVF_FLAG
(Table 71).
0..2039

MFG_FLAG
FALSE
TRUE
SELECTOR

Redefines: STD.TABLE_IDB_BFLD.
Event
number
logged.
See
EVENT_CODES_ENUM for Standard values
(MFG_FLAG = FALSE).
Alias: TBL_PROC_NBR.
Alias: STD_VS_MFG_FLAG.
Event code is standard defined.
Event code is manufacturer defined.

The associated entrys EVENT_NUMBER value


in this table may or may not be found in the
corresponding
EVENT_LOG_DATA_TBL
(Table 76). This option is provided for backward
compatibility with version 1 of this Standard.

The associated entrys EVENT_NUMBER value


in this table shall be found in the corresponding
EVENT_LOG_DATA_TBL (Table 76).

The associated entrys EVENT_NUMBER value


in this table shall not be found in the
corresponding
EVENT_LOG_DATA_TBL
(Table 76).

3..15

Reserved.

HISTORY_ENTRY_RCD
HISTORY_TIME

226

Alias: LIST_TYPE_FLAG.
FIFO (First In First Out) ordered entries are
placed
in
history
log
list,
HISTORY_LOG_DATA_TBL.ENTRIES.
Circular list, entries are placed in history log list,
HISTORY_LOG_DATA_TBL.ENTRIES.

Date and time of History Log entry.

EVENT_NUMBER

0..65535

This Element is a common event counter that


increments whenever a new event is generated,
regardless of whether the event is recorded in
the History Log, the Event Log, or both logs.

HISTORY_SEQ_NBR

0..65535

Sequence number associated with the History


Log only.
This value represents the least
significant 16 bits of LAST_ENTRY_SEQ_NBR.

USER_ID

0..65535

The User ID associated with this History Log


entry. It comes from the Log In Procedure or

Decade 7: History & Event Logs / Table 74 History Log Data Table

Tables

ANSI C12.19-2008
from a communication session initiation
sequence. A USER_ID of zero (0) means the
End Device initiated the event. A USER_ID of
one (1) means the event was manually initiated.
USER_ID values in the range of 57344 (E000H)
through 65535 (FFFFH) are used for devices
attached to the End Device.
HISTORY_CODE
HISTORY_ARGUMENT

Event code logged. See TABLE_IDB_BFLD.


Argument associated with a specific entry. For
standard event arguments, refer to Annex B,
History & Event Log Codes.

HISTORY_LOG_RCD
HIST_FLAGS

See LIST_STATUS_BFLD.

NBR_VALID_ENTRIES

0..65535

Number of valid entries in the log. The range is


from zero (0) (meaning the log is empty) to the
actual dimension of the log.

LAST_ENTRY_ELEMENT

0..65535

The array element number of the newest valid


entry in the log.

LAST_ENTRY_SEQ_NBR

0..4294967295 The sequence number of the newest valid entry


in the log.

NBR_UNREAD_ENTRIES

0..65535

ENTRIES

The number of entries in the log that have not


yet been read. It is only changed through a
procedure.
Array of History Log entries.

Decade 7: History & Event Logs / Table 74 History Log Data Table

227

ANSI C12.19-2008

9.8.6

Tables

Table 75 Event Log Control Table

Table 75 Data Description


EVENT_LOG_CTRL_TBL (Table 75) defines the Event Log codes to be written to the Event Log. It also
defines which specific procedures and/or table writes are to be acknowledged in the Event Log. For a
specific procedure or table to be acknowledged, three independent tests shall all be true:
1) The procedure or table shall be used in the End Device, per the GEN_CONFIG_TBL (Table 00).
2) The appropriate Event code shall be used, per Table 75.
3) The procedure or table shall be requested to be acknowledged, per Table 75.
This data structure is identical to the structure in HISTORY_LOG_CTRL_TBL (Table 73). The
associated table (Event Log Data Table 76) shall be used when there is an expressed need to establish
and maintain consumer confidence in the End Device metrology using a reliable audit trail.
Global Default Table Property Overrides: Role=CONTROL
Table 75 Type Definitions
TABLE 75 EVENT_LOG_CTRL_TBL = HISTORY_CTRL_RCD;
Table 75 Element Descriptions
Identifier

Value

HISTORY_CTRL_RCD
STD_EVENTS_MONITORED_FLAGS
FALSE
TRUE
MFG_EVENTS_MONITORED_FLAGS
FALSE
TRUE
STD_TBLS_MONITORED_FLAGS
FALSE
TRUE
MFG_TBLS_MONITORED_FLAGS
FALSE
TRUE

228

Definition
Redefines:
HISTORY_LOG_CTRL_TBL.HISTORY_CTRL_
RCD.
Bit position is linearly associated with
corresponding standard event code.
Turns off event recording for associated event
code.
Turns on event recording for associated event
code.
Bit position is linearly associated with
corresponding manufacturer event code.
Turns off event recording for associated event
code.
Turns on event recording for associated event
code.
Bit position is linearly associated with
corresponding standard table number.
Turns off event recording for associated table.
Turns on event recording for associated table.
Bit position is linearly associated with
corresponding manufacturer table number.
Turns off event recording for associated table.
Turns on event recording for associated table.

Decade 7: History & Event Logs / Table 75 Event Log Control Table

Tables

ANSI C12.19-2008

STD_PROC_MONITORED_FLAGS
FALSE
TRUE
MFG_PROC_MONITORED_FLAGS
FALSE
TRUE

Bit position is linearly associated with


corresponding standard procedure number.
Turns off event recording for associated
procedure.
Turns on event recording for associated
procedure.
Bit position is linearly associated with
corresponding manufacturer procedure number.
Turns off event recording for associated
procedure.
Turns on event recording for associated
procedure.

Decade 7: History & Event Logs / Table 75 Event Log Control Table

229

ANSI C12.19-2008

9.8.7

Tables

Table 76 Event Log Data Table

Table 76 Data Description


EVENT_LOG_DATA_TBL (Table 76) provides the Event Log Data that is controlled by Table 75, Event
Log Control Table. The event logger table is a secured audit trail tool capable of recording metrological
signatures (See Table 78), secured register reading signatures and event-check signatures.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 76 Type Definitions
TYPE EVENT_ENTRY_RCD = PACKED RECORD
EVENT_TIME
: LTIME_DATE;
IF ACT_LOG_TBL.EVENT_NUMBER_FLAG THEN
EVENT_NUMBER
: UINT16;
END;
EVENT_SEQ_NBR
: UINT16;
USER_ID
: UINT16;
EVENT_CODE
: TABLE_IDB_BFLD;
EVENT_ARGUMENT
: BINARY(ACT_LOG_TBL.EVENT_DATA_LENGTH);
END;
TYPE EVENT_LOG_RCD = PACKED RECORD
EVENT_FLAGS
: LIST_STATUS_BFLD;
NBR_VALID_ENTRIES
: UINT16;
LAST_ENTRY_ELEMENT
: UINT16;
LAST_ENTRY_SEQ_NBR
: UINT32;
NBR_UNREAD_ENTRIES
: UINT16;
ENTRIES
: ARRAY[ACT_LOG_TBL.NBR_EVENT_ENTRIES] OF
EVENT_ENTRY_RCD;
END;
TABLE 76 EVENT_LOG_DATA_TBL = EVENT_LOG_RCD;
Table 76 Element Descriptions
Identifier

Value

Definition

Redefines:
SELF_READ_DATA_TBL.
LIST_STATUS_BFLD.
Alias: ORDER_FLAG.
Event log entries are transported in ascending
order (N is older than N+1).
Event log entries are transported in descending
order (N is newer than N+1).

LIST_STATUS_BFLD
ORDER
1
OVERFLOW_FLAG

LIST_TYPE

230

FALSE
TRUE

Overflow has not occurred.


An attempt was made to enter an event log entry
such that the number of unread events entries
would have exceeded the actual number of
possible entries in the log.
Alias: LIST_TYPE_FLAG.

Decade 7: History & Event Logs / Table 76 Event Log Data Table

Tables

ANSI C12.19-2008
0
1
INHIBIT_OVERFLOW_FLAG

TABLE_IDB_BFLD
EVENT_NUMBER

Shall have the same value as ACT_LOG_TBL.


EVENT_INHIBIT_OVF_FLAG (Table 71).
0..2039

MFG_FLAG
FALSE
TRUE
SELECTOR

FIFO (First In First Out) ordered entries are


placed
in
event
log
list,
EVENT_LOG_DATA_TBL.ENTRIES.
Circular list, entries are placed in event log list,
EVENT_LOG_DATA_TBL.ENTRIES.

Event
code
number
logged.
See
EVENT_CODES_ENUM for Standard values
(MFG_FLAG == FALSE).
Alias: TBL_PROC_NBR.
Alias: STD_VS_MFG_FLAG.
Event code is standard defined.
Event code is manufacturer defined.

The associated entrys EVENT_NUMBER value


in this table may or may not be found in the
corresponding
HISTORY_LOG_DATA_TBL
(Table 74). This option is provided for backward
compatibility with version 1 of this Standard.

The associated entrys EVENT_NUMBER value


in this table shall be found in the corresponding
HISTORY_LOG_DATA_TBL (Table 74).

The associated entrys EVENT_NUMBER value


in this table shall not be found in the
corresponding
HISTORY_LOG_DATA_TBL
(Table 74).

3..15

Reserved.

EVENT_ENTRY_RCD
EVENT_TIME

Date and time of Event Log entry.

EVENT_NUMBER

0..65535

This Element is a common event counter that


increments whenever a new event is generated,
regardless of whether the event is recorded in
the History Log, the Event Log, or both logs.

EVENT_SEQ_NBR

0..65535

Sequence number associated with the Event


Log only.

USER_ID

0..65535

The User ID associated with this Event Log


entry. It comes from the Log In Procedure or
from a communication session initiation
sequence. A USER_ID of zero (0) means the
End Device initiated the event. A USER_ID of
one (1) means the event was manually initiated.

Decade 7: History & Event Logs / Table 76 Event Log Data Table

231

ANSI C12.19-2008

Tables

USER_ID values in the range of 57344 (E000H)


through 65535 (FFFFH) are used for devices
attached to the End Device.
EVENT_CODE

Event code logged. See TABLE_IDB_BFLD.

EVENT_ARGUMENT

Argument associated with a specific entry.


Refer to Annex B, History & Event Log Codes,
for details.

EVENT_LOG_RCD
EVENT_FLAGS

See LIST_STATUS_BFLD above.

NBR_VALID_ENTRIES

0..65535

Number of valid entries in the log. The range is


zero (0) (meaning the log is empty) to the actual
dimension of the log.

LAST_ENTRY_ELEMENT

0..65535

The array element number of the newest valid


entry in the log.

LAST_ENTRY_SEQ_NBR

0..4294967295
The sequence number of the newest valid entry
in the log. This Element shall not be resettable
to zero, by the application, while the End Device
is
in
metering
mode
(ED_MODE_STATUS_TBL. METERING_FLAG
== TRUE). When the element increments
beyond its largest possible value it shall roll over
to zero.

NBR_UNREAD_ENTRIES

ENTRIES

232

0..65535

The number of entries in the log that have not


yet been read. It is only changed through a
procedure.
Array of Event Log entries.

Decade 7: History & Event Logs / Table 76 Event Log Data Table

Tables

9.8.8

ANSI C12.19-2008

Table 77 Event Log and Signatures Enable Table

Table 77 Data Description


SIG_ENABLE_TBL (Table 77) contains three collections of Standard and Manufacturer Table set
selectors that identify the tables that are included in the computation of the METROLOGICAL_SIG,
PROGRAM_SIG and ALTERNATE_SIG signatures found in the Signature table (Table 78). A fourth
collection of Table set selectors is used to identify the tables that need to be logged in the Event Log data
table (Table 76). A fifth collection of Table-set selectors is used to identify which tables are Secured
Register Tables.
Only tables identified within shall be recorded in the Signatures Table and only those Tables identified in
the EVENTLOG_SEL shall trigger a Table-changed event entry in the Event Log data table (Table 76).
Also only those Tables identified in the SECURED_REGISTER_SEL may trigger a Read Secured Table
or Read Secured Register event entry in the Event Log data table (Table 76), when this capability is
enabled by the End Device reader.
Global Default Table Property Overrides: Role=CONTROL
Table 77 Type Definitions
TYPE TABLE_SEL_RCD = PACKED RECORD
STD_TBLS_SEL : SET(GEN_CONFIG_TBL.DIM_STD_TBLS_USED);
MFG_TBLS_SEL : SET(GEN_CONFIG_TBL.DIM_MFG_TBLS_USED);
END;
TYPE SIG_ENABLE_RCD = PACKED RECORD
IF ACT_LOG_TBL.METROLOGICAL_SIG_FLAG THEN
METROLOGICAL_SEL : TABLE_SEL_RCD;
EVENTLOG_SEL : TABLE_SEL_RCD;
END;
IF ACT_LOG_TBL.PROGRAM_SIG_FLAG THEN
PROGRAM_SEL : TABLE_SEL_RCD;
END;
IF ACT_LOG_TBL.ALTERNATE_SIG_FLAG THEN
ALTERNATE_SEL : TABLE_SEL_RCD;
END;
IF ACT_LOG_TBL.SECURED_REGISTER_FLAG THEN
SECURED_REGISTER_SEL : TABLE_SEL_RCD;
END;
END;
TABLE 77 SIG_ENABLE_TBL = SIG_ENABLE_RCD;
Table 77 Element Descriptions
Identifier
TABLE_SEL_RCD

Value

Definition
Identification of the Standard and Manufacturer
Tables that may trigger table change or
secured-registers read events, or that may be
signed.

Decade 7: History & Event Logs / Table 77 Event Log and Signatures Enable Table

233

ANSI C12.19-2008

Tables

STD_TBLS_SEL

This SET indicates which of the Standard tables


are selected. Tables are represented by bits 0
through (8*DIM_STD_TBLS_USED-1).
FALSE
TRUE

MFG_TBLS_SEL

This SET indicates which of the Manufacturer


tables are selected. Tables are represented by
bits 0 through (8*DIM_STD_TBLS_USED-1).
FALSE
TRUE

SIG_ENABLE_RCD
METROLOGICAL_SEL

EVENTLOG_SEL

234

No action is required for this table.


When the corresponding table is modified, the
action requested shall be performed.

No action is required for this table.


When the corresponding table is modified, the
action requested shall be performed.
Identifies the Tables that contain metrological
elements and shall be included in the
computation of the METROLOGICAL_SIG.
Indirect changes to these Tables (through Userdefined Tables, Extended User-defined Tables
or other means) shall also cause the
computation of the METROLOGICAL_SIG of all
affected Tables.
Indicates which of the Tables will trigger a
Table Written To event (Event 10, 59, 64 or 69)
or alternatively, an End Device Programmed
event (Event 11, 60, 65 or 70) in the Event Log
data table (Table 76). Tables that are not
selected within, but are identified in
METROLOGICAL_SEL, shall trigger a reverification (End Device unsealed) event upon
change. Indirect changes to these Tables
(through User-defined Tables, Extended Userdefined Tables or other means) shall also
generate an Event Log entry, as if the
referenced tables were modified or accessed
directly;
however
the
table
identifier
(TABLE_IDA_BFLD)
recorded
in
the
EVENT_ARGUMENT shall be that of the Userdefined Table or the Extended User-defined
Table that triggered that event, when the change
or access was carried out through a userdefined or extended-user-defined table (see
Annex B for more details). A compliant
implementation shall set all of corresponding
bits
of
EVENT_LOG_CTRL_TBL.STD_TBLS_MONIT
ORED_FLAGS
and
EVENT_LOG_CTRL_TBL.MFG_TBLS_MONIT
ORED_FLAGS to TRUE if there were also set to
TRUE
in
the
EVENTLOG_SEL.
STD_TBLS_SEL
and

Decade 7: History & Event Logs / Table 77 Event Log and Signatures Enable Table

Tables

ANSI C12.19-2008

EVENTLOG_SEL.MFG_TBLS_SEL
respectively for this trigger to be enabled.
PROGRAM_SEL

Identifies the Tables that contain program


elements and will be included in the computation
of the PROGRAM_SIG.

ALTERNATE_SEL

Identifies the Tables that contain metrological


elements and will be included in the computation
of the ALTERNATE_SIG.

SECURED_REGISTER_SEL

Identifies the Tables that contain secured


register, sensors or status elements that will be
included
in
the
computation
of
the
SECURED_REGISTER_SIG (see Annex B) and
trigger a Read Secured Table event (Event 7, 73
or 75) or a Read Secured Register event (Event
74 or 76) depending on the value of
ACT_LOG_TBL.SECURED_REGISTER_FLAG
and if the Start Secured Register procedure
has been executed. A compliant implementation
shall set all of the corresponding bits of
EVENTLOG_SEL to TRUE if they were also set
to TRUE in SECURED_REGISTER_SEL.

Decade 7: History & Event Logs / Table 77 Event Log and Signatures Enable Table

235

ANSI C12.19-2008

9.8.9

Tables

Table 78 End Device Program State Table

Table 78 Data Description


PROGRAM_STATE_TBL (Table 78) contains a list of table identifiers and their corresponding
signatures. This table provides information that can be used to validate the integrity of the Event Logger
itself (EVENT_CHECK_SIG). This table also lists the tables that were modified and, hence, need to be
downloaded when the Event Logger is downloadable (MODIFIED_FLAG). It also provides assist
technology for improved field programming and program change detection in real-time (PROGRAM_SIG
and ALTERNATE_SIG).
There are a number of variations of signatures: Global signatures that represent the programming state of
a selection of Tables (METROLOGICAL_SIG, PROGRAM_SIG and ALTERNATE_SIG); and audit trail
signatures that cover the programming history of the End Device (EVENT_CHECK_SIG). When Table 78
is not implemented, its conceptual implementation logic shall be used to derive the event check signature,
EVENT_CHECK_SIG, used in the Event Log data table (Table 76).
Background information and description of the process required to generate these signatures is
described in Annex E of this document.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 78 Type Definitions
TYPE TABLE_LIST_RCD = PACKED RECORD
TABLE_ID
: TABLE_IDA_BFLD;
TABLE_SIG
: BINARY(16);
END;
TYPE SIGNATURE_RCD = PACKED RECORD
IF ACT_LOG_TBL.METROLOGICAL_SIG_FLAG THEN
METROLOGICAL_SIG : BINARY(16);
EVENT_CHECK_SIG : BINARY(16);
END;
IF ACT_LOG_TBL.PROGRAM_SIG_FLAG THEN
PROGRAM_SIG
: BINARY(16);
END;
IF ACT_LOG_TBL.ALTERNATE_SIG_FLAG THEN
ALTERNATE_SIG
: BINARY(16);
END;
TABLE_LIST
: ARRAY[ACT_LOG_TBL.NBR_PROGRAM_TABLES] OF
TABLE_LIST_RCD;
END;
TABLE 78 SIGNATURE_TBL = SIGNATURE_RCD;
Table 78 Element Descriptions
Identifier

Value

Definition

TABLE_IDA_BFLD
TBL_PROC_NBR

0..2039

Redefines: STD.TABLE_IDA_BFLD.
Table ID.

FALSE

Alias: STD_VS_MFG_FLAG.
Standard table.

MFG_FLAG

236

Decade 7: History & Event Logs / Table 78 End Device Program State Table

Tables

ANSI C12.19-2008
TRUE
MODIFIED_FLAG
FALSE

TRUE

METROLOGICAL_FLAG
FALSE
TRUE

LOGGABLE_FLAG
FALSE
TRUE

ALTERNATE_FLAG
FALSE
TRUE
TABLE_LIST_RCD
TABLE_ID
TABLE_SIG

SIGNATURE_RCD
METROLOGICAL_SIG

Manufacturer table.
Alias: PENDING_FLAG.
This table was not changed since the last
invocation of the Update Last Read Entries
procedure (Procedure 5). Invocation of the Cold
Start procedure (Procedure 0), or the Reset List
Pointers procedure (Procedure 4) or Update
Last Read Entries procedure (Procedure 5),
shall set this flag to FALSE.
This table was changed since the last invocation
of the Update Last Read Entries procedure
(Procedure 5).
Alias: FLAG1.
Alias: EUDT_FLAG.
This table does not contain metrological
parameters and it shall not be included in the
computation of the METROLOGICAL_SIG.
This table does contain metrological parameters
and it shall be included in the computation of the
METROLOGICAL_SIG.
Alias: FLAG2.
This table is not event loggable.
This table is event loggable. Changes to this
table shall result in the creation of an Event Log
entry in the Event Log data table (Table 76).
Also if this table was marked as a secured
register table this bit shall be also set.
Alias: FLAG3.
This table shall not be included in the
computation of the ALTERNATE_SIG.
This table shall be included in the computation
of the ALTERNATE_SIG.
Identification number of the table.
Active table signature. The signature is used to
detect changes made to this Table. This
signature is computed using the MD5 algorithm
applied to the entire binary content of the Table.
The resulting signature becomes available as
input in the computation of the PROGRAM_SIG,
EVENT_CHECK_SIG or the ALTERNATE_SIG.
A signature that captures the active metrological
state of an End Device. It is the digest of all
tables with METROLOGICAL_FLAG set to
TRUE.

Decade 7: History & Event Logs / Table 78 End Device Program State Table

237

ANSI C12.19-2008

Tables

The algorithm digests each TABLE_SIG in


order of increasing index, starting with Standard
Tables and followed by Manufacturer Tables.
EVENT_CHECK_SIG

A signature that is used to detect event log


discontinuity for the life of the End Device. This
signature is created by the repeated application
of the MD5 algorithm applied to the new
EVENT_ENTRY_RCD entries that are being
added to the Event Log data table (Table 76).
The processing logic for the creation of
EVENT_CHECK_SIG in this table and in Table
76 is as follows:
1. Update TABLE_SIGs to reflect the changes
to all metrological tables.
2. Update
the
signature
element
METROLOGICAL_SIG to reflect the
changes to metrological tables. The
METROLOGICAL_SIG value is the result of
the use of the MD5 algorithm to digest the
concatenated signatures produced in step 1
above. Only signatures of metrological
tables shall be included in the computation.
These shall be ordered for processing in
increasing table numbers starting with
Standard
Tables
and
followed
by
Manufacturer Tables.
3. Create a new event entry in Table 76, Event
Log Data Table, and initialize its
EVENT_ARGUMENT elements to binary
00H.
4. Fill in the EVENT_TIME, the optional
EVENT_NUMBER,
the
required
EVENT_SEQ_NBR,
USER_ID
and
EVENT_CODE
and
all
EVENT_ARGUMENT elements except for
EVENT_CHECK_SIG (if present).
5. Using the MD5 algorithm digest the newly
created event information that was placed in
the EVENT_ENTRY_RCD. This includes all
elements of the EVENT_ARGUMENT, but
excludes
the
EVENT_CHECK_SIG
element.
For
example,
when
EVENT_CODE=65,
the
EVENT_ARGUMENT will not be digested;
when
EVENT_CODE=64,
only
the
TABLE_IDA_BFLD
field
of
the
EVENT_ARGUMENT will be digested; when
EVENT_CODE=70, then all octets starting
at
offset
16
to
offset
ACT_LOG_TBL.EVENT_DATA_LENGTH1 of the EVENT_ARGUMENT will be
digested.

238

Decade 7: History & Event Logs / Table 78 End Device Program State Table

Tables

ANSI C12.19-2008

6. Append to the EVENT_ENTRY_RCDs


signature (computed in step 5 above) the
previous
event
log
entry
EVENT_CHECK_SIG (or use a signature of
binary 0s if this is the first event entry being
created) then append the metrological
signature (computed in step 2) and finally
digest the three concatenated signatures,
using the MD5 algorithm to, produce the
Event Logger entrys signature.
7. Place the result into (to replace) the
EVENT_CHECK_SIG in this table. Also
copy it into the EVENT_CHECK_SIG of the
EVENT_ARGUMENT of Table 76 (if
applicable).
The Event Loggers (Table 76) most recent
signature shall be identical to the most recent
EVENT_CHECK_SIG element of Table 78 at all
times.
PROGRAM_SIG

A signature that captures the active


programmed state of an End Device. It is the
digest of all Tables listed in TABLE_LIST using
the MD5 algorithm. The algorithm digests each
TABLE_SIG in order of increasing index. This
signature can provide assist values for an
external device in the caching of meter
configuration state.

ALTERNATE_SIG

A signature that captures the active state of an


End Device, subject to (alternate unspecified by
this standard) application requirements. It is the
digest of all tables with ALTERNATE_FLAG set
to TRUE. The algorithm digests each
TABLE_SIG in order of increasing index.
A typical use of this signature is to check for
changes to a collection of End Device identity
independent
programming
Tables.
This
signature can be used to compare and validate
the program state of a population of deployed
End Device.

TABLE_LIST

Array containing the list of Tables monitored for


change
with
signatures.
See
TABLE_LIST_RCD.

Decade 7: History & Event Logs / Table 78 End Device Program State Table

239

ANSI C12.19-2008

Tables

9.8.10 Table 79 Event Counters Table


Table 79 Data Description
EVENT_COUNTER_TBL (Table 79) contains Event Counters used to detect modification to calibration,
programming or metrological parameters.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 79 Type Definitions
TYPE EVENT_COUNTER_RCD = PACKED RECORD
CALIBRATION_COUNTER
: UINT16;
PROGRAM_COUNTER
: UINT16;
END;
TABLE 79 EVENT_COUNTER_TBL = EVENT_COUNTER_RCD;
Table 79 Element Descriptions
Identifier

Value

Definition

EVENT_COUNTER_RCD
CALIBRATION_COUNTER

0..65535

Incremented by one each time one or multiple


calibration parameters are modified.
Incremented by one each time one or multiple
programming or metrological parameters are
modified. This counter may be used by
upstream devices to trigger an update to the
configuration information stored (caching of
static information) for this device.

PROGRAM_COUNTER

240

0..65535

Decade 7: History & Event Logs / Table 79 Event Counters Table

Tables

ANSI C12.19-2008

9.9 Decade 8: User-defined Tables


Decade 8 Name
USER_DEFINED_TABLES_DEC
Decade 8 Data Description
These tables provide the capability for the End Device user to build custom tables using selections from
the tables available in an End Device. The selections are bi-directional in the sense that any change to a
value of a selected table element will manifest itself in the user-defined table that contains that selection,
and any change to a selected identifier from the user-defined table shall result in a corresponding change
in the selected table identifier. All event log, change events, and security constraints shall operate to
maintain coherence between the user-defined tables and the table identifiers they point to. Support of
writing to user-defined tables is optional at the manufacturer discretion on a per table basis.
9.9.1

Table 80 User-defined Tables Dimension Limits Table

Table 80 Data Description


DIM_UDT_FUNC_LIM_TBL (Table 80) contains maximum values and control parameters for the userdefined tables. These values set up to six independent sets of user-defined tables.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 80 Type Definitions
TYPE UDT_CTRL_BFLD = BIT FIELD OF UINT8
NBR_UDTS
: UINT(0..2);
INSTANCE_FLAG
: BOOL(3);
DATA_ACCESS_METHOD
: UINT(4..5);
FILLER
: FILL(6..7);
END;
TYPE UDT_FUNC_LIM_RCD = PACKED RECORD
NBR_XFR_LIST_ITEMS
: UINT16;
UDT_FUNC_CTRL
: UDT_CTRL_BFLD;
MAX_INSTANCE
: UINT8;
IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_0_TBL] THEN
UDT_0_SIZE
: UINT32;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_1_TBL] THEN
UDT_1_SIZE
: UINT32;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_2_TBL] THEN
UDT_2_SIZE
: UINT32;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_3_TBL] THEN
UDT_3_SIZE
: UINT32;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_4_TBL] THEN
UDT_4_SIZE
: UINT32;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_5_TBL] THEN
UDT_5_SIZE
: UINT32;

Decade 8: User-defined Tables / Table 80 User-defined Tables Dimension Limits Table

241

ANSI C12.19-2008

Tables

END;
END;
TABLE 80 DIM_UDT_FUNC_LIM_TBL = UDT_FUNC_LIM_RCD;
Table 80 Element Descriptions
Identifier

Value

Definition

UDT_CTRL_BFLD
NBR_UDTS

0..6

The maximum number of user-defined tables,


that can be defined concurrently by the list of
data items.
Reserved.

7
INSTANCE_FLAG

FALSE
TRUE

DATA_ACCESS_METHOD
0
1
2
3
DIM_UDT_FUNC_LIM_TBL
NBR_XFR_LIST_ITEMS

0..65535

UDT_FUNC_CTRL

Multiple
instances
are
not
supported.
MAX_INSTANCE shall be ignored.
Multiple table instances are supported.
Element used to designate possible methods of
selecting table entries for placement in a userdefined table.
Only complete tables can be mapped into user
tables. Partial tables cannot be mapped.
Offset-count access method is supported.
Index-count access method is supported.
Access methods 2 and 3 are supported.
The maximum number of UINT16 entries used
to make the list.
These are the limiting capabilities for userdefined table selections. This defines the
maximum number of user-defined tables
supported in this decade and the data access
method, as defined by UDT_CTRL_BFLD.

MAX_INSTANCE

0
1..255

UDT_0_SIZE

0..4294967295

Reserved.
Maximum number of table sets supported by this
End Device. If INSTANCE_FLAG is FALSE then
this Element is ignored.
Maximum number of octets used to size
UDT_0_TBL (Table 84).

UDT_1_SIZE

0..4294967295
Maximum number of octets used to size
UDT_1_TBL (Table 85).

UDT_2_SIZE

0..4294967295
Maximum number of octets used to size
UDT_2_TBL (Table 86).

242

Decade 8: User-defined Tables / Table 80 User-defined Tables Dimension Limits Table

Tables

ANSI C12.19-2008

UDT_3_SIZE

0..4294967295
Maximum number of octets used to size
UDT_3_TBL (Table 87).

UDT_4_SIZE

0..4294967295
Maximum number of octets used to size
UDT_4_TBL (Table 88).

UDT_5_SIZE

0..4294967295
Maximum number of octets used to size
UDT_5_TBL (Table 89).

Decade 8: User-defined Tables / Table 80 User-defined Tables Dimension Limits Table

243

ANSI C12.19-2008

9.9.2

Tables

Table 81 Actual User-defined Tables Limiting Table

Table 81 Data Description


ACT_UDT_FUNC_LIM_TBL (Table 81) contains actual limiting values for the user-defined tables. These
parameters define up to six independent sets of user-defined tables definitions.
Global Default Table Property Overrides: Role=ACTUAL
Table 81 Type Definitions
TABLE 81 ACT_UDT_FUNC_LIM_TBL = UDT_FUNC_LIM_RCD;
Table 81 Element Descriptions
Identifier

Value

Definition

0..6

Redefines:
DIM_UDT_FUNC_LIM_TBL.
UDT_CTRL_BFLD.
The actual number of user-defined tables, that
are defined concurrently by the list of data items.
Reserved.

UDT_CTRL_BFLD
NBR_UDTS

7
INSTANCE_FLAG

FALSE
TRUE

DATA_ACCESS_METHOD
0
1
2
3
UDT_FUNC_LIM_RCD
NBR_XFR_LIST_ITEMS

Multiple
instances
are
not
MAX_INSTANCE shall be ignored.
Multiple table sets are in use.

Designates the actual method of selecting table


entries for placement in a user-defined table.
Complete tables are mapped into user tables.
Partial table cannot be mapped.
Offset-count access method is used.
Index-count access method is used.
Reserved.
Redefines:
DIM_UDT_FUNC_LIM_TBL.
UDT_FUNC_LIM_RCD.

0.. 65535

UDT_FUNC_CTRL

The actual number of UINT16 entries used in


the list.
The actual method used for user-defined tables
selections. This identifies the actual number of
user-defined tables and the data access method
used in this decade as defined by
UDT_FLAGS_BFLD.

MAX_INSTANCE

0
1..255

UDT_0_SIZE

0..4294967295

Reserved.
Actual number of table sets used by this End
Device. If INSTANCE_FLAG is FALSE ignore.
Actual number of octets
UDT_0_TBL (Table 84).

244

supported.

used

to

size

Decade 8: User-defined Tables / Table 81 Actual User-defined Tables Limiting Table

Tables

ANSI C12.19-2008

UDT_1_SIZE

UDT_2_SIZE

UDT_3_SIZE

UDT_4_SIZE

UDT_5_SIZE

0..4294967295
Actual number of octets
UDT_1_TBL (Table 85).

used

to

size

Actual number of octets


UDT_2_TBL (Table 86).

used

to

size

Actual number of octets


UDT_3_TBL (Table 87).

used

to

size

Actual number of octets


UDT_4_TBL (Table 88).

used

to

size

Actual number of octets


UDT_5_TBL (Table 89).

used

to

size

0..4294967295

0..4294967295

0..4294967295

0..4294967295

Decade 8: User-defined Tables / Table 81 Actual User-defined Tables Limiting Table

245

ANSI C12.19-2008

9.9.3

Tables

Table 82 User-defined Tables List Table

Table 82 Data Description


UDT_LIST_TBL (Table 82) defines data elements used in the generation of user-defined tables for this
decade.
Global Default Table Property Overrides: Role=CONTROL
Table 82 Type Definitions
TYPE SOURCE_ITEM_RCD = PACKED RECORD
TABLE_ID
: TABLE_IDB_BFLD;
IF ACT_UDT_FUNC_LIM_TBL.INSTANCE_FLAG THEN
TABLE_INSTANCE
: UINT16;
END;
SWITCH ACT_UDT_FUNC_LIM_TBL.DATA_ACCESS_METHOD OF
CASE 0: NO_DATA
: NIL;
CASE 1: OFFSET
: UINT16;
CASE 2: INDEX
: ARRAY[.TABLE_ID.SELECTOR] OF UINT16;
END;
COUNT
: UINT16;
END;
TYPE UDT_LIST_SEL_RCD = PACKED RECORD
UDT_LIST : ARRAY[ACT_UDT_FUNC_LIM_TBL.NBR_XFR_LIST_ITEMS] OF UINT16;
END;
TABLE 82 UDT_LIST_TBL = UDT_LIST_SEL_RCD;
Table 82 Element Descriptions
Identifier

Value

TABLE_IDB_BFLD
TBL_PROC_NBR

0..2039

MFG_FLAG

SELECTOR

Definition
Redefines: STD.TABLE_IDB_BFLD.
Information source table number. Note: the
corresponding implementation bit shall be set in
GEN_CONFIG_TBL (Table 00).
Identifies the data Element as originating from
either a standard table or a manufacturer table.
Alias: STD_VS_MFG_FLAG.

FALSE
TRUE

Standard table.
Manufacturer table.

0..15

When
ACT_UDT_FUNC_LIM_TBL.
DATA_ACCESS_METHOD is zero (0) the table
access method is used. SELECTOR shall be
ignored.
When
the
ACT_UDT_FUNC_LIM_TBL.
DATA_ACCESS_METHOD is one (1) this field
is the most significant 4 bits (bits 16..19) of the

246

Decade 8: User-defined Tables / Table 82 User-defined Tables List Table

Tables

ANSI C12.19-2008
offset to the data element required to locate the
data item in a table.
When
ACT_UDT_FUNC_LIM_TBL.
DATA_ACCESS_METHOD is two (2) this is the
number of indices used to select an entry in a
table.

SOURCE_ITEM_RCD
TABLE_ID
TABLE_INSTANCE

0..254
255..65535

NO_DATA
OFFSET

Full table references are used.


0..65535

INDEX
COUNT
UDT_LIST_SEL_RCD
UDT_LIST

Effective structure of a single entry in the


UDT_LIST array.
See TABLE_IDB_BFLD.
Table set instance number.
Reserved.

This field holds the least significant 16 bits of the


offset to the data element required to locate the
data item in a table.
This is an array of indices, which combine to
define the index to an item entry in a table.

0..65535

Length of data item(s) in octets. When the value


is zero it is the end of the list.
An array holding ACT_UDT_FUNC_LIM_TBL.
NBR_XFR_LIST_ITEM UINT16 quantities. This
space is mapped using SOURCE_ITEM_RCD
into variable length records which select table or
partial tables for access via the user-defined
tables.

Decade 8: User-defined Tables / Table 82 User-defined Tables List Table

247

ANSI C12.19-2008

9.9.4

Tables

Table 83 User-defined Tables Selections Table

Table 83 Data Description


UDT_SEL_TBL (Table 83) specifies what data elements are used in user tables defined for this decade.
Each array entry in this table corresponds to a specific table in this decade following this table. For
example, the third entry in this array corresponds to Table 83 + 3 = Table 86.
Global Default Table Property Overrides: Role=CONTROL
Table 83 Type Definitions
TYPE UDT_SET_RCD = PACKED RECORD
FIRST_ITEM_NBR
: UINT16;
LAST_ITEM_NBR
: UINT16;
END;
TYPE UDT_DATA_SETS_RCD = PACKED RECORD
UDT_DATA_SETS
: ARRAY[ACT_UDT_FUNC_LIM_TBL.NBR_UDTS] OF
UDT_SET_RCD;
END;
TABLE 83 UDT_SEL_TBL = UDT_DATA_SETS_RCD;
Table 83 Element Descriptions
Identifier

Value

Definition

UDT_SETS_RCD
FIRST_ITEM_NBR

0..65535

This is an item number in UDT_LIST_TBL


(Table 82) specifying the first item in the userdefined table selected by this entry.

LAST_ITEM_NBR

0..65535

This is item number in UDT_LIST_TBL (Table


82) specifying the last item in the user-defined
tables selected by this entry.

UDT_DATA_SETS_RCD
UDT_DATA_SETS

248

Array
containing
up
to
ACT_UDT_FUNC_LIM_TBL.NBR_UDTS
(Table 81) entries. Each entry defines the
source selections for a user-defined table.

Decade 8: User-defined Tables / Table 83 User-defined Tables Selections Table

Tables

9.9.5

ANSI C12.19-2008

Table 84 User-defined Table Zero

Table 84 Data Description


This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the first entry in table
UDT_SEL_TBL (Table 83).
Global Default Table Property Overrides: Class=STD.UDT
Table 84 Type Definitions
TYPE UDT_0_RCD = PACKED RECORD
UDT_0_DATA
: BINARY(ACT_UDT_FUNC_LIM_TBL.UDT_0_SIZE);
END;
TABLE 84 UDT_0_TBL = UDT_0_RCD;
Table 84 Element Descriptions
Identifier
UDT_0_RCD

Value

Definition
Contains
ACT_UDT_FUNCT_LIM_TBL.
UDT_0_SIZE octets holding data defined by the
first entry in the list defined in UDT_SEL_TBL
(Table 83).

Decade 8: User-defined Tables / Table 84 User-defined Table Zero

249

ANSI C12.19-2008

9.9.6

Tables

Table 85 User-defined Table One

Table 85 Data Description


This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the second entry in
table UDT_SEL_TBL (Table 83).
Global Default Table Property Overrides: Class=STD.UDT
Table 85 Type Definitions
TYPE UDT_1_RCD = PACKED RECORD
UDT_1_DATA
: BINARY(ACT_UDT_FUNC_LIM_TBL.UDT_1_SIZE);
END;
TABLE 85 UDT_1_TBL = UDT_1_RCD;
Table 85 Element Descriptions
Identifier
UDT_1_RCD

250

Value

Definition
Contains
ACT_UDT_FUNCT_LIM_TBL.
UDT_1_SIZE octets holding data defined by the
second entry in the list defined in
UDT_SEL_TBL (Table 83).

Decade 8: User-defined Tables / Table 85 User-defined Table One

Tables

9.9.7

ANSI C12.19-2008

Table 86 User-defined Table Two

Table 86 Data Description


This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the third entry in table
UDT_SEL_TBL (Table 83).
Global Default Table Property Overrides: Class=STD.UDT
Table 86 Type Definitions
TYPE UDT_2_RCD = PACKED RECORD
UDT_2_DATA
: BINARY(ACT_UDT_FUNC_LIM_TBL.UDT_2_SIZE);
END;
TABLE 86 UDT_2_TBL = UDT_2_RCD;
Table 86 Element Descriptions
Identifier
UDT_2_RCD

Value

Definition
Contains
ACT_UDT_FUNCT_LIM_TBL.
UDT_2_SIZE octets holding data defined by the
third entry in the list defined in UDT_SEL_TBL
(Table 83).

Decade 8: User-defined Tables / Table 86 User-defined Table Two

251

ANSI C12.19-2008

9.9.8

Tables

Table 87 User-defined Table Three

Table 87 Data Description


This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the fourth entry in table
UDT_SEL_TBL (Table 83).
Global Default Table Property Overrides: Class=STD.UDT
Table 87 Type Definitions
TYPE UDT_3_RCD = PACKED RECORD
UDT_3_DATA
: BINARY(ACT_UDT_FUNC_LIM_TBL.UDT_3_SIZE);
END;
TABLE 87 UDT_3_TBL = UDT_3_RCD;
Table 87 Element Descriptions
Identifier
UDT_3_RCD

252

Value

Definition
ContainS
ACT_UDT_FUNCT_LIM_TBL.
UDT_3_SIZE octets holding data defined by the
fourth entry in the list defined in UDT_SEL_TBL
(Table 83).

Decade 8: User-defined Tables / Table 87 User-defined Table Three

Tables

9.9.9

ANSI C12.19-2008

Table 88 User-defined Table Four

Table 88 Data Description


This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the fifth entry in table
UDT_SEL_TBL (Table 83).
Global Default Table Property Overrides: Class=STD.UDT
Table 88 Type Definitions
TYPE UDT_4_RCD = PACKED RECORD
UDT_4_DATA
: BINARY(ACT_UDT_FUNC_LIM_TBL.UDT_4_SIZE);
END;
TABLE 88 UDT_4_TBL = UDT_4_RCD;
Table 88 Element Descriptions
Identifier
UDT_4_RCD

Value

Definition
Array containing ACT_UDT_FUNCT_LIM_TBL.
UDT_4_SIZE octets holding data defined by the
fifth entry in the list defined in UDT_SEL_TBL
(Table 83).

Decade 8: User-defined Tables / Table 88 User-defined Table Four

253

ANSI C12.19-2008

Tables

9.9.10 Table 89 User-defined Table Five


Table 89 Data Description
This table is defined by the items in table UDT_LIST_TBL (Table 82) selected by the sixth entry in table
UDT_SEL_TBL (Table 83).
Global Default Table Property Overrides: Class=STD.UDT
Table 89 Type Definitions
TYPE UDT_5_RCD = PACKED RECORD
UDT_5_DATA
: BINARY(ACT_UDT_FUNC_LIM_TBL.UDT_5_SIZE);
END;
TABLE 89 UDT_5_TBL = UDT_5_RCD;
Table 89 Element Descriptions
Identifier
UDT_5_RCD

254

Value

Definition
Contains
ACT_UDT_FUNCT_LIM_TBL.
UDT_5_SIZE octets holding data defined by the
sixth entry in the list defined in UDT_SEL_TBL
(Table 83).

Decade 8: User-defined Tables / Table 89 User-defined Table Five

Tables

ANSI C12.19-2008

9.10 Decade 9: Telephone Control Tables


Decade 9 Name
TELEPHONE_CONTROL_DEC
This decade contains tables associated with the use of a telephone modem.
9.10.1 Table 90 Telephone Dimension Limits Table
Table 90 Data Description
DIM_TELEPHONE_TBL (Table 90) specifies the maximum dimensional values for this decade.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
TYPE TELEPHONE_FLAGS_BFLD = BIT FIELD OF UINT8
ANSWER_FLAG
: BOOL(0);
S_ANCHOR_DATE_FLAG
: BOOL(1);
OFFHOOK_DETECT_FLAG
: BOOL(2);
BIT_RATE
: UINT(3..4);
ID_IN_PURPOSE
: BOOL(5);
NO_LOCKOUT_PARM
: BOOL(6);
EXTENDED_STATUS
: BOOL(7);
END;
TYPE TELEPHONE_RCD = PACKED RECORD
TELEPHONE_FLAGS
: TELEPHONE_FLAGS_BFLD;
NBR_ORIGINATE_WINDOWS
: UINT8;
NBR_SETUP_STRINGS
: UINT8;
SETUP_STRING_LENGTH
: UINT8;
PREFIX_LENGTH
: UINT8;
NBR_ORIGINATE_NUMBERS
: UINT8;
PHONE_NUMBER_LENGTH
: UINT8;
NBR_RECURRING_DATES
: UINT8;
NBR_NON_RECURRING_DATES
: UINT8;
NBR_EVENTS
: UINT8;
NBR_WEEKLY_SCHEDULES
: UINT8;
NBR_ANSWER_WINDOWS
: UINT8;
NBR_CALLER_IDS
: UINT8;
CALLER_ID_LENGTH
: UINT8;
END;
TABLE 90 DIM_TELEPHONE_TBL = TELEPHONE_RCD;
Table 90 Element Descriptions
Identifier

Value

Definition

TELEPHONE_FLAGS_BFLD
ANSWER_FLAG

FALSE

End Device is not capable of answering a


phone call.
End Device is capable of answering a phone
call.

TRUE

Decade 9: Telephone Control Tables / Table 90 Telephone Dimension Limits Table

255

ANSI C12.19-2008

Tables

S_ANCHOR_DATE_FLAG

FALSE
TRUE

OFFHOOK_DETECT_FLAG

FALSE
TRUE

BIT_RATE

0
1
2
3

ID_IN_PURPOSE

FALSE
TRUE

NO_LOCKOUT_PARM

FALSE
TRUE

EXTENDED_STATUS

FALSE
TRUE

TELEPHONE_RCD
TELEPHONE_FLAGS

End Device is not capable of detecting off hook


conditions.
End Device is capable of detecting off hook
conditions.
End Device is not capable of modifying its bit
rate.
End Device is capable of modifying globally its
originating and answering bit rate.
End Device is capable of modifying separately
its originating and answering bit rate.
Reserved.
End Device is not capable of including an ID
field in CALL_PURPOSE_TBL.
End Device is capable of including an ID field in
CALL_PURPOSE_TBL (Table 96).
End Device is capable of supporting lockout
parameters
in
table
ANSWER_PARAMETERS_TBL (Table 95).
End Device is not capable of supporting lockout
parameters
in
table
ANSWER_PARAMETERS_TBL (Table 95).
End Device is not capable of including Last call
purpose in the CALL_STATUS_TBL (Table 97).
End Device is capable of including Last call
purpose in the CALL_STATUS_TBL (Table 97).
See TELEPHONE_FLAGS_BFLD.

NBR_ORIGINATE_WINDOWS 0..255

Maximum number of originate time window


descriptions supported by the End Device.

NBR_SETUP_STRINGS

0..255

Maximum number of setup strings supported by


the End Device.

SETUP_STRING_LENGTH

0..255

Maximum length (in bytes) of setup strings


supported by the End Device.

PREFIX_LENGTH

0..255

Maximum length (in bytes) of phone number


prefix supported by the End Device.

NBR_ORIGINATE_NUMBERS 0..7
8..255

256

End Device is not capable of accepting a


separate telephone schedule anchor date for the
Period/Delta RDATE type (recurring date).
End Device is capable of accepting a separate
telephone schedule anchor date for the
Period/Delta RDATE type (recurring date).

Maximum number of originate phone numbers


supported by the End Device.
Reserved.

Decade 9: Telephone Control Tables / Table 90 Telephone Dimension Limits Table

Tables

ANSI C12.19-2008

PHONE_NUMBER_LENGTH

0..255

Maximum length (in bytes) of phone numbers


supported by the End Device.

NBR_RECURRING_DATES

0..255

Maximum number of recurring dates supported


to create the origination schedule.

NBR_NON_RECURRING_DATES
0..255
NBR_EVENTS

Maximum number of non-recurring dates


supported to create the origination schedule.

0..255

Maximum number of events supported to create


the origination schedule.

NBR_WEEKLY_SCHEDULES 0..255

Maximum number of weekly schedules


supported to create the origination schedule.

NBR_ANSWER_WINDOWS

0..255

Maximum number of answer time window


descriptions supported by the End Device.

NBR_CALLER_IDS

0..255

Maximum number of Caller ID strings supported


by the End Device.

CALLER_ID_LENGTH

0..255

Maximum length (in bytes) of Caller ID strings


supported by the End Device.

Decade 9: Telephone Control Tables / Table 90 Telephone Dimension Limits Table

257

ANSI C12.19-2008

Tables

9.10.2 Table 91 Actual Telephone Table


Table 91 Data Description
ACT_TELEPHONE_TBL (Table 91) contains actual dimension values for this decade.
Global Default Table Property Overrides: Role=ACTUAL
Table 91 Type Definitions
TABLE 91 ACT_TELEPHONE_TBL = TELEPHONE_RCD;
Table 91 Element Descriptions
Value

Definition

ANSWER_FLAG

FALSE
TRUE

Redefines: DIM_TELEPHONE_TBL.
TELEPHONE_FLAGS_BFLD.
End Device shall not answer a phone call.
End Device may answer a phone call.

S_ANCHOR_DATE_FLAG

FALSE

Identifier
TELEPHONE_FLAGS_BFLD

TRUE

OFFHOOK_DETECT_FLAG

FALSE
TRUE

BIT_RATE

0
1
2

3
ID_IN_PURPOSE

FALSE
TRUE

NO_LOCKOUT_PARM

258

FALSE

End Device
does not accept a separate
telephone schedule anchor date for the
Period/Delta RDATE type (recurring date).
End Device accepts a separate telephone
schedule anchor date for the Period/Delta
RDATE type (recurring date).
End Device does not currently detect off hook
conditions.
End Device
currently detects off hook
conditions.
Bit rate cannot be controlled.
Answering and originating bit rate can be
controlled
globally
in
GLOBAL_PARAMETERS_TBL (Table 92).
Answering and originating bit rate can be
controlled
separately
in
ORIGINATE_PARAMETERS_TBL (Table 93)
and ANSWER_PARAMETERS_TBL (Table
95).
Reserved.
End Device does not currently include an ID
field in CALL_PURPOSE_TBL (Table 96).
End Device currently includes an ID field in
CALL_PURPOSE_TBL (Table 96).
End Device
currently includes lockout
parameters
in
table
ANSWER_PARAMETERS_TBL (Table 95).

Decade 9: Telephone Control Tables / Table 91 Actual Telephone Table

Tables

ANSI C12.19-2008

EXTENDED_STATUS

TRUE

End Device does not currently include lockout


parameters
in
table
ANSWER_PARAMETERS_TBL (Table 95).

FALSE

End Device is not including last call purpose


information in the CALL_STATUS_TBL (Table
97).
End Device
is including last call purpose
information in the CALL_STATUS_TBL (Table
97).

TRUE

TELEPHONE_RCD

Redefines:
DIM_TELEPHONE_TBL.TELEPHONE_RCD.
See TELEPHONE_FLAGS_BFLD.

TELEPHONE_FLAGS
NBR_ORIGINATE_WINDOWS 0..255

Actual number of originate time


descriptions used by the End Device

NBR_SETUP_STRINGS

0..255

Actual number of setup strings used by the End


Device.

SETUP_STRING_LENGTH

0..255

Actual length (in bytes) of setup strings used by


the End Device.

PREFIX_LENGTH

0..255

Actual length (in bytes) of phone number prefix


used by the End Device.

NBR_ORIGINATE_NUMBERS 0..7
8..255

window

Actual number of originate phone numbers used


by the End Device.
Reserved.

PHONE_NUMBER_LENGTH

0..255

Actual length (in bytes) of phone numbers used


by the End Device.

NBR_RECURRING_DATES

0..255

Actual number of recurring dates used to create


the origination schedule.

NBR_NON_RECURRING_DATES
0..255
NBR_EVENTS

Actual number of non-recurring dates used to


create the origination schedule.

0..255

Actual number of events used to create the


origination schedule.

NBR_WEEKLY_SCHEDULES 0..255

Actual number of weekly schedules used to


create the origination schedule.

NBR_ANSWER_WINDOWS

0..255

Actual number of answer time


descriptions used by the End Device.

NBR_CALLER_IDS

0..255

Actual number of Caller ID strings used by the


End Device.

CALLER_ID_LENGTH

0..255

Actual length (in bytes) of Caller ID strings used


by the End Device.

Decade 9: Telephone Control Tables / Table 91 Actual Telephone Table

window

259

ANSI C12.19-2008

Tables

9.10.3 Table 92 Telephone Global Parameters Table


Table 92 Data Description
GLOBAL_PARAMETERS_TBL (Table 92) defines general parameters used both for answering and
originating a call.
Global Default Table Property Overrides: Role=CONTROL
Table 92 Type Definitions
TYPE SETUP_STRING_RCD = PACKED RECORD
SETUP_STRING
: STRING(ACT_TELEPHONE_TBL.SETUP_STRING_LENGTH);
END;
TYPE GLOBAL_PARAMETERS_RCD = PACKED RECORD
PSEM_IDENTITY
: UINT8;
IF ACT_TELEPHONE_TBL.BIT_RATE == 1 THEN
BIT_RATE
: UINT32;
END;
MODEM_SETUP_STRINGS
: ARRAY[ACT_TELEPHONE_TBL.NBR_SETUP_STRINGS]
OF SETUP_STRING_RCD;
END;
TABLE 92 GLOBAL_PARAMETERS_TBL = GLOBAL_PARAMETERS_RCD;
Table 92 Element Descriptions
Value

Identifier
SETUP_STRING_RCD
SETUP_STRING
GLOBAL_PARAMETERS_RCD
PSEM_IDENTITY

Definition
Modem setup string used to configure the
modem.

0..255

Value used by the <identity> field in Layer 2 of


C12.21 for the End Device (meter, etc.) identity.
It identifies the End Device in both the request
and response packets.
In requests, this byte may be set to 00H as a
universal identity. All devices shall respond to
this identifier value as a minimum. This value
(00H) shall not be used in a multi-drop
environment.
The individual End Device identity must be in
the range 01H to FEH.
In requests, this byte may be set to FFH to target
the calling party during an inbound call. Only the
End Device that initiated the inbound call shall
process packets with identity byte equal to FFH.

260

Decade 9: Telephone Control Tables / Table 92 Telephone Global Parameters Table

Tables

ANSI C12.19-2008
The value FFH may be used in both single drop
and multi-drop environments.
The End Device shall use its own identity byte
in the response for all requests (including 00H
and FFH) .
BIT_RATE

MODEM_SETUP_STRINGS

Bit rate at which the End Device will originate or


answer a call.
0
Denotes an externally defined bit rate.
1..4294967295 End Device call origination bit rate in bits per
second.
An array of Modem Setup Strings.

Decade 9: Telephone Control Tables / Table 92 Telephone Global Parameters Table

261

ANSI C12.19-2008

Tables

9.10.4 Table 93 Telephone Call Originate Parameters Table


Table 93 Data Description
ORIGINATE_PARAMETERS_TBL (Table 93) defines originate configuration parameters. Originate
refers to the End Device placing calls to a utility host.
Global Default Table Property Overrides: Role=CONTROL
Table 93 Type Definitions
TYPE DAYS_BFLD = BIT FIELD OF UINT8
SUNDAY
: BOOL(0);
MONDAY
: BOOL(1);
TUESDAY
: BOOL(2);
WEDNESDAY
: BOOL(3);
THURSDAY
: BOOL(4);
FRIDAY
: BOOL(5);
SATURDAY
: BOOL(6);
FILLER
: FILL(7..7);
END;
TYPE WINDOW_RCD = PACKED RECORD
BEGIN_WINDOW_TIME
: STIME;
WINDOW_DURATION
: STIME;
WINDOW_DAYS
: DAYS_BFLD;
END;
TYPE PHONE_NUMBER_RCD = PACKED RECORD
PHONE_NUMBER
: STRING(ACT_TELEPHONE_TBL.PHONE_NUMBER_LENGTH);
END;
TYPE PHONE_NUMBERS_RCD = PACKED RECORD
PREFIX
: STRING(ACT_TELEPHONE_TBL.PREFIX_LENGTH);
PHONE_NUMBERS
: ARRAY[ACT_TELEPHONE_TBL.NBR_ORIGINATE_NUMBERS]
OF PHONE_NUMBER_RCD;
END;
TYPE ORIGINATE_PARAMETERS_RCD = PACKED RECORD
IF ACT_TELEPHONE_TBL.BIT_RATE == 2 THEN
ORIGINATE_BIT_RATE
: UINT32;
END;
DIAL_DELAY
: UINT8;
ORIGINATE_PHONE_NUMBERS
: PHONE_NUMBERS_RCD;
WINDOWS
: ARRAY[ACT_TELEPHONE_TBL.NBR_ORIGINATE_WINDOWS] OF
WINDOW_RCD;
IF ACT_TELEPHONE_TBL.TELEPHONE_FLAGS.EXTENDED_STATUS THEN
ANSWER_TIMEOUT
: UINT8;
RETRY_INTERVAL
: UINT16;
MAX_RETRIES
: UINT8;
END;
END;

262

Decade 9: Telephone Control Tables / Table 93 Telephone Call Originate Parameters Table

Tables

ANSI C12.19-2008

TABLE 93 ORIGINATE_PARAMETERS_TBL = ORIGINATE_PARAMETERS_RCD;


Table 93 Element Descriptions
Value

Definition

FALSE
TRUE

This window does not start each Sunday.


This window does start each Sunday.

MONDAY

FALSE
TRUE

This window does not start each Monday.


This window does start each Monday.

TUESDAY

FALSE
TRUE

This window does not start each Tuesday.


This window does start each Tuesday.

WEDNESDAY

FALSE
TRUE

This window does not start each Wednesday.


This window does start each Wednesday.

THURSDAY

FALSE
TRUE

This window does not start each Thursday.


This window does start each Thursday.

FRIDAY

FALSE
TRUE

This window does not start each Friday.


This window does start each Friday.

SATURDAY

FALSE
TRUE

This window does not start each Saturday.


This window does start each Saturday.

Identifier
DAYS_BFLD
SUNDAY

WINDOW_RCD
BEGIN_WINDOW_TIME

The time of day the window starts.

WINDOW_DURATION

The duration of the window.

WINDOW_DAYS

Defines the days that a window can start. See


DAYS_BFLD.

PHONE_NUMBER_RCD
PHONE_NUMBER

Phone number to use to place a call.

PHONE_NUMBERS_RCD
PREFIX

This number will be inserted at the beginning of


every phone number before beginning dialing.

PHONE_NUMBERS
ORIGINATE_PARAMETERS_RCD
ORIGINATE_BIT_RATE

DIAL_DELAY

An array of originate phone numbers.


Bit rate at which the End Device will originate a
call.
0
Denotes an externally defined bit rate.
1.. 4294967295 End Device call origination bit rate in bits per
second.
0..255

Delay in seconds the End Device


before dialing after going off-hook.

Decade 9: Telephone Control Tables / Table 93 Telephone Call Originate Parameters Table

will wait

263

ANSI C12.19-2008

Tables

ORIGINATE_PHONE_NUMBERS

See PHONE_NUMBER_RCD.

WINDOWS

An array of call originate windows.

ANSWER_TIMEOUT

0..255

Delay in seconds the End Device will wait after


dialing before declaring no answer.

RETRY_INTERVAL

0..65535

Delay in seconds the End Device will wait after


a failed call before trying again. May include a
random offset.

MAX_RETRIES

0..255

Absolute maximum number of attempts. Same


value
used
for
all
ORIGINATE_PHONE_NUMBERS. This value
starts at zero for each unique call-out event.

264

Decade 9: Telephone Control Tables / Table 93 Telephone Call Originate Parameters Table

Tables

ANSI C12.19-2008

9.10.5 Table 94 Telephone Call Originate Schedule Table


Table 94 Data Description
ORIGINATE_SCHEDULE_TBL (Table 94) is used to configure when and why an End Device originates
a call.
Global Default Table Property Overrides: Role=CONTROL
Table 94 Type Definitions
TYPE CTRL_BFLD = BIT FIELD OF UINT8
PRIMARY_PHONE_NUMBER
: UINT(0..2);
FILLER
: FILL(3..3);
SECONDARY_PHONE_NUMBER
: UINT(4..6);
USE_WINDOWS
: BOOL(7);
END;
TYPE RECURRING_DATES_RCD = PACKED RECORD
ORIGINATE_DATE
: RDATE;
START_TIME
: TIME;
ORIGINATE_CTRL
: CTRL_BFLD;
END;
TYPE NON_RECURRING_DATES_RCD = PACKED RECORD
ORIGINATE_DATE
: DATE;
START_TIME
: TIME;
ORIGINATE_CTRL
: CTRL_BFLD;
END;
TYPE EVENTS_RCD = PACKED RECORD
ED_STD_STATUS1
: ED_MODE_STATUS_TBL.ED_STD_STATUS1_BFLD;
ED_STD_STATUS2
: ED_MODE_STATUS_TBL.ED_STD_STATUS2_BFLD;
ED_MFG_STATUS
: ED_MODE_STATUS_TBL.ED_MFG_STATUS_RCD;
ORIGINATE_CTRL
: CTRL_BFLD;
END;
TYPE WEEKLY_SCHEDULE_RCD = PACKED RECORD
DAYS
: ORIGINATE_PARAMETERS_TBL.DAYS_BFLD;
START_TIME
: TIME;
ORIGINATE_CTRL
: CTRL_BFLD;
END;
TYPE ORIGINATE_SCHEDULE_RCD = PACKED RECORD
IF ACT_TELEPHONE_TBL.S_ANCHOR_DATE_FLAG THEN
S_ANCHOR_DATE
: DATE;
END;
RECURRING_DATES : ARRAY[ACT_TELEPHONE_TBL.NBR_RECURRING_DATES]
OF RECURRING_DATES_RCD;
NON_RECURING_DATES
:
ARRAY[ACT_TELEPHONE_TBL.NBR_NON_RECURRING_DATES]
OF NON_RECURRING_DATES_RCD;

Decade 9: Telephone Control Tables / Table 94 Telephone Call Originate Schedule Table

265

ANSI C12.19-2008

Tables

EVENTS

: ARRAY[ACT_TELEPHONE_TBL.NBR_EVENTS]
OF EVENTS_RCD;
WEEKLY_SCHEDULES
:
ARRAY[ACT_TELEPHONE_TBL.NBR_WEEKLY_SCHEDULES]
OF WEEKLY_SCHEDULE_RCD;
END;
TABLE 94 ORIGINATE_SCHEDULE_TBL = ORIGINATE_SCHEDULE_RCD;
Table 94 Element Descriptions
Value

Identifier

CTRL_BFLD
PRIMARY_PHONE_NUMBER 0..6

7
SECONDARY_PHONE_NUMBER
0..6

7
USE_WINDOWS

RECURRING_DATES_RCD
ORIGINATE_DATE

Selection of the primary phone number to use to


originate the call. This value is an index into the
PHONE_NUMBERS
array
in
the
ORIGINATE_PARAMETERS_TBL (Table 93).
Indicates that no call should take place.
Selection of the secondary phone number to use
to originate a call. This value is an index into the
PHONE_NUMBERS
array
in
the
ORIGINATE_PARAMETERS_TBL (Table 93).
Indicates that no secondary number is provided.

FALSE

An originate time window will not be used to


restrict the period available to place this call.
The call will be placed immediately.

TRUE

An Originate time window will be used to restrict


the period available to place this call. Calls
originating outside a window will be delayed until
the next open window.
Recurring date at which
procedures should begin.

call

originate

START_TIME

Time at which call originate procedures should


begin.

ORIGINATE_CTRL

See CTRL_BFLD.

NON_RECURRING_DATES_RCD
ORIGINATE_DATE

266

Definition

Specific date at which a call originate procedure


should begin.

START_TIME

Time at which a call originate procedure should


begin.

ORIGINATE_CTRL

See CTRL_BFLD.

Decade 9: Telephone Control Tables / Table 94 Telephone Call Originate Schedule Table

Tables

ANSI C12.19-2008

EVENTS_RCD
ED_STD_STATUS1
FALSE
TRUE
ED_STD_STATUS2
FALSE
TRUE
ED_MFG_STATUS
FALSE
TRUE
ORIGINATE_CTRL
WEEKLY_SCHEDULE_RCD
DAYS

Standard status events which initiate a call


originate procedure.
No call should take place for this status bit.
A call should take place if an event is detected
for this status bit.
Standard status events which initiate a call
originate procedure.
No call should take place for this status bit.
A call should take place if an event is detected
for this status bit.
Manufacturer status events which initiate a call
originate procedure.
No call should take place for this status bit.
A call should take place if an event is detected
for this status bit.
See CTRL_BFLD.
Days of the week in which the call originate
procedure should begin.

START_TIME

Time at which the call originate procedure


should begin.

ORIGINATE_CTRL

See CTRL_BFLD.

ORIGINATE_SCHEDULE_RCD
S_ANCHOR_DATE

A separate telephone schedule anchor date


used with an RDATE recurring date using the
PERIOD/OFFSET mechanism. If this table
contains an anchor date it is used with RDATE.
If not present, and an anchor date is provided in
Table 54 (CALENDAR_TBL) then RDATE will
use that anchor date. If neither anchor date is
present then the anchor date is defined by the
manufacturer.

RECURRING_DATES

Array of recurring call origination dates.

NON_RECURING_DATES

Array of non recurring call origination dates.

EVENTS

Array of call origination trigger events.

WEEKLY_SCHEDULES

Array of call origination days.

Decade 9: Telephone Control Tables / Table 94 Telephone Call Originate Schedule Table

267

ANSI C12.19-2008

Tables

9.10.6 Table 95 Telephone Call Answer Parameters


Table 95 Data Description
ANSWER_PARAMETERS_TBL (Table 95) defines the answer configuration for receiving calls placed by
a utility host.
Global Default Table Property Overrides: Role=CONTROL
Table 95 Type Definitions
TYPE CALLER_ID_RCD = PACKED RECORD
CALLER_ID
: STRING(ACT_TELEPHONE_TBL.CALLER_ID_LENGTH);
END;
TYPE ANSWER_PARAMETERS_RCD = PACKED RECORD
IF ACT_TELEPHONE_TBL.BIT_RATE == 2 THEN
ANSWER_BIT_RATE : UINT32;
END;
IF ACT_TELEPHONE_TBL.NO_LOCKOUT_PARM == FALSE THEN
LOCKOUT_DELAY
: UINT8;
RETRY_ATTEMPTS
: UINT8;
RETRY_LOCKOUT_TIME
: UINT8;
END;
NBR_RINGS
: UINT8;
IF ACT_TELEPHONE_TBL.NBR_ANSWER_WINDOWS > 0 THEN
NBR_RINGS_OUTSIDE
: UINT8;
END;
CALLER_IDS

: ARRAY[ACT_TELEPHONE_TBL.NBR_CALLER_IDS]
OF CALLER_ID_RCD;
WINDOWS
:
ARRAY[ACT_TELEPHONE_TBL.NBR_ANSWER_WINDOWS]
OF ORGINATE_PARAMETERS_TBL.WINDOW_RCD;
END;
TABLE 95 ANSWER_PARAMETERS_TBL = ANSWER_PARAMETERS_RCD;
Table 95 Element Descriptions
Value

Identifier
CALLER_ID_RCD
CALLER_ID

Caller ID string. Incoming calls must have a valid


caller ID for the call to be answered.

ANSWER_PARAMETERS_RCD
ANSWER_BIT_RATE

268

Definition

Bit rate at which the End Device will answer a


call.
0
Indicates an externally defined bit rate.
1.. 4294967295 End Device call origination bit rate in bits per
second.

Decade 9: Telephone Control Tables / Table 95 Telephone Call Answer Parameters

Tables

ANSI C12.19-2008

LOCKOUT_DELAY

0..255

Number of minutes to lockout call answering


after detecting a voice call.

RETRY_ATTEMPTS

0..255

Maximum number of consecutive


violations allowed before lockout.

RETRY_LOCKOUT_TIME

0..255

Minutes to lockout logons after security retry


attempts exceeded.

NBR_RINGS

0..255

The number of rings to wait before answering


while inside a time window. A value of 0 means
do not answer.

NBR_RINGS_OUTSIDE

0..255

The number of rings to answer while outside a


time window. A value of 0 means do not answer.

CALLER_IDS

An array of caller IDs.

WINDOWS

An array of answer time windows.

Decade 9: Telephone Control Tables / Table 95 Telephone Call Answer Parameters

security

269

ANSI C12.19-2008

Tables

9.10.7 Table 96 Originating Telephone Call Purpose


Table 96 Data Description
CALL_PURPOSE_TBL (Table 96) indicates the purpose for the current telephone-call originated by the
End Device.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 96 Type Definitions
TYPE CALL_PURPOSE_BFLD = BIT FIELD OF UINT16
POWER_OUTAGE
: BOOL(0);
POWER_RESTORAL
: BOOL(1);
SCHEDULED_CALL
: BOOL(2);
STATUS_CALL
: BOOL(3);
IMMEDIATE_CALL
: BOOL(4);
FILLER
: FILL(5..11);
MANUFACTURER_PURPOSES: UINT(12..15);
END;
TYPE CALL_PURPOSE_RCD = PACKED RECORD
CALL_PURPOSE
: CALL_PURPOSE_BFLD;
CALL_TRIGGER_STATUS
: ED_MODE_STATUS_TBL.ED_MODE_STATUS_RCD;
IF ACT_TELEPHONE_TBL.ID_IN_PURPOSE THEN
IDENT
: DEVICE_IDENT_TBL.IDENT_RCD;
END;
END;
TABLE 96 CALL_PURPOSE_TBL = CALL_PURPOSE_RCD;
Table 96 Element Descriptions
Value

Identifier
CALL_PURPOSE_BFLD
POWER_OUTAGE

This phone call was triggered by the detection of


a power outage.

POWER_RESTORAL

This phone call was triggered by the detection of


a power restoration.

SCHEDULED_CALL

This phone call is a normal call.

STATUS_CALL

This phone call was triggered by an change in


the status record.

IMMEDIATE_CALL

This phone call was triggered by an immediate


call procedure.

MANUFACTURER_PURPOSES
0..15

270

Definition

This field if non-zero indicates that the phone


call was triggered by a manufacturer-defined
purpose.

Decade 9: Telephone Control Tables / Table 96 Originating Telephone Call Purpose

Tables

ANSI C12.19-2008

CALL_PURPOSE_RCD
CALL_PURPOSE

See CALL_PURPOSE_BFLD.

CALL_TRIGGER_STATUS

If the STATUS_CALL bit is TRUE then this field


indicates which status bit change(s) caused the
call. The field is in the image of
ED_MODE_STATUS_TBL.

IDENT

Identity of the call originating End Device per


Table
5,
DEVICE_IDENT_TBL.
IDENTIFICATION or Table 6, UTIL_INFO_TBL.
DEVICE_ID, whichever is available.

Decade 9: Telephone Control Tables / Table 96 Originating Telephone Call Purpose

271

ANSI C12.19-2008

Tables

9.10.8 Table 97 Last Telephone Call Status


Table 97 Data Description
CALL_STATUS_TBL (Table 97) indicates the status of the most recent call to each defined phone
number.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 97 Type Definitions
TYPE EXTENDED_STATUS_RCD = PACKED RECORD
CALL_PURPOSE
: CALL_PURPOSE_TBL.CALL_PURPOSE_BFLD;
CALL_TRIGGER_STATUS
: ED_MODE_STATUS_TBL.ED_MODE_STATUS_RCD;
LAST_CALL_TIME
: LTIME_DATE;
END;
TYPE CALL_STATUS_RCD = PACKED RECORD
CALL_STATUS_ARRAY : ARRAY[ACT_TELEPHONE_TBL.NBR_ORIGINATE_NUMBERS]
OF UINT8;
IF ACT_TELEPHONE_TBL.TELEPHONE_FLAGS.EXTENDED_STATUS THEN
EXTENDED_CALL_STATUS:
ARRAY[ACT_TELEPHONE_TBL.NBR_ORIGINATE_NUMBERS]
OF EXTENDED_STATUS_RCD;
END;
END;
TABLE 97 CALL_STATUS_TBL = CALL_STATUS_RCD;
Table 97 Element Descriptions
Value

Identifier
EXTENDED_STATUS_RCD
CALL_PURPOSE

This Element indicates the reason the most


recent
call
was
attempted.
See
CALL_PURPOSE_BFLD in Table 96 for
definition.

CALL_TRIGGER_STATUS

From Table 96. This Element indicates the


reason the most recent call was attempted. The
field
is
in
the
image
of
ED_MODE_STATUS_RCD defined in Table 3.

LAST_CALL_TIME

This field indicates the time and date the most


recent call attempt was made.
Status or disposition of the most recent call to a
phone number.

CALL_STATUS_RCD
CALL_STATUS_ARRAY

Status or disposition of the most recent call to


each telephone number.
0
1

272

Definition

No phone call made.


Phone call in progress.

Decade 9: Telephone Control Tables / Table 97 Last Telephone Call Status

Tables

ANSI C12.19-2008
2
3
4
5
6
7
8
9
10
11
12..255
EXTENDED_STATUS_ARRAY

Dialing
Waiting for a connection.
Communicating.
Completed normally.
Not completed, , Reason unknown.
Not completed, Line busy.
Not completed, No dial tone.
Not completed, Line cut.
Not completed, No connection.
Not completed, No modem response.
Reserved.
Extended Status of the most recent call to each
telephone phone number.

Decade 9: Telephone Control Tables / Table 97 Last Telephone Call Status

273

ANSI C12.19-2008

Tables

9.10.9 Table 98 Telephone Call Originate Status


Table 98 Data Description
ORIGINATE_STATUS_TBL (Table 98) indicates the status of the defined Originate Schedule.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 98 Type Definitions
TYPE ORIGINATE_STATUS_RCD = PACKED RECORD
IMMEDIATE_STATUS : SET((ACT_TELEPHONE_TBL.NBR_ORIGINATE_NUMBERS + 7)/
8);
RECURRING_STATUS : SET((ACT_TELEPHONE_TBL.NBR_RECURRING_DATES + 7)/ 8);
NON_RECURRING_STATUS :
SET((ACT_TELEPHONE_TBL.NBR_NON_RECURRING_DATES + 7)/ 8);
WEEKLY_STATUS
:
SET((ACT_TELEPHONE_TBL.NBR_WEEKLY_SCHEDULES + 7)/ 8);
CALL_TRIGGER_STATUS
:
ARRAY[ACT_TELEPHONE_TBL.NBR_EVENTS] OF
ED_MODE_STATUS_TBL.ED_MODE_STATUS_RCD;
WINDOW_STATUS
:
SET((ACT_TELEPHONE_TBL.NBR_ORIGINATE_WINDOWS + 7)/ 8);
NEXT_RECURRING_DATE
:
ARRAY[ACT_TELEPHONE_TBL.NBR_RECURRING_DATES]
OF LTIME_DATE;
NEXT_WEEKLY_SCHEDULE :
ARRAY[ACT_TELEPHONE_TBL.NBR_WEEKLY_SCHEDULES]
OF LTIME_DATE;
END;
TABLE 98 ORIGINATE_STATUS_TBL = ORIGINATE_STATUS_RCD;
Table 98 Element Descriptions
Value

Identifier
ORIGINATE_STATUS_RCD
IMMEDIATE_STATUS

274

Definition
This is a SET of bits. Each bit is set when an
immediate call is requested and is cleared when
the call is completed.

RECURRING_STATUS

This is a SET of bits. Each bit is set when the


recurring date occurs and is cleared when the
call is completed.

NON_RECURRING_STATUS

This is a SET of bits. Each bit is set when the


non-recurring date occurs and is cleared when
the call is completed.

WEEKLY_STATUS

This is a SET of bits. Each bit is set when the


Weekly Schedule occurs and is cleared when
the call is completed.

Decade 9: Telephone Control Tables / Table 98 Telephone Call Originate Status

Tables

ANSI C12.19-2008

CALL_TRIGGER_STATUS

A bit that is set to TRUE in this indicates that the


corresponding status bit change has occurred
and is configured as a call home reason. The bit
is cleared when the call is complete.

WINDOW_STATUS

This is a SET of bits. Each bit is set when the


corresponding window is open, cleared when it
is closed.

NEXT_RECURRING_DATE

Array of actual dates for the next occurrence of


each recurring date.

NEXT_WEEKLY_SCHEDULE

Array of actual dates for the next occurrence of


each weekly schedule.

Decade 9: Telephone Control Tables / Table 98 Telephone Call Originate Status

275

ANSI C12.19-2008

Tables

9.11 Decade 10: Unassigned


Reserved.

276

Decade 10: Unassigned

Tables

ANSI C12.19-2008

9.12 Decade 11: Load Control and Pricing Tables


Decade 11 Name
LOAD_CONTROL_DEC
This Decade contains Tables associated with load control operation. This Decade supports the
management of up to 255 control points. The state of control points can be changed based on one of the
following methods:

Direct load control: a command is sent directly to the End Device across a communication link
to modify the state of one or multiple control points.
Schedule: the End Device is programmed to modify the state of one or multiple control points at
specific dates, recurring dates, period of the week or event detection.
Condition: the End Device is programmed to modify the state of one or multiple control points
based on the magnitudes of metered quantities, price level (active tier), time of the day, period of
the year, or any other condition that can be construct by a Single Line Math expression.
Prepayment: the End Device is programmed to modify the state of one or multiple control points
based on a remaining credit.

Decade 11: Load Control and Pricing Tables

277

ANSI C12.19-2008

Tables

9.12.1 Table 110 Load Control Dimension Limits Table


Table 110 Data Description
DIM_LOAD_CONTROL_TBL (Table 110) specifies the maximum dimensional limits for this Decade.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 110 Type Definitions
TYPE DIM_LOAD_CONTROL_BFLD = BIT FIELD OF UINT16
DURATION_SUPPORTED_FLAG
: BOOL(0);
RANDOMIZATION_SUPPORTED_FLAG
: BOOL(1);
MANUAL_OVERRIDE_SUPPORTED_FLAG : BOOL(2);
MANUAL_TURN_ON_SUPPORTED_FLAG
: BOOL(3);
STATE_VERIFICATION_SUPPORTED_FLAG : BOOL(4);
ANCHOR_DATE_SUPPORTED_FLAG
: BOOL(5);
SOURCE_CONDITION_SUPPORTED_FLAG : BOOL(6);
TIER_CONDITION_SUPPORTED_FLAG
: BOOL(7);
TIME_CONDITION_SUPPORTED_FLAG
: BOOL(8);
FILLER
: FILL(9..15);
END;
TYPE DIM_LOAD_CONTROL_RCD = PACKED RECORD
DIM_LOAD_CONTROL
: DIM_LOAD_CONTROL_BFLD;
NBR_OF_CONTROL_POINTS
: UINT8;
NBR_RECURRING_DATES
: UINT8;
NBR_NON_RECURRING_DATES
: UINT8;
NBR_EVENTS
: UINT8;
NBR_OF_WEEKLY_SCHEDULES
: UINT8;
NBR_OF_CONDITIONS
: UINT8;
NBR_OF_CONSUMPTIONS
: UINT8;
SLM_CONDITION_LEN
: UINT16;
SLM_EQUATION_LEN
: UINT16;
END;
TABLE 110 DIM_LOAD_CONTROL_TBL = DIM_LOAD_CONTROL_RCD;
Table 110 Element Descriptions
Identifier

Value

DIM_LOAD_CONTROL_BFLD
DURATION_SUPPORTED_FLAG
FALSE
TRUE
RANDOMIZATION_SUPPORTED_FLAG
FALSE
TRUE

278

Definition

End Device is not capable of processing a load


control directive with a duration.
End Device is capable of processing a load
control directive with a duration.
End Device is not capable of automatically
randomizing a load control directive.
End Device is capable of automatically
randomizing a load control directive.

Decade 11: Load Control and Pricing Tables / Table 110 Load Control Dimension Limits Table

Tables

ANSI C12.19-2008

MANUAL_OVERRIDE_SUPPORTED_FLAG
FALSE
TRUE
MANUAL_TURN_ON_SUPPORTED_FLAG
FALSE
TRUE

End Device is not capable of supporting manual


override of load control directives.
End Device is capable of supporting manual
override of load control directives.
End Device is not capable of supporting
turn-on of its control points after each
directive.
End Device is capable of supporting
turn-on of its control points after each
directive.

manual
turn-on
manual
turn-on

STATE_VERIFICATION_SUPPORTED_FLAG
FALSE
End Device is not capable of measuring the
state of its control points.
TRUE
End Device is capable of measuring the state of
its control points.
ANCHOR_DATE_SUPPORTED_FLAG
FALSE
TRUE

SOURCE_CONDITION_SUPPORTED_FLAG
FALSE
TRUE
TIER_CONDITION_SUPPORTED_FLAG
FALSE
TRUE
TIME_CONDITION_SUPPORTED_FLAG
FALSE
TRUE

DIM_LOAD_CONTROL_RCD
DIM_LOAD_CONTROL
NBR_OF_CONTROL_POINTS 0..255

End Device is not capable of accepting a


separate load control schedule anchor date for
the Period/Delta RDATE type (recurring date).
End Device is capable of accepting a separate
load control schedule anchor date for the
Period/Delta RDATE type (recurring date).
Load Control Conditions Table (Table 115)
cannot include a condition based on a source
limit.
Load Control Conditions Table (Table 115) can
include a condition based on a source limit.
Load Control Conditions Table (Table 115)
cannot include a condition based on the active
tier.
Load Control Conditions Table (Table 115) can
include a condition based on the active tier.
Load Control Conditions Table (Table 115)
cannot include a condition based on the actual
time of day and period of the year.
Load Control Conditions Table (Table 115) can
include a condition based on the actual time of
day and period of the year.
See DIM_LOAD_CONTROL_BFLD.
Maximum number of control points supported.

Decade 11: Load Control and Pricing Tables / Table 110 Load Control Dimension Limits Table

279

ANSI C12.19-2008

NBR_RECURRING_DATES

Tables

0..255

NBR_NON_RECURRING_DATES
0..255

NBR_EVENTS

0..255

NBR_OF_WEEKLY_SCHEDULES
0..255

280

Maximum number of recurring dates supported


in the Load Control Schedule Table (Table 114).
Maximum number of non-recurring dates
supported in the Load Control Schedule Table
(Table 114).
Maximum number of event schedules supported
in the Load Control Schedule Table (Table 114).
Maximum number of weekly schedules
supported in the Load Control Schedule Table
(Table 114).

NBR_OF_CONDITIONS

0..255

Maximum number of conditions supported in the


Load Control Conditions Table (Table 115).

NBR_OF_CONSUMPTIONS

0..255

Maximum number of consumption histories


supported in the Prepayment Status Table
(Table 116).

SLM_CONDITION_LEN

0..65535

Maximum length of Single Line Math


expressions (SLM) used to set load control
conditions.

SLM_EQUATION_LEN

0..65535

Maximum length of the Single Line Math


expressions (SLMs) used to set a billing
equation.

Decade 11: Load Control and Pricing Tables / Table 110 Load Control Dimension Limits Table

Tables

ANSI C12.19-2008

9.12.2 Table 111 Actual Load Control Limiting Table


Table 111 Data Description
ACT_LOAD_CONTROL_TBL (Table 111) specifies the actual dimensional limits for this Decade.
Global Default Table Property Overrides: Role=ACTUAL
Table 111 Type Definitions
TABLE 111 ACT_LOAD_CONTROL_TBL = DIM_LOAD_CONTROL_RCD;
Table 111 Element Descriptions
Identifier

Value

DIM_LOAD_CONTROL_BFLD

Definition
Redefines:
DIM_LOAD_CONTROL_TBL.
DIM_LOAD_CONTROL_BFLD.

DURATION_SUPPORTED_FLAG
FALSE
TRUE
RANDOMIZATION_SUPPORTED_FLAG
FALSE
TRUE
MANUAL_OVERRIDE_SUPPORTED_FLAG
FALSE
TRUE
MANUAL_TURN_ON_SUPPORTED_FLAG
FALSE
TRUE

Load control directive does not include duration.


Load control directive includes duration.
End Device does not automatically randomize
load control directives.
End Device automatically randomizes load
control directives.
End Device is not configured for manual
override of load control directives.
End Device is configured for manual override of
load control directives.
End Device does not support manual turn-on of
its control points after each turn-on directive.
End Device supports manual turn-on of its
control points after each turn-on directive.

STATE_VERIFICATION_SUPPORTED_FLAG
FALSE
End Device does not provide the measurement
of the state of its control points in the Load
Control Status Table (Table 112).
TRUE
End Device provides the measurement of the
state of its control points in the Load Control
Status Table (Table 112).
ANCHOR_DATE_SUPPORTED_FLAG
FALSE
TRUE

End Device is not accepting a separate load


control schedule anchor date for the
Period/Delta RDATE type (recurring date).
End Device is accepting a separate load control
schedule anchor date for the Period/Delta

Decade 11: Load Control and Pricing Tables / Table 111 Actual Load Control Limiting Table

281

ANSI C12.19-2008

Tables

RDATE type (recurring date).


SOURCE_CONDITION_SUPPORTED_FLAG
FALSE
TRUE
TIER_CONDITION_SUPPORTED_FLAG
FALSE
TRUE
TIME_CONDITION_SUPPORTED_FLAG
FALSE
TRUE

DIM_LOAD_CONTROL_RCD

Load Control Conditions Table (Table 115) does


not include a condition based on the active Tier.
Load Control Conditions Table (Table 115)
includes a condition based on the active Tier.
Load Control Conditions Table (Table 115) does
not include a condition based on the actual time
of day and period of the year.
Load Control Conditions Table (Table 115)
includes a condition based on the actual time of
day and period of the year.

Redefines:
DIM_LOAD_CONTROL_TBL.
DIM_LOAD_CONTROL_RCD.
See DIM_LOAD_CONTROL_BFLD.

DIM_LOAD_CONTROL
NBR_OF_CONTROL_POINTS 0..255

Actual number of control points.

NBR_RECURRING_DATES

Actual number of recurring dates in the Load


Control Schedule Table (Table 114).

0..255

NBR_NON_RECURRING_DATES
0..255
NBR_EVENTS

0..255

NBR_OF_WEEKLY_SCHEDULES
0..255

282

Load Control Conditions Table (Table 115) does


not include a condition based on a source limit.
Load Control Conditions Table (Table 115)
includes a condition based on a source limit.

Actual number of non-recurring dates supported


in the Load Control Schedule Table (Table 114).
Actual number of event schedules in the Load
Control Schedule Table (Table 114).
Actual number of weekly schedules in the Load
Control Schedule Table (Table 114).

NBR_OF_CONDITIONS

0..255

Actual number of conditions in the Load Control


Conditions Table (Table 115).

NBR_OF_CONSUMPTIONS

0..255

Actual number of consumption history records in


the Prepayment Status Table (Table 116).

SLM_CONDITION_LEN

0..65535

Actual length of Single Line Math expressions


(SLM) used to set load control conditions.

SLM_EQUATION_LEN

0..65535

Actual length of the Single Line Math expression


(SLM) used to set a billing equation.

Decade 11: Load Control and Pricing Tables / Table 111 Actual Load Control Limiting Table

Tables

ANSI C12.19-2008

9.12.3 Table 112 Load Control Status


Table 112 Data Description
LC_STATUS_TBL (Table 112) provides the actual status of each control point supported by the End
Device.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 112 Type Definitions
TYPE LC_STATUS_ENTRY_BFLD = BIT FIELD OF UINT8
LEVEL_SUPPORTED_FLAG
: BOOL(0);
IF ACT_LOAD_CONTROL_TBL.MANUAL_OVERRIDE_SUPPORTED_FLAG THEN
MANUALLY_OVERRIDDEN_FLAG
: BOOL(1);
END;
IF ACT_LOAD_CONTROL_TBL.MANUAL_TURN_ON_SUPPORTED_FLAG THEN
WAITING_TO_BE_TURNED_ON_FLAG
: BOOL(2);
END;
FILLER
: FILL(3..7);
END;
TYPE LC_STATUS_ENTRY_RCD = PACKED RECORD
NAME
: STRING(20);
REQUESTED_LEVEL
: UINT8;
OUTPUT_LEVEL
: UINT8;
IF ACT_LOAD_CONTROL_TBL.STATE_VERIFICATION_SUPPORTED_FLAG THEN
SENSED_LEVEL
: UINT8;
END;
STATUS
: LC_STATUS_ENTRY_BFLD;
IF ACT_LOAD_CONTROL_TBL.DURATION_SUPPORTED_FLAG THEN
DURATION_COUNT_DOWN
: TIME;
END;
IF ACT_LOAD_CONTROL_TBL.RANDOMIZATION_SUPPORTED_FLAG THEN
RANDOMIZATION_COUNT_DOWN
: TIME;
END;
END;
TYPE LC_STATUS_RCD = PACKED RECORD
STATUS_ENTRIES
:
ARRAY[ACT_LOAD_CONTROL_TBL.NBR_OF_CONTROL_POINTS]
OF LC_STATUS_ENTRY_RCD;
END;
TABLE 112 LC_STATUS_TBL = LC_STATUS_RCD;
Table 112 Element Descriptions
Identifier

Value

Definition

FALSE

Control points are controlled with a binary level


only (Level < 50% means On and Level >= 50%

LC_STATUS_ENTRY_BFLD
LEVEL_SUPPORTED_FLAG

Decade 11: Load Control and Pricing Tables / Table 112 Load Control Status

283

ANSI C12.19-2008

Tables

TRUE
MANUALLY_OVERRIDDEN_FLAG
FALSE
TRUE
WAITING_TO_BE_TURNED_ON_FLAG
FALSE
TRUE
LC_STATUS_ENTRY_RCD
NAME

This control point is not actually manually


overridden.
This control point is actually manually
overridden.
This control point does not wait for a manual
intervention before changing state.
This control point waits for a manual intervention
before changing state.
Descriptive name for this control point.

REQUESTED_LEVEL

0..100

The desired level of this control point according


to the last load control directive.

OUTPUT_LEVEL

0..100

The asserted level at the input of the load


control device.
The difference between
OUTPUT_LEVEL and REQUESTED_LEVEL
can be caused by randomization, manual
override, manual turn on or an output control
failure.

SENSED_LEVEL

0..100

Actual level sensed at the output of this control


device. A significant difference between this
level and the OUTPUT_LEVEL indicates a
physical problem with either the control point or
its sensor.

DURATION_COUNT_DOWN

Actual countdown of the duration value received


in the last control directive. When this value
reaches zero (0), the control point returns to its
previous state (state before receiving this load
control directive).

RANDOMIZATION_COUNT_DOWN

Actual countdown of the randomization period.


This value is set to a random period when a load
control directive is triggered. When this value
reaches zero (0), the load control directive is
applied, and if duration period is supported, the
DURATION_COUNT_DOWN is set to the value
received by this control directive.

LC_STATUS_RCD
STATUS_ENTRIES

284

means off).
Control points are controlled with a percentage
(0 to 100%).

Array that contains the actual status of each


control point.

Decade 11: Load Control and Pricing Tables / Table 112 Load Control Status

Tables

ANSI C12.19-2008

9.12.4 Table 113 Load Control Configuration


Table 113 Data Description
LC_CONFIGURATION_TBL (Table 113) allows the configuration of the basic behavior of each control
point available.
Global Default Table Property Overrides: Role=CONTROL
Table 113 Type Definitions
TYPE LC_CONFIGURATION_ENTRY_BFLD = BIT FIELD OF UINT8
IF ACT_LOAD_CONTROL_TBL.MANUAL_OVERRIDE_SUPPORTED_FLAG THEN
MANUAL_OVERRIDE_ENABLE_FLAG
: BOOL(0);
END;
IF ACT_LOAD_CONTROL_TBL.MANUAL_TURN_ON_SUPPORTED_FLAG THEN
MANUAL_TURN_ON_ENABLE_FLAG
: BOOL(1);
END;
IF GEN_CONFIG_TBL.STD_PROC_USED[DIRECT_LOAD_CONTROL_PROC] THEN
DIRECT_CONTROL_ENABLE_FLAG
: BOOL(2);
END;
FILLER
: FILL(3..7);
END;
TYPE LC_CONFIGURATION_ENTRY_RCD = PACKED RECORD
NAME
: STRING(20);
MINIMUM_ON_TIME
: TIME;
MINIMUM_OFF_TIME
: TIME;
CONFIGURATION
: LC_CONFIGURATION_ENTRY_BFLD;
END;
TYPE LC_CONFIGURATION_RCD = PACKED RECORD
CONFIGURATION
:
ARRAY[ACT_LOAD_CONTROL_TBL.NBR_OF_CONTROL_POINTS]
OF LC_CONFIGURATION_ENTRY_RCD;
END;
TABLE 113 LC_CONFIGURATION_TBL = LC_CONFIGURATION_RCD;
Table 113 Element Descriptions
Identifier

Value

LC_CONFIGURATION_ENTRY_BFLD
MANUAL_OVERRIDE_ENABLE_FLAG
FALSE
TRUE
MANUAL_TURN_ON_ENABLE_FLAG
FALSE
TRUE

Definition

Control point directive cannot be manually


overridden.
Control point directive can be manually
overridden.
Turn-on directive is applied without any manual
intervention.
Turn-on directive is applied after a manual

Decade 11: Load Control and Pricing Tables / Table 113 Load Control Configuration

285

ANSI C12.19-2008

Tables
intervention.

DIRECT_CONTROL_ENABLE_FLAG
FALSE
TRUE
LC_CONFIGURATION_ENTRY_RCD
NAME

Descriptive name for this control point.

MINIMUM_ON_TIME

Minimum period this control point shall be turned


on before turning it off again.

MINIMUM_OFF_TIME

Minimum period this control point shall be turned


off before turning it on again.

CONFIGURATION

See LC_CONFIGURATION_ENTRY_BFLD..

LC_CONFIGURATION_RCD
CONFIGURATION

286

Control point cannot be directly controlled by the


Direct load control procedure (Procedure 21).
Control point can be directly controlled by the
Direct load control procedure (Procedure 21).

Array that contains the configuration of each


control point.

Decade 11: Load Control and Pricing Tables / Table 113 Load Control Configuration

Tables

ANSI C12.19-2008

9.12.5 Table 114 Load Control Schedule


Table 114 Data Description
LC_SCHEDULE_TBL (Table 114) implements the schedule-based method of load control. This method
consists of programming the days of the week and time of day a load control directive is executed.
Global Default Table Property Overrides: Role=CONTROL
Table 114 Type Definitions
TYPE LC_RECURRING_DATES_RCD = PACKED RECORD
LC_DATE
: RDATE;
LC_TIME
: TIME;
DIRECTIVE
: DIRECT_LOAD_CONTROL_PROC.PARM_DATA_RCD;
END;
TYPE LC_NON_RECURRING_DATES_RCD = PACKED RECORD
LC_DATE
: DATE;
LC_TIME
: TIME;
DIRECTIVE
: DIRECT_LOAD_CONTROL_PROC.PARM_DATA_RCD;
END;
TYPE LC_EVENTS_RCD = PACKED RECORD
ED_STD_STATUS1
: ED_MODE_STATUS_TBL.ED_STD_STATUS1_BFLD;
ED_STD_STATUS2
: ED_MODE_STATUS_TBL.ED_STD_STATUS2_BFLD;
ED_MFG_STATUS
: ED_MODE_STATUS_TBL.ED_MFG_STATUS_RCD;
DIRECTIVE
: DIRECT_LOAD_CONTROL_PROC.PARM_DATA_RCD;
END;
TYPE DAYS_BFLD = BIT FIELD OF UINT8
SUNDAY_FLAG
: BOOL(0);
MONDAY_FLAG
: BOOL(1);
TUESDAY_FLAG
: BOOL(2);
WEDNESDAY_FLAG : BOOL(3);
THURSDAY_FLAG
: BOOL(4);
FRIDAY_FLAG
: BOOL(5);
SATURDAY_FLAG
: BOOL(6);
FILLER
: FILL(7..7);
END;
TYPE LC_SCHEDULE_RCD = PACKED RECORD
DAYS
: DAYS_BFLD;
LC_TIME
: TIME;
DIRECTIVE
: DIRECT_LOAD_CONTROL_PROC.PARM_DATA_RCD;
END;
TYPE LC_SCHEDULES_RCD = PACKED RECORD
IF ACT_LOAD_CONTROL_TBL.ANCHOR_DATE_SUPPORTED_FLAG THEN
ANCHOR_DATE
: DATE;
END;
RDATES
: ARRAY[ACT_LOAD_CONTROL_TBL.NBR_RECURRING_DATES]
OF LC_RECURRING_DATES_RCD;
DATES
: ARRAY[ACT_LOAD_CONTROL_TBL.NBR_NON_RECURRING_DATES]

Decade 11: Load Control and Pricing Tables / Table 114 Load Control Schedule

287

ANSI C12.19-2008

Tables

OF LC_NON_RECURRING_DATES_RCD;
: ARRAY[ACT_LOAD_CONTROL_TBL.NBR_EVENTS]
OF LC_EVENTS_RCD;
WEEKLY_SCHEDULES
: ARRAY[ACT_LOAD_CONTROL_TBL.NBR_OF_WEEKLY_SCHEDULES]
OF LC_SCHEDULE_RCD;
EVENTS

END;
TABLE 114 LC_SCHEDULE_TBL = LC_SCHEDULES_RCD;
Table 114 Element Descriptions
Value

Identifier
LC_RECURRING_DATES_RCD
LC_DATE

Recurring date at which this load control


directive is triggered.

LC_TIME

Time at which this load control directive is


triggered.

DIRECTIVE

Load control directive as defined in Direct load


control procedure (Procedure 21).

LC_NON_RECURRING_DATES_RCD
LC_DATE

Date at which this load control directive is


triggered.

LC_TIME

Time at which this load control directive is


triggered.

DIRECTIVE

Load control directive as defined in Direct load


control procedure (Procedure 21).

LC_EVENTS_RCD
ED_STD_STATUS1

Standard status events on which a state change


(from FALSE to TRUE) triggers a load control
directive.

ED_STD_STATUS2

Standard status events on which a state change


(from FALSE to TRUE) triggers a load control
directive.

ED_MFG_STATUS

Manufacturer status events on which a state


change (from FALSE to TRUE) triggers a load
control directive.

DIRECTIVE

Load control directive as defined in Direct load


control procedure (Procedure 21).

LC_SCHEDULES_BFLD
SUNDAY_FLAG
MONDAY_FLAG

288

Definition

FALSE
TRUE

Not triggered on Sunday.


Triggered on Sunday.

FALSE

Not triggered on Monday.

Decade 11: Load Control and Pricing Tables / Table 114 Load Control Schedule

Tables

ANSI C12.19-2008
TRUE

Triggered on Monday.

TUESDAY_FLAG

FALSE
TRUE

Not triggered on Tuesday.


Triggered on Tuesday.

WEDNESDAY_FLAG

FALSE
TRUE

Not triggered on Wednesday.


Triggered on Wednesday.

THURSDAY_FLAG

FALSE
TRUE

Not triggered on Thursday.


Triggered on Thursday.

FRIDAY_FLAG

FALSE
TRUE

Not triggered on Friday.


Triggered on Friday.

SATURDAY_FLAG

FALSE
TRUE

Not triggered on Saturday.


Triggered on Saturday.

LC_SCHEDULE_RCD
DAYS

Days on which this load control directive is


triggered.

LC_TIME

Time at which this load control directive is


triggered.

DIRECTIVE

Load control directive as defined in Direct load


control procedure (Procedure 21).

LC_SCHEDULES_RCD
ANCHOR_DATE

A separate load control schedule anchor date


used with an RDATE recurring date using the
PERIOD/OFFSET mechanism. If this table
contains an anchor date it is used with RDATE.
If not present, and an anchor date is provided in
Table 54 (CALENDAR_TBL) then RDATE will
use that anchor date. If neither anchor date is
present then the anchor date is defined by the
manufacturer.

RDATES

Array of recurring dates that trigger load control


directives.

DATES

Array of non-recurring dates that trigger load


control directives.

EVENTS

Array of events
directives.

WEEKLY_SCHEDULES

Array of weekly schedules that trigger load


control directives.

that

Decade 11: Load Control and Pricing Tables / Table 114 Load Control Schedule

trigger load control

289

ANSI C12.19-2008

Tables

9.12.6 Table 115 Load Control Conditions


Table 115 Data Description
LC_CONDITIONS_TBL (Table 115) implements the condition-based method of load control. This
method consists of programming conditions directly in the End Device that trigger control point directives.
Conditions can be based on source limit, the active Tier, the time of the day, the period of the year or any
other condition that can be construct using a Single Line Math expression.
Global Default Table Property Overrides: Role=CONTROL
Table 115 Type Definitions
{ Enumerator OPERATOR_ENUM }
{ Enumerator CONDITION_MONTH_ENUM }
TYPE SOURCE_CONDITION_RCD = PACKED RECORD
SOURCE
: STD. SOURCE_SELECT_RCD;
OPERATOR
: UINT8;
VALUE
: NI_FMAT1;
END;
TYPE TIER_CONDITION_RCD = PACKED RECORD
OPERATOR
: UINT8;
VALUE
: UINT8;
END;
TYPE DATE_CONDITION_BFLD = BIT FIELD OF UINT32
START_MONTH
: UINT(0..3);
START_DATE
: UINT(4..8);
END_MONTH
: UINT(9..12);
END_DATE
: UINT(13..17);
FILLER
: FILL(18..31);
END;
TYPE TIME_CONDITION_RCD = PACKED RECORD
ALLOWED_DAYS
: LC_SCHEDULE_TBL.DAYS_BFLD;
START_TIME
: STIME;
END_TIME
: STIME;
END;
TYPE LC_CONDITION_RCD = PACKED RECORD
IF ACT_LOAD_CONTROL_TBL.SOURCE_CONDITION_SUPPORTED_FLAG THEN
SOURCE_CONDITION
: SOURCE_CONDITION_RCD;
END;
IF ACT_LOAD_CONTROL_TBL.TIER_CONDITION_SUPPORTED_FLAG THEN
TIER_CONDITION
: TIER_CONDITION_RCD;
END;
IF ACT_LOAD_CONTROL_TBL.TIME_CONDITION_SUPPORTED_FLAG THEN
DATE_CONDITION
: DATE_CONDITION_BFLD;
TIME_CONDITION
: TIME_CONDITION_RCD;
END;
SLM_CONDITION
: STRING(ACT_LOAD_CONTROL_TBL.SLM_CONDITION_LEN);

290

Decade 11: Load Control and Pricing Tables / Table 115 Load Control Conditions

Tables

ANSI C12.19-2008

DIRECTIVE

: DIRECT_LOAD_CONTROL_PROC.PARM_DATA_RCD;

END;
TYPE LC_CONDITIONS_RCD = PACKED RECORD
CONDITIONS
: ARRAY[ACT_LOAD_CONTROL_TBL.NBR_OF_CONDITIONS]
OF LC_CONDITION_RCD;
END;
TABLE 115 LC_CONDITIONS_TBL = LC_CONDITIONS_RCD;
Table 115 Element Descriptions
Identifier

Value

Definition

OPERATOR_ENUM

0
1
2
3
4
5
6
7..255

Greater than or equal.


Greater than.
Equal.
Not equal.
Less than.
Less than or equal.
Not applicable, ignore this condition.
Reserved.

CONDITION_MONTH_ENUM

0
1
2
3
4
5
6
7
8
9
10
11
12
13..15

Unassigned. Condition ignored.


January.
February.
March.
April.
May.
June.
July.
August.
September.
October.
November.
December.
Reserved.

SOURCE_CONDITION_RCD
SOURCE

Data source selector of the value to be


compared.

OPERATOR

See OPERATOR_ENUM.

SOURCE_VALUE

Value on which condition applies. For example:


When SOURCE = 2, OPERATOR = 1 and
VALUE = 1000.000, means IF source 2 >
1000.000.

TIER_CONDITION_RCD
OPERATOR
TIER_VALUE

See OPERATOR_ENUM.
Value on which condition applies. For example:
When OPERATOR = 3 and VALUE = 2, means
IF active tier != 2.

Decade 11: Load Control and Pricing Tables / Table 115 Load Control Conditions

291

ANSI C12.19-2008

Tables

DATE_CONDITION_BFLD
START_MONTH
START_DATE

See CONDITION_MONTH_ENUM.
0
1..31

END_MONTH

ignored.

See

See CONDITION_MONTH_ENUM.

END_DATE

0
1..31

TIME_CONDITION_RCD
ALLOWED_DAYS

Unassigned. Condition ignored.


End day for this period.
Defines the days of the week where load control
is allowed.

START_TIME

Defines the start time of the day where load


control is allowed. START_TIME is inclusive.
For example, START_TIME = 10:00:00 means
the load control begins at 10:00:00.

END_TIME

Defines the end time of the day where load


control is allowed. END_TIME is exclusive. For
example, END_TIME = 12:00:00 means the load
control is not longer in operation at 12:00:00.

LC_CONDITION_RCD

All conditions defined in this structure must be


TRUE or set to ignore before applying the
associated directive.

SOURCE_CONDITION

Condition based on a source limit.

TIER_CONDITION

Condition based on the active


represents the actual pricing level.

DATE_CONDITION

Condition based on the period of the year.

TIME_CONDITION

Condition based on the time of day and day of


week.

SLM_CONDITION

Condition defined by a Single Line Math


expression. This field is ignored if zero length,
or contains all spaces (20H). For expression
construction,
see
Section
5.14,
SLM
Expression.

DIRECTIVE

Load control directive as defined in Direct load


control procedure (Procedure 21).

LC_CONDITIONS_RCD
CONDITIONS

292

Unassigned.
Condition
TIME_CONDITION.
Start day for this period.

Tier

that

Array that contains load control conditions. Each


entry of this Array works independently. If
multiple CONDITIONS Elements apply to the
same control point, the Element having the

Decade 11: Load Control and Pricing Tables / Table 115 Load Control Conditions

Tables

ANSI C12.19-2008
lower index shall apply.

Decade 11: Load Control and Pricing Tables / Table 115 Load Control Conditions

293

ANSI C12.19-2008

Tables

9.12.7 Table 116 Prepayment Status


Table 116 Data Description
PREPAYMENT_STATUS_TBL (Table 116) provides the actual prepayment status. This status includes
the remaining credit available for this End Device and some consumption history to guide the customer in
his consumption and transaction habits.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 116 Type Definitions
TYPE PREPAYMENT_HISTORY_RCD = PACKED RECORD
PP_DATE
: STIME_DATE;
PERIOD
: TIME;
CONSUMPTION_LCU
: NI_FMAT1;
END;
TYPE PREPAYMENT_STATUS_RCD = PACKED RECORD
REMAINING_CREDIT
: NI_FMAT1;
ACTUAL_CONSUMPTION
: NI_FMAT1;
AVERAGE_PER_DAY
: NI_FMAT1;
HISTORY_CONSUMPTION
:
ARRAY[ACT_LOAD_CONTROL_TBL.NBR_OF_CONSUMPTIONS]
OF PREPAYMENT_HISTORY_RCD;
END;
TABLE 116 PREPAYMENT_STATUS_TBL = PREPAYMENT_STATUS_RCD;
Table 116 Element Descriptions
Value

Identifier
PREPAYMENT_HISTORY_RCD
PP_DATE

Date and time of this period of consumption.

PERIOD

Duration reported.

CONSUMPTION_LCU

Consumption measured for this period in local


currency units.

PREPAYMENT_STATUS_RCD
REMAINING_CREDIT

294

Definition

Actual remaining credit available. This value


can be negative if CREDIT_LIMIT defined in the
Prepayment control table (Table 118) is
different from zero (0).

ACTUAL_CONSUMPTION

Actual rate of consumption in local currency


units per hour.

AVERAGE_PER_DAY

Average consumption per day based on the last


month of consumption in local currency units per
day.

Decade 11: Load Control and Pricing Tables / Table 116 Prepayment Status

Tables

ANSI C12.19-2008

HISTORY_CONSUMPTION

Array containing a history of consumption


recorded.

Decade 11: Load Control and Pricing Tables / Table 116 Prepayment Status

295

ANSI C12.19-2008

Tables

9.12.8 Table 117 Prepayment Control


Table 117 Data Description
PREPAYMENT_CONTROL_TBL (Table 117) implements the prepayment method of load control. This
Table is used to set credit limits for pre-warning, warning and turn-off directive.
Global Default Table Property Overrides: Role=CONTROL
Table 117 Type Definitions
TYPE PREPAYMENT_CONTROL_RCD = PACKED RECORD
PRE_WARNING_LIMIT
: UINT8;
WARNING_LIMIT
: UINT8;
OVERDRAFT_LIMIT
: NI_FMAT1;
DIRECTIVE
: DIRECT_LOAD_CONTROL_PROC.PARM_DATA_RCD;
END;
TABLE 117 PREPAYMENT_CONTROL_TBL = PREPAYMENT_CONTROL_RCD;
Table 117 Element Descriptions
Identifier

Value

Definition

PREPAYMENT_CONTROL_RCD
PRE_WARNING_LIMIT

0..255

Threshold on which a first warning is provided to


the customer. This threshold is defined in a
number of days before spending the
REMAINING_CREDIT. This value is compared
to the estimated time remaining computed
based on the AVERAGE_PER_DAY and the
REMAINING_CREDIT
defined
in
the
Prepayment Status Table (Table 116).

WARNING_LIMIT

0.255

Threshold on which a final warning is provided


to
the
customer.
As
with
the
PRE_WARNING_LIMIT,
this
value
also
represents a number of days before spending
the REMAINING_CREDIT.

296

OVERDRAFT_LIMIT

Negative value tolerated before applying the


load control directive.

DIRECTIVE

Load control directive as defined in Direct Load


Control procedure (Procedure 21) to apply if the
credit limit is exceeded.

Decade 11: Load Control and Pricing Tables / Table 117 Prepayment Control

Tables

ANSI C12.19-2008

9.12.9 Table 118 Billing Control


Table 118 Data Description
BILLING_CONTROL_TBL (Table 118) includes all parameters necessary to directly bill the customer.
This includes taxes, daily fix charges and rate of measured quantities based on the current season, tier
and type of quantity. In addition, a Single Line Math expression can be added to express a more
complex billing expression.
Global Default Table Property Overrides: Role=CONTROL
Table 118 Type Definitions
TYPE PRICING_RCD = PACKED RECORD
PRICE
: NI_FMAT1;
END;
TYPE OCCURRENCE_PRICING_RCD = PACKED RECORD
OCCURRENCE_PRICING
: ARRAY[ACT_REGS_TBL.NBR_OCCUR] OF
PRICING_RCD;
END;
TYPE TIER_PRICING_RCD = PACKED RECORD
SUMMATIONS_PRICING
: ARRAY[ACT_REGS_TBL.NBR_SUMMATIONS]
OF PRICING_RCD;
DEMAND_PRICING
: ARRAY[ACT_REGS_TBL.NBR_DEMANDS]
OF OCCURRENCE_PRICING_RCD;
END;
TYPE SEASON_PRICING_RCD = PACKED RECORD
IF ACT_REGS_TBL.NBR_TIERS != 0 THEN
TIER_PRICING
: ARRAY[ACT_REGS_TBL.NBR_TIERS]
OF TIER_PRICING_RCD;
ELSE
TIER_PRICING: TIER_PRICING_RCD;
END;
END;
TYPE BILLING_CONTROL_RCD = PACKED RECORD
DAILY_FIXED_CHARGE
: NI_FMAT1;
TAXES
: NI_FMAT1;
CONDITION_ON_SOURCE
: STD.SOURCE_SELECT_RCD;
LIMIT
: NI_FMAT1;
ACTION
: UNIT8;
TIER
: UNIT8;
SLM_EQUATION

: STRING(ACT_LOAD_CONTROL_TBL.SLM_EQUATION_LEN);

IF GEN_CONFIG_TBL.STD_TBLS_USED[ACT_TIME_TOU_TBL] &&
ACT_TIME_TOU_TBL.NBR_SEASONS != 0 THEN
SEASON_PRICING
: ARRAY[ACT_TIME_TOU_TBL.NBR_SEASONS]
OF SEASON_PRICING_RCD;
ELSE
SEASON_PRICING
: SEASON_PRICING_RCD;

Decade 11: Load Control and Pricing Tables / Table 118 Billing Control

297

ANSI C12.19-2008

Tables

END;
END;
TABLE 118 BILLING_CONTROL_TBL = BILLING_CONTROL_RCD;
Table 118 Element Descriptions
Value

Identifier
PRICING_RCD
PRICE

Definition
Price of this commodity in local currency units
per unit.

OCCURRENCE_PRICING_RCD
OCCURRENCE_PRICING

Pricing of each occurrence supported.

TIER_PRICING_RCD
SUMMATIONS_PRICING

Pricing of each summation supported.

DEMAND_PRICING

Pricing of each demand supported.

SEASON_PRICING_RCD
TIER_PRICING

Structure containing the pricing information for


commodities measured based on the actual tier
and type of measurement.

BILLING_CONTROL_RCD
DAILY_FIXED_CHARGE

Fixed charge per day for service and equipment


rental in local currency units per day.

TAXES

Tax to apply in percent (%).

CONDITION_ON_SOURCE

Data source selector of the value to be


compared.

LIMIT

Limit on which condition applies. For example:


CONDITION_ON_SOURCE = 2 and LIMIT =
1000.000, means IF source 2 > 1000.000
THEN perform the ACTION.

ACTION

Action to perform when the source selected by


CONDITION_ON_SOURCE exceeds the limit
set by LIMIT.
No action.
Switch to Tier specified by the next field (TIER).
Switch to current tier added to the next field
(TIER).

0
1
2
TIER
SLM_EQUATION

SEASON_PRICING

298

0..255

Specified Tier.
Single Line Math expression used in addition to
the SEASON_PRICING information to create
complex billing equation.
Structure containing the pricing information for

Decade 11: Load Control and Pricing Tables / Table 118 Billing Control

Tables

ANSI C12.19-2008
commodities measured based on the actual
season, Tier and type of measurement.

Decade 11: Load Control and Pricing Tables / Table 118 Billing Control

299

ANSI C12.19-2008

Tables

9.13 Decade 12: Reserved

300

Decade 12: Reserved

Tables

ANSI C12.19-2008

9.14 Decade 13: Reserved

Decade 13: Reserved

301

ANSI C12.19-2008

Tables

9.15 Decade 14: Extended User-defined Tables


Decade 14 Name
EXT_UDT_DEC
Decade 14 Data Description
The Extended User-defined Tables enable the C12.19 application to make selections from other tables
that are present or implied to be present in an End Device and redirect the resulting values into a userdefined table. The values gathered may then be retrieved from a desired Extended User-defined Table as
if the Standard provided an explicit Table and descriptive syntax to express the resulting Table structure.
The following general features are available to the application through the use of the Extended Userdefined Tables:

Elements, Sub-elements, Final Elements and subsets of Final Elements may be referenced for
use by an Extended User-Defined Table (EUDT).
The Element referenced can be directed into any one of 2040 Extended User-defined Tables.
The Elements are packed in accordance with the base-type packing rules.
It is possible to define pseudo BIT FIELD records for selecting bit field ranges from other tables
and mapping them into BIT FIELD records within the Extended User-defined Tables. Two
mapping methods are supplied for bit fields:
o Index method, which maps Elements, Sub-elements, Final Elements and subsets of
Final Elements of a formal Table.
o Offset method, which maps any bit range of a formal Table.

It is important to note that the Extended User-defined Tables are presumed not to be real tables inside
the End Device. Logically they may be thought of as if they are:
Constructed on-the-fly by an End-Device in response to a read or write request
Built at the time of issuance of a blurt from a One-way End-Device.

302

Decade 14: Extended User-defined Tables

Tables

ANSI C12.19-2008

9.15.1 Table 140 Extended User-defined Tables Function Limiting Table


Table 140 Data Description
This table contains the maximum limits for values and control parameters for the Extended User-defined
Tables.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 140 Type Definitions
TYPE EUDT_BFLD = BIT FIELD OF UINT8
DATA_ACCESS_METHOD
: UINT(0..1);
INDEX_DEPTH
: UINT(2..5);
FILLER
: FILL(6..7);
END;
TYPE EUDT_LIMITS_RCD = PACKED RECORD
EUDT_CTRL
: EUDT_BFLD;
NBR_EUDT
: UINT16;
NBR_INSTANCES
: UINT16;
NBR_SELECTIONS
: UINT16;
NBR_CONSTANTS
: UINT16;
NBR_LABEL_CHARS
: UINT8;
END;
TABLE 140 DIM_EUDT_TBL = EUDT_LIMITS_RCD;
Table 140 Element Descriptions
Identifier

Value

EUDT_BFLD
DATA_ACCESS_METHOD
0
1
2
3
INDEX_DEPTH

1..9
0

EUDT_LIMITS_RCD
EUDT_CTRL
NBR_EUDT

Definition
Designates the allowable methods for selecting
table entries for placement in an Extended Userdefined Table.
Only complete tables can be mapped into user
tables. Partial tables cannot be mapped.
Octet-offset/octet-count and bit-offset/bit-count
access methods are supported.
Index/element-count
access
method
is
supported.
Access methods 2 and 3 are both supported.
The maximum depth (number) of indices
supported.
Shall be set when DATA_ACCESS_METHOD
is 0 or 1.
See EUDT_BFLD.

0..2039

Maximum number of Extended User-defined


Tables (virtual tables within one End Device
instance) available for selections.

Decade 14: Extended User-defined Tables / Table 140 Extended User-defined Tables Function Limiting
Table
303

ANSI C12.19-2008

Tables
2040..65535

Reserved.

NBR_INSTANCES

0..65535

Maximum number
instances (virtual
selections.

NBR_SELECTIONS

0..65535

Maximum number of selections per Extended


User-defined Table.

NBR_CONSTANTS

0..65535

Maximum supported number of constants in


table EUDT_CONSTANTS_TBL.

NBR_LABEL_CHARS

0..255

Maximum supported number of characters per


Extended User-defined Table-element label.

of End
devices)

Device Table
available for

304Decade 14: Extended User-defined Tables / Table 140 Extended User-defined Tables Function Limiting Table

Tables

ANSI C12.19-2008

9.15.2 Table 141 Extended User-defined Tables Actual Limits Table


Table 141 Data Description
This table contains the actual limits for values and control parameters for the Extended User-defined
Tables.
Global Default Table Property Overrides: Role=ACTUAL
Table 141 Type Definitions
TABLE 141 ACT_EUDT_TBL = EUDT_LIMITS_RCD;
Table 141 Element Descriptions
Identifier

Value

EUDT_BFLD

Redefines: DIM_EUDT_TBL.EUDT_BFLD.

DATA_ACCESS_METHOD

Designates the method used for selecting table


entries for placement in an Extended Userdefined Table.
0
1
2
3

INDEX_DEPTH

1..9
0

EUDT_LIMITS_RCD

Complete tables are mapped into user tables.


Partial tables cannot be mapped.
Octet-offset/octet-count and bit-offset/bit-count
access method is used.
Index/element-count access method is used.
Reserved.
The maximum depth (number) of indices
supported.
Shall be set when DATA_ACCESS_METHOD
is 0 or 1.
Redefines:
DIM_EUDT_TBL.EUDT_LIMITS_RCD.

EUDT_CTRL
NBR_EUDT

Definition

See EUDT_BFLD.
0..2039
2040..65535

Actual number of Extended User-defined Tables


(virtual tables within one End Device instance)
available for selections.
Reserved.

NBR_INSTANCES

0..65535

Actual number of End Device Table instances


(virtual devices) available for selections.

NBR_SELECTIONS

0..65535

Actual number of selections per Extended Userdefined Table.

NBR_CONSTANTS

0..65535

Actual number of constants found in table


EUDT_CONSTANTS_TBL.

Decade 14: Extended User-defined Tables / Table 141 Extended User-defined Tables Actual Limits Table305

ANSI C12.19-2008

NBR_LABEL_CHARS

Tables

0..255

Actual supported number of characters in


extended-user-defined element label.

306Decade 14: Extended User-defined Tables / Table 141 Extended User-defined Tables Actual Limits Table

Tables

ANSI C12.19-2008

9.15.3 Table 142 Extended User-defined Selections Table


Table 142 Data Description
This table contains the Extended User-defined selections for constructing the Extended User-defined
Tables records. These selections enable the C12.19 Device application to direct the placement of Formal
Table, Elements, Final Elements, Sub-elements and arbitrary bit field subsets of any Formal Element into
an Extended User-defined Table.
Global Default Table Property Overrides: Role=CONTROL
Table 142 Type Definitions
TYPE EUDT_MAPPING_BFLD = BIT FIELD OF UINT32
FORMAL_UNIT_SIZE
: UINT(0..3);
FORMAL_PAD_ENABLE_FLAG
: BOOL(4);
FORMAL_PADDING
: UINT(5..6);
FORMAL_LIMITED_FLAG
: BOOL(7);
FORMAL_NUMERIC_FLAG
: BOOL(8);
EUDT_PRODUCTION_CTRL
: UINT(9..11);
FILLER
: FILL(12..15);
EUDT_ELEMENT_SIZE
: UINT(16..31);
END;
TYPE EUDT_ITEM_RCD = PACKED RECORD
EUDT_ELEMENT_NAME
: STRING(ACT_EUDT_TBL.NBR_LABEL_CHARS);
FORMAL_TABLE_ID
: TABLE_IDB_BFLD;
IF ACT_EUDT_TBL.NBR_INSTANCES > 1 THEN
FORMAL_INSTANCE_NBR
: UINT16;
END;
EUDT_MAPPING

: EUDT_MAPPING_BFLD;

SWITCH ACT_EUDT_TBL.DATA_ACCESS_METHOD OF
CASE 1:
FORMAL_BYTE_OFFSET
: UINT24;
FORMAL_OFFSET_NEXT
: UINT24;
CASE 2:
FORMAL_INDEX : ARRAY[ACT_EUDT_TBL. INDEX_DEPTH] OF UINT16;
FORMAL_ELEMENT_COUNT : UINT16;
FORMAL_INDEX_NEXT: ARRAY[ACT_EUDT_TBL. INDEX_DEPTH] OF
UINT16;
END;
FORMAL_BIT_OFFSET
: UINT8;
FORMAL_BIT_COUNT
: UINT16
ASSERT ( ACT_EUDT_TBL.DATA_ACCESS_METHOD == 2 &&
FORMAL_BIT_COUNT > 0 &&
FORMAL_ELEMENT_COUNT > 1 ) ERROR
Invalid use of FORMAL_ELEMENT_COUNT != 1 and FORMAL_BIT_COUNT > 0;
;
{ The semicolon closes FORMAL_BIT_COUNT phrase.}
FORMAL_REPEAT_COUNT

: UINT16;

END;

Decade 14: Extended User-defined Tables / Table 142 Extended User-defined Selections Table

307

ANSI C12.19-2008

Tables

TYPE TABLE_SELECTIONS_RCD = PACKED RECORD


EUDT_ID
: TABLE_IDB_BFLD;
SELECTIONS
: ARRAY[ACT_EUDT_TBL.NBR_SELECTIONS] OF
EUDT_ITEM_RCD;
END;
TYPE EUDT_SELECTIONS_RCD = PACKED RECORD
TABLE_SELECTIONS : ARRAY[ACT_EUDT_TBL.NBR_EUDT] OF
TABLE_SELECTIONS_RCD;
END;
TABLE 142 EUDT_SELECTIONS_TBL = EUDT_SELECTIONS_RCD;
Table 142 Element Descriptions
Value

Identifier

Definition

EUDT_MAPPING_BFLD
FORMAL_UNIT_SIZE

Defines the Formal Element size and data type


for accessing the selection from a Table
indicated by FORMAL_TABLE_ID. The type
casting takes place before the application of
FORMAL_BIT_COUNT
and
FORMAL_BIT_OFFSET. For example, when
FORMAL_BIT_OFFSET=5
and
FORMAL_BIT_COUNT=3, a selection from a 16
bit wide Element will collect bits starting at
Formal Element bit position 5 (where the first bit
is in position 0) to bit position 7, inclusive. This is
independent of the DATA_ORDER value found
in GEN_CONFIG_TBL. The type also affects
the interpretation of zero padding and sign
extension. Numeric values are padded with
zeros, CHAR values are padded with spaces
(20H).
0
1
2
3
4
5
6
7
8
9
10
11

308

8 bit Element.
16 bit Element.
24 bit Element.
32 bit Element.
40 bit Element.
48 bit Element.
64 bit element.
CHAR or STRING Element.
NI_FMAT1 Element.
NI_FMAT2 Element.
BCD Element.
Element is an entire PACKED RECORD, BIT
FIELD
or
built-in
type.
The
FORMAL_BIT_OFFSET
and
the
FORMAL_BIT_COUNT shall be set to zero (0).
The entire Element and its inner members shall
be referenced.

Decade 14: Extended User-defined Tables / Table 142 Extended User-defined Selections Table

Tables

ANSI C12.19-2008
12..15
FORMAL_PAD_ENABLE_FLAG

A flag that enables or disables the selectors


FORMAL_PADDING,
and
FORMAL_LIMITED_FLAG.

FALSE

All source padding functions are disabled.


Element transfer will begin with low order bits
and continue toward high order bits. Unavailable
source bits shall be set to zero.

TRUE

Source padding functions are enabled. Source


padding, sign extension and limits will be set as
per
FORMAL_PADDING,
and
FORMAL_LIMITED_FLAG.

FORMAL_PADDING

When the number of bits in the destination


element is larger than the source element then
sign extension or padding may be required.
FORMAL_UNIT_SIZE
dictates
the
sign
extension algorithm.
0

Sign extension is required.


The most significant bits are signed extended
according to the Formal Element type indicated
by FORMAL_UNIT_SIZE.

Pad with fill octets.


Copy octets starting at source bit to target with
zero fill padding.

Lead with fill octets.


Copy octets starting at source bit to target with
zero fill leading.

Reserved.

FORMAL_LIMITED_FLAG

Controls the roll-over behavior of a numeric field


that cannot be represented in a target space
that has lesser resolution than that of the
source.
FALSE
TRUE

FORMAL_NUMERIC_FLAG

Reserved.

Do not limit value.


On overflow the numeric result will not be limited
(truncated or rolled over).
Limit value.
On overflow the numeric result will be the
smallest negative or the largest positive
representation of the overflowing numeric field.
Example: if a 16 bit signed integer has the value
-1000 then when limited to 8 bit it will be set to
set to -128.
An indication that the selected field shall be
treated as a number. This flag forces nonnumeric fields, such as STRING, to be treated

Decade 14: Extended User-defined Tables / Table 142 Extended User-defined Selections Table

309

ANSI C12.19-2008

Tables
as a text representation of a number, and be
converted to or from numeric binary equivalent
of the target. Initialized to zero (0), numeric
conversion processing shall stop upon detection
of the end of selected field, or upon detection of
invalid numeric field value. Example: Assume
that the FORMAL_UNIT_SIZE is 7 (STRING)
and
EUDT_PRODUCTION_CTRL is 2
(UINT32), then a formal text value of 123 shall
be mapped to the UINT32 value 0000007BH
before placing it in the target collection BIT
FIELD.
FALSE
TRUE

EUDT_PRODUCTION_CTRL

EUDT_ELEMENT_SIZE

310

Do not map the non-numeric value to a number.


Map the non-numeric value to a number
according to the corresponding
value of
EUDT_PRODUCTION_CTRL.
Controls the bit-packing of BIT FIELDs of a
target EUDT bit field element. First members of
a BIT FIELD shall begin on an octet boundary
with zero octet padding. Bit stuffing shall begin
with bit 0 of the indicated data type and progress
toward the highest bit position available.

Start of a UINT8 bit field or collection of UINT8.


First member of a BIT FIELD OF UINT8 or a
non-bit-field member.

Start of a UINT16.
First member of a BIT FIELD OF UINT16 or a
non-bit-field member.

Start of a UINT32.
First member of a BIT FIELD OF UINT32 or a
non-bit-field member.

Start of a UINT64.
First member of a BIT FIELD OF UINT64 or a
non-bit-field member.

Next BIT FIELD member in sequence.

Start of an Element of a PACKED RECORD,


BIT FIELD or built-in type.

6..7

Reserved.

0..65535

Size of one EUDT element in bits. When the


source element size is smaller than the target
element size then only fitting bits will be
transferred, and may be padded, sign extended
or truncated. When the source element size is
greater than the target element size then the

Decade 14: Extended User-defined Tables / Table 142 Extended User-defined Selections Table

Tables

ANSI C12.19-2008
target element may be truncated or be limited.
See FORMAL_PAD_ENABLE_FLAG.

EUDT_ITEM_RCD

A single Formal-element to EUDT-element


association description. This identifies C12.19
Device Formal Table Elements or subsets of
Elements (elements other than EUDT elements)
for transport using an Extended User-defined
Table.

EUDT_ELEMENT_NAME

The optionally assigned label for the EUDT


element used in the production of EDL
schemas. If the size of this element is zero or it
contains only spaces then the element name is
not assigned. If the element name contains a
period then the label to the left of the period
represents the name of the container elements
(as may be needed when this element is the first
member of a bit-field) and the label on the right
hand side of the period is the bit-field member
name.

FORMAL_TABLE_ID

The formal table identifier. This shall not be an


EUDT or a UDT data table.

FORMAL_INSTANCE_NBR

0.. 65535

EUDT_MAPPING

The End Device Table set instance number


used for selecting the formal table. The instance
number refers to a logical table set number that
exists inside the same physical device.
See EUDT_MAPPING_BFLD.

FORMAL_BYTE_OFFSET

0..16777215

Offset in octets to the beginning of a formal


element relative to the beginning of the Table
which contains that Element.

FORMAL_OFFSET_NEXT

0..16777215

Offset in bytes to the next element or group of


elements relative to the beginning of current
selection. The initial selection is defined by
FORMAL_BYTE_OFFSET.
Additional
selections up to FORMAL_REPEAT_COUNT
may
be
made
by
advancing
FORMAL_BYTE_OFFSET by the value of
FORMAL_OFFSET_NEXT. The Final Elements
FORMAL_BIT_OFFSET
and
FORMAL_BIT_COUNT
shall
be
applied
repeatedly to each selection independently. This
is intended to facilitate access to ARRAY
Elements such as profile data or self-read.

FORMAL_INDEX

An
array
of
UINT16
containing
ACT_EUDT_TBL.INDEX_LEVEL indices that
represent the source of an element to be placed
in the next available slot of the desired
extended-user-defined table. The element may

Decade 14: Extended User-defined Tables / Table 142 Extended User-defined Selections Table

311

ANSI C12.19-2008

Tables
be any table object, table element, terminal
element or a sub-element. The index value of
FFFFH represents the end of the list.

FORMAL_ELEMENT_COUNT 0..65535

The number of Formal Elements selected. This


value shall be set to zero for unused selections.

FORMAL_INDEX_NEXT

An
array
of
UINT16
containing
ACT_EUDT_TBL.INDEX_LEVEL indices that
represent the relative offset to the Formal
Element to be associated with the next selection
in a sequence of selections.
The
initial
selection
is
defined
by
FORMAL_INDEX. Additional selections up to
FORMAL_REPEAT_COUNT may be made by
advancing the position of FORMAL_INDEX by
FORMAL_INDEX_NEXT to the next element
(Example
1.
Assume
that
FORMAL_INDEX=1.2.3,
FORMAL_INDEX_NEXT=0.1.0
and
FORMAL_REPEAT_COUNT=3 then Formal
Elements 1.2.3, 1.3.3 and 1.4.3 shall be
selected for placement in an EUDT.
Example
2.
Assume
that
FORMAL_INDEX=1.2.3,
FORMAL_INDEX_NEXT=1.1.0
and
FORMAL_REPEAT_COUNT=3 then Formal
Elements 1.2.3, 2.3.3 and 3.4.3 shall be
selected for placement in an EUDT. )
FORMAL_ELEMENT_COUNT,
FORMAL_BIT_OFFSET
and
FORMAL_BIT_COUNT are applied repeatedly
to each selection independently.
This is intended to facilitate access to ARRAY
Elements such as profile data or self-read.

FORMAL_BIT_OFFSET

0..255

Offset in bits to the beginning of a bit sequence


relative to the beginning of the selected element.
This
offset
is
independent
of
the
GEN_CONFIG_TBL.DATA_ORDER, since bit
offset zero (0) points to bit position zero (the
least significant bit) of the selected element. The
compliant application shall logically expand the
Final
Element
referred
to
by
the
FORMAL_BYTE_OFFSET before applying the
FORMAL_BIT_OFFSET.
This value shall be ignored (i.e., no access to bit
fields
of
sub-final-elements)
when
ACT_EUDT_TBL.DATA_ACCESS_METHOD =
2 and FORMAL_BIT_COUNT = 0.

312

Decade 14: Extended User-defined Tables / Table 142 Extended User-defined Selections Table

Tables

ANSI C12.19-2008

FORMAL_BIT_COUNT

0..65535

The number of bits selected. This value shall be


set to zero for unused selections.
Assert: ERROR on
(ACT_EUDT_TBL. DATA_ACCESS_METHOD
== 2 && FORMAL_BIT_COUNT > 0 &&
FORMAL_ELEMENT_COUNT > 1)
due to Invalid use of
FORMAL_ELEMENT_COUNT != 1 and
FORMAL_BIT_COUNT > 0".

FORMAL_REPEAT_COUNT

0..65535

The number of times to repeat the selection


made in this entry. This provides a capability for
the selection of elements from Formal ARRAYs
for delivery by EUDTs. The value 0 means that
there is no repeat; only one Element shall be
selected. The value 1 means that there is one
repeat, therefore, two Elements shall be
selected.

TABLE_SELECTIONS_RCD
EUDT_ID

The Extended User-defined Table that is a


collection of Elements from other tables from
within the End-Device that have been selected
for transmission via the EUDT_ID Extended
User-defined Table.

SELECTIONS

An array of FORMAL_ITEM_RCD. Array of


instructions that collect and direct Table values
to and from Extended User-defined Table. The
Extended User-defined Tables are populated
sequentially based on these selections. When a
constructed element from a selection is not a bitfield
member
(by
virtue
of
EUDT_PRODUCTION_CTRL being Next BIT
FIELD member in sequence) than it shall align
on the next octet boundary with zero fill. Also if
it is the first member of a bit-field then it may
optionally have a dot-separated name, where
the label to the left of the dot is the name of the
bit-field and the name to the right of the dot is
the name of the bit-field member element.
Collections of bit fields are grouped into
BIT_FIELD
types
for
transmission
in
accordance with the type defined in
EUDT_PRODUCTION_CTRL
These
are
assembled into the extended-user-defined BIT
FIELD table-element starting with bit field
position 0.
Selections made in any EUDT shall only
reference into Formal data Table Elements.
Also they shall not reference any UDT (Tables
84-89) or EUDT data table elements.

Decade 14: Extended User-defined Tables / Table 142 Extended User-defined Selections Table

313

ANSI C12.19-2008

EUDT_SELECTIONS_RCD
TABLE_SELECTIONS

314

Tables

An
array
of
Table
selections.
TABLE_SELECTIONS_RCD.

See

Decade 14: Extended User-defined Tables / Table 142 Extended User-defined Selections Table

Tables

ANSI C12.19-2008

9.15.4 Table 143 Extended User-defined Constants Table


Table 143 Data description
This table provides a place holder for placing various values that may be selected as Elements by Table
142, EUDT_SELECTIONS_TBL. A typical use for this Table is to fill elements with bit patterns or
numeric values that are non-changing and cannot be constructed from a reference to any standard or
manufacturer-defined Table Final Element.
Global Default Table Property Overrides: Role=CONTROL
Table 143 Type Definitions
TYPE EUDT_CONSTANTS_RCD = PACKED RECORD
CONSTANT : ARRAY [ACT_EUDT_TBL.NBR_CONSTANTS] OF INT64;
END;
TABLE 143 EUDT_CONSTANTS_TBL = EUDT_CONSTANTS_RCD;
Table 143 Element Descriptions
Identifier

Value

Definition

EUDT_CONSTANTS_RCD
CONSTANT
-9223372036854775808..9223372036854775807
An array of INT64. Entries from this array may
be seeded (programmed) with values and
referenced fully or in part from Table 142,
EUDT_SELECTIONS_TBL.

Decade 14: Extended User-defined Tables / Table 143 Extended User-defined Constants Table

315

ANSI C12.19-2008

Tables

9.16 Decade 15: Quality-of-service


Decade 15 Name
QUALITY_SERVICE_DEC
Decade 15 Data Description
This Decade provides the Tables required to capture information that is not necessarily used for the
production commodity consumption reports. The information recorded pertains to the evaluation of the
sustained quality commodity delivered. In the case of electrical services, these Tables are the
placeholders of Power Quality monitoring controls and data values. In the context of water and gas
industries, these Tables are the placeholders of for reports on water and gas commodity quality (such as
purity) and sustained delivery of the commodities. Time-domain and frequency-domain input sample
data (waveforms) can be captured periodically and as a result of a Quality-of-service event trigger. When
the commodities properties or their sustained delivery fall below certain acceptable limits (as indicated by
a service contract or regulation) then it leads to a Quality-of-service condition.
For example, in the electrical industry context, it is desirable to record a voltage sag or short duration
voltage interruption. The recording of these Events are known to the industry as power quality Events.
However, the continual recurrence of voltage sag or repeated short duration power interruptions elevates
Power Quality Events to Quality-of-service Events. This Decade provides the necessary framework to
accommodate both.
Note: In this Decade, the acronym FD is an abbreviation for the term Frequency Domain.
acronym TD is an abbreviation for the term Time Domain.
Decade 15 Type Definitions
TYPE TD_SAMPLE_FORMAT_RCD = PACKED RECORD
SWITCH QUALITY_CONTROL_TBL.TD_SAMPLES_FORMAT_CODE OF
CASE 1
:
ITEM : UINT8;
CASE 2
:
ITEM : UINT16;
CASE 4
:
ITEM : UINT32;
CASE 8
:
ITEM : INT8;
CASE 16:
ITEM : INT16;
CASE 32:
ITEM : INT32;
CASE 64:
ITEM : NI_FMAT1;
CASE 128:
ITEM : NI_FMAT2;
END;
END;
TYPE FD_SAMPLE_FORMAT_RCD = PACKED RECORD
SWITCH QUALITY_CONTROL_TBL. FD_SAMPLES_FORMAT_CODE OF
CASE 1
:
ITEM : UINT8;
CASE 2
:
ITEM : UINT16;
CASE 4
:
ITEM : UINT32;
CASE 8
:
ITEM : INT8;
CASE 16:
ITEM : INT16;
CASE 32:
ITEM : INT32;
CASE 64:
ITEM : NI_FMAT1;
CASE 128:
ITEM : NI_FMAT2;
END;
END;

316

The

Tables

ANSI C12.19-2008

TYPE WAVEFORM_LIST_STATUS_BFLD = BIT FIELD OF UINT8


ORDER
: UINT(0..0);
OVERFLOW_FLAG
: BOOL(1);
LIST_TYPE
: UINT(2..2);
BLOCK_INHIBIT_OVERFLOW_FLAG
: BOOL(3);
INTERVAL_ORDER
: UINT(4..4);
ACTIVE_MODE_FLAG
: BOOL(5);
TEST_MODE
: UINT(6..6);
FILLER
: FILL(7..7);
END;
TYPE WAVEFORM_LIST_STATUS_RCD = PACKED RECORD
STATUS_FLAGS
: WAVEFORM_LIST_STATUS_BFLD;
NBR_VALID_ENTRIES
: UINT16;
LAST_ENTRY_ELEMENT
: UINT16;
LAST_ENTRY_SEQ_NBR
: UINT32;
NBR_UNREAD_ENTRIES
: UINT16;
NBR_VALID_INT
: UINT16;
END;
Decade 15 Element Descriptions
Identifier
TD_SAMPLE_FORMAT_RCD

Value

ITEM

The
data
type
to
use
QUALITY_CONTROL_TBL.
TD_SAMPLES_FORMAT_CODE.

FD_SAMPLE_FORMAT_RCD

per

Redefines:
LP_DATA_SET1_TBL.INT_FMT1_RCD.
A generalized data type used to express the
format to be used for frequency-domain
waveform transformed data representation in
Quality-of-service Tables.

ITEM

The
data
type
to
use
QUALITY_CONTROL_TBL.
FD_SAMPLES_FORMAT_CODE.

WAVEFORM_LIST_STATUS_BFLD

per

Redefines:
LP_STATUS_TBL.LP_SET_STATUS_BFLD.
The generic waveform capture list management
bit field.

ORDER
0
1

Decade 15: Quality-of-service

Definition
Redefines:
LP_DATA_SET1_TBL.INT_FMT1_RCD.
A generalized data type used to express the
format to be used for time-domain waveform
data representation in Quality-of-service Tables.

Alias: BLOCK_ORDER.
Blocks of waveform data are transported in
ascending order (N is older than N+1).
Blocks of waveform data are transported in
descending order (N is newer than N+1).

317

ANSI C12.19-2008

OVERFLOW_FLAG

Tables

FALSE
TRUE

LIST_TYPE
0
1
BLOCK_INHIBIT_OVERFLOW_FLAG
FALSE
TRUE
INTERVAL_ORDER

Overflow has not occurred.


Overflow has occurred.
An attempt was made to enter an interval in a
new data block such that the number of unread
blocks exceeded the actual number of possible
blocks in waveform table storage.
Alias: LIST_TYPE_FLAG.
FIFO (First-In-First-Out) waveform storage.
Circular list waveform storage.
End Device is not inhibiting waveform capture
once an overflow occurs.
End Device inhibits waveform capture once an
overflow occurs.

Ascending.
Samples in each block of waveform data are
transported in ascending order (sample N is
older or lower ordinal position than sample N+1).

Descending.
Samples in each block of waveform data are
transported in descending order (sample N is
newer or higher ordinal position than sample
N+1).

ACTIVE_MODE_FLAG

FALSE
TRUE

The waveform recorder table is not enabled.


The waveform recorder table is enabled.

TEST_MODE

The waveform recorder is set-up for normal


mode.
The waveform recorder is set-up for test mode.

1
WAVEFORM_LIST_STATUS_RCD

Redefines:
LP_STATUS_TBL.LP_SET_STATUS_RCD.
The generic waveform capture list status
management packed record.
Atomic=TRUE.
Accessibility=READONLY.

STATUS_FLAGS
NBR_VALID_ENTRIES

318

See WAVEFORM_LIST_STATUS_BFLD.
0..65535

Number of valid waveform data blocks in the


associated table. The range is zero (0), to mean
no data blocks in the table, to the actual
dimension of the number of waveform data
blocks. The block is considered valid when at
least one sample is written.

Decade 15: Quality-of-service

Tables

ANSI C12.19-2008

LAST_ENTRY_ELEMENT

0..65535

LAST_ENTRY_SEQ_NBR

0..4294967295

The array element of the newest valid data block


in the waveform data array. This field is valid
only if NBR_VALID_ENTRIES is greater than
zero (0).
The sequence number of the last element
(.LAST_ENTRY_ELEMENT) in the waveform
data array.

NBR_UNREAD_ENTRIES

0..65535

The number of data blocks that have not been


read. This number is only updated through a
procedure.

NBR_VALID_INT

0..65535

Number of valid samples stored in the most


current block array. The range is zero (0), to
mean no data in the array, to the actual
dimension of the number of possible entries per
block.

9.16.1 Table 150 Quality-of-service Dimension Limits Table


Table 150 Data Description
This Table defines the maximum dimensions and limits for the Quality-of-service Decade.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 150 Type Definitions
TYPE QS_FEATURES_BFLD = BIT FIELD OF UINT32
INHIBIT_OVF_QS_LOG_FLAG : BOOL(0);
NOTIFY_OVF_QS_LOG_FLAG : BOOL(1);
INHIBIT_OVF_TD_ASYNC_FLAG
NOTIFY_OVF_TD_ASYNC_FLAG
TD_SCALAR_DIVISOR_FLAG

: BOOL(2);
: BOOL(3);
: BOOL(4);

INHIBIT_OVF_FD_ASYNC_FLAG
NOTIFY_OVF_FD_ASYNC_FLAG
SCALAR_DIVISOR_FD_ASYNC_FLAG

: BOOL(5);
: BOOL(6);
: BOOL(7);

INHIBIT_OVF_TD_PERIODIC_FLAG
NOTIFY_OVF_TD_PERIODIC_FLAG
SCALAR_DIVISOR_TD_PERIODIC_FLAG

: BOOL(8);
: BOOL(9);
: BOOL(10);

INHIBIT_OVF_FD_PERIODIC_FLAG
NOTIFY_OVF_FD_PERIODIC_FLAG
SCALAR_DIVISOR_FD_PERIODIC_FLAG

: BOOL(11);
: BOOL(12);
: BOOL(13);

REPEAT_TD_FLAG
REPEAT_FD_FLAG
FD_COMPLEX_FLAG
FD_PHASOR_FLAG
QUALITY_RESET_CTR_FLAG
INCIDENT_SORTABLE_FLAG

: BOOL(14);
: BOOL(15);
: BOOL(16);
: BOOL(17);
: BOOL(18);
: BOOL(19);

Decade 15: Quality-of-service / Table 150 Quality-of-service Dimension Limits Table

319

ANSI C12.19-2008

Tables

COMMON_SAMPLING_RATE_FLAG
COMMON_NBR_OF_SAMPLES_FLAG
INTERHARMONICS_FLAG
FILLER

: BOOL(20);
: BOOL(21);
: BOOL(22);
: FILL(23..31);

END;
TYPE QS_LIMITS_RCD = PACKED RECORD
FEATURES
NBR_OF_EVENT_IDS
NBR_OF_EVENTS
NBR_OF_INCIDENTS
NBR_OF_COINCIDENT_VALUES
WAVEFORM_FORMATS
TD_SAMPLING_RATE
NBR_OF_TD_SAMPLES
NBR_OF_TD_BLOCKS
NBR_OF_TD_CHANNELS
NBR_OF_TD_CHANNELS_PER_BLOCK
NBR_OF_TD_SAMPLES_PER_BLOCK
NBR_OF_TD_PREFETCH_SAMPLES
FD_SAMPLING_RATE
NBR_OF_FD_SAMPLES
NBR_OF_SPECTRAL_COMPONENTS
NBR_OF_FD_BLOCKS
NBR_OF_FD_CHANNELS
NBR_OF_FD_CHANNELS_PER_BLOCK
NBR_OF_FD_SPECTRA_PER_BLOCK
NBR_OF_FD_PREFETCH_SAMPLES
LABEL_LENGTH

: QS_FEATURES_BFLD;
: UINT16;
: UINT16;
: UINT16;
: UINT16;
: WAVEFORM_FORMATS_BFLD;
: NI_FMAT2;
: UINT32;
: UINT16;
: UINT16;
: UINT16;
: UINT16;
: UINT32;
: NI_FMAT2;
: UINT32;
: UINT16;
: UINT16;
: UINT16;
: UINT16;
: UINT16;
: UINT32;
: UINT8;

END;
TABLE 150 DIM_QUALITY_OF_SERVICE_TBL = QS_LIMITS_RCD;
Table 150 Element Descriptions
Value

Identifier
QS_FEATURES_BFLD

Definition
This bit field provides indications about the End
Device maximum waveform capture capabilities.

INHIBIT_OVF_QS_LOG_FLAG
FALSE
TRUE
NOTIFY_OVF_QS_LOG_FLAG

320

End Device is not capable of inhibiting block


overflow on QUALITY_LOG_TBL.
End Device is capable of inhibiting block
overflow on QUALITY_LOG_TBL.
This is a notification capability indication for
block overflow on QUALITY_LOG_TBL. When
this capability is available and it is enabled, then
the End Device shall utilize the appropriate
notification mechanism to inform a remote
system about the QUALITY_LOG_TBL block
overflow.

Decade 15: Quality-of-service / Table 150 Quality-of-service Dimension Limits Table

Tables

ANSI C12.19-2008
FALSE
TRUE

INHIBIT_OVF_TD_ASYNC_FLAG
FALSE
TRUE
NOTIFY_OVF_TD_ASYNC_FLAG

FALSE
TRUE

End Device is not capable of notifying a remote


system
about
block
overflows
of
QUALITY_LOG_TBL.
End Device is capable of notifying a remote
system
about
block
overflows
of
QUALITY_LOG_TBL.
End Device is not capable of inhibiting block
overflow on TD_ASYNC_TBL.
End Device is capable of inhibiting block
overflow on TD_ASYNC_TBL.
This is a notification capability indication for
block overflow on TD_ASYNC_TBL. When this
capability is available and it is enabled then the
End Device shall utilize the appropriate
notification mechanism of the communication
protocol to inform a remote system about the
TD_ASYNC_TBL block overflow.
End Device is not capable of notifying a remote
system
about
block
overflows
of
TD_ASYNC_TBL.
End Device is capable of notifying a remote
system
about
block
overflows
of
TD_ASYNC_TBL.

TD_SCALAR_DIVISOR_FLAG
FALSE

End Device is not capable of having scalars and


divisors associated with TD_ASYNC_TBL
waveform data.

TRUE

End Device is capable of having scalars and


divisors associated with TD_ASYNC_TBL
waveform data.

INHIBIT_OVF_FD_ASYNC_FLAG
FALSE
TRUE
NOTIFY_OVF_FD_ASYNC_FLAG

FALSE

End Device is not capable of inhibiting block


overflow on FD_ASYNC_TBL.
End Device is capable of inhibiting block
overflow on FD_ASYNC_TBL.
This is a notification capability indication for
block overflow on FD_ASYNC_TBL. When this
capability is available and it is enabled then the
End Device shall utilize the appropriate
notification mechanism of the communication
protocol to inform a remote system about the
FD_ASYNC_TBL block overflow.
End Device is not capable of notifying a remote
system
about
block
overflows
of
FD_ASYNC_TBL.

Decade 15: Quality-of-service / Table 150 Quality-of-service Dimension Limits Table

321

ANSI C12.19-2008

Tables
TRUE

SCALAR_DIVISOR_FD_ASYNC_FLAG
FALSE
TRUE

INHIBIT_OVF_TD_PERIODIC_FLAG
FALSE
TRUE
NOTIFY_OVF_TD_PERIODIC_FLAG

FALSE
TRUE

SCALAR_DIVISOR_TD_PERIODIC_FLAG
FALSE
TRUE

INHIBIT_OVF_FD_PERIODIC_FLAG
FALSE
TRUE
NOTIFY_OVF_FD_PERIODIC_FLAG

322

End Device is capable of notifying a remote


system
about
block
overflows
of
FD_ASYNC_TBL.
End Device is not capable of having scalars and
divisors associated with FD_ASYNC_TBL
waveform data.
End Device is capable of having scalars and
divisors associated with FD_ASYNC_TBL
waveform data.
End Device is not capable of inhibiting block
overflow on TIME_DOMAIN_TBL.
End Device is capable of inhibiting block
overflow on TIME_DOMAIN_TBL.
This is a notification capability indication for
block overflow on TIME_DOMAIN_TBL. When
this capability is available and it is enabled, then
the End Device shall utilize the appropriate
notification mechanism of the communication
protocol to inform a remote system about the
TIME_DOMAIN_TBL block overflow.
End Device is not capable of notifying a remote
system
about
block
overflows
of
TIME_DOMAIN_TBL.
End Device is capable of notifying a C12.19
remote
system about block overflows of
TIME_DOMAIN_TBL.
End Device is not capable of having scalars and
divisors associated with TIME_DOMAIN_TBL
waveform data.
End Device is capable of having scalars and
divisors associated with TIME_DOMAIN_TBL
waveform data.
End Device is not capable of inhibiting block
overflow on FREQUENCY_DOMAIN_TBL.
End Device is capable of inhibiting block
overflow on FREQUENCY_DOMAIN_TBL.
This is a notification capability indication for
block
overflow
on
FREQUENCY_DOMAIN_TBL.
When this
capability is available and it is enabled, then the
End Device shall utilize the appropriate
notification mechanism of the communication
protocol to inform a remote system about the
FREQUENCY_DOMAIN_TBL block overflow.

Decade 15: Quality-of-service / Table 150 Quality-of-service Dimension Limits Table

Tables

ANSI C12.19-2008

FALSE
TRUE

SCALAR_DIVISOR_FD_PERIODIC_FLAG
FALSE

TRUE

REPEAT_TD_FLAG

End Device is not capable of notifying a remote


system
about
block
overflows
of
FREQUENCY_DOMAIN_TBL.
End Device is capable of notifying a remote
system
about
block
overflows
of
FREQUENCY_DOMAIN_TBL.
End Device is not capable of having scalars and
divisors
associated
with
FREQUENCY_DOMAIN_TBL waveform data.
End Device is capable of having scalars and
divisors
associated
with
FREQUENCY_DOMAIN_TBL waveform data.
An indication if the End Device can perform
counted repeated time-domain waveform
capture following a Quality-of-service event.

FALSE
TRUE
REPEAT_FD_FLAG

End Device is not capable of repeated counted


waveform captures.
End Device is capable of repeated counted
waveform captures.
An indication if the End Device can perform
counted
repeated
waveform
transform
(frequency domain) captures following a Qualityof-service event.

FALSE
TRUE

FD_COMPLEX_FLAG

End Device is not capable of repeated


waveform
transform
(frequency
captures.
End Device is capable of repeated
waveform
transform
(frequency
captures.

counted
domain)
counted
domain)

An indication if the End Device is capable of


delivering frequency domain spectral analysis
encoded complex elements (the mathematical
real and imaginary spectral components).
FALSE
TRUE

FD_PHASOR_FLAG

End Device is not capable of reporting spectral


components as complex elements.
End Device is capable of reporting spectral
components as complex elements.
A flag that indicates whether the End Device is
capable of delivering frequency domain spectral
analysis encoded as spectral component phase
angle and related magnitude pairs as elements.

FALSE

End Device is not capable of reporting spectral


components as phase angles and magnitude.

Decade 15: Quality-of-service / Table 150 Quality-of-service Dimension Limits Table

323

ANSI C12.19-2008

Tables
TRUE

QUALITY_RESET_CTR_FLAG

An indication of whether or not counting resets


of quality counters is possible.
FALSE
TRUE

INCIDENT_SORTABLE_FLAG

End Device is not capable of counting resets of


quality counters.
End Device is capable of counting resets of
quality counters.
An indication of a capability to sort the Qualityof-service incidents according to a user
specified
priority.
See
QUALITY_CONTROL_TBL.

FALSE
TRUE
COMMON_SAMPLING_RATE_FLAG

FALSE

TRUE

COMMON_NBR_OF_SAMPLES_FLAG

FALSE

TRUE

INTERHARMONICS_FLAG

End Device cannot be programmed to sort


incidents by criteria.
End Device can be programmed to sort
incidents by criteria.
An indication of a capability to provide a different
sampling rate for waveform captures on a perevent type basis.
End Device cannot be programmed with
different sampling rates for the purpose of
waveform capture. All Quality-of-service events
shall be captured at the same sampling rate.
End Device can be programmed with different
sampling rates for the purpose of waveform
capture. Each Quality-of-service event may be
captured at a different sampling rate.
An indication of a capability to collect a different
number of samples for waveform captures on a
per-event type basis.
End Device cannot be programmed with
different numbers of samples for the purpose of
waveform capture. All Quality-of-service events
shall capture the same number of samples.
End Device can be programmed with different
numbers of samples for the purpose of
waveform capture. All Quality-of-service events
can capture different numbers of samples.
An indication of a capability
interharmonic spectral components.

FALSE

TRUE

324

End Device is capable of reporting spectral


components as phase angles and magnitude.

to

store

The End Device is not capable of recording


interharmonics in the frequency domain. All
spectral components recorded are an integer
multiple of the fundamental frequency.
The End Device is capable of recording
interharmonics in the frequency domain. All

Decade 15: Quality-of-service / Table 150 Quality-of-service Dimension Limits Table

Tables

ANSI C12.19-2008
spectral components recorded are discrete
frequencies.

WAVEFORM_FORMATS_BFLD

INV_UINT8_FLAG

Redefines: DIM_LP_TBL.LP_FMATS_BFLD.
This set of Booleans specifies the format(s)
acceptable for use in waveform capture tables.
FALSE
TRUE

INV_UINT16_FLAG

FALSE
TRUE

INV_UINT32_FLAG

FALSE
TRUE

INV_INT8_FLAG

FALSE
TRUE

INV_INT16_FLAG

FALSE
TRUE

INV_INT32_FLAG

FALSE
TRUE

INV_NI_FMAT1_FLAG

FALSE
TRUE

INV_NI_FMAT2_FLAG

FALSE
TRUE

QS_LIMITS_RCD

UINT16 format for waveform capture is not


supported by this End Device.
UINT16 format for waveform capture is
supported by this End Device.
UINT32 format for waveform capture is not
supported by this End Device.
UINT32 format for waveform capture is
supported by this End Device.
INT8 format for waveform capture is not
supported by this End Device.
INT8 format for waveform capture is supported
by this End Device.
INT16 format for waveform capture is not
supported by this End Device.
INT16 format for waveform capture is supported
by this End Device.
INT32 format for waveform capture is not
supported by this End Device.
INT32 format for waveform capture is supported
by this End Device.
NI_FMAT1 format for waveform capture is not
supported by this End Device.
NI_FMAT1 format for waveform capture is
supported by this End Device.
NI_FMAT2 format for waveform capture is not
supported by this End Device.
NI_FMAT2 format for waveform capture is
supported by this End Device.
This packed record defines the End Device
maximum Quality-of-service operational limits.

FEATURES
NBR_OF_EVENT_IDS

UINT8 format for waveform capture is not


supported by this End Device.
UINT8 format for waveform capture is supported
by this End Device.

See QS_FEATURES_BFLD.
0..65535

Maximum total number of unique event identifier


descriptors supported by this End Device.

Decade 15: Quality-of-service / Table 150 Quality-of-service Dimension Limits Table

325

ANSI C12.19-2008

Tables

NBR_OF_EVENTS

0..65535

Maximum number of Quality-of-service events


that the End Device can record internally.

NBR_OF_INCIDENTS

0..65535

Maximum number of service quality incident


reports
recorded
in
QUALITY_INCIDENTS_TBL.

NBR_OF_COINCIDENT_VALUES
0..65535

Maximum number of coincidental data sources


that can be bound to any one Quality-of-service
event recorded.

WAVEFORM_FORMATS

See WAVEFORM_FORMATS_BFLD.

TD_SAMPLING_RATE

Largest possible sampling rate, in hertz (Hz),


supported by this End Device when capturing
time-domain waveform data.

NBR_OF_TD_SAMPLES

0..4294967295 Largest possible number of data samples that


can be collected in one waveform capture by
this End Device when capturing time-domain
waveform data.

NBR_OF_TD_BLOCKS
0..65535

NBR_OF_TD_CHANNELS

Maximum

Maximum number of time-domain waveform


blocks that the End Device can capture in
TD_ASYNC_TBL.
number of time-domain waveform channels
(independent sources) that the End Device can
capture per Quality-of-service event.

End Device is not capable of capturing timedomain waveforms.

1..65535

End Device is capable of capturing time-domain


waveforms.

NBR_OF_TD_CHANNELS_PER_BLOCK
0..65535

NBR_OF_TD_SAMPLES_PER_BLOCK
0..65535

Maximum number of time-domain waveform


channels (independent sources) that the End
Device can capture per Quality-of-service data
block.
This value shall be ignored if
NBR_OF_TD_CHANNELS = 0. Otherwise 0 <
NBR_OF_TD_CHANNELS_PER_BLOCK
<=
NBR_OF_TD_CHANNELS.
Maximum number of time-domain waveform
samples that the End Device can capture per
Quality-of-service data block per channel.

NBR_OF_TD_PREFETCH_SAMPLES

326

Decade 15: Quality-of-service / Table 150 Quality-of-service Dimension Limits Table

Tables

ANSI C12.19-2008
0..4294967295 Maximum number of samples that the End
Device can capture continuously just prior to the
asynchronous event that triggered a waveform
capture.
FD_SAMPLING_RATE

NBR_OF_FD_SAMPLES

Largest possible sampling rate, in hertz (Hz),


supported by this End Device when transforming
time-domain waveforms to frequency-domain
data.
0..4294967295 Largest possible number of data samples that
can be collected in one waveform capture by
this End Device when capturing frequencydomain waveform data.

NBR_OF_SPECTRAL_COMPONENTS
0..65535

Largest possible number spectral components


that can be collected in one spectral capture by
this End Device when capturing frequencydomain data.

NBR_OF_FD_BLOCKS
0..65535

Maximum number of frequency-domain blocks


that the End Device can capture in FD_ASYNC
_TBL.

NBR_OF_FD_CHANNELS
Maximum
number
of
frequency-domain
channels (independent sources) that the End
Device can capture per Quality-of-service event.
0

End Device is not capable


frequency-domain data blocks.

1..65535

End Device is capable of capturing frequencydomain data blocks.

NBR_OF_FD_CHANNELS_PER_BLOCK
0..65535

NBR_OF_FD_SPECTRA_PER_BLOCK
0..65535

of

capturing

Maximum
number
of
frequency-domain
channels (independent sources) that the End
Device can capture per Quality-of-service data
block.
This value shall be ignored if
NBR_OF_FD_CHANNELS = 0. Otherwise 0 <
NBR_OF_FD_CHANNELS_PER_BLOCK
<=
NBR_OF_FDS_CHANNELS.
Maximum number of frequency-domain spectral
components that the End Device reports per
Quality-of-service data block per channel. This
value shall be equal to the number of signal
spectral components desired + 1. Although this
value is numerically limited by the defining
unsigned integer type, practically, the maximum
spectral component possible shall be limited by
the Nyquist sampling frequency defined by

Decade 15: Quality-of-service / Table 150 Quality-of-service Dimension Limits Table

327

ANSI C12.19-2008

Tables
(sampling frequency / 2) in hertz (Hz). This will
avoid the appearance of false aliases in the
discrete Fourier transform of the waveform.

NBR_OF_FD_PREFETCH_SAMPLES
0..4294967295 Maximum number of samples that the End
Device can capture continuously just prior to the
asynchronous event that triggered a frequencydomain spectral capture.
LABEL_LENGTH

328

0..255

The maximum number of characters that can be


used to label (name) a single Quality-of-service
event generation rule.

Decade 15: Quality-of-service / Table 150 Quality-of-service Dimension Limits Table

Tables

ANSI C12.19-2008

9.16.2 Table 151 Actual Quality-of-Service Limiting Table


Table 151 Data Description
This Table defines the actual dimensions and limits for the Quality-of-service decade.
Global Default Table Property Overrides: Role=ACTUAL
Table 151 Type Definitions
TABLE 151 ACT_QUALITY_OF_SERVICE_TBL = QS_LIMITS_RCD;
Table 151 Element Descriptions
Identifier

Value

QS_FEATURES_BFLD

Definition
Redefines:
DIM_QUALITY_OF_SERVICE_TBL.
QS_FEATURES_BFLD.
This bit field provides indications about the End
Device waveform capture actual capabilities.

INHIBIT_OVF_QS_LOG_FLAG
FALSE

End Device is not inhibiting block overflow on


QUALITY_LOG_TBL.

TRUE

End Device is inhibiting block overflow on


QUALITY_LOG_TBL.

NOTIFY_OVF_QS_LOG_FLAG

This is a notification setting indication for block


overflow of QUALITY_LOG_TBL. When this
capability is enabled the End Device shall utilize
the appropriate notification mechanism of the
communication protocol to inform a remote
system about the QUALITY_LOG_TBL block
overflow.
FALSE
TRUE

INHIBIT_OVF_TD_ASYNC_FLAG
FALSE
TRUE
NOTIFY_OVF_TD_ASYNC_FLAG

End Device shall not notify a remote system


about block overflows of QUALITY_LOG_TBL.
End Device shall notify a remote system about
block overflows of QUALITY_LOG_TBL.
End Device is not inhibiting block overflow on
TD_ASYNC_TBL.
End Device is inhibiting block overflow on
TD_ASYNC_TBL.
This is a notification setting indication for block
overflow of TD_ASYNC_TBL.
When this
capability is enabled the End Device shall utilize
the appropriate notification mechanism of the
communication protocol to inform a remote

Decade 15: Quality-of-service / Table 151 Actual Quality-of-Service Limiting Table

329

ANSI C12.19-2008

Tables

system about
overflow.
FALSE
TRUE

the

TD_ASYNC_TBL

block

End Device shall not notify a remote system


about block overflows of TD_ASYNC_TBL.
End Device shall notify a remote system about
block overflows of TD_ASYNC_TBL.

TD_SCALAR_DIVISOR_FLAG
FALSE

End Device does not have scalars and divisors


associated with TD_ASYNC_TBL waveform
data.

TRUE

End Device has scalars and divisors associated


with TD_ASYNC_TBL waveform data.

INHIBIT_OVF_FD_ASYNC_FLAG
FALSE
TRUE
NOTIFY_OVF_FD_ASYNC_FLAG

FALSE
TRUE
SCALAR_DIVISOR_FD_ASYNC_FLAG
FALSE
TRUE
INHIBIT_OVF_TD_PERIODIC_FLAG
FALSE
TRUE
NOTIFY_OVF_TD_PERIODIC_FLAG

330

End Device is not inhibiting block overflow on


FD_ASYNC_TBL.
End Device is inhibiting block overflow on
FD_ASYNC_TBL.
This is a notification setting indication for block
overflow of FD_ASYNC_TBL.
When this
capability is enabled the End Device shall utilize
the appropriate notification mechanism of the
communication protocol to inform a remote
system about the FD_ASYNC_TBL block
overflow.
End Device shall not notify a remote system
about block overflows of FD_ASYNC_TBL.
End Device shall notify a remote system about
block overflows of FD_ASYNC_TBL.
End Device does not have scalars and divisors
associated with FD_ASYNC_TBL waveform
data.
End Device has scalars and divisors associated
with FD_ASYNC_TBL waveform data.
End Device is not inhibiting block overflow on
TIME_DOMAIN_TBL.
End Device is inhibiting block overflow on
TIME_DOMAIN_TBL.
This is a notification setting indication for block
overflow of TIME_DOMAIN_TBL. When this
capability is enabled the End Device shall utilize
the appropriate notification mechanism of the
communication protocol to inform a remote
system about the TIME_DOMAIN_TBL block
overflow.

Decade 15: Quality-of-service / Table 151 Actual Quality-of-Service Limiting Table

Tables

ANSI C12.19-2008

FALSE
TRUE
SCALAR_DIVISOR_TD_PERIODIC_FLAG
FALSE
TRUE
INHIBIT_OVF_FD_PERIODIC_FLAG
FALSE
TRUE
NOTIFY_OVF_FD_PERIODIC_FLAG

FALSE
TRUE

SCALAR_DIVISOR_FD_PERIODIC_FLAG
FALSE
TRUE

REPEAT_TD_FLAG

FALSE
TRUE
REPEAT_FD_FLAG

End Device shall not notify a remote system


about block overflows of TIME_DOMAIN_TBL.
End Device shall notify a remote system about
block overflows of TIME_DOMAIN_TBL.
End Device does not have scalars and divisors
associated with TIME_DOMAIN_TBL waveform
data.
End Device has scalars and divisors associated
with TIME_DOMAIN_TBL waveform data.
End Device is not inhibiting block overflow on
FREQUENCY_DOMAIN_TBL.
End Device is inhibiting block overflow on
FREQUENCY_DOMAIN_TBL.
This is a notification setting indication for block
overflow
on
FREQUENCY_DOMAIN_TBL.
When this capability is enabled the End Device
shall utilize the appropriate notification
mechanism of the communication protocol to
inform a remote
system about the
FREQUENCY_DOMAIN_TBL block overflow.
End Device shall not notify a remote system
about
block
overflows
of
FREQUENCY_DOMAIN_TBL.
End Device shall notify a remote system about
block
overflows
of
FREQUENCY_DOMAIN_TBL.
End Device does not have scalars and divisors
associated with FREQUENCY_DOMAIN_TBL
waveform data.
End Device has scalars and divisors associated
with FREQUENCY_DOMAIN_TBL waveform
data.
An indication of whether or not the End Device
performs counted, repeated, time-domain
waveform capture following a Quality-of-service
event.
End Device is not repeating counted waveform
captures.
End Device is repeating counted waveform
captures.
An indication of whether or not the End Device
performs counted, repeated, frequency-domain
waveform transforms capture following a
Quality-of-service event.

Decade 15: Quality-of-service / Table 151 Actual Quality-of-Service Limiting Table

331

ANSI C12.19-2008

Tables
FALSE

End Device is not repeating counted waveform


transform captures.

TRUE

End Device is repeating counted waveform


transform captures.

FD_COMPLEX_FLAG

An indication of whether or not the End Device is


enable to deliver frequency-domain spectral
analysis encoded complex elements (the
mathematical real and imaginary spectral
components).
FALSE
TRUE

FD_PHASOR_FLAG

An indication of whether or not the End Device is


enabled to deliver frequency-domain spectral
analysis encoded as spectral component phase
angle and related magnitude pairs as elements.
FALSE
TRUE

QUALITY_RESET_CTR_FLAG

End Device is not enabled to report spectral


components as phase angles and magnitude.
End Device is enabled to report spectral
components as phase angles and magnitude.
An indication that counting of quality counter
resets is enabled.

FALSE
TRUE
INCIDENT_SORTABLE_FLAG

End Device is not counting quality counter


resets.
End Device is counting quality counter resets.
An indication of whether the capability to sort the
Quality-of-service incidents according to a userspecified priority is enabled or disabled. See
QUALITY_CONTROL_TBL.

FALSE
TRUE

COMMON_SAMPLING_RATE_FLAG

FALSE

TRUE

332

End Device is not enabled to report spectral


components as complex elements.
End Device is enabled to report spectral
components as complex elements.

End Device has not been programmed to sort


incidents. The user shall not assume a sorting
order.
End Device has been programmed to sort
incidents. The user shall assume the userprogrammed sorting order.
An indication of whether or not the End Device is
programmed to allow different sampling rates for
waveform captures on a per-event-type basis.
End Device is programmed to allow different
sampling rates for the purpose of waveform
capture. All Quality-of-service events may be
captured at the different sampling rates.
End Device is not programmed to allow different
sampling rates for the purpose of waveform

Decade 15: Quality-of-service / Table 151 Actual Quality-of-Service Limiting Table

Tables

ANSI C12.19-2008
capture. All Quality-of-service events shall be
captured at the same sampling rate.
COMMON_NBR_OF_SAMPLES_FLAG

FALSE

TRUE

INTERHARMONICS_FLAG

TRUE

WAVEFORM_FORMATS_BFLD

FALSE

FALSE
TRUE

INV_UINT32_FLAG

FALSE
TRUE

INV_INT8_FLAG

The End Device is not recording interharmonics


in the frequency domain. All spectral
components recorded are an integer multiple of
the fundamental frequency.
The End Device is recording interharmonics in
the frequency domain. There is no assumed
relationship (frequency-wise) among any
spectral components.
Redefines:
DIM_QUALITY_OF_SERVICE_TBL.
WAVEFORM_FORMATS_BFLD.
This set of Booleans specifies the format(s)
acceptable for use in waveform capture tables.

TRUE
INV_UINT16_FLAG

End Device does not use a common number of


samples for the purpose of waveform capture.
Quality-of-service records may capture a
different number of samples.
End Device uses a common number of samples
for the purpose of waveform capture. All quality
records shall capture the same number of
samples.
An indication of whether or not to store
interharmonic spectral components.

FALSE

INV_UINT8_FLAG

An indication whether or not to collect a different


number of samples for waveform captures on a
per-event type basis.

FALSE
TRUE

UINT8 format for waveform capture is not used


by this End Device.
UINT8 format for waveform capture is used by
this End Device.
UINT16 format for waveform capture is not used
by this End Device.
UINT16 format for waveform capture is used by
this End Device.
UINT32 format for waveform capture is not used
by this End Device.
UINT32 format for waveform capture is used by
this End Device.
INT8 format for waveform capture is not used by
this End Device.
INT8 format for waveform capture is used by this
End Device.

Decade 15: Quality-of-service / Table 151 Actual Quality-of-Service Limiting Table

333

ANSI C12.19-2008

Tables

INV_INT16_FLAG

FALSE
TRUE

INV_INT32_FLAG

FALSE
TRUE

INV_NI_FMAT1_FLAG

FALSE
TRUE

INV_NI_FMAT2_FLAG

FALSE
TRUE

QS_LIMITS_RCD

INT32 format for waveform capture is not used


by this End Device.
INT32 format for waveform capture is used by
this End Device.
NI_FMAT1 format for waveform capture is not
used by this End Device.
NI_FMAT1 format for waveform capture is used
by this End Device.
NI_FMAT2 format for waveform capture is not
used by this End Device.
NI_FMAT2 format for waveform capture is used
by this End Device.
This packed record defines the End Device
actual maximum Quality-of-service operational
limits.
Redefines:
DIM_QUALITY_OF_SERVICE_TBL.
QS_LIMITS_RCD.

FEATURES

See QS_FEATURES_BFLD.

NBR_OF_EVENT_IDS

0..65535

Actual total number of unique event identifier


descriptors supported by this End Device.

NBR_OF_EVENTS

0..65535

Actual number of Quality-of-service events that


the End Device can record internally.

NBR_OF_INCIDENTS

0..65535

Actual number of Quality-of-service incident


reports
recorded
in
QUALITY_INCIDENTS_TBL.

NBR_OF_COINCIDENT_VALUES
0..65535

Actual number of coincidental data sources that


are bound to any one Quality-of-service event
recorded.

WAVEFORM_FORMATS

See WAVEFORM_FORMATS_BFLD.

TD_SAMPLING_RATE

Largest possible sampling rate, in hertz (Hz),


used by this End Device when capturing timedomain waveform data.

NBR_OF_TD_SAMPLES

334

INT16 format for waveform capture is not used


by this End Device.
INT16 format for waveform capture is used by
this End Device

0..4294967295 Actual largest possible number of data samples


that shall be collected in one waveform capture
by this End Device when capturing time-domain
waveform data.

Decade 15: Quality-of-service / Table 151 Actual Quality-of-Service Limiting Table

Tables

ANSI C12.19-2008

NBR_OF_TD_BLOCKS

0..65535

NBR_OF_TD_CHANNELS

Actual number of time-domain waveform blocks


that the End Device can capture in
TD_ASYNC_TBL.
Actual maximum number of time-domain
waveform channels (independent sources) that
the End Device can capture per Quality-ofservice event.

End Device is not capable of capturing timedomain waveforms.

1..65535

End Device is capable of capturing time-domain


waveforms.

NBR_OF_TD_CHANNELS_PER_BLOCK
0..65535

NBR_OF_TD_SAMPLES_PER_BLOCK
0..65535

Actual number of time-domain waveform


channels (independent sources) that the End
Device captures per Quality-of-service data
block.
This value shall be ignored if
NBR_OF_TD_CHANNELS = 0. Otherwise 0 <
NBR_OF_TD_CHANNELS_PER_BLOCK
<=
NBR_OF_TD_CHANNELS.
Actual number of time-domain waveform
samples that the End Device can capture per
Quality-of-service data block per channel.

NBR_OF_TD_PREFETCH_SAMPLES
0..4294967295 Actual maximum number of samples that the
End Device can capture continuously just prior
to the asynchronous event that triggered a
waveform capture.
FD_SAMPLING_RATE

NBR_OF_FD_SAMPLES

Largest possible sampling rate, in hertz (Hz),


used by this End Device when transforming
time-domain waveforms to frequency-domain
data.
0..4294967295 Actual largest number of data samples that shall
be collected in one waveform capture by this
End Device when capturing frequency-domain
waveform data.

NBR_OF_SPECTRAL_COMPONENTS
0..65535

NBR_OF_FD_BLOCKS

0..65535

Actual largest possible number of spectral


components that shall be collected in one
spectral capture by this End Device when
capturing frequency-domain data.
Actual number of frequency-domain waveform
blocks that the End Device can capture in
FD_ASYNC_TBL.

Decade 15: Quality-of-service / Table 151 Actual Quality-of-Service Limiting Table

335

ANSI C12.19-2008

Tables

NBR_OF_FD_CHANNELS

Actual maximum number of frequency-domain


waveform channels (independent sources) that
the End Device can capture per Quality-ofservice event.
0

End Device is not enabled to capture frequencydomain waveforms.

1..65535

End Device is capturing frequency-domain


waveforms up to this number of channels.

NBR_OF_FD_CHANNELS_PER_BLOCK
0..65535

NBR_OF_FD_SPECTRA_PER_BLOCK
0..65535

Actual number of frequency-domain waveform


channels (independent sources) that the End
Device captures per Quality-of-service data
block.
This value shall be ignored if
NBR_OF_FD_CHANNELS = 0. Otherwise 0 <
NBR_OF_FD_CHANNELS_PER_BLOCK
<=
NBR_OF_FD_CHANNELS.
Actual number of frequency-domain spectral
components that the End Device reports per
Quality-of-service data block per channel. This
value shall be equal to the number of signal
spectral components desired + 1. Although this
value is numerically limited by the defining
unsigned integer type, practically, the maximum
spectral component possible shall be limited by
the Nyquist frequency defined by (sampling
frequency / 2) in hertz (Hz). This will avoid the
appearance of false aliases in the discrete
Fourier transform of the waveform.

NBR_OF_FD_PREFETCH_SAMPLES
0..4294967295 Actual maximum number of samples that the
End Device can capture continuously just prior
to the asynchronous event that triggered a
frequency-domain capture.
LABEL_LENGTH

336

0..255

The actual number of characters that are used


to label (name) a single Quality-of-service event
generation rule.

Decade 15: Quality-of-service / Table 151 Actual Quality-of-Service Limiting Table

Tables

ANSI C12.19-2008

9.16.3 Table 152 Quality-of-service Control Table


Table 152 Data Description
This Table provides selections of Quality-of-service sources and related thresholds for the reporting of
Quality-of-service events and capture of waveforms.
Global Default Table Property Overrides: Role=CONTROL
Table 152 Type Definitions
TYPE CAPTURE_CONTROL_BFLD = BIT FIELD OF UINT16
IF GEN_CONFIG_TBL.STD_TBLS_USED[TD_ASYNC_TBL] THEN
TD_FLAG
: BOOL(0);
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[FD_ASYNC_TBL] THEN
FD_FLAG
: BOOL(1);
END;
REPORT_ON_EXIT_FLAG
: BOOL(2);
REPORT_ON_DETECT_FLAG : BOOL(3);
COMPARE_SIGNED_FLAG
: BOOL(4);
COMPARE_PEAK_FLAG
: BOOL(5);
COMPARE_RMS_FLAG
: BOOL(6);
COMPARE_INCLUSIVE_FLAG : BOOL(7);
REPEAT_FLAG
: BOOL(8);
VALUE_REPORT_CTRL
: UINT(9..12);
FILLER
: FILL(13..15);
END;
TYPE NOMINAL_VALUE_RCD = PACKED RECORD
NOMINAL_VALUE
: NI_FMAT2;
LOW_SET_POINT
: NI_FMAT2;
HIGH_SET_POINT
: NI_FMAT2;
END;
TYPE WAVEFORM_CHANNEL_SOURCE_ID_RCD = PACKED RECORD
SOURCE_ID : STD.SOURCE_SELECT_RCD;
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.TD_SCALAR_DIVISOR_FLAG THEN
SCALAR
: UINT16;
DIVISOR
: UINT16;
END;
END;
TYPE TD_CONTROL_RCD = PACKED RECORD
TIME_CAPTURE_TYPE
: UINT8;
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.COMMON_SAMPLING_RATE_FLAG
== FALSE THEN
SAMPLING_RATE
: NI_FMAT2;
END;
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.COMMON_NBR_OF_SAMPLES_FLAG
== FALSE THEN
NBR_OF_SAMPLES
: UINT32;
NBR_OF_PREFETCH_SAMPLES
: UINT32;

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

337

ANSI C12.19-2008

Tables

END;
NBR_OF_CHANNELS
: UINT8;
CHANNEL_SOURCE_ID
: ARRAY [
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_TD_CHANNELS]
OF WAVEFORM_CHANNEL_SOURCE_ID_RCD;
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.REPEAT_TD_FLAG THEN
NBR_OF_WAVEFORM_REPEATS
: UINT16;
WAVEFORM_REPEAT_DELAY
: HTIME;
END;
END;
TYPE FD_CONTROL_RCD = PACKED RECORD
FREQUENCY_CAPTURE_TYPE: UINT8;
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.COMMON_SAMPLING_RATE_FLAG
== FALSE THEN
SAMPLING_RATE
: NI_FMAT2;
END;
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.COMMON_NBR_OF_SAMPLES_FLAG
== FALSE THEN
NBR_OF_SAMPLES
: UINT32;
NBR_OF_PREFETCH_SAMPLES
: UINT32;
NBR_OF_SPECTRAL_COMPONENTS : UINT16;
END;
NBR_OF_CHANNELS
: UINT8;
CHANNEL_SOURCE_ID
: ARRAY [
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_FD_CHANNELS]
OF WAVEFORM_CHANNEL_SOURCE_ID_RCD;
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.REPEAT_FD_FLAG THEN
NBR_OF_WAVEFORM_REPEATS
: UINT16;
WAVEFORM_REPEAT_DELAY
: HTIME;
END;
DISCRETE_FREQUENCY_LIST : ARRAY[ACT_QUALITY_OF_SERVICE_TBL
.NBR_OF_SPECTRAL_COMPONENTS]
OF NI_FMAT2;
END;
TYPE QUALITY_DESC_RCD = PACKED RECORD
QUALITY_DESC_NAME :STRING(ACT_QUALITY_OF_SERVICE_TBL. LABEL_LENGTH);
SOURCE_ID
: STD.SOURCE_SELECT_RCD;
COINCIDENT_SOURCE_IDS : ARRAY [
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_COINCIDENT_VALUES]
OF STD.SOURCE_SELECT_RCD;
COINCIDENT_SOURCE_ENABLE_FLAGS: SET (
(ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_COINCIDENT_VALUES
+
7)/8);
CAPTURE_CONTROL
: CAPTURE_CONTROL_BFLD;
IF GEN_CONFIG_TBL.STD_TBLS_USED[TD_ASYNC_TBL] THEN
TD_ASYNC_CONTROL : TD_CONTROL_RCD;
END;

338

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

Tables

ANSI C12.19-2008

IF GEN_CONFIG_TBL.STD_TBLS_USED[FD_ASYNC_TBL] THEN
FD_ASYNC_CONTROL : FD_CONTROL_RCD;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[TIME_DOMAIN_TBL] THEN
TD_PERIODIC_INTERVAL
: UINT32;
TD_PERIODIC_WAVEFORM_CONTROL
: TD_CONTROL_RCD;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[FREQUENCY_DOMAIN_TBL] THEN
FD_PERIODIC_INTERVAL
: UINT32;
FD_PERIODIC_WAVEFORM_CONTROL
: FD_CONTROL_RCD;
END;
NOMINAL_POSITIVE_LIMITS : NOMINAL_VALUE_RCD;
NOMINAL_NEGATIVE_LIMITS : NOMINAL_VALUE_RCD;
MIN_DURATION
EXCLUSION_DURATION
EXCLUSION_CONDITIONS
TRANSITION_CONDITIONS

: HTIME;
: HTIME;
:SET((ACT_QUALITY_OF_SERVICE_TBL
.NBR_OF_EVENT_IDS+7)/8);
:SET((ACT_QUALITY_OF_SERVICE_TBL
.NBR_OF_EVENT_IDS+7)/8);

END;
TYPE NOTIFY_OVERFLOW_CONTROL_RCD = PACKED RECORD
IF GEN_CONFIG_TBL.STD_TBLS_USED[QUALITY_LOG_TBL] &&
ACT_QUALITY_OF_SERVICE_TBL.FEATURES.NOTIFY_OVF_QS_LOG_FLAG
THEN
QS_LOG_CTRL
: STD.LIST_OVERFLOW_CONTROL_RCD;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[TD_ASYNC_TBL] &&
ACT_QUALITY_OF_SERVICE_TBL.FEATURES.NOTIFY_OVF_TD_ASYNC_FLAG
THEN
TD_ASYNC_CTRL: STD.LIST_OVERFLOW_CONTROL_RCD;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[FD_ASYNC_TBL] &&
ACT_QUALITY_OF_SERVICE_TBL.FEATURES.NOTIFY_OVF_FD_ASYNC_FLAG
THEN
FD_ASYNC_CTRL: STD.LIST_OVERFLOW_CONTROL_RCD;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[TIME_DOMAIN_TBL] &&
ACT_QUALITY_OF_SERVICE_TBL.FEATURES.NOTIFY_OVF_TD_PERIODIC_FLAG
THEN
TD_PERIODIC_CTRL: STD.LIST_OVERFLOW_CONTROL_RCD;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[FREQUENCY_DOMAIN_TBL] &&
ACT_QUALITY_OF_SERVICE_TBL.FEATURES.NOTIFY_OVF_FD_PERIODIC_FLAG
THEN
FD_PERIODIC_CTRL: STD.LIST_OVERFLOW_CONTROL_RCD;
END;
END;
TYPE QUALITY_CONTROL_RCD = PACKED RECORD
IF GEN_CONFIG_TBL.STD_TBLS_USED[TD_ASYNC_TBL] ||

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

339

ANSI C12.19-2008

Tables

GEN_CONFIG_TBL.STD_TBLS_USED[TIME_DOMAIN_TBL] THEN
TD_SAMPLES_FORMAT_CODE
: UINT8;
IF ACT_QUALITY_OF_SERVICE_TBL.
FEATURES.COMMON_SAMPLING_RATE_FLAG THEN
TD_SAMPLING_RATE
: NI_FMAT2;
END;
IF ACT_QUALITY_OF_SERVICE_TBL.
FEATURES.COMMON_NBR_OF_SAMPLES_FLAG THEN
NBR_OF_TD_SAMPLES
: UINT32;
NBR_OF_TD_PREFETCH_SAMPLES : UINT32;
END;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[FD_ASYNC_TBL] ||
GEN_CONFIG_TBL.STD_TBLS_USED[FREQUENCY_DOMAIN_TBL] THEN
FD_SAMPLES_FORMAT_CODE
: UINT8;
IF ACT_QUALITY_OF_SERVICE_TBL.
FEATURES.COMMON_SAMPLING_RATE_FLAG THEN
FD_SAMPLING_RATE
: NI_FMAT2;
END;
IF ACT_QUALITY_OF_SERVICE_TBL.
FEATURES.COMMON_NBR_OF_SAMPLES_FLAG THEN
NBR_OF_FD_SAMPLES
: UINT32;
NBR_OF_FD_PREFETCH_SAMPLES : UINT32;
NBR_OF_SPECTRAL_COMPONENTS
: UINT16;
END;
END;
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.INCIDENT_SORTABLE_FLAG THEN
INCIDENT_SORT_ORDER
: UINT8;
END;
NOTIFY_OVERFLOW_CONTROL
: NOTIFY_OVERFLOW_CONTROL_RCD;
QUALITY_DESC : ARRAY [ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_EVENT_IDS] OF
QUALITY_DESC_RCD;
END;
TABLE 152 QUALITY_CONTROL_TBL = QUALITY_CONTROL_RCD;
Table 152 Element Descriptions
Identifier

Value

CAPTURE_CONTROL_BFLD

Descriptor controlling the information that is


captured in other tables.
It also provides
direction on how to perform comparisons when
establishing out-of-limits conditions.

TD_FLAG

An indication of whether or not to produce a


waveform in TD_ASYNC_TBL upon Quality-ofservice event.
FALSE
TRUE

340

Definition

Do not capture a waveform.


Capture a waveform.

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

Tables

ANSI C12.19-2008

FD_FLAG

An indication of whether or not to produce a


frequency spectrum in FD_ASYNC_TBL upon
Quality-of-service event.
FALSE
TRUE

REPORT_ON_EXIT_FLAG

Do not capture a frequency spectrum.


Capture a frequency spectrum.
An indication of whether or not to produce
Quality-of-service event upon end of condition.
The condition ceases after it has been
established as per exclusions and set limits,
then a follow-up event supersedes transitions it
into another, or the offending measurement is
reports to be back within acceptable limits.

FALSE
TRUE
REPORT_ON_DETECT_FLAG

Do not generate a quality event.


Generate a quality event.
An indication of whether or not to produce
Quality-of-service event upon detection of
condition as per exclusions and set acceptance
limits.

FALSE
TRUE
COMPARE_SIGNED_FLAG

Do not generate a quality event.


Generate a quality event.
An indication of whether or not to compare a
signed input signal or calculation.

FALSE
TRUE

COMPARE_PEAK_FLAG

Compare the signals unsigned magnitude


against the NOMINAL_POSITIVE_LIMITS.
Compare the signed signal against the signed
limits,
NOMINAL_POSITIVE_LIMITS
or
NOMINAL_NEGATIVE_LIMITS, as governed by
the signal sign.
An indication of whether or not to compare the
largest per-cycle value of an input signal or
calculation against the set limits.

FALSE
TRUE
COMPARE_RMS_FLAG

Compare the RMS or average of the signal


against
the
limits
as
per
COMPARE_RMS_FLAG.
Compare the peak of the signal against the set
limits.
An indication of whether or not to compare the
RMS of an input signal or calculation against the
set limits. This flag shall be ignored when
COMPARE_PEAK_FLAG = TRUE.

FALSE
TRUE

Compare the average of the signal against the


limits.
Compare the RMS of the signal against the
limits.

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

341

ANSI C12.19-2008

Tables

COMPARE_INCLUSIVE_FLAG

Determines the measurement range conditions


used to determine whether or not a quality event
description is applicable for this selection.
Let
V
=
(measured
value)
/
NOMINAL_VALUE_RCD.NOMINAL_VALUE *
100%.
FALSE

TRUE

REPEAT_FLAG

Indication to enable or disable auto waveform


repeat-capture following a Quality-of-service
event.
FALSE
TRUE

VALUE_REPORT_CTRL

NOMINAL_VALUE_RCD

342

The Quality-of-service event rule affected is


armed (applicable) when the value V is not
within the set points
LOW_SET_POINT and.
HIGH_SET_POINT. i.e., V is less than the
LOW_SET_POINT or V is greater than the
HIGH_SET_POINT.
The Quality-of-service event rule affected is
armed (applicable) when the value V is within
the set points LOW_SET_POINT
and.
HIGH_SET_POINT. i.e., V is greater or equal to
the LOW_SET_POINT and V is less than or
equal to the HIGH_SET_POINT.

Disable repeated waveform captures.


Enable repeated waveform captures.
Defines the method used to capture the actual
measurement value that is associated with the
Quality-of-service incident.

Worst (minimum or maximum as per


measurement type) value sensed for this
incident.

Average value calculated during this incident.

Average of the absolute values calculated


during this incident.

Average of the RMS values calculated during


this incident.

Maximum value sensed for this incident.

Minimum value sensed for this incident.

Last value sensed as the incident was reported.

7..15

Reserved.
Descriptor defining a measurement value and
the acceptable variations from that value. Also
see COMPARE_INCLUSIVE_FLAG.

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

Tables

ANSI C12.19-2008

NOMINAL_VALUE

Nominal reference measurement or calculation


value. Related set points are expressed as
percentage of this value. This value shall be
expressed in engineering units used for
transmission according to the data source and
corresponding unit of measure selected.
LOW_SET_POINT and HIGH_SET_POINT are
compared against the following normalization:
(measured value) / NOMINAL_VALUE * 100%.

LOW_SET_POINT

The quality event-recognition lower bound in


percent. For details on calculation methods see
COMPARE_INCLUSIVE_FLAG. For correct
event
recognition
the
value
of
LOW_SET_POINT shall be less than or equal to
HIGH_SET_POINT.

HIGH_SET_POINT

The quality event-recognition upper bound in


percent. For details on calculation methods see
COMPARE_INCLUSIVE_FLAG. For correct
event
recognition
the
value
of
HIGH_SET_POINT shall be greater or equal to
LOW_SET_POINT.

WAVEFORM_CHANNEL_SOURCE_ID_RCD

Waveform channel source selector and scaling


factors.

SOURCE_ID

Data source selector for the measurement


associated with this Quality-of-service timedomain
waveform-capture
or
waveformtransform.

SCALAR

Scalar that has been applied to each sample


value. The sample value needs to be divided by
this SCALAR to recover the original value.
When SCALAR absent, the application shall
assume the value 1.0. Additional constants and
offsets may be applied subsequently according
to the definitions and values provided in the
relevant data source table.

DIVISOR

Divisor that has been applied to each sample


value. The sample value needs to be multiplied
by this DIVISOR to recover the original value.
When DIVISOR is absent, the application shall
assume the value 1.0. Additional constants and
offsets may be applied subsequently according
to the definitions and values provided in the
relevant data source table.

TD_CONTROL_RCD

Control element for time-domain waveform


capture.
It determines the sampling
characteristics and related input channels.

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

343

ANSI C12.19-2008

Tables

TIME_CAPTURE_TYPE

This type identifies the nature of the timedomain capture trace


0

POINT_ON_WAVE digitized waveform data


points

RMS digitized output of rms calculation of


waveform using a one (1) cycle integration
period

2..255

Reserved.

SAMPLING_RATE

Sampling rate in hertz (Hz) used to capture or


analyze waveforms. This value is common to all
channels associated with this element. Note:
This value shall be less than or equal to
ACT_QUALITY_OF_SERVICE_TBL.TD_SAMP
LING_RATE.

NBR_OF_SAMPLES

Total number of samples to capture at the


indicated sampling rate. This value is common
to all channels associated with this control
record. Note: This value shall be less than or
equal to ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_TD_SAMPLES.

NBR_OF_PREFETCH_SAMPLES

Number of samples that the End Device shall


capture continuously just prior to the
asynchronous event that triggered a waveform
capture. Note: This value shall be less than or
equal to ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_TD_PREFETCH_SAMPLES.

NBR_OF_CHANNELS

Number of channels that will be captured as a


result of the event controlled by this entry. Note:
this value shall be less than or equal to
ACT_QUALITY_OF_SERVICE_TBL
.NBR_OF_TD_CHANNELS.

CHANNEL_SOURCE_ID

Channel data source descriptor and scalars.


See
WAVEFORM_CHANNEL_SOURCE_ID_RCD.

NBR_OF_WAVEFORM_REPEATS

Number of additional consecutive waveforms


that shall be captured as a result of this Qualityof-service event.

WAVEFORM_REPEAT_DELAY

Delay
period
between
additional
consecutive waveforms that are captured as a
result of this Quality-of-service event.

FD_CONTROL_RCD

344

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

Tables

ANSI C12.19-2008

FREQUENCY_CAPTURE_TYPE

This type identifies the nature of the frequencydomain capture trace


0

Harmonics
The frequencies in the spectrum are
harmonically related. All frequencies are ordered
integral multiples of a reference fundamental
frequency. The harmonic frequency is implied
from the arrays positional index of spectral
component.

Interharmonics
The frequencies in the spectrum contain
interharmonic values. All frequencies are
ordered, but not necessarily as integral multiples
of a reference fundamental frequency. The
harmonic or interharmonic frequency is explicitly
included with the measurement of each spectral
component.

Discrete Spectra
The frequencies in the spectrum are specified
as a control list. The frequency is explicitly
included with the measurement of each spectral
component.

3..255 Reserved.
SAMPLING_RATE

Sampling rate in hertz (Hz) used to capture


waveforms.
This value is common to all
channels associated with this element. Note:
This value shall be less than or equal to
ACT_QUALITY_OF_SERVICE_TBL.FD_SAMP
LING_RATE.

NBR_OF_SAMPLES

Total number of samples to capture at the


indicated sampling rate. This value is common
to all channels associated with this control
record. Note: This value shall be less than or
equal
to
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_
FD_SAMPLES and this must equate to an
integral number of cycles.

NBR_OF_PREFETCH_SAMPLES

Number of samples that the End Device shall


capture continuously just prior to the
asynchronous event that triggered a waveform
capture. Note: This value shall be less than or
equal to ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_FD_PREFETCH_SAMPLES.
This
does not apply for frequency.

NBR_OF_SPECTRAL_COMPONENTS

Total number of spectral entries to retain


following the frequency-domain information
capture.
The actual number of elements
recorded will be one (1) greater than this value

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

345

ANSI C12.19-2008

Tables
to allow for the DC component (bias) to be
recorded as well. This value is common to all
channels associated with this entry. Note: This
value shall be less than or equal to
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_
SPECTRAL_COMPONENTS.

NBR_OF_CHANNELS

Number of channels that will be captured as a


result of the event controlled by this entry. Note:
this value shall be less than or equal to
ACT_QUALITY_OF_SERVICE_TBL
.NBR_OF_FD_CHANNELS.

CHANNEL_SOURCE_ID

Channel data source descriptor and scalars.


See
WAVEFORM_CHANNEL_SOURCE_ID_RCD.

NBR_OF_WAVEFORM_REPEATS

Number of additional consecutive waveforms


that shall be captured as a result of this Qualityof-service event.

WAVEFORM_REPEAT_DELAY

Delay
period
between
additional
consecutive waveforms that are captured as a
result of this Quality-of-service event.

DISCRETE_FREQUENCY_LIST

An array which contains a list of frequencies for


which to capture the discrete spectrum in hertz
(Hz), when FREQUENCY_CAPTURE_TYPE is
set to 2.

QUALITY_DESC_RCD

346

A single entry used to describe the Quality-ofservice processing criteria and event production
rules.

QUALITY_DESC_NAME

A
text
label
used
to
describe
a
QUALITY_DESC_RCD. The label text shall be
left justified and padded on the right with spaces
(20H). e.g., Let LABEL_LENGTH = 16 then a
QUALITY_DESC_NAME may be "VOLTAGE
SAG
.

SOURCE_ID

Data source selector for the measurement


associated with this Quality-of-service incident
report.

COINCIDENT_SOURCE_IDS

Collection of data source selectors for the


measurements associated with this Quality-ofservice
incident
report
selected
by
.SOURCE_ID.

COINCIDENT_SOURCE_ENABLE_FLAGS

Collection of flags that correspond positionally to


.COINCIDENT_SOURCE_IDS.
Entries
in
Quality-of-service tables which report coincident
values shall be assumed to be valid when this
flag is set to TRUE.

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

Tables

ANSI C12.19-2008

FALSE

TRUE

Corresponding
COINCIDENT_SOURCE_IDS
entry does not contain a valid source identifier.
Therefore, the corresponding measurement
shall be ignored.
Corresponding
COINCIDENT_SOURCE_IDS
entry is a valid source identifier. Therefore, the
corresponding measurement is meaningful.

CAPTURE_CONTROL

See CAPTURE_CONTROL_BFLD.

TD_ASYNC_CONTROL

Time-domain waveform-capture control element


for
TD_ASYNC_TBL.
See
TD_CONTROL_RCD.

FD_ASYNC_CONTROL

Frequency-domain waveform-transform control


element
for
FD_ASYNC_TBL.
See
FD_CONTROL_RCD.

TD_PERIODIC_INTERVAL

Time-domain triggering interval in seconds.

TD_PERIODIC_WAVEFORM_CONTROL

Time-domain waveform-capture control element


for
TIME_DOMAIN_TBL.
See
TD_CONTROL_RCD.

FD_PERIODIC_INTERVAL

Frequency-domain
seconds.

FD_PERIODIC_WAVEFORM_CONTROL

The frequency-domain waveform-transform


control
element
for
FREQUENCY_DOMAIN_TBL.
See
FD_CONTROL_RCD.

NOMINAL_POSITIVE_LIMITS

Nominal values and limits used in comparisons


with absolute positive magnitudes.
See
NOMINAL_VALUE_RCD
and
COMPARE_SIGNED_FLAG.

NOMINAL_NEGATIVE_LIMITS

Nominal values and limits used in signed


comparisons for negative magnitudes. See
NOMINAL_VALUE_RCD
and
COMPARE_SIGNED_FLAG.

MIN_DURATION

Minimum amount of time a condition needs to


persist before being reported as a Quality-ofservice event.

EXCLUSION_DURATION

Amount of time to suppress event recognition


following an event detection.

EXCLUSION_CONDITIONS

SET of flags that select positionally a Quality-ofservice source from this Table.

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

triggering

interval

in

347

ANSI C12.19-2008

Tables
FALSE
TRUE

TRANSITION_CONDITIONS

SET of flags that select positionally related rulechaining for Quality-of-service processing.
FALSE

An indication that the corresponding (as per


corresponding SET index) event condition does
not impact the detection of this event.

TRUE

An indication that when the corresponding (as


per corresponding SET index) event condition
is detected then that event is a follow-up event.
Resulting in an event exit condition for the
current event. Normally exit conditions do not
generate
(see
REPORT_ON_EXIT_FLAG)
reports.

NOTIFY_OVERFLOW_CONTROL_RCD

Control structure used to manage the


notification conditions of each of the Quality-ofservice lists.

QS_LOG_CTRL

List overflow notification constraints element for


Quality-of-service
log
Table,
QUALITY_LOG_TBL.

TD_ASYNC_CTRL

List overflow notification constraints element for


asynchronous time-domain waveforms Table,
TD_ASYC_WAVEFORM_TBL.

FD_ASYNC_CTRL

List overflow notification constraints element for


asynchronous
frequency-domain
spectrum
Table, FD_ASYC_WAVEFORM_TBL.

TD_PERIODIC_CTRL

List overflow notification constraints element for


periodic
time-domain
waveforms
table,
TIME_DOMAIN_TBL.

FD_PERIODIC_CTRL

List overflow notification constraints element for


periodic frequency-domain spectra Table,
FREQUENCY_DOMAIN_TBL.

QUALITY_CONTROL_RCD

348

An indication that the corresponding (as per


corresponding SET index) quality event does
not impact the detection of this event.
An indication that when the corresponding (as
per corresponding SET index) quality event
condition is also detected then this event shall
be disarmed (aborted) and not be reported
because it is excluded by the corresponding
other condition.

Collection of Quality-of-service sources and


operation parameters. A reference to an event
in a processing list is made using the entry index
into to the array contained within. This Packed
Record contains common values that are shared

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

Tables

ANSI C12.19-2008
among all Quality-of-service event reports and
event-specific settings.
TD_SAMPLES_FORMAT_CODE

A single code selecting the format for all timedomain waveform data. Possible values are as
per
LP_DATA_SET1_TBL.DATA_SELCTION_RC
D.INT_FMT_CDE1. This value is common to all
time-domain waveform captured sources and
channels.

TD_SAMPLING_RATE

Sampling rate in hertz (Hz) used to capture all


time-domain waveforms. This value is common
to all time-domain waveform captured sources
and channels. Note: This value shall be less
than
or
equal
to
ACT_QUALITY_OF_SERVICE_TBL.TD_SAMP
LING_RATE.

NBR_OF_TD_SAMPLES

Total number of samples to capture at the


indicated sampling rate. This value is common
to all time-domain waveform captured sources
and channels. Note: This value shall be less
than
or
equal
to
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_
TD_SAMPLES.

NBR_OF_TD_PREFETCH_SAMPLES

Number of samples to pre-fetch prior to event


time stamp at the indicated sampling rate. This
value is common to all time-domain waveform
captured sources and channels.

FD_SAMPLES_FORMAT_CODE

Single code selecting the format for all


frequency-domain transformed waveform data.
Possible
values
are
as
per
LP_DATA_SET1_TBL.DATA_SELCTION_RC
D.INT_FMT_CDE1. This value is common to all
frequency-domain waveform-transform captured
sources and channels.

FD_SAMPLING_RATE

Sampling rate in hertz (Hz) used to capture all


frequency-domain spectra. This value is
common to all frequency-domain waveformtransform captured sources and channels.
Note: This value shall be less than or equal to
ACT_QUALITY_OF_SERVICE_TBL.FD_SAMP
LING_RATE.

NBR_OF_FD_SAMPLES

Total number of samples to capture at the


indicated sampling rate. This value is common
to all frequency-domain waveform-transform
captured sources and channels. Note: This
value shall be less than or equal to
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_
FD_SAMPLES.

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

349

ANSI C12.19-2008

Tables

NBR_OF_FD_PREFETCH_SAMPLES

Number of samples to pre-fetch prior to event


time stamp at the indicated sampling rate. This
value is common to all frequency-domain
waveform-transform captured sources and
channels.

NBR_OF_SPECTRAL_COMPONENTS

Total number of spectra to retain following the


time-domain
to
frequency-domain
transformation. The actual number of elements
recorded will be one (1) greater than this value
to allow for the DC component (bias) to be
recorded as well. This value is common to all
frequency-domain waveform-transform captured
sources and channels (except when recording
discrete spectra using a list). Note: This value
shall
be
less
than
or
equal
to
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_
SPECTRAL_COMPONENTS.

INCIDENT_SORT_ORDER

Sorting algorithm used to report Quality-ofservice


incidents
in
QUALITY_INCIDENTS_TBL. The application
may read back this field to check whether the
algorithm requested is supported. The End
Device shall reset this value to zero (0) if the
desired algorithm is not supported by the End
Device. When not implemented, this value shall
be assumed to be zero (0). The reference start
point for sorting is the time of last Quality-ofservice reset.
0
1

350

Default value. The incidents are not sorted in


any particular order. The application shall not
assume any sorting order or placement priority.
Incidents are sorted by time of incidents. Newer
(more recent) events are placed at lower array
indices.

Incidents are sorted by time of incidents. Newer


(more recent) events are placed at higher array
indices.

Incidents are sorted by the magnitude of the


difference of the measured value from the
related
LOW_SET_POINT
or
HIGH_SET_POINT.
Higher
magnitude
difference events are placed at lower array
indices.

Incidents are sorted by the magnitude of the


difference of the measured value from the
related
LOW_SET_POINT
or
HIGH_SET_POINT.
Higher
magnitude
difference incidents are placed at higher array
indices.

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

Tables

ANSI C12.19-2008

Incidents are sorted by the duration of the


incident. More persistent incidents are placed at
lower array indices.

Incidents are sorted by the duration of the


incident. More persistent incidents are placed at
higher array indices.

7..255 Reserved.
NOTIFY_OVERFLOW_CONTROL

Control element that manages the list overflow


generations of warnings and notifications. See
NOTIFY_OVERFLOW_CONTROL_RCD.

QUALITY_DESC

Array of Quality-of-service set-up and control


elements. Each entry in this array represents
one independent detection rule and control
element for a Quality-of-service report. Each
defines the Quality-of-service source, event
specific data monitoring rules, data capture and
reporting control parameters. All rules found in
this array shall be assumed to be processed and
evaluated continually and in parallel (while
quality monitoring is enabled) with no assumed
or implied order. See QUALITY_DESC_RCD.

Decade 15: Quality-of-service / Table 152 Quality-of-service Control Table

351

ANSI C12.19-2008

Tables

9.16.4 Table 153 Quality-of-service Incidents Table


Table 153 Data Description
This Table provides a real-time summary of Quality-of-service reports that were reported by the End
Device. The entries have a fixed order. Older values are replaced by newer values and peak values are
ordered according to ascending event severity magnitude.
Global Default Table Property Overrides: Role=CONTROL
Table 153 Type Definitions
TYPE QUALITY_ITEM_RCD = PACKED RECORD
EVENT_START_TIME
: HTIME_DATE;
EVENT_TIME_STAMP
: HTIME_DATE;
IF GEN_CONFIG_TBL.STD_TBLS_USED[QUALITY_LOG_TBL] THEN
QUALITY_LOG_SEQ_NBR
: UINT32;
END;
EVENT_VALUE
: NI_FMAT2;
COINCIDENT_VALUE
: ARRAY[
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_COINCIDENT_VALUES]
OF NI_FMAT2;
END;
TYPE QUALITY_EVENT_RCD = PACKED RECORD
TOTAL_NBR_OF_INCIDENTS
: UINT32;
EVENT_DATA
: QUALITY_ITEM_RCD;
EVENT_PAST_DATA_VALID_FLAGS
: SET (
(ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_INCIDENTS + 7)/8);
EVENT_PAST_DATA
: ARRAY [
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_INCIDENTS] OF QUALITY_ITEM_RCD;
END;
TYPE QUALITY_INCIDENTS_RCD = PACKED RECORD
IF ACT_QUALITY_OF_SERVICE_TBL.QUALITY_RESET_CTR_FLAG THEN
NBR_QUALITY_RESETS
: UINT8;
END;
QUALITY_EVENT_DATA
: ARRAY[ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_EVENT_IDS] OF QUALITY_EVENT_RCD;
END;
TABLE 153 QUALITY_INCIDENTS_TBL = QUALITY_INCIDENTS_RCD;
Table 153 Element Descriptions
Value

Identifier
QUALITY_INCIDENTS_RCD

Collection of counters and time stamps that


summarize all Quality-of-service reports.

NBR_QUALITY_RESETS

352

Definition

Indicates the number of Quality-of-service event


counter resets executed by the End Device.

Decade 15: Quality-of-service / Table 153 Quality-of-service Incidents Table

Tables

ANSI C12.19-2008

QUALITY_EVENT_DATA

Array that that maps corresponding entries for


each Quality-of-service exception report. See
QUALITY_EVENT_RCD.

QUALITY_EVENT_RCD

Container of for the counters and time stamps


for one type of Quality-of-service report.

TOTAL_NBR_OF_INCIDENTS

Total number of times this quality report was


generated since the last quality report reset.

EVENT_DATA

Information regarding the latest incident.


QUALITY_ITEM_RCD.

EVENT_PAST_DATA_VALID_FLAGS

Collection of flags that correspond positionally to


entries in EVENT_PAST_DATA.

FALSE

Ignore measurement.
The EVENT_PAST_DATA entry in this table at
the corresponding array index does not contain
a valid value.
Valid measurement value.
The EVENT_PAST_DATA entry in this table at
the corresponding array index contains a valid
value.

TRUE

EVENT_PAST_DATA

QUALITY_ITEM_RCD

See

Collection of past Quality-of-service incidents


values ordered by incident severity as selected
by
QUALITY_CONTROL_TBL
.QUALITY_CONTROL_RCD
.INCIDENT_SORT_ORDER.
A single summary report of a Quality-of-service
incident.

EVENT_START_TIME

Time when this event condition was initially


detected.
It is identical in value to
QUALITY_LOG_TBL.QUALITY_LOG_ENTRY_
RCD.EVENT_TIME_STAMP.

EVENT_TIME_STAMP

High resolution date and time for this incident.


This is the time at which the event has persisted
long enough for it to be reported. The time
difference between EVENT_TIME_STAMP and
EVENT_START_TIME is the event duration
prior to reporting. It is identical in value to
QUALITY_LOG_TBL.QUALITY_LOG_ENTRY_
RCD.EVENT_TIME_STAMP.

QUALITY_LOG_SEQ_NBR

Associated event id used to correlate this report


with
the
appropriate
entry
in
QUALITY_LOG_TBL.

EVENT_VALUE

Actual value that was measured when this


report was triggered.
The measurement
reporting algorithm is further qualified by the

Decade 15: Quality-of-service / Table 153 Quality-of-service Incidents Table

353

ANSI C12.19-2008

Tables
corresponding
entry
QUALITY_CONTROL_TBL
.CAPTURE_CONTROL_BFLD
.VALUE_REPORT_CTRL.

COINCIDENT_VALUE

354

in

Collection of coincidental measurements that


were taken at the time .EVENT_VALUE was
detected. An entry in this array is valid if the
corresponding flag QUALITY_CONTROL_TBL
.QUALITY_DESC_RCD
.COINCIDENT_SOURCE_ENABLE_FLAGS
entry was set to TRUE for this event. The
measurement reporting algorithm is further
qualified by the corresponding entry in
QUALITY_CONTROL_TBL
.CAPTURE_CONTROL_BFLD
.VALUE_REPORT_CTRL.

Decade 15: Quality-of-service / Table 153 Quality-of-service Incidents Table

Tables

ANSI C12.19-2008

9.16.5 Table 154 Quality-of-service Log Table


Table 154 Data Description
This Table provides a log capture area for any Quality-of-service event. It contains the necessary
information to identify the event-trigger-related captured waveforms and incident reports.
The Table is organized as a list of ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_EVENTS data entries.
Each entry represents one Quality-of-service report. Each report is cross-referenced to the event source,
EVENT_ID, an index into QUALITY_CONTROL_TBL and related wave capture tables.
Global Default Table Property Overrides: Role=CONTROL
Table 154 Type Definitions
TYPE QUALITY_LOG_ENTRY_RCD = PACKED RECORD
EVENT_START_TIME
: HTIME_DATE;
EVENT_TIME_STAMP
: HTIME_DATE;
EVENT_SEQ_NBR
: UINT16;
EVENT_ID
: UINT16;
IF GEN_CONFIG_TBL.STD_TBLS_USED[TD_ASYNC_TBL] THEN
TD_ASYNC_SEQ_NBR
: UINT32;
END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[FD_ASYNC_TBL] THEN
FD_ASYNC_SEQ_NBR
: UINT32;
END;
EVENT_VALUE
: NI_FMAT2;
COINCIDENT_VALUE
: ARRAY[
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_COINCIDENT_VALUES]
OF NI_FMAT2;
END;
TYPE QUALITY_LOG_RCD = PACKED RECORD
LIST_STATUS : WAVEFORM_LIST_STATUS_RCD;
ENTRIES : ARRAY [ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_EVENTS] OF
QUALITY_LOG_ENTRY_RCD;
END;
TABLE 154 QUALITY_LOG_TBL = QUALITY_LOG_RCD;
Table 154 Element Descriptions
Identifier

Value

Definition

QUALITY_LOG_ENTRY_RCD

A single entry in the Quality-of-service event list.

EVENT_START_TIME

The time when this event condition was initially


detected.

EVENT_TIME_STAMP

High-resolution date and time for this incident.


This is the time at which the event has persisted
long enough for it to be reported. The time
difference between EVENT_TIME_STAMP and

Decade 15: Quality-of-service / Table 154 Quality-of-service Log Table

355

ANSI C12.19-2008

Tables

EVENT_START_TIME is the event duration


prior to reporting.
EVENT_SEQ_NBR

Unique numeric identifier that increments for


each new Quality-of-service incident that is
logged in this Table.

EVENT_ID

Index
of
the
event
descriptor
in
QUALITY_CONTROL_TBL that was the source
of this entry.

TD_ASYNC_SEQ_NBR

Sequence number of the first waveform block


that was captured in TD_ASYNC_TBL.

FD_ASYNC_SEQ_NBR

Sequence number of the first waveform block


that was captured in FD_ASYNC_TBL.

EVENT_VALUE

Actual value that was measured this report was


triggered. The measurement reporting algorithm
is further qualified by the corresponding entry in
QUALITY_CONTROL_TBL
.CAPTURE_CONTROL_BFLD
.VALUE_REPORT_CTRL.

COINCIDENT_VALUE

Collection of coincidental measurements that


were taken at the time .EVENT_VALUE was
detected. An entry in this array is valid if the
corresponding flag QUALITY_CONTROL_TBL
.QUALITY_DESC_RCD
.COINCIDENT_SOURCE_ENABLE_FLAGS
entry was set to TRUE for this event. The
measurement reporting algorithm is further
qualified by the corresponding entry in
QUALITY_CONTROL_TBL
.CAPTURE_CONTROL_BFLD
.VALUE_REPORT_CTRL.

QUALITY_LOG_RCD

356

A container for all Quality-of-service event


entries.

LIST_STATUS

See WAVEFORM_LIST_STATUS_RCD.

ENTRIES

Array of entries, each of which holds one


Quality-of-service out-of-limits report.
See
QUALITY_LOG_ENTRY_RCD.

Decade 15: Quality-of-service / Table 154 Quality-of-service Log Table

Tables

ANSI C12.19-2008

9.16.6 Table 155 Asynchronous Time-Domain Waveforms Table


Table 155 Data Description
This Table provides a waveform capture area for time-domain waveforms that are triggered by a Qualityof-service event. It contains the necessary information to identify the event trigger.
The Table is organized as a list of ACT_QUALITY_OF_SERVICE_TBL. NBR_OF_TD_BLOCKS data
blocks.
Each
data
block
can
hold
up
to
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_TD_SAMPLES_PER_BLOCK samples from one or more input channels, to a maximum of
ACT_QUALITY_OF_SERVICE_TBL. NBR_OF_TD_CHANNELS_PER_BLOCK channels as shown
below:
When this triggering event requires more than NBR_OF_TD_CHANNELS_PER_BLOCK waveforms to
be reported, additional blocks are provided, each containing NBR_OF_TD_CHANNELS_PER_BLOCK
waveforms until the number of channels is exhausted. The actual number of valid channels in a block is
indicated by the block header NBR_CHANNELS element.
When, in addition, the triggering event requires more than NBR_OF_TD_SAMPLES_PER_BLOCK
samples to be recorded contiguously, then additional data blocks (or groups of blocks) will be created
until all requested samples are reported.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 155 Type Definitions
TYPE TD_BLOCK_HEADER_RCD = PACKED RECORD
ASSOCIATED_EVENT_ID
: UINT16;
ASSOCIATED_EVENT_SEQ_NBR
: UINT32;
ASSOCIATED_EVENT_TIME_STAMP
: HTIME_DATE;
NBR_SAMPLES
: UINT16;
NBR_CHANNELS
: UINT16;
END_BLOCK_TIME_STAMP
: HTIME_DATE;
BLOCK_CHANNEL_OFFSET
: UINT16;
WAVEFORM_SEGMENT_NBR
: UINT16;
EVENT_SAMPLE_OFFSET
: INT32;
SAMPLING_RATE
: NI_FMAT2;
END;
TYPE TD_CHANNELS_RCD = PACKED RECORD
CHANNEL : ARRAY [
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_TD_CHANNELS_PER_BLOCK]
TD_SAMPLE_FORMAT_RCD;
END;
TYPE TD_BLOCK_DATA_RCD = PACKED RECORD
BLOCK_HEADER : TD_BLOCK_HEADER_RCD;
SAMPLE_DATA
: ARRAY[
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_TD_SAMPLES_PER_BLOCK]
TD_CHANNELS_RCD;
END;

OF

OF

TYPE ASYNC_RCD = PACKED RECORD


LIST_STATUS : WAVEFORM_LIST_STATUS_RCD;

Decade 15: Quality-of-service / Table 155 Asynchronous Time-Domain Waveforms Table

357

ANSI C12.19-2008

Tables

BLOCK_DATA : ARRAY [ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_TD_BLOCKS] OF


TD_BLOCK_DATA_RCD;
END;
TABLE 155 TD_ASYNC_TBL = ASYNC_RCD;
Table 155 Element Descriptions
Identifier
TD_BLOCK_HEADER_RCD

358

Value

Definition
This element contains the block descriptor, and
status information.

ASSOCIATED_EVENT_ID

Index
into
QUALITY_CONTROL_TBL.
QUALITY_DESC that is associated with this
event.

ASSOCIATED_EVENT_SEQ_NBR

Event
sequence
number
of
QUALITY_LOG_TBL.
QUALITY_LOG_ENTRY_RCD.
EVENT_SEQ_NBR that is associated with this
waveform. This value shall be identical in all
blocks that carry samples and channels that
were triggered by the same Quality-of-service
event.

ASSOCIATED_EVENT_TIME_STAMP

Event
time
stamp
as
recorded
in
QUALITY_LOG_TBL.QUALITY_LOG_ENTRY_
RCD. EVENT_TIME_STAMP that is associated
with this waveform. This value shall be identical
in all blocks that carry samples and channels
that were triggered by the same Quality-ofservice event. This value also relates to the
sample time of the data sample that matches
EVENT_SAMPLE_OFFSET.

NBR_SAMPLES

Number of samples in this block. This value


may
be
less
than
the
block
size,
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_
TD_SAMPLES_PER_BLOCK, as a block may
be partially filled with sample values.

NBR_CHANNELS

Number of channels in this block. This value


may be less than the total number of channels,
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_TD_CHANNELS_PER_BLOCK, as a
block may be partially filled with channel values
and the actual number of channels may vary
from quality event to quality event recorded.

END_BLOCK_TIME_STAMP

Sample acquisition time of the last sample in this


block. This sample is at block-relative sample
offset of SAMPLE_DATA[NBR_SAMPLES-1].

BLOCK_CHANNEL_OFFSET

Channel number associated with the first


channel in this block. This value may range

Decade 15: Quality-of-service / Table 155 Asynchronous Time-Domain Waveforms Table

Tables

ANSI C12.19-2008
from
zero
(0)
to
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_TD_CHANNELS-1,
as
NBR_OF_TD_CHANNELS may be greater than
NBR_OF_TD_CHANNELS_PER_BLOCK.
WAVEFORM_SEGMENT_NBR

This value ranges from N-1 to zero (0), where N


is the total number of segments needed to
contain all fragments from all of the channels
bound to one report. This value aims to assist
the application to discover how many blocks of
data are needed to recover all waveforms
segments that make up continuous waveform.

EVENT_SAMPLE_OFFSET

Offset in samples from this block start. This


value changes from block to block to reflect the
first sample position in the fully assembled
waveform. For example, if the sample pre-fetch
value is 5, and a block can hold 10 samples and
the End Device was programmed to collect 32
samples then four blocks will be generated each
having
(WAVEFORM_SEGMENT_NBR,
NBR_SAMPLES, EVENT_SAMPLE_OFFSET)
successive triplet values as follows: (3,10,4),
(2,10,-6),(1,10,-16) and (0,2,-26).

SAMPLING_RATE

Sampling rate in hertz (Hz) used to collect this


waveform across all channels.

TD_CHANNELS_RCD

Collection of all samples from all related


channels. These samples are collected
concurrently.

CHANNEL

Array of TD_SAMPLE_FORMAT_RCD. Each


element represents the value of one sample
from a channel.

TD_BLOCK_DATA_RCD

Container for a full or partial collection of


waveform block data.

BLOCK_HEADER

See TD_BLOCK_HEADER_RCD.

SAMPLE_DATA

Array of TD_CHANNELS_RCD. Each entry


contains one sample from each available
channel
collected
successively
at
the
programmed sampling rate.

ASYNC_RCD

Waveform captures area for time-domain


waveforms that are triggered by a Quality-ofservice event.

LIST_STATUS

See WAVEFORM_LIST_STATUS_RCD.

BLOCK_DATA

Array of TD_BLOCK_DATA_RCD.

Decade 15: Quality-of-service / Table 155 Asynchronous Time-Domain Waveforms Table

359

ANSI C12.19-2008

Tables

9.16.7 Table 156 Asynchronous Frequency-Domain Spectrum Table


Table 156 Data Description
This Table provides a frequency-domain spectrum capture area for transforms of time-domain waveforms
that are triggered by a Quality-of-service event. It contains the necessary information to identify the event
trigger.
The Table is organized as a list of ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_FD_BLOCKS data
blocks.
Each
data
block
can
hold
up
to
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_FD_SPECTRA_PER_BLOCK spectra from one or more
input
channels,
to
a
maximum
of
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_FD_CHANNELS_PER_BLOCK channels as shown below:
When this triggering event requires more than NBR_OF_FD_CHANNELS_PER_BLOCK waveforms to
be reported, additional blocks are provided, each containing NBR_OF_FD_CHANNELS_PER_BLOCK
waveforms until the number of channels is exhausted. The actual number of valid channels in a block is
indicated by the block header NBR_CHANNELS element.
When, in addition, the triggering event requires more than NBR_OF_FD_SPECTRA_PER_BLOCK
spectra to be recorded contiguously, then additional data blocks (or groups of blocks) will be created until
all requested samples are reported.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 156 Type Definitions
TYPE FD_BLOCK_HEADER_RCD = PACKED RECORD
ASSOCIATED_EVENT_ID
: UINT16;
ASSOCIATED_EVENT_SEQ_NBR
: UINT32;
ASSOCIATED_EVENT_TIME_STAMP
: HTIME_DATE;
NBR_SPECTRAL_COMPONENTS
: UINT16;
NBR_CHANNELS
: UINT16;
START_BLOCK_TIME_STAMP
: HTIME_DATE;
END_BLOCK_TIME_STAMP
: HTIME_DATE;
BLOCK_CHANNEL_OFFSET
: UINT16;
SPECTRA_SEGMENT_NBR
: UINT16;
EVENT_SAMPLE_OFFSET
: INT32;
SAMPLING_RATE
: NI_FMAT2;
END;
TYPE FD_ENTRY_RCD = PACKED RECORD
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.INTERHARMONICS_FLAG THEN
FREQUENCY
: NI_FMAT2;
END;
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.FD_COMPLEX_FLAG THEN
REAL_COMPONENT : FD_SAMPLE_FORMAT_RCD;
IMAG_COMPONENT : FD_SAMPLE_FORMAT_RCD;
END;
IF ACT_QUALITY_OF_SERVICE_TBL.FEATURES.FD_PHASOR_FLAG THEN
AMPLITUDE
: FD_SAMPLE_FORMAT_RCD;
ANGLE
: FD_SAMPLE_FORMAT_RCD;
END;
END;

360

Decade 15: Quality-of-service / Table 156 Asynchronous Frequency-Domain Spectrum Table

Tables

ANSI C12.19-2008

TYPE FD_CHANNELS_RCD = PACKED RECORD


CHANNEL : ARRAY [
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_FD_CHANNELS_PER_BLOCK]
FD_ENTRY_RCD;
END;

OF

TYPE FD_BLOCK_DATA_RCD = PACKED RECORD


BLOCK_HEADER : FD_BLOCK_HEADER_RCD;
SPECTRAL_DATA
: ARRAY[
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_TD_SAMPLES_PER_BLOCK]
FD_CHANNELS_RCD;

OF

END;
TYPE ASYNC_SPECTRA_RCD = PACKED RECORD
LIST_STATUS : WAVEFORM_LIST_STATUS_RCD;
BLOCK_DATA : ARRAY [ ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_FD_BLOCKS] OF
FD_BLOCK_DATA_RCD;
END;
TABLE 156 FD_ASYNC_TBL = ASYNC_SPECTRA_RCD;
Table 156 Element Descriptions
Identifier

Value

FD_BLOCK_HEADER_RCD

Definition
This element contains the block descriptor, and
status information.

ASSOCIATED_EVENT_ID

Index
into
QUALITY_CONTROL_TBL.
QUALITY_DESC that is associated with this
event.

ASSOCIATED_EVENT_SEQ_NBR

Event
sequence
number
of
QUALITY_LOG_TBL.
QUALITY_LOG_ENTRY_RCD.
EVENT_SEQ_NBR that is associated with this
waveform. This value shall be identical in all
blocks that carry samples and channels that
were triggered by the same Quality-of-service
event.

ASSOCIATED_EVENT_TIME_STAMP

Event
time
stamp
as
recorded
in
QUALITY_LOG_TBL.QUALITY_LOG_ENTRY_
RCD.EVENT_TIME_STAMP that is associated
with this waveform. This value shall be identical
in all blocks that carry spectra from channels
that were triggered by the same Quality-ofservice event. This value also relates to the
sample time of the data sample that matches
EVENT_SAMPLE_OFFSET.

NBR_SPECTRAL_COMPONENTS

Number of spectral components reported in this


block.
This value includes all harmonic,

Decade 15: Quality-of-service / Table 156 Asynchronous Frequency-Domain Spectrum Table

361

ANSI C12.19-2008

Tables
interharmonic, or discrete spectral components
including the DC (bias) value, if any.

NBR_CHANNELS

Number of channels in this block. This value


may be less than the total number of channels,
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_FD_CHANNELS_PER_BLOCK, as a
block may be partially filled with channel values
and the actual number of channels may vary
from quality event to quality event recorded.

START_BLOCK_TIME_STAMP

Time stamp of the first sample used in this


transform. All blocks making up one spectrum
report the same value.

END_BLOCK_TIME_STAMP

Time stamp of the last sample used in this


transform. All blocks making up one spectrum
shall report the same value.

BLOCK_CHANNEL_OFFSET

Channel number associated with the first


channel in this block. This value may range
from
zero
(0)
to
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_FD_CHANNELS-1,
as
NBR_OF_FD_CHANNELS may be greater than
NBR_OF_FD_CHANNELS_PER_BLOCK.

SPECTRA_SEGMENT_NBR

Value ranging from N-1 to zero (0), where N is


the total number of segments needed to contain
all fragments from all of the channels bound to
one report. This value aims to assist the
application to discover how many blocks of data
are needed to recover all segments that make
up the spectral components.

EVENT_SAMPLE_OFFSET

Offset in samples to the first sample used in the


integration of this frequency spectrum. This
value shall be identical in all blocks segments
that are associated with the same event.

SAMPLING_RATE

Sampling rate in hertz (Hz) used to collect this


frequency spectrum across all channels.

FD_ENTRY_RCD

362

A single spectral component value.

FREQUENCY

The frequency in hertz (Hz) of the discrete


spectral component.

REAL_COMPONENT

Real part (cosine) of the spectral component.


See FD_SAMPLE_FORMAT_RCD.

IMAG_COMPONENT

Imaginary part (sine) of the spectral component.


See FD_SAMPLE_FORMAT_RCD.

Decade 15: Quality-of-service / Table 156 Asynchronous Frequency-Domain Spectrum Table

Tables

ANSI C12.19-2008

AMPLITUDE

Amplitude of the spectral component.


FD_SAMPLE_FORMAT_RCD.

ANGLE

Phase angle between the real and imaginary


parts of the spectral component. This value
ranges from -360 to +360 degrees before the
application
of
scalar/divisor.
See
FD_SAMPLE_FORMAT_RCD. Positive values
increase counter clockwise, from the positive
real axis toward the positive imaginary axis.

FD_CHANNELS_RCD

Collection of all samples from all related


channels.
These samples are collected
concurrently.

CHANNEL

FD_BLOCK_DATA_RCD
BLOCK_HEADER

See

Array of FD_ENTRY_RCD.
Each element
represents the value of one spectral component
from a channel.
See FD_BLOCK_HEADER_RCD.

SPECTRA_DATA

Array of FD_CHANNELS_RCD. Each entry


contains one spectral component from each
available channel. The first element at index
zero (0) is the DC (bias) value, the second
element at index one (1) is the fundamental
frequency, and successive spectral components
follow sequentially.

ASYNC_SPECTRA_RCD

Waveform-transform capture area for frequencydomain spectrum that are triggered by a Qualityof-service event.

LIST_STATUS

See WAVEFORM_LIST_STATUS_RCD.

BLOCK_DATA

An array of FD_BLOCK_DATA_RCD.

Decade 15: Quality-of-service / Table 156 Asynchronous Frequency-Domain Spectrum Table

363

ANSI C12.19-2008

Tables

9.16.8 Table 157 Periodic Time Domain Waveforms Table


Table 157 Data Description
This Table provides a waveform capture area for time-domain waveforms that are continually sampled for
the purpose of obtaining real-time performance information.
The Table is organized as a list of ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_TD_BLOCKS data
blocks.
Each
data
block
can
hold
up
to
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_TD_SAMPLES_PER_BLOCK samples from one or
more
input
channels,
to
a
maximum
of
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_TD_CHANNELS_PER_BLOCK
channels.
When
more
than
NBR_OF_TD_CHANNELS_PER_BLOCK waveforms need to be reported, additional blocks are
provided, each containing NBR_OF_TD_CHANNELS_PER_BLOCK waveforms until the number of
channels is exhausted. The actual number of valid channels in a block is indicated by the block header
NBR_CHANNELS element.
When, in addition more than NBR_OF_TD_SAMPLES_PER_BLOCK samples need to be recorded
contiguously, then additional data blocks (or groups of blocks) will be created until all requested samples
were reported.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 157 Type Definitions
TYPE TD_PERIODIC_BLOCK_HEADER_RCD = PACKED RECORD
NBR_SAMPLES
: UINT16;
NBR_CHANNELS
: UINT16;
END_BLOCK_TIME_STAMP
: HTIME_DATE;
BLOCK_CHANNEL_OFFSET
: UINT16;
WAVEFORM_SEGMENT_NBR
: UINT16;
EVENT_SAMPLE_OFFSET
: INT32;
SAMPLING_RATE
: NI_FMAT2;
END;
TYPE TD_PERIODIC_BLOCK_DATA_RCD = PACKED RECORD
BLOCK_HEADER : TD_PERIODIC_BLOCK_HEADER_RCD;
SAMPLE_DATA
: ARRAY[
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_TD_SAMPLES_PER_BLOCK]
TD_ASYNC_TBL.TD_CHANNELS_RCD;

OF

END;
TYPE WAVEFORM_RCD = PACKED RECORD
LIST_STATUS : WAVEFORM_LIST_STATUS_RCD;
BLOCK_DATA : ARRAY [ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_TD_BLOCKS] OF
TD_PERIODIC_BLOCK_DATA_RCD;
END;
TABLE 157 TIME_DOMAIN_TBL = WAVEFORM_RCD;

364

Decade 15: Quality-of-service / Table 157 Periodic Time Domain Waveforms Table

Tables

ANSI C12.19-2008

Table 157 Element Descriptions


Identifier

Value

TD_PERIODIC_BLOCK_HEADER_RCD

Definition
This element contains the block descriptor, and
status information.

NBR_SAMPLES

Number of samples in this block. This value


may
be
less
than
the
block
size,
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_
TD_SAMPLES_PER_BLOCK, as a block may
be partially filled with sample values.

NBR_CHANNELS

Number of channels in this block. This value


may be less than the total number of channels,
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_TD_CHANNELS_PER_BLOCK, as a
block may be partially filled with channel values
and the actual number of channels may vary
from quality event to quality event recorded.

END_BLOCK_TIME_STAMP

Sample acquisition time of the last sample in this


block. This sample is at block-relative sample
offset of SAMPLE_DATA[NBR_SAMPLES-1].

BLOCK_CHANNEL_OFFSET

Channel number associated with the first


channel in this block. This value may range
from
zero
(0)
to
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_TD_CHANNELS-1,
as
NBR_OF_TD_CHANNELS may be greater than
NBR_OF_TD_CHANNELS_PER_BLOCK.

WAVEFORM_SEGMENT_NBR

Value ranging from N-1 to zero (0), where N is


the total number of segments needed to contain
all fragments from all of the channels bound to
one report. This value aims to assist the
application to discover how many blocks of data
are needed to recover all waveforms segments
that make up continuous waveform.

EVENT_SAMPLE_OFFSET

Offset to start of collection time from this block


start. This value changes from block to block to
reflect the first sample position in the fully
assembled waveform.

SAMPLING_RATE

Sampling rate in hertz (Hz) used to collect this


waveform across all channels.

TD_PERIODIC_BLOCK_DATA_RCD
BLOCK_HEADER

Container for a full or partial collection of


waveform block data.
See TD_PERIODIC_BLOCK_HEADER_RCD.

Decade 15: Quality-of-service / Table 157 Periodic Time Domain Waveforms Table

365

ANSI C12.19-2008

Tables

SAMPLE_DATA

WAVEFORM_RCD

366

Array
of
TD_ASYNC_TBL.TD_CHANNELS_RCD. Each
entry contains one sample from each available
channel
collected
successively
at
the
programmed sampling rate.
Waveform captures area for time-domain
waveforms that are triggered periodically.

LIST_STATUS

See WAVEFORM_LIST_STATUS_RCD.

BLOCK_DATA

An
array
TD_PERIODIC_BLOCK_DATA_RCD.

of

Decade 15: Quality-of-service / Table 157 Periodic Time Domain Waveforms Table

Tables

ANSI C12.19-2008

9.16.9 Table 158 Periodic Frequency-Domain Spectrum Table


Table 158 Data Description
This Table provides a frequency domain spectrum capture area for transforms of time-domain waveforms
continually sampled for the purpose of obtaining real-time performance information.
The Table is organized as a list of ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_FD_BLOCKS data
blocks.
Each
data
block
can
hold
up
to
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_FD_SPECTRA_PER_BLOCK spectra from one or more input channels, to a maximum of
ACT_QUALITY_OF_SERVICE_TBL. NBR_OF_FD_CHANNELS_PER_BLOCK channels.
When the triggering event requires more than NBR_OF_FD_CHANNELS_PER_BLOCK waveforms to
be reported, additional blocks are provided, each containing NBR_OF_FD_CHANNELS_PER_BLOCK
waveforms until the number of channels is exhausted. The actual number of valid channels in a block is
indicated by the block header NBR_CHANNELS element.
When, in addition, the triggering event requires more than NBR_OF_FD_SPECTRA_PER_BLOCK
spectra to be recorded contiguously, then additional data blocks (or groups of blocks) will be created until
all requested samples are reported.
Global Default Table Property Overrides: Role=DATA, Accessibility=READONLY
Table 158 Type Definitions
TYPE FD_PERIODIC_BLOCK_HEADER_RCD = PACKED RECORD
NBR_SPECTRAL_COMPONENTS
: UINT16;
NBR_CHANNELS
: UINT16;
START_BLOCK_TIME_STAMP
: HTIME_DATE;
END_BLOCK_TIME_STAMP
: HTIME_DATE;
BLOCK_CHANNEL_OFFSET
: UINT16;
SPECTRA_SEGMENT_NBR
: UINT16;
EVENT_SAMPLE_OFFSET
: INT32;
SAMPLING_RATE
: NI_FMAT2;
END;
TYPE FD_PERIODIC_BLOCK_DATA_RCD = PACKED RECORD
BLOCK_HEADER : FD_PERIODIC_BLOCK_HEADER_RCD;
SPECTRA_DATA
: ARRAY[
ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_FD_SPECTRA_PER_BLOCK]
FD_ASYNC_TBL.FD_CHANNELS_RCD;

OF

END;
TYPE SPECTRA_RCD = PACKED RECORD
LIST_STATUS : WAVEFORM_LIST_STATUS_RCD;
BLOCK_DATA : ARRAY [ACT_QUALITY_OF_SERVICE_TBL.NBR_OF_FD_BLOCKS] OF
FD_PERIODIC_BLOCK_DATA_RCD;
END;
TABLE 158 FREQUENCY_DOMAIN_TBL = SPECTRA_RCD;

Decade 15: Quality-of-service / Table 158 Periodic Frequency-Domain Spectrum Table

367

ANSI C12.19-2008

Tables

Table 158 Element Descriptions


Value

Identifier

FD_PERIODIC_BLOCK_HEADER_RCD

This element contains the block descriptor, and


status information.

NBR_SPECTRAL_COMPONENTS

Number of spectra reported in this block. This


value includes all spectral components including
the DC (bias) value, if any.

NBR_CHANNELS

Number of channels in this block. This value


may be less than the total number of channels,
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_FD_CHANNELS_PER_BLOCK, as a
block may be partially filled with channel values
and the actual number of channels may vary
from quality event to quality event recorded.

START_BLOCK_TIME_STAMP

Time stamp of the first sample used in this


transform. All blocks making up one spectrum
report the same value.

END_BLOCK_TIME_STAMP

Time stamp of the last sample used in this


transform. All blocks making up one spectrum
shall report the same value

BLOCK_CHANNEL_OFFSET

Channel number associated with the first


channel in this block. This value may range
from
zero
(0)
to
ACT_QUALITY_OF_SERVICE_TBL.
NBR_OF_FD_CHANNELS-1,
as
NBR_OF_FD_CHANNELS may be greater than
NBR_OF_FD_CHANNELS_PER_BLOCK.

SPECTRA_SEGMENT_NBR

Value ranging from N-1 to zero (0), where N is


the total number of segments needed to contain
all fragments from all of the channels bound to
one report. This value aims to assist the
application to discover how many blocks of data
are needed to recover all segments that make
up the spectral components.

EVENT_SAMPLE_OFFSET

Offset in samples to the first sample used in the


integration of this frequency spectrum. This
value shall be identical in all blocks segments
that are associated with the same event.

SAMPLING_RATE

Sampling rate in hertz (Hz) used to collect this


frequency spectrum across all channels.

FD_PERIODIC_BLOCK_DATA_RCD
BLOCK_HEADER

368

Definition

A single spectral component value.


See FD_PERIODIC_BLOCK_HEADER_RCD.

Decade 15: Quality-of-service / Table 158 Periodic Frequency-Domain Spectrum Table

Tables

ANSI C12.19-2008

SPECTRA_DATA

SPECTRA_RCD
LIST_STATUS
BLOCK_DATA

Array
of
FD_ASYNC_TBL.
FD_CHANNELS_RCD. Each entry contains
one spectral component from each available
channel. The first element at index zero (0) is
the DC (bias) value, the second element at
index one (1) is the fundamental frequency, and
successive
spectral
components
follow
sequentially.
Waveform-transform capture area for frequencydomain spectra that are triggered periodically.
See WAVEFORM_LIST_STATUS_RCD.
An
array
FD_PERIODIC_BLOCK_DATA_RCD.

Decade 15: Quality-of-service / Table 158 Periodic Frequency-Domain Spectrum Table

of

369

ANSI C12.19-2008

Tables

9.17 Decade 16: One-way Devices


Decade 16 Name
ONEWAY_DEVICES_DEC
The tables in this decade provide information related to One-way End Device operation.
9.17.1 Table 160 Dimension One-way
Table 160 Data Description
DIM_ONE_WAY_TBL (Table 160) defines the maximum capabilities for One-way control for the End
Device.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY
Table 160 Type Definitions
TYPE WAKE_UP_FUNC_FLAG_BFLD = BIT FIELD OF UINT16
ALWAYS_AWAKE_FLAG
: BOOL(0);
PERIODIC_SELF_WAKE_FLAG
: BOOL(1);
EXTERNAL_WAKE_FLAG
: BOOL(2);
RF_TRANSM_WAKE_FLAG
: BOOL(3);
IR_TRANSM_WAKE_FLAG
: BOOL(4);
PL_TRANSM_WAKE_FLAG
: BOOL(5);
POT_WAKE_FLAG
: BOOL(6);
LAN_WAN_WAKE_FLAG
: BOOL(7);
FILLER
: FILL(8..15);
END;
TYPE REGISTER_READ_FUNC_FLAG_BFLD = BIT FIELD OF UINT8
REG_READ_IMMEDIATE_WAKE_FLAG
: BOOL(0);
REG_READ_DELAY_TO_TIME_FLAG
: BOOL(1);
REG_READ_EXTERNAL_STIME_FLAG
: BOOL(2);
FILLER
: FILL(3..7);
END;
TYPE DATA_TRANSMIT_FUNC_BFLD = BIT FIELD OF UINT8
DATA_XMIT_IMMEDIATE_READ
: BOOL(0);
DATA_XMIT_DELAY_TO_TIME_FLAG
: BOOL(1);
FILLER
: FILL(2..7);
END;
TYPE COMMODITY_OUTAGE_DUTY_RCD = PACKED RECORD
COMMODITY_OUTAGE_DUTY_NUM
: UINT16;
RESTORATION_CALL_ATTEMPTS
: UINT8;
RESTORATION_CALL_WAIT
: UINT8;
END;
TYPE COMMODITY_ZERO_USAGE_RCD = PACKED RECORD
COMMODITY_ZERO_USAGE
: UINT16;
COMMODITY_ZERO_USAGE_TRIGGER
: UINT16;
COMMODITY_NON_RETURN_ZERO_TRIGGER : UINT16;
END;

370

Decade 16: One-way Devices / Table 160 Dimension One-way

Tables

ANSI C12.19-2008

TYPE ONE_WAY_RCD = PACKED RECORD


WAKE_UP_FUNC_FLAGS
REGISTER_READ_FUNC_FLAGS
DATA_TRANSMIT_FUNC_FLAGS
WAKE_CODE_LEN
COMMODITY_OUTAGE_DUTY
COMMODITY_ZERO_USAGE
NBR_COMMANDS
END;

: WAKE_UP_FUNC_FLAG_BFLD;
: REGISTER_READ_FUNC_FLAG_BFLD;
: DATA_TRANSMIT_FUNC_BFLD;
: UINT8;
: COMMODITY_OUTAGE_DUTY_RCD;
: COMMODITY_ZERO_USAGE_RCD;
: UINT8;

TABLE 160 DIM_ONE_WAY_TBL = ONE_WAY_RCD;


Table 160 Element Descriptions
Identifier

Value

Definition

FALSE

End Device is not capable of being always


awake.
End Device is capable of being always awake.

WAKE_UP_FUNC_FLAG_BFLD
ALWAYS_AWAKE_FLAG

TRUE
PERIODIC_SELF_WAKE_FLAG
FALSE
TRUE
EXTERNAL_WAKE_FLAG

FALSE
TRUE

RF_TRANSM_WAKE_FLAG

FALSE
TRUE

IR_TRANSM_WAKE_FLAG

FALSE
TRUE

PL_TRANSM_WAKE_FLAG

FALSE
TRUE

POT_WAKE_FLAG

FALSE
TRUE

LAN_WAN_WAKE_FLAG

FALSE

End Device is not capable of self-waking at


programmed period.
End Device is capable of self-waking at
programmed period.
End Device is not awakened by external
stimulus.
End Device is awakened by external stimulus.
End Device is not capable of being awakened
by specific RF transmission energy.
End Device is capable of being awakened by
specific RF transmission energy.
End Device is not capable of being awakened
by specific IR transmission energy.
End Device is capable of being awakened by
specific IR transmission energy.
End Device is not capable of being awakened
by specific PL transmission energy.
End Device is capable of being awakened by
specific PL transmission energy.
End Device is not capable of being awakened
by Plain Old Telephone modem energy.
End Device is capable of being wakened by
Plain Old Telephone modem energy.
End Device is not capable of being awakened
by specific LAN/WAN energy.

Decade 16: One-way Devices / Table 160 Dimension One-way

371

ANSI C12.19-2008

Tables
TRUE

FILLER

End Device is capable of being awakened by


specific LAN/WAN energy.
Reserved.

REGISTER_READ_FUNC_FLAG_BFLD
REG_READ_IMMEDIATE_WAKE_FLAG
FALSE
TRUE
REG_READ_DELAY_AFTER_WAKE
FALSE
TRUE
REG_READ_EXTERNAL_STIME_FLAG
FALSE
TRUE
FILLER

End Device is not capable of reading register


immediately after wake.
End Device is capable of reading register
immediately after wake.
End Device is not capable of reading register
with a time delay after wake.
End Device is capable of reading register with a
time delay after wake.
End Device is not capable of reading register
after external stimulus.
End Device is capable of reading register after
external stimulus.
Reserved.

DATA_TRANSMIT_FUNC_BFLD
DATA_XMIT_IMMEDIATE_READ
FALSE
TRUE
DATA_XMIT_DELAY_AFTER_READ_FLAG
FALSE
TRUE
FILLER

End Device is not capable of transmitting data


immediately after register read.
End Device is capable of transmitting data
immediately after register read.
End Device is not capable of transmitting data
after a chosen time delay after register read.
End Device is capable of transmitting data after
a chosen time delay after register read.
Reserved.

COMMODITY_OUTAGE_DUTY_RCD
COMMODITY_OUTAGE_DUTY_NUM
0..65535

RESTORATION_CALL_NUM

372

Maximum number of power outage events that


can be counted and timed by the one-way End
Device.

0..255

Maximum number of outage call tries the End


Device shall perform.

RESTORATION_CALL_WAIT 0..255

Maximum time in seconds after outage is


restored before outage message is transmitted.

Decade 16: One-way Devices / Table 160 Dimension One-way

Tables

ANSI C12.19-2008

COMMODITY_ZERO_USAGE_RCD
COMMODITY_ZERO_USAGE 0..65535

COMMODITY_ZERO_USAGE_TRIGGER
0..65535

Minimum amount of time in seconds that a


commodity, not being utilized, before it can be
treated as an off condition.
Maximum period of time, in minutes, of zero
commodity usage measured by the End Device
which will trigger an alarm call; e.g., water
usage stopped for 480 minutes.

COMMODITY_NON_RETURN_ZERO_TRIGGER
0..65535
Maximum period of time, in minutes, of
non-return to zero usage that constitutes a
trigger for a warning call to client for potential
water or other commodity supply breach. A zero
usage event is defined by a zero commodity
usage of the client. It is a normal operation to
have numerous small intervals of zero usage of
commodities such as water. A non-return to
zero usage event could describe a breach of a
load side line of metered commodity which
would not allow the metering of the commodity
to recognize a zero usage event.
ONE_WAY_RCD
WAKE_UP_FUNC_FLAGS

See WAKE_UP_FUNC_FLAG_BFLD.

REGISTER_READ_FUNC_FLAGS

See REGISTER_READ_FUNC_FLAG_BFLD.

DATA_TRANSMIT_FUNC_FLAGS

See DATA_TRANSMIT_FUNC_BFLD.

WAKE_CODE_LEN

Maximum number of UINT8s which make up


End Device wake code.

0..255

COMMODITY_OUTAGE_DUTY

See COMMODITY_OUTAGE_DUTY_RCD.

COMMODITY_ZERO_USAGE

See COMMODITY_ZERO_USAGE_RCD.

NBR_COMMANDS

Maximum number of commands in One-way


Commands/Responses/Extended User-Defined
Tables (Table 164).

Decade 16: One-way Devices / Table 160 Dimension One-way

373

ANSI C12.19-2008

Tables

9.17.2 Table 161 actual One-way table


Table 161 Data Description
ACT_ONE_WAY_TBL (Table 161) defines the actual settings for One-way control for the End Device.
Global Default Table Property Overrides: Role=ACTUAL
Table 161 Type Definitions
TABLE 161 ACT_ONE_WAY_TBL = ONE_WAY_RCD;
Table 161 Element Descriptions
Identifier

Value

WAKE_UP_FUNC_FLAG_BFLD
ALWAYS_AWAKE_FLAG

Redefines:
DIM_ONE_WAY_TBL.
WAKE_UP_FUNC_FLAG_BFLD.
FALSE
TRUE

PERIODIC_SELF_WAKE_FLAG
FALSE
TRUE
EXTERNAL_WAKE_FLAG

FALSE
TRUE

RF_TRANSM_WAKE_FLAG

FALSE
TRUE

IR_TRANSM_WAKE_FLAG

FALSE
TRUE

PL_TRANSM_WAKE_FLAG

FALSE
TRUE

POT_WAKE_FLAG

FALSE
TRUE

LAN_WAN_WAKE_FLAG

374

Definition

FALSE

End Device is not always awake.


End Device is always awake.
End Device is not self-waking at programmed
period.
End Device is self-waking at programmed
period.
End Device is not awakened by external
stimulus.
End Device is awakened by external stimulus.
End Device is not awakened by specific RF
transmission energy.
End Device is awakened by specific RF
transmission energy.
End Device is not awakened by specific IR
transmission energy.
End Device is awakened by specific IR
transmission energy.
End Device is not awakened by specific PL
transmission energy.
End Device is awakened by specific PL
transmission energy.
End Device is not awakened by Plain Old
Telephone modem energy.
End Device is awakened by Plain Old
Telephone modem energy.
End Device is not awakened by specific
LAN/WAN energy.

Decade 16: One-way Devices / Table 161 actual One-way table

Tables

ANSI C12.19-2008

TRUE
FILLER

Reserved.

REGISTER_READ_FUNC_FLAG_BFLD
REG_READ_IMMEDIATE_WAKE_FLAG
FALSE
TRUE
REG_READ_DELAY_AFTER_WAKE_FLAG
FALSE
TRUE
REG_READ_EXTERNAL_STIME_FLAG
FALSE
TRUE
FILLER

Redefines:
DIM_ONE_WAY_TBL.
REGISTER_READ_FUNC_FLAG_BFLD.
End Device does not read registers immediately
after wake.
End Device reads registers immediately after
wake.
End Device does not read registers with a time
delay after wake.
End Device reads registers with a time delay
after wake.
End Device does not read registers after an
external stimulus.
End Device reads registers after an external
stimulus.
Reserved.

DATA_TRANSMIT_FUNC_BFLD

Redefines:
DIM_ONE_WAY_TBL.
DATA_TRANSMIT_FUNC_BFLD.

DATA_XMIT_IMMEDIATE_READ
FALSE
TRUE
DATA_XMIT_DELAY_AFTER_READ_FLAG
FALSE
TRUE
COMMODITY_OUTAGE_DUTY_RCD

End Device does not transmit data immediately


after registers were read.
End Device transmits data immediately after
registers were read.
End Device does not transmit data after a
chosen time delay and after the register were
read.
End Device transmits the data after a chosen
time delay and after the registers were read.
Redefines:
DIM_ONE_WAY_TBL.
COMMODITY_OUTAGE_DUTY_RCD.

COMMODITY_OUTAGE_DUTY_NUM
0..65535

RESTORATION_CALL_NUM

End Device is awakened by specific LAN/WAN


energy.

0..255

Actual number of power outage events that can


be counted and timed by the one-way End
Device.
Actual number of outage call tries the End
Device shall perform.

Decade 16: One-way Devices / Table 161 actual One-way table

375

ANSI C12.19-2008

Tables

RESTORATION_CALL_WAIT 0..255
COMMODITY_ZERO_USAGE_RCD

Actual time in seconds after outage is restored


before outage message is transmitted.
Redefines:
DIM_ONE_WAY_TBL.
COMMODITY_ZERO_USAGE_RCD.

COMMODITY_ZERO_USAGE 0..65535
COMMODITY_ZERO_USAGE_TRIGGER
0..65535

Actual period of time in seconds after which the


commodity will be defined to be off.
Actual period of time, in minutes, of zero
commodity usage measured by the End Device
which will trigger an alarm call; water usage
stopped for 480 minutes.

COMMODITY_NON_RETURN_ZERO_TRIGGER
0..65535
Actual period of time, in minutes, of non-return
to zero usage that constitutes a trigger for a
warning call to client for potential water or other
commodity supply breach. A zero usage event
is defined by a zero commodity usage of the
client. It is a normal
operation to have
numerous small intervals of zero usage of
commodities such as water. A non-return to
zero usage event could describe a breach of a
load side line of metered commodity which
would not allow the metering of the commodity
to recognize a zero usage event.
ONE_WAY_RCD

376

WAKE_UP_FUNC_FLAGS

Redefines:
DIM_ONE_WAY_TBL.
ONE_WAY_RCD.
See WAKE_UP_FUNC_FLAG_BFLD.

REGISTER_READ_FUNC_FLAGS

See REGISTER_READ_FUNC_FLAG_BFLD.

DATA_TRANSMIT_FUNC_FLAGS

See DATA_TRANSMIT_FUNC_BFLD.

WAKE_CODE_LEN

Actual number of UINT8s which make up End


Device wake code.

0..255

COMMODITY_OUTAGE_DUTY

See COMMODITY_OUTAGE_DUTY_RCD.

COMMODITY_ZERO_USAGE

See COMMODITY_ZERO_USAGE_RCD.

NBR_COMMANDS

Actual number of commands in


One-way
Commands/Responses/Extended User-Defined
Tables (Table 164).

Decade 16: One-way Devices / Table 161 actual One-way table

Tables

ANSI C12.19-2008

9.17.3 Table 162 One-way Control Table


Table 162 Data Description
ONE_WAY_CONTROL_TBL (Table 162) contains grouped control choices for managing waking,
register reading, and transmitting data.
Global Default Table Property Overrides: Role=CONTROL
Table 162 Type Definitions
TYPE WAKE_DATA_RCD = PACKED RECORD
FREQ
: NI_FMAT2;
MODULATION
: UINT8;
WAKE_CODE
: BINARY(ACT_ONE_WAY_TBL.WAKE_CODE_LEN);
END;
TYPE ONE_WAY_WAKE_RCD = PACKED RECORD
IF ACT_ONE_WAY_TBL.ALWAYS_AWAKE_FLAG THEN
REG_READ_TIMING
: RDATE;
XMIT_DATA_TIMING
: RDATE;
ELSE
IF ACT_ONE_WAY_TBL.PERIODIC_SELF_WAKE_FLAG THEN
SELF_WAKE_PERIOD
: UINT32;
END;
IF ACT_ONE_WAY_TBL. EXTERNAL_WAKE_FLAG THEN
IF ACT_ONE_WAY_TBL.RF_TRANSM_WAKE_FLAG THEN
RF_WAKE
: WAKE_DATA_RCD;
END;
IF ACT_ONE_WAY_TBL.IR_TRANSM_WAKE_FLAG THEN
IR_WAKE
: WAKE_DATA_RCD;
END;
IF ACT_ONE_WAY_TBL.PL_TRANSM_WAKE_FLAG THEN
PL_WAKE
: WAKE_DATA_RCD;
END;
IF ACT_ONE_WAY_TBL.POT_WAKE_FLAG THEN
POT_WAKE
: BINARY(ACT_ONE_WAY_TBL.WAKE_CODE_LEN);
END;
IF ACT_ONE_WAY_TBL.LAN_WAN_WAKE_FLAG THEN
LAN_WAN_WAKE
:
BINARY(ACT_ONE_WAY_TBL.WAKE_CODE_LEN);
END;
END;
END;
INTENDED_REG_READ_XMIT_TIMING : UINT32;
END;
TYPE ED_SECURITY_MODE_BFLD = BIT FIELD OF UINT8
SECURITY_MODE
: UINT(0..2);
FILLER
: FILL (3..7);
END;

Decade 16: One-way Devices / Table 162 One-way Control Table

377

ANSI C12.19-2008

Tables

TYPE ED_CONTROL_RCD = PACKED RECORD


WAKE_DATA
: ONE_WAY_WAKE_RCD;
SECURITY_MODE
: ED_SECURITY_MODE_BFLD;
END;
TABLE 162 ONE_WAY_CONTROL_TBL = ED_CONTROL_RCD;
Table 162 Element Descriptions
Identifier
WAKE_DATA_RCD

Value

FREQ

Definition
The transmit frequency of awakening device in
hertz.

MODULATION
0
1
2
3
4..255
WAKE_CODE

Types of modulation where:


No modulation
Frequency modulation
AM modulation
Spread spectrum modulation
Reserved.
Wake code.

ONE_WAY_WAKE_RCD
REG_READ_TIMING

End Device performs a register read periodically


defined by RDATE value.
End Device transmits data periodically defined
by RDATE.

XMIT_DATA_TIMING

INTENDED_REG_READ_XMIT_TIMING
0..4294967295 End Device data delay till-transmit in seconds
after register reads.
SELF_WAKE_PERIOD
0..4294967295 The period in seconds between awakenings.
End Device wakes via internal means
periodically from the beginning of awakening to
next beginning of awakening in seconds.
RF_WAKE
See WAKE_DATA_RCD.
IR_WAKE
See WAKE_DATA_RCD.
PL_WAKE
See WAKE_DATA_RCD.
POT_WAKE
Wake code.
LAN_WAN_WAKE
Wake code.
ED_SECURITY_MODE_BFLD
SECURITY_MODE

Simple security mode where:


0
1
2
3
4..7

378

Security Mode turned off


Security Mode is Low
Security Mode is Normal
Security Mode is High
Reserved.

Decade 16: One-way Devices / Table 162 One-way Control Table

Tables

ANSI C12.19-2008
Security in the context of one-way devices is
interpreted with respect to:
A. The way the device data transmission
was initiated. Whether inappropriate
access of facility may be the cause of
the transmission of the data or such
indications may be contained in the data
stream.
B. Whether the transmitted data is
delivered through a secured medium or
in a shared medium, with respect to who
can see the emitted data.
C. Whether recipients of the data can or
cannot interpret or decipher that content
of the data.
Low: No special provisions were made or
assumed for the above.
Normal: Normal (reasonable) provisions were
made or assumed for the above.
High: Strict provisions were implemented or
assumed to have been implemented for the
above. An example may be: End Device in high
security mode can sense various tampering
techniques and can initiate an early
communication with normal data with the
emergency reporting of tampering. The data
transmission is encrypted.
The actual interpretation of the above is not
specified in this Standard and is left to the user
for definition. It is not a configuration or control
parameter or a designed capability indication.
FILLER

ED_CONTROL_RCD
WAKE_DATA
SECURITY_MODE

Reserved.
See ONE_WAY_WAKE_RCD.
See ED_SECURITY_MODE_RCD.

Decade 16: One-way Devices / Table 162 One-way Control Table

379

ANSI C12.19-2008

Tables

9.17.4 Table 163 One-way Data Table


Table 163 Data Description
ONE_WAY_DATA_TBL (Table 163) contains data related to register reading and actual transmission of
the data such that register data may be stamped more accurately at upstream communication nodes with
the knowledge of the time of reading and actual data transmission. Also, this table contains the status
data of this meter.
Global Default Table Property Overrides: Role=CONTROL
Table 163 Type Definitions
TYPE SIMPLE_END_DEVICE_MODE_BFLD = BIT FIELD OF UINT16
ONEWAY_COM
: BOOL(0);
LOCAL_NETWORK_COM
: BOOL(1);
RELAY_MODE
: BOOL(2);
SECURITY_MODE
: UINT(3..5);
FILLER
: UINT(6..15);
END;
TYPE COMMODITY_OUTAGE_STATUS_BFLD = BIT FIELD OF UINT8
NBR_POWER_OUTAGE_EVENTS
: UINT(0..2);
FILLER
: FILL(3..6);
POWER_IS_ON_FLAG
: BOOL (7);
END;
TYPE COMMODITY_OUTAGE_DUTY_BFLD = BIT FIELD OF UINT32
OUTAGE_DURATION
: UINT(0..15);
POWERUP_DURATION
: UINT(16..31);
END;
TYPE SIMPLE_END_DEVICE_STATUS_RCD = PACKED RECORD
COMMODITY_OUTAGE_STATUS
: COMMODITY_OUTAGE_STATUS_BFLD;
COMMODITY_OUTAGE_DUTY : ARRAY [ACT_ONE_WAY_TBL.
COMMODITY_OUTAGE_DUTY_NUM] OF
COMMODITY_OUTAGE_DUTY_BFLD;
COMMODITY_RESTORATION
: UINT16;
COMMODITY_NON_RETURN_TO_ZERO_DURATION : UINT16;
RTC_TIME
: LTIME_DATE;
RTC_DRIFT
: INT16;
SPARE
: UINT8;
END;
TYPE DEVICE_STATUS_RCD = PACKED RECORD
ACTUAL_REG_READ_XMIT_TIMING : UINT32;
SIMPLE_END_DEVICE_MODE
: SIMPLE_END_DEVICE_MODE_BFLD;
SIMPLE_END_DEVICE_STATUS
: SIMPLE_END_DEVICE_STATUS_RCD;
END;
TABLE 163 SIMPLE_DEVICE_STATUS_DATA_TIMING_TBL = DEVICE_STATUS_RCD;
Table 163 Element Descriptions

380

Decade 16: One-way Devices / Table 163 One-way Data Table

Tables

ANSI C12.19-2008

Identifier

Value

Definition

ONEWAY_COM

FALSE
TRUE

End Device communicates Two-way.


End Device communicates One-way.

LOCAL_NETWORK_COM

FALSE

End Device communicates via handheld reader


or other point to point com node.
End Device communicates via network or
LAN/WAN.

SIMPLE_END_DEVICE_MODE_BFLD

TRUE
RELAY_MODE

FALSE
TRUE

SECURITY_MODE

See
SIMPLE_DEVICE_STATUS_DATA_TIMING_T
BL
.
ED_SECURITY_MODE_BFLD.
SECURITY_MODE_ENUM.
Reserved.

FILLER
COMMODITY_OUTAGE_STATUS_BFLD
NBR_POWER_OUTAGE_EVENTS 0..7
POWER_IS_ON_FLAG

End Device does not provide relay com function.


End Device provides relay com function.

FALSE
TRUE

COMMODITY_OUTAGE_DUTY_BFLD
OUTAGE_DURATION
0..65535
SINCE_OUTAGE_DURATION 0..65535

Number of power outage events during that


day; reset at 00:00:00 local time.
Power outage is currently underway
Power is currently on.
The outage duration in seconds.
The time in seconds since outage.

SIMPLE_END_DEVICE_STATUS_RCD
COMMODITY_OUTAGE_STATUS

See COMMODITY_OUTAGE_STATUS_BFLD.

COMMODITY_OUTAGE_DUTY

An array of
COMMODITY_OUTAGE_DUTY_BFLD, each
containing the commodity outage duration and
the length of time it was on following that
outage.

COMMODITY_RESTORATION 0..65535

The time
restoration.

in

seconds

since

commodity

COMMODITY_NON_RETURN_TO_ZERO_DURATION
0..65535
Minutes since last zero consumption event
measured by End Device; End Device will report
if commodity flow has not stopped in
ACT_ONE_WAY_TBL.
COMMODITY_NON_RETURN_ZERO_TRIGGE
R. A zero consumption event is defined when
the
commodity
is
not
used
for
ACT_ONE_WAY_TBL.COMMODITY_ZERO_U
SAGE seconds.

Decade 16: One-way Devices / Table 163 One-way Data Table

381

ANSI C12.19-2008

Tables

RTC_TIME
RTC_DRIFT

The time when the reading was taken.


0..65535

DEVICE_STATUS_RCD
ACTUAL_REG_READ_XMIT_TIMING
0..429496295
SIMPLE_END_DEVICE_MODE

382

Number of seconds of drift since the last time


the clock was adjusted.

Time in seconds between reading register(s)


and transmitting of the data.
See SIMPLE_END_DEVICE_STATUS_RCD.

Decade 16: One-way Devices / Table 163 One-way Data Table

Tables

ANSI C12.19-2008

9.17.5 Table 164 One-way Commands/Responses/Extended User-defined Tables Table


Table 164 Data Description
ONE_WAY_COMMANDS_RESPONSES_EXTENDED_USER_DEFINED_TABLES_TBL (Table 164)
contains an array for relational positions of commands/responses/extended-user-defined tables.
Global Default Table Property Overrides: Role=CONTROL
Table 164 Type Definitions
TYPE ED_CMD_RESP_RESCMD_RESCMDRESP_EUDT_NUM_RCD = PACKED RECORD
COMMAND_NUMBER
: UINT16;
COMMANDRESPONSE_NUMBER
: UINT16;
CORRESPONDING_EUDT_FOR_COMMAND_NUMBER
: STD.TABLE_IDA_BFLD;
CORRESPONDING_EUDT_FOR_COMMANDRESPONSE_NUMBER:
STD.TABLE_IDA_BFLD;
RESERVE_COMMAND_NUMBER
: UINT16;
RESERVE_COMMANDRESPONSE_NUMBER
: UINT16;
CORRESPONDING_EUDT_FOR_RESCOMMAND_NUMBER : STD.TABLE_IDA_BFLD;
CORRESPONDING_EUDT_FOR_RESCOMMANDRESPONSE_NUMBER:
STD.TABLE_IDA_BFLD;
END;
TYPE COMMANDS_RCD = PACKED RECORD
COMMANDS : ARRAY [ACT_ONE_WAY_TBL.NBR_COMMANDS] OF
ED_CMD_RESP_RESCMD_RESCMDRESP_EUDT_NUM_RCD;
END;
TABLE 164 ONE_WAY_COMMANDS_RESPONSES_EXTENDED_USER_DEFINED_TABLES_TBL =
COMMANDS_RCD;
Table 164 Element Descriptions
Identifier

Value

Definition

ED_CMD_RESP_RESCMD_RESCMDRESP_EUDT_NUM_RCD
COMMAND_NUMBER
0..65535
Command number
COMMANDRESPONSE_NUMBER
0..65535

Response number that corresponds to a specific


command

CORRESPONDING_EUDT_FOR_COMMAND_NUMBER
TABLE_IDA_BFLD represents the table
number, table type, and two operational flags.
The flags are not utilized in this context.
CORRESPONDING_EUDT_FOR_COMMANDRESPONSE_NUMBER
TABLE_IDA_BFLD represents the table
number, table type, and two operational flags.
The flags are not utilized in this context.
RESERVE_COMMAND_NUMBER
Decade 16: One-way Devices / Table 164 One-way Commands/Responses/Extended User-defined
Tables Table

383

ANSI C12.19-2008

Tables
0..65535

Reserve command number.

RESERVE_COMMANDRESPONSE_NUMBER
0..65535
Reserve command response number that
corresponds to a specific reserve command
response
CORRESPONDING_EUDT_FOR_RESCOMMAND_NUMBER
TABLE_IDA_BFLD represents the table
number, table type, and two operational flags.
The flags are not utilized in this context.
CORRESPONDING_EUDT_FOR_RESCOMMANDRESPONSE_NUMBER
TABLE_IDA_BFLD represents the table
number, table type, and two operational flags.
The flags are not utilized in this context.
COMMANDS_RCD
COMMANDS
A collection of commands.

384Decade 16: One-way Devices / Table 164 One-way Commands/Responses/Extended User-defined Tables Table

ANSI C12.19-2008

ANNEX A: RESERVED CLASSES FOR METER EQUIPMENT MANUFACTURERS


IMPLEMENTING ANSI C12.19-1997 DEVICES
(Informative)
The MANUFACTURER (and related fields) codes (C12.19-1997) and DEVICE_CLASS codes (C12.192008) are encoded as 8 bit binary values as defined by the ASCII character set.
Reserved
Class
Name

Company Using ANSI C12.19-1997 (V1.0)


End Device

Reserved
Relative
Class
(Dot Decimal)

Reserved
Relative Class
(Hex)

ABB
AIL
AMCO
APTH
BMI

ABB
American Innovations, Ltd.
American Meter Company
Aptech Inc.
Badger Meter Inc.

.65.66.66.32
.65.73.76.32
.65.77.67.79
.65.80.84.72
.66.77.73.32

41
41
41
41
42

42
49
4D
50
4D

42
4C
43
54
49

20
20
4F
48
20

CMVG
DMTC
EE
EPRI
GE
ITD

Comverge Technologies Inc.


Datamatic, Inc.
Elster Electricity
Electric Power Research Institute
General Electric
International Teldata Corporation

.67.77.86.71
.68.77.84.67
.69.69.32.32
.69.80.82.73
.71.69.32.32
.73.84.68.32

43
44
45
45
47
49

4D
4D
45
50
45
54

56
54
20
52
20
44

47
43
20
49
20
20

ITRN
JEM
LGYR

Itron
Scientific Columbus Company
Landis+Gyr Inc.

.73.84.82.78
.74.69.77.32

49 54 52 4E
4A 45 4D 20

.76.71.89.82

4C 47 59 52

MM
MTC
ND

Master Meter
Metering Technology Corporation
NERTEC Design Inc.

.77.77.32.32
.77.84.67.32
.78.68.32.32

4D 4D 20 20
4D 54 43 20
4E 44 20 20

SCH
SENS
SPT&D

Schlumberger
Sensus Metering Systems
Siemens Power Transmission & Distribution,
Inc.
For new manufacturers who are not yet
included in this list.
WeXL

.83.67.72.32
.83.69.78.83
.83.80.84.68

53 43 48 20
53 45 4E 53
53 50 54 44

.84.69.77.80

54 45 4D 50

.87.69.88.76

57 45 58 4C

TEMP
WEXL

Manufacturers implementing this Standard and registrars shall not assign End Device classes from this
reserved list.
The presence of any of the above ID Codes is permitted only in C12.19-1997 V1.0 compliant
implementations.

385

ANSI C12.19-2008

History & Event Log Codes

ANNEX B: History & Event Log Codes


(Normative)

B.1 Codes
Code

Event

Argument

00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15

No Event
Primary Power Down
Primary Power Up
Time Changed (old time)
Time Changed (new time)
Time Changed (old time)
Time Changed (new time)
End Device Accessed for Read
End Device Accessed for Write
Procedure Invoked
Table Written To
End Device Programmed
Communication Terminated Normally
Communication Terminated Abnormally
Reset List Pointers
Update List Pointers

16
17
18
19
20
21
22
23
24
25
26
27

History Log Cleared


History Log Pointers Updated
Event Log Cleared
Event Log Pointers Updated
Demand Reset Occurred
Self-read Occurred
Daylight Savings Time On
Daylight Savings Time Off
Season Change
Rate Change
Special Schedule Activation
Tier Switch Change

28
29

Pending Table Activation


Pending Table Clear

30
31
32
33
34
35
36
37
38
39
40
41
42
43

Metering mode started


Metering mode stopped
Test mode started
Test mode stopped
Meter shop mode started
Meter shop mode stopped
End Device reprogrammed
Configuration error detected
Self check error detected
RAM failure detected
ROM failure detected
Nonvolatile memory failure detected
Clock error detected
Measurement error detected

None
None
None
None. Time tag, if used, equals old time.
None. Time tag, if used, equals new time.
Old time in STIME_DATE format.
New time in STIME_DATE format.
None
None
TABLE_IDC_BFLD
TABLE_IDA_BFLD
None
None
None
LIST(UINT8) {Reference procedure 4, 9.1.8.1.5}
LIST (UINT8) {Reference procedure 5,
9.1.8.1.6}
None
Value of Procedure Parameter (UINT16)
None
Value of Procedure Parameter (UINT16)
None
None
None
None
New Season Number (UINT8)
New Rate(UINT8)
New Special Schedule (UINT8)
New Current Tier(UINT8 followed by New
Demand Tier (UINT8)
Table number (TABLE_IDA_BFLD).
Table number (TABLE_IDA_BFLD). Table
removed from End Device prior to activation.
None
None
None
None
None
None
None
None
None
None
None
None
None
None

386

History & Event Log Codes


44
45
46
47
48
49

Low battery detected


Low loss potential detected
Demand overload detected
Tamper attempt detected
Reverse rotation detected
Control point changed by a command

50

Control point changed by the schedule

51

Control point changed by a condition

52

Control point changed for the prepayment

53
54
55
56
57
58

Added to remaining credit


Subtracted to remaining credit
Adjusted the remaining credit
End Device sealed
End Device unsealed
Procedure Invoked

59

Table Written To

60
61
62
63

End Device Programmed


End Device sealed
End Device unsealed
Procedure Invoked

64

Table Written To

65
66
67
68

End Device Programmed


End Device sealed
End Device unsealed
Procedure Invoked

69

Table Written To

70

End Device Programmed

71

End Device sealed

72

End Device unsealed

73

Read Secured Table

74

Read Secured Register

75

Read Secured Table

ANSI C12.19-2008
None
None
None
None
None
Control point id (UINT8),
New level (UINT8)
Control point id (UINT8),
New level (UINT8)
Control point id (UINT8),
New level (UINT8),
Condition index (UINT8)
Control point id (UINT8),
New level (UINT8)
Money (NI_FMAT1)
Money (NI_FMAT1)
Money (NI_FMAT1)
None
None
TABLE_IDC_BFLD,
NEW_VALUE
TABLE_IDA_BFLD,
NEW_VALUE
NEW_VALUE
NEW_VALUE
NEW_VALUE
EVENT_CHECK_SIG,
TABLE_IDC_BFLD
EVENT_CHECK_SIG,
TABLE_IDA_BFLD
EVENT_CHECK_SIG
EVENT_CHECK_SIG
EVENT_CHECK_SIG
EVENT_CHECK_SIG,
TABLE_IDC_BFLD,
NEW_VALUE
EVENT_CHECK_SIG,
TABLE_IDA_BFLD,
NEW_VALUE
EVENT_CHECK_SIG,
NEW_VALUE
EVENT_CHECK_SIG,
NEW_VALUE
EVENT_CHECK_SIG,
NEW_VALUE
EVENT_CHECK_SIG,
SECURED_REGISTER_SIG,
TABLE_IDA_BFLD,
READ_REQUESTED
EVENT_CHECK_SIG,
SECURED_REGISTER_SIG
READ_REQUESTED
EVENT_CHECK_SIG,
SECURED_REGISTER_SIG,
TABLE_IDA_BFLD,

387

ANSI C12.19-2008

76

Read Secured Register

History & Event Log Codes


READ_VALUE
EVENT_CHECK_SIG,
SECURED_REGISTER_SIG,
READ_VALUE

B.2 Logger Arguments Implementation Details


When present in HISTORY_LOG_DATA_TBL,
(Table 74) it represents the element
HISTORY_CODE
encoded
as
TABLE_IDB_BFLD.

Code

When present in EVENT_LOG_DATA_TBL,


(Table 76) it represents the element
EVENT_CODE
encoded
as
TABLE_IDB_BFLD.
Argument

When argument is related to an entry in the


HISTORY_LOG_DATA_TBL, it represents the
fixed-width element HISTORY_ARGUMENT
that
is
encoded
as
BINARY(ACT_LOG_TBL.HIST_DATA_LENGTH).
The actual interpretation of the BINARY data
element is derived distinctly for each of the
HISTORY_CODEs by looking for the specific
Code / Argument pairs of listings found in this
Annex.
When argument is related to an entry in the
EVENT_LOG_DATA_TBL, it represents the
fixed-width element EVENT_ARGUMENT that is
encoded
as
BINARY(ACT_LOG_TBL.EVENT_DATA_LENGTH).
The actual interpretation of the BINARY data
element is derived distinctly for each of the
EVENT_CODEs by looking for the specific
Code/ Argument pairs of listings found in this
Annex.
All
unused
trailing
octets
of
the
EVENT_ARGUMENT
or
HISTORY_ARGUMENT shall be set to 00H. This
ensures that the terminating NEW_VALUE and
READ_VALUE, that are encoded as ANSI
C12.18 PSEM write requests sequences, have a
clear termination (ANSI C12.18 PSEM requests
cannot begin with zero).

388

TABLE_IDA_BFLD

Bit
field
of
Table
number
and
Standard/Manufacturer and Extended Userdefined Table Flag.

TABLE_IDC_BFLD

Bit
field
of
Procedure
Standard/Manufacturer Flag.

number

and

History & Event Log Codes

ANSI C12.19-2008

EVENT_CHECK_SIG

This argument is a copy of the field


EVENT_CHECK_SIG found in the Signature
table (Table 78). This value was updated upon
creation of this event. The most recent
EVENT_CHECK_SIG in Table 78 shall be
identical to the most recent Arguments
EVENT_CHECK_SIG of the logger at all times.

NEW_VALUE

(The reason NEW_VALUE is not bold is that


NEW_VALUE is not based on C12.19 Syntax.)
Collection of all changes that occurred in one or
more metrological tables. These shall be
encoded as ANSI C12.18 PSEM write request
service sequence.
Shown below is an example encoding of
NEW_VALUE for Standard Tables 11 and 15.
Assume the following:
Table
ID

Element Name

Value

NBR_CONSTANT_ENTRIE
11
15

1
MULTIPLIER
OFFSET

0.0072
0.0

Using the above information, the NEW_VALUE


may have the following binary representation:
4FH 000BH 000005H 0001H 01H FFH
40H 000FH 0008H 0D0072BB0D0BBBBBH 38H
Where:
4FH
000BH
000005H
0001H
01H
FFH

is the first ANSI C12.18 PSEM partial


write with offset service request code
of the sequence with two requests.
is the table identifier.
is
octet
the
offset
to
NBR_CONSTANT_ENTRIES.
is the number of octets delivered.
is
the
value
of
NBR_CONSTANT_ENTRIES.
is the PSEM requests Table-data
checksum.

Then:
40H
000FH

is the second ANSI C12.18 PSEM


full write service request code in the
sequence.
is the table identifier.

389

ANSI C12.19-2008

History & Event Log Codes


0008H
is the number of octets delivered.
0D0072BBH
is the value of the MULTIPLIER =
0.0072 (encoded in BCD, i.e., this
assumes that Table 0 element
NI_FORMAT1 = 6).
0D0BBBBBH is the value of the OFFSET = 0.0
(also encoded in BCD).
is the PSEM requests Table-data
38 H
checksum.
In the above example, we also assumed that
ACT_SOURCES_LIM_TBL.NBR_CONSTANT
S_ENTRIES
=
1,
ACT_SOURCES_LIM_TBL.CONSTANTS_SEL
ECTOR
=
ELECTRIC_CONSTANTS,
ACT_SOURCES_LIM_TBL.SET1_PRESENT_F
LAG
=
FALSE
and
ACT_SOURCES_LIM_TBL.SET2_PRESENT_F
LAG = FALSE.
Trailing 00H may follow, as needed, to fill the
remainder of the HISTORY_ARGUMENT or
EVENT_ARGUMENT.

SECURED_REGISTER_SIG

This shall be used to record the signature of the


Table-data portion only of the transmitted ANSI
C12.18 PSEM responses of secured register
table(s) or elements from tables. The exclusion
of the PSEM request code, count and checksum
enables an End Device logger to cast any large
read request into a sequence of manageable
smaller read responses without compromising
the
interpretation
of
SECURED_REGISTER_SIG while maintaining
the ability to relate the logged values to the
values actually transmitted to the AMR system
by any underlying communication protocol.
The aggregation and digest processing shall be
performed in the same order as the ANSI
C12.19 PSEM read service requests sequence.
For digest algorithm selection details see
PROGRAM_STATE_TBL (Table 78). The
SECURED_REGISTER_SIG shall be encoded
for transport as BINARY(16).

READ_REQUESTED

Collection of all read requests that were


performed in one or more secured register
tables. These are encoded as ANSI C12.18
PSEM read request service sequence.
Shown below is an example encoding of a
READ_REQUESTED value for Standard Tables
11 and 15.

390

History & Event Log Codes

ANSI C12.19-2008

Assume the following:


Table
ID

Element Name

Value

NBR_CONSTANT_ENTRIE
11
15

1
MULTIPLIER
OFFSET

0.0072
0.0

Using
the
above
information,
the
READ_REQUESTED may have the following
binary representation:
3FH 000BH 000005H 0001H
30H 000FH
Where:
3FH
000BH
000005H
0001H

is the first ANSI C12.18 PSEM partial


read with offset service request code
of a sequence with two requests.
is the table identifier.
is
octet
the
offset
to
NBR_CONSTANT_ENTRIES.
is the number of octets read.

Then:
30H
000FH

is the second ANSI C12.18 PSEM


full read service request code in the
sequence.
is the table identifier.

In the above example, we made the same


assumptions that were applicable in the
example for NEW_VALUE.
Trailing 00H shall follow as needed to fill the
remainder of the HISTORY_ARGUMENT or
EVENT_ARGUMENT if there is no following
READ_VALUE.
READ_VALUE

Collection of all data delivered from one or more


secured register tables. These are sequenced in
the same order as the corresponding PSEM
read requests that triggered this event. The
encoding of READ_VALUE is identical to
NEW_VALUE.
The corresponding SECURED_REGISTER_SIG
is computed from the table data portions only.

391

ANSI C12.19-2008

History & Event Log Codes


Reusing the values in the example for
NEW_VALUE above, the logger would digest
the following Table data values
01H,
0D0072BBH and 0D0BBBBBH; to yield the
BINARY(16) secured register signature:
81D07F9F27978AD661D40945EFDA92D3H
In the above example, we also assumed that the
use of the MD5 algorithm.

B.3 Logger Codes Interpretation Details


Logger code 0 through 55 have straightforward interpretations. However, logger code 56 through 76 were
introduced to facilitate an implementation of a well defined logging and auditing system in environments
where program change management, End Device state tracking and data integrity audits are desired.
The code descriptions 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.

59

Table Written To

NEW_VALUE represents the collection of all


table changes that occurred as a result of
the
invocation
of
this
metrological
procedure.
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 TBL_PROC_NBR subelement is the table number.

60

End Device Programmed

NEW_VALUE represents the collection of all


table changes that occurred. No other tables
were affected.
Metrological tables modified or programmed
event.
NEW_VALUE represents the collection of all
changes that occurred in more than one
metrological table.

392

History & Event Log Codes

Code
61

Event
End Device Sealed

ANSI C12.19-2008

Description
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.

62

End Device Unsealed

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.
A seal removal event and a likely need for reverification (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
signature for this event entry.

64

Table Written To

TABLE_IDC_BFLD identifies the metrological


procedure that triggered this event.
A single metrological table modification event.
EVENT_CHECK_SIG is the event
signature for this event entry.

65

66

End Device Programmed

End Device Sealed

check

check

TABLE_IDA_BFLD identifies the metrological


table change that triggered this event.
One or more metrological tables were modified
or programmed event.
EVENT_CHECK_SIG is the event check
signature for this event entry.
A seal-verification assertion event (see code
56).
EVENT_CHECK_SIG is the event
signature for this event entry.

check

393

ANSI C12.19-2008

Code
67

Event
End Device Unsealed

History & Event Log Codes

Description
A seal removal and request for re-verification
event (see code 57).
EVENT_CHECK_SIG is the event
signature for this event entry.

68

Procedure Invoked

check

A single metrological procedure invocation


event.
EVENT_CHECK_SIG is the event
signature for this event entry.

check

TABLE_IDC_BFLD identifies the metrological


procedure that triggered this event.

69

Table Written To

NEW_VALUE represents the collection of all


changes that occurred as a result of the
invocation of the metrological procedure.
A single metrological Table modification event.
EVENT_CHECK_SIG is the event
signature for this event entry.

check

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.

70

End Device Programmed

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.
Indicates one or more metrological tables were
modified or programmed.
EVENT_CHECK_SIG is the event
signature for this event entry.

check

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.

394

History & Event Log Codes

Code
71

Event
End Device Sealed

ANSI C12.19-2008

Description
A seal-verification assertion event (see code
56).
EVENT_CHECK_SIG is the event
signature for this event entry.

check

NEW_VALUE represents the content of all


metrological tables that were configured
prior to sealing the End Device.

72

End Device Unsealed

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.
A seal removal and request for re-verification
event (see code 57).
EVENT_CHECK_SIG is the event
signature for this event entry.

check

NEW_VALUE is the collection of all changes


that occurred to cause the seal removal reverification 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
signature for this event entry.

check

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.

395

ANSI C12.19-2008

Code
74

Event
Read Secured Register

History & Event Log Codes

Description
Event code generated upon reading one or
more secured register tables.
EVENT_CHECK_SIG is the event
signature for this event entry.

check

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.

75

Read Secured Table

READ_REQUESTED is the collection of all read


requests whose responses were processed
into the SECURED_REGISTER_SIG.
Event code generated upon reading of a single
secured register table.
EVENT_CHECK_SIG is the event
signature for this event entry.

check

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.

76

Read Secured Register

READ_VALUE is the collection of all read


responses that were processed into the
SECURED_REGISTER_SIG.
Event code generated upon reading one or
more secured register tables.
EVENT_CHECK_SIG is the event
signature for this event entry.

check

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.

396

Default Sets For Decade Tables

ANSI C12.19-2008

ANNEX C: Default Sets For Decade Tables


(Normative)
The following values are assigned to the FLC+1 Table values based upon the value of the TABLE 00
Element DEFAULT_SET_USED.
Final Element
1

DEFAULT_SET_USED
2
3

Table 11 - Actual Sources Limiting Table


PF_EXCLUDE_FLAG
RESET_EXCLUDE_FLAG
BLOCK_DEMAND_FLAG
SLIDING_DEMAND_FLAG
THERMAL_DEMAND_FLAG
SET1_PRESENT_FLAG
SET2_PRESENT_FLAG
CONVERSION_ALG_FLAG
NBR_UOM_ENTRIES
NBR_DEMAND_CTRL_ENTRIES
DATA_CTRL_LENGTH
NBR_DATA_CTRL_ENTRIES
NBR_CONSTANTS_ENTRIES
CONSTANTS_SELECTOR
NBR_SOURCES

0
0
0
0
0
0
0
1
0
0
1
1
1
2
1

0
1
1
0
0
0
0
1
0
1
1
2
1
2
2

1
1
1
0
0
0
0
1
0
3
1
2
1
2
2

0
0
1
0
0
0
0
1
0
1
1
2
1
2
2

Table 21 - Actual Register Limiting Table


SEASON_INFO_FIELD_FLAG
DATE_TIME_FIELD_FLAG
DEMAND_RESET_CTR_FLAG
DEMAND_RESET_LOCK_FLAG
CUM_DEMAND_FLAG
CONT_CUM_DEMAND_FLAG
TIME_REMAINING_FLAG
SELF_READ_INHIBIT_OVERFLOW_FLAG
SELF_READ_SEQ_NBR_FLAG
DAILY_SELF_READ_FLAG
WEEKLY_SELF_READ_FLAG
SELF_READ_DEMAND_RESET
NBR_SELF_READS
NBR_SUMMATIONS
NBR_DEMANDS
NBR_COIN_VALUES
NBR_OCCUR
NBR_TIERS
NBR_PRESENT_DEMANDS
NBR_PRESENT_VALUES

0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
1

0
0
1
1
0
0
0
0
0
0
0
0
0
1
1
0
1
0
1
1

0
0
1
1
0
0
0
1
1
0
0
1
1
1
1
0
1
3
1
1

0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
1

397

ANSI C12.19-2008

Default Sets For Decade Tables

Final Element
1

DEFAULT_SET_USED
2
3

Table 31 - Actual Display Limiting Table


OFF_TIME_FLAG
HOLD_TIME_FLAG
NBR_DISP_SOURCES
WIDTH_DISP_SOURCES
NBR_PRI_DISP_LIST_ITEMS
NBR_PRI_DISP_LISTS
NBR_SEC_DISP_LIST_ITEMS
NBR_SEC_DISP_LISTS

0
0
3
1
9
3
3
1

0
0
4
1
12
3
3
1

0
0
40
1
60
3
3
1

0
0
0
0
0
0
0
1

Table 41 - Actual Security Limiting Table


NBR_PASSWORDS
PASSWORD_LEN
NBR_KEYS
KEY_LEN
NBR_PERM_USED

1
20
1
4
1

1
20
1
4
1

1
20
1
4
1

1
20
1
4
1

Table 51 - Actual Time and TOU Limiting Table


TOU_SELF_READ_FLAG
SEASON_SELF_READ_FLAG
SEASON_DEMAND_RESET_FLAG
SEASON_CHNG_ARMED_FLAG
SORT_DATES_FLAG
ANCHOR_DATE_FLAG
CAP_DST_AUTO_FLAG
SEPARATE_WEEKDAYS_FLAG
SEPARATE_SUM_DEMANDS_FLAG
SORT_TIER_SWITCHES_FLAG
CAP_TM_ZN_OFFSET_FLAG
NBR_SEASONS
NBR_SPECIAL_SCHED
NBR_NON_RECURR_DATES
NBR_RECURR_DATES
NBR_TIER_SWITCHES
CALENDAR_TBL_SIZE

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

1
1
0
0
1
0
0
0
0
1
0
2
1
10
10
9
131

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

398

Default Sets For Decade Tables

ANSI C12.19-2008

Final Element
1
Table 61 - Actual Load Profile Limiting Table
LP_SET1_INHIBIT_OVF_FLAG
LP_SET2_INHIBIT_OVF_FLAG
LP_SET3_INHIBIT_OVF_FLAG
LP_SET4_INHIBIT_OVF_FLAG
BLK_END_READ_FLAG
BLK_END_PULSE_FLAG
SCALAR_DIVISOR_FLAG_SET1
SCALAR_DIVISOR_FLAG_SET2
SCALAR_DIVISOR_FLAG_SET3
SCALAR_DIVISOR_FLAG_SET4
EXTENDED_INT_STATUS_FLAG
SIMPLE_INT_STATUS_FLAG
BLK_END_RD_INDICATOR_FLAG
INV_UINT8_FLAG
INV_UINT16_FLAG
INV_UINT32_FLAG
INV_INT8_FLAG
INV_INT16_FLAG
INV_INT32_FLAG
INV_NI_FMAT1_FLAG
INV_NI_FMAT2_FLAG
LP_MEMORY_LEN
NBR_BLKS_SET1
NBR_BLK_INTS_SET1
NBR_CHNS_SET1
MAX_INT_TIME_SET1
NBR_BLKS_SET2
NBR_BLK_INTS_SET2
NBR_CHNS_SET2
MAX_INT_TIME_SET2
NBR_BLKS_SET3
NBR_BLK_INTS_SET3
NBR_CHNS_SET3
MAX_INT_TIME_SET3
NBR_BLKS_SET4
NBR_BLK_INTS_SET4
NBR_CHNS_SET4
MAX_INT_TIME_SET4

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

DEFAULT_SET_USED
2
3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

4
1
0
0
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
0
0
0
16384
80
96
1
15
0
0
0
0
0
0
0
0
0
0
0
0

399

ANSI C12.19-2008

Default Sets For Decade Tables

Final Element
1

DEFAULT_SET_USED
2
3

Table 71 - Actual Log Limiting Table


EVENT_NUMBER_FLAG
HIST_DATE_TIME_FLAG
HIST_SEQ_NBR_FLAG
HIST_INHIBIT_OVF_FLAG
EVENT_INHIBIT_OVF_FLAG
NBR_STD_EVENTS
NBR_MFG_EVENTS
HIST_DATA_LENGTH
EVENT_DATA_LENGTH
NBR_HISTORY_ENTRIES
NBR_EVENT_ENTRIES
METROLOGICAL_SIG_FLAG
PROGRAM_SIG_FLAG
ALTERNATE_SIG_FLAG
SECURED_REGISTER_FLAG
NBR_PROGRAM_TABLES

1
0
0
0
1
4
0
2
2
100
100
0
0
0
0
0

1
0
0
0
1
4
0
2
2
100
100
0
0
0
0
0

1
1
0
0
1
4
0
2
2
100
100
0
0
0
0
0

1
1
0
0
1
4
0
2
2
100
100
0
0
0
0
0

Table 81 - Actual User-defined Tables Limiting Table


NBR_UDTS
DATA_ACCESS_METHOD
NBR_XFR_LIST_ITEMS
MAX_INSTANCE
UDT_0_SIZE
UDT_1_SIZE
UDT_2_SIZE
UDT_3_SIZE
UDT_4_SIZE
UDT_5_SIZE

1
2
2
0
256
0
0
0
0
0

2
2
3
0
256
256
0
0
0
0

3
2
6
0
256
256
256
0
0
0

1
2
2
0
256
0
0
0
0
0

400

Default Sets For Decade Tables

ANSI C12.19-2008

Final Element
1

DEFAULT_SET_USED
2
3

Table 91 - Actual Telephone Limiting Table


ANSWER_FLAG
S_ANCHOR_DATE_FLAG
OFFHOOK_DETECT_FLAG
BIT_RATE
ID_IN_PURPOSE
NO_LOCKOUT_PARM
NBR_ORIGINATE_WINDOWS
NBR_SETUP_STRINGS
SETUP_STRING_LENGTH
PREFIX_LENGTH
NBR_ORIGINATE_NUMBERS
PHONE_NUMBER_LENGTH
NBR_RECURRING_DATES
NBR_NON_RECURRING_DATES
NBR_EVENTS
NBR_WEEKLY_SCHEDULES
NBR_ANSWER_WINDOWS
NBR_CALLER_IDS
CALLER_ID_LENGTH

1
0
1
0
0
0
0
1
30
0
0
0
0
0
0
0
0
0
0

1
0
1
0
0
0
0
1
30
0
0
0
0
0
0
0
0
0
0

1
0
1
0
0
0
0
1
30
0
0
0
0
0
0
0
0
0
0

1
0
1
0
0
0
0
1
30
0
0
0
0
0
0
0
0
0
0

Table 111 - Actual Load Control Limiting Table


DURATION_SUPPORTED_FLAG
RANDOMIZATION_SUPPORTED_FLAG
MANUAL_OVERRIDE_SUPPORTED_FLAG
MANUAL_TURN_ON_SUPPORTED_FLAG
STATE_VERIFICATION_SUPPORTED_FLAG
ANCHOR_DATE_SUPPORTED_FLAG
SOURCE_CONDITION_SUPPORTED_FLAG
TIER_CONDITION_SUPPORTED_FLAG
TIME_CONDITION_SUPPORTED_FLAG
NBR_OF_CONTROL_POINTS
NBR_RECURRING_DATES
NBR_NON_RECURRING_DATES
NBR_EVENTS
NBR_OF_WEEKLY_SCHEDULES
NBR_OF_CONDITIONS
NBR_OF_CONSUMPTIONS
SLM_CONDITION_LEN
SLM_EQUATION_LEN

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

Table 141 - Actual Extended User-defined Tables


Limiting Table
DATA_ACCESS_METHOD
INDEX_DEPTH
NBR_EUDT
NBR_INSTANCES
NBR_SELECTIONS
NBR_CONSTANTS

3
3
1
1
8
1

3
3
2
1
16
2

3
3
3
1
16
4

3
3
4
1
16
8

401

ANSI C12.19-2008

Default Sets For Decade Tables

Final Element
NBR_LABEL_CHARS

1
8

Table 151 - Actual Quality-of-service Limiting Table


INHIBIT_OVF_QS_LOG_FLAG
NOTIFY_OVF_QS_LOG_FLAG
INHIBIT_OVF_TD_ASYNC_FLAG
NOTIFY_OVF_TD_ASYNC_FLAG
TD_SCALAR_DIVISOR_FLAG
INHIBIT_OVF_FD_ASYNC_FLAG
NOTIFY_OVF_FD_ASYNC_FLAG
SCALAR_DIVISOR_FD_ASYNC_FLAG
INHIBIT_OVF_TD_PERIODIC_FLAG
NOTIFY_OVF_TD_PERIODIC_FLAG
SCALAR_DIVISOR_TD_PERIODIC_FLAG
INHIBIT_OVF_FD_PERIODIC_FLAG
NOTIFY_OVF_FD_PERIODIC_FLAG
SCALAR_DIVISOR_FD_PERIODIC_FLAG
REPEAT_TD_FLAG
REPEAT_FD_FLAG
FD_COMPLEX_FLAG
FD_PHASOR_FLAG
QUALITY_RESET_CTR_FLAG
INCIDENT_SORTABLE_FLAG
COMMON_SAMPLING_RATE_FLAG
COMMON_NBR_OF_SAMPLES_FLAG
INTERHARMONICS_FLAG
NBR_OF_EVENT_IDS
NBR_OF_EVENTS
NBR_OF_INCIDENTS
NBR_OF_COINCIDENT_VALUES
INV_UINT8_FLAG
INV_UINT16_FLAG
INV_UINT32_FLAG
INV_INT8_FLAG
INV_INT16_FLAG
INV_INT32_FLAG
INV_NI_FMAT1_FLAG
INV_NI_FMAT2_FLAG
TD_SAMPLING_RATE
NBR_OF_TD_SAMPLES
NBR_OF_TD_BLOCKS
NBR_OF_TD_CHANNELS
NBR_OF_TD_CHANNELS_PER_BLOCK
NBR_OF_TD_SAMPLES_PER_BLOCK
NBR_OF_TD_PREFETCH_SAMPLES
FD_SAMPLING_RATE
NBR_OF_FD_SAMPLES
NBR_OF_SPECTRAL_COMPONENTS
NBR_OF_FD_BLOCK

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

402

DEFAULT_SET_USED
2
3
8
8

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

4
8

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

Default Sets For Decade Tables

ANSI C12.19-2008

Final Element
NBR_OF_FD_CHANNELS
NBR_OF_FD_CHANNELS_PER_BLOCK
NBR_OF_FD_SPECTRA_PER_BLOCK
NBR_OF_FD_PREFETCH_SAMPLES
LABEL_LENGTH

1
0
0
0
0
0

Table 161 - Actual One-way Limiting Table


ALWAYS_AWAKE_FLAG
PERIODIC_SELF_WAKE_FLAG
EXTERNAL_WAKE_FLAG
RF_TRANSM_WAKE_FLAG
IR_TRANSM_WAKE_FLAG
PL_TRANSM_WAKE_FLAG
POT_WAKE_FLAG
LAN_WAN_WAKE_FLAG
REG_READ_IMMEDIATE_WAKE_FLAG
REG_READ_DELAY_TO_TIME_FLAG
REG_READ_EXTERNAL_STIME_FLAG
DATA_XMIT_IMMEDIATE_READ
DATA_XMIT_DELAY_TO_TIME_FLAG
WAKE_CODE_LEN
COMMODITY_OUTAGE_DUTY_NUM
RESTORATION_CALL_ATTEMPTS
RESTORATION_CALL_WAIT
COMMODITY_ZERO_USAGE
COMMODITY_ZERO_USAGE_TRIGGER
COMMODITY_NON_RETURN_ZERO_TRIGGER
NBR_COMMANDS

0
0
1
1
1
0
0
0
0
0
0
0
1
0
2
0
0
0
0
0
0
1

DEFAULT_SET_USED
2
3
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
0
1
0
2
0
0
0
0
0
0
1

0
0
1
1
1
0
0
0
0
0
0
0
1
0
2
0
0
0
0
0
0
1

4
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
0
1
0
2
0
0
0
0
0
0
1

403

ANSI C12.19-2008

Indices For Partial Table Read/Write Access

ANNEX D: Indices For Partial Table Read/Write Access


(Normative)
The following values are provided as a normative examples for the use of Element indices in conjunction
with partial table access read/write methods identified as using the index-count. For illustration purposes,
we list only the values that are associated with Table 00, General Configuration Table, Table 05,
Device Identification Table, Standard Procedure 5, Update Last Read Entry, and Table 23, Current
Register Data Table. For information on how to compute these indices, please see Section 8.1.3, Partial
Table Access Using The Index/element-count Method.
TABLE 00 - GEN_CONFIG_TBL
FORMAT_CONTROL_1
FORMAT_CONTROL_2
FORMAT_CONTROL_3
DEVICE_CLASS
NAMEPLATE_TYPE
DEFAULT_SET_USED
MAX_PROC_PARM_LENGTH
MAX_RESP_DATA_LEN
STD_VERSION_NO
STD_REVISION_NO
DIM_STD_TBLS_USED
DIM_MFG_TBLS_USED
DIM_STD_PROC_USED
DIM_MFG_PROC_USED
DIM_MFG_STATUS_USED
NBR_PENDING
STD_TBLS_USED (SET)
STD_TBLS_USED (8-BITS AT n/8)
MFG_TBLS_USED (SET)
MFG_TBLS_USED (8-BITS AT n/8)
STD_PROC_USED (SET)
STD_PROC_USED (8-BITS AT n/8)
MFG_PROC_USED (SET)
MFG_PROC_USED (8-BITS AT n/8)
STD_TBLS_WRITE (SET)
STD_TBLS_WRITE (8-BITS AT n/8)
MFG_TBLS_WRITE (SET)
MFG_TBLS_WRITE (8-BITS AT n/8)

000
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
016
017
017
018
018
019
019
020
020
021
021

TABLE 05 - DEVICE_IDENT_TBL
IDENTIFICATION (BINARY)
IDENTIFICATION (STRING)

000
001

TABLE 07 - PROC_INITIATE_TBL /
PROCEDURE 05 UPDATE_LAST_READ_ENTRY_PROC
PROC
SEQ_NBR
PARM
STANDARD

000
001
002
002

404

[n]
[n]
[n]
[n]
[n]
[n]

000

Indices For Partial Table Read/Write Access

PROC_DATA_5
LIST
ENTRIES_READ
TABLE 23 CURRENT_REG_DATA_TBL
NBR_DEMAND_RESETS
TOT_DATA_BLOCK
SUMMATIONS(ARRAY)
SUMMATIONS(ITEM)
DEMANDS(ARRAY)
DEMANDS(ITEM)
EVENT_TIME(ARRAY)
EVENT_TIME(ITEM)
CUM_DEMAND
CONT_CUM_DEMAND
DEMAND(ARRAY)
DEMAND(ITEM)
COINCIDENTS(ARRAY)
COINCIDENTS(ITEM)
COINCIDENT_VALUES(ARRAY)
COINCIDENT_VALUES(ITEM)
TIER_DATA_BLOCK(ARRAY)
TIER_DATA_BLOCK(ITEM)
SUMMATIONS (ARRAY)
SUMMATIONS(ITEM)
DEMANDS(ARRAY)
DEMANDS(ITEM)
EVENT_TIME(ARRAY)
EVENT_TIME(ITEM)
CUM_DEMAND
CONT_CUM_DEMAND
DEMAND(ARRAY)
DEMAND(ITEM)
COINCIDENTS(ARRAY)
COINCIDENTS(ITEM)
COINCIDENT_VALUES(ARRAY)
COINCIDENT_VALUES(ITEM)

002
002
002

000
001
001
001
001
001
001
001
001
001
001
001
001
001
001
001
002
002
002
002
002
002
002
002
002
002
002
002
002
002
002
002

ANSI C12.19-2008

000
000
000

000
000
001
001
001
001
001
001
001
001
002
002
002
002
[n]
[n]
[n]
[n]
[n]
[n]
[n]
[n]
[n]
[n]
[n]
[n]
[n]
[n]
[n]

005
005
005

000
001

[n]
[n]
[n]
[n]
[n]
[n]
[n]
[n]

000
000
001
002
003
003

[n]

[n]
[n]
[n]

000
000

[n]

000
000
001
001
001
001
001
001
001
001
002
002
002
002

[n]

[n]
[n]
[n]
[n]
[n]
[n]
[n]
[n]

000
000
001
002
003
003

[n]

[n]
[n]
[n]

000
000

[n]

[n]

405

ANSI C12.19-2008

Event Logger Implementation

ANNEX E: Event Logger Implementation


(Informative)

E.1 Background
This Standard provides five possible options of implementing an audit trail (Event Logger). The selections
of the options implemented, allowed, or used are left to meter manufacturers, legislators, and end users.
These implementation options are listed below.
End Devices Implementing Event Counters (Option 1)
This option allows the detection of modification done to the meter but does not provide any trace of what
have been modified. This option is implemented using the Event Counters Table (Table 79).
End Devices Implementing Event Logger Without Values (Option 2)
This option provides a trace of which tables have been modified, when and by which user, but does not
provide information about the content of these tables. This option is implemented with the Event Log Data
Table (Table 76) using the following events:

Procedure Invoked event (Event 9)


Table Written To event (Event 10)
End Device Programmed event (Event 11)
End Device sealed event (Event 56)
End Device unsealed event (Event 57)

End Devices Implementing Event Logger With New Values Only (Option 3)
This option provides a trace of which tables have been modified, when, by which user and the new values
programmed. This option is implemented with the Event Log data table (Table 76) using the following
events:

Procedure Invoked event (Event 58)


Table Written To event (Event 59)
End Device Programmed event (Event 60)
End Device sealed event (Event 61)
End Device unsealed event (Event 62)

End Devices Implementing Event Logger With Metrological Signature Only (Option 4)
This option provides a trace of which tables have been modified, when, by which user, and a signature
used to validate an offline record keeping system. The comparison of the signature provided by the meter
with the signature based on the information kept by the record keeping system guarantees that this
information really represents the configuration of the meter at each event recorded.
This option is implemented with the Event Log Data Table (Table 76) using the following events:
Procedure Invoked event (Event 63)
Table Written To event (Event 64)
End Device Programmed event (Event 65)
End Device sealed event (Event 66)
End Device unsealed event (Event 67)
Read Secured Table event (Event 73)
Read Secured Register event (Event 74)

406

Event Logger Implementation

ANSI C12.19-2008

End Devices Implementing Event Logger With New Values And Metrological Signature (Option 5)
This option combines the features of option 3 (New Values) and option 4 (Signature). This option could
be used either with or without a record keeping system.
This option is implemented with the Event Log Data Table (Table 76) using the following events:

Procedure Invoked event (Event 68)


Table Written To event (Event 69)
End Device Programmed event (Event 70)
End Device sealed event (Event 71)
End Device unsealed event (Event 72)
Read Secured Table event (Event 75)
Read Secured Register event (Event 76)

E.2 Signature algorithm


The Event Logger data can be contained inside the End Device and in part at the End Device agents
record keeping system. The process described within establishes the means by which Event Logger data
and program tables are continually secured when older entries in the Event Logger and program tables
are no longer stored inside the End Devices non-volatile memory. The detailed computation algorithm is
described in the figure below and in accordance with the creation rules of the Event Logger record.
Step 1: Compute the TABLE_SIG of each tables programmed.
Step 2: Compute the PROGRAM_SIG, ALTERNATE_SIG and METROLOGICAL_SIG based on the
values computed on step 1.
Step 3: Compute the EVENT_CHECK_SIG based on its previous value and information added to the
Event Logger table (Table 76).

407

ANSI C12.19-2008

Event Logger Implementation

Program state table (Table 78)


TABLE
ID

METROLOGIC
AL _FLAG

LOGABLE
_FLAG

ALTERNAT
E_FLAG

TABLE_
SIG

Step 1

TX
TY

TZ

True
False

False
False

False
False

SIGX
SIGY

Signature

True

True

True

SIGZ

PROGRAM_SIG
ALTERNATE_SIG
METROLOGICAL_SIG
EVENT_CHECK_SIG

SIGP
SIGA
SIGM
SIGE

Table X

Signature

Step 2

Table Y

Table Z

Signature

Step 3

Event Log Table (Table 76)


EVENT
TIME

408

EVENT
NUMBER

EVENT
SEQ_NBR

USER
ID

EVENT
CODE
SIGM

SIGE

SIGM

SIGE

SIGM

SIGE

Transformer Losses Compensation

ANSI C12.19-2008

ANNEX F: Transformer Losses Compensation


(Informative)

F.1 Transformer losses Consideration


Transformer losses are the sum of no-load losses and load losses [IEEE EPEH : 2000, ACPTLC : 1998,
IEEE IAM : 11/12 2003, IEEE Std C57.123-2002].

F.1.1 No-Load Loss and Exciting Current


The no-load losses are essentially the power required to keep the core energized. When the winding is
energized, the exciting current consists of real component (core loss) and a reactive component (energy
stored momentarily in the winding inductance). The typical distribution transformer exciting current is less
than 0.5% of the rated current.

F.1.2 Load Loss


Transformer load losses result from the flow of load current in the windings. Load loss can be divided into
two parts:
(1) I2R loss and
(2) eddy loss.
I2R Loss:
I2R losses are caused by transformer winding electrical resistance when load currents flow.
Eddy Losses:
Eddy losses are caused by currents circulating within the winding conductors. Stray losses are
proportional to the frequency of the current and thus can increase dramatically when loads with harmonic
currents are served.
A deeper discussion would include at least a minimum of the following elements; however, they are not
covered in this document:
Temperature correction
Stray losses
Harmonics
Line Losses

F.1.3 Transformer Losses Compensation


The use of transformer losses compensation depends on the relationship between the transformer and
point of functional interest locations. Therefore, transformer loss compensation may be added or
subtracted with respect to the location of the transformer and the point of interest such as billing meter
(delivery) or a distribution system voltage regulation consideration. The following cases illustrate the
typical use of transformer compensation with respect to metering for client billing and the location of the
client delivery point:
Case 1:
In case 1, the billing (Delivery) point is on the high voltage side of the power transformer, while the meter
is located on the low voltage side of the power transformer. Transformer losses are the responsibility of
the client; i.e., the client (typically a municipality) owns the delivery transformer. In this case, the

409

ANSI C12.19-2008

Transformer Losses Compensation

transformer losses are added to the metered load (kW and kVAR, and ultimately to the kWh and kVARh
as well) of the client downstream of the distribution transformer. This is a common situation where a
large customer, such as a municipality, owns their substation and receives the electrical energy at the
point of high voltage conductor connection; i.e., 100kV 3-phase delta transmission line connection to a
municipality substation. The decision in this case to perform revenue metering on the low voltage side of
the distribution transformer is a decision of capital cost and maintenance cost. The cost of performing
revenue metering on the 100kV side of the transformer is much more expensive than on the 12.47kV or
other lower distribution voltage side.
Case 2:
In case 2, the metering point is on the high voltage side of the power transformer, while the billing
(delivery) point is on the low voltage side. Transformer losses should be subtracted from the kW and
kVar metering measurements, and ultimately from the kWh and kVARh metering values as well. In this
case, the utility typically owns the delivery transformer. The client (typically industrial) is not responsible
for the transformer losses as the delivery point is by contract located on the low voltage winding side of
the transformer. This is a common situation where the utility is delivering electrical energy from a
distribution circuit such as 12.47kV and the load of the industrial client requires numerous large
conductors to carry the load current on the low voltage side of the transformer (e.g., 480/277 3-phase, 4wire). In this case, the low voltage side metering is very difficult due to the very large conductors and
metering on the high side is relatively easy.

F.2 Transformer Loss Compensation Calculations [ACPTLC : 1998]


Transformer Loss Compensation (TLC) can be calculated using (1) to (4).
Delivered TLC Watt Losses =
Delivered % LineVoltage 2
Delivered % LoadCurrent 2

IronWattLoss ( In%) +

CopperWattLoss ( In%)
2
100
100
RatedVoltage
TestCurrent 2

(1)

Received TLC Watt Losses =


Received% LineVoltage 2
Received% LoadCurrent 2

IronWattLoss ( In%) +

CopperWattLoss ( In%)
100
100
RatedVoltage 2
TestCurrent 2

(2)

Delivered TLC Var Losses =


Delivered% LineVoltage 4
Delivered% LoadCurrent 2

IronVarLoss ( In%) +

CopperVarLoss( In%)
4
100
100
RatedVoltage
TestCurrent 2

(3)

Received TLC Var Losses =


Received% LineVoltage 4
Received% LoadCurrent 2

IronVarLoss ( In%) +

CopperVarLoss( In%)
100
100
RatedVoltage 4
TestCurrent 2

(4)

In the above calculation, the delivery transformer parameters are treated in aggregate and not as perphase or per-element values. Coefficients are introduced that facilitate the separate calculation of
delivered and received no-load and load losses.
Secondary current instrument transformers (CTs) and voltage instrument transformers (PTs) are not
considered in the calculations.

F.3 Transformer Loss Compensation Calculation Example


The following is an example of transformer loss compensation calculation, with transformer data
borrowed from [ACPTLC : 1998].

410

Transformer Losses Compensation

ANSI C12.19-2008

Transformer Data:
Rated KVA:
Rated Voltage:
Xfmr Tap Setting:
No Load Watt Loss at Rated Voltage:
Load Loss at Rated Full Load:
% Imp at 75C:
% Exciting Current:
Elements configuration:
Meter Current Class

10,000
69,000 7200/12470
69,000 12,470
9878 Watts
41,427 Watts
6.92%
0.38%
120 Volt, 4 Wire Wye, 2 Elements
10

For this example, all energy is treated as delivered to the meter (delivered coefficient = 100, received
coefficient = zero (0))..
From the above parameters, we can get:
- Delivered No-Load (Core, Iron) Losses kVA = 10,000 * 0.38% = 38.0
-

Delivered No-Load (Core, Iron) Losses kVAR = 38.0 9.878 = 36.96


Delivered Load (Copper) Losses kVA = 10,000 * 6.92% = 692.00

Delivered Load (Copper) Losses kVAR =

41,427 2 692 2 = 690.76

Based on (1) through (2), we can calculate and obtain the following Transformer Loss Constants:
- Delivered Transformer Copper Loss Watt Constant: TLC WCu (%) = 0.537%
- Delivered Transformer Copper Loss VAR Constant: TLC VCu (%) = 8.95%
- Delivered Transformer Iron Loss Watt Constant: TLC WFe (%) = 0.0762%
- Delivered Transformer Iron Loss VAR Constant: TLC VFe (%) = 0.283%

411

ANSI C12.19-2008

Document-form Descriptive Syntax

ANNEX G: Document-form Descriptive Syntax


(Normative)

G.1 General notes on symbols, rules and their meaning below:


1. An Extended BNF production rule may extend across one or more lines. The actual number
of lines parsed by an Extended BNF processor will be determined when the production rule
syntax is fully satisfied without an encounter of an Extended BNF production rule parsing
error.
2. When one production rule is followed by another production rule or an operation, one shall
not assume it to be a prohibition of adding additional production rules at the tail end of the
first production rule, as long as the Extended BNF syntax is not violated. Therefore, A op B
implies that A op B is a valid rule, but also A op1 B op2 C may be a valid rule (it depends on
the definition of op).
3. White space and line breaks placed between production rules and operands serve only to
separate between the names of production rules and operands. They are otherwise ignored
and do not add to or modify the effect of a production rule. If space is desired it needs to be
specified explicitly. For example the production rule A B C D is equivalent to A B C D.
Similarly the following production rules are not equivalent A B C D and A B C D.
4. All bold symbols on the left column are to be entered explicitly. When a substitution is
needed, the symbols are just italicized. Example: A valid production rule of the Extended
BNF symbols #xN is #xFD05. Similarly, a valid production rule of the Extended BNF symbols
A+ is [a-z]+, where [a-z] represents a production rule based on constructor A.
5. The BNF notation does not differentiate between left and right quotation characters.
Therefore, XXXX is equivalent to XXXX and YYY is equivalent to YYY.
6. Given a production rule A, a comment { comment } and a constraint / B expressed as A {
comment } /B, the constraint /B applies to A and not to { comment }.

G.2 Extended BNF Symbols and Meaning


Operators defined in order of precedence (highest precedence first):
\

The backslash is the escape control character. A character that follows a \ shall be interpreted as
a simple character. Thus a quote is escaped as \ and the backslash is escaped as a \\.
Example: The production rule This is a \bad\ expression is equivalent to This is a bad
expression.

Terminal text string is enclosed between single quotes (#x0027, #x2018 or #x2019). Example:
A represents the letter A. All characters that follow a single quote, except for the single-quote
and escape characters, are taken literally. All characters enclosed within single quotes are one
entity.
Also, the following escape sequences have special meaning as follows:
\n
\f
\t
\S

412

is the line break sequence (#xA | #xD)*.


is the page break sequence (#xC).
is the tab character (#x9).
is the white space defined later in this section.

Terminal text string is enclosed between double quotes (#x0022, #x201C or #x201D). Example:
A represents the letter A. All characters that follow a double quote, except for the double-quote
and escape characters, are taken literally. All characters enclosed within are one entity. The

Document-form Descriptive Syntax

ANSI C12.19-2008

escape characters that are recognized within single quotes are also processed within double
quotes.
#xN

where N is a hexadecimal integer. When interpreted as an unsigned binary number, it has the
value indicated. The number of leading zeros in the #xN form is insignificant; the number of
leading zeros in the corresponding code value is governed by the character encoding in use and
is not significant.

Start of character range selection symbol. Matches any character with a value in the binary
range(s) indicated (inclusive). It is terminated with the end of character group symbol ].
Interpretation of symbols that are enclosed within Start/End of character range symbols is as if
the characters were enclosed within single or double quotes; with the following exception:
^

When encountered as the first character following the Start of character range selection
symbol will negate the results of the match. Example: [^ABC] implies any single character
except for A or B or C
Expresses a range starting with the character on the left and ending with the character on its
right (inclusive). Example: [A-Z0-9#x005F] defines a production rule that matches all capital
letters of the ISO/IEC 10646 whose canonical (UCS-4) set, the decimal digits zero through
nine and the underscore character _.
\
The backslash escapes the regular interpretation of the next character (same action to that
outside of the character range selection symbols, unless it is followed by a character
sequence that is special within single or double quotes. Example: [\S] is the space
character; and [\\S] is a backslash followed by a S)
#xN where N is a hexadecimal integer, the expression matches the character in ISO/IEC 10646
whose canonical (UCS-4) code value, when interpreted as an unsigned binary number, has
the value indicated.
]

End of character range selection symbol. Character range selection begins with Start of
character range symbol.

Note: The special meaning of all other characters is lost when used within the character-range
selection symbols. Example: [ABC[()] is a production rule that matches the letters A or B
or C or the single quote or [ or ( or ).
(

Start group symbol. The group ends with the end of group symbol ). If the end of group symbol
is not found on the same line, then parsing shall continue on consecutive lines until the end group
symbol is found; and all production rules are satisfied.

End group symbol. The group begins with the start group symbol. Other production rules may
follow.

Start of comment symbol. Text enclosed within curly braces is a comment provided for clarity and
has no impact on the syntax or data definition. All characters are considered to be plain text with
no special meaning, except for the end of comment symbol, } and the escape character \\
which may be used to escape the closing comment symbol. If a production rule A is followed by
a comment then followed by a constraint B then the constraint B applies to A and not to the
comment.

End of comment symbol. A comment begins with the start of comment symbol, {.

A?

The production rule A followed by the superscript question mark may occur zero or one times
without violating the grammar. Other production rules may follow.

413

ANSI C12.19-2008

Document-form Descriptive Syntax

A*

The superscript asterisk is known as the Kleene star. A production rule A followed by the Kleene
star may occur zero or more times without violating the grammar. Other production rules may
follow.

The superscript plus sign is known as the Kleene cross. A production rule A followed by the
Kleene cross shall occur one or more times. Other production rules may follow.

Ax..y

The production rule A followed by a superscript number range shall occur a minimum of x times
to a maximum of y times (x shall be greater than or equal to zero, y shall be greater than or equal
to x). Other production rules may follow. Example: [0..9]1..2 is a production rule providing for one
to two digits in the range of 0 to 9.

Ax

The production rule A followed by a superscript number shall occur exactly x times. Other
production rules may follow. This is equivalent to Ax..x.

Ax..

The production rule A followed by a superscript number shall occur a minimum of x times (x shall
be greater than or equal to zero). Other production rules may follow.

A..B

The two dots represent a range. The production rule will match any range starting with A ending
with B. Example: When A or B are multi-character sequences then the range shall span all
possible multi-character sequences that are delimited by the stated range.
Example: Specifying a numeric range
tableNumber ::= 0..2039
is equivalent to
tableNumber ::= [01]?[0-9]1..3 | 20 [0123] [0-9]

A-B

The production rule A followed by the minus sign (the except symbol) will match the production
rule A unless it matches the pattern produced by production rule B. Other production rules may
follow.
Example:
nonTableElementName ::= identifier - (id _TBL)
defines a production rule for an nonTableElementName that matches the production rule of
identifier unless it also matches the production rule id followed by the suffix _TBL.

A production rule that introduces the uniqueness constraint C on the use case of
A / unique : (B .)?C
A, where the constraint C belongs to the set:
ANY | TDL | DEC | TBL | PROC | RCD | BFLD | ENUM
An End Device class level constraint B may be optionally provided to indicate whether the
constraint C is limited to this document scope TDL, the referenced Standard document scope
STD or to all documents that describe this End Device class. The optional device class
constraint B belongs to the set:
EDC | STD
When the optional constraint B is not provided, it shall default to the active document being used
(it may be a Standard document or a Manufacturer-supplied document).
Well known scope names include:

414

Document-form Descriptive Syntax

ANSI C12.19-2008

EDC

Scopes defined within one instance of the End Device Class (this includes all TDL
documents used to describe this End Device and all referenced Standard TDL
documents).
TDL The top-level TDL scope of this TDL document. The TDL document is all collections of
documents that are either Manufacturer-defined or Standard-defined, but not both.
STD The top-level TDL scope of the referenced Standard TDL documents only.
DEC Within the local scope of any one decade defined within TDL documents.
TBL Within the local scope of any one table defined within TDL documents.
PROC Within the local scope of any one procedure defined within TDL documents.
RCD Within the local scope of any one packed record instance (and taking into account all
conditionals) defined within TDL documents.
BFLD Within the local scope of any bit field instance (and taking into account all conditionals)
defined within TDL documents.
ENUM Within the local scope of any enumerator instance (and taking into account all
conditionals) defined within TDL documents.
ANY Any scope where this production rule can be used.
The uniqueness constraints are generally applied to names of elements, names of derived types,
and values of enumerator. The constraints shall be applied after the evaluation and expansion of
all conditional statements, as shown in the examples below:
Example: Let elementName be defined as follows:
elementName ::= identifier / unique : RCD
and COUNT be an elementName then the following table syntax shall be considered invalid (with
respect to the uniqueness constraint), because the final element COUNT is not defined uniquely
within the PACKED RECORD below.
TYPE EXAMPLE_RCD = PACKED RECORD
COUNT
: UINT8;
LENGTH
: UINT8;
COUNT
: UINT8;
END;
However, the syntax below is valid, because the final element COUNT is unique within any one
instance of this packed record.
TYPE EXAMPLE_RCD = PACKED RECORD
IF (EXAMPLE_TBL.VALUE == 3) THEN
COUNT
: UINT8;
ELSE
LENGTH
: UINT8;
COUNT
: UINT8;
END;
END;
Example: Use of uniqueness constraints to tblIdentifier. This states that tblIdentifier shall be
unique in all instances of this End Device class, in all scopes defined.
tblIdentifier ::= (id _TBL) / unique : EDC.ANY;
Example: Use of uniqueness constraints to rcdIdentifier. This states that rcdIdentifier shall be
locally unique in any one scope where it can be defined.

415

ANSI C12.19-2008

Document-form Descriptive Syntax

rcdIdentifier ::= (id _RCD) ( /unique : TDL | /unique : DEC |


/unique: TBL | /unique: PROC);
Example: Use of uniqueness constraints to procIdentifier. This states that procIdentifier shall be
unique across all definitions made in any End Device class instance document scope, decade
scopes and tables.
procIdentifier ::= (id _PROC) ( /unique : STD.TDL) , /unique : STD.DEC) ,
/unique : TDL.TDL) , /unique : TDL.DEC );
This is equivalent to
procIdentifier ::= ((id _PROC) ( /unique : EDC.TDL) , /unique : EDC.DEC );
This is also equivalent to (since the above scopes are the only scopes where procedures can be
defined).
procIdentifier ::= (id _PROC) /unique : EDC.ANY;
A / constraint : B
A production rule that introduces Bs size, type or transport constraint on the run
time and use case of A, where the constraint B belongs to the set:
BNF.LHS | BNF.RHS | atomic | text | elementReference | derivedTypeReference
A may be an element , sub-element or final-element referred to by the elementReference, a
simple or derived type referred to by the derivedTypeReference, the BNF left-hand side, BNF
right-hand side definition (See description of ::= ) or the reserved word atomic or text; as
follows:
BNF.LHS

References to a BNF construction elements that may be located on the left-hand


side of the ::= and may limit, the run-time size or range of the use case of a
production rule.

BNF.RHS

References to a BNF construction elements that may be located on the righthand side of the ::= and may limit, the run-time size or range of the use case of
a production rule.

atomic

A restriction on the transportation and access to data that is constructed based


on a rule that is an atomically constrained production. Atomic elements shall be
communicated entirely using a single element read or write request. Atomic
tables have to be communicated using full table read or write requests. Subatomic entities shall not be requested and shall not be communicated.

text

A free form textual tescription of the constraint that makes up the production rule.
This is useful in situations where the constraint is described elsewhere in a
different document or standard or it can be best expressed in plain text.

elementReference
References to a table element that may limit or further qualify the runtime influence on encoding rules use in production or communication.
derivedTypeReference References to a built-in or derived data type that may limit the run-time
transmitted size and content or use case of a production rule.
Example: using BNF constraint:

416

Document-form Descriptive Syntax

ANSI C12.19-2008

bcdNumber ::= BCD(4) (/ constraint : BNF.fixedPointBCDNumber,


(/ constraint: BNF.eightBits)4);
Implies that all bnfNumber types are defined using the syntax BCD(4). When interpreted for
transmission at the base unit fixedPointBCDNumber shall be used, as defined in a BNF
production rules. The size of the transmitted data shall be exactly four octets.
Example: using finalElementReference constraint:
String ::= STRING(20) (/ constraint : GEN_CONFIG_TBL.CHAR_FORMAT,
(/ constraint: BNF.eightBits)20,
/ constraint: atomic);
Implies that all twenty character String types are defined using the syntax STRING(20). When
interpreted for transmission, the String format shall also be constrained by Table 0
CHAR_FORMAT value. The size of the transmission string shall be exactly twenty times the size
of an octet. The String shall be transmitted as one unit since it is atomic.
Example: using atomic constraint
uInt16 ::= UINT16 ( / constraint : BNF.sixteenBits ,
/ constraint : GEN_CONFIG_TBL.DATA_ORDER ,
/ constraint : atomic )
Implies that UINT16 is a run-time defining type that can carry binary data in the range of [#x0000#xFFFF] (two octets). When selected or transmitted it is an atomic element, and its transmission
octet order depends on DATA_ORDER that is defined in GEN_CONFIG_TBL.
Example: using a data type constraint to express a built-in type
longTimeDate ::= LTIME_DATE (

/ constraint : STD.LTIME_DATE_RCD ,
/ constraint : atomic)
Implies that the built-in type LTIME_DATE has the data structure and obeys the transmission
rules expressed at Standards TDL-scope definition LTIME_DATE_RCD, and it is an atomic
element.
Example: using text constraint
utf8
::=
eightBits (/constraint: text As per Section 2.5 and Section 15.9
Specials of Encoding Forms / UTF-8 of The Unicode
Standard, Version 4.0. In UTF-8 the byte order mark, BOM,
corresponds to the byte sequence [#xEF] [#xBB] [#xBF]. The
BOM of UTF-8 shall be permitted only when it can be
accommodated by the size of the element that is of type UTF-8
whose size is at least three octets, but it shall be ignored (not
produce displayable text) by the processing application.,
/constraint: atomic);
Requires that utf8 imports all the definitions and encoding rules implied by the Unicode Standard,
Version 4.0. It also provides instructions how to handle the UTF-8 BOM feature. Finally it
indicates that the utf8 entity is atomic.
A / match : B A production rule that binds the publication of rule A to an XPath location path B in the
XML/TDL source documents which describe the Standard or the End Device table set. B is a
LocationPath per BNF production rule [1] found in the XML Path Language (XPATH) Version
1.0.
Example:

417

ANSI C12.19-2008

tblIdentifier

Document-form Descriptive Syntax

::= (id tblSuffix) / match : /tdl//table@name;

The example above indicates that the table identifier (tblIdentifier) that is published by this BNF
syntax is associated with the name attribute of the table element found in the XML/TDL
document.
Example:
defaultSetNumber ::=

0..255

({ A number ranging from 0 255 inclusive. }


/ unique : EDC.ALL { Default set numbers shall
be unique throughout the End Device class. } ,
/ constraint : GEN_CONFIG_TBL.
DEFAULT_SET_USED {Located in table 0 of
the End Device in the DEFAULT_SET_USED
final element.},
/ match : /edl//defaultSet/@number { The
source of the number of the default set number
in the XML EDL document. }
);

The example states that defaultSetNumber is a number ranging between 0 to 255 inclusive. Also
its use is unique within the context of any End Device instance. It indicates that it is located in
Table 0 of the End Device in the DEFAULT_SET_USED final element; and it is imported or
exported in the EDL file by the number attribute of the defaultSet element.
AB

Matches A followed by B. i.e it is a concatenation of A and B.

A,B

The comma introduces a sequence of production rules all off which shall exist, but not necessary
in the order as defined in the sequence. The production rule B may be followed by other
alternatives. Example: A, B, C | D defines a production rule stating that either A and B and C
rules shall apply (not necessary in that order) or D rules shall apply.

A|B

The vertical bar is an OR symbol. The OR symbol always occurs on the right hand side of a
production rule A and the left hand side of production rule B. The OR bar separates valid
production rule alternatives. If the OR bar is not followed by a complete production rule on the
same line, then parsing shall continue on consecutive lines until all production rules are satisfied.
The OR introduces a sequence of production rules, of which any one shall exist. The production
rule B may be followed by other alternatives. Example: A | B | C implies production rule A or B or
C applies.

It is the end of Extended BNF expression.

::=

This symbol is read as "is defined as". The non-terminal which occurs on the left hand side
(BNF.LHS) of this symbol consists of the elements (non-terminals, terminals, or a combination of
the two) found on the right hand side (BNF.RHS). For clarity, when a non-terminal element on
the left hand side is encountered in plain text it will be written in italics. A line containing an LHS,
::=, and an RHS is known as a production rule. An incomplete production rule continues across
line. A production rule terminates when any line completes without the need for additional rules,
unless terminated by a semi-colon.

In the next sections, reserved words, characters, identifiers and other symbols required for the language
are also indicated by bold type.

418

Document-form Descriptive Syntax

ANSI C12.19-2008

G.3 Flow of information


The flow of information is a stream of elements of multiple n octet length, when "n" is greater than one.
Elements are transmitted in order of their appearance in the table structure.
For purposes of transmission, the smallest data type is an octet, which is eight bits in length. The bits are
numbered zero to seven. Bit zero is the least significant bit. Figure H.1 illustrates this bit numbering and
ordering, when expressed in printed form. The order of transmission of the bits in an octet is defined
elsewhere in the appropriate OSI layer, which is typically the Data Link Layer (layer 2). An octet may also
be referenced as a byte in this document.
MSBit
7

LSBit
0

Figure H.1Octet bit ordering


For some data types that are more than one octet in length, it is possible to transmit them either most
significant octet first or least significant octet first. The order of transmission is dictated by value of
DATA_ORDER, found in the GEN_CONFIG_TBL (Table 00). Each data type shall indicate a specific
order of transmission. Figure H.2 illustrates a multi-byte structure.
MSByte
Octet
7-0

Octet
7-0

Octet
7-0

Octet
7-0

Octet
7-0

Octet
7-0

Octet
7-0

LSByte
Octet
7-0

Figure H.2Multi-byte ordering

G.4 Identifiers
An identifier is a name identifying a decade, a table, a procedure, a packed record, a bit field, an
enumerator, an element of a packed record, or a sub-element of a bit field.
An identifier is made of letters and/or numbers and/or the underscore character, '_'. Some suffixes were
reserved for specific use. Identifiers ending with reservedSuffix are reserved for names of decades,
tables, procedures, packed records, bit fields and enumerators.
decSuffix
tblSuffix
procSuffix
rcdSuffix
bfldSuffix
enumSuffix
cnstSuffix

:: = _DEC
:: = _TBL
:: = _PROC
:: = _RCD
:: = _BFLD
:: = _ENUM
:: = _CNST

{ Suffix reserved for names of decades. } ;


{ Suffix reserved for names of tables. } ;
{ Suffix reserved for names of procedures. } ;
{ Suffix reserved for names of packed records. } ;
{ Suffix reserved for names of bit fields. } ;
{ Suffix reserved for names of enumerators. } ;
{ Suffix reserved for names of constants. } ;

reservedSuffix ::= decSuffix | tblSuffix | procSuffix | rcdSuffix | bfldSuffix | enumSuffix |


cnstSuffix;
Identifiers that are identical to reservedName are reserved for the TDL and they shall not be used to
construct identifiers.
bnf
edc
tdl
std

::= BNF
::= EDC
::= TDL
::= STD

{ Reference to the scope of the BNF production. } ;


{ Reference to the scope of the End Device class.} ;
{ Reference to the scope of the active TDL document.} ;
{ Reference to the scope of the Standard TDL document
that is referenced by the active document.} ;

419

ANSI C12.19-2008

Document-form Descriptive Syntax

dec
tbl
proc
bfld
rcd
cnst

::= DEC
::= TBL
::= PROC
::= BFLD
::= RCD
::= CNST

{ Reference to the scope of a decade.} ;


{ Reference to the scope of a table .} ;
{ Reference to the scope of a procedure .} ;
{ Reference to the scope of a bit field .} ;
{ Reference to the scope of a packed record .} ;
{ Reference to a constant.} ;

string
binary
bcd
set
bool
array
type
if
then
else
switch
case
default
packed
record
bit
field
of
procedure
request
response
table
constants
enum
end
assert
true
false
label
description
property

::= STRING
{ Keyword and Built-in type } ;
::= BINARY
{ Keyword and Built-in type } ;
::= BCD
{ Keyword and Built-in type } ;
::= SET
{ Keyword and Built-in type } ;
::= BOOL
{ Keyword and Built-in type } ;
::= ARRAY
{ Keyword and Built-in type } ;
::= TYPE
{ Keyword } ;
::= IF
{ Keyword } ;
::= THEN
{ Keyword } ;
::= ELSE
{ Keyword } ;
::= SWITCH
{ Keyword } ;
::= CASE
{ Keyword } ;
::= DEFAULT
{ Keyword } ;
::= PACKED
{ Keyword } ;
::= RECORD
{ Keyword } ;
::= BIT
{ Keyword } ;
::= FIELD
{ Keyword } ;
::= OF
{ Keyword } ;
::= PROCEDURE
{ Keyword } ;
::=REQUEST
{ Keyword } ;
::= RESPONSE
{ Keyword } ;
::= TABLE
{ Keyword } ;
{ Keyword } ;
::= CONSTANTS
::= ENUM
{ Keyword } ;
::= END
{ Keyword } ;
::= ASSERT
{ Keyword } ;
::= (TRUE | true) / constraint : BNF.trueValue
::= (FALSE | false) / constraint : BNF.falseValue
::= LABEL
{ Keyword } ;
::= DESCRIPTION
{ Keyword } ;
::= PROPERTY
{ Keyword } ;

{ Keyword } ;
{ Keyword } ;

reservedKeyWord ::= string | binary |


bcd | set | bool | array | type | if | then | else | switch | case | default |
packed | record | bit | field | of | procedure | request | response | table |
enum | end | assert | true | false | constants | label | description | property;
anyInt ::= int | unsignedInt | U?INT number? { Built-in type or the like } ;
anyFloat::= floatingPoint | floatingPointCHAR | fixedPointBCD |
{ Built-in type or the like } ;
FLOAT number?
{ Built-in type } ;
anyFill ::= fill | FILL number?
reservedName ::= reservedKeyWord | anyInt | anyFloat | anyFill | specType | nil;
The following rules are used to identify the members of a packed record or of a bit field based on the
production rule anyElementName.
digit

420

::=

0..9 ;

Document-form Descriptive Syntax

ANSI C12.19-2008

number

::=

digit+ ;

positiveNumber

::=

+? number ;

negativeNumber

::=

- number ;

anyNumber

::=

(positiveNumber | negativeNumber) {Any positive or negative


integer};

space

::=

[#x09 #x0A #x0D #x0C #x20] { White space } ;

comment

::=

{ (\\} | (anyChar }))* } ;

::=

[\S] | ([\S] ? comment [\S]?){ Short hand for white spaces for
convenience. Note that it also allows for embedded
comments.} / constraint : text Also [\S] is equivalent to \S
;

capLetter

::=

A..Z ;

id

::=

capLetter (capLetter | digit)* (_ (capLetter | digit)+)*


{ Shall
begin with a capital letter, followed by any number of
capitals letters or digits, followed by any number of capital
letters, digits or underscores, except that it cannot have
more than one underscore in succession and it cannot end
with an underscore. } ;

anyElementName

::=

(id (id reservedSuffix)) - reservedName


{ Assigned to
names of elements and sub-elements. It shall not end with
a reserved suffix and it shall not be a reserved name.} ;

decIdentifier

::=

(id decSuffix) ( { Assigned to names of decades. }


/unique : EDC.ALL { Decade names are unique across all
scopes defined within one instance of the End Device Class
} ,
/constraint : BNF.decScopeReference { It can be used as
a reference to members located in the scope of a decade. },
/ match : /tdl//decade/@name { The source of the name of
the decade in the XML TDL document. }
);

tblIdentifier

::=

(id tblSuffix) (

{ Assigned to names of tables. }

/unique : EDC.ALL { Table names shall be unique across


all scopes defined within one instance of an End Device
class. } ,
/constraint : BNF.tblScopeReference { It can be used as a
reference to members located in the scope of a table. }
/ match : /tdl//table/@name { The source of the name of
the table in the XML TDL document. }

421

ANSI C12.19-2008

Document-form Descriptive Syntax


);

procIdentifier

::=

(id procSuffix) ( { Assigned to names of procedures. }


/unique : EDC.ALL { Procedure names shall be unique
across all scopes defined within one instance of the End
Device Class } ,
/constraint : BNF.procScopeReference { It can be used as
a reference to members located in the scope of a
procedure. }
),
/constraint : text : Instantiated in Standard Procedure
Initiate table 7.,
/constraint : text : Instantiated in Standard Procedure
Response table 8.,
/ match : /tdl//procedure/@name { The source of the name
of the procedure in the XML TDL document. }
);

rcdIdentifier

::=

(id rcdSuffix) ( { Assigned to names of packed records. }


(/unique : TDL | /unique : DEC | /unique : TBL | /unique :
PROC) { Packed record names shall be unique within the
defining scope. } ,
/constraint : BNF.rcdTypeReference { It is a type
reference, so it can be used as a constructor of a derived
type. It can also be used as a reference to a packed record
field in any context where a reference to a data type is
needed. },
/ match : /tdl//packedRecord/@name { The source of the
name of the packed record in the XML TDL document. }
);

bfldIdentifier

::=

(id bfldSuffix) ( { Assigned to names of bit fields. }


(/unique : TDL | /unique : DEC | /unique : TBL | /unique :
PROC) { Bit field names shall be unique within their
defining scope. } ,
/constraint : BNF.bfldAssignedType { When used as a
constructor it creates a data type that is managed and
transmitted based on the rules set for the assigned
bfldAssignedType } ,
/constraint : atomic { When used as a constructor it
creates a data type that is an atomic element. } ,

422

Document-form Descriptive Syntax

ANSI C12.19-2008

/constraint : BNF.bfldTypeReference { It is a type


reference, so it can be used as a constructor of a derived
type. It can also be used as a reference to a bit field in any
context where a reference to a data type is needed. }
/ match : /tdl//bitField/@name { The source of the name of
the bit field in the XML TDL document. }
);
enumUnnamedElements ::=

element | subElement | array | set { TDL Elements that


support unnamed enumerators.} ;

enumIdentifierXPath

/tdl/enumerator/@name { The source of the name is the named


enumerator in the XML TDL document scope. } |

::=

/decade/enumerator/@name { The source of the name is


the named enumerator in the XML TDL document decade
scope. } |
//table/enumerator/@name { The source of the name is the
named enumerator in the XML TDL document table scope.
}|
//procedure/enumerator/@name { The source of the name
is the named enumerator in the XML TDL document
procedure scope. } |
/ constraint : text Although enumUnnamedElements
produce unnamed enumerators, it is possible to refer to the
enumerator by suffixing enumSuffix to the elements name.
i.e., the name constructed by the concatenation of
enumUnnamedElements/@name with enumSuffix ;
enumIdentifier

::=

(id enumSuffix )(

{ Assigned to names of enumerators. }

(/unique : TDL | /unique : DEC | /unique : TBL | /unique :


PROC) { Enumerator names shall be unique within their
defining scope. } ,
/constraint : BNF.enumTypeReference { It can also be
used as a reference to a named enumerator in any context
where a reference to an restriction on data values is
needed. }
/ match : enumIdentifierXPath { The source of the name of
the enumerator in the XML TDL document. } ;
);
constIdentifier

::=

(id cnstSuffix )( { Assigned to names of constants. }


(/unique : TDL | /unique : DEC | /unique : TBL | /unique :
PROC) { Constants names shall be unique within their
defining scope. },

423

ANSI C12.19-2008

Document-form Descriptive Syntax

/ match : /tdl//enumerator/positional/enum/@name { The


source of the name of the constant in the XML TDL
document.}
);
tblNumber

::=

0..2039 (

{ A number ranging from 0 2039 inclusive. }

/unique : TDL.ALL { Table numbers shall be unique within


any one TDL document. i.e., They shall be unique within
the Standards document scope. They shall also be unique
within any Manufacturers document scope. } ,
(/constraint : STD.TABLE_IDA_BFLD. TBL_PROC_NBR |
/constraint : STD.TABLE_IDB_BFLD. TBL_PROC_NBR |
/constraint : STD.TABLE_IDC_BFLD. TBL_PROC_NBR |
) { tblNumber is associated with TBL_PROC_NBR of any of
the TABLE_IDx_BFLD types. } ;
/ match : /tdl//table/@number { The source of the number
of the table in the XML TDL document. }
);
procNumber

::=

0..2039 (

{ A number ranging from 0 2039 inclusive. }

/unique : TDL.ALL { procedure numbers shall be unique


within any one TDL document. i.e., They shall be unique
within the Standards document scope. They shall also be
unique within any Manufacturers document scope. } ,
(/constraint : STD.TABLE_IDA_BFLD. TBL_PROC_NBR |
/constraint : STD.TABLE_IDB_BFLD. TBL_PROC_NBR |
/constraint : STD.TABLE_IDC_BFLD. TBL_PROC_NBR
) { procNumber is associated with TBL_PROC_NBR of any
of the TABLE_IDx_BFLD types. } ,
/ match : /tdl//procedure/@number { The source of the
number of the procedure in the XML TDL document. }
);
decNumber

::=

0..203 (

{ A number ranging from 0 203 inclusive. }

/unique : EDC.ALL { Decade numbers shall be unique


throughout the End Device class. } ,
/ match : /tdl//decade/@number { The source of the
number of the decade in the XML TDL document. }
);
defaultSetNumber

::=

0..255(

{ A number ranging from 0 255 inclusive. }

/ unique : EDC.ALL { Default set numbers shall be unique


throughout the End Device class. }

424

Document-form Descriptive Syntax

ANSI C12.19-2008

/ constraint : GEN_CONFIG_TBL. DEFAULT_SET_USED


{ Located in table 0 of the End Device in the
DEFAULT_SET_USED final element.},
/ match : /edl//defaultSet/@number { The source of the
number of the default set number in the XML EDL
document. }
);

G.5 Basic data types


The following are used for as the ultimate constraint on basic data types for transmission purposes. All
numbers, Booleans and text strings are ultimately reduced to a collection of these types.
oneBit
eightBits
sixteenBits
twentyFourBits
thirtyTwoBits
fortyBits
fortyEightBits
fiftySixBits
sixtyFourBits

::=
::=
::=
::=
::=
::=
::=
::=
::=

[#x0-#x1]
{ 1 bit range } ;
[#x00-#xFF]
/constraint :atomic
{ 8 bits } ;
[#x0000-#xFFFF]
{ 16 bits } ;
[#x000000-#xFFFFFF]
{ 24 bits } ;
[#x00000000-#xFFFFFFFF]
{ 32 bits } ;
[#x0000000000-#xFFFFFFFFFF]
{ 40 bits } ;
[#x000000000000-#xFFFFFFFFFFFF]
{ 48 bits } ;
[#x00000000000000-#xFFFFFFFFFFFFFF]
{ 56 bits } ;
[#x0000000000000000-#xFFFFFFFFFFFFFFFF]{ 64 bits } ;

fillNil
::=
fillEightBits
::=
fillSixteenBits ::=
fillTwentyFourBits::=
fillThirtyTwoBits ::=
fillFortyBits
::=
fillFortyEightBits::=
fillFiftySixBits ::=
fillSixtyFourBits ::=

[]
[#x00] /constraint :atomic
[#x00]2
[#x00]3
[#x00]4
[#x00]5
[#x00]6
[#x00]7
[#x00]8

{ no bits } ;
{ 8 fill bits } ;
{ 16 fill bits } ;
{ 24 fill bits } ;
{ 32 fill bits } ;
{ 40 fill bits } ;
{ 48 fill bits } ;
{ 56 fill bits } ;
{ 64 fill bits } ;

zeroValue
trueValue
falseValue
boolValue

[#x0]
[#x1]
[#x0]
trueValue | falseValue

{ All bits set to zero } ;


{ Value of true } ;
{ Value of false } ;
{ Value of BOOL types } ;

::= boolValue8 / constraint : BFLD.eightBits

{ 8 BOOL type bits } ;

::=
::=
::=
::=

setAtomicElement
iso646 ::=

(eightBits

(/constraint : text As per ISO 7-bit coded character set for information
interchange, per ISO/IEC 646: 1991.)
) /constraint : atomic ;

iso8859 ::=

(eightBits

(/constraint : text As per ISO 8859-1, 1998 or ECMA-94 Latin 1


character set.)
) /constraint : atomic ;

utf8

eightBits

(/constraint : text As per Section 2.5 Encoding Forms / UTF-8 and


Section15.9 Specialsof The Unicode Standard, Version 4.0.
In UTF-8 the byte order mark, BOM, corresponds to the byte
sequence [#xEF] [#xBB] [#xBF]. The BOM of UTF-8 shall be
permitted only when it can be accommodated by the size of the

::=

425

ANSI C12.19-2008

Document-form Descriptive Syntax


element that is of type utf8 whose size is eightBits3.., but it shall
be ignored (not displayed) by the processing application. ,
/constraint : atomic) ;

anyChar

::=

(iso646 | iso8859 | utf8


) (
/constraint : GEN_CONFIG_TBL.CHAR_FORMAT,
/constraint : GEN_CONFIG_TBL.DATA_ORDER) ;

fixedPointStringNumber ::=

(S* anyNumber ([.] number)? S*) / constraint BNF.anyChar {


This format may be used to represent fixed point numbers that are
encapsulated as strings.} ;

stringExponent

(E | e') anyNumber;

::=

floatingPointStringNumber ::=

(S* anyNumber ([.] number)? stringExponent? S*) / constraint


BNF.anyChar {
This format may be used to represent fixed point numbers that are
encapsulated as strings.} ;

bcdMinus

::=

[#xA]

{ Used for the representation of the minus sign. When


expressed as a CHAR this value is mapped to the negation
character - } ;

bcdSpace

::=

[#xB]

{ Used for the representation of the space character. When


represented as a CHAR this value is mapped to the space
character [#x20].} ;

bcdDecimal

::=

[#xD]

{ Used for the representation of the decimal point. When


represented as a CHAR this value is typically mapped to a
period . or a comma ,, based on the End Device locale.} ;

bcdStopDown ::=

[#xF]

{ Provides numeric support for mechanical dial meters dial


switch closure detection. This is used following a bcdDigit to
indicate early numeric processing termination. All numeric
evaluations shall stop, the next digit shall be assigned the value
0 then the result truncated by discarding all digits which follow
the next. Example: the BCD sequence [#x1] [#x2] [#xD] [#x4]
[#xF] [#x5], [#x6] representing the fixed point value 12.456 shall
be truncated upon evaluation to 12.40. } ;

bcdStopUp

::=

[#xE]

{ Provides numeric support for mechanical dial meters dial


switch closure detection. This is used following a bcdDigit to
indicate early numeric processing termination. All numeric
evaluations shall stop, the next digit shall be assigned the value
5 then the result truncated by discarding all digits which follow
the next digit. Example 1: 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. Example 2: the
BCD sequence [#x1] [#x2] [#xD] [#x4] [#x5], [#x6] [#xE]
representing the fixed point value 12.456 shall be upon
evaluation to 12.4565.} ;

bcdDigit

::=

[#x0-#x9]

( bcdStopDown | bcdStopUp) { Used for the representation of


the binary values 0 to 9. When expressed as a CHAR this value
shall be mapped to [#x30-#x39] } ;

426

Document-form Descriptive Syntax

bcdUnassignedDigit::= [#xC]

ANSI C12.19-2008

{ Unused or unassigned codes. Values are reserved for future


use. } ;

bcdNibble

::=

bcdDigit | bcdMinus | bcdSpace | bcdDecimal | bcdUnassignedDigit {


Covers all possible binary permutations of a nibble.};

bcdMSNibble

::=

bcdNibble

{ The most significant nibble of a BCD. } / constraint : text


Occupies bits 4..7 of the octet. ;

bcdLSNibble

::=

bcdNibble

{ The least significant nibble of a BCD. } / constraint : text


Occupies bits 0..3 of the octet. ;

bcdOctet

::=

( bcdMSNibble | bcdLSNibble) /constraint : eightBit{ Each octet is two BCD


digits. The most significant, bcdMSNibble, digit of each octet is
in bits 4..7. The least significant digit, bcdLSNibble, of each octet
is in bits 0..3 Invalid BCD digits are allowed as bcdOctet may be
used to represent entities other than just numbers.};

fixedPointBCDNumber ::=

(bcdSpace* bcdMinus? bcdDigit (bcdDecimal bcdDigit )? bcdSpace*) {


This format is used to represent fixed point BCD numbers.}
(/constraint BNF.bcdOctet) {
Expressed as a sequence of two BCD nibbles. The most significant
nibble, bcdMSNibble, of each octet is in bits 4..7. The least
significant nibbles, bcdLSNibble, of each octet is in bits 0..3.} ,
+
(/constraint : BNF.eightBit) /constraint : atomic {
Expressed as a sequence of octets that are transmitted as one entity.}
);

G.5.1 Basic data type definitions


The following basic types shall be used to create elements within packed records and build more complex
derived types:
nil

::=

NIL/ constraint : BNF.fillNil { No bits delivered. An Indicator for field of length zero
octets. } ;

int

::=

(INT8 /constraint : BNF.eightBits { 8 bits signed integer. } |


(INT16/constraint : BNF.sixteenBits { 16 bits signed integer. } |
INT24 /constraint : BNF.twentyFourBits { 24 bits signed integer. } |
INT32 /constraint : BNF.thirtyTwoBits { 32 bits signed integer. } |
INT40 /constraint : BNF.fortyBits { 40 bits signed integer. } |
INT48 /constraint : BNF.fortyEightBits { 48 bits signed integer. } |
INT56 /constraint : BNF.fiftySixBits { 56 bits signed integer. } |
INT64 /constraint : BNF.sixtyFourBits { 64 bits signed integer. }
) / constraint : GEN_CONFIG_TBL.DATA_ORDER
) (/constraint GEN_CONFIG_TBL.INT_FORMAT, /constraint : atomic ) ;

unsignedInt::= (UINT8 /constraint : BNF.eightBits { 8 bits unsigned integer. } |


(UINT16 /constraint : BNF.sixteenBits { 16 bits unsigned integer. } |
UINT24 /constraint : BNF.twentyFourBits { 24 bits unsigned integer. } |
UINT32 /constraint : BNF.thirtyTwoBits { 32 bits unsigned integer. } |
UINT40 /constraint : BNF.fortyBits { 40 bits unsigned integer. } |
UINT48 /constraint : BNF.fortyEightBits { 48 bits unsigned integer. } |
UINT56 /constraint : BNF.fiftySixBits { 56 bits unsigned integer. } |

427

ANSI C12.19-2008

Document-form Descriptive Syntax

UINT64 /constraint : BNF.sixtyFourBits { 64 bits unsigned integer. }


) / constraint : GEN_CONFIG_TBL.DATA_ORDER
) /constraint : atomic;
floatingPoint::= (FLOAT32 /constraint : BNF.thirtyTwoBits, /constraint: text 32 bits single-precision
floating point real number, per IEEE Std 754-1985. |
FLOAT64 /constraint : BNF.sixtyFourBits, /constraint: text 64 bits double-precision
floating point real number, per IEEE Std 754-1985. }
) ( /constraint : GEN_CONFIG_TBL.DATA_ORDER , /constraint : atomic) ;
floatingPointCHAR ::= (FLOAT_CHAR6 (/constraint : BNF.eightBits)6 {A six-octet floating point
number.} |
FLOAT_CHAR12 (/constraint : BNF.eightBits)12 {A twelve-octet floating point number.}
|
FLOAT_CHAR21 (/constraint : BNF.eightBits)21 {A twenty-one-octet floating point
number.}
) (/constraint : BNF.floatingPointStringNumber, /constraint : atomic, /constraint :
BNF.anyChar +);
fixedPointBCD ::= (FIXED_BCD4 (/constraint : BNF.bcdOctet)4 {A fixed point number consisting of
eight BCD digits.} |
FIXED_BCD6 (/constraint : BNF.bcdOctet)6 {A fixed point number consisting of twelve
BCD digits.} |
FIXED_BCD8 (/constraint : BNF.bcdOctet)8 {A fixed point number consisting of sixteen
BCD digits.}
) (/constraint : BNF.fixedPointBCDNumber, /constraint : atomic );
fill

::=

specType::=

(FILL8 /constraint : BNF.fillEightBits { Eight zero-filled bits used as space holder or


filler. } |
(FILL16 /constraint : BNF.fillSixteenBits { Sixteen zero-filled bits used as space holder
or filler. } |
FILL32 /constraint : BNF.fillThirtyTwoBits { Thirty-two zero-filled bits used as space
holder or filler. } |
FILL64 /constraint : BNF.fillSixtyFourBits { Sixty-four zero-filled bits used as space
holder or filler. }
) / constraint : GEN_CONFIG_TBL.DATA_ORDER
) /constraint :atomic ;
(

CHAR
/ constraint : BNF.anyChar |
(NI_FMAT1
/ constraint : GEN_CONFIG_TBL.NI_FORMAT1 |
NI_FMAT2
/ constraint : GEN_CONFIG_TBL.NI_FORMAT2 |
HTIME_DATE / constraint : STD.HTIME_DATE_RCD |
LTIME_DATE / constraint : STD.LTIME_DATE_RCD |
STIME_DATE / constraint : STD.STIME_DATE_RCD |
HTIME
/ constraint : STD.HTIME_RCD |
STIME
/ constraint : STD.STIME_RCD |
TIME
/ constraint : STD.TIME_RCD |
DATE
/ constraint : STD.DATE_RCD |
RDATE
/ constraint : STD.RDATE_RCD
) / constraint : GEN_CONFIG_TBL.DATA_ORDER
) /constraint : atomic ;

sizedType::= ( (string / constraint : BNF.eightBits


{ Same as STRING (1) } |
(string S* ( intMathExpression ) ) (/constraint : BNF.eightBits)intMathExpression ) /

428

Document-form Descriptive Syntax

ANSI C12.19-2008

constraint : BNF.anyChar* { intMathExpression is measured in size-of


one CHAR octets.} |
binary / constraint : BNF.eightBits
{ Same as BINARY (1) } |
(binary S* ( intMathExpression ) ) (/constraint BNF.eightBits)intMathExpression { intMathExpression
is measured in octets. The BINARY type is atomic and,
unless it is replaced or redefined by the AMR application
to expose its content. } |
bcd
/ constraint : BNF.bcdOctet
{ Same as BCD (1) } |
(bcd S* ( intMathExpression ) ) (/constraint BNF.bcdOctet)intMathExpression { intMathExpression
is measured in octets,. }
) / constraint : atomic |
set
/ constraint : BNF.setAtomicElement
{ Same as SET (1) } |
{
(set S* ( intMathExpression
) ) (/constraint BNF.setAtomicElement)intMathExpression
intMathExpression is measured in octets, 8 Booleans
bits per octet. The atomic element can carry a minimum
of eight bits. Final element references, however, can be
made to any bit within the SET. } ;
baseType

::= (

nil |
int |
unsignedInt |
floatingPoint | floatingPointCHAR | fixedPointBCD |
fill |
specType |
sizedType )
{ All built-in types that can be assigned to Elements. All
these types are also producers of atomic elements. } ;

derivedType

::=

derivedTypeReference { Elements that are derived from packed records and bit
fields. } ;

simpleType

::=

(baseType | derivedType)

arrayType

::=

(array S* [ intMathExpression ] S* of S+ simpleType S* ) { intMathExpression


is the number of repetitions of simpleType in the array.
The size of the array shall be intMathExpression times
the size of simpleType in octets.} ;

anyElementType::=

{ Elements that are not arrays. }

(simpleType | arrayType | derivedType) { Any type that can be used in an


Element declaration. } ;

G.5.2 Data type handling


In order to add clarity to the structure of the tables, the generic data types can be used. Although their
logical interpretation is identical across all implementations, their specific definition shall be determined
using select fields from Table 00, GEN_CONFIG_TBL, as described next.
G.5.2.1 Signed integers
To allow signed integer values to transmit without requiring data format translations tagging, an indicator
in GEN_CONFIG_TBL (Table 00) is provided. This indicator, INT_FORMAT, specifies the data format
for all INTx types within the tables. The presently delineated signed integer data formats are twos
complement, ones complement and sign/magnitude. When INT_FORMAT is applicable to a type, the
constraint GEN_CONFIG_TBL.INT_FORMAT is used in the BNF definition of that type.
Examples of signed integer formats follow:
For the following three examples, the decimal number -1 is used.

429

ANSI C12.19-2008

Document-form Descriptive Syntax

Twos Complement for INT8:


1111 11112
Ones Complement for INT8:
1111 11102
Sign/Magnitude for INT8:
1000 00012
G.5.2.2 Characters and Strings
To allow different character sets to be used within the tables, the data types CHAR and STRING have
been defined. A STRING is an atomic array of CHARs. CHAR are encoded according to the character
set being used. Special Data Types (Section 6) provides a definition for CHAR and STRING. The
currently supported values of CHAR are defined in the GEN_CONFIG_TBL (Table 00) using the element
CHAR_FORMAT. The CHAR data type affects both CHARs and STRINGs. When CHAR_FORMAT is
applicable to a data type, the constraint GEN_CONFIG_TBL.CHAR_FORMAT is used in the BNF
definition of that type.
G.5.2.3 Non-integer numbers
To allow non-integer numeric values to be transmitted by different methods within the tables, additional
data types have been defined. NI_FMAT1 and NI_FMAT2 are used to transmit numeric values of varying
precision. The value of the elements NI_FORMAT1 and NI_FORMAT2, which are found in the
GEN_CONFIG_TBL (Table 00), define how NI_FMAT1 and NI_FMAT2 are to be interpreted when
reading from or writing to tables in an End Device. Special Data Types (Section 6) provides definitions
for NI_FMAT1 and NI_FMAT2 and for the different values of NI_FORMAT1 and NI_FORMAT2. When
NI_FORMAT1
or
NI_FORMAT2
are
applicable
to
a
data
type,
the
constraint
GEN_CONFIG_TBL.NI_FORMAT1 or constraint GEN_CONFIG_TBL.NI_FORMAT2 is used in the BNF
definition of that type.
G.5.2.4 Date and time formats
To allow date and time to be transmitted by different methods within the tables, additional data types
were defined. These are HTIME_DATE, LTIME_DATE, STIME_DATE, TIME, STIME, HTIME, RDATE,
and DATE. The value of the element TM_FORMAT, which is found in the GEN_CONFIG_TBL (Table
00), defines how the various date and time formats are to be interpreted when reading from or writing to
tables in an End Device. Special Data Types (Section 6) provides definitions for the date and time
formats.
When
TM_FORMAT
is
applicable
to
a
data
type,
the
constraint
GEN_CONFIG_TBL.TIME_FORMAT is used in the BNF definition of that type.

G.6 References to Types, Constants and Values


The table definition syntax provides the means for referencing decades, tables, procedures, data types,
constants, elements, sub-elements, and final elements. In addition, it is possible to utilize expressions
that evaluate to numeric values or Boolean results when defining the dimensions of arrays, sets, strings,
and binary elements; or selectors in if/then/else or switch/case constructions.
The defining syntax for elements may be placed nearly anywhere inside a packed record or bit fields of a
table document. Packed records, bit fields, and named enumerators and constants may be placed in the
beginning of the document (document scope), inside a Decade (decade scope), within a table (table
scope), or within a procedure (procedure scope). Table and procedure definitions may also be placed in
the document (document scope) or inside a Decade (decade scope).

430

Document-form Descriptive Syntax

ANSI C12.19-2008

Unnamed enumerators and constants may also be placed in the definition of an element, as such they
acquire the name of the container element as their prefix.
Resolution of (locating or not locating) any of the above types or constants shall be predictable and
unambiguous when the reference is made from anywhere in a document. In order for an entity to be
resolvable, it has to be defined either in the processed document syntax or by the syntax of the
referenced Standard. A resolved referenced entity may or may not exist in a given End Device instance,
unless specifically disqualified as a nonexistent entity in the architecture of the End Device (e.g., when
the entitys accessibility attribute is UNIMPLEMENTED), whereby forcing an entity to become
irresolvable.
For example, the element DATA_ORDER was defined by the Standard within the context of the bit field
container FORMAT_CONTROL_1, which in turn is defined within the scope of table GEN_CONFIG_TBL.
of GEN_CONFIG_DEC. One may reference the element DATA_ORDER in a number of forms and from
many different scopes. The sections below define rules that establish unambiguously the search
algorithm that leads to a uniform resolution by all implementations.

G.6.1 Scoping Rules


G.6.1.1 Predefined STD and TDL Scopes
An End Device is fully qualified by one or two files:
1. The referenced ANSI C12.19 Standard Table Definition file; and optionally
2. The vendor (e.g., End Device manufacturer) supplied table definitions file that defines the
variation, extension, restriction or qualification of the End Device relative to the published
referenced Standard.
Within each of these files (the Standard published file and the vendor registered file) we may find
definitions for types and constants that are defined at the document level.
Document type
Standard

Vendor registered

Scope selector
STD

TDL

Scope coverage
Standard document global scope.
References to a type, constant, enumerator that was
defined in the in the document scope of the
referenced (or self) ANSI C12.19 Standard
document.
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 a End Device, it is a reference to a definition within
manufacturers 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).

431

ANSI C12.19-2008

Document-form Descriptive Syntax

For example, if A_DATA_RCD were defined in a Standard document scope; then an non-strict reference
to this type may be made as follows:
Referenced made in
Standard document
Vendor registered
document

Reference to A_DATA_RCD
STD.A_DATA_RCD
TDL.A_DATA_RCD
STD.A_DATA_RCD
TDL.A_DATA_RCD

Resolved in
Standard
Standard
Standard
Standard

The reason for TDL.A_DATA_RCD, above, being resolved to Standard when referenced from the vendor
registered document is that the TDL scope inherits all STD definitions. Therefore, if a TDL reference
cannot be found in the current TDL and the current TDL is not STD then STD scope shall be searched if
the reference is not qualified as being strict.
If A_DATA_RCD were defined in both Standard and Vendor document scopes; then an non-strict
reference to this type shall be resolved as follows:
Referenced made in
Standard document
Vendor registered
document

Reference to A_DATA_RCD
STD.A_DATA_RCD
TDL.A_DATA_RCD
STD.A_DATA_RCD
TDL.A_DATA_RCD

Resolved in
Standard
Standard
Standard
Vendor document

The reason for TDL.A_DATA_RCD, above, being resolved to Vendor when referenced from the vendor
registered document is that the vendors TDL scope hides matching STD for those types defined within
the vendor files. It is also important to note under the same conditions all TDL references made in the
Standard documents shall refer to the Standard scope and not the vendors scope.
If A_DATA_RCD was defined in the Vendor document scope only; then an non-strict reference to this
type shall be resolved as follows:
Referenced made in
Standard document
Vendor registered
document

Reference to A_DATA_RCD
STD.A_DATA_RCD
TDL.A_DATA_RCD
STD.A_DATA_RCD
TDL.A_DATA_RCD

Resolved in
Not found
Not found
Not found
Vendor document

G.6.1.2 Container scopes


The Table definition syntax provides the means for referencing decades, tables, and procedures. The
names of the tables, decades, and procedures shall be unique in any context of the End Device.
Therefore, if the Standard defines a Table, then the vendor supplied End Device registered document
shall not contain a definition of a table that shares the same name as one in the C12.19 Standard being
referenced. Similarly, if the Standard defines a Decade (or a Procedure), then the vendor supplied End
Device registered document shall not contain a definition of a decade (or a procedure) that exists in the
C12.19 Standard being referenced. The TDL syntax provides means for associating a vendor table or
procedure to the context of a decade. Given that the name of decades, tables and procedures are unique
for any instance of a End Device description they shall not be qualified by a STD or TDL prefix.
All references starting with STD resolve to entities starting at the top-most level of the Standard
document. All references starting with TDL resolve entities starting at the top-most level of the document
where the reference was made; then optionally (if not found and if the document is not a Standard) then
resolves to the top-most level of the referenced Standard document.

432

Document-form Descriptive Syntax

ANSI C12.19-2008

The names of Tables, Decades and Procedures define container scopes. These are contained within the
TDL and STD.
Use of a Decade name, Table name, or Procedure name as a prefix to a type, enumerator or type
reference resolves the referenced entity starting at the top-most context of the corresponding decade,
table, or procedure referred, respectively.
Use of a decade name, table name, or procedure name in a value-expression shall be replaced by the
Decade, Table, or Procedure number. It is equivalent to typing the numeric value of the Decade, Table, or
Procedure number.
For example, assume that A_TBL (Table 102) and A_DEC (Decade 10) were defined in the Standard
document scope and B_TBL (Table 202) and B_DEC (Decade 20) were defined in the vendors
document scope then the following illustrates possible interpretations.
Referenced Name
A_TBL
A_DEC
B_TBL
B_DEC
A_TBL.IDENT
A_DEC.IDENT_RCD
B_TBL.DEMO
TYPE B_RCD = PACKED RECORD
B_VALUE : A_TBL.A_RCD;
END;

Number
102
10
202
20

Interpreted to be
The constant 102.
The constant 10.
The constant 2250 = 202 + 2048.
The constant 20 (there is no distinction between
Standard Decade numbers and Manufacturer
Decade number ranges).
The element IDENT in the scope of Standard Table
102.
The IDENT_RCD packed record that is defined in the
scope of Standard Decade 10.
The first instance of the Element DEMO in the scope
of manufacturer Table 202.
The element B_VALUE is of type A_RCD that was
defined the scope of Standard table 102.

When processing fully qualified references that begin with TDL or STD as per referenceScope, the
search shall begin in the left most scope (outer) and proceeded towards the right (the inner-most scope)
leading to the resolution of the reference. If the reference cannot be resolved and the outer scope is TDL
and the scope qualifier is not strict then a second search shall be performed, this time using STD instead
of TDL. If the reference cannot be resolved the search shall fail.
When processing fully qualified references that begins with decScopeReference, tblScopeReference or
procScopeReference the search shall begin in the left most scope (outer) and proceeded toward the right
(the inner-most scope) leading to the resolution of the reference. If the reference cannot be resolved, the
search shall fail.
When processing partially qualified references that begin with rcdIdentifier, bfldIdentifier enumIdentifier or
constIdentifier the initial search for the rcdIdentifier, bfldIdentifier enumIdentifier or constIdentifier shall
begin in the current scope, (the scope where the reference was made) then if not found repeat in each of
the parent scopes of the current document (TDL scope) until a match is found or until a match is not
found. If the current document is vendor registered, then the search shall be repeated once in the STD
scope of the registered referenced Standard. An exception to the above rule shall apply when a current
scope being processed is a Table or Procedure that has been associated with a Decade scope. In this
case, the Decade scope shall be searched first then search shall continue in the TDL scope where that
Decade is defined. Once all parent components were found, the reference shall be considered resolved;
otherwise, it shall be considered unresolved.
All rcdIdentifier, bfldIdentifier, enumIdentifier and constIdentifier shall be unique within any inner scope
where they were defined. rcdIdentifier, bfldIdentifier enumIdentifier and constIdentifier may be defined in

433

ANSI C12.19-2008

Document-form Descriptive Syntax

an inner scope and an outer scope (upper). The first matching definition shall be the resolved one
according to the search rules defined above.
Example: Assume that A_RCD and A_TBL were defined in A_DEC and A_RCD was also defined in
A_TBL of a Standard document, then:
Referenced Name
A_RCD
A_RCD
A_DEC.A_RCD
A_RCD
A_TBL.A_RCD

Reference
d from
TDL
A_DEC
Anywhere
A_TBL
Anywhere

Resolves to
Not Found
A_RCD defined in A_DEC
A_RCD defined in A_DEC
A_RCD defined in A_TBL
A_RCD defined in A_TBL

G.6.2 References to values


References can be made to the values of any element, sub-element, or constants that are defined within
the structure of any table. Also, references can be made to Decade names, Table names, Procedure
names, or enumerated constants. Such references, when found in a mathematical expression, shall be
evaluated to values they were assigned when defined.
simpleElementName

::= anyElementName / constraint : text Shall be of type baseType other than


set;

arrayElementName

::= anyElementName / constraint : text Shall be of type arrayType;

setElementName

::= anyElementName / constraint : text Shall be of type set.;

index

::= intMathExpression { An integer used to select elements in collections. } ;

localElement

::= (simpleElementName |
arrayElementName S* [ index ] | { index is the element position in the array. }
setElementName S* [ index ] | { index is the bit position in the set.}
S* localElement S* ) { This definition may be used to refer to run-time
instantiated Table Element value. Correct dimensions (see index) shall
be provided to by the application to avoid an error assert condition. A
typical use is to refer to a specific value of an element for the purpose of
communication or calculation.} ;

localElementReference ::= (simpleElementName |


arrayElementName S* [ S* ] | { index is the element position in the array. }
setElementName S* [ S* ] |
{ index is the bit position in the set.}
S* localElementReference S* ) { This definition may be used to refer to Table
Element that are references by the syntax. Full knowledge of dimensions
and extents is not needed here. Typical use is to make references to
elements for qualifying purpose. } ;
psuedoElementName

::= lastDimension { The actual number of Elements in the container of the


referenced Element. See use-case example for value } |
lastIndex { The positional index of the referencing Element in its container. For
use-case see value } |
S* psuedoElementName S* ;

elementRoot

::= (tblIdentifier? S* [.])? S* localElement (S* [.] S* localElement)* |


S* elementRoot S* ;

434

Document-form Descriptive Syntax

ANSI C12.19-2008

element

::= elementRoot
elementRoot ([.] S* psuedoElementName)
[.]? S* psuedoElementName
S* element S* ;

{ Form 1 } |
{ Form 2 } |
{ Form 3 } |

finalElement

::= element / constraint : BNF.baseType {Shall result in a baseType that yields


the inner-most Element member of the referenced Element leading to a
value.} ;

elementReferenceRoot ::= (tblIdentifier? S* [.])? S* localElementReference (


S* [.] S* localElementReference)* |
S* elementReferenceRoot S* ;
elementReference

::= elementReferenceRoot
elementReferenceRoot ([.] S* psuedoElementName)
[.] S* psuedoElementName
S* elementReference S* ;

{ Form 1 } |
{ Form 2 } |
{ Form 3 } |

finalElementReference ::= elementReference / constraint : BNF.baseType {Shall result in a reference to


a baseType that is the inner-most Element member of the referenced
Element.} ;
The finalElementReference can take a number of forms as explained below:
Form
1

Example
GEN_CONFIG_TBL.FORMAT_CONTROL_1.DATA_ORDE
R

GEN_CONFIG_TBL

DATA_ORDER

.DATA_ORDER

Description
The value of DATA_ORDER
found
in
the
FORMAT_CONTROL_1 bit field
of GEN_CONFIG_TBL.
The numeric value assigned to
GEN_CONFIG_TBL (0).
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 which
contains it.
The value of DATA_ORDER.
DATA_ORDER is the first finalelement that bears this name,
when found following a search
starting with its current scope
then continuing towards outer
scopes.

435

ANSI C12.19-2008

GEN_CONFIG_TBL.STD_TBLS_USED[0].lastDimension

GEN_CONFIG_TBL.STD_TBLS_USED.lastDimension

GEN_CONFIG_TBL.FORMAT_CONTROL_2.lastIndex

GEN_CONFIG_TBL.STD_PROC_USED.lastIndex

TYPE A_RCD = PACKED RECORD


IF .lastDimension == 3 THEN
HI : UINT8;
LO: UINT8;
ELSE
W: UINT16;
END;
END;
TYPE B_RCD = PACKED RECORD
X : UINT8;
Y: ARRAY[X] A_RCD;
Z: STRING(5);
END;
TYPE A_RCD = PACKED RECORD
IF .lastIndex == 3 THEN
HI : UINT8;
LO: UINT8;
ELSE
W: UINT16;
END;
END;
TYPE B_RCD = PACKED RECORD
X : UINT8;
Y: ARRAY[5] A_RCD;
Z: STRING(5);
END;

436

Document-form Descriptive Syntax

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 bitindex.
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).
Returns the value 1. It is the
positional index of the Element
FORMAT_CONTROL_2 in its
container GEN_CONFIG_TBL.
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.
Assuming that the value of the
Final Element B_RCD.X is set to
5, then .lastDimension Returns
5 as the active extent of array Y.
Therefore, if the value B_RCD.X
is 3, B_RCD.Y shall contain the
Elements HI and LO; otherwise it
shall contain the element W.
Note that this generic reference
does not require any direct
knowledge of declaration where
A_RCD is placed. Thus making
its definition generic.
.lastIndex Returns the active
placement index of the packed
record A_RCD in any context
where used. In this example it
will be in array B_RCD.Y.
Therefore, when A_RCD is the
fourth array member of Y it will
contain the Elements HI and LO;
otherwise it contains the element
W. Note that the Standard does
not permit array members to
have different sizes. In this
example all A_RCD are 16-bit
wide.

Document-form Descriptive Syntax

ANSI C12.19-2008

tdlScopeReference

::= tdl { The top-level scope of the active TDL document. } ;

stdScopeReference

::= std { The top-level scope of the standard document. When the Standard
document is also the active document, then use of tdlScopeReference is
equivalent to use of stdScopeReference. } ;

decScopeReference

::= decIdentifier { The scope of the identified decade is the Decade name. } ;

tblScopeReference

::= tblIdentifier { The scope of the identified table is the Table name. } ;

procScopeReference

::= procIdentifier { The scope of the identified procedure is the Procedure name. }
;

referenceScope

::=

rcdReference
bfldReference

::= referenceScope? rcdIdentifier { A reference to a packed record. } ;


::= referenceScope? bfldIdentifier { A reference to a bit field. } ;

tdlScopeReference | stdScopeReference | decScopeReference


tblScopeReference | procScopeReference )? [.] |
S* referenceScope S*; { A reference to any one scope. }

derivedTypeReference ::= (rcdReference | bfldReference)


enumTypeReference

{ Reference to any derived type. } ;

::= referenceScope? ((rcdIdentifier | bfldIdentifier) S* [.] S*)? enumIdentifier


{Reference to an named or unnamed enumerator. Unnamed
enumerators required a derivedTypeReference to locate the final
element whose name was used to as a basis for the enumIdentifier. If
the unnamed enumerators Element name is FOO then the unnamed
enumerator can be referenced as FOO_ENUM. } ;

elementIdentifierReference ::= derivedTypeReference S* [.] S* anyElementName { A reference to any


Element named that is defined in a packed record or bit field. The scope
of the element needs to be specified with sufficient detail so that the
correct packed record or bit field can be located. }

G.6.3 Value
A value shall be a signed or unsigned integer, a reference to a decade, table or procedure number or a
reference to a final element whose value can be converted to an integer. A value (in contrast to
anyValue) returns an integer result based on the following conversion rules:
1. NI_FMAT1 and NI_FMAT2 , floatingPoint, floatingPointCHAR and fixedPointBCD shall be
truncated to an integer value.
2. BCD where shall return zero if it cannot be reduces to a valid fix point number; or the be
truncated to an integer value representation of the BCD number.
3. BCD, fixed or floating point elements shall be truncated to an integer value.
4. STRING or CHAR elements shall return zero if their length is zero, or they hold only space;
otherwise they shall return one.
5. Boolean and SET members types return zero (false) or one (true).
6. FILL types and NIL type shall return zero.
7. Inaccessible final elements (as per elements that are defined in a table that is unavailable in a
run-time instance of the End Device table set) shall return zero.
8. Inaccessible final element (as per elements that are not available for selection due to nonmatching condition of an IF or SWITCH clause) shall return zero.

437

ANSI C12.19-2008

Document-form Descriptive Syntax

9. Inaccessible final elements (as per elements that are not available for selection due to
irresolvable reference in the table set) shall return zero, and flag a table set error condition.
10. The pseudo final element lastDimension shall return the actual number of Elements in its parent
container, if the parent element is not an array; otherwise, it shall return the actual extent of its
containing array. i.e., lastDimension reports the actual number of siblings shared by the referred
Element + 1.
11. The pseudo Final Element lastIndex shall return the Elements inner-most index relative to the
beginning of its defining packed record, bit field, array or set. When the referenced Element is a
packed record or a bit field this value shall be identical to the Element index defined by the
defining syntax. When the referred element is an array or a set member then this is the index to
the Element position within the array or set.
anyValue ::=

floatingPointStringNumber / constraint : text


A floating point number that is not expressible as a BNF.anyNumber
shall trigger floating point mode expression evaluation of all subsequent
expression members. |
true
/ constraint : text Evaluates to 0. |
false
/ constraint : text Evaluates to 1. |
constValue
{ Evaluates to the corresponding table, procedure or decade value or the
constant value in a positional assignment of an enumeration constant. }
|
(finalElement
{ The value of the selected final element } / constraint : text
According to the constraints listed in at the beginning of this subsection. ) |
S* anyValue S* ;

value

::= anyValue /constraint : BNF.int


;

infixMathExpression
::=
cond

{ Evaluation is always cast to a signed integer. }

mathExpression infixOp mathExpression


precedence rules of BNF.infixOp. } ;

::= mathExpression
/constraint : text If the result is zero it shall be interpreted as
BNF.false; otherwise it shall be interpreted as BNF.true
'?' mathExpression { true case } (':' mathExpression {false case })? ;

mathExpression ::=

infixMathExpression
cond
prefixOp mathExpression
anyValue |
( mathExpression ) |
S* mathExpression S*

intMathExpression ::=

mathExpression /constraint : BNF.int


integer. } ;

prefixOp

+
-
~

::=

!
multOp

438

{ Infix expression following the

::=

{ Infix expression } |
{ Conditional expression } |
{ A prefixed expression } |
{ A simple unsigned numeric value }
{ A parenthesized expression }
{ Allow for spaces for readability } ;
{ Evaluation is always cast to a signed

{ Positive integer operator, as in +10 } |


{ The negation operator, changes the sign of the operand, as in -20 } |
{ Bitwise not operator } /constraint : text casts argument to BNF.int
prior to computation |
{ Logical not operator } /constraint : text casts result to BNF.boolValue
prior to computation ;
{ Modulus (remainder) operator } /constraint : text casts arguments to
BNF.int prior to computation |

Document-form Descriptive Syntax


*
/

{ Multiplication operator } |
{ Division operator } ;

ANSI C12.19-2008

addOp

::=

+
-

{ Addition operator } |
{ Subtraction operator } ;

bitShiftOp

::=

(<<
>>

{ Bitwise arithmetic shift left } |


{ Bitwise arithmetic shift right sign is preserved and shifted into
magnitude area} |
{ Bitwise logical shift right. Sign is not preserved, it is zeroed after being
shifted into magnitude bits. }
/constraint : text casts argument to BNF.int prior to computation ;

>>>

condCmpOp

::=

<
>
>=
<=

{ Less-than operator. } |
{ Greater-than operator } |
{ Greater-than or equal-to operator } |
{ Less-than or equal-to operator } ;

condEqOp

::=

==
!=

{ Equality operator } |
{ Inequality operator } ;

bitAndOp

::=

&

{ Bitwise AND operator } /constraint : text casts argument to BNF.int


prior to computation ;

bitXOrOp

::=

{ Bitwise exclusive OR operator } /constraint : text casts argument to


BNF.int prior to computation ;

bitOrOp

::=

{ Bitwise OR operator } /constraint : text casts argument to BNF.int


prior to computation ;

logAndOp

::=

&&

{ Logical AND operator } /constraint : text casts argument to


BNF.boolValue prior to computation ;

logOrOp

::=

||

{ Logical OR operator } /constraint : text casts argument to


BNF.boolValue prior to computation ;

infixOp

::=

(multOp | addOp | bitShiftOp | condCmpOp | condEqOp |


bitAndOp | bitXOrOp | bitOrOp | logAndOp | logOrOp)
/constraint : text
"These operators are grouped in order of precedence from high on the
left to low on the right. Internal group members have identical relative
precedence, as such they are evaluated, upon encounter from left to
right. { Example multOp members (*,/ and %) have higher
precedence than addOp members (+ and -), however within multOp
the members *,/ and % have identical precedence, and when
encountered they will have a relative precedence with the left most
operator encountered having the highest. } ;

G.7 Conditionals
G.7.1 IF statements
The IF condition shall be a Boolean resulting from the evaluation of an intMathExpression. If the result is
zero it shall be interpreted as false; otherwise it shall be interpreted as true.

439

ANSI C12.19-2008
condition

::=

Document-form Descriptive Syntax


intMathExpression ;

G.7.2 SWITCH statements


A SWITCH selection expression identifies an integer value that needs to be matched. This selection
value is derived from the evaluation of an intMathExpression.
caseExpression ::=

intMathExpression ;

G.8 Bit field


Some data types do not always lend themselves to end on an octet boundary. Where these occur, they
shall be logically grouped together into a bit field definition, which shall end on an octet boundary. For
purposes of description, the bit field is treated as the basic object for appearance in the table structure.
Figure H.3 illustrates a sub-type structure.
Most Significant Byte
Octet
((n*8)-1)..((n*8)-9)

Octet
...

Octet
...

Octet
...

Octet
15..8

Least Significant
Byte
Octet
7..0

n = # of octets used
Figure H.3Sub-types and bit field bit ordering
A bit field shall be created by bfldType. A bit field may contain one or more IF or SWITCH statements to
modify its structure under some conditions. For the purpose of transport, the dimensions of a bit field and
its octet ordering shall be defined in terms of a basic data type (Section 5.4) as expressed in
bfldAssignedType. The bit field identifier, bfldIdentifier, is the name of the derived bit field data type, and it
can be referenced anywhere as if it were a built-in data type.
bfldAssignedType::=

unsignedInt

{ Defines the data type associated with this bit field. } ;

bfldType

::=

type S+ bfldIdentifier S* = S* bit S+ field S+ of S+ bfldAssignedType S+ (


bfldMember)* S* end S* ; |
S* bfldType S* ;

bfldMember

::=

anyElementName S* : subType memberProperties? S* ; { A sub-element } |


bfldCase
{ A CASE statement. } |
bfldIf
{ An IF statement . } |
S* bfldMember S* ;

startBitInclusive ::=

number { The first bit that is occupied by a bit-field sub-element. } ;

endBitInclusive ::=

number { The last bit that is occupied by a bit-field sub-element.} ;

bfldBitRange

( S* startBitInclusive S* .. S* endBitInclusive S* ) { A bit field range selector.


This identifies the staring (startBitInclusive) and ending endBitInclusive
bit positions that the sub-element occupies.
Example: UINT(2..5) is a four bit unsigned integer. This sub-element
occupies bit positions 2 through 5. } |
S* bfldBitRange S* ;

440

::=

Document-form Descriptive Syntax

ANSI C12.19-2008

subType

::=

(BOOL S* ( S* startBitInclusive S* ) ) /constraint : BNF.boolValue { The


startBitInclusive value identifies the bit position occupied by this
Boolean. } |
(INT
bfldBitRange) /constraint : GEN_CONFIG_TBL.INT_FORMAT { A
signed integer. } |
UINT bfldBitRange { An unsigned integer } |
(FILL bfldBitRange) /constraint : BNF.zeroValue { Bit range shall be set to
zero } |
S* subType S* ;

bfldIf

::=

if S+condition then S+ bfldMember* (S* else bfldMember* S*)? end S* ; |


S* bfldIf S* ;

bfldCase

::=

switch S+ caseExpression S+ of S+ bfldCaseMember? S* end S* ; |


S* bfldCase S* ;

bfldCaseMember

::=

(case S+ (number | constValue) (S* .. S* (number | constValue))? S* :


bfldMember+)*
(default S* : bfldMember+) |
S* bfldCaseMember S* ;

G.9 Set
A SET is a sizedType member of the type set. It is a collection of Booleans, eight Booleans per octet. The
dimension of a SET is thus measured in octets, where each octet is a atomic element. Each Boolean
member of the SET is a final element.
SETs are transmitted as an array of UINT8, however when using array notation, indices to SET members
refer to the Boolean bits and not to the octet. When transmitted, indices and offsets refer to the UINT8
atomic element. The first octet transmitted contains bit 0 though 7, of the SET, the second octet contains
bits 8 through 15, as shown below.
Octet number
Bit number

Octet 1
Octet 2
Octet n
7 to 0
15 to 8
((n*8)-1) to ((n*8)-8)
Figure H.4Set octets and bit ordering

Where n represents the size of the SET in octets.


Example: The following illustrates the method for specifying which member of a set is to be accessed.

FLAGS_USED : SET(16);

IF FLAGS_USED[1] THEN

END;
IF GEN_CONFIG_TBL.STD_TBLS_USED[UDT_0_TBL] THEN

END;
Note that in this last example, UDT_0_TBL used in this context is interpreted as the corresponding table
number (84). Also FLAGS_USED[1] is a reference to the second bit (bit 1) of the first octet of 16 in the
SET.

441

ANSI C12.19-2008

Document-form Descriptive Syntax

G.10 Array
Repetitions of the same data type, used to describe a single element, can be grouped together in an
array. Array elements are indexed starting with zero. Arrays are always transmitted from element zero to
the last element. 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

Figure H.5Single dimension array ordering


Arrays are one dimensional. Multi-dimensional arrays can be created indirectly through the use of arrays
of arrays. Array dimension elements defined in the same local scope shall be defined before they are
used in a dimension statement; otherwise, they shall be resolved in the referenced scope.
When the dimension of the array, as expressed by intMathExpression , is zero, then the array content
collapses to a zero elements and the array elements shall not be transported.
Referenced final elements of array-elements that collapsed due to zero dimension, or due to other
exclusion (such as rcdIf or rcdCase or un-implemented table) shall evaluate to 0 (numeric or binary
elements), space (CHAR or STRING elements) or FALSE (set or Boolean elements).
When evaluated for sizing of an array, the evaluation of intMathExpression shall produce a non-negative
integer. The size in octets of each element of an array shall be identical to the size of any other element
of the same array.
When CHAR is used as the array type, there is no justification implied, each char is treated as a single
array member. When STRING is used in the array type, there is no justification implied for the individual
CHAR members of the string, all CHARS within the STRING shall be transported. It is suggested that a
space character (0x20) be used as fill or pad.

G.11 Packed record


Packed records are used to group element types, anyElementType, together as a new derived data type.
A packed record can contain one or more IF statements or SWITCH statements to modify its structure
conditionally. The content (elements) and size of a packed record may vary with changing run-time IF or
SWITCH conditions.
All derived types and referenced elements shall be defined before they are used in a packed record.
rcdType

::= type S+ rcdIdentifier S* = S* packed S+ record S+ rcdMember* end (S+


memberProperties*)? S* ; |
S* rcdType S* ;

rcdMember

::= anyElementName S* : S* anyElementType (S* memberProperties)? S* ;


rcdIf
|
rcdCase |
S* rcdMember S* ;

rcdIf

::=

if S+ condition S+ then S+ rcdMember* (S* else rcdMember* S*)? end S* ; |


S* rcdIf S* ;

rcdCase

::=

switch S+ intMathExpression S+ of S+ rcdCaseMemberS* end S* ; |


S* rcdCase S* ;

442

Document-form Descriptive Syntax

rcdCaseMember::=

ANSI C12.19-2008

(case S+ (number | constValue) (S* .. S* (number | constValue))? S* :


rcdMember+ )* { Implements one or more rcdMember if the switch
evaluation matches the numeric range stated in the case expression. }
{ The default implementation when none of the
(default S* : rcdMember+)?
case members matches the switch value. } |
S* rcdCaseMember S* ;

G.12 Constants
Constants are symbolic representations of integer values that may be used in any math expression, and
to reference ARRAY and SET elements by position. Table names, decade names, and procedure names
are implicit constants derived from their respective number.
?

constType

::= type S+ ((derivedTypeReference S* [.] S*) enumIdentifier S* = S*)? constants S+


constMember* end S* ; |
S* constType S* ;

constMember

::= constIdentifier S* : S* anyNumber S* ; |


S* constMember S* ;

constValue

::= ((referenceScope | enumTypeReference S* [.] S*) constIdentifier) / constraint :


BNF.anyNumber { Evaluates to the corresponding constant numeric
value. } |
tblIdentifier / constraint : BNF.tblNumber { Evaluates to the corresponding table
number. } |
decIdentifier / constraint : BNF.decNumber { Evaluates to the corresponding
decade number. } |
procIdentifier / constraint : BNF.procNumber { Evaluates to the corresponding
procedure number. } |
S* constValue S* ;

Example 1:
TYPE ERROR_BITS_ENUM = CONSTANTS
TAMPER_CNST
:0;
REVERSE_FLOW_CNST
:1;
END;
Example 1 above shows a constants declaration in some document, decade, table or procedure scope.
This declaration permits the use of the identifiers TAMPER_CNST and REVERSE_FLOW_CNST in any
mathematical expression. Their numeric equivalent values shall be used (in this case 0 and 1
respectively). Conflicts in constant names can be resolved by providing better scope resolution, such as
ERROR_BITS_ENUM.TAMPER_CNST, or ERROR_TBL.ERROR_BITS_ENUM.TAMPER_CNST as
needed.
Example 2:
TYPE ERROR_BITS_RCD.ERROR_BITS_ENUM = CONSTANTS
TAMPER_CNST
:0;
REVERSE_FLOW_CNST
:1;
END;
Example 2 above shows a constants declaration that associates the positional constant assignments that
were made for a SET or ARRAY element that is located inside ERROR_BITS_RCD (See TDL File Form
unnamed enumerators). This declaration permits the use of the identifiers TAMPER_CNST and

443

ANSI C12.19-2008

Document-form Descriptive Syntax

REVERSE_FLOW_CNST in any mathematical expression. Their numeric equivalent values shall be used
(in this case 0 and 1 respectively). Conflicts in constant names cane be resolve by providing better scope
resolution,
such
as
ERROR_BITS_ENUM.TAMPER_CNST,
or
ERROR_TBL.ERROR_BITS_ENUM.TAMPER_CNST
or
ERROR_TBL.ERROR_BITS_RCD
.ERROR_BITS_ENUM.TAMPER_CNST as needed.

G.13 Tables
Tables expose and instantiate one packed record into a final data structure. This packed record shall be
resolved before it is used in a table. The table element also introduces a table scope. All types and
enumerators that are defined inside a table scope are local to the tables scope without conflict with all
other types that may be defined in any other scope.
tableDefinition ::= table S+ tblNumber S+ tblIdentifier S* = S* rcdReference S* ; |
S* tableDefinition S* ;

G.14 Procedures
Procedures represent actions that can be performed by the End Device. A procedure is initiated by
writing to table 7 and the result is retrieved by reading table 8. The rcdReference in the request part of
this statement defines the PARM_RCD in table 7. Similarly, the rcdReference in the response part of this
statement defines the RESP_DATA_RCD in table 8.
procDefinition ::=

procedure S+ procNumber S+ procIdentifier (


S+ request S* = S* rcdReference)? (S+ response S* = S* rcdReference)? S* ; |
S* procDefinition S* ;

The procDefinition introduces a procedure definition and a procedure scope. All types defined inside a
procedure scope are local to the procedures scope without conflict with all other types that may be
defined in any other scope. In addition to providing yet another scope, procedure elements also provide
implicit instructions to construct the parameters and the response elements in Table 7,
PROC_INITIATE_TBL and Table 8, PROC_RESP_TBL.
Each procedure request parameter shall extend STD.PROC_INITIATE_TBL.STD_PARM_RCD (or
MFG_PARM_RCD) with the request rcdIdentifier. Each procedure response parameter shall extend
STD.PROC_RESPONSE_TBL.STD_RESP_RCD (or MFG_RESP_RCD) with the response rcdIdentifier.
The decision whether Standard (STD) or Manufacturer (MFG) target parameters and responses are used
is guided by the procedure type, being standard or manufacturer.
The invocation of the procDefinition directive, effectively builds an extension to PROC_INITIATE_TBL
and PROC_RESPONSE_TBL.
Example: The following shows the result of invoking procDefinition for standard procedure numbers X, Y
and Z, and manufacturer procedures X and Y.

444

Document-form Descriptive Syntax

ANSI C12.19-2008

TYPE STD_PARM_RCD = PACKED RECORD


IF PROC.TABLE_PROC_NBR == X THEN
PROC_DATA_X : rcdIdentifier ;
END;

IF PROC.TABLE_PROC_NBR == Y THEN
PROC_DATA_Y : rcdIdentifier ;
END;

IF PROC.TABLE_PROC_NBR == Z THEN
PROC_DATA_Z : rcdIdentifier ;
END;
END;
TYPE MFG_PARM_RCD = PACKED RECORD
IF PROC.TABLE_PROC_NBR == X THEN
PROC_DATA_X : rcdIdentifier ;
END;

IF PROC.TABLE_PROC_NBR == Y THEN
PROC_DATA_X : rcdIdentifier ;
END;
END;
TYPE PARM_RCD = PACKED_RECORD
IF PROC.MFG_FLAG == FALSE THEN
STANDARD
: STD_PARM_RCD;
END;
IF PROC.MFG_FLAG = TRUE THEN
MANUFACTURER
: MFG_PARM_RCD;
END;
END;
TYPE PROC_FORMAT_RCD = PACKED RECORD
PROC
: TABLE_IDB_BFLD;
SEQ_NBR
: UINT8;
PARM
: PARM_RCD;
END;
The index of each implied IF statement is the procedure number, thus ensuring that the extension is not
order of declaration dependent. The listing below illustrates this process when applied to Table 7,
PROC_INITIATE_TBL:
Example index values for element 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

445

ANSI C12.19-2008

Document-form Descriptive Syntax

Example index values for element of PROC_FORMAT_RCD that are found in Table 7,
PROC_INITATE_TBL
Procedure #
Element Name
Element
Index
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.

G.15 Single Line Math Expressions


Single Line Math Expressions (SLM) represent information that is provided by the programmer of the End
Device for use as information for the Utility or service provider. The information is a mathematical
expression, similar to an equation that may be used in a spreadsheet. The expression is typically used to
clarify the implementation or describe how a Table Element value is computed and its dependence on
other Table Elements. When used SLM is encoded as STRINGs in Tables. The following BNF notation
defines the construction rules for SLM.
Note: This release of the Standard does not provide a list of built-in functions.
tblIdentifierOrAlias

::=
tblIdentifier
{ Any Table name } |
'ST' S* '(' slmIntMathExpression ')'
{ Shorthand for BNF.tblIdentifier that is
also a Standard Table. } |
'MT' S* '(' slmIntMathExpression ')'
{ Shorthand for BNF.tblIdentifier that is
also a Manufacturer Table. } |
S* tblIdentifierOrAlias S* ;

slmLocalElement::=
slmElementRoot ::=

localElement | number { number is the index of the element. } ;


tblIdentifierOrAlias S* '.' S* localElement (S* '.' S* localElement)* |
S* slmElementRoot S* { Absolute path since the context is unknown.} ;

slmElement

slmElementRoot ('.' S* psuedoElementName)?


S* slmElement S* ;

::=

slmFinalElement::=

slmElement /constraint : BNF.baseType { Shall result in a path to a base type


that yields a Final Element. } ;

slmValue

anyValue | tblIdentifierOrAlias | slmFinalElement |


S* slmValue S* ;

::=

slmIntMathExpression
::=
slmMathExpression /constraint : BNF.int
signed integer. } ;

{ Evaluation is always cast to a

slmInfixMathExpression
::=
slmMathExpression infixOp slmMathExpression { Infix expression following the
precedence rules of BNF.infixOp. } ;
slmMathExpression

446

::=

Document-form Descriptive Syntax


slmInfixMathExpression
slmFunction
slmCond
prefixOp slmMathExpression
slmValue
'(' slmMathExpression ')'
S* slmMathExpression S* ;
slmCond

ANSI C12.19-2008
{ Infix expression } |
{ A function with arguments } |
{ A conditional expression } |
{ A prefixed expression. } |
{ A simple numeric value } |
{ A parenthesized expression } |

::= slmMathExpression '?' slmMathExpression { true case } (':' slmMathExpression {false


case })? ;

slmValueOrReference
::=
slmMathExpression | slmElement { The Element may be Final Element or the
name of an array, set or derived type. This facilitates the use of an
expressions in arguments to function that operates on a data structure
not only a Final Element. Example: The SLM expression
@SUM(GEN_CONFIG_TBL.STD_TBLS_USED) may sum all the set
bits in the set, yielding the number of Standard Tables used by the End
Device. } ;
slmFunctionArgs::=
slmFunction

slmValueOrReference (',' slmValueOrReference)* ;

::=
'SL' S* '(' slmIntMathExpression ')' { Alias for the result returned by the SLM expression
found at index BNF.arrayElementName [ BNF.slmIntMathExpression]
entry of the table which contains the 'SL' term. This is equivalent a
verbatim replacement of the expression IN(BNF.slmIntMathExpression)
with the SLM expression
found at the integer index BNF.slmIntMathExpression of the
array of the referencing SLM. } |
'IN' S* '(' slmIntMathExpression ')'
{ Alias for the value sensed, measured of
reported value by the associated source selection at index
BNF.slmIntMathExpression in the array of source selections that related
to this SLM. Example: Assume we have three sources: RMS Volts
(Vrms at index 0), RMS Current (Irms at index 1) and Apparent Power
(VA at index 2) then the SLM expression "IN(0) * IN(1)" indicates that
the Apparent Power VA was computed as the product of Irms and
Vrms. } |
'OU' '(' slmIntMathExpression ')' ('=' slmMathExpression)? { Alias for sensing and optional
driving an outptut control BNF.slmIntMathExpression } |
'@' simpleElementName S* '(' slmFunctionArgs ')' { A predefined function name. Example
@ABS(BNF.slmMathExpression).} |
S* slmFunction S* ;

Example 1: Associated sense value 5 time 0.7


IN(5) * 0.7
Example 2: The value shown in example 1 (assuming it to be at index 3) plus 10
SL(3) + 10
This is equivalent to entering IN(5) * 0.7 + 10

447

ANSI C12.19-2008

Document-form Descriptive Syntax

Example 3: Assuming that source select 0 is Volts RMS and source select 1 is Ampere RMS and source
select 2 is VA apparent then the following expression expresses VA apparent:
IN(0) * IN(1)
Example 4: If the the average demand is > 1000 then report 1 otherwise 0, based on the demands
reported in Table 28, at indices 2 and 6.
((ST(27).PRESENT_DEMAND[0].DEMAND_VALUE + ST(27).PRESENT_DEMAND[6].
DEMAND_VALUE) > 1000) ? 1 : 0
Example 5: The total energy consumed across Phase A (index 2), Phase B (index 4) and Phase C (index
6).
@SUM(ST(27).PRESENT_VALUE[2], ST(27).PRESENT_VALUE[4],
ST(27).PRESENT_VALUE[6])
Example 6: Same as example 5, using indices instead of mnemonics.
@SUM(ST(27).1.2, ST(27).1.4, ST(27).1.6)

G.16 Properties
Properties represent information that can be attached to an End Device Document Form definition or any
item in the definition. A single property or multiple properties can be attached to a End Device, Table,
Procedure, PACKED RECORD or BIT FIELD types; or any member of a PACKED RECORD, BIT FIELD
or SET declaration such as Element, Sub-element or Final element.
The DESCRIPTION property is common across all items. This property allows information about an item
to be specified.
The LABEL property is common across all items. It allows a short meaningful string to be associated
with an item definition. A label is intended to be a alternate presentation text for the name of the item.
The name of an item shall be used in TDL expression only.
The ENUM property enumerates a list of valid values for an element. This property can only be applied
to a final element. Values that are not explicitly listed shall be considered invalid.
The ASSERT property provides a validation expression for an element or describes an inter-field or intertable constraint.
text

::=

["] anyChar* ["]


{ Semi colons are allowed within text as they are
distinguished from the terminal ';' by virtue that they are enclosed within
double quotes.
A double quote may be present by prefixing it
with the escape character.
e.g., "This is a valid \"text\" ; followed by
a semicolon" ; } ;

enumMember

::=

(number | true| false) S* '=' S* text S* ';' |


S* enumMember S* ;

enumerator

::=

enum S+ (enumIdentifier S* '=' S*)? enumMember* end S* ';' |


S* enumerator S* ;

memberProperties

::=

commonProperties enumerator? ;

commonProperties

::=

((label S* text S* ';')?


(description S* text S* ';')?
(assert S* '(' condition ')' S* (('ERROR' | 'WARN' | 'INFO') S*)? /
constraint : text Default assertion is 'ERROR' text S* ';')* ) |

448

Document-form Descriptive Syntax

ANSI C12.19-2008

S* commonProperties S* ;
fieldProperties

::=

field simpleElementName commonProperties ;

typeProperties

::=

type derivedTypeReference commonProperties? fieldProperties* ;

tblProperties

::=

commonProperties? typeProperties* ;

procProperties

::=

commonProperties? typeProperties* ;

properties

::=

property S* of S* table tblIdentifier tblProperties end ';' |


property S* of S* procedure procIdentifier procProperties end ';' |
property S* of S* typeProperties end ';' |
S* properties S* ;

Example:
PROPERTY OF TABLE ACT_LP_TBL
LABEL Actual load profile table ;
DESCRIPTION ACT_LP_TBL (Table 61) contains actual values for the
Load Profile application limiting parameters.
These parameters provide for up to four independent sets of
Load Profile data. ;
ASSERT(ACT_LP_TBL.LP_MEMORY_LEN >= (ACT_LP_TBL.NBR_BLKS_SET1 + 8 ) *
ACT_LP_TBL.NBR_BLK_INTS_SET1 * ACT_LP_TBL.NBR_CHNS_SET1* 2)
ERROR Inconsistent settings for ACT_LP_TBL;
END;

G.17 Document Form Starting Production Rule


The BNF.syntax production-rule is the starting point for encoding the Document Form Table-definitions.
syntax ::= ((rcdType | bfldType | constType | enumerator | properties)* (procDefinition | tableDefinition))* ;

449

ANSI C12.19-2008

Date-time Elements Conversion Algorithm (TM_FORMAT=3 and TM_FORMAT=4)

ANNEX H: Date-time Elements Conversion Algorithm (TM_FORMAT=3 and


TM_FORMAT=4)
(Informative)
The following algorithm shows how date and time fields represented using TM_FORMAT=3 or
TM_FORMAT=4 are converted to a date and time in the Gregorian calendar. This algorithm includes the
complete leap years rules handling: leap years are all years divisible by 4, with the exception of those
divisible by 100, but not by 400. This algorithm can be used before or after the Algorithm for converting
from transported End Device time to End Device operational time as defined in the intro of Decade 5.
This algorithm is provided as reference and any other equivalent algorithms can be used instead.
#include <stdio.h>
void timeDateToYMDHM(unsigned long timestamp)
{
static unsigned int totalDaysByMonth[] =
{ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
unsigned int year, month , day , hour, minute;
hour = timestamp % 1440 / 60;
minute = timestamp % 60;
timestamp /= 1440;
year = 1970 + (timestamp / ((unsigned long) 100 * 1461 - 3)) * 400;
timestamp %= 100 * 1461 - 3;
if (timestamp >= 32 * 1461 + 789)
timestamp++;
if (timestamp >= 57 * 1461 + 789)
timestamp++;
if (timestamp >= 82 * 1461 + 789)
timestamp++;
year += (timestamp / 1461) * 4;
timestamp %= 1461;
if (timestamp >= 790)
timestamp--;
else if (timestamp == 789) {
month = 2;
day
= 29;
year += 2;
return;
}
year += timestamp / 365;
timestamp %= 365;
month = 1;
while (timestamp >= totalDaysByMonth[month]) {
month = month + 1;
}
day = timestamp - totalDaysByMonth[month - 1] + 1;
}

printf("%04d-%02d-%02d %02d:%02d UTC time", year, month, day, hour, minute);

As an example, calling this method with a timestamp set to 19241336 return:


2006-08-02 00:56 UTC time
This result can further be converted to a specific locale by adding the time zone offset and DST offset.
If we take America/New York (the locale) as an example, we need to add a -5:00 time zone offset and a
1:00 DST offset.
2006-08-01 19:56 Standard time
2006-08-01 20:56 Localized time (includes DST)

450

XML File Format of TDL and EDL Files

ANSI C12.19-2008

ANNEX I: XML File Format of TDL and EDL Files


(Normative)

I.1 Overview of the TDL/EDL XML Document Framework


The Standard files C1219TDL-1997.xml and C12.19-2008.xml define the Standard tables syntax and
meta-data using XML notation for the first and second versions of this standard. These can be used to
generate the Document Form described in Section 5.0, Syntax. The XML-element production rules
defined in this Annex are directly based on the standards structure, defined types, and constraints. The
TDL/XML meta-data can provide additional structural information and constraints, some of them are
exposed in the published text of Section 6.0, Special Data Types and Section 9.0, Tables. The
EDL/XML meta-data and values can provide additional information and constraints on actual data values,
such as default sets used and element indices. The hierarchical relation among all XML/TDL and
XML/EDL elements and their attribute is presented using XML DTD syntax. The DTD described within
together with the BNF definitions provide sufficient framework for the creation of an automated advanced
metering infrastructure.

I.1.1 TDL/EDL Files and Terminology


In the pages that follow, we used the following terms to document the TDL/EDL XML Form framework.
1. C1219TDLSchema.xsd, a reference schema for TDL/XML file structure and constraints
validation.
2. C1219TDLTransform.xsl, is an XML style sheet, that can be used to transform the End Device
TDL file into a formatted document, which looks like Section 6.0, Special Data Types and
Section 9, Tables of this Standard.
3. C1219TDLIndicesTransform.xsl, is an XML style sheet, that can be used to transform the End
Device TDL file into a formatted document, which can be placed in Annex D, Indices for Partial
Table Read/Write Access of this Standard.
4. C1219TDLEDLTransform.xsl is an XML style sheet, that can be used to transform the End
Device TDL file into C1219TDL-xxxx-EDLSchema.xsd document, which is a validation template
for creating constant, data and default sets to be placed in a file like C1219TDL-xxxxDefaultSet.xml.
5. C1219TDL-xxxx-EDLSchema.xsd, a reference schema for EDL/XML file structure and
constraints validation.
6. C1219EDLTransform.xsl, is an XML style sheet, that can be used to transform the C12.19 EDL
files (such as default sets) into a formatted document, which can be placed in Annex C, Default
Sets for Decade Tables of this Standard.

451

ANSI C12.19-2008

XML File Format of TDL and EDL Files

C1219TDLSchema.xsd

C1219TDLTransform.xsl

XSL Processor

C1219TDL-xxxx.xml
Document Form of
Section 9

Figure I.1Production of the Document Form (Document Format of Section 9.0, Tables) from the TDL
XML File.

C1219TDLSchema.xsd

C1219TDLEDLTransform.xsl

XSL Processor

C1219TDL-xxxx.xml
C1219TDL-xxxx-EDLSchema.xsd

Figure I.2Production of Exchange Data Language (EDL) validation schema file from a TDL XML File.

C1219TDL-xxxx-EDLSchema.xsd

C1219EDLTransform.xsl

XSL Processor

C1219TDL-xxxx-DefaultSet.xml
Document Form of
Annex C

Figure I.3Production of the Document Form (Document Format of Annex C, Default Sets for Decade
Tables) from the EDL XML default sets file.

452

XML File Format of TDL and EDL Files

ANSI C12.19-2008

C1219TDLSchema.xsd

C1219TDLIndicesTransform.xsl

XSL Processor

C1219TDL-xxxx.xml
Document Form of
Annex D

Figure I.4Production of final element indices (Document Format of Annex D, Indices for Partial Table
Read/Write Access) from a TDL XML File.
Similarly, End Device manufacturers can use the above production rules, to process End Device TDL
documents and publish Manufacturer Tables, implementation variations and constants (See diagram
below).
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>-EDLSChema.xsd

<MfgEdClass>-Data.xml
(AMI Exchange Data)

<MfgEdClass>.doc

AMI Exchange
Application

Figure I.5From XML to AMI application. The pathways for using C12.19 Standard and Manufacturerdefined TDL/XML tables for Documentation, EDL and AMI application processing.

453

ANSI C12.19-2008

XML File Format of TDL and EDL Files

Figure I.1-I.5 above depict the following files as inputs or outputs to XSL and AMI processors. These are
described below:
File Name
C1219TDLSchema.xsd

Input for / Used by


Input for: XSL processor
Used by: AMI application

C1219TDLTransform.xsl

Input for :XSL processor


Used by: Document Form
producer
Input for :XSL processor
Used by: Document Form
producer

C1219EDLTransform.xsl

C1219TDLIndicesTransform.xsl

Input for :XSL processor


Used by: Document Form
producer

C1219TDL-xxxx.xml

Input for: XSL processor


Used by: Document Form
producer, EDL schema producer
and AMI application

C1219TDL-xxxx-DefaultSet.xml

Input for: XSL processor


Used by : Document Form
producer and AMI application

<MfgEdClass>.xml (.a.b.c.d)

Input for: XSL processor


Used by: Document Form
producer and AMI application

454

Description
A validation schema for any End
Device
or
Standard
TDL
document.
Table
pseudo
PASCAL
publication
rules
used
to
generate the Document Form.
Publication
rules
used
to
generate the Document Form of
constant values and default sets
used to be assumed in Table
Elements embedded in the End
Device.
Publication
rules
used
to
generate Annex D, Indices for
Partial Table Read/Write Access
or Manufacturer Document Form
of
manufacturers
element
indices.
The C12.19 Standard table
descriptions for ANSI C12.19xxxx. This file is an input to the
XSL processor to produce 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 C1219TDLxxxx-EDLSChema.xsd used to
validate the EDL data file.
The input values of the default
sets of actual limits tables. These
values are published based on
the
C1219EDL-xxxxDLSChema.xsd (which in turn is
derived
from
C1219TDLxxxx.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.
The C12.19 Manufacturer table
descriptions
for
registered
Device Class a.b.c.d. This file is
an input to the XSL processor to
produce
manufacturers
documentation. This file is also
an input to an AMI application

XML File Format of TDL and EDL Files

File Name

ANSI C12.19-2008

Input for / Used by

<MfgEdClass>-Constants.xml
(.a.b.c.d)

Input for: XSL processor


Used by: Document Form
producer and AMI application

<Utility-Site>-Constants.xml
(.a.b.c.d)

Input for: AMI processor


Used by: Utility AMI application

C1219-xxxx.doc (Section 9 and


Annex C)

Used by: Document Form


producer and developers who
implement ANSI C12.19-xxxx
Standard.
Used by: Developers who
implement AMI tools for End
Device a.b.c.d.

<MfgEdClass>.doc (.a.b.c.d)

C1219TDL-xxxxEDLSChema.xsd

Used by: AMI application

<MfgEdClass>-EDLSchema.xsd
(.a.b.c.d)

Used by: AMI application

<MfgEdClass>-Data.xml

Used by: AMI application, Data


exporter and importer application

Description
that communicates with that End
Devices.
The input values of the constant
tables or fields within tables,
which cannot be retrieved from
the End Device. These values
are
published
in
the
manufacturers 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 preassigned 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 specific management
data needed to manage the End
Device Class a.b.c.d.
The published Document Form
ANSI C12.19-xxxx Section 9 and
Annex C or Annex D.
The published Manufacturer
Document
Form
of
the
Manufacturers
tables
and
constants based on the ANSI
C12.19-xxxx Standard and the
documentation TDL of End
Device Class a.b.c.d.
AMI data validation schema for
XML data transfer based solely
on ANSI C12.19-xxxx Standard.
AMI data validation schema for
XML data exchange based on
ANSI C12.19-xxxx Standard, as
extended by End Device table
set for class a.b.c.d.
AMI data encoded in XML
according to ANSI C12.19-xxxx
Standard, as qualified for End
DeviceClass a.b.c.d.

I.2 TDL XML File Format of the TDL Document


The formats of all elements and attributes found in a TDL/XML File Form is described next.

455

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.1 <tdl> Root Element


The <tdl> element is a container of the Table syntax and meta-data (descriptions) of either one Standard
tables subset or one Manufacturer-defined tables subset. The union of the Standard defined tables
subset and the Manufacturer provided tables subset make up the entire table set of an End Device.
A tables subset document can describe Standard table definitions, revise an existing Standard into a
new Standard, or implement existing Standards using Manufacturer-supplied <tdl> files.
There may be only one <tdl> root element in a single XML file.
I.2.1.1 <tdl> DTD
<!ELEMENT

tdl ((description, extension?)?| enumerator | packedRecord | bitField | decade | table |


procedure | qualify | assert)*>

<!ATTLIST

tdl
version
deviceClass
standard
registry
isoBranch
title
validation
date

CDATA
CDATA
CDATA
CDATA
CDATA
CDATA
CDATA
CDATA

I.2.1.2 <tdl> Attributes


Name
Document Form
Equivalent
version
Published in the title
section of the document.

deviceClass

Published in the title


section of the document.

standard

Published in the title


section of the document.

456

"2.0"
"0.2.0.0"
#IMPLIED
#IMPLIED
#IMPLIED
#IMPLIED
#IMPLIED
#IMPLIED>

Description
The version of this document. When describing a
Standard, then 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.
The deviceClass defines the registered device class
this TDL describes. Device class "0.x.y.z" is reserved
for the Standards all other classes describe
manufacturer tables and data types. This is a subbranch 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.
The reference standard this End Device is based on.
Example: 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

XML File Format of TDL and EDL Files

Name

registry
isoBranch

Document Form
Equivalent

Published in the title


section of the document.
Published in the title
section of the document.

title

Published in the title


section of the document.

validation

Published in the title


section of the document.

date

Published in the title


section of the document.

ANSI C12.19-2008

Description
where x.x.x.x is the registered device class
(See deviceClass).
3. Viable choices to www.ansi.org are
www.ieee.org and www.ic.gc.ca.
The name of the entity that is the registrar of the
device class identifiers.
The ISO branch attribute associates a registry name
with an ISO object directory branch. The deviceClass
attribute is relative to this branch.
The text to display in a graphic context or at the
beginning of the document. Example: ANSI C12.192008 Utility Industry Standard Tables.
When the standards organization registers a TDL file
or when a 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 XMLSignature
Syntax
and
Processing,
W3C
Recommendation 12 February 2002 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.
The date this document was last revised.

I.2.1.3 <tdl> Document Form


A new section heading is generated then the TDL title version, deviceClass, standard, registry,
isoBranch, date and validation attributes may be expressed in the sections heading.

I.2.2 <description> element


The <description> element is a text-formatting container that accepts simple formatting directives that are
a restricted subset of XHTML. It provides a text area to describe the parent element or provide general
inter-element descriptions. All elements, except for <description> and <extension> shall minimally provide
an optional <description> child element.
I.2.2.1 <description> DTD
<!ELEMENT description (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup |
object | table | h1 | h2 | h3 )*>
<!ATTLIST description
documentation
( true | false ) "true"
colspan
CDATA
1>

457

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.2.2 <description> Attributes


Name
Document Form
Equivalent
documentation
The description body of
text. When an immediate
child of an <if>, <then> or
<else> then the
description is place with
pseudo Pascal comment
delimiters ({ and } in the
syntax section just before
the IF, after the THEN and
before the ELSE clause,
respectively.
colspan

Spans multiple columns.

Description
Default = true. The description element is used to
annotate elements that may be conditional by virtue
of being contained in <if>/<then>, <if>/<else>,
<switch>/<case> statements or for other reasons. It
is therefore possible for the same element name to
be defined more than once, bound to different types
but identical Element names. When this happens it
may be desired to present in the Document-Form
only one of the Element descriptions and suppress
all others. When this attribute is false then the
generation of the <description> in the document-form
shall be suppressed.
When the container is a multi column definitions
(e.g., identifier, value and description) that the text
spans the number of columns indicated (default = 1)
starting from right to left.

I.2.2.3 <description> Child Elements


The following paragraph and inline entry elements may be used within any <description>.
I.2.2.4 <description> Child DTDs
<!ELEMENT (h1|h2|h3) (#PCDATA | b | i | u | tt | sp | sub | sup)*>

<!ELEMENT br

EMPTY>

<!ELEMENT p

(#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup |


object | table)*>
align ( left | right | center | justify )
#IMPLIED
indent ( left | right | both )
#IMPLIED >

<!ATTLIST p

<!ELEMENT pre

(#PCDATA)>

<!ELEMENT blockquote (#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup |


object | table)*>
<!ATTLIST blockquote indent ( left | right | both ) both >
<!ELEMENT ol
<!ATTLIST ol

(li)*>
style ( arabic | alpha | roman | ALPHA | ROMAN ) #IMPLIED>

<!ELEMENT li

(#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup |


object |
table )*>

<!ELEMENT ul (li)*>
<!ATTLIST ul
<!ELEMENT li
<!ATTLIST li

458

style ( bullet | dash | star )

#IMPLIED>

(#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup |


object | table )*>
value (CDATA) #IMPLIED>

XML File Format of TDL and EDL Files

ANSI C12.19-2008

<!ELEMENT dl (dt, dd )*>


<!ELEMENT dd
<!ATTLIST dd
<!ELEMENT dt
<!ATTLIST dt

(#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup |


object | table )*>
value (CDATA) #IMPLIED>
(#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup |
object | table )*>
value (CDATA) #IMPLIED>

<!ELEMENT (b | i | u | tt | sub | sup)


(#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup |
object | table )*>
<!ELEMENT table
<!ATTLIST table

(caption?, col*, thead?, tfoot?, tbody+)>


align (left | center | right )
border
(CDATA)
frame
(CDATA)
rules
(CDATA)
title
(CDATA)
width
(CDATA)

<!ELEMENT caption

(#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup |


object | table )*>
align (top | bottom )
#IMPLIED

<!ATTLIST caption
<!ELEMENT col
<!ATTLIST col

EMPTY>
align
span
valign
width

<!ELEMENT thead | tfoot | tbody


<!ATTLIST thead | tfoot | tbody
align
span
valign
width

#IMPLIED
#IMPLIED
#IMPLIED
#IMPLIED
#IMPLIED
#IMPLIED >

(left | right | center | justify )


(CDATA)
(top | middle | bottom)
(CDATA)

#IMPLIED
1
#IMPLIED
#IMPLIED>

(tr)+>
(left | right | center | justify )
(CDATA)
(top | middle | bottom)
(CDATA)

#IMPLIED
1
#IMPLIED
#IMPLIED>

<!ELEMENT tr

(th | td)+>

<!ELEMENT (th | td)

(#PCDATA | br | p | pre | blockquote | ol | ul | dl | b | i | u | tt | sp | sub | sup |


object | table )*>
align
(left | right | center | justify )
#IMPLIED
colspan
(CDATA)
1
rowspan
(CDATA)
1
valign
(top | middle | bottom)
#IMPLIED>

<!ATTLIST (th | td)

459

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.2.5 <description> Child Elements Summary


Element Name
h1, h2, h3

Document Form
Equivalent
Sub-section heading.

br
p

Force line break.


Paragraph body text.

pre

Verbatim simple mono


spaced text.

blockquote

Indented or highlighted
text.

ol

Numerically ordered-items
list.

ul

Symbolically itemized list.

dl

Definition list.

i
b
u
tt

Italic font.
Bold font.
Underlined font.
Mono-spaced font.

sp

Non-destructive space
character

sup
sub
table

Superscript text.
Subscript text.
Multi column and rows
table with optional table
header, footer and
caption.

460

Description
Generate a subsection heading to improve
Document Form readability.
Force a line break with interlines spacing.
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.
Present the text within exactly as typed, using monospaced font, while preserving all spaces and new
lines.
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.
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.
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.
Force a new paragraph line break. Present the
definition list with each definition on the left and the
description thereafter.
Typeset the text within using an italic font.
Typeset the text within using a bold font.
Typeset the text within using an underlined font.
Typeset the text within using a mono-spaced
(typewriter) font.
Force a single non-destructive character space. This
provides the equivalent functionality of the xhtml the
entity &nbsp;.
Typeset the text within using a superscript font.
Typeset the text within using a subscript font.
Force a new paragraph line break then create a
table. The table model allows to arrange text into
rows and columns of 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 elements. The col element may be
used to characterize the column width, span, and
body text alignment for each of the columns.

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.2.2.6 <p> Attributes


Name
align

indent

Table document
equivalent
The paragraph text
alignment.

The paragraph text


indentation.

Description
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.
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, indent
both edges of the text column inward.

I.2.2.7 <blockquote> Attributes


Name
indent

Document Form
Equivalent
The paragraph text
indentation.

Description

Document Form
Equivalent
The style of the numeric
items.

Description

Document Form
Equivalent
The style of the symbolic
items.

Description

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.

I.2.2.8 <ol> Attributes


Name
style

Default = Arabic if this is the first instance within a


<description> element. Otherwise it is sequentially
rotates the formats arabic (1, 2, 3, ), alpha (a, b, c,
), roman (I, ii, iii, ), ALPHA (
(A, B, C, ), ROMAN (I, II, III, ).

I.2.2.9 <ul> Attributes


Name
style

Default = bullet if this is the first instance within a


<description> element. Otherwise it is sequentially
rotates the formats bullet (), dash () or star ()
symbol.

I.2.2.10 <ol> and <ul> sub-element usage


Element Name
li

Document Form
Equivalent
One list item.

Description
Force a line break with inter-paragraph 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.

461

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.2.11 <dt> and <dd> sub-element usage of <dl>


Element Name
dt

dd

Document Form
Equivalent
Introduces a single
definition header.
Introduces a single
definition text.

Description
Publish the definition text possibly as a left hanging
text followed by the distinctive descriptive text using
distinctive text (definition data) for the text that will
follow on the right (see element <dd>).
Publish the definitions decription data to the right (or
on a next line) of the definition term that was
specified by the preceding <dt> element.

I.2.2.12 <description> Document Form


The formatted text in any of the main Section bodies, type descriptions and element descriptions is
produced.
Example: Given the XML text below:
<table name="HISTORY_LOG_CTRL_TBL" number="73" type="HISTORY_CTRL_RCD"
label="History Log Control Table">
<description> This table defines the History Log codes to be written to the History Log.
It also defines which specific procedures and or table writes that are to be
acknowledged in the History Log. For a specific procedure or table to be
acknowledged, three independent tests shall all be true:
<ol>
<li>The procedure or table shall be used in the End Device, per the
<b>GEN_CONFIG_TBL</b> (Table 00).</li>
<li>The appropriate History Log code shall be used, per this table.</li>
<li>The procedure or table shall be requested to be acknowledged,
per this table.</li>
</ol>
</description>
.
</table>
The following may be a partial output generated by a TDL processor:

9.9.4. Table 73: History Log Control Table


Table 73 Description
This table defines the History Log codes to be written to the History Log. It also defines which specific
procedures and or table writes that are to be acknowledged in the History Log. For a specific procedure
or table to be acknowledged, three independent tests shall all be true:
1. The procedure or table shall be used in the End Device, per the GEN_CONFIG_TBL (Table 00).
2. The appropriate History Log code shall be used, per this table.
3. The procedure or table shall be requested to be acknowledged, per this table.

462

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.2.2.13 <extension> Element


Application specific extensions. The extension element is made available to implementers of AMI
application and vendors who need to embedded additional information in support of their application. The
content of this element is not defined by this Standard.
I.2.2.14 <extension> DTD
<!ELEMENT extension ANY>
I.2.2.15 <extension> Attributes
None.
I.2.2.16 <extension> Document Form
None.

I.2.3 <assert> Element


The assert element is provided to document relationships among Table data Elements and optionally
alert the application about a inconsistencies or unexpected End Device settings.
I.2.3.1 <assert> DTD (named)
<!ELEMENT
<!ATTLIST

assert ((description, extension?)? condition+)>


assert
raise (ERROR | WARN | INFO)
ERROR
text
CDATA
#REQUIRED>

<!ELEMENT

condition (#PCDATA)>

Each <condition> element of <assert> contains one assertion condition, encoded as


BNF.mathExpression, which evaluates to a Boolean. If any of the <condition> elements evaluate to true
then an assertion is raised.
I.2.3.2 <assert> Attributes
Name
raise

Text

Document Form
Equivalent
Published
in
the
description section where
defined as 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.
Published
in
the
description section.

Description
Indicates the type of assertion to be raised when the
indicated expression (see condition element)
evaluates to true.

This is a short text message that will be generated


when the assertion is raised.

463

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.4 <enumerator> Element


The named <enumerator> element introduces an association between a numeric, string, or boolean data
value and a descriptive label. It also provides for associating array or set elements with constants and
labels. For example, it may 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 humans or Graphical User Interfaces (GUIs), it is easier to relate
to Sunday, Monday, Tuesday, and so on. The enumerator element binds numbers to labels. There are
two flavors to the enumerator type. The first is a named type when it is introduced outside an element or
sub-element body and it can be referenced for association with a Final Element. The second is unnamed,
as it is introduced in-line within an Element or Sub-element body. The first unique instance of an unnamed enumerator can be accessed using the Final Elements name suffixed with BNF.enumSuffix., as if
it were to be a named enumerator.
I.2.4.1 <enumerator> DTD (named)
<!ELEMENT
<!ATTLIST

enumerator ((description, extension?)? | enum)*, (default?, positional?)>


enumerator
name
CDATA
#REQUIRED
replace
CDATA
#IMPLIED
override
CDATA
#IMPLIED
redefine
CDATA
#IMPLIED
showRedefined
( true | false )
false
strict
( true | false )
"true"
label
CDATA
#IMPLIED
align
(none | left | right | center)
none
match
(true | false)
true
pad
(true | false)
false
quote
(true | false)
false
round
(round | ceil | floor | truncate)
round

>
I.2.4.2 <enumerator> Attributes (named)
Name
name
replace

Document Form
Equivalent
Listed in the description
section where defined.
The text Replaces: target
in the description of the
named enumerator shall
be generated.

Description
The enumerator identifier expressed and constrained
by BNF.enumIdentifier. This identifier is used to refer
to the enumeration list.
A reference to an existing BNF.enumTypeReference
whose list is mapped to a new 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: 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 select the enumerator for
replacement.

464

XML File Format of TDL and EDL Files

Name
override

Document Form
Equivalent
The text Overrides: target
in the description of the
named enumerator shall
be generated.

ANSI C12.19-2008

Description
A relaxed variation of the replace attributes. A
reference to an existing BNF.enumTypeReference
whose list is mapped to a new 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: 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 select the enumerator for
replacement.

redefine

showRedefined

The text Redefines: target


in the description of the
named enumerator shall
be generated.

When true the redefining,


replacing or overriding

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.
A reference to an existing BNF.enumTypeReference
whose list used as a restriction for mapping a new
list. This feature shall ensure that <enum> children
elements are maintained identical in value and only
modification to text attributes, descriptions or metadata is desired. This is useful when defining
dimension-limiting tables, 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.
Notes:
1. A redefined enumerator can be redefined any
number of times. Redefinition of an enumerator
that has already been previously redefined
elsewhere is permitted.
2. Redefined enumerators can be defined in the
same XML file.
3. Redefinition of a replaced or overridden
enumerator is permitted.
When the redefined enumerator is encountered in
the same XML file (see note 2 above), the
redefinition shall be applied after any replacement or
override (i.e., replacements and overrides shall be
processed prior to redefinitions).
When a type is redefined, replaced or overridden the
redefining syntax may not be expressed in the syntax

465

ANSI C12.19-2008

Name

XML File Format of TDL and EDL Files

Document Form
Equivalent
type is placed the syntax
section.

strict

Suffix the term reference


is strict to the replace,
override
or
redefine
referenced type in the
description
of
the
enumerator generated.

label

align

Not shown if there is a


description element. Is
presented as description
in the absence of a
description element.
None.

match

None.

pad

None.

Description
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.
When enumerator is created and the replace,
override or redefine attribute is asserted, then the
search rule for the target BNF.enumTypeReference
will be strict (if strict is set to true, the default value)
or not strict (if the strict attribute is set to false). A
strict search requires that the implied or explicit
target scope contains the replaced enumerator. A
non-strict search allows for the implied or explicit
target scope search will starts in the End Device
scope hierarchy, i.e., the first encounter of the target
enumerator within any of the parent scopes will shall
be considered a match for the sought replacement.
A short textual description of the named enumerator.
It can be used by a GUI in Balloon help or as a
substitute for description.
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 pre-aligned (or truncated)
value 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.
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, than non matching values may trigger a
warning report and shall not issue a fatal error report.
The default value is true.
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.

466

XML File Format of TDL and EDL Files

Name

quote

Document Form
Equivalent

Enumeration values are


surrounded with quotation
marks
before
being
displayed.

round

ANSI C12.19-2008

Description
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.
When true then this is an instruction to the text
formatted to place the enum values each in quotes;
as they may represent a string. Default is false.
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/UINTas 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.

I.2.4.3 <enumerator> Document Form (named)


The named enumerator is not listed in the syntax section of the Document Form. The name and its
enumerations are presented in the description section that documents the enumerator name.
Given the XML text below:
<enumerator name="UOM_ID_CODES_ENUM" label="Unit of Measure Codes.">
<description>The following are the unit of measure codes.</description>
<enum value="0" text="Active power - W"/>
<enum value="1" text="Reactive power - VAR"/>
<enum value="2" text="Apparent power - VA"/>
.
</ enumerator>

467

ANSI C12.19-2008

XML File Format of TDL and EDL Files

The following may be a partial output generated by a TDL processor:


TDL Document Scope Element Descriptions
Identifier
UOM_ID_CODES_ENUM

Value
0
1
2

Definition
The following are the unit of measure codes.
Active power - W
Reactive power - VAR
Apparent power - VA

I.2.5 <positional> element of <enumerator> (named)


When this enumerator is bound to an array or set then the supplied enum and default elements are
assigned according to final element indices as per index attribute. i.e., this provides a facility for
describing each element according to its position within the set or array. Also, this provides a facility for
assigning constant values.
I.2.5.1 <positional> DTD
<!ELEMENT

positional ((description, extension?)? | enum)*, default?)>

I.2.5.2 <enumerator> DTD (un-named)


<!ELEMENT
<!ATTLIST

enumerator (description, extension?)?, (enum*, default?)>


enumerator
align (none | left | right | center)
none
match (true | false)
true
pad
(true | false)
false
quote (true | false)
false
round (ROUND | CEIL | FLOOR | TRUNCATE) round

>
The use of unnamed enumerator shall be restricted to immediate children of <element>, <subElement>,
<array> or <set>.
An un-named enumerator can be referenced using the name attribute of its parent element suffixed by
BNF,enumSuffix, if the resulting name is unique within the scope of the parent element. The
interpretation of all the attributes of the unnamed enumerator is identical to those of the named
enumerator.
I.2.5.3 <positional> Document Form
Introduces a BNF.enumerator definitions in the Elements description. No syntax is produced in the
definition syntax section. The description shall list all non-default constraints expressed in the subelements <description>, <enum> and <default>.

I.2.6 <enum> Element (Child of <enumerator>)


The <enum> element introduces a single enumeration value or a range of enumeration values.

468

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.2.6.1 <enum> DTD


<!ELEMENT enum (description, extension?)?>
<!ATTLIST enum
value
CDATA
#REQUIRED
endValueInclusive CDATA
#IMPLIED
text
CDATA
#REQUIRED
exclude
(true | false)
false>
I.2.6.2 <enum> Attributes
Name
value

endValueInclusive

text

exclude

Document Form
Equivalent
The value assigned to this
enumerator
(attribute
endValueInclusive
not
present) or the starting
value of a range of values
(attribute
endValueInclusive
present)
The end range assigned to
this enumerator.
Text
string
that
is
associated with the value
or range of values. This
text is published only when
the <description> element
is not present.
Does
not
generate
documentation.

Description
Indicates a value that the Final Element may take, or
the
starting
range
of
values
(attribute
endValueInclusive present) that a final element may
assume.
The
left
hand
size
of
the
BNF.enumMember.

Indicates an end range of values (attribute


endValueInclusive present) that the a Final Element
may assume. The left hand size of the
BNF.enumMember.
A short test string that may be used by a GUI Balloon
help. The right hand size of the BNF.enumMember.

An indication that the role for this enumeration value


is reversed, therefore it is to be excluded and it is
considered to be an invalid value or range of
reserved values.

I.2.6.3 <enum> Document Form


Introduces a BNF.enumMember in Definitions in types and elements description. The definitions shall
preserve all constraints expressed in the sub-element <description>; and the attributes value,
endValueInclusive, text.

469

ANSI C12.19-2008

XML File Format of TDL and EDL Files

Example: Given the XML text below:


<subElement name="DATA_ACCESS_METHOD" type="UINT" startBitInclusive="3" endBitInclusive="4">
<description>
Element to designate method of passing the table data after <b>GEN_CONFIG_TBL</b>
(Table 00) has been interrogated.
</description>
<enumerator>
<enum value="0"
text=" Full table access only. No partial table access methods are supported." />
<enum value="1"
text=" Full table access and offset-count access methods are supported." />
<enum value="2"
text=" Full table access and index-count methods are supported." />
<enum value="3"
text=" Both methods 1 and 2 of data access methods are supported." />
</enumerator>
</subElement>
The following may be a partial output generated by a TDL processor in the description section:
Identifier

DATA_ACCESS_METHOD

Value

0
1
2
3

Definition
Element to designate method of passing the table data
after GEN_CONFIG_TBL (Table 00) has been
interrogated.
Full table access only. No partial table access methods
are supported.
Full table access and offset-count access methods are
supported.
Full table access and index-count methods are
supported.
Both methods 1 and 2 of data access methods are
supported.

I.2.7 <default> element (Child of <enumerator> element)


Default text used to label unknown values. It is also the preferred initialization value for un-programmed
fields, or un-initialized Final-Elements.
I.2.7.1 <default> DTD
<!ELEMENT default (description, extension?)?>
<!ATTLIST default
value
CDATA
#IMPLIED
text
CDATA
#REQUIRED>

470

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.2.7.2 <default> Attributes


Name
value

text

Document Form
Equivalent
None

Publishes the text Default:


value

Description
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 un-initialized.
Therefore, the Standard or the Manufacturer may set
initial state preferences for Table Final Elements.
The text to display when the value reported by the
application is not a member of the enumeration list.

I.2.7.3 <default> Document Form


Introduces a BNF.enumDefault in Definitions in types and elements description. The definitions shall
preserve all constraints expressed in the sub-element description; and the attributes value and text.

I.2.8 <packedRecord> Element


The <packedRecord> element introduces the PACKED RECORD derived type. This maps to the BNF.
rcdType. This type is defined to be local to the parent scope (either Standard or Manufacturer context)
TDL, decade, table, or procedure (see Rules for inheritance and referencing scoped types and
identifiers).
I.2.8.1 <packedRecord> DTD
<!ELEMENT packedRecord (description, extension?)?, (element | array | set | if | switch | assert)*>
<!ATTLIST packedRecord
name
CDATA
#REQUIRED
replace
CDATA
#IMPLIED
override
CDATA
#IMPLIED
redefine
CDATA
#IMPLIED
showRedefined
( true | false ) false
strict
( true | false ) "true"
atomic
( true | false ) "false"
label
CDATA
#IMPLIED
accessibility
(READWRITE| READONLY| WRITEONLY) READWRITE
deprecated
(true | false)
false
metrological
(true | false)
false>
I.2.8.2 <packedRecord> Attributes
Name
name

replace

Document Form
Equivalent
Publishes the packed
record name in the syntax
and description sections.
The text Replaces: target
in the description of the
packed record shall be
generated.

Description
The packed record identifier. This identifier can be
used to refer to the PACKED RECORD. Packed
record names shall be defined according to the
BNF.rcdIdentifier production rule and shall be unique
within any one definitions scope.
A reference to a PACKED RECORD identifier, in
accordance with 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
define (thus document) Standard opaque fields.

471

ANSI C12.19-2008

XML File Format of TDL and EDL Files

override

The text Overrides: target


in the description of the
packed record shall be
generated.

redefine

The text Redefines: target


in the description of the
packed record shall be
generated.

472

Notes:
1. A referenced type can be replaced only once.
Replacement of a type that has already been
previously replaced by another type shall not
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 internal
structure of element that may be otherwise
opaque.
4. The application processor is encouraged to issue
a warning upon all encounters of replaced types.
A relaxed variation of the replace attributes. An
override of a PACKED RECORD identifier, in
accordance with 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 re-create any packed record field.
Notes:
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.
A reference, in accordance with BNF.rcdReference,
to a PACKED RECORD identifier whose type is used
as a 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.

XML File Format of TDL and EDL Files

ANSI C12.19-2008

The referenced PACKED


otherwise unaffected.

showRedefined

When true the redefining,


replacing or overriding
type is placed the syntax
section.

strict

Suffix the term reference


is strict to the replace,
override
or
redefine
referenced type in the
description of the packed
record generated.

atomic

The
text
"Non-default
properties: Atomic = value"
in the description of the
packed record shall be
generated.
None.

label

accessibility

The
text
"Non-default
properties: Accessibility =
value" in the description of
the packed record shall be
generated.

RECORD

shall

be

Notes:
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 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 note 2 above), 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).
When a named enumerator is redefined, replaced, or
overridden the redefining syntax may not be
expressed in 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.
When packed record is created and the replace,
override, or redefine attribute is asserted, then the
search rule for the target type will be strict (if strict is
set to true, the default value) or not strict (if the strict
attribute is set to false). A strict search requires that
the implied or explicit target scope contain the
replaced or redefined type. A non strict search
requires that the implied or explicit target scope is
where the search will starts 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.
The packed record monolithic, when true. When
communicating an atomic packed record it shall be
transported and presented as one unit, including all
of its internal element members.
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.
An indication of possible interpretations or use case
for the named packed record as follows:
READONLY: this packed record may be accessed
but not modified.
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

473

ANSI C12.19-2008

deprecated
metrological

XML File Format of TDL and EDL Files

The text Deprecated in the


description of the packed
record shall be generated..
The
text
"Non-default
properties: Metrological =
value" in the description of
the packed record shall be
generated.

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.
Indicates that this packed record is deprecated and
is likely to be removed or renamed in future releases
of the TDL. Default value is false.
An indication that this packed record it is
metrological. Thus any Table or Element that
contains it is also metrological. Default value is false.

I.2.8.3 <packedRecord> Document Form


The <packedRecord> definitions are mapped to BNF.rcdType in the syntax section, and all the
descriptions and enumerations are expressed in description section.
Example: Given the XML text below:
<packedRecord name="CLOCK_STATE_RCD" atomic=true>
<element name="CLOCK_CALENDAR" type="LTIME_DATE">
<description>Current End Device time.</description>
</element>
<element name="TIME_DATE_QUAL" type="TIME_DATE_QUAL_BFLD">
<description>See <b>DATE_TIME_QUAL_BFLD</b> above.</description>
</element>
</packedRecord>
The following may be a partial output generated by a TDL processor in the syntax section:
TYPE CLOCK_STATE_RCD = PACKED RECORD
CLOCK_CALENDAR : LTIME_DATE;
TIME_DATE_QUAL
: TIME_DATE_QUAL_BFLD;
END;
The following may be a partial output generated by a TDL processor in the description section:
Identifier
CLOCK_STATE_RCD
CLOCK_CALENDAR
TIME_DATE_QUAL

Value

Definition
Non-default properties: Atomic = true.
Current End Device time.
See DATE_TIME_QUAL_BFLD above.

I.2.9 <element> Element (Child of <packedRecord>)


The <element> element binds a packed record data type to an identifier. This type is defined to be local
to the packed record scope.

474

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.2.9.1 <element> DTD


<!ELEMENT element (description, extension?)?, enumerator?, assert?)>
<!ATTLIST element
name
CDATA
#REQUIRED
type
CDATA
#REQUIRED
enumerator
CDATA
#IMPLIED
length
CDATA
"1"
label
CDATA
#IMPLIED
min
CDATA
#IMPLIED
max
CDATA
#IMPLIED>
accessibility
(UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE)
READWRITE
atomic
(true | false | JOIN)
false
deprecated
(true | false)
false
metrological
(true | false)
false
volatile
(true | false | AUTO_AS_PER_ROLE) AUTO_AS_PER_ROLE>
I.2.9.2 <element> Attributes
Name
name

type
enumerator
length

Document Form
Equivalent
Publishes the Element
name in the syntax and
description sections.

Publishes the Element


type in the syntax section.
Publishes the element
enumeration reference in
description sections.
Introduces the Element
extent in the syntax
section.

label

None

min

Impacts on low bound


publication
in
the
description section.
Impacts on high bound
publication
in
the
description section.
The
text
"Non-default
properties: Accessibility =
value" in the description of
the Element shall be
generated.

max
accessibility

Description
The Element name identifier. This identifier can be
used to refer to the 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.
The Element type. It can be any valid simple or
derived type (e.g packed record or bit field).
A reference to an enumerator identifier whose
values/label pairs are associated with the values of
this element.
A valid expression the results in a numeric value to
size elements 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.
A textual label used to label the element in a graphic
context.
The smallest value (inclusive) this element may
have.
The largest value (inclusive) this element may have.
An indication of possible interpretations or use case
for the named element. See <packedRecord> for
more details.

475

ANSI C12.19-2008

atomic

deprecated
metrological

volatile

XML File Format of TDL and EDL Files

The
text
"Non-default
properties: Atomic = value"
in the description of the
element
shall
be
generated..
The text Deprecated in the
description of the element
shall be generated.
The
text
"Non-default
properties: Metrological =
value" in the description of
the Element shall be
generated.
The
text
"Non-default
properties:
Volatile
=
value" in the description of
the Element shall be
generated.

The element is monolithic, when true. See


<packedRecord> for more details. When JOIN is
entered then the element is Atomic and if the
previous element was Atomic then the pair of
elements is also Atomic.
Indicates that this Element is deprecated and is likely
to be removed or renamed in future releases of the
TDL. Default value is false.
An indication that this Element is metrological.
Default value is false.

An indication of the Elements volatility. When volatile


is set to true then the value of this element
may change between consecutive reads, implying
that the Element should not be 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 Elements value.
When
the
volatile
attribute
is
set
to
AUTO_AS_PER_ROLE (default value) then the
values of the Tables attribute role should be probed
to determine the volatility of this elements according
to the Tables 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.

I.2.9.3 <element> Document Form


The <element> definitions are mapped to BNF.rcdMember and all the descriptions and enumerations are
expressed in description section.
Example: Given the XML text below:
<packedRecord name="GEN_CONFIG_RCD">
<element name="FORMAT_CONTROL_1" type="FORMAT_CONTROL_1_BFLD">
<description>See <b>FORMAT_CONTROL_1_BFLD</b>.</description>
</element>
<element name="FORMAT_CONTROL_2" type="FORMAT_CONTROL_2_BFLD">
<description>See <b>FORMAT_CONTROL_2_BFLD</b>.</description>
</element>

</packedRecord >
The following may be a partial output generated by a TDL processor in the syntax section:
TYPE GEN_CONFIG_RCD = PACKED RECORD
FORMAT_CONTROL_1
: FORMAT_CONTROL_1_BFLD;
FORMAT_CONTROL_2
: FORMAT_CONTROL_2_BFLD;

476

XML File Format of TDL and EDL Files

ANSI C12.19-2008

END;
The following may be a partial output generated by a TDL processor in the description section:
Identifier

Value

GEN_CONFIG_RCD
FORMAT_CONTROL_1
FORMAT_CONTROL_2

Definition
See FORMAT_CONTROL_1_BFLD.
See FORMAT_CONTROL_2_BFLD.

I.2.10 <array> Element (Child of <packedRecord>)


The <array> element binds a collection of a single type an identifier. This type is defined to be local to the
containing packed record scope and it maps to BNF.arrayType.
I.2.10.1 <array> DTD
<!ELEMENT array ((description, extension?)?, enumerator?, assert*)>
<!ATTLIST array
name
CDATA
#REQUIRED
type
CDATA
#REQUIRED
length
CDATA
"1"
dimension
CDATA
#REQUIRED
label
CDATA
#IMPLIED
enumerator
CDATA
#IMPLIED
accessibility
(UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE)
READWRITE
atomic
(true | false | JOIN)
false
deprecated
(true | false)
false
metrological
(true | false)
false
volatile
(true | false | AUTO_AS_PER_ROLE) AUTO_AS_PER_ROLE>

I.2.10.2 <array> Attributes


Name
name

type
length

dimension

Document Form
Equivalent
Publishes the array name
in
the
syntax
and
description sections.

Publishes the array type in


the syntax section.
If other then 1 it suffixes
the extent length in
brackets after the type in
the syntax section.
Publishes the number of

Description
The array name identifier. This identifier can be used
to refer to this 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.
The array element type. It can be any valid simple or
derived type.
The number of base type members make up each
element of this array. e.g., FOO : ARRAY[3] OF
STRING(20); will set length to 20 CHARs of each
STRING element in that array FOO.
A valid expression the results in a numeric integer

477

ANSI C12.19-2008

XML File Format of TDL and EDL Files

elements in the array in


the syntax section.

label
enumerator
accessibility

atomic

deprecated
metrological

volatile

value that can be used to establish the dimension


(number of elements) for this 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.
Used by GUIs.
A reference to an enumerator identifier whose
values/label pairs is associated with each of the
values of this element.
Implementer's intended design for read and write
access for this Element. Possible values are:

None.
Publishes
the
array
enumeration reference in
description sections.
The
text
"Non-default
properties: Accessibility =
value" in the description of
the
array
shall
be READONLY: This Element can be accessed but not
generated.
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.
The
text
"Non-default The element is monolithic, when true. See
properties: Atomic = value" <packedRecord> for more details. When JOIN is
in the description of the entered then the array is Atomic and if the previous
element
shall
be element was Atomic then the pair of elements is also
generated.
Atomic. Default value is false unless the Elements
type is Atomic.
The text Deprecated in the Indicates that this Element is deprecated and is likely
description of the element to be removed or renamed in a future release of the
shall be generated.
TDL. Default value is false.
The
text
"Non-default An indication that this element is metrological.
properties: Metrological = Default value is false.
value" in the description of
the element shall be
generated.
The
text
"Non-default An indication of the arrays volatility. When volatile is
properties:
Volatile
= set to true, then the value of this element may
value" in the description of change between consecutive reads, implying that the
the element shall be Element should not be cached by the AMI
generated.
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 Elements value.
When
the
volatile
attribute
is
set
to
AUTO_AS_PER_ROLE (default value) then the
values of the Tables attribute role should be probed
to determine the volatility of this element according to
the Tables role as follows: CONTROL sets volatility
to false; DATA sets volatility to true; LIMITING

478

XML File Format of TDL and EDL Files

ANSI C12.19-2008

sets volatility to false; ACTUAL sets volatility to


false; UNDEFINED sets volatility to
true;
PRIVATE sets volatility to true.
I.2.10.3 <array> Document Form
The <array> definitions are mapped to BNF.rcdMember of type BNF.arrayType; and all the descriptions
and enumerations are expressed in description section.
Example: Given the XML text below:
<array name="PENDING_TABLES" type="ENTRY_ACTIVATION_RCD" atomic=true
dimension="GEN_CONFIG_TBL.NBR_PENDING">
<description>
List of pending tables and associated activation triggers.
</description>
</array>
The following may be a partial output generated by a TDL processor in the syntax section:
PENDING_TABLES

: ARRAY[GEN_CONFIG_TBL.NBR_PENDING] OF
ENTRY_ACTIVATION_RCD;

The following may be a partial output generated by a TDL processor in the description section:
Identifier
PENDING_TABLES

Value

Definition
List of pending tables and associated activation triggers.
Non-default Properties: Atomic = TRUE.

I.2.11 <set> Element (Child of <packedRecord> element)


The <set> element binds a collection of a Boolean values to an identifier. This type is defined to be local
to the containing packed record scope and it maps to BNF.set member of BNF.sizedType.
I.2.11.1 <set> DTD
<!ELEMENT set ((description, extension?)?, enumerator?, assert*)>
<!ATTLIST set
name
CDATA
#REQUIRED
type
#FIXED
BOOL
dimension
CDATA
#REQUIRED
label
CDATA
#IMPLIED>
enumerator
CDATA
#IMPLIED
accessibility
(UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE)
READWRITE
atomic
( true | false | JOIN )
"false"
deprecated
(true | false)
false
metrological
(true | false)
false
volatile
(true | false | AUTO_AS_PER_ROLE) AUTO_AS_PER_ROLE>

479

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.11.2 <set> Attributes


Name
name

type
dimension

label
enumerator
accessibility

atomic

deprecated
metrological

volatile

480

Document Form
Equivalent
Publishes the set name in
the syntax and description
sections.

Description
The set name identifier. This identifier can be used to
refer to this 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.
Fixed at BOOL.
An expression that results in an integer and number
of entries (single bit entries) for this set. Set
Elements can be accessed individually, but they are
communicated one octet at a time. When sets are
allocated in C12.19 Tables the number of octets
used is (dimension+7)/8 octets.

None
Publishes the number of
octets used to map the set
to a collection of octets
using
the
expression
((dimension + 7 ) / 8
truncated to an integer the
Syntax section.
None.
Used by GUIs.
Publishes
the
set A reference to an enumerator identifier whose
enumeration reference in values/label pairs is associated with each of the
description sections.
values of this element.
The
text
"Non-default Implementer's intended design for read and write
properties: Accessibility = access for a 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.
The
text
"Non-default The element is monolithic, when true. See
properties: Atomic = value" <packedRecord> for more details. When JOIN is
in the description of the entered then the set is Atomic and if the previous
element
shall
be element was Atomic then the pair of elements is also
generated.
Atomic. Default value is false.
The text Deprecated in the Indicates that this element is deprecated and is likely
description of the element to be removed or renamed in a future release of the
shall be generated.
TDL. Default value is false.
The
text
"Non-default An indication that this element is metrological.
properties: Metrological = Default value is false.
value" in the description of
the element shall be
generated.
The
text
"Non-default An indication of the sets volatility. When volatile is
properties:
Volatile
= set to true then the value of this element may
value" in the description of change between consecutive reads, implying that the

XML File Format of TDL and EDL Files

Name

ANSI C12.19-2008

Document Form
Equivalent
the element shall
generated.

Description
be

Element should not be 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 Elements value.
When
the
volatile
attribute
is
set
to
AUTO_AS_PER_ROLE (default value) then the
values of the Tables attribute role should be probed
to determine the volatility of this element according to
the Tables 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.

I.2.11.3 <set> Document Form


The <set> definitions are mapped to BNF.rcdMember of type BNF.sizedType of BNF.set; and all the
descriptions and enumerations are expressed in description section.
Example: Given the XML text below:
<set name="TO_SET" dimension="ACT_LOAD_CONTROL_TBL.NBR_OF_CONTROL_POINTS">
<description>List of control points selected.</description>
<enumerator>
<enum value="false"
text="This control point is not affected by this load control directive."/>
<enum value="true"
text="This control point is affected by this load control directive."/>
</enumerator>
</set>
The following may be a partial output generated by a TDL processor in the syntax section:
TO_SET

: SET((ACT_LOAD_CONTROL_TBL.NBR_OF_CONTROL_POINTS + 7) / 8);

The following may be a partial output generated by a TDL processor in the description section:
Identifier

Value

TO_SET

List of control points selected.


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

Definition

I.2.12 <if> Element (Child of <packedRecord>)


The <if> element introduces a Boolean expression. The <then> child element is to be processed when
the expression evaluates to true. The optional <else> child element is to be processed by the application
when the expression evaluates to false.

481

ANSI C12.19-2008

XML File Format of TDL and EDL Files

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


<!ELEMENT if ((description, extension?)?, (then, else?))>
<!ATTLIST if
condition
CDATA
#REQUIRED>
I.2.12.2 <if> Attributes (Child of <packedRecord>)
Name
condition

Document Form
Equivalent
Published in the syntax
section between the IF
and THEN tokens.

Description
An expression encoded as BNF.intMathExpression
and reduces to a Boolean values.

I.2.12.3 <if> Document Form


The <if> definitions are mapped to BNF.rcdIf in the syntax section. Any <description> elements that
precede are contained in the <if> element may be produced in the syntax section prior to the introduction
of the BNF.rcdIf syntax enclosed within the comment characters { and }.
I.2.12.4 <then> Element (Child of <packedRecord>/<if>)
The <then> element introduces Table Elements that are present when the <if>s parent attribute
condition evaluates to true.
I.2.12.5 <then> DTD
<!ELEMENT then ((description, extension?)? | element | array | set | if | switch | assert)*>
I.2.12.6 <then> Attributes
None.
I.2.12.7 <then> Document Form
The <then> definitions are mapped to the BNF.rcdMember members THEN clause of the BNF.rcdIf
clause. If this element contains a <description> element, then the description may be produced in the
syntax section following to the THEN token. This description shall be enclosed within the comment
characters { and }. All elements enclosed will be published in the syntax section. All Elements
descriptions and enumerations may be published in the description section.

I.2.13 <else> Element (Child of <packedRecord>/<if>)


The <else> element introduces Table Elements that are present when the <if>s parent attribute
condition evaluates to false.
I.2.13.1 <else> DTD
<!ELEMENT else ((description, extension?)? | element | array | set | if | switch | assert)*)>
I.2.13.2 <else> Attributes
None.

482

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.2.13.3 <else> Document Form


The <else> definitions are mapped to the BNF.rcdMember members ELSE clause of the BNF.rcdIf
clause. If this element contains a <description> element then the description may be produced in the
syntax section following to the ELSE token. This description shall be enclosed within the comment
characters { and }. All elements enclosed will be published in the syntax section. All Element
descriptions and enumerations may be published in the description section.
Given the XML text below:
<packedRecord name="MANUFACTURER_IDENT_RCD">

<element name="FW_REVISION_NUMBER" type="UINT8">


<description>
Manufacturer&apos;s firmware revision number. Changes in value imply
product corrections or improvements. Recommend use of &apos;0&apos;
to designate preproduction or prototyping software.
</description>
</element>
<if condition="GEN_CONFIG_TBL.ID_FORM != 0">
<description>
This is an example of dual use of <b>BCD</b> or <b>STRING</b> to
express an <b>ID_FORM</b>.
</description>
<then>
<description>Encoded as <b>BCD(8)</b>.</description>
<element name="MFG_SERIAL_NUMBER" type="BCD" length="8">
<description>
Manufacturer&apos;s serial number for the End Device.
16 BCD digits or CHARs.
</description>
</element>
</then>
<else>
<description>Encoded as <b>STRING(16)</b>.</description>
<element name="MFG_SERIAL_NUMBER" type="STRING" length="16">
<description documentation="false">
Manufacturer&apos;s serial number for the End Device.
16 BCD digits or CHARs.
</description>
</element>
</else>
</if>

</packedRecord>

483

ANSI C12.19-2008

XML File Format of TDL and EDL Files

The following may be a partial output generated by a TDL processor in the syntax section:
TYPE MANUFACTURER_IDENT_RCD = PACKED RECORD

FW_REVISION_NUMBER
: UINT8;
{ This is an example of dual use of BCD or STRING to express an ID_FORM. }
IF GEN_CONFIG_TBL.ID_FORM != 0 THEN
{ Encoded as BCD(8). }
MFG_SERIAL_NUMBER
: BCD(8);
ELSE
{ Encoded as STRING(16). }
MFG_SERIAL_NUMBER
: STRING(16);
END;
END;
The following may be a partial output generated by a TDL processor in the description section:
Identifier

Value

Definition

0..255

Manufacturers firmware revision number.


Changes in value imply product corrections or
improvements. Recommend use of 0' to
designate preproduction or prototyping software.

MANUFACTURER_IDENT_RCD

FW_REVISION_NUMBER

MFG_SERIAL_NUMBER

Manufacturers serial number for the End


Device. 16 BCD digits or CHARs.

I.2.14 <switch> Element (Child of <packedRecord>)


The <switch> element introduces a selector expression. The <case> child elements are to be included
when a startValueInclusive/endValueInclusive attributes match the evaluated expression of the
selection attribute. The optional <default> child element is to be processed by the application when the
expression evaluates none of the available selection.
I.2.14.1 <switch> DTD
<!ELEMENT switch ((description, extension?), case*, default?)>
<!ATTLIST switch
selection
CDATA
#REQUIRED>
I.2.14.2 <switch> Attributes
Name
Document Form
Equivalent
selection
Publishes
the
switch
selector expression in the
syntax section.

Description
An expression encoded as BNF.intMathExpression
and reduces to a integer value.

I.2.14.3 <switch> Document Form


The <switch> definitions are mapped to the BNF.rcdCase syntax. If this element contains a <description>

484

XML File Format of TDL and EDL Files

ANSI C12.19-2008

element then the description may be produced in the syntax section just prior to the SWITCH token. This
description shall be enclosed within the comment characters { and }.
I.2.14.4 <case> Element (Child of <packedRecord>/<switch>)
The <case> definitions are mapped to the BNF.rcdCaseMember which introduces the CASE token in the
syntax section.
I.2.14.5 <case> DTD
<!ELEMENT case ((description, extension?)? | element | array | set | if | switch | assert)*)>
<!ATTLIST case
startValueInclusive CDATA
#REQUIRED
endValueInclusive CDATA
#IMPLIED>
I.2.14.6 <case> Attributes
Name
startValueInclusive
endValueInclusive

Document Form
Equivalent
Publishes the case lowbound value in the syntax
section.
Publishes the case highbound value in the syntax
section.

Description
The selection case lower bound or value for the
contained packed record syntax.
The selection case for the upper bound for the
contained packed record syntax.

I.2.14.7 <case> Document Form


The <case> definitions are mapped to the BNF.rcdCaseMember CASE token and related ranges. The
startValueInclusive and the optional endValueInclusive range attributes are expressed only in the
syntax section followed by the Elements definitions. All Element descriptions and enumerations may be
published in the description section. If this element contains a <description> element then the description
may be produced in the syntax section just prior to the CASE token. This description shall be enclosed
within the comment characters { and }.
I.2.14.8 <default> element (Child of <packedRecord>/<switch>)
The <default> definitions are mapped to the BNF.rcdCaseMember DEFAULT token syntax.
I.2.14.9 <default> DTD
<!ELEMENT default ((description, extension?)? | element | array | set | if | switch | assert)*>
I.2.14.10 <default> Attributes
None.
I.2.14.11 <default> Document Form
The <default> definitions are mapped to the default clause of the BNF.rcdCaseMember DEFAULT syntax
followed by the Elements definitions. All Element descriptions and enumerations may be published in the
description section. If this element contains a <description> element then the description may be
produced in the syntax section just prior to the CASE token. This description shall be enclosed within the
comment characters { and }.
Example: Given the XML text below:

485

ANSI C12.19-2008

XML File Format of TDL and EDL Files

<switch selection="GEN_CONFIG_TBL.NAMEPLATE_TYPE">
<case startValueInclusive="0">
<element name="G_GAS_DEVICE" type="G_GAS_DEVICE_RCD">
<description>
Element present when the End Device is a gas meter.
See <b>G_GAS_DEVICE_RCD</b> for details.
</description>
</element>
</case>
<case startValueInclusive="1">
<element name="W_WATER_DEVICE" type="W_WATER_DEVICE_BFLD">
<description>
Element present when the End Device is a water meter.
See <b>W_WATER_DEVICE_BFLD</b> for details.
</description>
</element>
</case>
<case startValueInclusive="2">
<element name="E_ELECTRIC_DEVICE" type="E_ELECTRIC_DEVICE_RCD">
<description>
Element present when the End Device is an electricity meter.
See <b>E_ELECTRIC_DEVICE_RCD</b> for details.
</description>
</element>
</case>
<default >
<element name="RESERVED" type="NIL">
<description documentation="false">Reserved.</description>
</element>
</default>
</switch>
The following may be a partial output generated by a TDL processor in the syntax section:
SWITCH GEN_CONFIG_TBL.NAMEPLATE_TYPE OF
CASE 0
:
G_GAS_DEVICE
: G_GAS_DEVICE_RCD;
CASE 1
:
W_WATER_DEVICE
: W_WATER_DEVICE_BFLD;
CASE 2
:
E_ELECTRIC_DEVICE
: E_ELECTRIC_DEVICE_RCD;
DEFAULT:
RESERVED
: NIL;
END;
The following may be a partial output generated by a TDL processor in the description section:
Identifier
G_GAS_DEVICE
W_WATER_DEVICE

486

Value

Definition
Element present when the End Device is a gas
meter. See G_GAS_DEVICE_RCD for details.
Element present when the End Device is a
water meter. See W_WATER_DEVICE for
details.

XML File Format of TDL and EDL Files

E_ELECTRIC_DEVICE

ANSI C12.19-2008

Element present when the End Device is an


electricity meter. See E_ELECTRIC_DEVICE for
details.

I.2.15 <bitField> element


The <bitField> element introduces the BIT FIELD OF derived type. This maps to the BNF.bfldType. This
type is defined to be local to the parent scope (either Standard or Manufacturer context) TDL, decade,
table, or procedures (see Rules for inheritance and referencing scoped types and identifiers).
I.2.15.1 <bitField> DTD
<!ELEMENT bitField ((description, extension?)? | subElement | if | switch | assert)*>
<!ATTLIST bitField
name
CDATA
#REQUIRED
type
CDATA
#REQUIRED
replace
CDATA
#IMPLIED
override
CDATA
#IMPLIED
redefine
CDATA
#IMPLIED
showRedefined
( true | false ) false
strict
CDATA
"true"
atomic
CDATA
#FIXED "JOIN"
label
CDATA
#IMPLIED
accessibility
(READONLY | WRITEONLY | READWRITE ) "READWRITE"
metrological
( true | false ) "false"
deprecated
( true | false ) "false">
I.2.15.2 <bitField> Attributes
Name
name

Document Form
Equivalent
Publishes the bit field
name in the syntax and
description sections.

type

Publishes the bit field type


in the syntax section.

replace

The text Replaces: target


in the description of the
packed record shall be
generated.

Description
The bit field identifier. This identifier can be used to
refer to this bit field. Bit field names shall be
expressed according to the BNF.bfldIdentifier rule
and shall be unique within the defining scope.
An Atomic element type that can be used to establish
the size of the bit field and its transmission
requirements. The type shall be expressed as BNF.
bfldAssignedType.
A reference to a BIT FIELD identifier in accordance
with BNF.bfldReference, 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 define (thus
document) Standard opaque fields.
Notes:
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

487

ANSI C12.19-2008

XML File Format of TDL and EDL Files

override

The text Overrides: target


in the description of the bit
field shall be generated.

redefine

The text Redefines: target


in the description of the bit
field shall be generated.

offsets and indices for existing elements, and


they may expose additional detail to internal
structure of element that is otherwise opaque.
4. The application processor is encouraged to issue
a warning upon all encounters of replaced types.
A relaxed variation of the replace attributes. An
override of a BIT FIELD identifier, in accordance with
BNF.bfldReference, 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 re-create any bit field.
Notes:
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 sub-elements
offsets and indices for existing sub-elements, or
expose additional detail to internal structure of
sub-elements that is otherwise opaque.
4. The application processor is encouraged to
issue a warning upon all encounters of
overridden types.
A reference to a BIT FIELD identifier, in accordance
with BNF.bfldReference, whose type is used as a
restriction to the 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.
Notes:
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 bit field that is now being redefined.

488

XML File Format of TDL and EDL Files

showRedefined

When true the redefining,


replacing or overriding
type is placed the syntax
section.

strict

Suffix the term reference


is strict to the replace,
override
or
redefine
referenced type in the
description of the bit field
generated.

atomic

The
text
"Non-default
properties: Atomic = value"
in the description of the bit
field shall be generated..
None.

label

accessibility

metrological

deprecated

ANSI C12.19-2008

3. Redefinition of a replaced, overridden or


redefined bit field is permitted. When the
redefined type is encountered in the same XML
file (see note 2 above), the redefinition shall be
applied after the application of any replace or
override directives (i.e., replacements are
processed prior to redefinitions).
When a bit field is redefined, replaced or overridden
the redefining syntax may not be expressed in 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.
When bit field is created and the replace, override,
or redefine attribute is asserted, then the search rule
for the target type will be strict (if strict is set to true,
the default value) or not strict (if the strict attribute is
set to false). A strict search requires that the implied
or explicit target scope contain the replaced or
redefined type. A non strict 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.
An indication (when true) stating that this bit field can
only be read or written entirely as one unit. The only
permitted value shall be true.

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.
The text "Non-default
The bit field access restrictions. Possible values are:
properties: Accessibility =
READONLY: this bit field may be accessed but not
value" in the description of
modified.
the bit field shall be
WRITEONLY: this bit field be accessed and modified.
generated.
It contains one or more members that may not
read back exactly the values written to them.
READWRITE: this bit field is can 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.
The
text
"Non-default An indication that this bit field is metrological. Thus
properties: Metrological = any Table or Element that contains it is also
value" (true or false) in the metrological. Default value is false.
description of the packed
record shall be generated.
The text Deprecated in the Indicates that this bit field is deprecated and is likely
description of the bit field to be removed or renamed in future releases of the
shall be generated..
TDL. Default value is false.

489

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.15.3 <bitField> Document Form


The <bitField> definitions are mapped to BNF.bfldType in the syntax section, and all the descriptions and
enumerations are expressed in description section.
Example: Given the XML text below:
<bitField name="STATUS_BFLD" type="UINT8">
<description>Selectors indicating action to be performed upon activation of
selected table.
</description>
<subElement name="EVENT_CODE" type="UINT" startBitInclusive="0" endBitInclusive="3">
<description>
Element that specifies the condition upon which the pending table shall be
made active. The trigger condition is stored in the <b>EVENT_STORAGE</b>
record.
</description>
<enumerator>
<enum value="0"
text="The pending table is activated based on an absolute time.">
<description>
Pending Table is activated based on an absolute time contained in the
<b>EVENT_STORAGE</b> record. The time is interpreted as
<b>SDATE_TIME</b>.</description>
</enum>
<enum value="1"
text="The pending table is activated based on a relative time.">
<description>
The pending table is activated based on a relative time
contained in the <b>EVENT_STORAGE</b> record.
</description>
</enum>
<enum value="2"
text="The pending table is activated based on a non-time
associated trigger.">
<description>
The pending table is activated based on a non-time associated
trigger contained in the <b>EVENT_STORAGE</b> record.
</description>
</enum>
<enum value="3" endValueInclusive="15" exclude="true"
text="Reserved."/>
</enumerator>
</subElement>

</bitField>
The following may be a partial output generated by a TDL processor in the syntax section:
TYPE STATUS_BFLD = BIT FIELD OF UINT8
EVENT_CODE : UINT(0..3);

END;
The following may be a partial output generated by a TDL processor in the description section:

490

XML File Format of TDL and EDL Files

ANSI C12.19-2008

Value

Identifier
STATUS_BFLD

Definition
Selectors indicating action to be performed upon
activation of selected Pending Table.

EVENT_CODE

Element that specifies the condition upon which


the Pending Table shall be made active. The
trigger
condition
is
stored
in
the
EVENT_STORAGE record.
0

1
2
3..15

Pending Table is activated based on an


absolute
time
contained
in
the
EVENT_STORAGE record. The time is
interpreted as SDATE_TIME.
Pending Table is activated based on a relative
time contained in the EVENT_STORAGE
record.
Pending Table is activated based on a non-time
associated
trigger
contained
in
the
EVENT_STORAGE record.
Reserved.

I.2.16 <subElement> Element (Child of <bitField>)


The <subElement> element binds a bit field member type to an identifier. This type is defined to be local
to the bit field scope.
I.2.16.1 <subElement> DTD
<!ELEMENT subElement ((description, extension?)?, enumerator?, assert*)>
<!ATTLIST subElement
name
CDATA
#REQUIRED
type
CDATA
#REQUIRED
startBitInclusive
CDATA
#REQUIRED
endBitInclusive
CDATA
#IMPLIED
label
CDATA
#IMPLIED
enumerator
CDATA
#IMPLIED
min
CDATA
#IMPLIED
max
CDATA
#IMPLIED
atomic
CDATA
#FIXED
"JOIN"
accessibility
(UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE )
"READWRITE"
volatile
(AUTO-AS-PER-TYPE | true | false )
"AUTO-AS-PER-TYPE"
metrological
( true | false )
"false"
deprecated
( true | false )
"false">
I.2.16.2 <subElement> Attributes
Name
name

Document Form
Equivalent
Publishes
the
Subelement name in the
syntax and description
sections.

Description
The Sub-element name identifier. This identifier can
be used to refer to the table <subElement>. Subelement names instances shall be unique within the
parent bit field element scope. i.e., multiple
definitions are possible when they are introduced

491

ANSI C12.19-2008

type
startBitInclusive

endBitInclusive

label
enumerator

min
max
atomic

XML File Format of TDL and EDL Files

Publishes
the
Subelement type in the syntax
section.
Publishes the starting bitposition 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.
Publishes the ending bitposition 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.
None.
Publishes
the
Subelement
enumeration
reference in description
sections.
Impacts on low bound
publication
in
the
description section.
Impacts on high bound
publication
in
the
description section.
None

accessibility

The
text
"Non-default
properties: Accessibility =
value" in the description of
the Sub-element shall be
generated.

volatile

The
text
"Non-default
properties:
Volatile
=
value" in the description of
the Sub-element shall be
generated.

492

within <if> or <switch> elements. In those cases the


sub-element names shall be introduced in such a
manner that each instance of the identifier can only
be instantiated once inside the bit field.
The Sub-element type. The <bitField> type limits its
type and bit offsets size.
The bit number representing the first bit of this Subelement.

The bit number representing the last bit of this subelement. If it is not supplied then it takes the value of
the startBitInclusive.

A textual label used to label the sub-element in a


graphic context.
A reference to an enumerator identifier whose
values/label pairs is associated with the values of this
Sub-element.
The smallest value (inclusive) this sub-element may
have.
The largest value (inclusive) this sub-element may
have.
An indication (always JOIN) stating that this Subelement can only be read or written entirely as one
unit and is joined to the next Sub-element in the
sequence of Sub-elements.
The sub-element access restrictions. Possible values
are:
READONLY: this sub-element be accessed but not
modified.
READWRITE: this sub-element is may be written and
its values read-back from the End Device.
WRITEONLY: this sub-element may be accessed
and modified. It may not read back exactly as written.
An indication of the Sub-elements volatility. When
volatile is set to true then the value of this Subelement may change between consecutive reads,
implying that the element should not be cached by
the AMI application, as it may change. When set to
false, then it is an indication that this Sub-element is
not likely to change between consecutive reads
(assuming no operator intervention); it is therefore

XML File Format of TDL and EDL Files

ANSI C12.19-2008

safe for the AMI application to cache the Subelements value.

metrological

deprecated

The
text
"Non-default
properties: Metrological =
value" in the description of
the Sub-element shall be
generated.
The text Deprecated in the
description of the element
shall be generated.

When
the
volatile
attribute
is
set
to
AUTO_AS_PER_ROLE (default value) then the
values of the Tables attribute role should be probed
to determine the volatility of this elements according
to the Tables 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.
An indication that this Sub-element is metrological.
Default value is false.

Indicates that this Sub-element is deprecated and is


likely to be removed or renamed in future releases of
the TDL. Default value is false.

I.2.16.3 <subElement> Document Form Equivalent


The <subElement> definitions are mapped to BNF.bfldMember; and all the descriptions and
enumerations are expressed in description section.
For Document Form publication example see definition of <bitField> above.

I.2.17 <if> Element (Child of <bitField>)


The <if> element provides for encoding alternatives syntax based on a conditional expression.
I.2.17.1 <if> DTD
<!ELEMENT if ((description, extension?)?, then, else?)>
<!ATTLIST if
condition
CDATA
#REQUIRED>
I.2.17.2 <if> Attributes
Name
Condition

Table document
equivalent
Published in the syntax
section between the IF
and THEN tokens.

Description
An expression encoded as BNF.intMathExpression
and reduces to a Boolean value.

I.2.17.3 <if> Document Form


The <if> definitions are mapped to BNF.bfldIf in the syntax section. Any <description> elements that
precede are contained in the <if> element may be produced in the syntax section prior to the introduction
of the BNF.bfldIf syntax enclosed within the comment characters { and }.
For Document form publication example see <if>/<then>, <if>/<else> of <packedRecord>.

493

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.18 <then> Element (Child of <bitField>/<if>)


The <then> element introduces Table Sub-elements that are present when the <if>s parent attribute
condition evaluates to true.
I.2.18.1 <then> DTD
<!ELEMENT then ((description, extension?) | subElement | if | switch | assert)*>
I.2.18.2 Attributes
None.
I.2.18.3 <then> Document Form
The <then> definitions are mapped to the BNF.bfldMember members THEN clause of the BNF.bfldIf
clause. If this element contains a <description> element then the description may be produced in the
syntax section following to the THEN token. This description shall be enclosed within the comment
characters { and }. All elements enclosed will be published in the syntax section. All Sub-elements
descriptions and enumerations may be published in the description section.

I.2.19 <else> Element (Child of <bitField>/<if>)


The <else> element introduces Table Sub-elements that are present when the <if>s parent attribute
condition evaluates to false.
I.2.19.1 <else> DTD definition
<!ELEMENT else ((description, extension?)? | subElement | if | switch | assert)*>
I.2.19.2 <else> Attributes
None.
I.2.19.3 <else> Document Form
The <else> definitions are mapped to the BNF.bfldMember members ELSE clause of the BNF.bfldIf
clause. If this element contains a <description> element then the description may be produced in the
syntax section following to the ELSE token. This description shall be enclosed within the comment
characters { and }. All elements enclosed will be published in the syntax section. All Element
descriptions and enumerations may be published in the description section.
For Document form publication example see <if>/<then>, <if/else> of <packedRecord>.

I.2.20 <switch> Element (Child of <bitField>)


The <switch> element introduces a selector expression. The <case> child elements are to be included
when a startValueInclusive/endValueInclusive attributes match the evaluated expression of the
selection attribute. The optional <default> child element is to be processed by the application when the
expression evaluates none of the available selection.
For Document form publication example see <switch>/<case>, <switch>/<default> of <packedRecord>.

494

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.2.20.1 <switch> DTD


<!ELEMENT switch (description, extension?)?, case*, default?)>
<!ATTLIST switch
selection

CDATA

#REQUIRED>

I.2.20.2 <switch> Attributes


Name
selection

Document Form
Equivalent
Publishes
the
switch
selector expression in the
syntax section.

Description
An expression encoded as BNF.intMathExpression
and reduces to a integer value.

I.2.20.3 <switch> Document Form


The <switch> definitions are mapped to the BNF.bfldCase syntax. If this element contains a
<description> element then the description may be produced in the syntax section just prior to the
SWITCH token. This description shall be enclosed within the comment characters { and }.

I.2.21 <case> Element (Child of <bitField>/<switch>)


The <case> definitions are mapped to the BNF.bfldCaseMember which introduces the CASE token in the
syntax section.
I.2.21.1 <case> DTD
<!ELEMENT case ((description, extension?) | subElement | if | switch | assert)*>
<!ATTLIST case
startValueInclusive CDATA
#REQUIRED
endValueInclusive CDATA
#IMPLIED>
I.2.21.2 <case> Attributes
Name
startValueInclusive
endValueInclusive

Document Form
Equivalent
Publishes the case lowbound value in the syntax
section.
Publishes the case highbound value in the syntax
section.

Description
The selection case lower bound or value for the
contained bit field syntax.
The selection case for the upper bound for the
contained bit field syntax.

I.2.21.3 <case> Document Form


The <case> definitions are mapped to the BNF.bfldCaseMember CASE token and related ranges. The
startValueInclusive and the optional endValueInclusive range attributes are expressed only in the
syntax section followed by the Sub-elements definitions. All Sub-element descriptions and enumerations
may be published in the description section. If this element contains a <description> element then the
description may be produced in the syntax section just prior to the CASE token. This description shall be
enclosed within the comment characters { and }.

I.2.22 <default> Element (Child of <bitField>/<switch>)


The <default> definitions are mapped to the BNF.bfldCaseMember DEFAULT token syntax.

495

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.22.1 <default> DTD


<!ELEMENT default ((description, extension?) | subElement | if | switch | assert)*>
I.2.22.2 <default> Attributes
None.
I.2.22.3 <default> Document Form
The <default> definitions are mapped to the default clause of the BNF.bfldCaseMember DEFAULT
syntax followed by the Sub-elements definitions. All Sub-element descriptions and enumerations may be
published in the description section. If this element contains a <description> element then the description
may be produced in the syntax section just prior to the CASE token. This description shall be enclosed
within the comment characters { and }.

I.2.23 <decade> Element (Child of <tdl>)


The decade element introduces a Decade. A Decade is a common processing scope, and it can contain
a maximum of ten Tables of any one kind. Standard-defined or Manufacturer-defined Tables or
procedures may also be associated with a Decade, thus effectively increasing the total number of tables
in a decade. All types (see <packedRecord>, <bitField> and <enumerator> elements) defined inside a
decade scope are local to the decades scope without conflict with all other types that may be defined in
any other scope (see Rules for inheritance and referencing scoped types and identifiers). However, these
types are visible to associated tables or procedures, as if they were introduced inside the decade scope.
I.2.23.1 <decade> DTD
<!ELEMENT decade ((description, extension?)? | enumerator | packedRecord | bitField | table |
procedure | assert)*>
<!ATTLIST decade
name
CDATA
#REQUIRED
number
CDATA
#REQUIRED
label
CDATA
#IMPLIED>
I.2.23.2 <decade> Attributes
Name
name

number

496

Document Form
Equivalent
Publishes a new section
heading for the named
decade.
Optionally
publishes
the
decade
name in a manner that
binds its name to its
number.

Publishes the Decade


number in the section
heading.

Description
The decade identifier encoded as BNF.decIdentifier.
This identifier can be used to refer to the decade
symbolically or be incorporated into a reference to a
component that was defined inside the decade.
Decade names shall be encoded according to 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).
The decade number, ranging from 0 to 203. This
number shall be 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.

XML File Format of TDL and EDL Files

label

ANSI C12.19-2008

Published in the Decade


section header.

A textual label used to label the container in a


graphic context. It shall be incorporated in the
description of the decade in the Standard.

I.2.23.3 <decade> Document Form


Introduces a Decade section whose name is obtained from the name attribute, number from the number
attribute, and description from the <description> element. Following the decade description the Decade
scope type definition syntax and type descriptions are presented, followed by the Tables defined in the
decade. The Tables shall be ordered in increasing table number.
Decades shall be ordered in increasing Decade number.
Example: Given the XML text below:
<decade name="DATA_SOURCE_DEC" number="1" label="Data Source Tables">
<description>This decade contains tables associated with data sources.</description>

</deacde>
The following may be a partial output generated by a TDL processor in the description section:
9.2 Decade 1: Data Source Tables
This decade contains tables associated with data sources.

Identifier

Value

Definition

DATA_SOURCE_DEC

Implicit numerical constant designation for Data


Source Tables number.

I.2.24 <table> Element (Child of <tdl> or <decade>)


The <table> Element introduces a Table definition and a Table scope. All types (see <packedRecord>,
<bitField> and <enumerator> elements) defined inside a table scope are local to the tables scope without
conflict with any other type that may be defined in any other scope.
I.2.24.1 <table> DTD
<!ELEMENT table ((description, extension?)?, (enumerator | packedRecord | bitField | assert)*)>
<!ATTLIST table
name
CDATA
#REQUIRED
number
CDATA
#REQUIRED
label
CDATA
#IMPLIED
type
CDATA
#REQUIRED
role
(UNDEFINED | LIMITING | ACTUAL |
CONTROL | DATA | PRIVATE)
UNDEFINED
associate
CDATA
#IMPLIED
atomic
( true | false )
"false"
accessibility
(UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE | EXTERNAL)
READWRITE
deprecated
(true | false)
false

497

ANSI C12.19-2008

metrological
volatile
class

XML File Format of TDL and EDL Files

(true | false)
false
(true | false | AUTO_AS_PER_ROLE) AUTO_AS_PER_ROLE>
((CDATA) | STD | STD.UDT | STD.EUDT)
STD>

I.2.24.2 <table> Attributes


Name
Document Form
Equivalent
name
Publishes a new section
heading for the named
table. Optionally publishes
the table name in a
manner that binds its
name to its number. Then
it publishes the table name
in the syntax section.
number
Publishes
the
Table
number in the section
heading. Then it publishes
the table number in the
syntax section.

label

Published in the Table


section header.

type

Then it publishes the table


type in the syntax section.

role

The
text
"Non-default
properties: role = value" in
the description of the
Table shall be generated.

Description
The table identifier encoded as BNF.tblIdentifier. This
identifier can be used to refer to the Table or be
incorporated into a reference to a component that
was defined inside this Table. Table names shall be
unique for one device class TDL definition (i.e.,
including all Standard and manufacturer referenced
XML file segments or referenced TDLs).
The Table number, ranging from 0 to 2039. This
number shall be used as a substitute for the table
name in arithmetic expressions. Table numbers shall
be unique within one Standard TDL or one
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).
A textual label used to label the container in a
graphic context. It shall be incorporated in the
description of the table in the Standard.
A reference to a packed record identifier whose type
is mapped to this table according to the rules for
inheritance and referencing scoped types and
identifiers.
An indication of the use case for this Table.
UNDEFINED (default): This End Device Table has
no known 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:

498

XML File Format of TDL and EDL Files

ANSI C12.19-2008

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.
A reference to a decade identifier that represents the
decade associated with this table. Search for
unqualified references to 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 was defined inside the associated decade.
The Table is monolithic, when true. When
communicating an atomic Table
it shall be
transported and presented as one unit, including all
of its internal element members. The communication
protocol shall only utilize a full-table read or full-table
write service requests when referencing this table.
Implementer's intended design for read and write
access for a this Table. Possible values are:

associate

The text Associated with


scope: target in the
description of the Table
shall be generated.

atomic

The
text
"Non-default
properties: Atomic = value"
in the description of the
Table shall be generated.

accessibility

The
text
"Non-default
properties: Accessibility =
value" in the description of
the
Table
shall
be READWRITE (default): This Table can be read or
generated.
written from or to the End Device.
READONLY: This Table can be read from or to the
End Device but not written.
WRITEONLY: his 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 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.

deprecated

The text Deprecated in the


description of the Table
shall be generated.
The
text
"Non-default
properties: Metrological =
value" in the description of
the
Table
shall
be
generated.
The
text
"Non-default
properties:
Volatile
=
value" in the description of
the
Table
shall
be
generated.

metrological

volatile

The default value is READWRITE.


Indicates that this Table is deprecated and is likely to
be removed or renamed in a future release of the
TDL. Default value is false.
An indication that this Table is metrological. Default
value is false.
Note: If any element within the Table is metrological
then the entire table shall be metrological.
An indication of the Tables volatility. When volatile is
set to true then the values of this Table may
may change between consecutive Table reads,
implying that the Tables elements 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

499

ANSI C12.19-2008

XML File Format of TDL and EDL Files

reads (assuming no operator intervention); it is


therefore safe for the AMI application to cache the
Table values.

class

None.

When the volatile attribute is set to


AUTO_AS_PER_ROLE (default value) then the
values of the Tables attribute role should be probed
to determine the volatility of this Table.
A tag that identifies an AMI Application run-time class
(module) that should be used to manage this Table.
Presently 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;
Meter manufacturer may disclose special processing
algorithms and bind them to processing class names
to facilitate special data processing on select tables.

I.2.24.3 <table> Document Form


The <table> definitions are mapped to BNF.tableDefinition in a new Table section. All the Table scope
defined (contained) descriptions, enumerators, packed records and bit fields are published in this section.
Example: Given the XML text below:
<table name="TIME_REMAIN_TBL" number="56" type="TIME_REMAIN_RCD"
label="Time remaining table" role=DATA atomic=true accessibility=READONLY>
<description>
<b>TIME_REMAIN_TBL</b> (Table 56) provides predictive time quantities.
</description>
<packedRecord name="TIME_REMAIN_RCD">
<if condition="ACT_TIME_TOU_TBL.SEPARATE_SUM_DEMANDS_FLAG">
<then>
<element name="SUMM_TIER_TIME_REMAIN" type="UINT16">
<description>
Minutes remaining until the next tier change which
affects summations. Used when the capability flag
<b>ACT_TIME_TOU_TBL.
SEPARATE_SUM_DEMANDS_FLAG</b> (Table 51) =
TRUE.
</description>
</element>
<element name="DEMAND_TIER_TIME_REMAIN" type="UINT16">
<description>
Minutes remaining before the next tier change which
affects demands. Used when the capability flag
<b>ACT_TIME_TOU_TBL.
SEPARATE_SUM_DEMANDS_FLAG</b> (Table 51) =
TRUE.
</description>

500

XML File Format of TDL and EDL Files

ANSI C12.19-2008

</element>
</then>
<else>
<element name="TIER_TIME_REMAIN" type="UINT16">
<description>
Minutes, remaining before the next tier change.
</description>
</element>
</else>
</if>
<element name="SELF_READ_DAYS_REMAIN" type="UINT8">
<description>
Days remaining before the next scheduled Self-read.
</description>
</element>
</packedRecord>
</table>
The following may be the output generated by a TDL processor in the new Table section:
9.6.7 Table 56 Time Remaining Table
Table 56 Description
TIME_REMAIN_TBL (Table 56) provides predictive time quantities.
Table 56 Non-default properties: Atomic = true, Role = DATA, Accessibility = READONLY.
Table 56 Type Definitions
TYPE TIME_REMAIN_RCD = PACKED RECORD
IF ACT_TIME_TOU_TBL.SEPARATE_SUM_DEMANDS_FLAG THEN
SUMM_TIER_TIME_REMAIN
: UINT16;
DEMAND_TIER_TIME_REMAIN
: UINT16;
ELSE
TIER_TIME_REMAIN
: UINT16;
END;
SELF_READ_DAYS_REMAIN
: UINT8;
END;
TABLE 56 TIME_REMAIN_TBL = TIME_REMAIN_RCD;
Table 56 Element Descriptions
Identifier

Value

Definition

TIME_REMAIN_RCD
SUMM_TIER_TIME_REMAIN

0..65535

Minutes remaining until the next tier change


which affects summations. Used when the
capability
flag
ACT_TIME_TOU_TBL.
SEPARATE_SUM_DEMANDS_FLAG
(Table
51) = TRUE.

DEMAND_TIER_TIME_REMAIN

501

ANSI C12.19-2008

XML File Format of TDL and EDL Files

TIER_TIME_REMAIN

0..65535

Minutes remaining before the next tier change


which affects demands. Used when the
capability
flag
ACT_TIME_TOU_TBL.
SEPARATE_SUM_DEMANDS_FLAG
(Table
51) = TRUE.

0..65535

Minutes, remaining before the next tier change.

SELF_READ_DAYS_REMAIN 0..255

Days remaining before the next scheduled Selfread.

I.2.25 <procedure> Element (Child of <tdl> or <decade>)


The <procedure> element introduces a procedure definition that maps to BNF.procDefinition and creates
a Procedure scope. All types defined inside a procedure scope are local to the procedures scope without
conflict with all other types that may be defined in any other scope. In addition to providing yet another
scope, procedure elements also provide implicit instructions to construct the parameters and the
response elements in Table 7, PROC_INITIATE_TBL and Table 8, PROC_RESP_TBL (See Section 5.12
Procedures for details).
I.2.25.1 <procedure> DTD
<!ELEMENT procedure ((description, extension?)?, (enumerator | packedRecord | bitField | assert)*,
extend?, extend?)>
<!ATTLIST procedure
name
CDATA
#REQUIRED
number
CDATA
#REQUIRED
label
CDATA
#IMPLIED
associate
CDATA
#IMPLIED>
atomic
( true | false )
"true"
accessibility
(UNIMPLEMENTED | WRITEONLY | READWRITE)
READWRITE
deprecated
(true | false)
false
metrological
(true | false)
false
class
((CDATA) | STD)
STD>
I.2.25.2 <procedure> Attributes
Name
name

number

502

Document Form
Equivalent
Publishes a new section
heading for the named
procedure.
Optionally
publishes the procedure
name in a manner that
binds its name to its
number. Then it publishes
the procedure name in the
syntax section of Table 7,
and Table 8.
Publishes the Procedure
number in the section
heading. Then it publishes

Description
The
Procedure
identifier
encoded
as
BNF.procIdentifier. This identifier can be used to
refer to the procedure or be incorporated into a
reference to a component that was defined inside
this Procedure. Procedure names shall be unique for
one End Device class TDL definition (i.e., including
all Standard and manufacturer referenced XML file
segments or referenced TDLs).
The Procedure number, ranging from 0 to 2039. This
number shall be used as a substitute for the
procedure name in arithmetic. This number shall

XML File Format of TDL and EDL Files

the procedure number in


the syntax section.

ANSI C12.19-2008

also be used in generating the unique index for


references to procedure parameters (see
STD:PROC_INITIATE_TBL.(STANDARD|MANUFAC
TURER)<procedure number>.PARM) and response
data
(see
PROC_RESPONSE_TBL.(STANDARD|MANUFACT
URER).<procedure
number>.RESP_DATA).
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
STD:PROC_INITIATE_TBL
PROC.MFG_FLAG and the <tdl> deviceClass
attribute to resolve this ambiguity).
Note: The application shall allocate procedure
indices in implicitly STD:PROC_INITIATE_TBL and
STD:PROC_RESPONSE_TBL for all procedures that
are not explicitly identified in an extend attribute.
A textual label used to label the container in a
graphic context. It shall be incorporated in the
description of the procedure in the Standard.
A reference to a decade identifier that represents the
decade associated with this procedure. Search for
unqualified references to packed records or bit fields
that are not found in the local scope of this procedure
will continue in the associated decade scope, as if
this procedure was defined inside the associated
decade.
The Procedure is monolithic, when true. When
communicating an atomic Procedure it shall be
transported and presented as one unit, including all
of its internal element members. The communication
protocol shall only utilize a full-table read or full-table
write service requests when referencing this
procedure via Tables 7 or 8.
Implementer's intended design for read and write
access for a this Procedure. Possible values are:

label

Published
in
the
Procedure section header.

associate

The text Associated with


scope: target in the
description
of
the
Procedure
shall
be
generated.

atomic

The
text
"Non-default
properties: Atomic = value"
in the description of the
Procedure
shall
be
generated.

accessibility

The
text
"Non-default
properties: Accessibility =
value" in the description of
the Procedure shall be READWRITE (default): This Procedure (Table 7 and
generated.
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.

deprecated

The text Deprecated in the


description
of
the
Procedure
shall
be
generated.
The
text
"Non-default

metrological

The default value is READWRITE.


Indicates that this Procedure is deprecated and is
likely to be removed or renamed in a future release
of the TDL. Default value is false.
An indication that this Procedure is metrological.

503

ANSI C12.19-2008

XML File Format of TDL and EDL Files

properties: Metrological =
value" in the description of
the Procedure shall be
generated.
class

None.

Default value is false.


Note: If any element within the Procedure is
metrological then the entire procedure shall be
metrological.
A tag that identifies an AMI Application run-time class
(module) that should be used to manage this
Procedure. Presently the following Standard classes
are defined:
STD (default value) Process the Procedure
according to the default actions called for those
Procedures by this Standard.
Meter manufacturer may disclose special processing
algorithms and bind them to processing class names
to facilitate special data processing on select
procedures.

I.2.25.3 <procedure> Document Form


The <procedure> definitions are mapped to BNF.procDefinition in a new Procedure section. All the
Procedure scope defined (contained) descriptions, enumerators, packed records and bit fields are
published in this section.
Example: Given the XML text below:
<procedure name="UPDATE_LAST_READ_ENTRY_PROC" number="5"
label="Update Last Read Entry">
<description>
When invoked, the End Device attempts to reduce the list Element
<b>NBR_UNREAD_ENTRIES</b> by the value specified. To execute this procedure,
the initiator shall in addition be required to have access to the procedure and
write access to the table containing the selected list(s).
</description>
<packedRecord name="PARM_DATA_RCD">
<element name="LIST" type="UINT8"
enumerator="RESET_LIST_POINTERS_PROC.LIST_ENUM">
<description>List selected.</description>
</element>
<element name="ENTRIES_READ" type="UINT16">
<description>Number of entries confirmed.</description>
</element>
</packedRecord>
<extend type="UPDATE_LAST_READ_ENTRY_PROC.PARM_DATA_RCD"
target="PROC_INITIATE_TBL.STD_PARM_RCD"/>
</procedure>
The following may be the output generated by a TDL processor in the new Procedure section:
9.1.8.1.6 Procedure 05: Update Last Read Entry
Procedure 05 Description
When this procedure is invoked, the End Device attempts to reduce the list Element
NBR_UNREAD_ENTRIES by the value specified. To execute this procedure, the initiator shall in

504

XML File Format of TDL and EDL Files

ANSI C12.19-2008

addition be required to have access to the procedure and write access to the table containing the
selected list(s).
Procedure 05 Type Definitions
TYPE UPDATE_LAST_READ_ENTRY_RCD = PACKED RECORD
LIST
: UINT8;
ENTRIES_READ
: UINT16;
END;
PROCEDURE 5 UPDATE_LAST_READ_ENTRY_PROC
REQUEST = UPDATE_LAST_READ_ENTRY_PROC.UPDATE_LAST_READ_ENTRY_RCD;
Procedure 05 Element Descriptions
Identifier

Value

Definition

UPDATE_LAST_READ_ENTRY_RCD
LIST
ENTRIES_READ

List
selected.
See
RESET_LIST_POINTERS_PROC.LIST_ENUM.
0..65535

Number of entries confirmed.

I.2.26 <extend> Element (Child of <procedure>)


The extend element within the procedure element introduces parameter and response field extensions to
Table 7, STD.PROC_INITIATE_TBL and Table 8, STD.PROC_RESP_TBL, respectively. When an
extension is not provided, then the value of the PARM or RESP is NIL.
I.2.26.1 <extend> DTD definition
<!ELEMENT extend (description, extension?)?>
<!ATTLIST extend
type
CDATA
#REQUIRED
target
CDATA
#REQUIRED
strict
( true | false ) "true">
I.2.26.2 <extend> Attributes
Name
type

target

Table document
equivalent
The name of the packed
record that is used to
define
the
procedure
response
or
request
parameters is published in
the syntax section.

None.

Description
A reference to a packed record identifier whose type
is
being
used
to
extend
PROC_INITIATE_TBL.STD_PARM_RCD
or
PROC_RESPONSE_TBL.STD_RESP_RCD (subject
to the target selected).
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.
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
to:
the
resolved
reference
only

505

ANSI C12.19-2008

XML File Format of TDL and EDL Files

PROC_INITIATE_TBL.STD_PARM_RCD
or
PROC_RESPONSE_TBL.STD_RESP_RCD (subject
to the target selected).
strict

Suffix the term reference


is strict to the description
of the Procedure in
reference to the request or
response parameters.

Target data type being extended


When target extension record is created the search
rule for the target type will be strict (if strict is set to
true, the default value) or not strict (if the strict
attribute is set to false). A strict search requires that
the implied or explicit target scope can only contain
the extended type. A non strict search simply
requires that the implied or explicit target scope
search be searched first 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.

I.2.26.3 <extend> Document Form


See example in definition of <procedure>. For a fuller discussion and detailed examples see Section 5 on
Procedures.

I.2.27 <qualify> Element (Child of <tdl>)


The qualify element enables the Standard and the End Device Manufacturer extensions to the Standard
provide additional information about decades, table, procedures as a whole or about single elements that
are defined within. General qualifications can be provided by the Standard (as published in C12.19).
These are considered to be suggestions to implementers. Additional qualifications or re-qualifications can
be provided by manufactures when they register they device classes (new meter models) to describe the
actual restrictions, capabilities and features of their device. Therefore, a manufacturer device class can
add, replace, or extend any Standard qualification.
I.2.27.1 <qualify> DTD
<!ELEMENT qualify (table | procedure | element | packedRecord | bitField | assert)*>
I.2.27.2 <qualify> Attributes
None.
I.2.27.3 <qualify> Document Form
When expressing the qualified information in Document form as part of the Standard then it shall
document the corresponding types, Tables and Elements where defined, in-line, as if the types, Tables or
Elements where qualified at the definition time. When expressing the qualified information in Document
form as part of a specific End Device registration then it shall document the corresponding changes to
types, Tables and Elements in a tabular form that identifies the components affected and the nature of
the qualification applied.

I.2.28 <table> element (Child of <qualify> element)


Qualifies the properties of a pre-defined Table. Any supplied attribute value acts to override the value set
at definition time. For example if a Table is defined to be atomic (atomic=true) and it is re-qualified as
atomic=false then it is no longer atomic.

506

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.2.28.1 <table> DTD definition


<!ELEMENT table (description, extension?)? >
<!ATTLIST table
name
CDATA
#REQUIRED
alias
CDATA
#IMPLIED
atomic
( true | false ) "false"
accessibility
( UNIMPLEMENTED | EXTERNAL | READONLY | WRITEONLY | READWRITE )
#IMPLIED
class
CDATA
#IMPLIED
role
( UNDEFINED | LIMITING | ACTUAL | CONTROL | DATA | PRIVATE )
#IMPLIED
volatile
( AUTO-AS-PER-TYPE | true | false ) #IMPLIED
metrological
( true | false ) #IMPLIED
deprecated
( true | false ) #IMPLIED>
I.2.28.2 <table> Attributes
Name

Table document
equivalent

name
alias

atomic
accessibility
class
role
volatile
metrological
deprecated

Publishes the fact that


name is also known as
alias.

Description
The table identifier encoded as BNF.tblIdentifier. This
identifier shall refer to an already defined Table.
An alias is an alternate name for a table. This name
can be used to address the named table. Each
instance of an entry with alias attribute will add a new
alias for the table name list.
See atomic attribute of <tdl>/<table> and|
<decade>/<table>
See accessibility attribute of <tdl>/<table> and
<decade>/<table>
See class attribute of <tdl>/<table> and
<decade>/<table>
See
role
attribute
of
<tdl>/<table>
|
<decade>/<table>
See volatile attribute of <tdl>/<table> and
<decade>/<table>
See metrological attribute of <tdl>/<table> and
<decade>/<table>
See deprecated attribute of <tdl>/<table> and
<decade>/<table>

I.2.29 <procedure> Element (Child of <qualify>)


Qualifies the properties of a pre-defined Procedure. Any supplied attribute value acts to override the
value set at definition time.

507

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.29.1 <procedure> DTD


<!ELEMENT procedure (description, extension? )?>
<!ATTLIST procedure
name
CDATA
#REQUIRED
alias
CDATA
#IMPLIED
atomic
( true | false ) #IMPLIED
accessibility
( UNIMPLEMENTED | WRITEONLY | READWRITE )
#IMPLIED
metrological
( true | false ) #IMPLIED
deprecated
( true | false ) #IMPLIED >
I.2.29.2 <procedure> Attributes
Name

Table document
equivalent

name

The
procedure
identifier
encoded
as
BNF.procIdentifier. This identifier shall refer to an
already defined Procedure.
Publishes the fact that An alias is an alternate name for a procedure. This
name is also known as name can be used to address the named procedure.
Each instance of an entry with alias attribute will add
alias.
a new alias for the procedure name list.
See atomic attribute of <tdl>/<procedure> and
<decade>/< procedure >
See accessibility attribute of <tdl>/<procedure> and
<decade>/<procedure>
See metrological attribute of <tdl>/<procedure> and
<decade>/< procedure >
See deprecated attribute of <tdl>/<procedure> and
<decade>/<procedure>

alias

atomic
accessibility
metrological
deprecated

Description

I.2.30 <element> Element (Child of <qualify>)


Qualifies the properties of a pre-defined Table Element. Any supplied attribute value acts to override the
value set at definition time.
I.2.30.1 <element> DTD
<!ELEMENT element (description, extension? )?>
<!ATTLIST element
name
CDATA
#REQUIRED
alias
CDATA
#IMPLIED
atomic
(JOIN | true | false )
#IMPLIED
accessibility
(UNIMPLEMENTED | READONLY | WRITEONLY | READWRITE )
#IMPLIED
metrological
( true | false )
#IMPLIED
volatile
( AUTO-AS-PER-TYPE | true | false )
#IMPLIED
deprecated
( true | false )
#IMPLIED>

508

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.2.30.2 <element> Attributes


Name

Table document
equivalent

name

alias

Publishes the fact that


name is also known as
alias.

atomic
accessibility
metrological
volatile
deprecated

Description
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.
An alias is an alternate name for an Element or Final
Element. 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.
See atomic attribute of <element>, <subElement>,
<array> or <set>.
See
accessibility
attribute
of
<element>,
<subElement>, <array> or <set>.
See
metrological
attribute
of
<element>,
<subElement>, <array> or <set>.
See volatile attribute of <element>, <subElement>,
<array> or <set>.
See
accessibility
attribute
of
<element>,
<subElement>, <array> or <set>.

I.2.31 <packedRecord> Element (Child of <qualify>)


Qualifies the properties of a pre-defined PACKED RECORD type. Any supplied attribute value acts to
override the value set at definition time.
I.2.31.1 <packedRecord> DTD
<!ELEMENT packedRecord (description, extension? )?>
<!ATTLIST packedRecord
name
CDATA
#REQUIRED
atomic
( true | false ) "false"
accessibility
( READONLY | WRITEONLY | READWRITE ) "READWRITE"
metrological
( true | false )
#IMPLIED
deprecated
( true | false ) "false">
I.2.31.2 Attributes
Name
name
atomic
accessibility
metrological
deprecated

Table document
equivalent

Description
The PACKED RECORD type identifier encoded as
BNF.rcdReference. This identifier shall refer to an
already defined packed record.
See atomic attribute of <packedRecord>.
See accessibility attribute of <packedRecord>.
See metrological attribute of <packedRecord>.
See deprecated attribute of <packedRecord>.

509

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.2.32 <bitField> Element (Child of <qualify>)


Qualifies the properties of a pre-defined BIT FIELD type. Any supplied attribute value acts to override the
value set at definition time.
I.2.32.1 <bitField> DTD
<!ELEMENT bitField (description, extension? )?>
<!ATTLIST bitField
name
CDATA
#REQUIRED
atomic
( true | false ) "false"
accessibility
( READONLY | WRITEONLY | READWRITE ) "READWRITE"
deprecated
( true | false ) "false">
I.2.32.2 <bitField> Attributes
Name

Table document
equivalent

name

Description
The BIT FIELD type identifier encoded as
BNF.bfldReference. This identifier shall refer to an
already defined bit field.
See atomic attribute of <bitField>.
See accessibility attribute of < bitField >.
See metrological attribute of < bitField >.
See deprecated attribute of < bitField >.

atomic
accessibility
metrological
deprecated

I.2.33 <assert> Element (Child of <qualify>)


The assert element is provided to document additional relationships among Table and Elements to
enable application alert processing.
I.2.33.1 <assert> DTD
<!ELEMENT assert ((description, extension? )?, condition+)>
<!ATTLIST
assert
raise (ERROR | WARN | INFO)
ERROR
text
CDATA
#REQUIRED>
<!ELEMENT

condition (#PCDATA)>

I.2.33.2 <assert> Attributes


Name
raise
Text

510

Document Form
Equivalent

Description
Indicates the type of assertion to be raised when the
indicated expression (see condition element)
evaluates to true.
This is a short text message that will be generated
when the assertion is raised.

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.3 EDL XML Format


I.3.1 Overview
The EDL XML Form is described in this Annex section. It is an expression of the TDL/EDL architecture
described in the previous Annex section. The EDL XML Form is used to express End Device data values
that make up the device tables in a manner that is independent solely on the ANSI C12.19 Tables and
independent of the communication protocol used to acquired them. The EDL XML Form provides the
following features:
1. XML encoding of default sets used values assigned to the Standards FLC and FLC+1 tables.
2. XML encoding of constants or fixed values that may be assigned to select elements within
Standard Tables by the Standard.
3. XML encoding of constant or fixed values that may be assigned to select elements of Standard or
Manufacturer tables by the End Device manufacturer.
4. XML encoding of Final Element values that were read from or written to an End Device by any
communication protocol (e.g., ANSI C12.18, ANSI C12.21 or ANSI C12.22).
The EDL XML Form file is associated with one specific End Device model, thus it is uniquely associated
with an End Device class. This property implies that the structure of the EDL file is derived from the data
model of all tables (Standard and Manufacturer) and all procedures (Standard and Manufacturer) that are
defined for that End Device class.
The EDL XML Form can be validated by an EDL schemas like C1219TDL-xxxx-EDLSchema.xsd (for
exclusively Standard based End Devices) or
by augmented schemas like <MfgEdClass>EDLSChema.xsd (for Manufacturer expansion on the Standard). In this context xxxx stands for the
Standards year of publication and <MfgEdClass> is the registered End Device class. These schemas
can be automatically generated from the Standard and Manufacturer TDL XML Form using an XSL
transform, such as the C1219TDLEDLTransform.xsl and related technology.
Thereafter, default sets, constant values and End Device communicated Final Element values can be
imported and exported using the EDL XML Forms, like C1219TDL-xxxx-DefaultSet.xml or
<MfgEdClass>.xml, where xxxx is the Standards year of publication and <MfgEdClass> is the registered
End Device Class (although the use of <MfgEdClass> does not have to be encoded in the name of the
EDL XML Form).
The EDL XML Form file may also be processed to yield a printable EDL Document Form for inclusion in
the Standards or manufacturers documentation.

I.3.2 <edl> Root Element


The <edl> element is a container of the End Device default sets, constants and imported or exported
Final Element data values. It provides some limited meta-data, such as Table name, Table number, Table
source being the Standard or the manufacturer, the names of Final Elements and their index position
within the containing packed record or bit field. The <edl> element also documents the End Device class
attribute (deviceClass), that identifies the matching TDL XML Form file of that End Device class.
A tables subset document can describe Standard table definitions, extend (or revise) an existing
Standard into new Standard or extend existing an Standard using manufacturer-supplied extensions.
There shall be only one <edl> element in an EDL XML Form file. The target EDL XML Form namespace
and the EDL Schema namespace shall be derived uniquely from the End Device class registered via a
TDL XML Form file.

511

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.3.2.1 <edl> DTD


The <edl> element has the following attributes and child elements.
<!ELEMENT

edl

(description?, defaultSet*, data*)>

<!ATTLIST

edl
xmlns[:name]
deviceClass
registry
isoBranch
standard
title
version
defaultSetUsed

CDATA
CDATA
CDATA
CDATA
CDATA
CDATA
CDATA
CDATA

#REQUIRED
#REQUIRED
#IMPLIED
#IMPLIED
#IMPLIED
#IMPLIED
#IMPLIED
0>

I.3.2.2 <edl> Attributes


Name
xmlns[:name]

deviceClass

registry

isoBranch

standard

512

Document Form
Equivalent
Not expressed in
Document Form.

In the Document Form


heading section of the
constant data, default sets
or import/export data.
In the Document Form
heading section of the
constant data, default sets
or import/export data.
In the Document Form
heading section of the
constant data, default sets
or import/export data.
In the Document Form
heading section the name
of the URI of referred
standard is shown.

Description
The reference EDL Schema namespaces used. One
of one of these 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.
The deviceClass defines the registered TDL for that
End Device class. This is derived from the
deviceClass attribute of the TDL root XML Form
element.
The name of the entity that is the registrar of this End
Device class.
The ISO branch attribute associates a registry name
with an ISO object directory branch. The
deviceClass attribute is relative to this branch.
The reference standard this End Device is based on.
Example: 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 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 choices to www.ansi.org are www.ieee.org

XML File Format of TDL and EDL Files

Name

Document Form
Equivalent

version

In the Document Form


heading section of the
constant data, default sets
or import/export data.
In the Document Form
heading section of the
constant data, default sets
or import/export data.
In the Document Form
heading section of the
constant data, default sets
or import/export data.

title

defaultSetUsed

ANSI C12.19-2008

Description
and www.ic.gc.ca.
The version of this data set. This may be used as an
indicator to an AMI application to provide for early
identification of the nature of the EDL data sets
contained within.
The text to display in a graphic context or at the
beginning of the data document. Example: ANSI
C12.19-2008 Utility Industry Standard Table Default
Sets.
The default set to use when the value of the final
element
GEN_CONFIG_TBL.DEFAULT_SET_USED is not
explicitly available from this data set.

I.3.2.3 <edl> Document Form


A default set section values section is introduced (when default sets are provided); or a new constants
section is introduced (when constants are provided) otherwise a new End Device values section is
introduced. Default sets section is Annex C, Default Sets for Decade Tables.

I.3.3 <description> Element (Child of <edl>)


The <description> element is an optional text-formatting element that accepts simple formatting
directives. It provides a text area to document the EDL.
I.3.3.1 <description> DTD
Identical to the DTD definition of the <description> element of the TDL XML Form.
I.3.3.2 <description> Document Form
The formatted text is produced.

I.3.4 Pseudo Element Names


In order to facilitate TDL XML Form driven Table names and Element names generation the Standard
introduces the BNF definitions for XML-element macro types. These need to be substituted for the actual
names of the indicated content (in this case an Element name). The following macros are defined:
${tableName}

::= BNF.tblIdentifier
/ constraint : text { The name of a Table obtained from
the name attribute of a <table> element or EUDT_TBL. } / match :
(/tdl//table/@name | EUDT_TBL);

${limitingTableName}

::= BNF.tblIdentifier
/ constraint : text { The name of a FCL+1 Table as
obtained from the name attribute of a <table> element that is also qualified as
LIMITING. } / match : /tdl//table/@name[@role=LIMITING] ;

${elementName}

::= BNF.anyElementName
/ constraint : text { Any Element or Final
Element that may be used as a component in the path that leads to a the value of
a Final Element. } (
/ match : /tdl//element/@name |
/ match : /tdl//subElement/@name |
/ match : /tdl//array/@name |

513

ANSI C12.19-2008

XML File Format of TDL and EDL Files

/ match : /tdl//set/@name );
For example if the TDL XML Form contains entries like:
<table name=ACT_REGS_TBL number=21 type=REGS_RCD role=LIMITING

</table>
<table name=CURRENT_REG_DATA_TBL number=23 type=REGISTER_DATA_RCD

</table>
Then the pseudo DTD definition
<!ELEMENT

${tableName}

(${elementName})*>

<!ATTLIST

${tableName}
source
instance
number

(standard | manufacturer)
(active | pending)
CDATA

#IMPLIED
active
#IMPLIED

>
Is a valid production rule for the above Table entries in an EDL file.
<ACT_REGS_TBL source= standard instance=active number=21> </ACT_REGS_TBL>
and
<CURRENT_REG_DATA_TBL> </CURRENT_REG_DATA_TBL>

I.3.5 Resolving Second Edition XML Schema Constraints


With the release of the second edition of the states:
Schema Component Constraint: Element Declarations Consistent
If the {particles} contains, either directly, indirectly (that is, within the {particles} of a contained
model group, recursively) or implicitly two or more element declaration particles with the same
{name} and {target namespace}, then all their type definitions must be the same top-level
definition, that is, all of the following must be true:
1 all their {type definition}s must have a non-absent {name}.
2 all their {type definition}s must have the same {name}.
3 all their {type definition}s must have the same {target namespace}.
Ref: Section 3.8.6 Constraints on Model Group Schema Components, XML Schema Part 1:
Structures Second Edition, W3C Recommendation 28 October 2004.
I.3.5.1 The Schema Constraints Problem
ANSI C12.19 promotes the construction of types that do not meet the above constraint. Schema
Component Constraint violation can be seen clearly in the definition of Table 5, Device Identification
Table.

514

XML File Format of TDL and EDL Files

ANSI C12.19-2008

TYPE IDENT_RCD = PACKED RECORD


IF GEN_CONFIG_TBL.ID_FORM != 0THEN
IDENTIFICATION
: BCD(10);
ELSE
IDENTIFICATION
: STRING(20);
END;
END;
TABLE 5 DEVICE_IDENT_TBL = IDENT_RCD;
It is rather obvious that this table contains the Element IDENTIFICATION, which repeats two times in the
same packed record. Also, each IDENTIFICATION definition has different types.
This problem can only manifest itself in elements delimited by IF / THEN / ELSE or SWITCH / CASE /
DEFAULT statements (see Document Form syntax).
I.3.5.2 Resolution of The Schema Constraints Problem
The EDL XML form definition introduces the macro notation ${if-switch-clause} to be used ahead of any
collection of EDL elements that are derived form TDL elements contained within a <then></then>,
<else></else>, <case></case> or <default></default> members of the <if> and <switch> XML
elements. Each instance of the ${if-switch-clause} has to be unique so that the Schema Component
Constraint is not violated. Otherwise this element shall be ignored by all processors.
${if-switch-clause}

::= ((if-then | if-else | switch-case | switch-default) - BNF.number) /


constraint : text { Each instance of this element shall be automatically
generated by the EDL processor so that the Schema Component Constraint is
not violated. } ;

I.3.6 <${if-switch-clause}> Element


The <${if-switch-clause}> element is optional unless its absence can lead to a Schema Component
Constraint violation.
I.3.6.1 <${if-switch-clause}> DTD
<!ELEMENT

${if-switch-clause}

EMPTY>

Using the above DEVICE_IDENT_TBL example, it can be demonstrated that the following XML EDL file
element names are uniquely consistent with the XML schema constraint rules.
Case 1:
<edl >
<data>
<DEVICE_IDENT_TBL>
<if-then-1/>
<!--See ${if-switch-clause} -->
<IDENTIFICATION index="0">10-20-30</IDENTIFICATION >
</DEVICE_IDENT_TBL>
</data>
</edl>

515

ANSI C12.19-2008

XML File Format of TDL and EDL Files

Case 2:
<edl >
<data>
<DEVICE_IDENT_TBL>
<if-else-1/>
<!--See ${if-switch-clause} -->
<IDENTIFICATION index="1">MY BEST METER</IDENTIFICATION >
</DEVICE_IDENT_TBL>
</data>
</edl>

I.3.7 <defaultSet> Element (Child of <edl>)


The <defaultSet> element is an optional Standards place holder for up to 254 default sets (1..255). Each
default set provides information about the End Device FLC+1 Tables and assumed values.
I.3.7.1 <defaultSet> DTD
<!ELEMENT
defaultSet
<!ATTLIST

defaultSet
number

(${limitingTableName}*)>
CDATA

I.3.7.2 <defaultSet> Attributes


Name
Document Form
Equivalent
number
Label for the default set
number column.

#REQUIRED>

Description
The number of the default set presented by the
<defaultSet> parent element. For more details see
GEN_CONFIG_TBL.DEFAULT_SET_USED.

I.3.7.3 <defaultSet> Document Form


A tabulation of all Final Elements listed as one column for the table indicated by the
${limitingTableName} attribute per default set number indicated by the number attribute. These are
sorted first by table number followed by the element index.
Given the XML text below:
<edl >
<description>
<i>The following values are assigned to the decade and decade+1 table values
based upon the value of the Table 00 element <b>DEFAULT_SET_USED</b></i>.
</description>
<defaultSet number="1">
<ACT_SOURCES_LIM_TBL>
<SOURCE_FLAGS>
<PF_EXCLUDE_FLAG>false</PF_EXCLUDE_FLAG>
<RESET_EXCLUDE_FLAG>false</RESET_EXCLUDE_FLAG>
<BLOCK_DEMAND_FLAG>false</BLOCK_DEMAND_FLAG>
<SLIDING_DEMAND_FLAG>false</SLIDING_DEMAND_FLAG>
<THERMAL_DEMAND_FLAG>false</THERMAL_DEMAND_FLAG>
<SET1_PRESENT_FLAG>false</SET1_PRESENT_FLAG>
<SET2_PRESENT_FLAG>false</SET2_PRESENT_FLAG>
<FILLER>0</FILLER>
</SOURCE_FLAGS>
<NBR_UOM_ENTRIES>0</NBR_UOM_ENTRIES>

516

XML File Format of TDL and EDL Files

ANSI C12.19-2008

<NBR_DEMAND_CTRL_ENTRIES>0</NBR_DEMAND_CTRL_ENTRIES>
<DATA_CTRL_LENGTH>1</DATA_CTRL_LENGTH>
<NBR_DATA_CTRL_ENTRIES>1</NBR_DATA_CTRL_ENTRIES>
<NBR_CONSTANTS_ENTRIES>1</NBR_CONSTANTS_ENTRIES>
<CONSTANTS_SELECTOR>2</CONSTANTS_SELECTOR>
<NBR_SOURCES>1</NBR_SOURCES>
</ACT_SOURCES_LIM_TBL>

</defaultSet>
<defaultSet number="2">
<ACT_SOURCES_LIM_TBL>
<SOURCE_FLAGS>
<PF_EXCLUDE_FLAG>false</PF_EXCLUDE_FLAG>
<RESET_EXCLUDE_FLAG>true</RESET_EXCLUDE_FLAG>
<BLOCK_DEMAND_FLAG>true</BLOCK_DEMAND_FLAG>
<SLIDING_DEMAND_FLAG>false</SLIDING_DEMAND_FLAG>
<THERMAL_DEMAND_FLAG>false</THERMAL_DEMAND_FLAG>
<SET1_PRESENT_FLAG>false</SET1_PRESENT_FLAG>
<SET2_PRESENT_FLAG>false</SET2_PRESENT_FLAG>
<FILLER>0</FILLER>
</SOURCE_FLAGS>
<NBR_UOM_ENTRIES>0</NBR_UOM_ENTRIES>
<NBR_DEMAND_CTRL_ENTRIES>1</NBR_DEMAND_CTRL_ENTRIES>
<DATA_CTRL_LENGTH>1</DATA_CTRL_LENGTH>
<NBR_DATA_CTRL_ENTRIES>2</NBR_DATA_CTRL_ENTRIES>
<NBR_CONSTANTS_ENTRIES>1</NBR_CONSTANTS_ENTRIES>
<CONSTANTS_SELECTOR>2</CONSTANTS_SELECTOR>
<NBR_SOURCES>2</NBR_SOURCES>
</ACT_SOURCES_LIM_TBL>

</defaultSet>
<defaultSet number="3">
<ACT_SOURCES_LIM_TBL>
<SOURCE_FLAGS>
<PF_EXCLUDE_FLAG>true</PF_EXCLUDE_FLAG>
<RESET_EXCLUDE_FLAG>true</RESET_EXCLUDE_FLAG>
<BLOCK_DEMAND_FLAG>true</BLOCK_DEMAND_FLAG>
<SLIDING_DEMAND_FLAG>false</SLIDING_DEMAND_FLAG>
<THERMAL_DEMAND_FLAG>false</THERMAL_DEMAND_FLAG>
<SET1_PRESENT_FLAG>false</SET1_PRESENT_FLAG>
<SET2_PRESENT_FLAG>false</SET2_PRESENT_FLAG>
<FILLER>0</FILLER>
</SOURCE_FLAGS>
<NBR_UOM_ENTRIES>0</NBR_UOM_ENTRIES>
<NBR_DEMAND_CTRL_ENTRIES>3</NBR_DEMAND_CTRL_ENTRIES>
<DATA_CTRL_LENGTH>1</DATA_CTRL_LENGTH>
<NBR_DATA_CTRL_ENTRIES>2</NBR_DATA_CTRL_ENTRIES>
<NBR_CONSTANTS_ENTRIES>1</NBR_CONSTANTS_ENTRIES>
<CONSTANTS_SELECTOR>2</CONSTANTS_SELECTOR>
<NBR_SOURCES>2</NBR_SOURCES>
</ACT_SOURCES_LIM_TBL>

</defaultSet>
<defaultSet number="4">
<ACT_SOURCES_LIM_TBL>
<SOURCE_FLAGS>

517

ANSI C12.19-2008

XML File Format of TDL and EDL Files

<PF_EXCLUDE_FLAG>false</PF_EXCLUDE_FLAG>
<RESET_EXCLUDE_FLAG>false</RESET_EXCLUDE_FLAG>
<BLOCK_DEMAND_FLAG>true</BLOCK_DEMAND_FLAG>
<SLIDING_DEMAND_FLAG>false</SLIDING_DEMAND_FLAG>
<THERMAL_DEMAND_FLAG>false</THERMAL_DEMAND_FLAG>
<SET1_PRESENT_FLAG>false</SET1_PRESENT_FLAG>
<SET2_PRESENT_FLAG>false</SET2_PRESENT_FLAG>
<FILLER>0</FILLER>
</SOURCE_FLAGS>
<NBR_UOM_ENTRIES>0</NBR_UOM_ENTRIES>
<NBR_DEMAND_CTRL_ENTRIES>1</NBR_DEMAND_CTRL_ENTRIES>
<DATA_CTRL_LENGTH>1</DATA_CTRL_LENGTH>
<NBR_DATA_CTRL_ENTRIES>2</NBR_DATA_CTRL_ENTRIES>
<NBR_CONSTANTS_ENTRIES>1</NBR_CONSTANTS_ENTRIES>
<CONSTANTS_SELECTOR>2</CONSTANTS_SELECTOR>
<NBR_SOURCES>2</NBR_SOURCES>
</ACT_SOURCES_LIM_TBL>

</defaultSet>
</edl>
The following may be a partial tabular output generated by an EDL processor:
The following values are assigned to the decade and decade+1 table values based upon the value of the
TABLE 00 Element DEFAULT_SET_USED.
Final Element Name
TABLE 11 - ACT_SOURCES_LIM_TBL
SOURCE_FLAGS
PF_EXCLUDE_FLAG
RESET_EXCLUDE_FLAG
BLOCK_DEMAND_FLAG
SLIDING_DEMAND_FLAG
THERMAL_DEMAND_FLAG
SET1_PRESENT_FLAG
SET2_PRESENT_FLAG
NBR_UOM_ENTRIES
NBR_DEMAND_CTRL_ENTRIES
DATA_CTRL_LENGTH
NBR_DATA_CTRL_ENTRIES
NBR_CONSTANTS_ENTRIES
CONSTANTS_SELECTOR
NBR_SOURCES

DEFAULT_SET_USED
2
3

FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
0
0
1
1
1
2
1

FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
0
1
1
2
1
2
2

TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
0
3
1
2
1
2
2

4
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
0
1
1
2
1
2
2

I.3.8 <${limitingTableName}> Element (Child of <defaultSet>)


The <${limitingTableName}> element is a container for Final Element default set values of FLC+1,
Function Limiting Control Tables, strictly used for defining default sets.
I.3.8.1 <${limitingTableName}> DTD
<!ELEMENT

518

${limitingTableName}

(${if-switch-clause}?, ${elementName}*)>

XML File Format of TDL and EDL Files

<!ATTLIST

${limitingTableName}
source
number

ANSI C12.19-2008

(standard | manufacturer)
CDATA

#IMPLIED
#IMPLIED

I.3.8.2 <${limitingTableName}> Attributes


Name

Document Form
Equivalent
A publication of the type of
table being manufacturer
or standard.

source

number

A publication of the table


number

Description
An indication of the source of this table being a
manufacturer or standard. This assumes that a
manufacturer may wish to augment the default set
used with their own as part of the documentation
process of manufacturer decades.
The table number.

I.3.8.3 <${limitingTableName}> Document Form


A tabulation of all final elements listed as one column for the table indicated by the
${limitingTableName} attribute for default set number indicated by the number attribute; and by Final
Element index.

I.3.9 <data> Element (Child of <edl>)


The <data> element is an optional Standard or Manufacturer data value place holder for zero or more self
consistent Table value-sets. A self consistent Table value-set is a collection of tables and values that
together with the registered device class form a data set that can be interpreted uniformly and
unambiguously. A Table value-set contains constants, imported or exported values. All the values
expressed and contained within one <data> element are related and shall originate from one instance of
a source or destination data-set that belongs to one End Device values and instance.
I.3.9.1 <data> DTD
<!ELEMENT

data

(${tableName}*)>

I.3.9.2 <data> Document Form


One tabulation for each <data> element. Each <data> element tabulation consists of a list of all found
Tables and their Final Elements name and value. The Elements and Final Elements of each Table are
sorted by their Element index.

I.3.10 <${tableName}> Element


The <${tableName}> element is a container for Final Element data values. The minimum requirement is
that All Elements and Final Elements be present in the order defined in corresponding Table definitions
and the inner-most element shall be a Final Element.
I.3.10.1 <${tableName}> DTD
<!ELEMENT

${tableName}

(pendingHeader?, ${if-switch-clause}?, ${elementName}*)>

<!ATTLIST

${tableName}
source
instance
number

(standard | manufacturer | eudt) #IMPLIED


(active | pending)
active
CDATA
#IMPLIED

519

ANSI C12.19-2008

XML File Format of TDL and EDL Files

binary

CDATA

I.3.10.2 <${tableName}> Attributes


Name
Document Form
Equivalent
source
A publication of the type of
Table being manufacturer,
standard or extendeduser-defined.
number
A publication of the Table
number
instance
A publication of the tables
instance being active or
pending data.
pendingHeader
binary

Hex dump of the all table


values.

#IMPLIED>

Description
An indication of the source of this Table being a
manufacturer, standard or extended-user-defined.
The Table number (see BNF.tblNumber).
The type of the Table from which contains the data.
An active Table or a pending table. If the instance is
pending then the <pendingHeader> element may be
included.
The elements of the PENDING_EVENT_DESC_RCD
mapped
into
the
corresponding
EDL
<${elementName}.> members.
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 was performed. The content
of this attribute shall span recursively all of the Final
Elements contained within. When this element is
present that 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.

I.3.10.3 <${tableName}>Document Form


A tabulation of all final elements listed as one column for the table indicated by the ${tableName}, sorted
by final element index. See <${elementName}> for an example.

I.3.11 <${elementName}> Element


The <${elementName}> element maps any TDL Element name of
<array>, <set>, and ultimately their Final Element values.

type <element>, <subElement>

I.3.11.1 <${elementName}> DTD


<!ELEMENT

${elementName} ((${if-switch-clause}?, (${elementName} | entry)*) | (#PCDATA))>

<!ATTLIST

${elementName}
index
binary

CDATA
CDATA

#IMPLIED
#IMPLIED>

I.3.11.2 <${elementName}> Attributes


Name
index

520

Document Form
Equivalent
The index of this Element

Description
The Elements relative position in the containing data

XML File Format of TDL and EDL Files

Name

binary

ANSI C12.19-2008

Document Form
Equivalent
is published in brackets to
the right of the Elements
name.
Hex dump of the values.

Description
type (e.g., position within a PACKED RECORD or a
BIT FIELD).
The Elements 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 that 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.

I.3.11.3 <${elementName}> Document Form


Non Final Element ${elementName} is published by its name. If the element is not the first Element in the
Final Elements list, then it is preceded with a period .. If the Element is a Final Element then the its data
value is presented. A number of presentation formats variations may be possible.
Given the XML text below:
<GEN_CONFIG_TBL instance=active number=0 source=standard>
<FORMAT_CONTROL_1>
<DATA_ORDER>0</DATA_ORDER>
<CHAR_FORMAT>2</CHAR_FORMAT>
</FORMAT_CONTROL_1>

</ GEN_CONFIG_TBL>
The following may be a partial tabular output generated by a EDL processor:
TABLE 00 - GEN_CONFIG_TBL
FORMAT_CONTROL_1
DATA_ORDER
CHAR_FORMAT

Final Element Value


0
2

Alternatively following may be a partial relative textual output generated by a EDL processor:
TABLE 00 - GEN_CONFIG_TBL
FORMAT_CONTROL_1.DATA_ORDER
FORMAT_CONTROL_1.CHAR_FORMAT

Final Element Value


0
2

Alternatively following may be a absolute textual output generated by a EDL processor:


TABLE 00 - GEN_CONFIG_TBL
GEN_CONFIG_TBL.FORMAT_CONTROL_1.DATA_ORDER
GEN_CONFIG_TBL.FORMAT_CONTROL_1.CHAR_FORMAT

Final Element Value


0
2

521

ANSI C12.19-2008

XML File Format of TDL and EDL Files

I.3.12 <entry> Element


The <entry> element is a container TDL <array> elements or TDL <set> elements.
I.3.12.1 <entry> DTD
<!ELEMENT

entry ((${if-switch-clause}?, ${elementName}+) | (#PCDATA))?>

<!ATTLIST

entry
index
binary

CDATA
CDATA

#IMPLIED
#IMPLIED>

I.3.12.2 <entry> Attributes


Name
index

binary

522

Document Form
Equivalent
Element index for
array or set member.

Description
this

Hex dump of the values.

The relative element index or range of indices for this


array or set 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
element 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*([09]+\S*([\-]\S*[0-9]+)?))* { A number, a range of
numbers separated by -; or a collection of numbers
or ranges each separated by a ,}.
The Elements
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 that 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.

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.3.12.3 <entry> Document Form


Array entry is presented by an empty set or brackets, [], or using the index, such as: [n].
Given the XML text below:
<CURRENT_REG_DATA_TBL instance=active number=23 source=standard>
<NBR_DEMAND_RESETS index=0>324</NBR_DEMAND_RESETS>
<TOT_DATA_BLOCK index=1>
<SUMMATIONS index=0>
<entry index=0>654738.2</<entry>
<entry index=1>1435.2</<entry>
</SUMMATIONS>
<DEMANDS index=1>
<entry index=0>
<EVENT_TIME index=0>
<entry index=0>2007-03-07T12:34:00-06:00</entry>
<entry index=1>2007-03-14T12:00:20-06:00</entry>
<entry index=2>2007-03-21T12:21:00-06:00</entry>
</EVENT_TIME>
<CUM_DEMAND index=1>6345.2</CUM_DEMAND>
</entry>
<entry index=1>
<EVENT_TIME index=0>
<entry index=0>2007-03-06T11:32:00-06:00</entry>
<entry index=1>2007-03-13T11:01:00-06:00</entry>
<entry index=2>2007-03-20T11:12:00-06:00</entry>
</EVENT_TIME>
<CUM_DEMAND index=1>3241.5</CUM_DEMAND>
</entry>
</DEMANDS>
</TOT_DATA_BLOCK>
</CURRENT_REG_DATA_TBL>
Note: In the above example, we do not require the presence of <${if-switch-clause}> elements since the
Table Element names are unique in this sequence.
The following may be a partial output generated by an EDL processor:
TABLE 23 CURRENT_REG_DATA_TBL
NBR_DEMAND_RESETS
TOT_DATA_BLOCK
SUMMATIONS[0]
SUMMATIONS[1]
DEMANDS[0]
EVENT_TIME[0]
EVENT_TIME[1]
EVENT_TIME[2]
CUM_DEMAND
DEMANDS[1]
EVENT_TIME[0]
EVENT_TIME[1]
EVENT_TIME[2]

Final Element Value


324
654738.2
1435.2
Wed Mar 7 12:34:00 MDT 2007
Wed Mar 14 12:00:00 MDT 2007
Wed Mar 21 12:21:00 MDT 2007
6345.2
Tue Mar 6 11:32:00 MDT 2007
Tue Mar 13 11:01:00 MDT 2007
Tue Mar 20 11:12:00 MDT 2007

523

ANSI C12.19-2008

CUM_DEMAND

TIER_DATA_BLOCK

XML File Format of TDL and EDL Files

3241.5

I.3.13 <pendingHeader> element


The <pendingHeader> element is a container for an event descriptor of a pending event that will trigger or
has triggered the Table values provided. This element shall be present when the instance attribute of the
<${tableName}> element is set to pending.
I.3.13.1 <pendingHeader> DTD
<!ELEMENT

pendingHeader

<!ELEMENT

PENDING_EVENT_DESC_RCD

<!ELEMENT

EVENTS_SELECTOR (EVENT_CODE, SELF_READ_FLAG?,


DEMAND_RESET_FLAG?, RESERVED?)>
(EVENT_CODE |
SELF_READ_FLAG | DEMAND_RESET_FLAG | RESERVED) (#PCDATA) >

<!ELEMENT

PENDING_EVENT_DESC_RCD>
(EVENTS_SELECTOR, EVENT_STORAGE)>

<!ELEMENT

EVENT_STORAGE

(PE_STIME_DATE | -- Contains STIME_DATE value -(WEEKS?, DAYS?, HOURS?, MINUTES?, SECONDS?) |


(MFG_CODE?, MFG_EVENT_CODE?))? >

<!ELEMENT

(PE_STIME_DATE | WEEKS | DAYS | HOURS | MINUTES | SECONDS |


MFG_CODE | MFG_EVENT_CODE)
(#PCDATA) >

I.3.13.2 <pendingHeader> Document Form


Publish an expression of the pending event that will activate this table or an expression of the pending
event and the table activation date of an activated table in front of all related Element values.

524

XML File Format of TDL and EDL Files

ANSI C12.19-2008

I.4 EDL XML Form Encoding of Final Element Values


Final Elements #PCDATA values shall be encoded as shown in the table below, where the prefix xsd in
front of the EDL XML Form Type column represents the association between the schema namespace
prefix for the referenced XML schema namespace http://www.w3.org/2001/XMLSchema. The actual
data type definition shall be derived from the corresponding TDL XML File that shares the same End
Device class.
Note 1: Some computer languages do not support unsigned integer types. Special care shall be taken
when processing unsigned types in systems capable of handling only signed types.
Note 2: Some computer languages do not support unsigned integer types. In addition they cannot handle
signed integers that are encoded with more than 64 bits. These systems need to apply extra
special handling for the type UINT64. It is recommended that the use of UINT64 data type be
minimized by End Device manufacturers.
Document Form
Type
NIL

EDL XML Form


Type

INT8
INT16
INT24
INT32
INT40
INT48
INT56
INT64

xsd:byte
xsd:short
xsd:int
xsd:int
xsd:long
xsd:long
xsd:long
xsd:long

UINT8
UINT16
UINT24
UINT32
UINT40
UINT48
UINT56
UINT64

xsd:unsignedByte
xsd:unsignedShort
xsd:unsignedInt
xsd:unsignedInt
xsd:unsignedLong
xsd:unsignedLong
xsd:unsignedLong
xsd:unsignedLong

FLOAT32
FLOAT64
FLOAT_CHAR6
FLOAT_CHAR12
FLOAT_CHAR21
FIXED_BCD4
FIXED_BCD6
FIXED_BCD8

xsd:double
xsd:double
xsd:double
xsd:double
xsd:double
xsd:double
xsd:double
xsd:double

NI_FORMAT1
NI_FORMAT2

xsd:double
xsd:double

FILL8
FILL16
FILL24
FILL32

xsd:unsignedByte
xsd:unsignedShort
xsd:unsignedInt
xsd:unsignedInt

Comment
Element shall not be present in the EDL file.

See Note 1 above.


See Note 1 above.
See Note 1 above.
See Note 1 above.
See Note 1 above.
See Note 1 above.
See Note 1 above.
See Note 2 above.

Shall be set to 0.
Shall be set to 0.
Shall be set to 0.
Shall be set to 0.

525

ANSI C12.19-2008

XML File Format of TDL and EDL Files

Document Form
Type
FILL64

EDL XML Form


Type
xsd:unsignedLong

Shall be set to 0.

BCD
CHAR
STRING

xsd:string
xsd:string
xsd:string

Preserve spaces. Same as BCD(1).


Preserve spaces. Same as STRING(1).
Preserve spaces. Same as STRING(1).

HTIME_DATE
LTIME_DATE
STIME_DATE
HTIME
TIME
STIME

xsd:dateTime
xsd:dateTime
xsd:dateTime
xsd:time
xsd:time
xsd:time

Maps HTIME_DATE_RCD during TDL processing.


Maps LTIME_DATE_RCD during TDL processing.
Maps STIME_DATE_RCD during TDL processing.
Maps HTIME_RCD during TDL processing.
Maps TIME_RCD during TDL processing.
Maps STIME_RCD during TDL processing.

DATE
RDATE

xsd:date
xsd:unsignedShort

Maps to/from RDATE_RCD during TDL processing.

SET(n)
STRING(n)
BCD(n)

xsd:boolean
xsd:string
xsd:string

BINARY(n)

xsd:hexBinary

Encoded as an array of Booleans.


Preserve spaces.
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. Eg.: 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 then
converted to a the xsd:string representation 12.45.
A collection of octets encoded as hexadecimal values.

INT(n..m)
UINT(n..m)
BOOL(n)

xsd:long
xsd:unsignedLong
xsd:boolean

Member of BIT FIELD


Member of BIT FIELD, See Note 2 above.
Member of BIT FIELD

526

Comment

Universal Identifier

ANSI C12.19-2008

ANNEX J: Universal Identifier


(Normative)
ANSI C12.19 makes use of the ISO Universal Identifier to uniquely identify objects. This is used for ANSI
C12.19 and related standards to uniquely identify components of the End Device Class, EDL and TDL.
<device-class-root-oid> ::= 2.16.124.113620.1.19

{ISO registered absolute object identifier root for


End Device Classes. This value shall be
encoded for the purpose of transmission using
ISO/IEC 8825-1:2002 [BER] as:
06 07 60 7C 86 F7 54 01 13H }

The following table summarizes the list of objects actually defined:


Use
ANSI C12.19 Device Class

Universal identifier
<device-class-root-oid>.<device class id>

ANSI C12.19 Device Class


Absolute C12.19 Device Class identifiers shall be globally unique. To ensure this, users of the Standard
may register a Device Class Universal Identifier. This identifier shall be common to all End Devices that
share the same End Device operating model, data structures and operational constants (i.e., C12.19 TDL
and C12.19 EDL). This identifier may be used by upstream device to interpret incoming data structures
and operational assumptions made by the manufacturer of the End Device.
Device Classes will be assigned on a first come first serve basis. The first 128 Device Class IDs are
reserved for registration of one way devices. Preferred Device Class IDs may also be requested and
assigned if available.
Also submitted with the registration request is a simple XML-text TDL file (as defined in this standard) and
an optional EDL if desired. For one-way devices, EDL and TDL shall include enough information to
completely describe any unsolicited messages that the C12.22 Node might generate. For two-way
devices, no specific information is required to be included in the EDL and TDL.
Registration
Information on registration can be found at http://www.naedra.org. This site is under the management of
ANSI/IEEE/MC OID Oversight group.

527

ANSI C12.19-2008

Algorithms for the Conversion of Table Element Values to Engineering Units

ANNEX K: Algorithms for the Conversion of Table Element Values to Engineering


Units
(Informative)
The following algorithms describe how Table Element values, which are retrieved from the End Device,
may be converted to physical and meaningful engineering units in reference to the point of metering and
to the point of delivery. These algorithms are applicable to Table Elements that represent register
readings, such as Elements from Tables 23, 24, 25, 28 or Tables 64, 65, 66, 67 or Tables 155, 156,
157,158. The conversion factors are described in Section 9.2, Decade 1: Data Source Tables and may
be retrieved from the End Device or from EDL files. This annex utilizes GENERIC_CONSTANTS_RCD
for purpose of illustation. GENERIC_CONSTANTS_RCD may be equivilently replaced with
ELECTRIC_CONSTANTS_RCD with an assume DIVISOR equal to 1.0.
The conversion process is broken into a number of steps:
1. The first step in the sequence is the locating of conversion factors in Decade 1. This step is
necessary to obtain the correct conversion factors, scalars, multipliers and unit of measure that
need to be applied.
2. The second step in the sequence is the de-normalization of interval data elements. This step is
needed only when processing interval data of load profile or Quality-of-service (Decade 6 or
Decade 15).
3. The third step in the sequence is the conversion to engineering units at the point of metering.
This step is always required in order to scale the data as sensed by the End Device where the
End Device is attached.
4. The fourth step in the sequence is the conversion to engineering units at the point of delivery.
This step is needed only when it is desired to scale the data as seen at the point of delivery (e.g.,
kWh consumed for billing data).
5. Finally, it is necessary to assign to the result the correct engineering units. This final step
provides two key attributes:
a. Assignment of the basic physical units (e.g., Wh)
b. Assignment if correct power-of-ten prefix expression to the converted value (e.g., value
reported is in kWh).
These steps are illustrated in the following subsections using pseudo-code. Table Elements are shown in
BOLD. Pseudo-code variables are shown in BOLD-ITALICS. Pseudo-code is illustrated by box
enclosure.

K.1 Locating Conversion Factors From Decade 1


When a Table Final Element represents a register value, it is also associated with a data source selection
Element in a corresponding control Table. This association is based on the Elements placement index in
its containing array. For example, the Final Element CURRENT_REG_DATA_TBL .
TOT_DATA_BLOCK . SUMMATIONS[ N ] is the Nth summation in an array of summation retrieved from
in Table 23. The corresponding data source selector that is association with this Final Element may be
retrieved from DATA_SELECTION_TBL . SUMMATION_SELECT[ N ], whose type is
STD.SOURCE_SELECT_RCD. The packed record STD.SOURCE_SELECT_RCD contains the Final
Element SI = SOURCE_INDEX, which links the above register with the source-attributes Element,
SOURCES_TBL.SOURCES_LINK
[SI],
This
Element
contains
selection-flags
(per
SOURCES_TBL.SOURCE_LINK_BFLD) that identify the conversion factors used from Table Elements
found in Decade 1, Data Sources Tables, as shown in the table below:

528

Algorithms for the Conversion of Table Element Values to Engineering Units

SOURCES_TBL.SOURCES_LINK [ SI ]
UOM_ENTRY_FLAG
DEMAND_CTRL_FLAG
DATA_CTRL_FLAG
CONSTANTS_FLAG
PULSE_ENGR_FLAG
CONSTANT_TO_BE_APPLIED

ANSI C12.19-2008

Action to be take when set to TRUE


Retrieve UOM_ENTRY[ SI_UOM ] Element from Table
12, Units of Measure Entry Table,
Retrieve INTERVAL_VALUE[ SI_DMD ] Element from
Table 13, Demand Control Table.
Retrieve and process SOURCES_ID[ SI_CTL ] Element
from Table 14, Data Control Table.
Retrieve and process SELECTION[ SI_CST ] Element
from Table 15, Constants Table.
This is flag does not impact the calculation. Its state does
not affect the calculation outcome, whether set to TRUE
or whether set to FALSE.
This flag affects the use of the MULTIPLIER, DIVISOR
and OFFSET Final Elements of CONSTANTS_TBL .
SELECTION[ SI_CST ]. GENERIC_CONSTANTS.

Array indices SI_UOM, SI_DMD, SI_CTL and SI_CST are the indices of the referenced Elements that
need be retrieved from Tables 12, 13, 14 and 15 to affect calculations. When the dimension of any one of
NBR_UOM_ENTRIES,
NBR_DEMAND_CTRL_ENTRIES,
NBR_DATA_CTRL_ENTRIES
or
NBR_CONSTANTS_ENTRIES that are found in ACT_SOURCES_LIM_TBL is the same as
ACT_SOURCES_LIM_TBL.NBR_SOURCES the value of the corresponding SI_UOM, SI_DMD,
SI_CTL, SI_CST shall be set to SI. Otherwise the index to is computed by performing a bit walk across
all flags in SOURCES_TBL and counting all the flags that are set to TRUE, as shown in the pseudo code
below:
SI = the desired index (SOURCE_INDEX) of a registers the array of source selectors in Table 16.
IF ACT_SOURCES_LIM_TBL.NBR_UOM_ENTRIES == ACT_SOURCES_LIM_TBL.NBR_SOURCES
THEN
SI_UOM = SI
ELSE
SI_UOM = -1
IF SOURCES_TBL.SOURCES_LINK[SI].UOM_ENTRY_FLAG == TRUE THEN
K=0
WHILE K <= SI REPEAT
IF SOURCES_TBL.SOURCES_LINK[K].UOM_ENTRY_FLAG == TRUE THEN
SI_UOM = SI_UOM + 1
END
K=K+1
END
END
END

529

ANSI C12.19-2008

Algorithms for the Conversion of Table Element Values to Engineering Units

IF ACT_SOURCES_LIM_TBL.NBR_DEMAND_CTRL_ENTRIES ==
ACT_SOURCES_LIM_TBL.NBR_SOURCES THEN
SI_DMD = SI
ELSE
SI_DMD = -1
IF SOURCES_TBL.SOURCES_LINK[SI].DEMAND_CTRL_FLAG == TRUE THEN
K=0
WHILE K <= SI REPEAT
IF SOURCES_TBL.SOURCES_LINK[K].DEMAND_CTRL_FLAG == TRUE
THEN
SI_DMD = SI_DMD + 1
END
K=K+1
END
END
END
IF ACT_SOURCES_LIM_TBL.NBR_DATA_CTRL_ENTRIES ==
ACT_SOURCES_LIM_TBL.NBR_SOURCES THEN
SI_CTL = SI
ELSE
SI_CTL = -1
IF SOURCES_TBL.SOURCES_LINK[SI].DATA_CTRL_FLAG == TRUE THEN
K=0
WHILE K <= SI REPEAT
IF SOURCES_TBL.SOURCES_LINK[K].DATA_CTRL_FLAG == TRUE THEN
SI_CTL = SI_CTL + 1
END
K=K+1
END
END
END
IF ACT_SOURCES_LIM_TBL.NBR_CONSTANTS_ENTRIES ==
ACT_SOURCES_LIM_TBL.NBR_SOURCES THEN
SI_CST = SI
ELSE
SI_CST = -1
IF SOURCES_TBL.SOURCES_LINK[SI].CONSTANTS_FLAG == TRUE THEN
K=0
WHILE K <= SI REPEAT
IF SOURCES_TBL.SOURCES_LINK[K].CONSTANTS_FLAG == TRUE THEN
SI_CST = SI_CST + 1
END
K=K+1
END
END
END
The above algorithm yields the values SI_UOM, SI_DMD, SI_CTL and SI_CST. Positive values are index
entries into the corresponding conversion factors of the related Tables 12, 13, 14 and 15. Negative values
imply that there is no applicable information available for that source.
Note: When Table 16 is not retrievable from the End Device (meter) or from the an EDL file then there
shall be an assumed correspondence of 1:1 between each entry index in Table 16 and index into the

530

Algorithms for the Conversion of Table Element Values to Engineering Units

ANSI C12.19-2008

corresponding entry in Tables 12, 13, 14 and 15.


i.e.,
IF GEN_CONFIG_TBL.STD_TBLS_USED[16] == FALSE THEN
SI_UOM = SI_DMD = SI_CTL = SI_CS = SI = SOURCE_INDEX
END
The content of VALUE represents the Final Element-value read from a Table. The remainder of this
annex describes how to apply the necessary conversion factors to convert VALUE to physically
meaningful engineering units (e.g., Wh) when the End Device is an electricity meter.

K.2 De-normalizing Interval Data Elements


Register Elements that represent interval data that are retrieved from load profile Tables or Quality-ofservice Tables need to be de-normalized before proceeding with the remaining algorithm conversions
described in the next section. This preliminary conversion applies to register Elements that are found in
load profile Tables 64, 65, 66, 67 and Quality-of-service Tables 155, 156, 157, 158.
Note: The reference to Elements from ACT_LP_TBL assume that when ACT_LP_TBL is not available
from the End Device then the application shall obtain values of the needed Elements by consulting other
available resources in the following order of priority: (1) utilize the FLC/FLC+1 rules; (2) search the EDL
file (when available); (3) Use default sets (if available); (4) otherwise assume a value of 0 (of FALSE) to
all numeric Elements.
CH = The load profile or Quality-of-service channel number that is associated with VALUE
DIVISOR = SCALAR = 1

IF VALUE from Table 64 && ACT_LP_TBL.LP_FLAGS.SCALAR_DIVISOR_FLAG_SET1 THEN


SCALAR = LP_CTRL_TBL.SCALARS_SET1[ CH ]
DIVISOR = LP_CTRL_TBL.DIVISORS_SET1[ CH ]
END
IF VALUE from Table 65 && ACT_LP_TBL.LP_FLAGS.SCALAR_DIVISOR_FLAG_SET2 THEN
SCALAR = LP_CTRL_TBL.SCALARS_SET2[ CH ]
DIVISOR = LP_CTRL_TBL.DIVISORS_SET2[ CH ]
END
IF VALUE from Table 66 && ACT_LP_TBL.LP_FLAGS.SCALAR_DIVISOR_FLAG_SET3 THEN
SCALAR = LP_CTRL_TBL.SCALARS_SET3[ CH ]
DIVISOR = LP_CTRL_TBL.DIVISORS_SET3[ CH ]
END
IF VALUE from Table 67 && ACT_LP_TBL.LP_FLAGS.SCALAR_DIVISOR_FLAG_SET4 THEN
SCALAR = LP_CTRL_TBL.SCALARS_SET4[ CH ]
DIVISOR = LP_CTRL_TBL.DIVISORS_SET4[ CH ]
END
IF ( VALUE from Table 155 &&
ACT_QUALITY_OF_SERVICE_TBL.FEATURES.TD_SCALAR_DIVISOR_FLAG )
THEN
SCALAR = QUALITY_CONTROL_TBL.QUALITY_DESC.TD_ASYNC_CONTROL.
CHANNEL_SOURCE_ID[ CH ]. SCALAR
DIVISOR = QUALITY_CONTROL_TBL.QUALITY_DESC.TD_ASYNC_CONTROL.

531

ANSI C12.19-2008

Algorithms for the Conversion of Table Element Values to Engineering Units

CHANNEL_SOURCE_ID[ CH ]. DIVISOR
END
IF ( VALUE from Table 156 &&
ACT_QUALITY_OF_SERVICE_TBL.FEATURES.SCALAR_DIVISOR_FD_ASYNC_FLAG )
THEN
SCALAR = QUALITY_CONTROL_TBL.QUALITY_DESC. FD_ASYNC_CONTROL.
CHANNEL_SOURCE_ID[ CH ]. SCALAR
DIVISOR = QUALITY_CONTROL_TBL.QUALITY_DESC. FD_ASYNC_CONTROL.
CHANNEL_SOURCE_ID[ CH ]. DIVISOR
END
IF ( VALUE from Table 157 &&
ACT_QUALITY_OF_SERVICE_TBL.SCALAR_DIVISOR_TD_PERIODIC_FLAG )
THEN
SCALAR = QUALITY_CONTROL_TBL.QUALITY_DESC.
TD_PERIODIC_WAVEFORM_CONTROL. CHANNEL_SOURCE_ID[ CH ]. SCALAR
DIVISOR = QUALITY_CONTROL_TBL.QUALITY_DESC.
TD_PERIODIC_WAVEFORM_CONTROL. CHANNEL_SOURCE_ID[ CH ]. DIVISOR
END
IF ( VALUE from Table 158 &&
ACT_QUALITY_OF_SERVICE_TBL.SCALAR_DIVISOR_FD_PERIODIC_FLAG )
THEN
SCALAR = QUALITY_CONTROL_TBL.QUALITY_DESC.
FD_PERIODIC_WAVEFORM_CONTROL. CHANNEL_SOURCE_ID[ CH ]. SCALAR
DIVISOR = QUALITY_CONTROL_TBL.QUALITY_DESC.
FD_PERIODIC_WAVEFORM_CONTROL. CHANNEL_SOURCE_ID[ CH ]. DIVISOR
END
De-normalize VALUE with appropriate SCALAR and DIVISOR.
VALUE = VALUE * DIVISOR / SCALAR

K.3 Converting to Engineering Units at the Point of Metering


With source selection indices SI, SI_UOM, SI_DMD, SI_CTL, SI_CST at hand and a de-normalized
VALUE, it is now the time to apply the internal metering conversion factors. For a better understanding of
the intended use of SET1_CONSTANTS and SET2_CONSTANTS in the following algorithms consult
Figure K.1 below.

532

Algorithms for the Conversion of Table Element Values to Engineering Units

ANSI C12.19-2008

Point of delivery
7.2 / 12.47
KV 3ph
Gnd wye
277 / 480
volts

current
transformer
200A / 5A = 40
SET2_CONSTANTS.RATIO_F1

voltage
transformer
277V / 120V = 2.0833
SET2_CONSTANTS.RATIO_P1

Point of metering
Transformer rated meter
Load does not go through End Device
(meter)
SET1_CONSTANTS.RATIO_F1
SET1_CONSTANTS.RATIO_P1
When CTs and PTs are also designed
internal to the End Device.

Customer
load
center

Figure K.1A typical electricity meter installation


IF SOURCES_TBL.SOURCES_LINK[ SI ].CONSTANT_TO_BE_APPLIED && SI_CST >= 0 THEN
MULTIPLIER = CONSTANTS_TBL.SELECTION[ SI_CST ].GENERIC_CONSTANTS.
MULTIPLIER
IF ACT_SOURCES_LIM_TBL.CONSTANTS_SELECTOR == 3 THEN
DIVISOR = CONSTANTS_TBL.SELECTION[ SI_CST ].GENERIC_CONSTANTS.
DIVISOR
ELSE
DIVISOR = 1.0
END
OFFSET = CONSTANTS_TBL.SELECTION[ SI_CST ].GENERIC_CONSTANTS.
OFFSET
VALUE = VALUE * MULTIPLIER / DIVISOR + OFFSET
END
IF (ACT_SOURCES_LIM_TBL.SET1_PRESENT_FLAG && SI_CST >= 0 &&
CONSTANTS_TBL.SELECTION[ SI_CST ].
GENERIC_CONSTANTS.SET_FLAGS.SET_APPLIED_FLAG == FALSE ) THEN
RATIO_F1 = CONSTANTS_TBL.SELECTION[ SI_CST ].
GENERIC_CONSTANTS.SET1_CONSTANTS.RATIO_F1
RATIO_P1 = CONSTANTS_TBL.SELECTION[ SI_CST ].
GENERIC_CONSTANTS.SET1_CONSTANTS.RATIO_P1
VALUE = VALUE * RATIO_F1 * RATIO_P1
END
At this point VALUE should be the End Device reading at the point of metering. This is because
SET1_CONSTANTS represent the intermediary transformer that is closest to the End Device or
embedded within the End Device; whereas SET2_CONSTANTS represent the intermediary transformer

533

ANSI C12.19-2008

Algorithms for the Conversion of Table Element Values to Engineering Units

that is next in proximity to the End Device (e.g., the utility metering transformer).
Note: The reader needs to be made aware of a possible condition where ACT_SOURCES_LIM_TBL .
SET2_PRESENT_FLAG is TRUE and CONSTANTS_TBL.SELECTION [ SI_CST ] .
GENERIC_CONSTANTS . SET_FLAGS . SET_APPLIED_FLAG is also TRUE. i.e., The register value
reported was already converted internally by the End Device to engineering units at the point of delivery.
When this condition is true then VALUE computed in this section already represents the point of delivery
and not the point of metering.

K.4 Converting to Engineering Units at the Point of Delivery


With source selection indices SI, SI_UOM, SI_DMD, SI_CTL, SI_CST at hand and VALUE scaled in the
previous steps, it may desirable to apply conversion factors so that VALUE represents the measurement
as would be seen at the point of delivery as consumed by the load and billed by the Utility.
IF (ACT_SOURCES_LIM_TBL.SET2_PRESENT_FLAG && SI_CST >= 0 &&
CONSTANTS_TBL.SELECTION[ SI_CST ].
GENERIC_CONSTANTS.SET_FLAGS.SET_APPLIED_FLAG == FALSE ) THEN
RATIO_F1 = CONSTANTS_TBL.SELECTION[ SI_CST ].
GENERIC_CONSTANTS.SET2_CONSTANTS.RATIO_F1
RATIO_P1 = CONSTANTS_TBL.SELECTION[ SI_CST ].
GENERIC_CONSTANTS.SET2_CONSTANTS.RATIO_P1
VALUE = VALUE * RATIO_F1 * RATIO_P1
END

K.5 Assigning Engineering Units


At this point, the VALUE represents the measurement at the point of delivery. The engineering units can
be derived from the Unit of Measure Table (Table 12). This calculation cannot be performed when Table
12 cannot be retrieved from the End Device or from an EDL.
IF (SI_UOM >= 0) THEN
UNITS = cast UOM_ENTRY_TBL. UOM_ENTRY[SI_UOM].ID_CODE with
UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].TIME_BASE and
UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM ].MULTIPLIER to units indicator
END

K.6 Assigning Fundamental Engineering Units


The following operation can be done (as an alternative to the units assigned in K.5 above) to normalize
the VALUE to the fundamental unit of measure. Fundamental units is a set of units for physical quantities
from which every other unit can be generated (e.g., Watt-hour). This calculation cannot be performed
when Table 12 cannot be retrieved from the End Device or from an EDL.

534

Algorithms for the Conversion of Table Element Values to Engineering Units

ANSI C12.19-2008

IF (SI_UOM >= 0) THEN


UNITS = cast UOM_ENTRY_TBL. UOM_ENTRY[SI_UOM ].ID_CODE and
UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM ].TIME_BASE to units indicator
IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 0 THEN
MULTIPLIER = 1
ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 1 THEN
MULTIPLIER = 1.0E+02
ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 2 THEN
MULTIPLIER = 1.0E+03
ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 3 THEN
MULTIPLIER = 1.0E+06
ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 4 THEN
MULTIPLIER = 1.0E+09
ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 5 THEN
MULTIPLIER = 1.0E-02
ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 6 THEN
MULTIPLIER = 1.0E-03
ELSE IF UOM_ENTRY_TBL.UOM_ENTRY[ SI_UOM ].MULTIPLIER == 7 THEN
MULTIPLIER = 1.0E-06
ELSE
MULTIPLIER = 1
END
VALUE = VALUE * MULTIPLIER
END
At this point VALUE is the reading at the point of delivery with all the fundamental engineering unitattributes applied.

K.7 Table Value to Engineering Units Conversion: An Example


Let us assume the application retrieved the following Final Element values from the End Device:
T23_VALUE

Element Name

Value
1419472

T64_VALUE

39

ACT_SOURCES_LIM_TBL.SET1_PRESENT_FLAG
ACT_SOURCES_LIM_TBL.SET2_PRESENT_FLAG
SOURCES_TBL.SOURCES_LINK[SI ].UOM_ENTRY_FLAG
SOURCES_TBL.SOURCES_LINK[SI ].DEMAND_CTRL_FLAG

TRUE
TRUE
TRUE
FALSE

SOURCES_TBL.SOURCES_LINK[SI ].DATA_CTRL_FLAG

FALSE

SOURCES_TBL.SOURCES_LINK[SI ].CONSTANTS_FLAG
SOURCES_TBL.SOURCES_LINK[SI ].PULSE_ENGR_FLAG

TRUE
FALSE

SOURCES_TBL.SOURCES_LINK[SI].CONSTANT_TO_BE_APPLIE
D

TRUE

UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].ID_CODE

Comment
Value retrieved
from Table 23
Value retrieved
from Table 64

Does not affect


calculations
Does not affect
calculations
Does not affect
calculations
The application
need to apply
these constants
Active power
W

535

ANSI C12.19-2008

Algorithms for the Conversion of Table Element Values to Engineering Units

Element Name
UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].TIME_BASE

UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].TIME_BASE

Value
0

1
1

Internal factor

2
20

CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS.
DIVISOR
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS.
SET1_CONSTANTS.RATIO_F1
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS.
SET1_CONSTANTS.RATIO_F1
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS.
SET2_CONSTANTS.RATIO_F1

1000

CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS.
SET2_CONSTANTS.RATIO_F1

60

400

TRUE

LP_CTRL_TBL.DIVISORS_SET1[CH]

25

LP_CTRL_TBL.SCALARS_SET1[CH]

10000

536

Values have
the units stated
in the
ID_CODE x
Hour (Energy
units), i.e., Wh
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 x
Hour (Energy
units), i.e., Wh
1.0E+03
Internal meter
factor.
Offset to adjust
to actual dial
reading at the
time of
installation
when the
register
Element cannot
be preset.
Internal meter
factor.
Internal factor

UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].MULTIPLIER
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS.
MULTIPLIER
CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS.
OFFSET

ACT_LP_TBL.LP_FLAGS.SCALAR_DIVISOR_FLAG_SET1

Comment
Used in
Example 1

Transforming
2000 amps to 5
amps
Transforming
7200 volts to
120 volts
Applicable to
Table 64
Applicable to
Table 64
Applicable to
Table 64

Algorithms for the Conversion of Table Element Values to Engineering Units

ANSI C12.19-2008

Note: The above values are just an example. There is no reason to assume that Elements that are
encoded as NI_FMAT1 (e.g., CONSTANTS_TBL.SELECTION[SI_CST].GENERIC_CONSTANTS
MULTIPLIER, OFFSET, RATIO_F1 and RATIO_P1) cannot have fractional values like 0.25 or 0.0001,
subject to the proper value set for GEN_CONFIG_TBL.FORMAT_CONTROL_3.NI_FORMAT1.
Example 1:
Based on the above values the application can reliably convert the value T23_VALUE retrieved from
Table 23 into fundamental engineering units as follows:
Reading at the point of metering
(1419472 * 20 / 1000 + 0) * (1 * 1) * (1.0E+03 Wh) = 28,389.44 kWh
= 28,389,440 Wh
Reading at the point of delivery
(1419472 * 20 / 1000 + 0) * (1 * 1) * (400 * 60) * (1.0E+03 Wh) = 681,346,560 kWh
= 681,346,560,000 Wh
Given that UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].TIME_BASE = 0, the results represent the total
energy recorded by this register.
Example 2:
Based on the above values the application can reliably convert the value T64_VALUE retrieved from
Table 64 into fundamental engineering units as follows:
Reading at the point of metering
((39 * 25 / 10000) * 20 / 1000 + 0) * (1 * 1) * (1.0E+03 Wh) = 0.00195 kWh
= 1.95 Wh
Reading at the point of delivery
((39 * 25 / 10000) * 20 / 1000 + 0) * (1 * 1) * (400 * 60) * (1.0E+03 Wh) = 46.8 kWh
= 46,800 Wh
Given that UOM_ENTRY_TBL.UOM_ENTRY[SI_UOM].TIME_BASE = 5, the results represent the
incremental energy recorded by this register within one load profile interval period.

537

ANSI C12.19-2008

Registering or Updating DEVICE CLASS OID

ANNEX L: Registering or Updating DEVICE CLASS OID


(Informative)
Section 7.1(b) on compliance states that the DEVICE_CLASS Element in GEN_CONFIG_TBL (Table 00)
contains a relative universal object identifier relative to the End Device class registered root context,
which makes it globally unique. Also Annex J, Universal Identifiers explains that to ensure this, users of
the Standard may register a Device Class Universal Identifier. This identifier shall be common to all End
Devices that share the same End Device operating model, data structures and operational constants (i.e.,
C12.19 TDL and C12.19 EDL). This identifier may be used by upstream devices to interpret incoming
data structures and operational assumptions made by the manufacturer of the End Device. Also it is
important to note that relative Device Classes that begin with zero (0), under the <device-class-root-oid>
are reserved for use by the ANSI C12.19 Standard. i.e., The various versions of the ANSI C12.19
Standard are pre-registered with relative Device Classes that have the form 0.version.revision.0 for each
version/revision of the Standard. The version and revision are the values of the Elements
GEN_CONFIG_TBL.STD_VERSION_NO and GEN_CONFIG_TBL.STD_REVISION_NO respectively.
For example DEVICE_CLASS 0.2.0.0 refers to ANSI C12.19-2008, and DEVICE_CLASS 0.1.0.0 refers
to ANSI C12.19-1997.
A number of pertinent operational questions need answers.
1. In the context of issuing a Device Class, what do we mean by End Devices that share the same
End Device operating model, data structures, and operational constants?
2. Can (or how can) an End Device be deployed without registering its Device Class?
3. What are the criteria for re-registering (assigning a new Device Class) to an already registered
End Device following a change to its firmware and/or operating modes?
4. When can one just issue an update to the registration files of an End Device without requiring it to
be re-registered with a new Device Class?
The following sub-sections look at each of the above questions and scenarios and provide guidance and
examples so that users of the Standard (including meter manufacturers, meter vendors, utilities and
service providers) have a consistent operational understanding and expectation for the registration
process.
L.8 Binding a Device Class to End Device Operating Model
End Device instantiated entity manifests itself on an AMI system as a combination of the knowledge of
this Standard, available information that may be retrieved from the End Device, and information that may
be retrieved off-line from an information system (e.g., MDMS). The aggregation of this knowledge is
commonly referred to as an End Device Instance. The off-line content that is common to all End Devices
that share the same Device Class is commonly referred to as the End Device Data Model. The Data
Models are expressed as a collation of TDL and EDL files that are registered and therefore can be
uniquely associated with a single Device Class. i.e., The Data Model aims to document any End Device
instance information that is either unavailable directly from the End Device or it is a constant and non
changing property of the End Device.

538

Registering or Updating DEVICE CLASS OID

ANSI C12.19-2008

End Device Instance

A Registered End Device Data Model


End Device exposing
Tables, Procedures,
Elements and
behaviors

TDL Table Syntax,


Attributes and
Behaviors

EDL External Table


and Default Sets
Attributes and Values

Figure L.1A Registered End Device Instance


A change in the End Device registered Data Model may necessitate a change of the End Device Class
designation. The governing criteria for re-registration is that the change may cause a reader, that uses
the previously registered Device Class, to misinterpret the revised End Devices Table-elements,
Structures or behaviors. i.e., The revised Data Model represents a new End Device model that needs to
be registered with a new Device Class. These statements loosely address the first question regarding the
meaning of End Devices sharing the same operating model, data structures and operational constants.
Figure L.2 should be used to make a determination of the need to re-register an End Device that has
undergone changes to its Data Model.

539

ANSI C12.19-2008

Registering or Updating DEVICE CLASS OID

START
1

Changed registered
TDL + EDL Standard
types or Tables, or
Manufacturer types or
Tables, or End Device
Behavior ?

Changed or re-qualified
existing Tables or Elements
or data types or operating Yes
instructions or
constants that
are already
known based
on the
registered
Device Class.

2.1

Did not change anything in


the End Device hardware,
firmware, software, features,
options and operating
characteristics.
2.2

No

Yes

Changed existing
documented Tables or
Elements or values or
known behavior ?
No

Created new Tables or new data types or


appended new Elements at the end of existing
Tables or added documentation where none
existed before or provided values for external
entities or exposed Manufacturer content that
was previously obscure.

3.1

Yes

Reuse Device
Class

Did the change create


conflicting behavior or
created conflict with
existing syntax or
assumed values of the
End Device ?

No

3.2

The changes are backward and


forward compatible with any
reader that uses the
previously registered Device
Class, therefore it will
not misinterpret the
revised End Device
Table-elements,
Structures and
behaviors.
Reuse existing
Device Class with
Updated version
b

Register a new
Device Class

END

Figure L.2Device Class re-registration Decision Making Process Flow


Whenever the End Device Data Model of a registered Device Class changes it is necessary to determine
whether to re-register the revised End Device. The flowchart shown in Figure L.2 should be used to make
this determination. When the concluding step is (3.2) then the End Device needs to be registered as
new and obtain a new Device Class. When the concluding step is (4) then the End Device may reuse
its existing Device Class, but it must update the registered TDLs and EDLs and issue a new version
number which will be placed in the version attribute of the <tdl> root element of the registered TDL and in

540

Registering or Updating DEVICE CLASS OID

ANSI C12.19-2008

the <edl> root element of the registered EDL. When the concluding step is (2.2) then no further action is
necessary.

L.1 End Devices Referencing the Standards Device Class


It was mentioned previously that relative Device Classes that begin with zero (0) under the <device-classroot-oid> are reserved for use by the ANSI C12.19 Standard. For instance Device Class 0.2.0.0 refers to
version 2 and revision 0 of this Standard.
When an End Device is a compliant instance of a version/revision of this Standard then it is permissible to
use the Standards registered Device Class without the necessity for the Manufacturer to register a TDL
or an EDL. When using the Standards registered Device Classes, it is not permissible for the End Device
Data Model to deviate from the Table structures, Default-sets Used, Element offsets, Element indices,
data types, FLC/FLC+1 behavior of Decades and all other normative behaviors prescribed in the
referenced Standard.
Under this scenario any AMI application or End Device reader implementing the referenced Standard
should be able to interpret the data-sets and behaviors of the End Device strictly by consulting the
retrieved DEVICE_CLASS Element from GEN_CONFIG_TBL (Table 00), the referenced Standard TDL
and EDL files, and Element values retrieved from the End Device. However, because the End Device is
implicitly registered it is not possible to ascertain more information about the device type or identify its
manufacturer strictly from the DEVICE_CLASS Element.

L.2 Practical Examples and Use-cases


In this section, we present a collection of example of possible revisions to registered End Device Data
Models. The nature of the revisions are explained then the algorithm shown in Figure L.2 is applied. Each
step executed in this algorithm is explained leading to one of two conclusions. Conclusion (3.2), where
the End Device needs to be registered or conclusion (4) where the End Device may reuse its existing
Device Class with updated version/revision. Outcome (2.2) is not considered here because all of the
examples begin with the presumption that the End Device has undergone some change.

L.2.1 Examples: Initial Registration Conditionan Empty TDL


In this example, we assume that the manufacturer registers an empty TDL in order to enable the industry
discover the device type and manufacturer identification strictly from the DEVICE_CLASS Element. The
registrar issues Device Class 10.20.30.40 for the submitted TDL as follows:
<?xml version="1.0" encoding="UTF-8"?>
<tdl
xmlns=http://www.ansi.org/2008/C1219TDLSchema
version=1.0
deviceClass=10.20.30.40
standard=http://www.ansi.org/C1219TDL-2008.xml
title=Model-X Meter
date=2008-05-31
validation=76d068994788854836fd3a25dff27c18>
</tdl>
L.2.1.1 Case 1: Exposing Manufacturers Content
Case 1: Use-case scenario
In this example, the Manufacturer of the End Device chooses to provide an elaboration on controlling the
display format of data values that may be displayed. The Standard provides a binary place holder for that

541

ANSI C12.19-2008

Registering or Updating DEVICE CLASS OID

purpose in DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD.DISPLAY_SOURCE. The elaboration is


expressed as a replacement of DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD in a manner that
preserves the Element names, sizes offsets and indices of DISPLAY_SOURCE , but exposes the internal
structure of the BINARY opaque content.
Case 1: Device Class re-registration Decision Making Process Flow
Step #
1

2.1

3.1

Test performed and outcome


The TDL was changed in a manner that performs an
in-place global replacement of the a Standards
data type (packed record) and the introduction of a
manufacturer-defined bit field.
Did not change existing documented behavior. It
elaborated on behavior of manufacturer-defined
binary opaque Element
DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD
.
Did not create a conflict since the behavior was
never 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.
Reuse existing Device Class 10.20.30.40 and
increase modify version number (e.g., to 1.1)

Consequence
Proceed to step 2.1

Proceed to step 3.1

Proceed to step 4

Update version number

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=2cb6373aaccfba50c7b51483f91a320a>
See detailed elaboration of the full content to be
placed here in the next section.
</tdl>

The logic flow above lets the Manufacturer retain the originally registered Device Class and simply update
its version number.

542

Registering or Updating DEVICE CLASS OID

ANSI C12.19-2008

Case 1: Exposing Manufacturers Content Ellaboration


The following is the Standards description of DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD for
registered Device Class 10.20.30.40 version 1.0.

TYPE DISP_SOURCE_DESC_RCD = PACKED RECORD


DISPLAY_SOURCE
: BINARY(ACT_DISP_TBL.WIDTH_DISP_SOURCES);
END;

Identifier
DISP_SOURCE_DESC_RCD
DISPLAY_SOURCE

Value

Definition
Manufacturer-defined display description entry.
Contains the manufacturer-defined
description entries.

display

The above document form representation translates to the equivalent TDL referenced by the standard
attribute (http://www.ansi.org/C1219TDL-2008.xml) of the registered Device Class as follows:
<packedRecord name="DISP_SOURCE_DESC_RCD">
<description>Manufacturer-defined display description entry.</description>
<element name="DISPLAY_SOURCE" type="BINARY"
length="ACT_DISP_TBL.WIDTH_DISP_SOURCES">
<description>
Contains the manufacturer-defined display description entries.
</description>
</element>
</packedRecord>
The manufacturer elaborates on DISP_SOURCE_DESC_RCD.DISPLAY_SOURCE as follows:

TYPE FORMATTING_HINTS_BFLD = BIT FIELD OF UINT16


LEADING_DIGITS
: UINT(0..3);
SUPP_LEADING_ZEROS
: BOOL(4);
TRAILING_DIGITS
: UINT(5..8);
SCALE
: INT(9..13);
FILLER
: FILL(14..15);
END;
TYPE MODEL_X_DISP_SOURCE_DESC_RCD = PACKED RECORD
DISPLAY_SOURCE
: FORMATTING_HINTS_BFLD
ASSERT (ACT_DISP_TBL.WIDTH_DISP_SOURCES != 2) WARN
The value of ACT_DISP_TBL.WIDTH_DISP_SOURCES must be set to 2;
;
{ The semicolon closes DISPLAY_SOURCE phrase. }
END;

543

ANSI C12.19-2008

Registering or Updating DEVICE CLASS OID

Identifier

Value

FORMATTING_HINTS_BFLD
LEADING_DIGITS

0..15

SUPP_LEADING_ZEROS

Definition
This Element defines the number of digit before
the decimal point used.
This Element indicates whether leading zeros
should be suppressed.

FALSE Do not suppress leading zeros.


TRUE Suppress leading zeros.
TRAILING_DIGITS

0..15

SCALE

-16..15 This Element defines the scale factor to be


applied computed as 10SCALE.

MODEL_X_DISP_SOURCE_DESC_RCD

DISPLAY_SOURCE

This Element defines the number of digits after


the decimal point.

Manufacturer-defined display description entry.


Replaces:
DISP_SOURCE_TBL.DISP_SOURCE_DESC_
RCD.
Contains the manufacturer-defined
description entries.

display

Assert:
WARN
on
(ACT_DISP_TBL
.
WIDTH_DISP_SOURCES != 2) due to The
value
of
ACT_DISP_TBL
.
WIDTH_DISP_SOURCES must be set to 2".
The above manufacturer Document Form elaboration translates to TDL as shown below:
<bitField name="FORMATTING_HINTS_BFLD" type="UINT16">
<subElement name="LEADING_DIGITS" type="UINT"
startBitInclusive="0" endBitInclusive="3">
<description>
This Element defines the number of digit before the decimal point used.
</description>
</subElement>
<subElement name="SUPP_LEADING_ZEROS" type="BOOL" startBitInclusive="4">
<description>
This Element indicates whether leading zeros should be suppressed.
</description>
<enumerator>
<enum value="false" text="Do not suppress leading zeros."/>
<enum value="true" text="Suppress leading zeros."/>
</enumerator>
</subElement>
<subElement name="TRAILING_DIGITS" type="UINT"
startBitInclusive="5" endBitInclusive="8">
<description>
This Element defines the number of digits after the decimal point.
</description>

544

Registering or Updating DEVICE CLASS OID

ANSI C12.19-2008

</subElement>
<subElement name="SCALE" type="INT" startBitInclusive="9" endBitInclusive="13">
<description>
This Element defines the scale factor to be applied computed as
10<sup><b>SCALE</b></sup>.
</description>
</subElement>
<subElement name="FILLER" type="FILL" startBitInclusive="14" endBitInclusive="15"/>
</bitField>
<packedRecord name="MODEL_X_DISP_SOURCE_DESC_RCD"
replace="DISP_SOURCE_TBL.DISP_SOURCE_DESC_RCD">
<description>Manufacturer-defined display description entry.</description>
<element name="DISPLAY_SOURCE" type="FORMATTING_HINTS_BFLD">
<description>Contains the manufacturer-defined display description entries.
</description>
<assert
text="The value of ACT_DISP_TBL.WIDTH_DISP_SOURCES must be set to
2."
raise="WARN">
<condition>ACT_DISP_TBL.WIDTH_DISP_SOURCES != 2</condition>
</assert>
</element>
</packedRecord>
L.2.1.2 Case 2: Changing End Device Behavior
Case 2: Use-case scenario
In this example the Manufacturer of the End Device chooses to provide an elaboration of the behavioral
fact that DIM_REGS_TBL (Table 20) cannot be not retrievable from the End Device and that
ACT_REGS_TBL (Table 21) can only be retrieved using full table read mechanism (i.e., partial read index
or partial read offsets are not supported by this device) finally it may be useful to the AMI application to
know that ACT_REGS_TBL (Table 21) cannot be changed.
Case 2: Device Class re-registration Decision Making Process Flow
Step #
1
2.1
3.2

Test performed and outcome


The TDL was changed in a manner that re-qualifies
the attributes of Tables 20 and 21 therefore there is
a change in End Device behavior.
Changed Standard Tables 20 and 21 documented
behavior.
Register a new Device Class

Consequence
Proceed to step 2.1
Proceed to step 3.2
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

545

ANSI C12.19-2008

Step #

Registering or Updating DEVICE CLASS OID

Test performed and outcome

Consequence

validation=006c011fd533c4f604a8d0ed5c86bc16>
See detailed elaboration of the full content to be
placed here in the next section.
</tdl>

The flow logic above requires the manufacturer to obtain a new Device Class since the behavior of the
End Device changed sufficiently to cause a read error on Table 21, when invoking a partial table read.
Case 2: Changing End Device Behavior Ellaboration
The following is the Standards description of DIM_REGS_TBL (Table 20) and ACT_REGS_TBL (Table
21) for registered Device Class 10.20.30.40 version 1.0.

Table 20 Data Description


DIM_REGS_TBL (Table 20) specifies the maximum dimensional values for measured values Registers.
The constants defined are used for setting the absolute maximum limits of Arrays used in the transport of
these values.
Global Default Table Property Overrides: Role=LIMITING, Accessibility=READONLY

Table 21 Data Description


ACT_REGS_TBL (Table 21) contains actual limiting values for Registers.
Global Default Table Property Overrides: Role=ACTUAL

The above document form representation translates to the equivalent TDL referenced by the standard
attribute (http://www.ansi.org/C1219TDL-2008.xml) of the registered Device Class as follows:
<table number="20" name="DIM_REGS_TBL"
type="REGS_RCD" label="Register Dimension Limits Table" role="LIMITING"
accessibility="READONLY">
<description>
<b>DIM_REGS_TBL</b> (Table 20) specifies the maximum dimensional values for
Measured values Registers. The constants defined are used for setting the absolute
maximum limits of Arrays used in the transport of these values.
</description>

</table>

546

Registering or Updating DEVICE CLASS OID

ANSI C12.19-2008

<table number="21" name="ACT_REGS_TBL"


type="REGS_RCD" label="Actual Register Limiting Table" role="ACTUAL">
<description>
<b>ACT_REGS_TBL</b> (Table 21) contains actual limiting values for Registers.
</description>

</table>
The manufacturer may elaborate on DIM_REGS_TBL and ACT_REGS_TBL as follows:

Standard Tables re-qualified by this TDL


DIM_REGS_TBL (Table 20)
Global Default Table Property Overrides: Role=LIMITING, Accessibility="UNIMPLEMENTED".
ACT_REGS_TBL (Table 21)
Global Default Table Property Overrides: Role=ACTUAL, Accessibility="READONLY" Atomic="true".

The above manufacturer elaboration can be translated to a TDL segment as follows:


<qualify>
<table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
<table name="ACT_REGS_TBL" accessibility="READONLY" atomic="true"/>
</qualify>
The above elaboration preserves all of the Standards attributes except for the accessibility (for Table 20,
21) and atomic (for Table 21).

L.2.2 Examples: Initial Registration ConditionsNon-empty TDL


Manufacturer registers a TDL with some content in order to enable the industry ascertain information
about the type and manufacturer of this End Device strictly from its DEVICE_CLASS Element and obtain
behavioral information about the End Device. The registrar issues the following Device Class 10.20.30.42
for the bound TDL as follows:
<?xml version="1.0" encoding="UTF-8"?>
<tdl
xmlns=http://www.ansi.org/2008/C1219TDLSchema
version=1.0
deviceClass=10.20.30.42
standard=http://www.ansi.org/C1219TDL-2008.xml
title=Model-Z Meter
date=2008-08-21
validation=76d068994788854836fd3a25dff27c18>

547

ANSI C12.19-2008

Registering or Updating DEVICE CLASS OID

<table name="METER_Z_AAA_TBL" number="322"


type="METER_Z_AAA_RCD" accessibility="READONLY"
label="Meter-Z AAA Record">
<packedRecord name="METER_Z_AAA_RCD">
<element name="FIELD_1" type="UINT8">
<description>An 8-bit field 1.</description>
</element>
<element name="FIELD_2" type="UINT8">
<description>An 8-bit field 2.</description>
</element>
</packedRecord>
</table>
<qualify>
<table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
<table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
</qualify>
</tdl>
The above registration states that Table 20 is not available from the End Device and in fact it cannot be
made available. Table 21 is also unavailable for retrieval from the End Device, however its Element
values can be obtained externally from the registered EDL. Therefore, it is expected that the
Manufacturer also submits an EDL file as a companion to this TDL. Also the TDL includes a definition of
METER_Z_AAA_TBL (Manufacturer Table 322). The following is an example of what this EDL may look
like:
<?xml version="1.0" encoding="UTF-8"?>
<edl xmlns="http://www.ansi.org/2008/CNST-10.20.30.42-EDLSchema"
version=1.0 deviceClass=10.20.30.42
standard=http://www.ansi.org/C1219TDL-2008.xml>
<data>
<ACT_REGS_TBL>
<REG_FUNC1_FLAGS>
<SEASON_INFO_FIELD_FLAG>true</SEASON_INFO_FIELD_FLAG>
<DATE_TIME_FIELD_FLAG>true</DATE_TIME_FIELD_FLAG>
<DEMAND_RESET_CTR_FLAG>true</DEMAND_RESET_CTR_FLAG>
<DEMAND_RESET_LOCK_FLAG>true</DEMAND_RESET_LOCK_FLAG>
<CUM_DEMAND_FLAG>false</CUM_DEMAND_FLAG>
<CONT_CUM_DEMAND_FLAG>false</CONT_CUM_DEMAND_FLAG>
<TIME_REMAINING_FLAG>true</TIME_REMAINING_FLAG>
</REG_FUNC1_FLAGS>
<REG_FUNC2_FLAGS>
<SELF_READ_INHIBIT_OVERFLOW_FLAG>
false</SELF_READ_INHIBIT_OVERFLOW_FLAG>
<SELF_READ_SEQ_NBR_FLAG>true</SELF_READ_SEQ_NBR_FLAG>
<DAILY_SELF_READ_FLAG>true</DAILY_SELF_READ_FLAG>
<WEEKLY_SELF_READ_FLAG>false</WEEKLY_SELF_READ_FLAG>
<SELF_READ_DEMAND_RESET>3</SELF_READ_DEMAND_RESET>
</REG_FUNC2_FLAGS>
<NBR_SELF_READS>64</NBR_SELF_READS>
<NBR_SUMMATIONS>3</NBR_SUMMATIONS>
<NBR_DEMANDS>3</NBR_DEMANDS>
<NBR_COIN_VALUES>3</NBR_COIN_VALUES>
<NBR_OCCUR>3</NBR_OCCUR>
<NBR_TIERS>24</NBR_TIERS>

548

Registering or Updating DEVICE CLASS OID

ANSI C12.19-2008

<NBR_PRESENT_DEMANDS>3</NBR_PRESENT_DEMANDS>
<NBR_PRESENT_VALUES>3</NBR_PRESENT_VALUES>
</ACT_REGS_TBL>
</data>
</edl>
L.2.2.1 Case 1: Appending a New Element to an Existing Table
Case 1: Use-case scenario
In this example the Manufacturer of the End Device determined that there is a need to extend
METER_Z_AAA_TBL.METER_Z_AAA_RCD by adding a new Element FIELD_3 of type UINT16. All
other information remains identical. The implication is that the manufacturer changed
METER_Z_AAA_TBL.METER_Z_AAA_RCD member of the TDL as shown in the elaboration section
that follows the process flow.
Case 1: Device Class re-registration Decision Making Process Flow
Step #
1
2.1
3.1
4

Test performed and outcome


The TDL was changed in a manner that a new
element was added to an existing Table
The change is to an existing table, but it does not
impact on previously registered behavior.
The change did not create a conflict since it was
added to the end of the Table
Reuse existing Device Class 10.20.30.42 and
increase modify version number (e.g., to 1.1)

Consequence
Proceed to step 2.1
Proceed to step 3.1
Proceed to step 4
Update version number

The flow logic above requires the manufacturer to update the version of the Device Class registered since
it exposed new Elements that otherwise were not known.
Case 1: Appending a New Element to an Existing Table Ellaboration
<?xml version="1.0" encoding="UTF-8"?>
<tdl
xmlns=http://www.ansi.org/2008/C1219TDLSchema
version=1.1
deviceClass=10.20.30.42
standard=http://www.ansi.org/C1219TDL-2008.xml
title=Model-Z Meter
date=2008-09-12
validation=db2276b472ff59696afaaf548d3310ee>
<table name="METER_Z_AAA_TBL" number="322"
type="METER_Z_AAA_RCD" accessibility="READONLY"
label="Meter-Z AAA Record">
<packedRecord name="METER_Z_AAA_RCD">
<element name="FIELD_1" type="UINT8">
<description>An 8-bit field 1.</description>
</element>
<element name="FIELD_2" type="UINT8">
<description>An 8-bit field 2.</description>
</element>
<element name="FIELD_3" type="UINT16">
<description>A 16-bit field 3.</description>
</element>

549

ANSI C12.19-2008

Registering or Updating DEVICE CLASS OID

</packedRecord>
</table>
<qualify>
<table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
<table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
</qualify>
</tdl>
L.2.2.2 Case 2: Inserting a New Element to an Existing Table
Case 2: Use-case scenario
In this example the Manufacturer of the End Device determined that there is a need to extend
METER_Z_AAA_TBL.METER_Z_AAA_RCD by adding a new Element FIELD_3 of type UINT8. All
other information remains identical. The implication is that the manufacturer changed
METER_Z_AAA_TBL.METER_Z_AAA_RCD member of the TDL as shown in the elaboration section
that follows the process flow.
Case 2: Device Class re-registration Decision Making Process Flow
Step #
1
2.1
3.1

3.2

Test performed and outcome


The TDL was changed in a manner that a new
element was added to an existing Table
The change is to an existing table, but it does not
impact on previously registered behavior.
The change creates a conflict since it was added in
the middle of 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.
Register a new Device Class

Consequence
Proceed to step 2.1
Proceed to step 3.1
Proceed to step 3.2

Done

The flow logic above requires the manufacturer to obtain a new Device Class since the behavior of the
End Device changed sufficiently to cause a misinterpretation of FIELD_2 of Table 322.
Case 2: Inserting a new Element to an Existing Table Ellaboration
The following is the resulting TDL produced for the new Device Class.
<?xml version="1.0" encoding="UTF-8"?>
<tdl
xmlns=http://www.ansi.org/2008/C1219TDLSchema
version=1.0
deviceClass=10.20.30.43
standard=http://www.ansi.org/C1219TDL-2008.xml
title=Model-Z Meter
date=2008-08-11
validation=c7cb885ff64c0b4dee584c000d13d88c>
<table name="METER_Z_AAA_TBL" number="322"
type="METER_Z_AAA_RCD" accessibility="READONLY"
label="Meter-Z AAA Record">
<packedRecord name="METER_Z_AAA_RCD">
<element name="FIELD_1" type="UINT8">
<description>An 8-bit field 1.</description>
</element>
<element name="FIELD_3" type="UINT8">

550

Registering or Updating DEVICE CLASS OID

ANSI C12.19-2008

<description>An 8-bit field 3.</description>


</element>
<element name="FIELD_2" type="UINT8">
<description>An 8-bit field 2.</description>
</element>
</packedRecord>
</table>
<qualify>
<table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
<table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
</qualify>
</tdl>
L.2.2.3 Case 3: Modifying an Element of an Existing Table
Case 3: Use-case scenario
In this example the Manufacturer of the End Device determined that there is a need to modify
METER_Z_AAA_TBL.METER_Z_AAA_RCD by changing a the Element FIELD_1 to be of type UINT16.
All other information remains identical. The implication is that the manufacturer changed a
METER_Z_AAA_TBL.METER_Z_AAA_RCD member of the TDL as shown in the elaboration section
that follows.
Case 3: Device Class re-registration Decision Making Process Flow
Step #
1
2.1
3.1

3.2

Test performed and outcome


The TDL was changed in a manner that a new
element was modified in an existing Table
The change is to an existing table, but somehow it is
perceived that this change does not impact on
previously registered behavior.
The change created a conflict since the data type
was changed from UINT8 to UINT16 thus will lead to
errors in access and interpretation of FIELD_1 (size
and data order) and FIELD_2 (offset)
Register a new Device Class (See elaboration in the
next subsection)

Consequence
Proceed to step 2.1
Proceed to step 3.1
Proceed to step 3.2

Done

The flow logic above requires the manufacturer to obtain a new Device Class since the behavior of the
End Device changed sufficiently to cause a data interpretation error for FIELD_1 (size and data order)
and FIELD_2. Also note that process (3.1) acts to trap that catches conflicts.
Case 3: Modifying an Element of an Existing Table Ellaboration
As per discussion above, a new Device Class is registered.
<?xml version="1.0" encoding="UTF-8"?>
<tdl
xmlns=http://www.ansi.org/2008/C1219TDLSchema
version=1.0
deviceClass=10.20.30.44
standard=http://www.ansi.org/C1219TDL-2008.xml
title=Model-Z Meter
date=2008-09-12
validation= c9e975258a87451a0a05628ff6d6d4ce>
<table name="METER_Z_AAA_TBL" number="322"

551

ANSI C12.19-2008

Registering or Updating DEVICE CLASS OID

type="METER_Z_AAA_RCD" accessibility="READONLY"
label="Meter-Z AAA Record">
<packedRecord name="METER_Z_AAA_RCD">
<element name="FIELD_1" type="UINT16">
<description>An 16-bit field 1.</description>
</element>
<element name="FIELD_2" type="UINT8">
<description>An 8-bit field 2.</description>
</element>
</packedRecord>
</table>
<qualify>
<table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
<table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
</qualify>
</tdl>

L.2.2.4 Case 4: Modifying a Constant Element in a Table


Case 4: Use-case scenario
In this example the Manufacturer of the End Device decided to release a new End Device that has fewer
self-reads (down to 12 from 64) and time-of-use tiers (down to 4 from 24). Otherwise the End Device is
identical to the previously register Device Class 10.20.30.42. The implication is that the manufacturer
changed an externally available constant leading to the following process flow.
Case 4: Device Class re-registration Decision Making Process Flow
Step #
1
2.1
3.2

Test performed and outcome


The EDL was changed in a manner that the value of
an Element constant was changed The TDL did not
change.
There was a change to documented Elements
constant values.
Register a new Device Class

Consequence
Proceed to step 2.1
Proceed to step 3.2
Done

The flow logic above requires the Manufacturer to obtain a new Device Class that uses the same TDL
body, but with a new EDL that captures the change in the Element values.
Case 4: Modifying a Constant Element in a Table Ellaboration
As per discussion above, a new Device Class is registered. The body (content) of the re-registered TDL
is identical to the TDL registered previously as Device Class 10.20.30.42. The re-registration serves to
produce a unique reference to the EDL file (see below).
<?xml version="1.0" encoding="UTF-8"?>
<tdl
xmlns=http://www.ansi.org/2008/C1219TDLSchema
version=1.0
deviceClass=10.20.30.45
standard=http://www.ansi.org/C1219TDL-2008.xml
title=Model-Z Meter
date=2008-08-21
validation=fd1a269508282ce303b2d2eaca1ebda6>
<table name="METER_Z_AAA_TBL" number="322"

552

Registering or Updating DEVICE CLASS OID

ANSI C12.19-2008

type="METER_Z_AAA_RCD" accessibility="READONLY"
label="Meter-Z AAA Record">
<packedRecord name="METER_Z_AAA_RCD">
<element name="FIELD_1" type="UINT8">
<description>An 8-bit field 1.</description>
</element>
<element name="FIELD_2" type="UINT8">
<description>An 8-bit field 2.</description>
</element>
</packedRecord>
</table>
<qualify>
<table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
<table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
</qualify>
</tdl>
The above TDL is identical to the TDL of Device Class 10.20.30.42. The actual change occur only in the
EDL below.
<?xml version="1.0" encoding="UTF-8"?>
<edl xmlns="http://www.ansi.org/2008/CNST-10.20.30.45-EDLSchema"
version=1.0 deviceClass=10.20.30.45
standard=http://www.ansi.org/C1219TDL-2008.xml>
<data>
<ACT_REGS_TBL>
<REG_FUNC1_FLAGS>
<SEASON_INFO_FIELD_FLAG>true</SEASON_INFO_FIELD_FLAG>
<DATE_TIME_FIELD_FLAG>true</DATE_TIME_FIELD_FLAG>
<DEMAND_RESET_CTR_FLAG>true</DEMAND_RESET_CTR_FLAG>
<DEMAND_RESET_LOCK_FLAG>true</DEMAND_RESET_LOCK_FLAG>
<CUM_DEMAND_FLAG>false</CUM_DEMAND_FLAG>
<CONT_CUM_DEMAND_FLAG>false</CONT_CUM_DEMAND_FLAG>
<TIME_REMAINING_FLAG>true</TIME_REMAINING_FLAG>
</REG_FUNC1_FLAGS>
<REG_FUNC2_FLAGS>
<SELF_READ_INHIBIT_OVERFLOW_FLAG>
false</SELF_READ_INHIBIT_OVERFLOW_FLAG>
<SELF_READ_SEQ_NBR_FLAG>true</SELF_READ_SEQ_NBR_FLAG>
<DAILY_SELF_READ_FLAG>true</DAILY_SELF_READ_FLAG>
<WEEKLY_SELF_READ_FLAG>false</WEEKLY_SELF_READ_FLAG>
<SELF_READ_DEMAND_RESET>3</SELF_READ_DEMAND_RESET>
</REG_FUNC2_FLAGS>

<NBR_SELF_READS>12</NBR_SELF_READS>
<NBR_SUMMATIONS>3</NBR_SUMMATIONS>
<NBR_DEMANDS>3</NBR_DEMANDS>
<NBR_COIN_VALUES>3</NBR_COIN_VALUES>
<NBR_OCCUR>3 </NBR_OCCUR>

<NBR_TIERS>4</NBR_TIERS>
<NBR_PRESENT_DEMANDS>3</NBR_PRESENT_DEMANDS>
<NBR_PRESENT_VALUES>3</NBR_PRESENT_VALUES>
</ACT_REGS_TBL>
</data>
</edl>

553

ANSI C12.19-2008

Registering or Updating DEVICE CLASS OID

L.2.2.5 Case 5: Adding a New Table to an End Device


Case 5: Use-case scenario
In this example, the Manufacturer of the End Device decided to introduce a new Table in an End Device
that was previously registered with Device Class 10.20.30.42. All other attributes and behaviors of the
registered Device Class remained the same.
Case 5: Device Class re-registration Decision Making Process Flow
Step #
1
2.1
3.1
4

Test performed and outcome


The TDL was changed.
There was a change to an undocumented Table or a
Table that did not previously exist.
This new Table does not cause a conflict with any
previous instance of the registered Device Class
Reuse existing Device Class 10.20.30.42 and modify
the version number (e.g., to 1.1)

Consequence
Proceed to step 2.1
Proceed to step 3.1
Proceed to step 4
Update version number

The flow logic above lets the Manufacturer retain the originally registered Device Class and simply update
its version number.
Case 5: Adding a new Table to an End Device Ellaboration
As per discussion above, an existing Device Class is re-used, but the version of the TDL is updated.
<?xml version="1.0" encoding="UTF-8"?>
<tdl
xmlns=http://www.ansi.org/2008/C1219TDLSchema
version=1.1
deviceClass=10.20.30.42
standard=http://www.ansi.org/C1219TDL-2008.xml
title=Model-Z Meter
date=2008-12-13
validation= b22e4cb3cd9ff1fc419e11627c4e0575>
<table name="METER_Z_AAA_TBL" number="322"
type="METER_Z_AAA_RCD" accessibility="READONLY"
label="Meter-Z AAA Record">
<packedRecord name="METER_Z_AAA_RCD">
<element name="FIELD_1" type="UINT8">
<description>An 8-bit field 1.</description>
</element>
<element name="FIELD_2" type="UINT8">
<description>An 8-bit field 2.</description>
</element>
</packedRecord>
</table>
<table name="METER_Z_BBB_TBL" number="323"
type="METER_Z_BBB_RCD" accessibility="READONLY"
label="Meter-Z BBB Record">
<packedRecord name="METER_Z_BBB_RCD">
<element name="FIELD_1" type="STRING" length=10>
<description>A 10 character field 1.</description>
</element>

554

Registering or Updating DEVICE CLASS OID

ANSI C12.19-2008

<element name="FIELD_2" type="STRING" length=10>


<description>A 10 character field 2.</description>
</element>
</packedRecord>
</table>
<qualify>
<table name="DIM_REGS_TBL" accessibility="UNIMPLEMENTED"/>
<table name="ACT_REGS_TBL" accessibility="EXTERNAL" atomic="true"/>
</qualify>
</tdl>

555

ANSI C12.19-2008

Historical Background

ANNEX M: Historical Background


(informative)

M.1 Foreword of American National Standard C12.19-1997

Foreword

(This foreword is not part of American National Standard for Protocol Specification for ANSI C12.19-1997.)

The ANSI C12.19 standard provides a common data structure for use in transferring data to and from
utility end devices, typically meters. It has been approved after considerable cooperative effort among
utilities, electric meter manufacturers, Industry Canada, AMRA and other interested parties.
The standard data structure is defined as sets of tables. Table sets are grouped together into segments
called decades. Each decade pertains to a particular feature set and data type such as Time of Use,
Load Profile, etc. Data is transferred by reading from or writing to a particular table or portion of a table. It
is anticipated that the set of standard tables will grow to meet the need for common implementations of
expanded functionality.
The Secretariat of the Accredited Standards Committee on Electricity Metering, C12, is held by the National
Electrical Manufacturers Association (NEMA) and the National Institute of Standards and Technology. At the
time this standard was processed and approved, the C12 Committee had the following members:
Nile Oldham, Chairman
Vince Baclawski, Secretary
Organization Represented

Name of Representative

Underwriters Laboratory

Ron Breschini

Idaho Power Company

Richard Canderan

ABB Power T&D Company, Inc.

Tom C. Drew
Ted York

GE

Warren Germer

City of Los Angeles

Cruz R. Gomez

State of New York

Edmund J. Hofmann

Memphis Light

H. Carey Jones

Rural Utilities Service

George Keel

B-Line Systems, Inc.

Francis A. Marta

Clemson University

D. McAuliff

Florida Power & Light Co.

John McEvoy

Edison Electric Institute

Gary N. Miller

City of Austin Metering Operations

Herman M. Millican

T. U. Electric

James Mining

556

Historical Background

ANSI C12.19-2008

National Institute of Standards & Technology

Nile Oldham

Pacificorp

Lauren Pananen
Clark J. Smith

Florida Public Service Commission

James Ruehl

Arizona Public Service Company

Paul Taylor

Pacific Gas & Electric

Tim Vahstrom

The following members of the C12.17 Data Communications Protocols Committee were actively involved
in the revision of this standard:
Wesley Ray, Chairman
Organization Represented

Name of Representative

Indianapolis Power & Light Company

Robert D. Adams

Landis & Gyr

Michael Anderson

Public Utillities Commission

Vlado Bevc

APTECH, Inc.

William C. Beverly, Jr.

ITRON

William J. Buckley

American Innovations, Ltd.

Randall Chance
Rick Darby

Entergy Services, Inc.

Lynnda K. Ell

Lucent Technologies

Stuart M. Garland

Centerior Energy Corporation

Kenneth E. Hauzer

T U Electric

Brad Johnson
James Mining (Alt.)

LILCO

Sunil Katwala

MidAmerican Energy Company

Jerry Klipkenberg

Commonwealth Edison

Larry Kotewa

Echelon

Chris Stanfield
Pradip Madan (Alt.)

Southern California Edison Company

Kit Maughan
Mario A. Natividad

Georgia Power Company

Kevin McDonald
Terry Penn

557

ANSI C12.19-2008

Historical Background

Radix Corporation

Laurel Miller

City of Austin Metering Operations

Herman M. Millican

Future DOS R&D, Inc.

Avygdor Moise

National Institute of Standards & Technology

Nile Oldham

Pacificorp

Lauren Pananen
Clark J. Smith

Pacific Gas & Electric Co.

Charles A. Partridge

GE Meter

Jack Pazdon

Schlumberger Electricity

Marc Purc

American Electric Power Servs. Corp.

William A. Randle, Jr.

Duke Energy Company

Wesley Ray

Institute of Gas Technology

William F. Rush

Utility Translation Systems

Chris M. Schafer

Bell Sotuh Telecommunications

Jerry Schull

Radix Corporation

Brian Simpson

Arizona Public Service Company

Paul Taylor (Alt.)

Wisconsin Public Service Corp.

Thomas C. Thiel

Tucker Engineering

Richard Tucker

Nertec Design

Michael Veillette

DAC

Steve Weil

ABB Power T&D Company, Inc.

Ted York

558

You might also like