Mapping ICCP and OPC UA

This section describes how Oracle Utilities LEC Server exposes ICCP monitoring and control information using an OPC UA interface.

On this page:

ICCP Service Modeling

ICCP communication consists of the following data exchange patterns:

  • Writes: The ICCP client writes to the ICCP server.
  • Solicited Read: The server replies to a client request.
  • Unsolicited Periodic Reporting: The server periodically sends data to the client.
  • Unsolicited Exception Reporting: The server sends data that has changed within a period of time.
  • Unsolicited Event Reporting: The server sends data based on client-defined criteria.

ICCP conformance blocks define groups for what and how to exchange data.

ICCP Block Description

Block 1

Periodic System Data: Status points, analog points, quality flags, timestamp, change of value counter. ICCP transfers Block 1 data using Solicited Read as well as Unsolicited Periodic Reporting.

Block 2

Extended Data Set Condition Monitoring: Status points, analog points, quality flags, time stamp, and change-of-value (COV) counter. ICCP exchanges Block 2 data using Solicited Read as well as Unsolicited Exception Reporting.

Block 3

Not supported

Block 4

Information Messages: ICCP exchanges simple text and binary files using Unsolicited Exception Reporting.

Block 5

Device Control: Device control requests include on/off, trip/close, raise/lower as well as setting and clearing digital setpoints. Block 5 includes mechanisms for interlocked controls and select-before-operate methods. ICCP exchanges Block 5 data using Writes as well as Unsolicited Periodic and Exception Reporting.

Block 6

Not supported

Block 7

Event Reporting: ICCP provides Reporting completion status for a Block 5 device control.

Block 8

Additional User Objects: ICCP provides scheduling, accounting, outage, and plant information.

Block 9

Not supported

Back to Top

Default ICCP Mapping Exposed by a Local OPC UA Server

For OPC UA, an ICCP folder is exposed under the root Objects folder on the LEC Server machine.

Image of root Object folder layout

While ICCP is the default name for the root of ICCP data, this OPC UA folder name is the name of the configuration database file. Although only point values and change-of-value (COV) variables are shown above, you can configure variables for individual ICCP Quality tags by modifying the default batch file.

Back to Top

ICCP/OPC UA Mapping for Data from Each ICCP Conformance Block

This section shows how an LEC Server instance, acting as an LEC IFE, maps ICCP to OPC UA types for each ICCP conformance block. Blocks 1 and 2 include the PointTypes, which are REAL, STATE, and DISCRETE, as well as the Quality bits, Timestamp, and COV data. Block 4 includes ICCP data that is defined by the Message attribute, and Blocks 5 and 7 are defined by the ICCP Control and Report attributes, respectively.

Table 3 shows the OPC UA mappings for the data that is supported in each ICCP conformance block.

ICCP Block ICCP Attribute ICCP Attribute Values Default OPC UA Type Mapping

Blocks 1 & 2

PointType (REAL,STATE,DISCRETE)

 

 

Blocks 1 & 2

PointType= REAL

PointRealValue

Float is defined as a 32-bit floating-point number with an eight-bit exponent.

Blocks 1 & 2

PointState= STATE

PointStateValue

Int32 is defined as a signed 32-bit integer.

Blocks 1 & 2

PointState=DISCRETE

PointDiscreteValue

Int32

Blocks 1 & 2

Quality

See the section called Quality Bits in LEC Configuration Manager for an explanation of the representation of quality bits.

See the Mapping Quality Bit Values from ICCP to OPC UA Status Names and States for Block 1 Data table.

 

 

 

 

 

Blocks 1 & 2

Quality.Validity

  • 0 = Valid
  • 1 = Held
  • 2 = Suspect
  • 3 = Invalid
Blocks 1 & 2

Quality.CurrentSource

  • 0 = Telemetered
  • 1 = Calculated
  • 2 = Entered
  • 3 = Estimated
Blocks 1 & 2

Quality.NormalValue

  • 0 = Normal
  • 1 = Abnormal
Blocks 1 & 2

Quality.TimeStampQuality

  • 0 = Valid
  • 1 = Invalid
Blocks 1 & 2

Quality.State

  • 0 = Between
  • 1 = Off
  • 2 =On
  • 3 = Invalid
Blocks 1 & 2

TimeStamp

32-bit integer representing Universal Time Coordinated (UTC) in seconds since midnight January 1,

1970 00:00:00 in

Greenwich, England and optionally a 16-bit integer for the number of milliseconds elapsed within the current second

ICCP time if available, if not, LEC Server’s host machine time Regardless of the source of the timestamp, LEC Server converts it into an OPC UA timestamp

Blocks 1 & 2

COV

16-bit unsigned integer that holds the change-of- value counter.

COV is exposed as a two-item OPC UA array, where the first item is the usual point information, and the second item is a Uint16 COV. Uint16 is an unsigned 16-bit integer.

Block 4 (not used as part of ICCP control)

Message

An octet string of 8 bits for binary data or characters.

Four-element, comma-separated string-type variable, where the elements are respectively the InfoReference, the LocalReference, the MessageId, and the message buffer.

Block 5 Control

See the OPC UA Control over ICCP Devices

For information on tagging, see the Setting and Clearing Tags section.

 

Block 7

Report

See the OPC UA Control over ICCP Devices section.

 

Block 8

Not supported

Not supported Not supported

Back to Top

Quality Bits in LEC Configuration Manager

The easiest way to see the ICCP quality bits returned for ICCP Block 1 and 2 data is to use the Node Monitor in LEC Configuration Manager. The following image is an example of the information that you can read from Processor nodes within the Node Monitor.

Image of an example of the information that you can read from Processor nodes within the Node Monitor

In the preceding image, a Data_RealQ value has the floating point value 122.026 and a Quality byte of 00000000.

00 00 00

0

0

Good

Valid

Telemetered

Normal Value

Normal Timestamp

In the preceding image, a Data_StateQ value has a Quality byte of 10000010.

10 00 00

1

0

On

Valid

Telemetered

Abnormal Value

Normal Timestamp

State is shown in the first pair of bits if the bit string represents a State value.

Bits 00 01

10

11

Meaning

Between

Off

On

Invalid

Validity is shown in the second pair of bits.

Bits 00 01

10

11

Meaning

Good or Valid

Held

Suspect

Bad or Invalid

Current Source is shown the third pair of bits.

Bits 00 01

10

11

Meaning

Telemetered

Calculated

Entered

Estimated

Normal or Abnormal Value is shown in the next single bit.

Bits 0 1
Meaning

Telemetered

Calculated

Valid or Invalid Timestamp is shown in the last single bit.

Bits 0 1
Meaning

Telemetered

Calculated

Back to Top

Mapping Quality Bit Values from ICCP to OPC UA Status Names and States for Block 1 Data

LEC Server matches incoming ICCP Quality bit values to the outgoing OPC UA status name and OPC UA state value if the incoming value is a State PointType. These Quality flags are returned with the ICCP Real, Discrete, and State PointTypes. Table 5 shows the outgoing OPC UA status names and state values that map to the ICCP Quality flags, State, Validity, Normal Value, and TimeStampQuality.

No Problems

ICCP State ICCP Validity ICCP CurrentSource ICCP Normal Value ICCP TimeStamp Quality OPC UA Status Name OPC UA State Value

0, 1, 2, 3

0

0

0

0 or 1

Good

Do not set state

Normal Value Problem

ICCP State ICCP Validity ICCP CurrentSource ICCP Normal Value ICCP TimeStamp Quality OPC UA Status Name OPC UA State Value

0, 1, 2, 3

0

0

1

0 or 1

UncertainEngineerin gUnitsExceeded

Do not set state

Current Source Problems

ICCP State ICCP Validity ICCP CurrentSource ICCP Normal Value ICCP TimeStamp Quality OPC UA Status Name OPC UA State Value
0, 1, 2, 3 0

1

0 or 1 0 or 1

GoodEdited

Do not set state
0, 1, 2, 3 0

2

0 or 1 0 or 1

GoodLocalOverride

Do not set state
0, 1, 2, 3 0

3

0 or 1 0 or 1

GoodEdited

Do not set state

State Problems

ICCP State ICCP Validity ICCP CurrentSource ICCP Normal Value ICCP TimeStamp Quality OPC UA Status Name OPC UA State Value

0

0

0, 1, 2, or 3 0 or 1 0 or 1

Uncertain

Do not set state

3

0

0, 1, 2, or 3 0 or 1 0 or 1

UncertainEngineerin gUnitsExceeded

Do not set state

Validity Problems

ICCP State ICCP Validity ICCP CurrentSource ICCP Normal Value ICCP TimeStamp Quality OPC UA Status Name OPC UA State Value
0, 1, 2, 3

1

0, 1, 2, or 3 0 or 1 0 or 1

UncertainLastUsableValue

Do not set state
0, 1, 2, 3

2

0, 1, 2, or 3 0 or 1 0 or 1

Uncertain

Do not set state
0, 1, 2, 3

3

0, 1, 2, or 3 0 or 1 0 or 1

BadUnexpectedError

Do not set state

Transfer State Values

ICCP State ICCP Validity ICCP CurrentSource ICCP Normal Value ICCP TimeStamp Quality OPC UA Status Name OPC UA State Value

0

0

0, 1, 2, or 3 0 or 1 0 or 1 Do not set state

0

1

1

0, 1, 2, or 3 0 or 1 0 or 1 Do not set state

1

2

2

0, 1, 2, or 3 0 or 1 0 or 1 Do not set state

2

3

3

0, 1, 2, or 3 0 or 1 0 or 1 Do not set state

3

Back to Top

Mapping OPC UA Status Names and States to ICCP Quality Bit Values for Block 1 Data

LEC Server matches an incoming OPC status name and transfer state value to the outgoing ICCP Quality bit values and the State value if the incoming value is the State PointType. Table 5 shows the outgoing ICCP quality bit values, State, Validity, Normal Value, and TimeStampQuality that map to the incoming OPC status names and transfer state values.

No Problems

OPC UA Status Name OPC UA State Value State Validity Current Source Normal Value TimeStamp Quality ICCP Description
Good 0, 1, 2, or 3 Don’t set 0 0 0 0 ICCP_GoodQuality

Current Source Problem

OPC UA Status Name OPC UA State Value State Validity Current Source Normal Value TimeStamp Quality ICCP Description
GoodEdited 0, 1, 2, or 3 Don’t set 0 2 0 0 ICCP_Entered
GoodLocalOverride 0, 1, 2, or 3 Don’t set 0 2 0 0 ICCP_Entered

Normal Value Problem

OPC UA Status Name OPC UA State Value State Validity Current Source Normal Value TimeStamp Quality ICCP Description
UncertainEngineering 0, 1, 2, or 3 Don’t set 0 0 1 0 ICCP_AbnormalValue

Validity Problem

OPC UA Status Name OPC UA State Value State Validity Current Source Normal Value TimeStamp Quality ICCP Description
UncertainLastUsableValue 0, 1, 2, or 3 Don’t set 1 0 0 0 ICCP_Held
Uncertain 0, 1, 2, or 3 Don’t set 2 0 0 0 ICCP_Suspect
Bad 0, 1, 2, or 3 Don’t set 3 0 0 0 ICCP_NotValid
BadUnexpectedError 0, 1, 2, or 3 Don’t set 3 0 0 0 ICCP_NotValid
BadWaitingForInitial 0, 1, 2, or 3 Don’t set Don’t set Don’t set Don’t set Don’t set Do not pass data

Transfer State Values

OPC UA Status Name OPC UA State Value State Validity Current Source Normal Value TimeStamp Quality ICCP Description
Any incoming status 0 0 Don’t set Don’t set Don’t set Don’t set  
Any incoming status 1 1 Don’t set Don’t set Don’t set Don’t set  
Any incoming status 2 2 Don’t set Don’t set Don’t set Don’t set  
Any incoming status 3 3 Don’t set Don’t set Don’t set Don’t set  

Default Values

OPC UA Status Name OPC UA State Value State Validity Current Source Normal Value TimeStamp Quality ICCP Description
DEFAULT_GOOD 0, 1, 2, or 3 Don’t set 0 0 0 0  
DEFAULT_UNCERTAIN 0, 1, 2, or 3 Don’t set 2 0 0 0  
DEFAULT_BAD 0, 1, 2, or 3 Don’t set 3 0 0 0  

Back to Top

Mapping of ICCP Measurement Data Types to OPC UA Data Types for Block 1 Data

The following table shows how LEC Server maps ICCP (Block 1) measurement data types to equivalent OPC UA data types.

ICCP Data Type Meaning OPC UA Data Type Mapping
Data_State Discrete 2-bit value OPC UA UInt32
Data_StateQ Discrete 2-bit value + 6 ICCP Quality bits OPC UA UInt32 with ICCP Quality reflected in the OPC UA Status
Data_StateQTimeTag Discrete 2-bit value + ICCP Quality bits + Timestamp OPC UA UInt32 with ICCP Quality reflected in the OPC UA Status
Data_StateExtended Discrete 2-bit value + ICCP Quality bits + COV Two element OPC UA array type, where the first element is ICCP Quality, which is reflected in the OPC UA Status, and the second element is the Uint32 COV
Data_StateTimeTagExtended Discrete 2-bit value + ICCP Quality bits + Extended timestamp OPC UA UInt32 with ICCP Quality reflected in the OPC UA Status
Data_Discrete Integer value 32-bit signed OPC UA Int32
Data_DiscreteQ Integer value 32-bit signed + ICCP Quality bits OPC UA Int32 with ICCP Quality reflected in the OPC UA Status
Data_DiscreteQTimeTag Integer value 32-bit signed + ICCP Quality + Timestamp OPC UA Int32 with ICCP Quality reflected in the OPC UA Status
Data_DiscreteExtended Integer value 32-bit signed + ICCP Quality bits + COV Two element OPC UA array type, where the first element is ICCP Quality, and the second element is the Uint32 COV
Data_DiscreteTimeTagExtended Integer value 32-bit signed + ICCP Quality bits + Extended timestamp OPC UA Int32 with ICCP Quality reflected in the OPC UA Status
Data_Real Float 32 OPC UA Float
Data_RealQ Float 32 + ICCP Quality bits OPC UA Float with ICCP Quality reflected in the OPC UA Status
Data_RealQTimeTag Float 32 + ICCP Quality bits + Timestamp OPC UA Float with ICCP Quality reflected in the OPC UA Status
Data_RealExtended Float 32 + ICCP Quality bits + Current Source + COV Two element OPC UA array type, where the first element is ICCP Quality, and the second element is the Uint32 COV
Data_RealTimeTagExtended Float 32 + ICCP Quality bits + Current Source + Extended timestamp OPC UA Float with ICCP Quality reflected in OPC UA Status

Back to Top

Mapping of ICCP Control and Tag Data Types to OPC Data Types for Block 5 Data

Table 7 shows how LEC Server maps ICCP (Block 5) command, setpoint, and tag data types to equivalent OPC UA data types.

Block 5 Controls and Tags ICCP Data Type OPC UA Data Type Mapping
Command 16-bit integer OPC UA Int32
Setpoint 32-bit integer or Floating point OPC UA Int32 OPC UA Float
Tag A data structure containing three strings for tag kind, armed, and comment. A ByteString containing three comma-separated fields: tag kind, armed, and comment

See the section of this document called Setting and Clearing Tags for more information on the specific tag fields.

Mapping between Returned ICCP Status Names and OPC UA Status Names for Block 5 Data

The mapping between ICCP status names and OPC UA status names allows the application’s OPC UA server to see device control results. ICCP controls (Block 5) have no quality bits, but when an ICCP client receives an OPC UA device control, the ICCP client returns an MMS status name and number.

LEC Server maps these MMS status names and numbers to a 32-bit integer (shown in hex) that represents an OPC UA status name. If there is no mapping for an MMS status name, LEC Server gives it the default OPC UA status name BadUnknownResponse. The following table shows the OPC UA number that represents each of the MMS status names and codes returned by ICCP.

32-bit Integer returned by LEC Server in hex OPC UA Status Name for returned MMS Status NameC MMS Status Name returned by ICCP MMS Status Code returned by ICCP
0 Good SUCCESS -1
0x803F0000 BadObjectDeleted INVALIDATED 0
0x808B0000 BadDeviceFailure FAULT 1
0x80040000 BadResourceUnavailable UNAVAILABLE 2
0x801F0000 BadUserAccessDenied DENIED 3
0x80340000 BadNodeIdUnknown UNDEFINED 4
0x80640000 BadSourceNodeIdInvalid INVALID_ADDRESS 5
0x80110000 BadDataTypeIdUnknown TYPE_UNSUPPORTED 6
0x80740000 BadTypeMismatch TYPE_INCONSISTENT 7
0x80620000 BadNodeAttributesInvalid ATTRIBUTE_INCONSISTENT 8
0x803D0000 BadNotSupported ACCESS_UNSUPPORTED 9
0x803E0000 BadNotFound NON_EXISTENT 10
0x80850000 BadRequestTimeout TIMEOUT 11

Back to Top

Mapping between OPC UA Status Codes and ICCP Access Results for Block 5 Data

The mapping between OPC status codes and ICCP access results allows the ICCP server to see device control results. LEC Server provides a mapping between each OPC UA status name and each MMS status name in the file StandardOpcToIccp.csv. You can change these mappings by editing this file that is in the directory C: or D:\ProgramData\LiveEnergyConnect\Config.

Since there are far fewer MMS status numbers/names than OPC UA status names, more than one OPC UA status name has to be mapped to a single MMS status name. If an OPC UA name is not mapped to an MMS status name, LEC Server will map the OPC UA status name to the MMS status name as shown in the DEFAULT row of the table.

OPC UA Status Name MMS Status Name MMS Number
GoodCompletesAsynchronously IN_PROCESS -2
Good SUCCESS -1
GoodLocalOverride SUCCESS -1
GoodEntryInserted SUCCESS -1
GoodEntryReplaced SUCCESS -1
GoodNonCriticalTimeout SUCCESS -1
BadObjectDeleted INVALIDATED 0
BadSensorFailure FAULT 1
BadSensorFailure FAULT 1
BadResourceUnavailable UNAVAILABLE 2
BadNoCommunication UNAVAILABLE 2
BadInvalidState UNAVAILABLE 2
BadOutOfService UNAVAILABLE 2
BadStateNotActive UNAVAILABLE 2
BadUserAccessDenied DENIED 3
BadRequestTypeInvalid DENIED 3
BadMethodInvalid DENIED 3
BadNodeIdUnknown UNDEFINED 4
BadSourceNodeIdInvalid INVALID_ADDRESS 5
BadDataTypeIdUnknown TYPE_UNSUPPORTED 6
BadNotImplemented TYPE_UNSUPPORTED 6
BadDataEncodingUnsupported TYPE_UNSUPPORTED 6
BadTypeMismatch TYPE_INCONSISTENT 7
BadIndexRangeInvalid TYPE_INCONSISTENT 7
BadOutOfRange TYPE_INCONSISTENT 7
BadNodeAttributesInvalid ATTRIBUTE_INCONSISTENT 8
BadDataEncodingInvalid ATTRIBUTE_INCONSISTENT 8
BadArgumentsMissing ATTRIBUTE_INCONSISTENT 8
BadDeadbandFilterInvalid ATTRIBUTE_INCONSISTENT 8
BadAttributeIdInvalid ATTRIBUTE_INCONSISTENT 8
BadInvalidArgument ATTRIBUTE_INCONSISTENT 8
BadNotSupported ACCESS_UNSUPPORTED 9
BadNotWritable ACCESS_UNSUPPORTED 9
OPC UA Status Name MMS Status Name MMS Number
BadWriteNotSupported ACCESS_UNSUPPORTED 9
BadNotFound NON_EXISTENT 10
BadTimeout TIMEOUT 11
BadRequestTimeout TIMEOUT 11
DEFAULT INVALID_ADDRESS 5

Back to Top