Sei sulla pagina 1di 90

Common Information Model On Demand Meter Read Interoperability Test Procedure

EPRI CIM Interoperability Test Procedure (ECITP) 2.03

2011 TECHNICAL REPORT

Common Information Model On Demand Meter Read Interoperability Test Procedure


EPRI CIM Interoperability Test Procedures (ECITP) 2.03

EPRI Project Manager J. Simmins

3420 Hillview Avenue Palo Alto, CA 94304-1338 USA PO Box 10412 Palo Alto, CA 94303-0813 USA 800.313.3774 650.855.2121 askepri@epri.com www.epri.com

1024444 Final Report, December 2011

DISCLAIMER OF WARRANTIES AND LIMITATION OF LIABILITIES


THIS DOCUMENT WAS PREPARED BY THE ORGANIZATION(S) NAMED BELOW AS AN ACCOUNT OF WORK SPONSORED OR COSPONSORED BY THE ELECTRIC POWER RESEARCH INSTITUTE, INC. (EPRI). NEITHER EPRI, ANY MEMBER OF EPRI, ANY COSPONSOR, THE ORGANIZATION(S) BELOW, NOR ANY PERSON ACTING ON BEHALF OF ANY OF THEM: (A) MAKES ANY WARRANTY OR REPRESENTATION WHATSOEVER, EXPRESS OR IMPLIED, (I) WITH RESPECT TO THE USE OF ANY INFORMATION, APPARATUS, METHOD, PROCESS, OR SIMILAR ITEM DISCLOSED IN THIS DOCUMENT, INCLUDING MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, OR (II) THAT SUCH USE DOES NOT INFRINGE ON OR INTERFERE WITH PRIVATELY OWNED RIGHTS, INCLUDING ANY PARTY'S INTELLECTUAL PROPERTY, OR (III) THAT THIS DOCUMENT IS SUITABLE TO ANY PARTICULAR USER'S CIRCUMSTANCE; OR (B) ASSUMES RESPONSIBILITY FOR ANY DAMAGES OR OTHER LIABILITY WHATSOEVER (INCLUDING ANY CONSEQUENTIAL DAMAGES, EVEN IF EPRI OR ANY EPRI REPRESENTATIVE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES) RESULTING FROM YOUR SELECTION OR USE OF THIS DOCUMENT OR ANY INFORMATION, APPARATUS, METHOD, PROCESS, OR SIMILAR ITEM DISCLOSED IN THIS DOCUMENT. REFERENCE HEREIN TO ANY SPECIFIC COMMERCIAL PRODUCT, PROCESS, OR SERVICE BY ITS TRADE NAME, TRADEMARK, MANUFACTURER, OR OTHERWISE, DOES NOT NECESSARILY CONSTITUTE OR IMPLY ITS ENDORSEMENT, RECOMMENDATION, OR FAVORING BY EPRI. THE FOLLOWING ORGANIZATIONS, UNDER CONTRACT TO EPRI, PREPARED THIS REPORT: EnerNex Boreas Group

NOTE For further information about EPRI, call the EPRI Customer Assistance Center at 800.313.3774 or e-mail askepri@epri.com. Electric Power Research Institute, EPRI, and TOGETHERSHAPING THE FUTURE OF ELECTRICITY are registered service marks of the Electric Power Research Institute, Inc. Copyright 2011 Electric Power Research Institute, Inc. All rights reserved.

Acknowledgments

The following organizations, under contract to the Electric Power Research Institute (EPRI), prepared this report: EnerNex 620 Mabry Hood Road Suite 300 Knoxville, Tennessee 37932 Principal Investigators K. Stefferud B. Muschlitz Boreas Group 730 S. Elizabeth St. Denver, Colorado 80209 Principal Investigators R. Sarfi B. Boswell This report describes research sponsored by EPRI. EPRI would like to acknowledge the support of the following organizations: Consumers Energy American Electric Power Southern California Edison

This publication is a corporate document that should be cited in the literature in the following manner: Common Information Model On Demand Meter Read Interoperability Test Procedure: EPRI CIM Interoperability Test Procedures (ECITP) 2.03. EPRI, Palo Alto, CA: 2011. 1024444.

iii

Abstract
The Common Information Model (CIM) On Demand Meter Read Interoperability Test Procedure is one in a series of EPRI Interoperability Test Procedures (ETIPs) created by EPRI whose purpose is to thoroughly document the actors, interfaces, and test steps for the interoperability testing of specific parts of the International Electrotechnical Commission (IEC) Common Information Model (CIM) standard. The Test Procedures are initially being used for EPRI demonstration tests and are intended, over time, to form the basis of a set of CIM test procedures to be used by: Testing labs set up under a formal organizational framework for Smart Grid testing and certification, such as that called for by the Smart Grid Testing and Certification Committee (SGTCC) in its Interoperability Process Reference Manual (IPRM) whose goal is the formalized validation of the interoperability of combinations of vendor products Organizations sponsoring routine standards-validation CIM interoperability testing

The initial series of the Test Procedures covers several message sets related to the IEC 61868-9 (Meter Reading and Control) standard. This document covers test procedures related to on demand meter reading. Keywords Smart meters Common Information Model (CIM) Interoperability Test Procedures (Tips) Smart Grid Testing and Certification Committee (SGTCC)

Table of Contents
Section 1: Introduction ............................................1-1 Background ..................................................................... 1-1 Purpose of this Document .................................................. 1-3 Contents of this Document ................................................. 1-3 Section 2: References ..............................................2-1 Normative ....................................................................... 2-1 Informative ...................................................................... 2-1 Section 3: Test Overview .........................................3-1 CIM On-Demand Meter Read Interoperability Test ............... 3-1 Section 4: Test Steps and Results .............................4-1 Section 5: Test Technical Information .......................5-1 Test Set Up ...................................................................... 5-1 Test Invocation ................................................................. 5-1 Schedule Test ............................................................. 5-1 Execute Test ............................................................... 5-1 Test XSDs ........................................................................ 5-1 Test data ........................................................................ 5-2 1) GetMeterReadings .................................................. 5-2 2) ReplyMeterReadings ............................................... 5-3 Test results ....................................................................... 5-4 Appendix A: Detailed Description of Each Interface ................................................ A-1 WSDLs ....................................................................... A-1 GetTemplate ............................................................. A-1 SendReceiveReply Template ........................................ A-3 XSDs ....................................................................... A-9 Message XSD ............................................................ A-9 MeterReadings ........................................................ A-22 Appendix B: Requirements Tested ......................... B-1

vii

List of Figures
Figure 1-1 Scope of the EPRI CIM 61968-9 Test Plans ............... 1-2 Figure 3-1 Units under Test (UUT) ............................................ 3-1 Figure 3-2 ECITP 2.01 Meter Message Sequence Flow Diagram ......................................................................... 3-2

ix

List of Tables
Table 4-1 Test Steps for CIS .................................................... 4-2 Table 4-2 Test Steps for MDMS ............................................... 4-3 Table 4-3 Test Steps for AMI Head-End .................................... 4-4

xi

Section 1: Introduction
EPRI initiatives have provided important research contributing to bodies of work that have become International Electrotechnical Commission (IEC) interface standardsincluding the Common Information Model (CIM), Inter-Control Center Communications Protocol (ICCP) and 61850. These standards provide the basis for model-driven information exchange within and between control centers, substations, and other systems supporting utility operations. The implementation of a smarter grid is facilitated by the development of interoperability standards such as these. Having a universally accepted, well defined, model-driven information exchange strategy is the most realistic and cost effective way to implement a Smart Grid. The initial CIM standard addressed interoperatbility between Energy Management Systems and other control center applications. The primary challenge in the future is to extend CIM beyond the control center and prove that it is stable and fully implementable. Once CIM is extended, it is expected to allow full data management and exchange between the transmission, distribution, planning, and generation areas of the enterprise and with outside entities. When new data provided by these systems can be accessed, utilities will have a greatly improved chance of achieving efficiencies that will lower the cost of future system upgrades and integration. One measure of stability is having standard set of test cases that can be used to repeatably and reliably test the interoperability of two systems. This document is one in a series of EPRI-authored documents that provide the detailed information (steps, instructions, and interface definitions) related to such test cases. Background The EPRI CIM Interoperability Test Procedures are designed to support interoperability testing of the IEC CIM standards (61968, 61970, and 62325). The initial collection of Test Procecures focuses on 61968-9 (Meter Reading & Control). The scope of 61968-9 Test Procedures is shown in Figure 1-1This document, CIM On Demand Meter Read Interoperability Test Procedure, comprises one of component procedures of the 61968-9 collection of Test Procedures.

1-1

Figure 1-1 Scope of the EPRI CIM 61968-9 Test Plans

1-2

Purpose of this Document The purpose of the EPRI CIM test procedures is to thoroughly describe how system-to-system interoperability testing using IEC standard CIM messages can be performed. The test procedures are intended to be utilized by testing labs set up under a formal organizational framework for Smart Grid testing and certification, such as that called for by the Smart Grid Testing & Certification Committee (SGTCC) in its Interoperabiltiy Process Reference Manual (IPRM). In this use, the EPRI CIM test procedures address the need for a more formalized validation of interoperability of combinations of vendor products. The test procedures are also intended to be utilized by organizations sponsoring routine standards-validation CIM interoperability testing, as has historically been done by EPRI, UCA International, EdF, and ENTSO-E. Contents of this Document Chapter 2 contains the references used in the preparation of this test procedure. Chapter 3 contains a description of the test set up and what is to be tested. Chapter 4 has the step by step testing procedure. Appendix A contains the technical information for setting up a test. Appendix B contains the XSDs and WSDLs used in the test procedure.

1-3

Section 2: References
Normative IEC 61968-9 Interfaces for Meter Reading and Control, First Edition, International Electrotechnical Commission, Geneva Switzerland. Informative The business requirements are derived from the requirements published by Southern California Edison and those at smartgridipedia.org. Use cases from Southern California Edison:

http://www.sce.com/CustomerService/smartconnect/industry-resourcecenter/use-cases.htm?from=usecases
Use cases from smartgridipedia: http://www.smartgridipedia.org/index.php/B1_-_Scenario_2 Use Case B1 AMI-ENT Scenario 3 AMI Meter completes an on-demand read

AMI ENT Requirement REQ-B1001-Request an on-demand meter reading. AMI ENT Requirement- REQ-B1002-Receive an on-demand meter reading. AMI ENT Requirement- REQ-B1003-Send an on-demand meter reading.

2-1

Section 3: Test Overview


CIM On-Demand Meter Read Interoperability Test The ability to perform on-demand or on request meter reads is a basic interoperability requirement of utility systems. Systems tested include the Customer Information System (CIS), or similar system, and the Metering System (Head-End). Some configurations will relay the messages through the Meter Data Management System (MDMS) which can perform filtering functions. The On-Demand Meter Data Read Interoperability Test verifies that the MS returns the correct response CreatedMeterReadings message corresponding to the CreateMeterReadings request message. Actual meters, if available, may be used in the test system. The Units under Test (UUTs) are shown Figure 3-1. Actual meters, if available, may be used in the test system.
Test System Test Coord. Procedures Validate MeterReadings Operator Simulator Systems Under Test
CreatemeterReadings

MR-MDM + MR-RMR
Meter Simulator

or MR-RMR
AMI Network
CreatedMeterReadings

CS-CSRV

Enterprise Network

Test System Item(s) Tested Item used in test

Figure 3-1 Units under Test (UUT)

3-1

The system interfaces are shown in Figure 3-2 ECITP 2.01 Meter Message Sequence Flow Diagram. As shown in the diagram, systems under test are the CIS, MDMS, and AMI Head End. Meter read sequence is as follows: 1) GetMeterReading 2) ReplyMeterReading Note earlier versions of the CIM Part 9 document used a CREATE/CREATE message sequence instead of the current GET/REPLY message pattern. The MDMS is considered an optional component for on demand meter reading requests. Please see Section 6: Test Data for the sample XML format and content of the messages used for this test.
sd On-Demand Meter Read Customer Service (CS-CSRV) CIS Meter Operations (MR-MOP) Meter Data Management MDMS Meter Reading (MR-RMR) Meter

GET(MeterReading) GET(MeterReading) read meter()

REPLY(MeterReading) REPLY(MeterReading)

opt Interaction w ithout MDMS GET(MeterReading)

REPLY(MeterReading)

(from Actors)

(from Actors)

(from Actors)

Figure 3-2 ECITP 2.01 Meter Message Sequence Flow Diagram

3-2

Section 4: Test Steps and Results


For each role, detailed test procedure steps specific to that role are detailed.

4-1

Table 4-1 Test Steps for CIS Step # 1 Ref. # IEC 61968 version 10v30, MeterReading XSD Source Component CIS (source) Destination Component Meter or meter simulator, via the MDMS Head-end Detailed Step Request an on-demand meter read from at least one meter. Meter or meter simulator sends proprietary messages to head-end Verify Head-end sends a MeterReadings message to the source (or source via MDMS) using CIM test procedure MV-01 message verification. Record and save the content of the message. Using one of the message content verification methods in MV-02, verify the content and format of the transmitted MeterReadings message are in concurrence with the MeterReadings XSD. Record and save the content of the message. 4 Head-end CIS Verify CIS receives the MeterReadings message from the MDMS using CIM test procedure MV01 message verification. Record and save the content of the message. Using one of the message content verification methods in MV-02, verify the content and format of the received MeterReadings message are in concurrence with the MeterReadings XSD. Record and save the content of the message. Validate that the correct meter data is reported. Pass/Fail Pass/Fail Pass/Fail

AMI Meter/ simulated meter Head-end

Pass/Fail

Source or source via MDMS

Pass/Fail

4-2

Table 4-2 Test Steps for MDMS Step # 1 Ref. # IEC 61968 version 10v30, MeterReading XSD Source Component CIS (source) Destination Component MDMS Detailed Step Request an on-demand meter read from at least one meter. Meter or meter simulator sends proprietary messages to head-end Verify Head-end sends a MeterReadings message to the MDMS using CIM test procedure MV-01 message verification. Record and save the content of the message. Using one of the message content verification methods in MV-02, verify the content and format of the transmitted MeterReadings message are in concurrence with the MeterReadings XSD. Record and save the content of the message. 4 Head-end CIS Verify CIS receives the MeterReadings message from the MDMS using CIM test procedure MV-01 message verification. Record and save the content of the message. Using one of the message content verification methods in MV-02, verify the content and format of the received MeterReadings message are in concurrence with the MeterReadings XSD. Record and save the content of the message. Validate that the correct meter data is reported. Pass/Fail Pass/Fail Pass/Fail

2 3

AMI Meter/ simulated meter Head-end

Head-end MDMS

Pass/Fail Pass/Fail

4-3

Table 4-3 Test Steps for AMI Head-End Step # 1 Ref. # IEC 61968 version 10v30, MeterReading XSD Source Component CIS (source) Destination Component MDMS Detailed Step Request an on-demand meter read from at least one meter. Meter or meter simulator sends proprietary messages to head-end Verify Head-end sends a MeterReadings message to the MDMS using CIM test procedure MV-01 message verification. Record and save the content of the message. Using one of the message content verification methods in MV-02, verify the content and format of the transmitted MeterReadings message are in concurrence with the MeterReadings XSD. Record and save the content of the message. 4 Head-end CIS Verify CIS receives the MeterReadings message from the MDMS using CIM test procedure MV01 message verification. Record and save the content of the message. Using one of the message content verification methods in MV-02, verify the content and format of the received MeterReadings message are in concurrence with the MeterReadings XSD. Record and save the content of the message. Validate that the correct meter data is reported. Pass/Fail Pass/Fail Pass/Fail

2 3

AMI Meter/ simulated meter Head-end

Head-end MDMS

Pass/Fail Pass/Fail

4-4

Section 5: Test Technical Information


Test Set Up The test harness is designed to run on a cloud environment. The cloud environment used in this project is the Amazon EC2 cloud environment. Each vendor would have their own Amazon EC2 instance to run their copy of the test harness. There are several steps required to create a new instance, but each step is straightforward.Amazon EC2 is a cloud environment that makes it simple to create, manage, and deploy web based applications. It is easy to generate new instances on demand and the service itself is extremely reliable. The details of establishing a test instance may be found in Appendix A EPRI Interoperability Test Harness How-To-Deploy Tutorial in CIM Conformity and Interoperability Test Procedure Development.EPRI, Palo Alto, CA: 2011. 1024450. Test Invocation The details of establishing a test instance may be found in Appendix B EPRI Test Harness Tutorial in CIM Conformity and Interoperability Test Procedure Development.EPRI, Palo Alto, CA: 2011. 1024450. Schedule Test 1. Coordinate test scheduling with John Simmins at jsimmins@epri.com. Execute Test 1. Start system(s) under test. 2. Verify connectivity of systems 3. Execute test steps as defined in section 5 for each system under test. 4. At test conclusion, receive and review recorded test status information. Test XSDs This test uses the standard 61968 Part 1 message header and EndDeviceEventsMessage, MeterReadings and MeterServiceRequests payload, included in Appendix A.

5-1

Test data On Demand Meter Reads sample messages which are expected to be produced by the the CIS and MDMS. Note EndDeviceEvents may be piggybacked on MeterReading messages. 1) GetMeterReadings
<?xml version="1.0" encoding="UTF-8"?> (http://www.altova.com)--> <!--Sample XML file generated by XMLSpy v2005 rel. 3 U <GetMeterReadings xmlns="http://www.iec.ch/TC57/2011/GetMeterReadingsMessage" xmlns:obj2="http://iec.ch/TC57/2011/GetMeterReadings#" xmlns:obj1="http://iec.ch/TC57/2011/MeterReadings#" xmlns:msg="http://www.iec.ch/TC57/2010/schema/message" xsi:schemaLocation="http://www.iec.ch/TC57/2011/GetMeterReadingsMessage GetMeterReadingsMessage.xsd"> <Header> <msg:Verb>get</msg:Verb> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

<msg:Noun>MeterReadings</msg:Noun> <msg:Context>TESTING</msg:Context> <msg:Source>CIS-001</msg:Source> <msg:Timestamp>2001-12-17T09:30:47.0Z</msg:Timestamp>

<msg:AsyncReplyFlag>false</msg:AsyncReplyFlag> <msg:AckRequired>false</msg:AckRequired> <msg:MessageID>ABC-123</msg:MessageID> <msg:CorrelationID></msg:CorrelationID> </Header> <Request>

<msg:Comment>On-Demand read request</msg:Comment>

<ID>String</ID>

<obj2:GetMeterReadings> <obj2:EndDevice> <obj2:Names> <obj2:mRID>3dc53ee5-777e-50b4-8699-a1c224f45f3d</obj2:mRID> <obj2:name>Meter23253</obj2:name>

</Request>

</obj2:GetMeterReadings>

</obj2:EndDevice>

</obj2:Names>

</GetMeterReadings>

5-2

2) ReplyMeterReadings
<?xml version="1.0" encoding="UTF-8"?> (http://www.altova.com)--> <!--Sample XML file generated by XMLSpy v2005 rel. 3 U <MeterReadingsResponseMessage

xmlns="http://www.iec.ch/TC57/2011/GetMeterReadingsMessage" xmlns:obj2="http://iec.ch/TC57/2011/GetMeterReadings#" xmlns:obj1="http://iec.ch/TC57/2011/MeterReadings#" xmlns:msg="http://www.iec.ch/TC57/2010/schema/message" xsi:schemaLocation="http://www.iec.ch/TC57/2011/GetMeterReadingsMessage GetMeterReadingsMessage.xsd"> <Header> <msg:Verb>reply</msg:Verb> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

<msg:Noun>MeterReadings</msg:Noun> <msg:Context>TESTING</msg:Context> <msg:Source>HE-001</msg:Source> <msg:Timestamp>2001-12-17T09:30:47.0Z</msg:Timestamp>

<msg:AsyncReplyFlag>false</msg:AsyncReplyFlag> <msg:MessageID>HE-12345</msg:MessageID> <msg:CorrelationID>ABC-123</msg:CorrelationID> </Header> <Reply>

<msg:Comment>On-Demand meter read reasponse</msg:Comment>

</Reply>

<msg:Result>OK</msg:Result>

<Payload>

<obj1:MeterReadings>

<obj1:MeterReading> <obj1:Meter>

<obj1:isCoincidentTrigger>false</obj1:isCoincidentTrigger> <obj1:mRID>3dc53ee5-777e-50b4-8699-a1c224f45f3d</obj1:mRID> <obj1:Names> <obj1:name>Meter23253</obj1:name>

</obj1:Meter>

</obj1:Names>

<obj1:Readings>

<obj1:reason>inquiry</obj1:reason> <obj1:source>HE-001</obj1:source> <obj1:value>314159</obj1:value>

<obj1:reportedDateTime>2001-12-17T09:30:47.0Z</obj1:reportedDateTime> <obj1:timeStamp>2001-12-17T09:30:47.0Z</obj1:timeStamp> <obj1:ReadingType ref="kWh"/>

</Payload>

</obj1:MeterReadings>

</obj1:MeterReading>

</obj1:Readings>

</MeterReadingsResponseMessage>

5-3

Test results CIS and MDMS demonstration tests pass if each test step with a pass/fail in the far right column passes.

5-4

Appendix A: Detailed Description of Each Interface


Detailed descriptions of each interface, keyed to interface numbers from diagram. WSDLs GetTemplate
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="Get{Information_Object_Name}" targetNamespace="http://iec.ch/TC57/2011/{Information_Object_Name}" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema"

xmlns:tns="http://iec.ch/TC57/2011/{Information_Object_Name}" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/"

xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"

xmlns:infoMessage="http://www.iec.ch/TC57/2011/Get{Information_Object_Name }Message"> <wsdl:types> <xs:schema essage" targetNamespace="http://www.iec.ch/TC57/2011/Get{Information_Object_Name}M

elementFormDefault="qualified"> <xs:include

schemaLocation="xsd/Get{Information_Object_Name}Message.xsd"/> </xs:schema> </wsdl:types>

A-1

name="Get{Information_Object_Name}RequestMessage"> name="Get{Information_Object_Name}RequestMessage" </wsdl:message> <wsdl:part

<wsdl:message

<!-- Message Definitions -->

element="infoMessage:Get{Information_Object_Name}"/>

<wsdl:message name="ResponseMessage">

element="infoMessage:{Information_Object_Name}ResponseMessage"/> </wsdl:message>

<wsdl:part name="ResponseMessage"

<wsdl:message name="FaultMessage">

element="infoMessage:{Information_Object_Name}FaultMessage"/> </wsdl:message>

<wsdl:part name="FaultMessage"

<wsdl:portType name="Get{Information_Object_Name}_Port"> <wsdl:operation name="Get{Information_Object_Name}"> name="Get{Information_Object_Name}Request" <wsdl:output <wsdl:input

<!-- Port Definitions -->

message="tns:Get{Information_Object_Name}RequestMessage"/> name="Get{Information_Object_Name}Response" message="tns:ResponseMessage"/> <wsdl:fault

name="Get{Information_Object_Name}Fault" message="tns:FaultMessage"/> </wsdl:operation>

</wsdl:portType> <wsdl:binding name="Get{Information_Object_Name}_Binding"

type="tns:Get{Information_Object_Name}_Port">

transport="http://schemas.xmlsoap.org/soap/http"/>

<soap:binding style="document"

<wsdl:operation name="Get{Information_Object_Name}"> soapAction="http://iec.ch/TC57/2011/Get{Information_Object_Name}/Get{Infor mation_Object_Name}" style="document"/> <wsdl:input <soap:operation

name="Get{Information_Object_Name}Request"> </wsdl:input>

<soap:body use="literal"/>

A-2

name="Get{Information_Object_Name}Response"> </wsdl:output>

<wsdl:output

<soap:body use="literal"/>

name="Get{Information_Object_Name}Fault">

<wsdl:fault

name="Get{Information_Object_Name}Fault" use="literal"/> </wsdl:operation> </wsdl:fault>

<soap:fault

</wsdl:binding>

<wsdl:service name="Get{Information_Object_Name}"> binding="tns:Get{Information_Object_Name}_Binding"> <soap:address

<wsdl:port name="Get{Information_Object_Name}_Port"

location="http://iec.ch/TC57/2011/Get{Information_Object_Name}"/> </wsdl:service> </wsdl:definitions> </wsdl:port>

SendReceiveReply Template
?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="{Send | Receive | Reply}{Information_Object_Name}"

targetNamespace="http://iec.ch/TC57/2011/{Information_Object_Name}" xmlns:tns="http://iec.ch/TC57/2011/{Information_Object_Name}" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/"

xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"

xmlns:infoMessage="http://www.iec.ch/TC57/2011/{Information_Object_Name}Mes sage">

<wsdl:types> <xs:schema

targetNamespace="http://www.iec.ch/TC57/2011/{Information_Object_Name} Message"

A-3

elementFormDefault="qualified"> <xs:include

schemaLocation="xsd/{Information_Object_Name}Message.xsd"/> </xs:schema> </wsdl:types> <!-- Message Definitions --> <wsdl:message

name="Created{Information_Object_Name}EventMessage"> name="Created{Information_Object_Name}EventMessage" </wsdl:message> <wsdl:part

element="infoMessage:Created{Information_Object_Name}"/>

name="Changed{Information_Object_Name}EventMessage"> name="Changed{Information_Object_Name}EventMessage" </wsdl:message> <wsdl:part

<wsdl:message

element="infoMessage:Changed{Information_Object_Name}"/>

name="Closed{Information_Object_Name}EventMessage"> name="Closed{Information_Object_Name}EventMessage" </wsdl:message> <wsdl:part

<wsdl:message

element="infoMessage:Closed{Information_Object_Name}"/>

name="Canceled{Information_Object_Name}EventMessage"> name="Canceled{Information_Object_Name}EventMessage" </wsdl:message> <wsdl:part

<wsdl:message

element="infoMessage:Canceled{Information_Object_Name}"/>

name="Deleted{Information_Object_Name}EventMessage"> name="Deleted{Information_Object_Name}EventMessage" </wsdl:message> <wsdl:part

<wsdl:message

element="infoMessage:Deleted{Information_Object_Name}"/>

<wsdl:message name="ResponseMessage">

A-4

element="infoMessage:{Information_Object_Name}ResponseMessage"/> </wsdl:message>

<wsdl:part name="ResponseMessage"

<wsdl:message name="FaultMessage">

element="infoMessage:{Information_Object_Name}FaultMessage"/> </wsdl:message>

<wsdl:part name="FaultMessage"

<wsdl:portType name="{Information_Object_Name}_Port"> <wsdl:operation

<!-- Port Definitions -->

name="Created{Information_Object_Name}"> name="Created{Information_Object_Name}Event" <wsdl:output <wsdl:input

message="tns:Created{Information_Object_Name}EventMessage"/> name="Created{Information_Object_Name}Response" message="tns:ResponseMessage"/> <wsdl:fault

name="Created{Information_Object_Name}Fault" message="tns:FaultMessage"/> </wsdl:operation>

name="Changed{Information_Object_Name}"> name="Changed{Information_Object_Name}Event" <wsdl:output <wsdl:input

<wsdl:operation

message="tns:Changed{Information_Object_Name}EventMessage"/> name="Changed{Information_Object_Name}Response" message="tns:ResponseMessage"/> <wsdl:fault

name="Changed{Information_Object_Name}Fault" message="tns:FaultMessage"/> </wsdl:operation>

name="Canceled{Information_Object_Name}"> name="Canceled{Information_Object_Name}Event" <wsdl:output <wsdl:input

<wsdl:operation

message="tns:Canceled{Information_Object_Name}EventMessage"/> name="Canceled{Information_Object_Name}Response" message="tns:ResponseMessage"/> <wsdl:fault

name="Canceled{Information_Object_Name}Fault" message="tns:FaultMessage"/> </wsdl:operation>

A-5

name="Closed{Information_Object_Name}">

<wsdl:operation

name="Closed{Information_Object_Name}Event" <wsdl:output

<wsdl:input

message="tns:Closed{Information_Object_Name}EventMessage"/> name="Closed{Information_Object_Name}Response" message="tns:ResponseMessage"/> <wsdl:fault

name="Closed{Information_Object_Name}Fault" message="tns:FaultMessage"/> </wsdl:operation>

name="Deleted{Information_Object_Name}"> name="Deleted{Information_Object_Name}Event" <wsdl:output <wsdl:input

<wsdl:operation

message="tns:Deleted{Information_Object_Name}EventMessage"/> name="Deleted{Information_Object_Name}Response" message="tns:ResponseMessage"/> <wsdl:fault

name="Deleted{Information_Object_Name}Fault" message="tns:FaultMessage"/> </wsdl:operation>

</wsdl:portType> <wsdl:binding name="{Information_Object_Name}_Binding"

type="tns:{Information_Object_Name}_Port">

transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation

<soap:binding style="document"

name="Created{Information_Object_Name}">

soapAction="http://iec.ch/TC57/2011/{Information_Object_Name}/Created{Infor mation_Object_Name}" style="document"/> <wsdl:input

<soap:operation

name="Created{Information_Object_Name}Event"> </wsdl:input>

<soap:body use="literal"/>

name="Created{Information_Object_Name}Response"> </wsdl:output>

<wsdl:output

<soap:body use="literal"/>

name="Created{Information_Object_Name}Fault">

<wsdl:fault

name="Created{Information_Object_Name}Fault" use="literal"/>

<soap:fault

A-6

name="Changed{Information_Object_Name}">

<wsdl:operation

</wsdl:operation>

</wsdl:fault>

soapAction="http://iec.ch/TC57/2011/{Information_Object_Name}/Changed{Infor mation_Object_Name}" style="document"/> <wsdl:input

<soap:operation

name="Changed{Information_Object_Name}Event"> </wsdl:input>

<soap:body use="literal"/>

name="Changed{Information_Object_Name}Response"> </wsdl:output>

<wsdl:output

<soap:body use="literal"/>

name="Changed{Information_Object_Name}Fault">

<wsdl:fault

name="Changed{Information_Object_Name}Fault" use="literal"/> </wsdl:operation> </wsdl:fault>

<soap:fault

name="Canceled{Information_Object_Name}">

<wsdl:operation

soapAction="http://iec.ch/TC57/2011/{Information_Object_Name}/Canceled{Info rmation_Object_Name}" style="document"/> <wsdl:input

<soap:operation

name="Canceled{Information_Object_Name}Event"> </wsdl:input>

<soap:body use="literal"/>

name="Canceled{Information_Object_Name}Response"> </wsdl:output>

<wsdl:output

<soap:body use="literal"/>

name="Canceled{Information_Object_Name}Fault">

<wsdl:fault

name="Canceled{Information_Object_Name}Fault" use="literal"/> </wsdl:operation> <wsdl:operation </wsdl:fault>

<soap:fault

name="Closed{Information_Object_Name}">

soapAction="http://iec.ch/TC57/2011/{Information_Object_Name}/Closed{Inform ation_Object_Name}" style="document"/> <wsdl:input

<soap:operation

name="Closed{Information_Object_Name}Event">

<soap:body use="literal"/>

A-7

name="Closed{Information_Object_Name}Response"> </wsdl:output>

<wsdl:output

</wsdl:input>

<soap:body use="literal"/>

name="Closed{Information_Object_Name}Fault">

<wsdl:fault

name="Closed{Information_Object_Name}Fault" use="literal"/> </wsdl:operation> </wsdl:fault>

<soap:fault

name="Deleted{Information_Object_Name}">

<wsdl:operation

soapAction="http://iec.ch/TC57/2011/{Information_Object_Name}/Deleted{Infor mation_Object_Name}" style="document"/> <wsdl:input

<soap:operation

name="Deleted{Information_Object_Name}Event"> </wsdl:input>

<soap:body use="literal"/>

name="Deleted{Information_Object_Name}Response"> </wsdl:output>

<wsdl:output

<soap:body use="literal"/>

name="Deleted{Information_Object_Name}Fault">

<wsdl:fault

name="Deleted{Information_Object_Name}Fault" use="literal"/> </wsdl:operation> </wsdl:fault>

<soap:fault

</wsdl:binding>

Reply}{Information_Object_Name}">

<wsdl:service name="{Send | Receive | <wsdl:port name="{Information_Object_Name}_Port" <soap:address

binding="tns:{Information_Object_Name}_Binding">

Reply}{Information_Object_Name}"/> </wsdl:service> </wsdl:definitions> </wsdl:port>

location="http://iec.ch/TC57/2011/{Send | Receive |

A-8

XSDs Message XSD


<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns="http://www.iec.ch/TC57/2010/schema/message" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.iec.ch/TC57/2010/schema/message" version="1.0.0">

elementFormDefault="qualified" attributeFormDefault="unqualified" <xs:complexType name="RequestType"> <xs:annotation> <xs:documentation>Request type definition</xs:documentation>

<xs:sequence>

</xs:annotation> <xs:annotation>

for 'get' requests</xs:documentation> </xs:annotation> <xs:annotation>

<xs:documentation>Request package is typically used to supply parameters

<xs:element name="StartTime" type="xs:dateTime" minOccurs="0"> <xs:documentation>Start time of interest</xs:documentation>

</xs:element>

</xs:annotation>

<xs:element name="EndTime" type="xs:dateTime" minOccurs="0"> <xs:annotation> <xs:documentation>End time of interest</xs:documentation>

</xs:element>

</xs:annotation>

maxOccurs="unbounded"> <xs:annotation>

<xs:element name="Option" type="OptionType" minOccurs="0"

</xs:element>

</xs:annotation>

<xs:documentation>Request type specialization</xs:documentation>

<xs:element name="ID" type="xs:string" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>Object ID for request</xs:documentation>

</xs:element>

</xs:annotation>

maxOccurs="unbounded">

<xs:any namespace="##other" processContents="lax" minOccurs="0" <xs:annotation>

a CIM-specific namespace</xs:documentation> </xs:any> </xs:annotation>

<xs:documentation>This can be a CIM profile defined as an XSD with

</xs:complexType>

</xs:sequence>

A-9

<xs:complexType name="ReplyType"> <xs:annotation> <xs:documentation>Reply type definition</xs:documentation>

</xs:annotation> <xs:sequence>

<xs:annotation>

errors</xs:documentation> </xs:annotation>

<xs:documentation>Reply package is used to confirm success or report

<xs:element name="Result"> <xs:annotation> <xs:documentation>Reply code: OK, PARTIAL or FAILED</xs:documentation>

</xs:annotation>

<xs:simpleType>

<xs:restriction base="xs:string"> <xs:enumeration value="OK"/> <xs:enumeration value="PARTIAL"/> <xs:enumeration value="FAILED"/> </xs:restriction>

</xs:element>

</xs:simpleType>

maxOccurs="unbounded">

<xs:element name="Error" type="ErrorType" minOccurs="0" <xs:annotation>

errors</xs:documentation> </xs:element> </xs:annotation>

<xs:documentation>Reply details describing one or more

<xs:element name="ID" type="xs:string" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>Resulting transaction ID (usually consequence of

create)</xs:documentation> </xs:element> </xs:annotation>

maxOccurs="unbounded"/> <xs:annotation>

<xs:any namespace="##other" processContents="lax" minOccurs="0" <xs:element name="operationId" type="xs:integer" minOccurs="0"> <xs:documentation>The reply.operationId provides the unique identifier

of the Operation for which this reply.result is relevant. Thus, it is assumed that this is a partial reply in direct response to one of the operations contained in an OperationSet request.</xs:documentation> </xs:element> </xs:annotation>

</xs:sequence>

</xs:complexType>

<xs:complexType name="PayloadType"> <xs:annotation> <xs:documentation>Payload container</xs:documentation>

A-10

</xs:annotation> <xs:sequence> <xs:choice>

<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>For XML payloads, usually CIM profiles

defined using an XSD in a profile-specific namespace.</xs:documentation> </xs:any> </xs:annotation>

<xs:element name="OperationSet" type="OperationSet" minOccurs="0"/> <xs:element name="Compressed" type="xs:string" minOccurs="0"> <xs:annotation>

payloads</xs:documentation> </xs:element>

<xs:documentation>For compressed and/or binary, uuencoded

</xs:annotation>

</xs:choice>

<xs:element name="Format" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Hint as to format of payload, e.g. XML, RDF,

SVF, BINARY, PDF, ...</xs:documentation> </xs:element> </xs:annotation>

</xs:complexType>

</xs:sequence>

<xs:simpleType name="NounType">

<xs:restriction base="xs:string">

<!-- insert nouns from parts 1-8 here -->

20110412.docx" -->

<!-- nouns from "61958-9_MeterReadingAndControl_2ed-working-draft<xs:enumeration value="AuxiliaryAgreementConfig"/> <xs:enumeration value="ComModuleConfig"/> <xs:enumeration value="CustomerAccountConfig"/> <xs:enumeration value="CustomerConfig"/>

<xs:enumeration value="CustomerAgreementConfig"/> <xs:enumeration value="CustomerMeterDataSet"/> <xs:enumeration value="EndDeviceConfig"/> <xs:enumeration value="EndDeviceEvents"/> <xs:enumeration value="EndDeviceGroups"/> <xs:enumeration value="MeterConfig"/> <xs:enumeration value="EndDeviceControls"/> <xs:enumeration value="EndDeviceFirmware"/> <xs:enumeration value="MasterDataLinkageConfig"/> <xs:enumeration value="MeterReadings"/>

<xs:enumeration value="MeterReadSchedule"/>

<xs:enumeration value="MeterServiceRequest"/> <xs:enumeration value="ReceiptRecord"/>

<xs:enumeration value="PricingStructureConfig"/>

A-11

<xs:enumeration value="ServiceCategoryConfig"/> <xs:enumeration value="ServiceLocationConfig"/> <xs:enumeration value="ServiceSupplierConfig"/> <xs:enumeration value="TransactionRecord"/> <xs:enumeration value="UsagePointConfig"/> <xs:enumeration value="UsagePointGroups"/> <!-- insert nouns parts 10-12 here" --> </xs:simpleType> </xs:restriction>

<xs:enumeration value="UsagePointLocationConfig"/>

<xs:complexType name="OperationSet"> <xs:annotation> <xs:documentation>Each operation set is a collection of operations

that may require operational-integrity and/or sequence control.</xs:documentation> </xs:annotation> <xs:sequence>

<xs:element name="enforceMsgSequence" type="xs:boolean" minOccurs="0"> <xs:annotation> <xs:documentation>If set to TRUE, the Operation.##other

messages must be processed in the sequence presented. If omitted, assume FALSE.</xs:documentation> </xs:element> minOccurs="0"> </xs:annotation>

<xs:element name="enforceTransactionalIntegrity" type="xs:boolean" <xs:annotation>

Operation.##other messages must be processed successfully or else the entire message set must be rolled back. If omitted, assume TRUE.</xs:documentation> </xs:element> </xs:annotation>

<xs:documentation>Set to TRUE when all of the

<xs:element name="Operation" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>For master data set synchronization XML

payloads.</xs:documentation>

</xs:annotation>

<xs:complexType>

<xs:sequence>

<xs:element name="operationId" type="xs:integer"> <xs:annotation> <xs:documentation>The

payload.operation.operationId provides the unique identifier (within the messages (e.g. OperationSet reply).</xs:documentation> </xs:element> type="xs:normalizedString"> </xs:annotation>

OperationSet) of the Operation for the purpose of reference in subsequent

<xs:element name="noun" minOccurs="0"

A-12

type="NounType"> -->

<!-- <xs:element name="noun" minOccurs="0" <xs:annotation>

also identifies the noun, this element is optionally supplied to simplify processing.</xs:documentation> </xs:annotation>

<xs:documentation>The payload.operation.##other

</xs:element>

<xs:element name="verb" minOccurs="0"> <xs:annotation> <xs:documentation>"create", "delete", "change",

etc.</xs:documentation>

<xs:simpleType>

</xs:annotation> <xs:restriction base="xs:string">

<xs:enumeration value="cancel"/>

<xs:enumeration value="canceled"/> <xs:enumeration value="change"/> <xs:enumeration value="changed"/> <xs:enumeration value="create"/> <xs:enumeration value="close"/> <xs:enumeration value="created"/> <xs:enumeration value="closed"/>

<xs:enumeration value="delete"/> <xs:enumeration value="get"/>

<xs:enumeration value="deleted"/> <xs:enumeration value="show"/>

<xs:enumeration value="reply"/>

<xs:enumeration value="subscribe"/> <xs:enumeration value="execute"/> <xs:enumeration value="report"/> <xs:enumeration value="stop"/>

<xs:enumeration value="unsubscribe"/>

</xs:element> default="false" minOccurs="0">

</xs:simpleType>

</xs:restriction>

<xs:enumeration value="terminate"/>

<xs:element name="elementOperation" type="xs:boolean" <xs:annotation>

element level. In such a case, the verb is to be applied to the elements populated in the payload.operation.##other below. If omitted, assume FALSE.</xs:documentation> </xs:annotation>

<xs:documentation>TRUE if the verb is operating at the

</xs:element> minOccurs="0">

<xs:any namespace="##other" processContents="skip"

A-13

<xs:annotation>

profile defined using an XSD in a profile-specific namespate. Individual

<xs:documentation>An XML payload which carries a CIM

payloads are used collectively to create a series of related operations. See the "enforce" boolean flags in the header for instructions on how to process these messages.</xs:documentation> </xs:any> </xs:annotation>

</xs:complexType>

</xs:sequence>

</xs:element>

</xs:complexType>

</xs:sequence>

<xs:complexType name="ReplayDetectionType"> <xs:annotation> <xs:documentation>Used to detect and prevent replay

attacks</xs:documentation> </xs:annotation> <xs:sequence>

<xs:element name="Nonce" type="xs:string"/>

</xs:complexType>

</xs:sequence>

<xs:element name="Created" type="xs:dateTime"/>

<xs:complexType name="UserType"> <xs:annotation> <xs:documentation>User type definition</xs:documentation>

</xs:annotation> <xs:sequence>

<xs:element name="UserID" type="xs:string"> <xs:annotation> <xs:documentation>User identifier</xs:documentation>

</xs:element>

</xs:annotation>

<xs:element name="Organization" type="xs:string"> <xs:annotation> <xs:documentation>User parent organization

identifier</xs:documentation> </xs:element>

</xs:annotation>

</xs:complexType>

</xs:sequence>

<xs:complexType name="HeaderType"> <xs:annotation> <xs:documentation>Message header type definition</xs:documentation>

</xs:annotation> <xs:sequence>

<xs:annotation>

information about the message.</xs:documentation>

<xs:documentation>Message header contains control and descriptive

A-14

</xs:annotation>

<xs:element name="Verb"> <xs:annotation> <xs:documentation>This enumerated list of verbs that can be

used to form message types in compliance with the IEC 61968 standard.</xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:string">

<xs:enumeration value="cancel"/>

<xs:enumeration value="canceled"/> <xs:enumeration value="change"/> <xs:enumeration value="changed"/> <xs:enumeration value="create"/> <xs:enumeration value="close"/> <xs:enumeration value="created"/> <xs:enumeration value="closed"/>

<xs:enumeration value="delete"/> <xs:enumeration value="get"/>

<xs:enumeration value="deleted"/> <xs:enumeration value="show"/>

<xs:enumeration value="reply"/>

<xs:enumeration value="subscribe"/> <xs:enumeration value="execute"/> <xs:enumeration value="report"/> <xs:enumeration value="stop"/>

<xs:enumeration value="unsubscribe"/>

</xs:element>

</xs:simpleType>

</xs:restriction>

<xs:enumeration value="terminate"/>

<xs:element name="Noun" type="xs:normalizedString"> <xs:annotation>

<!-- <xs:element name="Noun" type="NounType"> --> <xs:documentation>The Noun of the Control Area identifies the

main subject of the message type, typically a real world object defined in the CIM.</xs:documentation> </xs:annotation>

</xs:element>

<xs:element name="Revision" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Revision level of the message

type.</xs:documentation> </xs:element>

</xs:annotation>

<xs:element name="ReplayDetection" type="ReplayDetectionType"

A-15

minOccurs="0">

<xs:annotation>

to enhance effectiveness of encryption</xs:documentation> </xs:element> </xs:annotation>

<xs:documentation>Use to introduce randomness in the message

<xs:element name="Context" minOccurs="0"> <xs:annotation> <xs:documentation>Intended context for information usage, e.g.

PRODUCTION, TESTING, TRAINING, ...</xs:documentation> </xs:annotation> <xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="PRODUCTION"/> <xs:enumeration value="TESTING"/> <xs:enumeration value="STUDY"/> <xs:enumeration value="DEVELOPMENT"/> <xs:enumeration value="TRAINING"/>

</xs:element>

</xs:simpleType>

</xs:restriction>

<xs:element name="Timestamp" type="xs:dateTime" minOccurs="0"> <xs:annotation> <xs:documentation>Application level relevant time and date for

when this instance of the message type was produced. This is not intended to be used by middleware for message management.</xs:documentation> </xs:element> </xs:annotation>

<xs:element name="Source" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Source system or application that sends the

message</xs:documentation> </xs:element>

</xs:annotation>

<xs:element name="AsyncReplyFlag" type="xs:boolean" minOccurs="0"> <xs:annotation> <xs:documentation>Indicates whether or not reply should be

asynchronous</xs:documentation> </xs:element>

</xs:annotation>

<xs:element name="ReplyAddress" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Address to be used for asynchronous replies,

typically a URL/topic/queue.</xs:documentation> </xs:element> </xs:annotation>

<xs:element name="AckRequired" type="xs:boolean" minOccurs="0"> <xs:annotation>

A-16

is required</xs:documentation> </xs:element>

<xs:documentation>Indicates whether or not an acknowledgement

</xs:annotation> <xs:element name="User" type="UserType" minOccurs="0"> <xs:annotation> <xs:documentation>User information of the

sender</xs:documentation>

</xs:element>

</xs:annotation>

<xs:element name="MessageID" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Unique message ID to be used for

tracking messages</xs:documentation> </xs:element> </xs:annotation>

<xs:element name="CorrelationID" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>ID to be used by applications for

correlating replies</xs:documentation> </xs:element> </xs:annotation>

<xs:element name="Comment" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Optional comment</xs:documentation

</xs:element> maxOccurs="unbounded">

</xs:annotation>

<xs:element name="Property" type="MessageProperty" minOccurs="0" <xs:annotation>

identify information needed for extended routing and filtering capabilities</xs:documentation> </xs:element> maxOccurs="unbounded"/> </xs:annotation>

<xs:documentation>Message properties can be used to

<xs:any namespace="##other" processContents="lax" minOccurs="0"

</xs:complexType>

</xs:sequence>

<xs:element name="Message" type="MessageType"> <xs:annotation> <xs:documentation>Common IEC 61968 Message

Definition</xs:documentation> </xs:element> </xs:annotation>

<xs:complexType name="MessageProperty"> <xs:annotation>

A-17

routing and filtering</xs:documentation> </xs:annotation> <xs:sequence>

<xs:documentation>Message properties can be used for extended

<xs:element name="Name" type="xs:string"/>

<xs:element name="RequestMessage" type="RequestMessageType"> <xs:annotation> <xs:documentation>Request message structure</xs:documentation>

</xs:complexType>

</xs:sequence>

<xs:element name="Value" type="xs:string" minOccurs="0"/>

</xs:element>

</xs:annotation>

<xs:element name="ResponseMessage" type="ResponseMessageType"> <xs:annotation> <xs:documentation>Response message structure</xs:documentation>

</xs:element>

</xs:annotation>

<xs:element name="EventMessage" type="EventMessageType"> <xs:annotation> <xs:documentation>Event message structure</xs:documentation>

<xs:complexType name="MessageType"> <xs:annotation> <xs:documentation>Generic Message Type</xs:documentation>

</xs:element>

</xs:annotation>

</xs:annotation> <xs:sequence>

<xs:element name="Header" type="HeaderType"/>

<xs:element name="Request" type="RequestType" minOccurs="0"/> <xs:element name="Reply" type="ReplyType" minOccurs="0"/> </xs:sequence> <xs:element name="Payload" type="PayloadType" minOccurs="0"/>

</xs:complexType>

<xs:complexType name="RequestMessageType"> <xs:annotation> <xs:documentation>Request Message Type, which will typically result in a

ResponseMessage to be returned. This isn typically used to initiate a transaction or a query request.</xs:documentation> </xs:annotation> <xs:sequence>

<xs:element name="Header" type="HeaderType"/>

<xs:element name="Request" type="RequestType" minOccurs="0"/> </xs:sequence> <xs:element name="Payload" type="PayloadType" minOccurs="0"/>

</xs:complexType>

<xs:complexType name="ResponseMessageType"> <xs:annotation>

A-18

RequestMessage</xs:documentation> </xs:annotation> <xs:sequence>

<xs:documentation>Response MessageType, typically used to reply to a

<xs:element name="Header" type="HeaderType"/> <xs:element name="Reply" type="ReplyType"/> <xs:element name="Payload" type="PayloadType" minOccurs="0"/>

</xs:complexType>

</xs:sequence>

<xs:complexType name="FaultMessageType"> <xs:annotation> <xs:documentation>Fault Messsage Type, which is used in cases where the

incoming message (including the header) can not be parsed</xs:documentation> </xs:complexType> </xs:annotation>

<xs:complexType name="EventMessageType"> <xs:annotation> <xs:documentation>Event Message Type, which is used to indicate a

condition of potential interest.</xs:documentation> </xs:annotation> <xs:sequence>

<xs:element name="Header" type="HeaderType"/>

</xs:complexType>

</xs:sequence>

<xs:element name="Payload" type="PayloadType" minOccurs="0"/>

<xs:complexType name="ErrorType"> <xs:annotation> <xs:documentation>Error Structure</xs:documentation>

</xs:annotation> <xs:sequence>

<xs:element name="code" type="xs:string"> <xs:annotation> <xs:documentation>Application defined error

code</xs:documentation> </xs:element>

</xs:annotation>

<xs:element name="level" minOccurs="0"> <xs:annotation> <xs:documentation>Severity level, e.g. INFORMATIVE, WARNING,

FATAL, CATASTROPHIC</xs:documentation> </xs:annotation> <xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="INFORM"/> <xs:enumeration value="FATAL"/>

<xs:enumeration value="WARNING"/> <xs:enumeration value="CATASTROPHIC"/>

</xs:restriction>

A-19

</xs:element>

</xs:simpleType>

<xs:element name="reason" minOccurs="0"> <xs:annotation> <xs:documentation>Description of the error</xs:documentation>

<xs:element name="details" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Free form detailed text description of

</xs:element>

</xs:annotation>

error</xs:documentation> </xs:element>

</xs:annotation>

<xs:element name="xpath" type="xs:QName" minOccurs="0"> <xs:annotation> <xs:documentation>XPath expression to identify specific XML

element</xs:documentation> </xs:element>

</xs:annotation>

<xs:element name="stackTrace" type="xs:string" minOccurs="0"/>

<xs:element name="Location" type="LocationType" minOccurs="0"/> <xs:element name="operationId" type="xs:integer" minOccurs="0"> <xs:annotation>

<xs:element name="object" type="IdentifiedObject" minOccurs="0"/>

identifier of the Operation for which this reply.result.error is relevant. Thus, it is assumed that this is an error from one of the operations contained in an OperationSet request.</xs:documentation> </xs:element> </xs:annotation>

<xs:documentation>The reply.operationId provides the unique

</xs:complexType>

</xs:sequence>

<xs:complexType name="OptionType"> <xs:annotation> <xs:documentation>Request options</xs:documentation>

</xs:annotation> <xs:sequence>

<xs:element name="name" type="xs:string"/>

</xs:complexType>

</xs:sequence>

<xs:element name="value" type="xs:string" minOccurs="0"/>

<xs:complexType name="LocationType"> <xs:annotation> <xs:documentation>Process location where error was

encountered</xs:documentation> </xs:annotation> <xs:sequence>

<xs:element name="node" type="xs:string" minOccurs="0"> <xs:annotation>

A-20

error occurred</xs:documentation> </xs:element> </xs:annotation>

<xs:documentation>Name of the pipeline/branch/route node where

<xs:element name="pipeline" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Name of the pipeline where error occurred (if

applicable)</xs:documentation> </xs:element> </xs:annotation>

<xs:element name="stage" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Name of the stage where error occurred (if

applicable)</xs:documentation> </xs:element> </xs:annotation>

</xs:complexType>

</xs:sequence>

<xs:complexType name="IdentifiedObject"> <xs:annotation> <xs:documentation>From CIM</xs:documentation>

</xs:annotation> <xs:sequence>

<xs:element name="mRID" minOccurs="0"/>

<xs:element name="Name" type="Name" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="objectType" type="xs:string" minOccurs="0"> <xs:annotation>

object</xs:documentation> </xs:element>

<xs:documentation>CIM class name that classiifies the identified

</xs:annotation>

</xs:complexType>

</xs:sequence>

<xs:complexType name="NameType"> <xs:annotation> <xs:documentation>From CIM</xs:documentation>

</xs:annotation> <xs:sequence>

<xs:element name="name"/>

<xs:element name="description" minOccurs="0"/> minOccurs="0"/>

<xs:element name="NameTypeAuthority" type="NameTypeAuthority"

</xs:complexType>

</xs:sequence>

<xs:complexType name="Name"> <xs:annotation> <xs:documentation>From CIM</xs:documentation>

</xs:annotation>

A-21

<xs:sequence>

<xs:element name="name"/>

</xs:complexType>

</xs:sequence>

<xs:element name="NameType" type="NameType" minOccurs="0"/>

<xs:complexType name="NameTypeAuthority"> <xs:annotation> <xs:documentation>From CIM</xs:documentation>

</xs:annotation> <xs:sequence>

<xs:element name="name"/>

</xs:complexType>

</xs:sequence>

<xs:element name="description" minOccurs="0"/>

<xs:element name="FaultMessage" type="FaultMessageType"/> <xs:element name="adverbTypes"> <xs:simpleType>

</xs:simpleType> </xs:schema> </xs:element>

<xs:restriction base="xs:string"/>

MeterReadings
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:a="http://langdale.com.au/2005/Message#" xmlns:sawsdl="http://www.w3.org/ns/sawsdl" xmlns="http://langdale.com.au/2005/Message#" xmlns:m="http://iec.ch/TC57/2011/MeterReadings#" targetNamespace="http://iec.ch/TC57/2011/MeterReadings#" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="MeterReadings" type="m:MeterReadings"/> <xs:complexType name="MeterReadings"> <xs:sequence> <xs:element name="EndDeviceEventType" type="m:EndDeviceEventType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="MeterReading" type="m:MeterReading" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="ReadingQualityType" type="m:ReadingQualityType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="ReadingType" type="m:ReadingType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="DateTimeInterval" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#DateTimeInterval"> <xs:annotation> <xs:documentation>Interval of date and time.</xs:documentation> </xs:annotation>

A-22

<xs:sequence> <xs:element name="end" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#DateTimeInterval.end"> <xs:annotation> <xs:documentation>End date and time of this interval.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="start" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#DateTimeInterval.start"> <xs:annotation> <xs:documentation>Start date and time of this interval.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="EndDeviceEvent" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#EndDeviceEvent"> <xs:annotation> <xs:documentation>Event detected by a device function associated with end device.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="mRID" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.mRID"> <xs:annotation> <xs:documentation>A Model Authority issues mRIDs. Given that each Model Authority has a unique id and this id is part of the mRID, then the mRID is globally unique.</xs:documentation> <xs:documentation>Global uniqeness is easily achived by using a UUID for the mRID. It is strongly recommended to do this.</xs:documentation> <xs:documentation>For CIMXML data files the mRID is mapped to rdf:ID or rdf:about attributes that identifies CIM object elements.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="createdDateTime" type="xs:dateTime" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ActivityRecord.createdDateTime"> <xs:annotation> <xs:documentation>Date and time this activity record has been created (different from the 'status.dateTime', which is the time of a status change of the associated object, if applicable).</xs:documentation> </xs:annotation> </xs:element> <xs:element name="issuerID" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEvent.issuerID">

A-23

<xs:annotation> <xs:documentation>Unique identifier of the business entity originating an end device control.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="issuerTrackingID" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEvent.issuerTrackingID"> <xs:annotation> <xs:documentation>Identifier assigned by the initiator (e.g. retail electric provider) of an end device control action to uniquely identify the demand response event, text message, or other subject of the control action. Can be used when cancelling an event or text message request or to identify the originating event or text message in a consequential end device event.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="reason" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ActivityRecord.reason"> <xs:annotation> <xs:documentation>Reason for event resulting in this activity record, typically supplied when user initiated.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="severity" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ActivityRecord.severity"> <xs:annotation> <xs:documentation>Severity level of event resulting in this activity record.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="userID" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#EndDeviceEvent.userID"> <xs:annotation> <xs:documentation>(if user initiated) ID of user who initiated this end device event.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="EndDeviceEventDetails" type="m:EndDeviceEventDetail" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEvent.EndDeviceEventDetails"> <xs:annotation> <xs:documentation>All details of this end device event.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="EndDeviceEventType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEvent.EndDeviceEventType">

A-24

<xs:annotation> <xs:documentation>Type of this end device event.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference=""> <xs:attribute name="ref" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="Names" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.Names"> <xs:annotation> <xs:documentation>All names of this identified object.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Name"> <xs:sequence> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Name.name"> <xs:annotation> <xs:documentation>Any free text that name the object.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="NameType" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#Name.NameType"> <xs:annotation> <xs:documentation>Type of this name.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#NameType"> <xs:sequence> <xs:element name="description" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#NameType.description"> <xs:annotation> <xs:documentation>Description of the name type.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameType.name">

A-25

<xs:annotation> <xs:documentation>Name of the name type.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="NameTypeAuthority" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameType.NameTypeAuthority"> <xs:annotation> <xs:documentation>Authority responsible for managing names of this type.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameTypeAuthority"> <xs:sequence> <xs:element name="description" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameTypeAuthority.description"> <xs:annotation> <xs:documentation>Description of the name type authority.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameTypeAuthority.name"> <xs:annotation> <xs:documentation>Name of the name type authority.</xs:documentation> </xs:annotation> </xs:element>

A-26

</xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="status" type="m:Status" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ActivityRecord.status"> <xs:annotation> <xs:documentation>Information on consequence of event resulting in this activity record.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="UsagePoint" type="m:UsagePoint" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEvent.UsagePoint"> <xs:annotation> <xs:documentation>Usage point for which this end device event is reported.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="EndDeviceEventDetail" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#EndDeviceEventDetail"> <xs:annotation> <xs:documentation>Name-value pair, specific to end device events.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEventDetail.name"> <xs:annotation> <xs:documentation>Name.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="value" type="m:StringQuantity" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEventDetail.value"> <xs:annotation> <xs:documentation>Value, including unit information.</xs:documentation>

A-27

</xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="EndDeviceEventType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#EndDeviceEventType"> <xs:annotation> <xs:documentation>Detailed description for an event produced by an end device. Values in attributes allow for creation of recommended codes to be used for identifying end device events as follows: &amp;lt;type&amp;gt;.&amp;lt;domain&amp;gt;.&amp;lt;subDomain&amp;gt;.&amp;lt;eventOrActi on&amp;gt;.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="mRID" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.mRID"> <xs:annotation> <xs:documentation>A Model Authority issues mRIDs. Given that each Model Authority has a unique id and this id is part of the mRID, then the mRID is globally unique.</xs:documentation> <xs:documentation>Global uniqeness is easily achived by using a UUID for the mRID. It is strongly recommended to do this.</xs:documentation> <xs:documentation>For CIMXML data files the mRID is mapped to rdf:ID or rdf:about attributes that identifies CIM object elements.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="domain" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEventType.domain"> <xs:annotation> <xs:documentation>High-level nature of the event. By properly classifying events by a small set of domain codes, a system can more easily run reports based on the types of events that have occurred or been received.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="eventOrAction" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEventType.eventOrAction"> <xs:annotation> <xs:documentation>The most specific part of this event type. It is mainly in the form of a verb that gives action to the event that just occurred.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="subDomain" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEventType.subDomain"> <xs:annotation>

A-28

<xs:documentation>More specific nature of the event, as a further sub-categorisation of 'domain'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="type" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#EndDeviceEventType.type"> <xs:annotation> <xs:documentation>Type of physical device from which the event was created. A value of zero (0) can be used when the source is unknown.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Names" type="m:Name" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.Names"> <xs:annotation> <xs:documentation>All names of this identified object.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="Meter" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-cim15#Meter"> <xs:annotation> <xs:documentation>Physical asset that performs the metering role of the usage poiny. Used for measuring consumption and detection of events.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="mRID" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.mRID"> <xs:annotation> <xs:documentation>A Model Authority issues mRIDs. Given that each Model Authority has a unique id and this id is part of the mRID, then the mRID is globally unique.</xs:documentation> <xs:documentation>Global uniqeness is easily achived by using a UUID for the mRID. It is strongly recommended to do this.</xs:documentation> <xs:documentation>For CIMXML data files the mRID is mapped to rdf:ID or rdf:about attributes that identifies CIM object elements.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Names" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.Names"> <xs:annotation> <xs:documentation>All names of this identified object.</xs:documentation> </xs:annotation>

A-29

<xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Name"> <xs:sequence> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Name.name"> <xs:annotation> <xs:documentation>Any free text that name the object.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="NameType" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#Name.NameType"> <xs:annotation> <xs:documentation>Type of this name.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#NameType"> <xs:sequence> <xs:element name="description" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#NameType.description"> <xs:annotation> <xs:documentation>Description of the name type.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameType.name"> <xs:annotation> <xs:documentation>Name of the name type.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="NameTypeAuthority" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameType.NameTypeAuthority"> <xs:annotation> <xs:documentation>Authority responsible for managing names of this type.</xs:documentation>

A-30

</xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameTypeAuthority"> <xs:sequence> <xs:element name="description" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameTypeAuthority.description"> <xs:annotation> <xs:documentation>Description of the name type authority.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameTypeAuthority.name"> <xs:annotation> <xs:documentation>Name of the name type authority.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="status" type="m:Status" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Asset.status"> <xs:annotation>

A-31

<xs:documentation>Status of this asset.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="MeterReading" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#MeterReading"> <xs:annotation> <xs:documentation>Set of values obtained from the meter.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="isCoincidentTrigger" type="xs:boolean" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#MeterReading.isCoincidentTrigger"> <xs:annotation> <xs:documentation>If true, this meter reading is the meter reading for which other coincident meter readings are requested or provided.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="EndDeviceEvents" type="m:EndDeviceEvent" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-cim15#MeterReading.EndDeviceEvents"> <xs:annotation> <xs:documentation>All end device events associated with this set of measured values.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="IntervalBlocks" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#MeterReading.IntervalBlocks"> <xs:annotation> <xs:documentation>All interval blocks contained in this meter reading.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IntervalBlock"> <xs:sequence> <xs:element name="IntervalReadings" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-cim15#IntervalBlock.IntervalReadings"> <xs:annotation> <xs:documentation>Interval reading contained in this block.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IntervalReading">

A-32

<xs:sequence> <xs:element name="reportedDateTime" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#BaseReading.reportedDateTime"> <xs:annotation> <xs:documentation>(used only when there are detailed auditing requirements) Date and time at which the reading was first delivered to the metering system.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="source" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#BaseReading.source"> <xs:annotation> <xs:documentation>System that originally supplied the reading (e.g., customer, AMI system, handheld reading system, another enterprise system, etc.).</xs:documentation> </xs:annotation> </xs:element> <xs:element name="timeStamp" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#MeasurementValue.timeStamp"> <xs:annotation> <xs:documentation>The time when the value was last updated</xs:documentation> </xs:annotation> </xs:element> <xs:element name="value" type="xs:float" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#BaseReading.value"> <xs:annotation> <xs:documentation>Value of this reading.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ReadingQualities" minOccurs="0" maxOccurs="unbounded"

A-33

sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#BaseReading.ReadingQualities"> <xs:annotation> <xs:documentation>All qualities of this reading.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingQuality"> <xs:sequence> <xs:element name="comment" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingQuality.comment"> <xs:annotation> <xs:documentation>Elaboration on the quality code.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="source" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingQuality.source"> <xs:annotation> <xs:documentation>System acting as the source of the quality code.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="timeStamp" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingQuality.timeStamp"> <xs:annotation> <xs:documentation>Date and time at which the quality code was assigned or ascertained.</xs:documentation> </xs:annotation>

A-34

</xs:element> <xs:element name="ReadingQualityType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingQuality.ReadingQualityType"> <xs:annotation> <xs:documentation>Type of this reading quality.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference=""> <xs:attribute name="ref" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="timePeriod" type="m:DateTimeInterval" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#BaseReading.timePeriod"> <xs:annotation> <xs:documentation>Start and end of the period for those readings whose type has a time attribute such as 'billing', seasonal' or 'forTheSpecifiedPeriod'.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="PendingCalculation" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#IntervalBlock.PendingCalculation"> <xs:annotation> <xs:documentation>Pending conversion to apply to interval reading values contained by this block (after which the resulting reading type is different than the original because it reflects the conversion result).</xs:documentation>

A-35

</xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#PendingCalculation"> <xs:sequence> <xs:element name="multiplyBeforeAdd" type="xs:boolean" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.multiplyBeforeAdd"> <xs:annotation> <xs:documentation>Whether scalars should be applied before adding the 'offset'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="offset" type="xs:integer" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.offset"> <xs:annotation> <xs:documentation>(if applicable) Offset to be added as well as multiplication using scalars.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="scalarDenominator" type="xs:integer" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.scalarDenominator"> <xs:annotation> <xs:documentation>(if scalar is rational number) When 'IntervalReading.value' is multiplied by 'scalarNumerator' and divided by this value, it causes a unit of measure conversion to occur, resulting in the 'ReadingType.unit'.</xs:documentation>

</xs:annotation> </xs:element> <xs:element name="scalarFloat" type="xs:float" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.scalarFloat"> <xs:annotation>

A-36

<xs:documentation>(if scalar is floating number) When multiplied with 'IntervalReading.value', it causes a unit of measure conversion to occur, according to the 'ReadingType.unit'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="scalarNumerator" type="xs:integer" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.scalarNumerator"> <xs:annotation> <xs:documentation>(if scalar is integer or rational number) When the scalar is a simple integer, and this attribute is presented alone and multiplied with 'IntervalReading.value', it causes a unit of measure conversion to occur, resulting in the 'ReadingType.unit'. It is never used in conjunction with 'scalarFloat', only with 'scalarDenominator'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ReadingType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.ReadingType"> <xs:annotation> <xs:documentation>Reading type resulting from this pending conversion.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference=""> <xs:attribute name="ref" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="ReadingType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#IntervalBlock.ReadingType"> <xs:annotation> <xs:documentation>Type information for interval reading values contained in this block.</xs:documentation> </xs:annotation>

A-37

<xs:complexType sawsdl:modelReference=""> <xs:attribute name="ref" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Meter" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#MeterReading.Meter"> <xs:annotation> <xs:documentation>Meter providing this reading.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Meter"> <xs:sequence> <xs:element name="mRID" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#IdentifiedObject.mRID"> <xs:annotation> <xs:documentation>A Model Authority issues mRIDs. Given that each Model Authority has a unique id and this id is part of the mRID, then the mRID is globally unique.</xs:documentation> <xs:documentation>Global uniqeness is easily achived by using a UUID for the mRID. It is strongly recommended to do this.</xs:documentation> <xs:documentation>For CIMXML data files the mRID is mapped to rdf:ID or rdf:about attributes that identifies CIM object elements.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Names" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-cim15#IdentifiedObject.Names"> <xs:annotation> <xs:documentation>All names of this identified object.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Name"> <xs:sequence> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#Name.name"> <xs:annotation>

A-38

<xs:documentation>Any free text that name the object.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="NameType" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-cim15#Name.NameType"> <xs:annotation> <xs:documentation>Type of this name.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameType"> <xs:sequence> <xs:element name="description" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#NameType.description"> <xs:annotation> <xs:documentation>Description of the name type.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#NameType.name"> <xs:annotation> <xs:documentation>Name of the name type.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="NameTypeAuthority" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameType.NameTypeAuthority">

A-39

<xs:annotation> <xs:documentation>Authority responsible for managing names of this type.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#NameTypeAuthority"> <xs:sequence> <xs:element name="description" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameTypeAuthority.description"> <xs:annotation> <xs:documentation>Description of the name type authority.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#NameTypeAuthority.name"> <xs:annotation> <xs:documentation>Name of the name type authority.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element>

A-40

</xs:sequence> </xs:complexType> </xs:element> <xs:element name="status" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Asset.status"> <xs:annotation> <xs:documentation>Status of this asset.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Status"> <xs:sequence> <xs:element name="dateTime" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Status.dateTime"> <xs:annotation> <xs:documentation>Date and time for which status 'value' applies.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="reason" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Status.reason"> <xs:annotation> <xs:documentation>Reason code or explanation for why an object went to the current status 'value'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="remark" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Status.remark"> <xs:annotation> <xs:documentation>Pertinent information regarding the current 'value', as free form text.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="value" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#Status.value">

A-41

<xs:annotation> <xs:documentation>Status value at 'dateTime'; prior status changes may have been kept in instances of activity records associated with the object to which this status applies.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Readings" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#MeterReading.Readings"> <xs:annotation> <xs:documentation>All reading values contained within this meter reading.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Reading"> <xs:sequence> <xs:element name="reason" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Reading.reason"> <xs:annotation> <xs:documentation>Reason for this reading being taken.</xs:documentation> </xs:annotation> <xs:simpleType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingReasonKind"> <xs:restriction base="xs:string"> <xs:enumeration value="billing"> <xs:annotation> <xs:documentation>Inquiry or demand.</xs:documentation> </xs:annotation> </xs:enumeration> <xs:enumeration value="demandReset"/> <xs:enumeration value="inquiry"/>

A-42

<xs:enumeration value="installation"/> <xs:enumeration value="loadManagement"/> <xs:enumeration value="loadResearch"/> <xs:enumeration value="moveIn"/> <xs:enumeration value="moveOut"/> <xs:enumeration value="other"/> <xs:enumeration value="removal"/> <xs:enumeration value="serviceConnect"/> <xs:enumeration value="serviceDisconnect"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="reportedDateTime" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-cim15#BaseReading.reportedDateTime"> <xs:annotation> <xs:documentation>(used only when there are detailed auditing requirements) Date and time at which the reading was first delivered to the metering system.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="source" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#BaseReading.source"> <xs:annotation> <xs:documentation>System that originally supplied the reading (e.g., customer, AMI system, handheld reading system, another enterprise system, etc.).</xs:documentation> </xs:annotation> </xs:element> <xs:element name="timeStamp" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-cim15#MeasurementValue.timeStamp"> <xs:annotation> <xs:documentation>The time when the value was last updated</xs:documentation> </xs:annotation> </xs:element>

A-43

<xs:element name="value" type="xs:float" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#BaseReading.value"> <xs:annotation> <xs:documentation>Value of this reading.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ReadingQualities" type="m:ReadingQuality" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#BaseReading.ReadingQualities"> <xs:annotation> <xs:documentation>All qualities of this reading.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ReadingType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Reading.ReadingType"> <xs:annotation> <xs:documentation>Type information for this reading value.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference=""> <xs:attribute name="ref" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="timePeriod" type="m:DateTimeInterval" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-cim15#BaseReading.timePeriod"> <xs:annotation> <xs:documentation>Start and end of the period for those readings whose type has a time attribute such as 'billing', seasonal' or 'forTheSpecifiedPeriod'.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="UsagePoint" type="m:UsagePoint" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#MeterReading.UsagePoint"> <xs:annotation> <xs:documentation>Usage point from which this meter reading (set of values) has been obtained.</xs:documentation> </xs:annotation> </xs:element>

A-44

<xs:element name="valuesInterval" type="m:DateTimeInterval" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#MeterReading.valuesInterval"> <xs:annotation> <xs:documentation>Date and time interval of the data items contained within this meter reading.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="Name" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-cim15#Name"> <xs:annotation> <xs:documentation>The Name class provides the means to define any number of human readable names for an object. A name is &lt;b&gt;not&lt;/b&gt; to be used for defining inter-object relationships. For inter-object relationships instead use the object identification 'mRID'.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Name.name"> <xs:annotation> <xs:documentation>Any free text that name the object.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="NameType" type="m:NameType" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Name.NameType"> <xs:annotation> <xs:documentation>Type of this name.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="NameType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#NameType"> <xs:annotation> <xs:documentation>Type of name. Possible values for attribute 'name' are implementation dependent but standard profiles may specify types. An enterprise may have multiple IT systems each having its own local name for the same object, e.g. a planning system may have different names from an EMS. An object may also have different names within the same IT system, e.g. localName and aliasName as defined in CIM version 14. Their definitions from CIM14 are</xs:documentation> <xs:documentation>The localName is a human readable name of the object. It is only used with objects organized in a naming hierarchy. localName: A free text name local to a node in a naming hierarchy similar to a file directory structure. A power system related

A-45

naming hierarchy may be: Substation, VoltageLevel, Equipment etc. Children of the same parent in such a hierarchy have names that typically are unique among them.</xs:documentation> <xs:documentation>aliasName: A free text alternate name typically used in tabular reports where the column width is limited.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="name" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#NameType.name"> <xs:annotation> <xs:documentation>Name of the name type.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="PendingCalculation" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#PendingCalculation"> <xs:annotation> <xs:documentation>When present, a scalar conversion that needs to be applied to every IntervalReading.value contained in IntervalBlock. This conversion results in a new associated ReadingType, reflecting the true dimensions of IntervalReading values after the conversion.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="multiplyBeforeAdd" type="xs:boolean" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.multiplyBeforeAdd"> <xs:annotation> <xs:documentation>Whether scalars should be applied before adding the 'offset'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="offset" type="xs:integer" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.offset"> <xs:annotation> <xs:documentation>(if applicable) Offset to be added as well as multiplication using scalars.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="scalarDenominator" type="xs:integer" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.scalarDenominator"> <xs:annotation> <xs:documentation>(if scalar is rational number) When 'IntervalReading.value' is multiplied by 'scalarNumerator' and divided by this value, it causes a unit of measure conversion to occur, resulting in the 'ReadingType.unit'.</xs:documentation> </xs:annotation>

A-46

</xs:element> <xs:element name="scalarFloat" type="xs:float" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.scalarFloat"> <xs:annotation> <xs:documentation>(if scalar is floating number) When multiplied with 'IntervalReading.value', it causes a unit of measure conversion to occur, according to the 'ReadingType.unit'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="scalarNumerator" type="xs:integer" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.scalarNumerator"> <xs:annotation> <xs:documentation>(if scalar is integer or rational number) When the scalar is a simple integer, and this attribute is presented alone and multiplied with 'IntervalReading.value', it causes a unit of measure conversion to occur, resulting in the 'ReadingType.unit'. It is never used in conjunction with 'scalarFloat', only with 'scalarDenominator'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ReadingType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#PendingCalculation.ReadingType"> <xs:annotation> <xs:documentation>Reading type resulting from this pending conversion.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference=""> <xs:attribute name="ref" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="RationalNumber" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#RationalNumber"> <xs:annotation> <xs:documentation>Rational number = 'numerator' / 'denominator'.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="denominator" type="xs:integer" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#RationalNumber.denominator"> <xs:annotation> <xs:documentation>Denominator. Value 1 indicates the number is a simple integer.</xs:documentation> </xs:annotation>

A-47

</xs:element> <xs:element name="numerator" type="xs:integer" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#RationalNumber.numerator"> <xs:annotation> <xs:documentation>Numerator.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="ReadingInterharmonic" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingInterharmonic"> <xs:annotation> <xs:documentation>Interharmonics are represented as a rational number 'numerator' / 'denominator', and harmonics are represented using the same mechanism and identified by 'denominator'=1.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="denominator" type="xs:integer" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingInterharmonic.denominator"> <xs:annotation> <xs:documentation>Interharmonic denominator. Value 0 means not applicable. Value 2 is used in combination with 'numerator'=1 to represent interharmonic 1/2. Finally, value 1 indicates the harmonic of the order specified with 'numerator'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="numerator" type="xs:integer" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingInterharmonic.numerator"> <xs:annotation> <xs:documentation>Interharmonic numerator. Value 0 means not applicable. Value 1 is used in combination with 'denominator'=2 to represent interharmonic 1/2, and with 'denominator'=1 it represents fundamental frequency. Finally, values greater than 1 indicate the harmonic of that order (e.g., 'numerator'=5 is the fifth harmonic).</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="ReadingQuality" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingQuality"> <xs:annotation> <xs:documentation>Quality of a specific reading value or interval reading value. Note that more than one quality may be applicable to a given reading. Typically not used unless problems or unusual conditions occur (i.e., quality for each reading is assumed to be good unless stated otherwise in associated reading quality type). It can also be used with the

A-48

corresponding reading quality type to indicate that the validation has been performed and succedeed.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="comment" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingQuality.comment"> <xs:annotation> <xs:documentation>Elaboration on the quality code.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="source" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingQuality.source"> <xs:annotation> <xs:documentation>System acting as the source of the quality code.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="timeStamp" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingQuality.timeStamp"> <xs:annotation> <xs:documentation>Date and time at which the quality code was assigned or ascertained.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ReadingQualityType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingQuality.ReadingQualityType"> <xs:annotation> <xs:documentation>Type of this reading quality.</xs:documentation> </xs:annotation> <xs:complexType sawsdl:modelReference=""> <xs:attribute name="ref" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="ReadingQualityType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingQualityType"> <xs:annotation> <xs:documentation>Detailed description for a quality of a reading value, produced by an end device or a system. Values in attributes allow for creation of recommended codes to be used for identifying reading value quality codes as follows: &amp;lt;systemId&amp;gt;.&amp;lt;category&amp;gt;.&amp;lt;index&amp;gt;.</xs:documentation> </xs:annotation>

A-49

<xs:sequence> <xs:element name="mRID" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.mRID"> <xs:annotation> <xs:documentation>A Model Authority issues mRIDs. Given that each Model Authority has a unique id and this id is part of the mRID, then the mRID is globally unique.</xs:documentation> <xs:documentation>Global uniqeness is easily achived by using a UUID for the mRID. It is strongly recommended to do this.</xs:documentation> <xs:documentation>For CIMXML data files the mRID is mapped to rdf:ID or rdf:about attributes that identifies CIM object elements.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="category" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingQualityType.category"> <xs:annotation> <xs:documentation>High-level nature of the reading value quality.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="subCategory" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingQualityType.subCategory"> <xs:annotation> <xs:documentation>More specific nature of the reading value quality, as a further sub-categorisation of 'category'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="systemId" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingQualityType.systemId"> <xs:annotation> <xs:documentation>Identification of the system which has declared the issue with the data or provided commentary on the data.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Names" type="m:Name" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.Names"> <xs:annotation> <xs:documentation>All names of this identified object.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="ReadingType" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingType">

A-50

<xs:annotation> <xs:documentation>Detailed description for a type of a reading value. Values in attributes allow for creation of recommended codes to be used for identifying reading value types as follows: &amp;lt;macroPeriod&amp;gt;.&amp;lt;aggregate&amp;gt;.&amp;lt;measuringPeriod&amp;gt;. &amp;lt;accumulation&amp;gt;.&amp;lt;flowDirection&amp;gt;.&amp;lt;commodity&amp;gt;.&amp;l t;measurementKind&amp;gt;.&amp;lt;interharmonic.numerator&amp;gt;.&amp;lt;interharmonic.den ominator&amp;gt;.&amp;lt;argument.numerator&amp;gt;.&amp;lt;argument.denominator&amp;gt;. &amp;lt;tou&amp;gt;.&amp;lt;cpp&amp;gt;.&amp;lt;consumptionTier&amp;gt;.&amp;lt;phases&am p;gt;.&amp;lt;multiplier&amp;gt;.&amp;lt;unit&amp;gt;.&amp;lt;currency&amp;gt;.</xs:documentati on> </xs:annotation> <xs:sequence> <xs:element name="mRID" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.mRID"> <xs:annotation> <xs:documentation>A Model Authority issues mRIDs. Given that each Model Authority has a unique id and this id is part of the mRID, then the mRID is globally unique.</xs:documentation> <xs:documentation>Global uniqeness is easily achived by using a UUID for the mRID. It is strongly recommended to do this.</xs:documentation> <xs:documentation>For CIMXML data files the mRID is mapped to rdf:ID or rdf:about attributes that identifies CIM object elements.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="accumulation" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingType.accumulation"> <xs:annotation> <xs:documentation>Accumulation behaviour of a reading over time, usually 'measuringPeriod', to be used with individual endpoints (as opposed to 'macroPeriod' and 'aggregate' that are used to describe aggregations of data from individual endpoints).</xs:documentation> </xs:annotation> </xs:element> <xs:element name="aggregate" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingType.aggregate"> <xs:annotation> <xs:documentation>Salient attribute of the reading data aggregated from individual endpoints. This is mainly used to define a mathematical operation carried out over 'macroPeriod', but may also be used to describe an attribute of the data when the 'macroPeriod' is not defined.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="commodity" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingType.commodity"> <xs:annotation>

A-51

<xs:documentation>Commodity being measured.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="consumptionTier" type="xs:integer" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingType.consumptionTier"> <xs:annotation> <xs:documentation>In case of common flat-rate pricing for power, in which all purchases are at a given rate, 'consumptionTier'=0. Otherwise, the value indicates the consumption tier, which can be used in conjunction with TOU or CPP pricing.</xs:documentation> <xs:documentation>Consumption tier pricing refers to the method of billing in which a certain "block" of energy is purchased/sold at one price, after which the next block of energy is purchased at another price, and so on, all throughout a defined period. At the start of the defined period, consumption is initially zero, and any usage is measured against the first consumption tier ('consumptionTier'=1). If this block of energy is consumed before the end of the period, energy consumption moves to be reconed against the second consumption tier ('consumptionTier'=2), and so on. At the end of the defined period, the consumption accumulator is reset, and usage within the 'consumptionTier'=1 restarts.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="cpp" type="xs:integer" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingType.cpp"> <xs:annotation> <xs:documentation>Critical peak period (CPP) bucket the reading value is attributed to. Value 0 means not applicable. Even though CPP is usually considered a specialised form of time of use 'tou', this attribute is defined explicitly for flexibility.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="currency" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingType.currency"/> <xs:element name="flowDirection" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingType.flowDirection"> <xs:annotation> <xs:documentation>Flow direction for a reading where the direction of flow of the commodity is important (for electricity measurements this includes current, energy, power, and demand).</xs:documentation> </xs:annotation> </xs:element> <xs:element name="macroPeriod" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingType.macroPeriod"> <xs:annotation> <xs:documentation>Time period of interest that reflects how the reading is viewed or captured over a long period of time.</xs:documentation> </xs:annotation>

A-52

</xs:element> <xs:element name="measurementKind" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingType.measurementKind"> <xs:annotation> <xs:documentation>Identifies "what" is being measured, as refinement of 'commodity'. When combined with 'unit', it provides detail to the unit of measure. For example, 'energy' with a unit of measure of 'kWh' indicates to the user that active energy is being measured, while with 'kVAh' or 'kVArh', it indicates apparent energy and reactive energy, respectively. 'power' can be combined in a similar way with various power units of measure: Distortion power ('distortionVoltAmperes') with 'kVA' is different from 'power' with 'kVA'.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="measuringPeriod" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingType.measuringPeriod"> <xs:annotation> <xs:documentation>Time attribute inherent or fundamental to the reading value (as opposed to 'macroPeriod' that supplies an "adjective" to describe aspects of a time period with regard to the measurement). It refers to the way the value was originally measured and not to the frequency at which it is reported or presented. For example, an hourly interval of consumption data would have value 'hourly' as an attribute. However in the case of an hourly sampled voltage value, the meterReadings schema would carry the 'hourly' interval size information.</xs:documentation> <xs:documentation>It is common for meters to report demand in a form that is measured over the course of a portion of an hour, while enterprise applications however commonly assume the demand (in kW or kVAr) normalised to 1 hour. The sytem that receives readings directly from the meter therefore must perform this transformation before publishing readings for use by the other enterprise systems. The scalar used is chosen based on the block size (not any sub-interval size).</xs:documentation> </xs:annotation> </xs:element> <xs:element name="multiplier" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingType.multiplier"/> <xs:element name="phases" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingType.phases"/> <xs:element name="tou" type="xs:integer" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingType.tou"> <xs:annotation> <xs:documentation>Time of use (TOU) bucket the reading value is attributed to. Value 0 means not applicable.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="unit" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingType.unit"/>

A-53

<xs:element name="argument" type="m:RationalNumber" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingType.argument"> <xs:annotation> <xs:documentation>Argument used to introduce numbers into the unit of measure description where they are needed (e.g., 4 where the measure needs an argument such as CEMI(n=4)). Most arguments used in practice however will be integers (i.e., 'denominator'=1).</xs:documentation> <xs:documentation>Value 0 in 'numerator' and 'denominator' means not applicable.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="interharmonic" type="m:ReadingInterharmonic" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#ReadingType.interharmonic"> <xs:annotation> <xs:documentation>Indication of a "harmonic" or "interharmonic" basis for the measurement. Value 0 in 'numerator' and 'denominator' means not applicable.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Names" type="m:Name" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.Names"> <xs:annotation> <xs:documentation>All names of this identified object.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="Status" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-cim15#Status"> <xs:annotation> <xs:documentation>Current status information relevant to an entity.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="dateTime" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Status.dateTime"> <xs:annotation> <xs:documentation>Date and time for which status 'value' applies.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="reason" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Status.reason"> <xs:annotation> <xs:documentation>Reason code or explanation for why an object went to the current status 'value'.</xs:documentation>

A-54

</xs:annotation> </xs:element> <xs:element name="remark" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Status.remark"> <xs:annotation> <xs:documentation>Pertinent information regarding the current 'value', as free form text.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="value" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Status.value"> <xs:annotation> <xs:documentation>Status value at 'dateTime'; prior status changes may have been kept in instances of activity records associated with the object to which this status applies.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="UsagePoint" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#UsagePoint"> <xs:annotation> <xs:documentation>Logical or physical point in the network to which readings or events may be attributed. Used at the place where a physical or virtual meter may be located; however, it is not required that a meter be present.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="mRID" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#IdentifiedObject.mRID"> <xs:annotation> <xs:documentation>A Model Authority issues mRIDs. Given that each Model Authority has a unique id and this id is part of the mRID, then the mRID is globally unique.</xs:documentation> <xs:documentation>Global uniqeness is easily achived by using a UUID for the mRID. It is strongly recommended to do this.</xs:documentation> <xs:documentation>For CIMXML data files the mRID is mapped to rdf:ID or rdf:about attributes that identifies CIM object elements.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Names" type="m:Name" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#IdentifiedObject.Names"> <xs:annotation> <xs:documentation>All names of this identified object.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence>

A-55

</xs:complexType> <xs:simpleType name="StringQuantity" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#StringQuantity"> <xs:annotation> <xs:documentation>Quantity with string value (when it is not important whether it is an integral or a floating point number) and associated unit information.</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:schema>

A-56

Appendix B: Requirements Tested


CIM 61968-9 v1.0 clause 5.4.2.3 - The GetMeterReading message shall contain a valid subset of information data items specified in IEC 61968-9 part9: MeterReading message type. CIM 61968-9 v1.0 clause 5.4.2.3 - The ReplyMeterReading message shall contain a valid subset of information data items specified in IEC 61968-9 part9: MeterReading (need copy of) message type. SCE Use Case B1 v1.2- REQ0056 - The AMI System shall have the ability to provide meter reads on demand. SCE Use Case B1 v1.2- REQ0212 - The Meter Data Unification System shall have the ability to issue an on demand read request to retrieve missing/incomplete data for any period(s) present in the Meter (i.e. at least 45 days), for all Meters with missing/incomplete data. See http://www.smartgridipedia.org/images/7/7a/ARCHB1USECASEv12050106.pdf AMI ENT Requirement REQ-B1001-Request an on-demand meter reading. AMI ENT Requirement- REQ-B1002-Receive an on-demand meter reading. AMI ENT Requirement- REQ-B1003-Send an on-demand meter reading. Off nominal and error requirements Use Case B1 REQ0220 - The Meter Data Unification System shall record the source of all meter data. Use Case B1 REQ0223 - The AMI Head End shall be able to re-transmit ondemand requests to the Meter after a configurable time with no response.

B-1

The Electric Power Research Institute Inc., (EPRI, www.epri.com) conducts research and development relating to the generation, delivery and use of electricity for the benefit of the public. An independent, nonprofit organization, EPRI brings together its scientists and engineers as well as experts from academia and industry to help address challenges in electricity, including reliability, efficiency, health, safety and the environment. EPRI also provides technology, policy and economic analyses to drive long-range research and development planning, and supports research in emerging technologies. EPRIs members represent more than 90 percent of the electricity generated and delivered in the United States, and international participation extends to 40 countries. EPRIs principal offices and laboratories are located in Palo Alto, Calif.; Charlotte, N.C.; Knoxville, Tenn.; and Lenox, Mass. Together...Shaping the Future of Electricity

Program: IntelliGrid

2011 Electric Power Research Institute (EPRI), Inc. All rights reserved. Electric Power Research Institute, EPRI, and TOGETHER...SHAPING THE FUTURE OF ELECTRICITY are registered service marks of the Electric Power Research Institute, Inc.

1024444

Electric Power Research Institute 3420 Hillview Avenue, Palo Alto, California 94304-1338PO Box 10412, Palo Alto, California 94303-0813 USA 800.313.3774 650.855.2121askepri@epri.comwww.epri.com

Potrebbero piacerti anche