The RelativeValueType is a subtype of the BaseDataVariableType. It is used to inform how values, which are represented by this type, behave, or reference to another value representation.
It is formally defined in Table 17.
Table 17 – RelativeValueType Definition
Attribute |
Value |
|||||
BrowseName |
RelativeValueType |
|||||
IsAbstract |
True |
|||||
ValueRank |
-2 (Any) |
|||||
DataType |
BaseDataType |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
|
Subtype of the BaseDataVariableType defined in OPC 10000-5 |
||||||
0:HasComponent |
Variable |
Base |
0:NodeId |
0:BaseDataVariableType |
O |
The Variable Base provides the NodeId of the object on which the Value of this object is based on. The NodeId can be NULL if this Value does not relate to another value.
To express if the Value is constant and does not change, the Constant bit of the Attribute AccessLevelEx of the RelativeValueType Variable shall be set to True.
To express if the base (on which the value is based) is constant, the Constant bit of the Attribute AccessLevelEx of the Variable Base shall be set to True.
Figure 6 shows an example usage to the RelativeValueType and the Variable Base.
Figure 6 – Example of RelativeValueType usage
The SpatialLocationType is a subtype of the RelativeValueType. It is used for information about position or orientation. A concrete subtype of this abstract type shall be defined for use with the Relative Spatial Location AddIns, e.g., the CartesianFrameAngleOrientationType described in 7.3.
It is formally defined in Table 18.
Table 18 – SpatialLocationType Definition
Attribute |
Value |
|||||
BrowseName |
SpatialLocationType |
|||||
IsAbstract |
True |
|||||
ValueRank |
-2 (Any) |
|||||
DataType |
BaseDataType |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
|
Subtype of the RelativeValueType defined in 7.1 |
||||||
0:HasComponent |
Variable |
Position |
0:BaseDataType |
0:BaseDataVariableType |
O |
|
0:HasComponent |
Variable |
Orientation |
0:BaseDataType |
0:BaseDataVariableType |
O |
|
0:HasComponent |
Variable |
Base |
0:NodeId |
0:BaseDataVariableType |
M |
The Variable Position informs about a position. Note that the TypeDefinition is not defined in detail, so it is assumed to define, while subtyping from SpatialLocationType, specific type definitions to provide information about a position e.g., for cartesian, spherical or cylindrical positions.
The Variable Orientation informs about an orientation typically with respect to a position. In mathethamics, orientation defines a geometric notion. For example, in two dimensions it allows to say when a cycle goes clockwise or counterclockwise, or in three dimensions when a figure is left-handed or right-handed. Note that the TypeDefinition is not defined in detail, so it is assumed to define, while subtyping from SpatialLocationType, specific type definitions to provide information about orientation.
The mandatory Variable Base is used to point via NodeId to the location, where the described location is based on.
When used with subtypes of SpatialLocationType, if the Variable Base is NULL, the end of the frame chain is reached.
For this the Variable Base of the WorldFrame of SpatialObjectsListType is defined NULL.
For objects, which are on hold, e.g. configured in a system and so organised by a SpatialObjectsList, but not attached in a relative spatial way, the 0:NodeId can be NULL. Defining the Constant bit of the Variable Base with False brings awareness, that this object might be attached to a base without GeneralModelChangeEvent of the SpatialObjectsList.
To provide a display name for the base the client needs to follow the 0:NodeId which points to an instance with an Attribute DisplayName.
The CartesianFrameAngleOrientationType is a subtype of the SpatialLocationType. It is used for information about frames in 3D space using position representation by cartesian coordinates and orientation representation by Euler angles defined in Annex B.
The CartesianFrameAngleOrientationType is similar as the 3DFrameTyp e, introduced with Amendment 11 and uses the same DataType definition for the position.
For a unique mathematic definition of the orientation calculation the RpyOrientationType is provided.
It is recommended to use this type, instead of 3DFrameType, because of the generic approach of RelativeValueType and SpatialLocationType.
It is formally defined in Table 19.
Table 19 – CartesianFrameAngleOrientationType Definition
Attribute |
Value |
|||||
BrowseName |
CartesianFrameAngleOrientationType |
|||||
IsAbstract |
False |
|||||
ValueRank |
−1 (−1 = Scalar) |
|||||
DataType |
3DFrame |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
|
Subtype of the SpatialLocationType defined in 7.2 |
||||||
0:HasComponent |
Variable |
Position |
0:3DCartesianCoordinates |
0:3DCartesianCoordinatesType |
M |
|
0:HasComponent |
Variable |
Orientation |
0:3DOrientation |
RpyOrientationType |
M |
|
ConformanceUnits |
||||||
CartesianFrameAngleOrientationType |
The Variable Position is defined as 3DCartesianCoordinatesType, which includes the lengths X, Y and Z, to represent a three-dimensional cartesian position. It shall apply to the right-handed coordinate system definition defined in Annex B.
The Variable Orientation is defined as RpyOrientationType, defined in 7.4, which includes the angles A, B and C to represent the rotations about the axes of the cartesian coordinate system. It shall apply to the mathematic definition described in Annex B.
The components of the CartesianFrameAngleOrientation Type have additional subcomponents which are defined in Table 20.
Table 20 – CartesianFrameAngleOrientationType Additional Subcomponents
BrowsePath |
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Others |
Position |
0:HasProperty |
Variable |
0:LengthUnit |
0:EUInformation |
PropertyType |
M |
Orientation |
0:HasProperty |
Variable |
0:AngleUnit |
0:EUInformation |
PropertyType |
M |
LengthUnit defines the unit of each dimension of the cartesian coordinates. The DataType EUInformation is defined in OPC 10000-8. Note that the Property EngineeringUnits is intentionally not used, as it would have to define the engineering unit of the full cartesian coordinates, not its individual dimensions.
AngleUnit defines the unit of each dimension of the orientation. The DataType EUInformation is defined in OPC 10000-8. Note that the Property EngineeringUnits is intentionally not used, as it would have to define the engineering unit of the full cartesian coordinates, not its individual dimensions.
The RpyOrientationType is a subtype of the 0:OrientationType. It is used for information about the orientation of coordinate systems in three-dimensional space using Euler angles uniquely defined in Annex B by the roll-pitch-yaw definition (intrinsic rotations z-y′-x″).
It is formally defined in Table 21.
Table 21 – RpyOrientationType Definition
Attribute |
Value |
|||||
BrowseName |
RpyOrientationType |
|||||
IsAbstract |
False |
|||||
ValueRank |
−1 (−1 = Scalar) |
|||||
DataType |
3DOrientation |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
|
Subtype of the OrientationType defined in OPC 10000-5 |
||||||
0:HasComponent |
Variable |
A |
0:Double |
0:BaseDataVariableType |
M |
|
0:HasComponent |
Variable |
B |
0:Double |
0:BaseDataVariableType |
M |
|
0:HasComponent |
Variable |
C |
0:Double |
0:BaseDataVariableType |
M |
|
ConformanceUnits |
||||||
CartesianFrameAngleOrientationType |