Sunteți pe pagina 1din 82

CIM On Demand Meter Read Interoperability Test Procedure

ECITP 2.03
Product ID Number

CIM Scheduled Meter Read Interoperability Test Procedure


ECITP 2.03 Product ID Number Technical Update, May 2011

EPRI Project Manager J. Simmins

ELECTRIC POWER RESEARCH INSTITUTE 3420 Hillview Avenue, Palo Alto, California 94304-1338 PO Box 10412, Palo Alto, California 94303-0813 USA 800.313.3774 650.855.2121 askepri@epri.com www.epri.com

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. THE FOLLOWING ORGANIZATION(S) UNDER CONTRACT TO EPRI, PREPARED THIS REPORT EnerNex

This is an EPRI Technical Update report. A Technical Update report is intended as an informal report of continuing research, a meeting, or a topical study. It is not a final EPRI technical report.

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 2010 Electric Power Research Institute, Inc. All rights reserved.

ACKNOWLEDGMENTS
The following organization(s) under contract to EPRI, prepared this report: EnerNex 620 Mabry Hood Road Suite 300 Knoxville, TN 37932 Principal Investigator K. Stefferud EnerNex 620 Mabry Hood Road Suite 300 Knoxville, TN 37932 Principal Investigator B. Muschlitz Boreas Group 730 S. Elizabeth St. Denver, Colorado 80209 Principal Investigator R. Sarfi This report describes research sponsored by the Electric Power Research Institute (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: CIM On Demand Meter Read Interoperability Test Procedure: ECITP 2.01. EPRI, Palo Alto, CA: 2011 <Product ID Number>.

iv

ABSTRACT
The abstract is a required brief summary of the research report. It highlights the objectives of the reported research. It briefly describes the steps taken to conduct the work and summarizes its results in a general manner and potential applications, if any. The abstract will be a public document available on epri.com. It must not contain any confidential, proprietary or trade secret information belonging to EPRI or to any other party, or any information subject to Export Control. Limit text to one page in length. The abstract should not exceed 250 words. Apply Body Text style.

vi

CONTENTS
1 BACKGROUND............................................................................................................................. 1 2 DEMONSTRATION PLAN............................................................................................................ 1 3 INTERFACE DESCRIPTION......................................................................................................... 1 4 TEST DESCRIPTION.................................................................................................................... 1 5 DETAILED STEPS........................................................................................................................ 1 CIS Test Steps......................................................................................................................... 1 MDMSTest Steps..................................................................................................................... 2 AMI Head EndTest Steps........................................................................................................ 3 6 TEST TECHNICAL INFORMATION............................................................................................. 1 Test Set Up and Verification.................................................................................................... 1 Test Invocation......................................................................................................................... 1 Cisco VPN Installation and Set Up.................................................................................... 1 Provide Connection Data for Consumers VLAN ............................................................... 2 Schedule Test.................................................................................................................... 2 Execute Test ..................................................................................................................... 2 Test XSDs................................................................................................................................ 2 Test data.................................................................................................................................. 2 1)GetMeterReadings.......................................................................................................... 2 2)ReplyMeterReadings...................................................................................................... 3 Test results.............................................................................................................................. 4 WSDLs..................................................................................................................................... 1 GetTemplate...................................................................................................................... 1 SendReceiveReply Template............................................................................................ 3 XSDs........................................................................................................................................ 7

vii

Message XSD.................................................................................................................... 7 MeterReadings................................................................................................................. 21

viii

LIST OF FIGURES
FIGURE 1-1 UNITS UNDER TEST (UUT).................................................................................... 1 FIGURE 2-2 EPRI PART 9 CIM TEST PLAN............................................................................... 1 FIGURE 3-3 ECITP 2.01 METER MESSAGE SEQUENCE FLOW DIAGRAM............................ 2

ix

LIST OF TABLES
TABLE 5-1TEST STEPS FOR CIS............................................................................................... 1 TABLE 5-2 TEST STEPS FOR MDMS ........................................................................................ 2

1
BACKGROUND
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 Figure1 -1. Actual meters, if available, may be used in the test system.

Test System Validate MeterReadings Test Coord. Procedures Operator Simulator

MR-MDM + MR-RMR
Meter Simulator

Systems Under Test


CreatemeterReadings

or MR-RMR
AMI Network
CreatedMeterReadings

CS-CSRV

Enterprise Network

Test System Item(s) Tested Item used in test

Figure 1-1 Units Under Test (UUT)

2
DEMONSTRATION PLAN
The On Demand Meter Read Test Procedure is one of the set of EPRI CIM demonstration tests. The overall set of demonstration tests is shown in the Figure 1-1 Units Under Test (UUT)The goal of the EPRI demonstration tests is to show system-to-system interoperability using IEC standard 61968 messages.
custom Test Plans EPRI CIM Part-9 Master Test Plan

flow

flow

flow

flow

flow

Scheduled Meter Reading

On Demand M eter Read

Local Area Outage Detected by Multiple Meters

Tampering Detection

Remote Disconnect/Reconnect

Requirement: T he i nteroperable utility system shall be able to command scheduled m eter reads.

Requirement: T he interoperabl e utility system shall be able to command an on-demand meter read.

Requirement: T he interoperable utility system shall be able to detect area outages using "last gasp" messages from multiple meters.

Requirem ent: The interoperable utility system shall be able to notify the utility when a meter has detected a tamper appempt.

Requirement: T he interoperable utility system shall be able to perform remote reconnections.

Requirement: The interoperabl e utility system shall be able to perform remote disconnections.

Figure 2-2 EPRI Part 9 CIM Test Plan

3
INTERFACE DESCRIPTION
The system interfaces are shown in Figure 3-1 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 M 2.03 On Demand Meter Read Normal Conformance

Part 8 Customer Service (CSRV) CIS

Part 9 Meter Operations (MR-MOP) Meter Data Management MDMS GET (MeterReading)

Part 9 Meter System (MS) AMI Head End

GET (MeterReading)

read meter() REPLY (MeterReading) REPLY (MeterReading)

GET (MeterReading)

read meter() REPLY (MeterReading)

GET (MeterReading) REPLY (MeterReading)

(from Actors)

(from Actors)

(from Actors)

Figure 3-3 ECITP 2.01 Meter Message Sequence Flow Diagram

4
TEST DESCRIPTION
The ability to schedule meter reads from a CIS (or similar system) to an MDMS or Head End (or similar system) is validated for the systems under test. Standard IEC 61968 part 9 meter messages to/from the Meter Data Management System (MDMS) and from/to the Customer Information System (CIS) are used to 1) schedule meter reads for a specific time and 2) read meter usage and billing data for multiple meters. 1) The MeterReadSchedule message is sent from the CIS/other system to the MDMS to request meter usage data for a scheduled meter read. The Universal Modeling Language (UML) content of the MeterReadSchedule message is shown above in Figure 3-1. The required IEC 61968 part 9 eXtensible Markup Language (XML) Schema Definition (XSD) is used to send the MeterReadSchedule message.

2) The CreatedMeterReading is sent from the AMI meter/simulator to the MDMS and onto the CIS.

The required IEC 61968 part 9 XSD is used to send the CreatedMeterReading message. See Appendix A for more details on the XSDs and to obtain a copy IEC Standard 61968 part 9 required for this test.

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

CIS Test Steps


Table 5-1Test Steps for CIS
Step # 1 IEC 61968 version 10v30, MeterReading XSD Ref. # Source Component CIS (source) Destination Component Meter or meter simulator, via the MDMS Head-end Request an on-demand meter read from at least one meter. Pass/Fail Detailed Step Pass/Fail

AMI Meter/ simulated meter Head-end

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.

Source or source via MDMS

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

Pass/Fa

Step #

Ref. #

Source Component

Destination Component

Detailed Step 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

MDMSTest Steps
Table 5-2 Test Steps for MDMS
Step # 1 IEC 61968 version 10v30, MeterReading XSD Ref. # Source Component CIS (source) Destination Component MDMS Request an on-demand meter read from at least one meter. Pass/Fail Detailed Step Pass/Fail

AMI Meter/ simulated meter Head-end

Head-end

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. Pass/Fail

MDMS

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.

Step #

Ref. #

Source Component

Destination Component

Detailed Step 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

AMI Head EndTest Steps


Table 5-3 Test Steps for AMI Head End
Step # 1 IEC 61968 version 10v30, MeterReading XSD Ref. # Source Component CIS (source) Destination Component MDMS Request an on-demand meter read from at least one meter. Detailed Step Pass/Fail

AMI Meter/ simulated meter Head-end

Head-end

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.

Pass/Fail

MDMS

Pass/Fail

Head-end

CIS

Verify CIS receives the MeterReadings message from the MDMS using CIM test procedure MV-01 message verification. Record

Pass/Fail

Step #

Ref. #

Source Component

Destination Component

Detailed Step 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

6
TEST TECHNICAL INFORMATION
A Cisco VPN to connect a virtual LAN will be used to perform the test procedure dry runs which will demonstrate and validate the test procedures, but other security and access methods are also encouraged. Test Set Up and Verification The scripting tool to be used was soapUI (free version available, best in field, Windows/Linux versions) it includes working examples for each interface. soapUI has been found easy to script and test with, and no code will need to be written.1 Other test systems or tools could also be used. Test Invocation The sample meter scheduled read messages will be sent between actual or simulated OMS and MDMS systems. A single system will be tested first, with multiple systems participating later. On Demand read messages will be generated with the Consumers Energy meter simulation which will allow a multi-system end-to-end test of m scheduled read messages.

Cisco VPN Installation and Set Up To access the Consumers virtual LAN (VLAN), the Cisco VPN client must be installed first. 1. Download the Cisco VPN client from the EPRI FTP server. 2. Currently 32 bit and 64 bit Windows VPN clients are available. 3. The FTP server URL is: ftp://ftp.epri.com 4. FTP download instructions, if needed, are located at 5. http://inside/it_tech_services/FTP_Server.htm 6. FTP user account name is: xxxxxxxx 7. FTP password is: xxxxxxxx 8. Install the Cisco VPN client on a Windows platform machine. 9. Request a VPN account from Consumers by contacting John Simmins at jsimmins@epri.com. 10. Test the VPN connection to the Consumers server using the account provided.
1

soapUI is also expected to simplify test support for EPRI, as the tool can be used to verify connectivity and provide examples to all interested parties. soapUI can be used as a stand-alone tool to verify message content and format. The instructions provided here are to run using the Consumers server to provide interconnectivity with other vendor systems.

Provide Connection Data for Consumers VLAN 1. Please provide the connection information required as in the following table approximately 5 working days before the desired test date.

Schedule Test
1.

Coordinate test scheduling with John Simmins at jsimmins@epri.com.

Execute Test 1. 2. 3. 4. Start system(s) under test. Verify connectivity of systems Execute test steps as defined in section 5 for each system under test. 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. 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"?> <!--Sample XML file generated by XMLSpy v2005 rel. 3 U (http://www.altova.com)--> <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" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.iec.ch/TC57/2011/GetMeterReadingsMessage GetMeterReadingsMessage.xsd"> <Header>

<msg:Verb>get</msg:Verb> <msg:Noun>MeterReadings</msg:Noun> <msg:Context>TESTING</msg:Context> <msg:Timestamp>2001-12-17T09:30:47.0Z</msg:Timestamp> <msg:Source>CIS-001</msg:Source> <msg:AsyncReplyFlag>false</msg:AsyncReplyFlag> <msg:AckRequired>false</msg:AckRequired> <msg:MessageID>ABC-123</msg:MessageID> <msg:CorrelationID></msg:CorrelationID> <msg:Comment>On-Demand read request</msg:Comment> </Header> <Request> <ID>String</ID> <obj2:GetMeterReadings> <obj2:EndDevice> <obj2:mRID>3dc53ee5-777e-50b4-8699-a1c224f45f3d</obj2:mRID> <obj2:Names> <obj2:name>Meter23253</obj2:name> </obj2:Names> </obj2:EndDevice> </obj2:GetMeterReadings> </Request> </GetMeterReadings>

2)

ReplyMeterReadings

<?xml version="1.0" encoding="UTF-8"?> <!--Sample XML file generated by XMLSpy v2005 rel. 3 U (http://www.altova.com)--> <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" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.iec.ch/TC57/2011/GetMeterReadingsMessage GetMeterReadingsMessage.xsd"> <Header> <msg:Verb>reply</msg:Verb> <msg:Noun>MeterReadings</msg:Noun> <msg:Context>TESTING</msg:Context> <msg:Timestamp>2001-12-17T09:30:47.0Z</msg:Timestamp> <msg:Source>HE-001</msg:Source> <msg:AsyncReplyFlag>false</msg:AsyncReplyFlag> <msg:MessageID>HE-12345</msg:MessageID>

<msg:CorrelationID>ABC-123</msg:CorrelationID> <msg:Comment>On-Demand meter read reasponse</msg:Comment> </Header> <Reply> <msg:Result>OK</msg:Result> </Reply> <Payload> <obj1:MeterReadings> <obj1:MeterReading> <obj1:isCoincidentTrigger>false</obj1:isCoincidentTrigger> <obj1:Meter> <obj1:mRID>3dc53ee5-777e-50b4-8699a1c224f45f3d</obj1:mRID> <obj1:Names> <obj1:name>Meter23253</obj1:name> </obj1:Names> </obj1:Meter> <obj1:Readings> <obj1:reason>inquiry</obj1:reason> <obj1:reportedDateTime>2001-1217T09:30:47.0Z</obj1:reportedDateTime> <obj1:source>HE-001</obj1:source> <obj1:timeStamp>2001-12-17T09:30:47.0Z</obj1:timeStamp> <obj1:value>314159</obj1:value> <obj1:ReadingType ref="kWh"/> </obj1:Readings> </obj1:MeterReading> </obj1:MeterReadings> </Payload> </MeterReadingsResponseMessage>

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

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:tns="http://iec.ch/TC57/2011/{Information_Object_Name}" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" 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 targetNamespace="http://www.iec.ch/TC57/2011/Get{Information_Object_Name}Mess age" elementFormDefault="qualified"> <xs:include schemaLocation="xsd/Get{Information_Object_Name}Message.xsd"/> </xs:schema> </wsdl:types> <!-- Message Definitions --> <wsdl:message name="Get{Information_Object_Name}RequestMessage"> <wsdl:part name="Get{Information_Object_Name}RequestMessage" element="infoMessage:Get{Information_Object_Name}"/> </wsdl:message> <wsdl:message name="ResponseMessage"> <wsdl:part name="ResponseMessage" element="infoMessage: {Information_Object_Name}ResponseMessage"/> </wsdl:message>

<wsdl:message name="FaultMessage"> <wsdl:part name="FaultMessage" element="infoMessage: {Information_Object_Name}FaultMessage"/> </wsdl:message> <!-- Port Definitions --> <wsdl:portType name="Get{Information_Object_Name}_Port"> <wsdl:operation name="Get{Information_Object_Name}"> <wsdl:input name="Get{Information_Object_Name}Request" message="tns:Get{Information_Object_Name}RequestMessage"/> <wsdl:output 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"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="Get{Information_Object_Name}"> <soap:operation soapAction="http://iec.ch/TC57/2011/Get{Information_Object_Name}/Get{Informat ion_Object_Name}" style="document"/> <wsdl:input name="Get{Information_Object_Name}Request"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="Get{Information_Object_Name}Response"> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="Get{Information_Object_Name}Fault"> <soap:fault name="Get{Information_Object_Name}Fault" use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="Get{Information_Object_Name}"> <wsdl:port name="Get{Information_Object_Name}_Port" binding="tns:Get{Information_Object_Name}_Binding"> <soap:address location="http://iec.ch/TC57/2011/Get{Information_Object_Name}"/> </wsdl:port> </wsdl:service> </wsdl:definitions>

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:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" 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}Message"> <wsdl:types> <xs:schema targetNamespace="http://www.iec.ch/TC57/2011/ {Information_Object_Name}Message" 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"> <wsdl:part name="Created{Information_Object_Name}EventMessage" element="infoMessage:Created{Information_Object_Name}"/> </wsdl:message> <wsdl:message name="Changed{Information_Object_Name}EventMessage"> <wsdl:part name="Changed{Information_Object_Name}EventMessage" element="infoMessage:Changed{Information_Object_Name}"/> </wsdl:message> <wsdl:message name="Closed{Information_Object_Name}EventMessage"> <wsdl:part name="Closed{Information_Object_Name}EventMessage" element="infoMessage:Closed{Information_Object_Name}"/> </wsdl:message> <wsdl:message name="Canceled{Information_Object_Name}EventMessage">

<wsdl:part name="Canceled{Information_Object_Name}EventMessage" element="infoMessage:Canceled{Information_Object_Name}"/> </wsdl:message> <wsdl:message name="Deleted{Information_Object_Name}EventMessage"> <wsdl:part name="Deleted{Information_Object_Name}EventMessage" element="infoMessage:Deleted{Information_Object_Name}"/> </wsdl:message> <wsdl:message name="ResponseMessage"> <wsdl:part name="ResponseMessage" element="infoMessage: {Information_Object_Name}ResponseMessage"/> </wsdl:message> <wsdl:message name="FaultMessage"> <wsdl:part name="FaultMessage" element="infoMessage: {Information_Object_Name}FaultMessage"/> </wsdl:message> <!-- Port Definitions --> <wsdl:portType name="{Information_Object_Name}_Port"> <wsdl:operation name="Created{Information_Object_Name}"> <wsdl:input name="Created{Information_Object_Name}Event" message="tns:Created{Information_Object_Name}EventMessage"/> <wsdl:output name="Created{Information_Object_Name}Response" message="tns:ResponseMessage"/> <wsdl:fault name="Created{Information_Object_Name}Fault" message="tns:FaultMessage"/> </wsdl:operation> <wsdl:operation name="Changed{Information_Object_Name}"> <wsdl:input name="Changed{Information_Object_Name}Event" message="tns:Changed{Information_Object_Name}EventMessage"/> <wsdl:output name="Changed{Information_Object_Name}Response" message="tns:ResponseMessage"/> <wsdl:fault name="Changed{Information_Object_Name}Fault" message="tns:FaultMessage"/> </wsdl:operation> <wsdl:operation name="Canceled{Information_Object_Name}"> <wsdl:input name="Canceled{Information_Object_Name}Event" message="tns:Canceled{Information_Object_Name}EventMessage"/> <wsdl:output name="Canceled{Information_Object_Name}Response" message="tns:ResponseMessage"/> <wsdl:fault name="Canceled{Information_Object_Name}Fault" message="tns:FaultMessage"/> </wsdl:operation>

<wsdl:operation name="Closed{Information_Object_Name}"> <wsdl:input name="Closed{Information_Object_Name}Event" message="tns:Closed{Information_Object_Name}EventMessage"/> <wsdl:output name="Closed{Information_Object_Name}Response" message="tns:ResponseMessage"/> <wsdl:fault name="Closed{Information_Object_Name}Fault" message="tns:FaultMessage"/> </wsdl:operation> <wsdl:operation name="Deleted{Information_Object_Name}"> <wsdl:input name="Deleted{Information_Object_Name}Event" message="tns:Deleted{Information_Object_Name}EventMessage"/> <wsdl:output 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"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="Created{Information_Object_Name}"> <soap:operation soapAction="http://iec.ch/TC57/2011/ {Information_Object_Name}/Created{Information_Object_Name}" style="document"/> <wsdl:input name="Created{Information_Object_Name}Event"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="Created{Information_Object_Name}Response"> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="Created{Information_Object_Name}Fault"> <soap:fault name="Created{Information_Object_Name}Fault" use="literal"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="Changed{Information_Object_Name}"> <soap:operation soapAction="http://iec.ch/TC57/2011/ {Information_Object_Name}/Changed{Information_Object_Name}" style="document"/> <wsdl:input name="Changed{Information_Object_Name}Event"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="Changed{Information_Object_Name}Response"> <soap:body use="literal"/> </wsdl:output>

<wsdl:fault name="Changed{Information_Object_Name}Fault"> <soap:fault name="Changed{Information_Object_Name}Fault" use="literal"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="Canceled{Information_Object_Name}"> <soap:operation soapAction="http://iec.ch/TC57/2011/ {Information_Object_Name}/Canceled{Information_Object_Name}" style="document"/> <wsdl:input name="Canceled{Information_Object_Name}Event"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="Canceled{Information_Object_Name}Response"> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="Canceled{Information_Object_Name}Fault"> <soap:fault name="Canceled{Information_Object_Name}Fault" use="literal"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="Closed{Information_Object_Name}"> <soap:operation soapAction="http://iec.ch/TC57/2011/ {Information_Object_Name}/Closed{Information_Object_Name}" style="document"/> <wsdl:input name="Closed{Information_Object_Name}Event"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="Closed{Information_Object_Name}Response"> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="Closed{Information_Object_Name}Fault"> <soap:fault name="Closed{Information_Object_Name}Fault" use="literal"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="Deleted{Information_Object_Name}"> <soap:operation soapAction="http://iec.ch/TC57/2011/ {Information_Object_Name}/Deleted{Information_Object_Name}" style="document"/> <wsdl:input name="Deleted{Information_Object_Name}Event"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="Deleted{Information_Object_Name}Response"> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="Deleted{Information_Object_Name}Fault"> <soap:fault name="Deleted{Information_Object_Name}Fault" use="literal"/> </wsdl:fault>

</wsdl:operation> </wsdl:binding> <wsdl:service name="{Send | Receive | Reply} {Information_Object_Name}"> <wsdl:port name="{Information_Object_Name}_Port" binding="tns:{Information_Object_Name}_Binding"> <soap:address location="http://iec.ch/TC57/2011/{Send | Receive | Reply}{Information_Object_Name}"/> </wsdl:port> </wsdl:service> </wsdl:definitions>

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" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0.0"> <xs:complexType name="RequestType"> <xs:annotation> <xs:documentation>Request type definition</xs:documentation> </xs:annotation> <xs:sequence> <xs:annotation> <xs:documentation>Request package is typically used to supply parameters for 'get' requests</xs:documentation> </xs:annotation> <xs:element name="StartTime" type="xs:dateTime" minOccurs="0"> <xs:annotation> <xs:documentation>Start time of interest</xs:documentation> </xs:annotation> </xs:element> <xs:element name="EndTime" type="xs:dateTime" minOccurs="0"> <xs:annotation> <xs:documentation>End time of interest</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Option" type="OptionType" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>Request type specialization</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ID" type="xs:string" minOccurs="0" maxOccurs="unbounded">

<xs:annotation> <xs:documentation>Object ID for request</xs:documentation> </xs:annotation> </xs:element> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>This can be a CIM profile defined as an XSD with a CIM-specific namespace</xs:documentation> </xs:annotation> </xs:any> </xs:sequence> </xs:complexType> <xs:complexType name="ReplyType"> <xs:annotation> <xs:documentation>Reply type definition</xs:documentation> </xs:annotation> <xs:sequence> <xs:annotation> <xs:documentation>Reply package is used to confirm success or report errors</xs:documentation> </xs:annotation> <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:simpleType> </xs:element> <xs:element name="Error" type="ErrorType" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>Reply details describing one or more errors</xs:documentation> </xs:annotation> </xs:element> <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:annotation> </xs:element> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="operationId" type="xs:integer" minOccurs="0"> <xs:annotation>

<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:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="PayloadType"> <xs:annotation> <xs:documentation>Payload container</xs:documentation> </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:annotation> </xs:any> <xs:element name="OperationSet" type="OperationSet" minOccurs="0"/> <xs:element name="Compressed" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>For compressed and/or binary, uuencoded payloads</xs:documentation> </xs:annotation> </xs:element> </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:annotation> </xs:element> </xs:sequence> </xs:complexType> <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:annotation> </xs:element> <xs:element name="enforceTransactionalIntegrity" type="xs:boolean" minOccurs="0">

<xs:annotation> <xs:documentation>Set to TRUE when all of the Operation.##other messages must be processed successfully or else the entire message set must be rolled back. If omitted, assume TRUE.</xs:documentation> </xs:annotation> </xs:element> <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 OperationSet) of the Operation for the purpose of reference in subsequent messages (e.g. OperationSet reply).</xs:documentation> </xs:annotation> </xs:element> <xs:element name="noun" minOccurs="0"> <xs:annotation> <xs:documentation>The payload.operation.##other also identifies the noun, this element is optionally supplied to simplify processing.</xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:string"> <!-- insert nouns from parts 1-8 here --> <!-- nouns from "619589_MeterReadingAndControl_2ed-working-draft-20110412.docx" --> <xs:enumeration value="AuxiliaryAgreementConfig"/> <xs:enumeration value="ComModuleConfig"/> <xs:enumeration value="CustomerAccountConfig"/> <xs:enumeration value="CustomerAgreementConfig"/> <xs:enumeration value="CustomerConfig"/> <xs:enumeration value="CustomerMeterDataSet"/> <xs:enumeration value="EndDeviceConfig"/> <xs:enumeration value="EndDeviceControls"/> <xs:enumeration value="EndDeviceEvents"/> <xs:enumeration value="EndDeviceFirmware"/>

10

<xs:enumeration value="EndDeviceGroups"/> value="MasterDataLinkageConfig"/> value="MeterConfig"/> value="MeterReadings"/> value="MeterReadSchedule"/> value="MeterServiceRequest"/> value="MeterServiceRequests"/> value="PricingStructureConfig"/> value="ReceiptRecord"/> value="ServiceCategoryConfig"/> value="ServiceLocationConfig"/> value="ServiceSupplierConfig"/> value="TransactionRecord"/> value="UsagePointConfig"/> value="UsagePointGroups"/> value="UsagePointLocationConfig"/> 12 here" --> <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <!-- insert nouns parts 10-

</xs:restriction> </xs:simpleType> </xs:element> <xs:element name="verb" minOccurs="0"> <xs:annotation> <xs:documentation>"create", "delete", "change", etc.</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"/>

11

<xs:enumeration value="created"/> value="close"/> value="closed"/> value="delete"/> value="deleted"/> value="get"/> value="show"/> value="reply"/> value="subscribe"/> value="unsubscribe"/> value="execute"/> value="report"/> value="stop"/> value="terminate"/> <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration <xs:enumeration

</xs:restriction> </xs:simpleType> </xs:element> <xs:element name="elementOperation" type="xs:boolean" default="false" minOccurs="0"> <xs:annotation> <xs:documentation>TRUE if the verb is operating at the 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:element> <xs:any namespace="##other" processContents="skip" minOccurs="0"> <xs:annotation> <xs:documentation>An XML payload which carries a CIM profile defined using an XSD in a profile-specific namespate. Individual 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:annotation> </xs:any> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>

12

<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:element name="Created" type="xs:dateTime"/> </xs:sequence> </xs:complexType> <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:annotation> </xs:element> <xs:element name="Organization" type="xs:string"> <xs:annotation> <xs:documentation>User parent organization identifier</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="HeaderType"> <xs:annotation> <xs:documentation>Message header type definition</xs:documentation> </xs:annotation> <xs:sequence> <xs:annotation> <xs:documentation>Message header contains control and descriptive information about the message.</xs:documentation> </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="created"/> <xs:enumeration value="close"/> <xs:enumeration value="closed"/>

13

<xs:enumeration value="delete"/> <xs:enumeration value="deleted"/> <xs:enumeration value="get"/> <xs:enumeration value="show"/> <xs:enumeration value="reply"/> <xs:enumeration value="subscribe"/> <xs:enumeration value="unsubscribe"/> <xs:enumeration value="execute"/> <xs:enumeration value="report"/> <xs:enumeration value="stop"/> <xs:enumeration value="terminate"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="Noun"> <xs:annotation> <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:simpleType> <xs:restriction base="xs:string"> <!-- insert nouns from parts 1-8 here --> <!-- nouns from "61958-9_MeterReadingAndControl_2edworking-draft-20110412.docx" --> <xs:enumeration value="AuxiliaryAgreementConfig"/> <xs:enumeration value="ComModuleConfig"/> <xs:enumeration value="CustomerAccountConfig"/> <xs:enumeration value="CustomerAgreementConfig"/> <xs:enumeration value="CustomerConfig"/> <xs:enumeration value="CustomerMeterDataSet"/> <xs:enumeration value="EndDeviceConfig"/> <xs:enumeration value="EndDeviceControls"/> <xs:enumeration value="EndDeviceEvents"/> <xs:enumeration value="EndDeviceFirmware"/> <xs:enumeration value="EndDeviceGroups"/> <xs:enumeration value="MasterDataLinkageConfig"/> <xs:enumeration value="MeterConfig"/> <xs:enumeration value="MeterReadings"/> <xs:enumeration value="MeterReadSchedule"/> <xs:enumeration value="MeterServiceRequest"/> <xs:enumeration value="MeterServiceRequests"/> <xs:enumeration value="PricingStructureConfig"/> <xs:enumeration value="ReceiptRecord"/> <xs:enumeration value="ServiceCategoryConfig"/>

14

<xs:enumeration value="ServiceLocationConfig"/> value="ServiceSupplierConfig"/> <xs:enumeration <xs:enumeration value="TransactionRecord"/> <xs:enumeration value="UsagePointConfig"/> <xs:enumeration value="UsagePointGroups"/> <xs:enumeration

value="UsagePointLocationConfig"/> <!-- insert nouns parts 10-12 here" --> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="Revision" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Revision level of the message type.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ReplayDetection" type="ReplayDetectionType" minOccurs="0"> <xs:annotation> <xs:documentation>Use to introduce randomness in the message to enhance effectiveness of encryption</xs:documentation> </xs:annotation> </xs:element> <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="DEVELOPMENT"/> <xs:enumeration value="STUDY"/> <xs:enumeration value="TRAINING"/> </xs:restriction> </xs:simpleType> </xs:element> <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:annotation> </xs:element> <xs:element name="Source" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Source system or application that sends the message</xs:documentation> </xs:annotation> </xs:element>

15

<xs:element name="AsyncReplyFlag" type="xs:boolean" minOccurs="0"> <xs:annotation> <xs:documentation>Indicates whether or not reply should be asynchronous</xs:documentation> </xs:annotation> </xs:element> <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:annotation> </xs:element> <xs:element name="AckRequired" type="xs:boolean" minOccurs="0"> <xs:annotation> <xs:documentation>Indicates whether or not an acknowledgement is required</xs:documentation> </xs:annotation> </xs:element> <xs:element name="User" type="UserType" minOccurs="0"> <xs:annotation> <xs:documentation>User information of the sender</xs:documentation> </xs:annotation> </xs:element> <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:annotation> </xs:element> <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:annotation> </xs:element> <xs:element name="Comment" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Optional comment</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Property" type="MessageProperty" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>Message properties can be used to identify information needed for extended routing and filtering capabilities</xs:documentation> </xs:annotation> </xs:element> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>

16

</xs:complexType> <xs:element name="Message" type="MessageType"> <xs:annotation> <xs:documentation>Common IEC 61968 Message Definition</xs:documentation> </xs:annotation> </xs:element> <xs:complexType name="MessageProperty"> <xs:annotation> <xs:documentation>Message properties can be used for extended routing and filtering</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="Name" type="xs:string"/> <xs:element name="Value" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:element name="RequestMessage" type="RequestMessageType"> <xs:annotation> <xs:documentation>Request message structure</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ResponseMessage" type="ResponseMessageType"> <xs:annotation> <xs:documentation>Response message structure</xs:documentation> </xs:annotation> </xs:element> <xs:element name="EventMessage" type="EventMessageType"> <xs:annotation> <xs:documentation>Event message structure</xs:documentation> </xs:annotation> </xs:element> <xs:complexType name="MessageType"> <xs:annotation> <xs:documentation>Generic Message Type</xs:documentation> </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:element name="Payload" type="PayloadType" minOccurs="0"/> </xs:sequence> </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:element name="Payload" type="PayloadType" minOccurs="0"/> </xs:sequence>

17

</xs:complexType> <xs:complexType name="ResponseMessageType"> <xs:annotation> <xs:documentation>Response MessageType, typically used to reply to a RequestMessage</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="Header" type="HeaderType"/> <xs:element name="Reply" type="ReplyType"/> <xs:element name="Payload" type="PayloadType" minOccurs="0"/> </xs:sequence> </xs:complexType> <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:annotation> </xs:complexType> <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:element name="Payload" type="PayloadType" minOccurs="0"/> </xs:sequence> </xs:complexType> <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:annotation> </xs:element> <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="WARNING"/> <xs:enumeration value="FATAL"/> <xs:enumeration value="CATASTROPHIC"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="reason" minOccurs="0"> <xs:annotation>

18

<xs:documentation>Description of the error</xs:documentation> </xs:annotation> </xs:element> <xs:element name="details" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Free form detailed text description of error</xs:documentation> </xs:annotation> </xs:element> <xs:element name="xpath" type="xs:QName" minOccurs="0"> <xs:annotation> <xs:documentation>XPath expression to identify specific XML element</xs:documentation> </xs:annotation> </xs:element> <xs:element name="stackTrace" type="xs:string" minOccurs="0"/> <xs:element name="Location" type="LocationType" minOccurs="0"/> <xs:element name="object" type="IdentifiedObject" minOccurs="0"/> <xs:element name="operationId" type="xs:integer" minOccurs="0"> <xs:annotation> <xs:documentation>The reply.operationId provides the unique 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:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="OptionType"> <xs:annotation> <xs:documentation>Request options</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="value" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <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> <xs:documentation>Name of the pipeline/branch/route node where error occurred</xs:documentation> </xs:annotation> </xs:element> <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:annotation>

19

</xs:element> <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:annotation> </xs:element> </xs:sequence> </xs:complexType> <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> <xs:documentation>CIM class name that classiifies the identified object</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <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"/> <xs:element name="NameTypeAuthority" type="NameTypeAuthority" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="Name"> <xs:annotation> <xs:documentation>From CIM</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="name"/> <xs:element name="NameType" type="NameType" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="NameTypeAuthority"> <xs:annotation> <xs:documentation>From CIM</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="name"/> <xs:element name="description" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:element name="FaultMessage" type="FaultMessageType"/>

20

<xs:element name="adverbTypes"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> </xs:schema> >

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> <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>

21

<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-schema-cim15#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-schema-cim15#EndDeviceEvent.issuerID"> <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">

22

<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"> <xs:annotation> <xs:documentation>Type of this end device event.</xs:documentation>

23

</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-schema-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-schema-cim15#NameType"> <xs:sequence> <xs:element name="description" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#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>

24

<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/CIMschema-cim15#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-schema-cim15#NameTypeAuthority"> <xs:sequence> <xs:element name="description" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#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-schema-cim15#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>

25

</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-schema-cim15#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-schema-cim15#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-schema-cim15#EndDeviceEventDetail.value"> <xs:annotation> <xs:documentation>Value, including unit information.</xs:documentation> </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>

26

<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;eventOrAction&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-schema-cim15#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> <xs:documentation>More specific nature of the event, as a further sub-categorisation of 'domain'.</xs:documentation> </xs:annotation> </xs:element>

27

<xs:element name="type" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#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/CIM-schemacim15#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> <xs:complexType sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#Name">

28

<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-schema-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-schema-cim15#NameType"> <xs:sequence> <xs:element name="description" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#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/CIMschema-cim15#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-schema-cim15#NameTypeAuthority"> <xs:sequence>

29

<xs:element name="description" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#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-schema-cim15#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> <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/CIMschema-cim15#MeterReading"> <xs:annotation> <xs:documentation>Set of values obtained from the meter.</xs:documentation>

30

</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/CIM-schemacim15#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-schema-cim15#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/CIM-schemacim15#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"> <xs:sequence> <xs:element name="reportedDateTime" type="xs:dateTime" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#BaseReading.reportedDateTime"> <xs:annotation>

31

<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/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-schemacim15#BaseReading.value"> <xs:annotation> <xs:documentation>Value of this reading.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ReadingQualities" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#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-schema-cim15#ReadingQuality"> <xs:sequence> <xs:element name="comment" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#ReadingQuality.comment">

32

<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-schema-cim15#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="">

33

<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/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="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> </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>

34

<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> <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>

35

<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-schema-cim15#IntervalBlock.ReadingType"> <xs:annotation> <xs:documentation>Type information for interval reading values contained in this block.</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="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>

36

<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-schemacim15#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>

37

<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/CIMschema-cim15#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-schema-cim15#NameTypeAuthority.description"> <xs:annotation> <xs:documentation>Description of the name type authority.</xs:documentation> </xs:annotation>

38

</xs:element> <xs:element name="name" type="xs:string" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#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" 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-schemacim15#Status.dateTime"> <xs:annotation> <xs:documentation>Date and time for which status 'value' applies.</xs:documentation> </xs:annotation> </xs:element>

39

<xs:element name="reason" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schemacim15#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-schemacim15#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-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:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Readings" minOccurs="0" maxOccurs="unbounded" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#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">

40

<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"/> <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/CIM-schemacim15#BaseReading.reportedDateTime"> <xs:annotation>

41

<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/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-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-schema-cim15#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>

42

</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-schema-cim15#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> <xs:element name="valuesInterval" type="m:DateTimeInterval" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#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/CIM-schemacim15#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 interobject relationships. For inter-object relationships instead use the object identification 'mRID'.</xs:documentation> </xs:annotation> <xs:sequence>

43

<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/CIMschema-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 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">

44

<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-schema-cim15#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-schema-cim15#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>

45

<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-schema-cim15#RationalNumber.denominator"> <xs:annotation> <xs:documentation>Denominator. Value 1 indicates the number is a simple integer.</xs:documentation> </xs:annotation> </xs:element> <xs:element name="numerator" type="xs:integer" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#RationalNumber.numerator"> <xs:annotation> <xs:documentation>Numerator.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType>

46

<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 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-schema-cim15#ReadingQuality.comment"> <xs:annotation>

47

<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-schema-cim15#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> <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>

48

<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-schema-cim15#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-schema-cim15#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/CIMschema-cim15#ReadingType"> <xs:annotation>

49

<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;acc umulation&amp;gt;.&amp;lt;flowDirection&amp;gt;.&amp;lt;commodity&amp;gt;.&amp;lt;measurementKin d&amp;gt;.&amp;lt;interharmonic.numerator&amp;gt;.&amp;lt;interharmonic.denominator&amp;gt;.&amp;l t;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&amp;gt;.&amp;lt;multiplier&amp;gt;.&amp;lt; unit&amp;gt;.&amp;lt;currency&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="accumulation" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#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>

50

<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-schema-cim15#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-schema-cim15#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-schema-cim15#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>

51

</xs:annotation> </xs:element> <xs:element name="measurementKind" type="xs:string" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#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-schema-cim15#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"/>

52

<xs:element name="argument" type="m:RationalNumber" minOccurs="0" sawsdl:modelReference="http://iec.ch/TC57/2010/CIM-schema-cim15#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>

53

<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" 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/CIMschema-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>

54

</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> </xs:complexType> <xs:simpleType name="StringQuantity" sawsdl:modelReference="http://iec.ch/TC57/2010/CIMschema-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>

55

A
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 on-demand requests to the Meter after a configurable time with no response.

Export Control Restrictions Access to and use of EPRI Intellectual Property is granted with the specific understanding and requirement that responsibility for ensuring full compliance with all applicable U.S. and foreign export laws and regulations is being undertaken by you and your company. This includes an obligation to ensure that any individual receiving access hereunder who is not a U.S. citizen or permanent U.S. resident is permitted access under applicable U.S. and foreign export laws and regulations. In the event you are uncertain whether you or your company may lawfully obtain access to this EPRI Intellectual Property, you acknowledge that it is your obligation to consult with your companys legal counsel to determine whether this access is lawful. Although EPRI may make available on a case-by-case basis an informal assessment of the applicable U.S. export classification for specific EPRI Intellectual Property, you and your company acknowledge that this assessment is solely for informational purposes and not for reliance purposes. You and your company acknowledge that it is still the obligation of you and your company to make your own assessment of the applicable U.S. export classification and ensure compliance accordingly. You and your company understand and acknowledge your obligations to make a prompt report to EPRI and the appropriate authorities regarding any access to or use of EPRI Intellectual Property hereunder that may be in violation of applicable U.S. or foreign export laws or regulations.

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 reliability, and challenges efficiency, in electricity, safety drive including and the health, to

environment. EPRI also provides technology, policy economic in analyses emerging long-range EPRIs research and development planning, and supports research technologies. 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. TogetherShaping the Future of Electricity

2010 Electric Power Research Institute (EPRI), Inc. All rights reserved. Electric Power Research Institute, EPRI, and TOGETHERSHAPING THE FUTURE OF ELECTRICITY are registered service marks of the Electric Power Research Institute, Inc. 10xxxxx

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

S-ar putea să vă placă și