### 5.1 General

The DataAccess model extends the variable model by defining VariableTypes. The DataItemType is the base type. ArrayItemType, BaseAnalogType, and DiscreteItemType are specializations. See Figure 2. Each of these VariableTypes can be further extended to form domain or server specific DataItems.

Figure 2 – DataItem VariableType hierarchy

Clause 5.3.2: Replace 5.3.2 with the following:

## 5.3.2.1 General

The VariableTypes in this clause define the characteristics of AnalogItems. The types have identical semantics and Properties but with diverging ModellingRules for individual Properties.

The Properties are only described once - in the BaseAnalogType clause. The descriptions apply to the Properties for the other VariableTypes as well.

## 5.3.2.3 BaseAnalogType

This VariableType is the base type for analog items. All Properties are optional. Subtypes of this base type will mandate some of the Properties. The BaseAnalogType derives from the DataItemType. It is formally defined in Table 2A.

Table 2 A – BaseAnalogType definition

Attribute Value
BrowseName BaseAnalogType
IsAbstract False
ValueRank −2 (−2 = ‘Any’)
DataType Number

Subtype of the DataItemType defined in 5.3.1 i.e the Properties of that type are inherited.

References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasSubtype VariableType AnalogItemType Defined in 5.3.2.2
HasSubtype VariableType AnalogUnitType Defined in 5.3.2.3
HasProperty Variable InstrumentRange Range PropertyType Optional
HasProperty Variable EURange Range PropertyType Optional
HasProperty Variable EngineeringUnits EUInformation PropertyType Optional

The following paragraphs describe the Properties of this VariableType. If the analog item’s Value contains an array, the Properties shall apply to all elements in the array.

InstrumentRange defines the value range that can be returned by the instrument.

Example:		InstrumentRange::= {-9999.9, 9999.9}


Although defined as optional, it is strongly recommended for Servers to support this Property. Without an InstrumentRange being provided, Clients will commonly assume the full range according to the DataType.

The InstrumentRange Property may also be used to restrict a Built-in DataType such as Byte or Int16) to a smaller range of values.

Examples:
4-Bit UInt:		InstrumentRange::= {0, 15}
6-Bit Int:		InstrumentRange::= {-32, 31}


The Range Data Type is specified in OPC 10000-8, clause 5.6.2.

EURange defines the value range likely to be obtained in normal operation. It is intended for such use as automatically scaling a bar graph display.

Sensor or instrument failure or deactivation can result in a returned item value which is actually outside of this range. Client software must be prepared to deal with this possibility. Similarly a Client may attempt to write a value that is outside of this range back to the server. The exact behaviour (accept, reject, clamp, etc.) in this case is Server-dependent. However, in general Servers shall be prepared to handle this.

Example:		EURange::= {-200.0,1400.0}


See also 6.2 for a special monitoring filter (PercentDeadband) which is based on the engineering unit range.

NOTE If EURange is not provided on an instance, the PercentDeadband filter cannot be used for that instance (see OPC 10000-8, clause 6.2).

EngineeringUnits specifies the units for the DataItem’s value (e.g., DEGC, hertz, seconds). The EUInformation type is specified in OPC 10000-8, clause 5.6.3.

Important note: Understanding the units of a measurement value is essential for a uniform system. In an open system in particular where Servers from different cultures might be used, it is essential to know what the units of measurement are. Based on such knowledge, values can be converted if necessary before being used. Therefore, although defined as optional, support of the EngineeringUnits Property is strongly advised.

OPC UA recommends using the “Codes for Units of Measurement” (see UN/CEFACT: UNECE Recommendation N° 20). The mapping to the EngineeringUnits Property is specified in OPC 10000-8, clause 5.6.3.

Examples for unit mixup: In 1999, the Mars Climate Orbiter crashed into the surface of Mars. The main reason was a discrepancy over the units used. The navigation software expected data in newton second; the company who built the orbiter provided data in pound-force seconds. Another, less expensive, disappointment occurs when people used to British pints order a pint in the USA, only to be served what they consider a short measure.

The StatusCode SemanticsChanged bit shall be set if any of the EURange (could change the behaviour of a Subscription if a PercentDeadband filter is used) or EngineeringUnits (could create problems if the Client uses the value to perform calculations) Properties are changed (see OPC 10000-8, clause 5.2 for additional information).

## 5.3.2.2 AnalogItemType

This VariableType requires the EURange Property. The AnalogItemType derives from the BaseAnalogType. It is formally defined in Table 2.

Table 2 – AnalogItemType definition

Attribute Value
BrowseName AnalogItemType
IsAbstract False
ValueRank −2 (−2 = ‘Any’)
DataType Number

Subtype of the BaseAnalogType defined in 5.3.2.1 i.e the Properties of that type are inherited.

References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasSubtype VariableType AnalogUnitRangeType Defined in 5.3.2.5
HasProperty Variable EURange Range PropertyType Mandatory

## 5.3.2.4 AnalogUnitType

This VariableType requires the EngineeringUnits Property. The AnalogUnitType derives from the BaseAnalogType. It is formally defined in Table 2B.

Table 2 B – AnalogUnitType definition

Attribute Value
BrowseName AnalogUnitType
IsAbstract False
ValueRank −2 (−2 = ‘Any’)
DataType Number

Subtype of the BaseAnalogType defined in 5.3.2.1 i.e the Properties of that type are inherited.

References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasProperty Variable EngineeringUnits EUInformation PropertyType Mandatory

## 5.3.2.5 AnalogUnitRangeType

The AnalogUnitRangeType derives from the AnalogItemType and additionaly requires the EngineeringUnits Property. It is formally defined in Table 2C.

Table 2 C – AnalogUnitRangeType definition

Attribute Value
BrowseName AnalogUnitRangeType
IsAbstract False
ValueRank −2 (−2 = ‘Any’)
DataType Number

Subtype of the AnalogItemType defined in 5.3.2.2 i.e the Properties of that type are inherited.

References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasProperty Variable EngineeringUnits EUInformation PropertyType Mandatory

OPC 10000-7, OPC Unified Architecture - Part 7: Profiles

Add the following ConformanceUnits to section 5.4, Table 15 “Data Access”:

Category Title Description
Server    Data Access BaseAnalogType Support BaseAnalogType Variables with corresponding Properties. The support of optional properties will be listed.
Server    Data Access AnalogUnitType Support AnalogUnitType Variables with corresponding Properties. The support of optional properties will be listed.
Server Data Access AnalogUnitRangeType Support AnalogUnitRangeType Variables with corresponding Properties. The support of optional properties will be listed.
Client    Data Access Client BaseAnalogType Understand BaseAnalogType Variables with corresponding Properties.
Client    Data Access Client AnalogUnitType Understand AnalogUnitType Variables with corresponding Properties.
Client Data Access Client AnalogUnitRangeType Understand AnalogUnitRangeType Variables with corresponding Properties.

Add the following ConformanceUnits to the section 6.6.21 Data Access Server Facet:

Group Conformance Unit / Profile Title Optional
Data Access Data Access BaseAnalogType True
Data Access Data Access AnalogUnitType True
Data Access Data Access AnalogUnitRangeType True

Add the following ConformanceUnits to the section 6.6.93 Data Access Client Facet:

Group Conformance Unit / Profile Title Optional
Data Access Data Access Client BaseAnalogType True
Data Access Data Access Client AnalogUnitType True
Data Access Data Access Client AnalogUnitRangeType True