Figure 21 provides an illustration of the Fx AssetType model. The figure includes an illustration of the nodes that are added via the Interfaces.

image024.png

Figure 21 – FxAssetType overview

The FxAssetType provides general information as defined in OPC 10000-100. It also includes additional information that is defined as an Interface. Being defined as an Interface allows other device models to include what is required for OPC UA FX Asset modelling without having to implement the FxAssetType Object directly. Conformance testing shall test that the required information, defined by the Interfaces included in the FxAssetType, is available, not that the Object is of FxAssetType. Any Object that implements all of the Interfaces defined in FxAssetType is considered an Asset.

Additional References are defined as part of the model to show relationships between Assets, within Assets, and between Assets and FunctionalEntities and the overall AutomationComponent model (see 11.1).

The FxAssetType is formally defined in Table 29.

Table 29 – FxAssetType definition

Attribute

Value

BrowseName

3:FxAssetType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:BaseObjectType defined in OPC 10000-5

0:HasInterface

ObjectType

5:IVendorNameplateType

Applied from IVendorNameplateType (defined in OPC 10000-100)

0:HasProperty

Variable

5:Manufacturer

0:LocalizedText

0:PropertyType

O

0:HasProperty

Variable

5:ManufacturerUri

0:String

0:PropertyType

O

0:HasProperty

Variable

5:Model

0:LocalizedText

0:PropertyType

O

0:HasProperty

Variable

5:ProductCode

0:String

0:PropertyType

O

0:HasProperty

Variable

5:HardwareRevision

0:String

0:PropertyType

O

0:HasProperty

Variable

5:SoftwareRevision

0:String

0:PropertyType

O

0:HasProperty

Variable

5:DeviceRevision

0:String

0:PropertyType

O

0:HasProperty

Variable

5:DeviceManual

0:String

0:PropertyType

O

0:HasProperty

Variable

5:DeviceClass

0:String

0:PropertyType

O

0:HasProperty

Variable

5:SerialNumber

0:String

0:PropertyType

O

0:HasProperty

Variable

5:ProductInstanceUri

0:String

0:PropertyType

O

0:HasProperty

Variable

5:RevisionCounter

0:Int32

0:PropertyType

O

0:HasInterface

ObjectType

5:ITagNameplateType

Applied from ITagNameplateType (defined in OPC 10000-100)

0:HasProperty

Variable

5:AssetId

0:String

0:PropertyType

O

0:HasProperty

Variable

5:ComponentName

0:LocalizedText

0:PropertyType

O

0:HasInterface

ObjectType

3:IAssetRevisionType

Applied from IAssetRevisionType

0:HasProperty

Variable

3:MajorAssetVersion

0:UInt16

0:PropertyType

O

0:HasProperty

Variable

3:MinorAssetVersion

0:UInt16

0:PropertyType

O

0:HasProperty

Variable

3:BuildAssetNumber

0:UInt16

0:PropertyType

O

0:HasProperty

Variable

3:SubBuildAssetNumber

0:UInt16

0:PropertyType

O

0:HasComponent

Method

3:VerifyAsset

Defined in 6.3.3

O

0:HasInterface

ObjectType

3:IAssetExtensionsType

Applied from IAssetExtensionsType

0:HasComponent

Object

3:Connectors

0:FolderType

O

0:HasInterface

ObjectType

5:IDeviceHealthType

Applied from IDeviceHealthType (defined in OPC 10000-100)

0:HasComponent

Variable

5:DeviceHealth

5:DeviceHealthEnumeration

0:BaseDataVariableType

O

0:HasComponent

Object

5:DeviceHealthAlarms

0:FolderType

O

0:HasAddIn

Object

5:SoftwareUpdate

5:SoftwareUpdateType

O

ConformanceUnits

UAFX FXAsset Type

The display name of the Asset should be used to provide the name that an operator/engineer would expect for the Asset.

For examples of how to apply the OPC UA FX Information Model to other models, see Annex B. For examples of FxAssetType models, see Annex D.

The following are the definitions associated with the IVendorNameplateType interface; they are enclosed in quotes and included here for clarity. Their formal definition is in OPC 10000-100. Additional notes are provided for recommended usage within this model.

  • Manufacturer provides the name of the company that manufactured the item to which this Interface is applied.”
  • ManufacturerUri provides a unique identifier for this company. This identifier should be a fully qualified domain name; however, it may be a GUID or similar construct that ensures global uniqueness.”
  • Model provides the name of the product.”
  • ProductCode provides a unique combination of numbers and letters used to identify the product. It may be the order information displayed on type shields or in ERP systems.”
  • HardwareRevision provides the revision level of the hardware of an Asset.”
  • SoftwareRevision provides the version or revision level of the software component, the software/firmware of a hardware component, or the software/firmware of the Device.”
  • DeviceRevision provides the overall revision level of a hardware component or the Device. As an example, this Property can be used in ERP systems together with the ProductCode Property.”
  • DeviceManual allows specifying an address of the user manual for an Asset. It may be a pathname in the file system or a URL (Web address).”
  • DeviceClass indicates in which domain or for what purpose a certain ComponentType is used. Examples are “ProgrammableController”, “RemoteIO”, and “TemperatureSensor”. This standard does not predefine any DeviceClass names. More specific standards that utilize this Interface will likely introduce such classifications.”

Within this model, this information is typically used for display purposes only. It is recommended that if this Property is provided, the string should be from some standardized dictionary.

  • SerialNumber is a unique production number of the manufacturer of the Asset. This is often stamped on the outside of a physical component and may be used for traceability and warranty purposes.”

Within this model, SerialNumber shall be provided for Assets listed directly in the Assets Folder of the AutomationComponent.

  • ProductInstanceUri is a globally unique resource identifier provided by the manufacturer. This is often stamped on the outside of a physical component and may be used for traceability and warranty purposes. The maximum length is 255 characters. The syntax of the ProductInstanceUri is: <ManufacturerUri>/<any string> where <any string> is unique among all instances using the same ManufacturerUri.”

Within this model, ProductInstanceUri shall be provided for Assets listed directly in the Assets Folder of the AutomationComponent.

  • RevisionCounter is an incremental counter indicating the number of times the configuration data within an Asset has been modified.”

Within this model, this configuration data may be one of the items defined in this document, but more likely, it is a configuration item that has been added to the asset model either as part of a companion specification or as part of an instance.

The following two definitions are from the ITagNameplateType interface. They are included enclosed in quotes and included here for clarity. Their formal definition is in OPC 10000-100. Additional notes are provided for recommended usage within OPC UA FX.

  • AssetId is a user-writable alphanumeric character sequence uniquely identifying a component. The ID is provided by the integrator or user of the device. It typically contains an identifier in a branch use case or user-specific naming scheme. This could be, for example, a reference to an electric scheme.“
  • ComponentName is a user-writable name provided by the integrator or user of the component.”

The following two definitions are from the IDeviceHealthType interface. They are enclosed in quotes and included here for clarity. Their formal definition is in OPC 10000-100. Additional notes are provided for recommended usage within OPC UA FX.

The IDeviceHealthType Interface shall be implemented on top-level Assets and any other Assets that maintain their own status information. DeviceHealth of the top-level Assets is aggregated into AggregatedDeviceHealth (see 9.1.2). Whether nested Assets aggregate their DeviceHealth into DeviceHealth of their parent Asset is vendor-specific and is further described in OPC 10000-110 (e.g., for redundant nested Assets, one might fail without the parent Asset failing).

SoftwareUpdate is an AddIn (see OPC 10000-100) that defines support for firmware or software updates. This optional AddIn should be included in any Asset that includes firmware or software that can be upgraded or changed. For a definition of the AddIn concept, see OPC 10000-3.

The following definitions are associated with the IAssetRevisionType interface (see 7.3).

The following definitions are associated with the IAssetExtensionsType interface (see 7.4).

  • Connectors is a Folder used to group and list physical- or software-based connectors (instances of AssetConnectorType) that can be used to link multiple Assets. A connector provides more information about an Asset connection than a simple Reference can. For a formal definition of the AssetConnectorType, see 6.3.4.

The VerifyAsset Method allows a Client to verify whether an Asset’s identity and functionality meet the expectations of system engineering.

Three different modes are available for Asset verification (see VerificationMode). Each mode depends on a set of mandatory and optional Variables (see definition of AssetVerificationModeEnum in 10.4) to be present for verification. The VerifyAsset Method also accepts additional Variables for verification.

An Asset implementing the VerifyAsset Method shall at least support the VerificationMode AssetCompatibility and expose the corresponding mandatory and implemented optional Variables in its Information Model. If at least one of the optional Variables, SerialNumber and/or ProductInstanceUri, are provided, then the VerificationModes AssetIdentity and AssetIdentityAndCompatibility shall be supported.

The signature of this Method is specified below; the arguments are defined in Table 30.

Signature

VerifyAsset (

[in] 2:AssetVerificationModeEnumVerificationMode,

[in] 0:KeyValuePair[] ExpectedVerificationVariables,

[in] 2:NodeIdValuePair[] ExpectedAdditionalVerificationVariables,

[out] 2:AssetVerificationResultEnumVerificationResult,

[out] 0:StatusCode[] VerificationVariablesErrors,

[out] 0:StatusCode[] VerificationAdditionalVariablesErrors

);

Table 30 – VerifyAsset Method arguments

Argument

Description

VerificationMode

Mode for Asset verification: see 10.4 for a definition of the AssetVerificationModeEnum.

ExpectedVerificationVariables

An array of KeyValuePair containing verification Variables. Key shall be the BrowseName of the Variable to verify (relative to the Asset this Method is being called on), and Value is its expected value.

A Client shall pass all mandatory and implemented optional Variables depending on VerificationMode:

IVendorNameplateType ManufacturerUri (M),

IVendorNameplateType ProductCode (M),

IAssetRevisionType MajorAssetVersion (M),

IAssetRevisionType MinorAssetVersion (M),

IAssetRevisionType BuildAssetNumber (O),

IAssetRevisionType SubBuildAssetNumber (O),

IVendorNameplateType HardwareRevision (O),

IVendorNameplateType SoftwareRevision (O)

IVendorNameplateType ManufacturerUri (M),

IVendorNameplateType ProductCode (M),

At least one of:

IVendorNameplateType SerialNumber,

IVendorNameplateType ProductInstanceUri

AssetIdentityAndCompatibility: All mandatory Variables of both AssetCompatibility and AssetIdentity are mandatory for top-level Assets (those directly in the Assets Folder in the AutomationComponent). All optional Variables of AssetCompatibility are optional.

ExpectedAdditionalVerificationVariables

An array of NodeIdValuePair containing additional verification Variables. NodeId shall be the NodeId of the Variable to verify, and Value shall be its expected value. This array may be null or empty if no additional Variables are to be verified.

The following rules shall apply to the usage of NodeIdValuePair:

  • If NodeId refers to variables of type array, it shall be verified that Value is a matching array.
  • If the ArrayIndex is provided, the value shall be checked against the corresponding index.

If Value is null, it shall be verified that NodeId exists. The Node may be a of any NodeClass, but only the NodeClass of Variable or VariableType can have a non-null value.

VerificationResult

The result of Asset verification is determined by the Method implementation; see 10.7 for a definition of the AssetVerificationResultEnum.

The following general rule applies to determine VerificationResult:

  • All string-type Variables shall be stripped of leading and trailing whitespaces before processing.

The following specific rules apply to determine AssetCompatibility:

If this value is set, VerificationVariablesErrors and/or VerificationAdditionalVariablesErrors shall be populated.

The following specific rules apply to determine AssetIdentity:

The following specific rules apply to determine AssetIdentityAndCompatibility:

Mismatch: Shall be returned if verification of AssetCompatibility or AssetIdentity or both result in Mismatch.

VerificationVariablesErrors

An array of StatusCode corresponding to the ExpectedVerificationVariables input argument that indicates any errors that occurred during the processing of ExpectedVerificationVariables. If this array is populated, the length of this array shall match the length of ExpectedVerificationVariables. For possible values in this array, see Table 32.

VerificationAdditionalVariablesErrors

An array of StatusCode corresponding to the ExpectedAdditionalVerificationVariables input argument that indicates any errors that occurred during the processing of ExpectedAdditionalVerificationVariables. If this array is populated, the length of this array shall match the length of ExpectedAdditionalVerificationVariables. For possible values in this array, see Table 33.

The possible Method result codes are formally defined in Table 31.

Table 31 – VerifyAsset Method result codes

Result Code

Description

Bad_InvalidArgument

One or more arguments are invalid, or ExpectedVerificationVariables is missing Variables that are mandatory for the chosen VerificationMode (or optional, and the implementation of this Method expects them because they are implemented).

Bad_NotSupported

The Client specified a VerificationMode that is not supported by this Method implementation.

Uncertain

At least one element in ExpectedVerificationVariables and/or ExpectedAdditionalVerificationVariables is invalid or failed verification. VerificationVariablesErrors and/or VerificationAdditionalVariablesErrors will contain additional information.

The VerificationVariablesErrors StatusCodes are formally defined in Table 32.

Table 32 – VerificationVariablesErrors StatusCodes

Result Code

Description

Bad_BrowseNameInvalid

The BrowseName for the verification Variable is invalid or was passed more than once.

Bad_TypeMismatch

The value supplied for the verification Variable (if non-null) is not of the same type as the implemented verification Variable.

Bad_OutOfRange

The value supplied for the Variable is not equal to the actual value of the Variable (if non-null).

Good

The verification for this Variable succeeded.

The VerificationAdditionalVariablesErrors StatusCodes are formally defined in Table 33.

Table 33 – VerificationAdditionalVariablesErrors StatusCodes

Result Code

Description

Bad_OutOfRange

The value supplied for the Variable is not equal to the actual value of the Variable (if non-null).

Good

The verification for this Variable succeeded.

The VerifyAsset Method representation in the AddressSpace is formally defined in Table 34.

Table 34 – VerifyAsset Method AddressSpace definition

Attribute

Value

BrowseName

3:VerifyAsset

References

Node Class

BrowseName

DataType

TypeDefinition

Other

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

0:HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

M

ConformanceUnits

UAFX IAssetRevision VerifyAsset Base

The AssetConnectorType provides information about physical connections that are part of an Asset. An example of these connections might be slots in which cards can be mounted or sockets that cables can be connected to. For additional examples, see Annex D. It is expected that subtypes of this type that provide or require additional Properties or Variables will be created. Figure 22 provides an illustration of the AssetConnectorType.

image025.png

Figure 22 – AssetConnectorType illustration

The AssetConnectorType is an abstract type and must be subtyped. It is formally defined in Table 35.

Table 35 – AssetConnectorType definition

Attribute

Value

BrowseName

3:AssetConnectorType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:BaseObjectType defined in OPC 10000-5

0:HasProperty

Variable

3:Id

0:UInt16

0:PropertyType

O

0:HasProperty

Variable

3:Name

0:String

0:PropertyType

O

0:HasSubtype

ObjectType

3:SlotType

Defined in 6.3.5

0:HasSubtype

ObjectType

3:SocketType

Defined in 6.3.6

0:HasSubtype

ObjectType

3:ClampType

Defined in 6.3.7

0:HasSubtype

ObjectType

3:ClampBlockType

Defined in 6.3.8

ConformanceUnits

UAFX AssetConnector Slot Base

UAFX AssetConnector Socket Base

UAFX AssetConnector Clamp Base

UAFX AssetConnector ClampBlock Base

Id provides the (physical) ID of the connector, representing the physical location of the connector in the Asset. The use of this ID can be further explained or defined in subtypes.

Name provides the physical label that is associated with this connector. The use of Name can be further explained or defined in subtypes. For example, it might be the name of the target of this connector, the DisplayName would be slot1, and the Name would be Pump1.

Figure 23 provides an illustration of some of the possible subtypes of the AssetConnectorType.

image026.png

Figure 23 – AssetConnectorType subtypes illustration

Some connector types are used to link other Assets, while other AssetConnectorTypes might be used to indicate physical connections.

The SlotType represents a physical slot where a module can attach to, e.g., in a modular Asset like a PLC backplane or modular IO device.

The SlotType is formally defined in Table 36.

Table 36 – SlotType definition

Attribute

Value

BrowseName

3:SlotType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 3:AssetConnectorType

0:HasProperty

Variable

3:Id

0:UInt16

0:PropertyType

M

0:HasProperty

Variable

3:LogicalId

0:UInt16

0:PropertyType

O

ConformanceUnits

UAFX AssetConnector Slot Base

Id is from AssetConnectorType and is mandatory in SlotType. It shall start at 1 and increment by 1 for each physical slot in a rack or device.

The optional LogicalId represents the“logical slot number that might be assigned to a physical ID. For example, module 3 is physically plugged into slot 3, but internally it is used as slot 8.

Each Slot that has a module plugged into it shall have a HasAttachedComponent Reference (see OPC 10000-23) indicating the Asset that occupies the slot.

The SocketType represents a physical socket where a cable can be connected.

The SocketType is formally defined in Table 37.

Table 37 – SocketType definition

Attribute

Value

BrowseName

3:SocketType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 3:AssetConnectorType

0:HasComponent

Variable

3:Kind

0:UInt16

0:MultiStateValueDiscreteType

O

0:HasProperty

Variable

3:Name

0:String

0:PropertyType

M

ConformanceUnits

UAFX AssetConnector Socket Base

Name is from AssetConnectorType and is mandatory in SocketType. It represents the label that would be associated with a Socket.

The optional Kind is a MultiStateValueDiscreteType that describes the type of socket, e.g., RJ-45 or M12. The MultiStateValueDiscreteType has two properties: EnumValues and ValueAsText. An enumeration (SocketKindEnum) is defined (see 10.43) that provides a default list of Kind values. The configured list of EnumValues for a Socket can use the list provided by the default enumeration, extend the default list, or create its own list of EnumValues. A companion specification may define a different or extended list of Kind EnumValues.

The ClampType represents a wire connection, such as a twisted pair or single wire connection, where the wire needs to be connected to some termination connection.

The Clamp Type is formally defined in Table 38.

Table 38 – ClampType definition

Attribute

Value

BrowseName

3:ClampType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 3:AssetConnectorType

0:HasProperty

Variable

3:Name

0:String

0:PropertyType

M

0:HasComponent

Variable

3:Kind

0:UInt16

0:MultiStateValueDiscreteType

O

ConformanceUnits

UAFX AssetConnector Clamp Base

UAFX AssetConnector ClampBlock Base

Name is from AssetConnectorType and is mandatory in ClampType.

The optional Kind is a MultiStateValueDiscreteType that describes the type of clamp, e.g., screw connector, thumb connector, etc. The MultiStateValueDiscreteType has two properties: EnumValues and ValueAsText. An enumeration is defined (see 10.8) that provides a default list of Kind EnumValues. The configured list of EnumValues for a Clamp can use the default list, can extend the default list, or can create its own list of EnumValues. A companion specification may define a different or extended list of Kind EnumValues.

The ClampBlockType represents a wire connection block, where the block contains a number of termination points for twisted pair or single wire connections.

The ClampBlock Type is formally defined in Table 39.

Table 39 – ClampBlockType definition

Attribute

Value

BrowseName

3:ClampBlockType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 3:AssetConnectorType

0:HasProperty

Variable

3:Name

0:String

0:PropertyType

M

0:HasProperty

Variable

3:BlockSize

0:UInt16

0:PropertyType

O

0:HasComponent

Variable

3:Kind

0:UInt16

0:MultiStateValueDiscreteType

O

0:HasComponent

Object

3:<Clamp>

3:ClampType

OP

ConformanceUnits

UAFX AssetConnector ClampBlock Base

Name is from AssetConnectorType and is mandatory in ClampBlockType.

The optional BlockSize is the maximum number of clamps that this block can support.

The optional Kind is a MultiStateValueDiscreteType that describes the type of clamp, e.g., screw connector, thumb connector, etc. The MultiStateValueDiscreteType has two properties: EnumValues and ValueAsText. An enumeration is defined (see 10.8) that provides a default list of Kind EnumValues. The configured list of EnumValues for a ClampBlock can use the list provided by the default EnumValues, extend the default list, or create its own list of EnumValues. A companion specification may define a different or extended list of Kind EnumValues.

<Clamp > are entries for each Clamp that is in use with the details of that specific clamp in the block.