The parameter set of a device (offline and online) is described by means of the DataInfo data type (available with the <GetDataInfo> method from IInstanceData (offline) and IDeviceData (online)).

DataInfo provides a description of the available data without the values. The actual values are accessible with <Read> and <Write> methods from IInstanceData (offline) and IDeviceData (online).

DataInfo provides a list of data items (member DeviceDataItems), which may represent a range of types. Some of these data items are mapped to DataVariables (see Table 68).

Table 68 – Mapping of FDT data items

OPC

FDT

DataVariable(according OPC UA 10000-3)

Data

UnitData

RangeData

AlarmData

SubstituteData

StructDataGroup

FunctionalGroup

(according OPC UA 10000-100)

DataGroup

Block object (according OPC UA 10000-100)

ModuleDataGroup

Table 69 shows the mapping for the FdtParameter.

Table 69 – FdtParameter mapping

OPC

FDT

Attribute

Interface

Method

Data member

Description

NodeClass

Fixed value: Variable

BrowseName

IData

<GetDataInfo>

Name

DisplayName

IData

<GetDataInfo>

Label

Description

IData

<GetDataInfo>

Descriptor

WriteMask

Generated by Frame

UserWriteMask

IData

<GetDataInfo>

IsChangeEnabled

Generated by Frame

Value

IData

<Read> / <Write>

DataType

IData

<GetDataInfo>

DataTypeInfo

ValueRank

IData

<GetDataInfo>

DataTypeInfo

Indicates whether the datatype is an array.

ArrayDimensions

IData

<GetDataInfo>

DataTypeInfo

If the datatype is an array, then provide dimensions.

AccessLevel

IData

<GetDataInfo>

IsReadable, IsWritable

Generated by Frame

UserAccessLevel

IData

<GetDataInfo>

IsReadable, IsWritable

Generated by Frame

MinimumSamplingInterval

Defined by Frame.

Historizing

Defined by Frame.

BrowseName

2:EURange

IData

<GetDataInfo>

RangeDataRefs

2:EngineeringUnits

IData

<GetDataInfo>

UnitDataRef

0:HasComponent

May be used for structured datatypes (StructDataGroup)

2:HasDefinition

Defined by Frame.

2:ValuePrecision

Defined by Frame.

DisplayFormat

IData

<GetDataInfo>

DisplayFormat

AlarmType

IData

<GetDataInfo>

AlarmType

RangeType

IData

<GetDataInfo>

RangeType

SubstitutionType

IData

<GetDataInfo>

SubstitutionType

ApplicationId

IData

<GetDataInfo>

ApplicationId

SemanticInfo

IData

<GetDataInfo>

SemanticInfos

DataRef

IData

<GetDataInfo>

DataRefs

IOSignalRef

IData

<GetDataInfo>

IOSignalRef

AlarmDataRef

IData

<GetDataInfo>

AlarmDataRefs

SubstituteDataRef

IData

<GetDataInfo>

SubstituteDataRef

The datatype mapping for parameter data is described in Table 70.

Table 70 – Mapping of simple data types

OPC

FDT

Data type

Data type

Description

Float

Float

Double

Double

Byte

Byte

Int32

Int

Int64

Long

UInt32

UInt

UInt64

ULong

DateTime

DateTime

DateTime

Date

Date is represented as date at 0:00 a clock.

Duration

Time

Time is expressed as duration since midnight.

Duration

TimeSpan

Duration is expressed in milliseconds, TimeSpan is expressed in terms of days, hours, minutes. For the conversion of large TimeSpan a loss of precision may occur.

String

String

Array of Byte

BinaryByteArray

Array of Bit

BinaryBitArray

Enumeration

Enumerator

Boolean

Boolean

SByte

SByte

In OPC UA array datatypes are represented by a combination of the properties datatype, value-rank and array-dimensions (see OPC OPC UA 10000-5, section 5.6.2).

In FDT array datatypes are represented with a dedicated ArrayDatatypeInfo datatype. This datatype has a member ArrayDatatypeInfo.ArrayDimensions, which specifies the length of each dimension of the array.

The mapping for array data types is defined as follows.

  • OPC datatype value is mapped according to Table 70.
  • OPC value rank is:
  • -1 for a simple datatype, or
  • Number of fields in FDT ArrayDatatypeInfo.ArrayDimensions (always > 0)
  • OPC array-dimensions property is:
  • NULL for a simple datatype, or
  • has the same value as ArrayDatatypeInfo.ArrayDimensions.

value of 0 means that the array has a variable length,

values > 0 indicate a defined length.