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.