ANSI C12.19-2008 Load Profile Implementation Guide
ANSI C12.19-2008 Load Profile Implementation Guide
Future DOS R&D Inc.
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved.
1 References
2.1 API
Throughout this document, the terms “API” refers to the Application Programming
Interface used the retrieval of load profile interval data from ANSI C12.19 End
Devices.
2.2 Clock
Throughout this document, the terms “clock” refers to an ANSI C12.19 compliant End
Device’s real-time clock calendar function that can be retrieved strictly using ST52 or
ST55 and set using SP10 or SP32. The Element-type representation of the clock is
retrieved from ST0, GEN_CONFIG_TBL.FORMAT_CONTROL_2.TM_FORMAT, and
the allowable values that this Element may attain are defined by
TDL.TM_FORMAT_ENUM.
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 1
2.3 End Device
See Meter.
2.5 Manufacturer
Throughout this document, the term “Manufacturer”, regardless of singular or plural
form, refers to the individual (or plurality of) meter vendor (or vendors).
2.7 Meter
Throughout this document, the term “meter”, regardless of singular or plural form,
refers to an ANSI C12.19 compliant End Device that is capable of recording interval
data using load profile tables.
2.8 MP
Throughout this document, the terms “MPn”, regardless of the numeric value
assumed by the letter “n” refers to a Manufacturer proprietary Procedure. e.g.
General Electric Procedure 1 may be referenced as MP1 (some manufacturers
number their procedures 2048 through 4087; these are equivalent to manufacturer
tables MP0 through MP2039).
2.9 MT
Throughout this document, the terms “MTn”, regardless of the numeric value
assumed by the letter “n” refers to a Manufacturer proprietary Table. e.g. General
Electric Table 1 may be referenced as MT1 (some manufacturers number their
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 2
tables 2048 through 4087; these are equivalent to manufacturer tables MT0 through
MT2039).
2.10 SP
Throughout this document, the terms “SPn”, regardless of the numeric value
assumed by the letter “n” refers to an ANSI C12.19 compliant Standard Procedure.
e.g. ANSI C12.19 Standard Procedure 10, “Set Date and/or Time” may be
referenced as ST10.
2.11 ST
Throughout this document, the terms “STn”, regardless of the numeric value
assumed by the letter “n” refers to an ANSI C12.19 compliant Standard Table. e.g.
ANSI C12.19 Standard Table 05, “Device Identification Table” may be referenced as
ST5.
2.12 TDL
Table Definition Language is the syntax used for detailing the ANSI C12.19 Standard
and/or an End Device Tables’ structure, defined types and constraints.
In addition ANSI C12.19-2008 defines a number of procedures that were designed
for the management of the meter’s load profilers. These are defined as follows:
The above Tables and Procedure may not be reliably interpreted without supporting
information about the meter’s operating state and its configuration that is available
from other tables. The following ANSI C12.19 Tables may be of importance:
1
This Table or Procedure is new in ANSI C12.19‐2008 is unlikely to be present in any technology that
predates 2009. Procedure 30 should be used, when available, to snap‐shot (freeze) the load profile data
values.
2
The “high‐precision” alternative to SP10.
3
This is an alternative place holder to ST5 IDENTIFICATION Element. When it is desired to obtain the
meter’s IDENTIFICATION Element then use ST5. When ST5 is not available in the meter and ST6 is
available then use ST6.DEVICE_ID, since both represent the same thing.
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 4
Tables 10 through 17 may need to be interrogated only when it is desired to report
load profile data values in terms of their fundamental engineering units rather than
raw Table values.
ANSI C12.19-2008 provides for great flexibility in End Device programming, which
leads at times to an increased complexity for the back-end system (an ANSI C12.19-
2008 Standard design objective). The standard’s flexibility is also exploited by some
manufacturers through the use of Manufacturer defined load profile Tables (a non-
compliant solution).
4
The table elements described here assume that the API Load Profile Data Set parameter issued was one
(1), thus requesting data to be retrieved from ST64. When other data set selection parameter values are
supplied (e.g. set 2, 3 or 4) they represent selection of ST65, ST66 or ST67. Therefore, the correct element
name should be selected so that it corresponds to the indicated data set. For example when data set
selection =2 then LP_STATUS_TBL.LP_STATUS_SET2.LP_SET_STATUS_FLAGS should be used and load
profile data retrieved will be from ST65. The same logic applies to all load profile element selector that
contain the term “SETn”, where n = 1, 2, 3 or 4.
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 5
These are graphically illustrated below:
Figure 1: The structure of Standard Table 64, Load Profile Data Set One.
TABLE 64 LP_DATA_SET1_TBL
LP_BLK1_DAT_RCD
LP_BLK1_DAT_RCD
LP_BLK1_DAT_RCD
BLK_END_TIME : STIME_DATE
Interval is valid
NBR_BLK_INTS_SET1
flag
NBR_BLK_INTS_SET1
INT_SET1_RCD
SIMPLE_INT_STATUS:
EXTENDED_INT_STATUS
Block
1
INT_DATA
NBR_BLKS_SET1
Copyright © 1997-2008 Future DOS R&D Inc. All Rights Reserved. NBR_CHNS_SET1
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 6
Figure 2: The structure of a single load profile block in Table 64, Load Profile Data Set One.
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 7
LP_DATA_SETS1 [0]
0 BLK_END_TIME
3 LP_INT
.
.
3.n LP_INT [n], n = NBR_BLK_INTS_SET1 - 1
.
Note 1: Circled numbers represent ANSI C12.19 Element Index relative to LP_DATA_SETS1.
Note 3: EXTENDED_INT_STATUS contains NBR_CHNS_SET1 + 1 Elements. The first element is the “common”
status and the remainder are the status of each channel of the associated interval data.
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 8
Table 1: Status information available from ANSI C12.19 Table 61, “Actual Load
Profile Limiting Table”
Table 1 above does not contain a definitive list of all status Elements. Other status
Elements are defined in ST61. Elements such as LP_SET1_INHIBIT_OVF_FLAG,
BLK_END_READ_FLAG, SCALAR_DIVISOR_FLAG_SETN, etc., are useful in
testing capabilities, data availability and the computation of offsets into block data.
As such they are not covered in this section. They will be covered in the context
where needed.
Table 2: Status information available from ANSI C12.19 Table 62, “Load Profile
Control Table”
Interval = LP_CTRL_TBL.LP_SEL_SET1[ACT_LP_TBL.NBR_CHNS_SET1]
data
source A collection of {CHNL_FLAG, LP_SOURCE_SELECT,
for each END_BLK_RDG_SOURCE_SELECT} Elements used to determine
channel whether ST64 contains block end readings (when
CHNL_FLAG.END_RDG_FLAG = TRUE), the channel’s input
source for intervals data and channel’s source for block end reading.
Data = LP_CTRL_TBL.INT_FMT_CDE1
format
of all This element describes the data type used in each interval. All
interval intervals in all channels in all blocks that are common to one profiler
data in (e.g. ST64) share the same data type. Given that most profilers use
ST64 integral data types when storing interval data, it may be necessary
to scale these values to proper floating point value in the TMS. The
scaling operation is determined by the appropriate SCALARS_SET1
and DIVISOR_SET1 on a per-channel basis.
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 9
Scalars = LP_CTRL_TBL.SCALARS_SET1[ACT_LP_TBL.NBR_CHNS_SET1]
applied
to In order to scale the interval data values, the TMS software needs to
interval divide the interval data by SCALARS_SET1[n], where n is the
data on channel number n = {0, 1, ... , NBR_CHNS_SET1-1}.
a per-
channel
basis 5
5
This conversion does not yield engineering units. If it is desired to produce engineering units then it is
necessary to use the correct conversions per INT_SOURCE_SELECT found in ST62.
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 10
Table 3: Status information available from ANSI C12.19 Table 63, “Load Profile
Status Table”
Load = LP_STATUS_TBL.LP_STATUS_SET1.LP_SET_STATUS_FLAGS
profile
status Information about the nature and operation mode of the End
Device load-profile 1 (ST64) as follows:
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 11
Last block = LP_STATUS_TBL.LP_STATUS_SET1.LAST_BLOCK_SEQ_NBR
sequence
number. Sequence number of the newest valid data block (per
LAST_BLOCK_ELEMENT). This sequence number corresponds
to the first valid interval entry in the block.
6
Many implementations do not update the number of unread blocks to allow the utility to manage this
quantity manually. This does not pose any problem as long as
LP_STATUS_TBL.LP_STATUS_SET1.LP_SET_STATUS_FLAGS. BLOCK_INHIBIT_OVERFLOW_FLAG is set to
FALSE.
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 12
Table 4: Status information available in ANSI C12.19 Table 64, “Load Profile
Data Set One Table”
This entry contains the ending date and time of the last
interval data recorded in this data block. This is the end-of-
interval value (for example, if a one-hour interval started at
10:00 and terminated prematurely at 10:15, the
BLK_END_TIME shall indicate 11:00). Only when the block is
closed, regardless of reason, the BLK_END_TIME is the
block’s actual starting time + NBR_BLK_INTS_SET1 *
MAX_INT_TIME_SET1. This way it is possible to compute
the closed block’s boundary start-time, being
(BLK_END_TIME - NBR_BLK_INTS_SET1 *
MAX_INT_TIME_SET1). 7 Otherwise we need to use the
NBR_VALID_INT to determine start-time of the block
(BLK_END_TIME - NBR_VALID_INT *
MAX_INT_TIME_SET1).
7
When a block is closed it is necessary to compute the block’s start‐time and block’s end‐time. If the
block’s start‐time is less then the API requested interval‐time and the block’s end‐time is greater or equal
to the TMS requested interval‐time then the block may contain the desired interval data. In order to be
certain, it is necessary to read (and compute) the start‐time of the next block to ensure that it is later than
the end‐time of the current block. Otherwise it is necessary to check the status of all intervals (simple or
extended) of the current block to establish whether the block actually contains the desired interval or not
(a possible reason for not having the desired interval data is early closure of the block due to power
failure or time adjustments).
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 13
Extended = LP_DATA_SET1_TBL.LP_DATA_SETS1 [n]. LP_INT[i].
interval status EXTENDED_INT_STATUS[chNbr + 1]
The interval data value for the channel selected. The data is
encoded according to the value indicated by
LP_CTRL_TBL.INT_FMT_CDE1 as follows:
1 UINT8
2 UINT16
4 UINT32
8 INT8
16 INT16
32 INT32
64 NI_FMAT1
128 NI_FMAT2
Copyright © 2007‐2009 Future DOS R&D Inc. All Rights Reserved. 14