A Solution Package can be used to combine several Software Packages. This can have several reasons:

  1. Easier distribution of multiple Software Packages as a single file (e.g., a complete machine with several devices or one device with several updateable components).
  2. Only a specific combination of Software Packages shall be installed (could be verified using a signature at the Solution Package).
  3. A combination of several Software Packages shall be installed to a device as a single file. The device is then responsible for distribution / installation of the subpackages.

A Solution Package can include an assignment information that declares which subpackage shall be installed to which targets on the device. A target can be either a specific instance or a type. If a type is specified, the package should be installed to all instances of that type. Example: A FieldBus head with OPC UA Server manages the firmware update of the connected IO modules.

A Solution Package also contains the standard package_metadata.json file with manufacturer and optional version information about the solution. Here the PackageType shall be set to Solution.

If there are several components in a Device that support the Software Update the CanUpdateReferenceType can be used to describe which subcomponents can be updated via the Solution Package.

If a precise assignment of the contained Software Packages is required, the Assignments element of the PackageMetadata can be used. The structures for the Assignment are defined in Table 136.

Table 136 – Assignment structure

Name

Type

Description

Optional

Assignment

0:Structure

Subpackage

0:String

Name of the subfolder within the SUBPACKAGES folder.

False

InstallationOrder

0:UInt32

Optional order of installation (lower numbers shall be installed first).

True

Targets[]

2:PackageTarget

List of targets for the Software Package with at least one element.

False

Table 137 – Assignment definition

Attribute

Value

BrowseName

2:Assignment

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:Structure defined in OPC 10000-3

Table 138 – PackageTarget structure

Name

Type

Description

Optional

PackageTarget

0:Structure

TargetType

0:NodeId

Install to all instances of that ObjectType.

True

TargetNode

0:NodeId

Install to specific node on the server.

True

ProductInstanceUri

0:String

Specific target with the ProductInstanceUri (see 4.5.3).

True

AssetId

0:String

Specific target with the AssetId (see 4.5.3).

True

ManufacturerUri

0:String

ManufacturerUri (see 4.5.3).

True

ProductCode

0:String

ProductCode (see 4.5.3).

True

SerialNumber

0:String

SerialNumber (see 4.5.2).

True

FxPath[]

2:FxPathElement

Path to a UA FX Asset (OPC 10000-81).

True

FxScope[]

2:FxPathElement

The package shall only be installed to targets behind this node (OPC 10000-81).

True

BrowsePath[]

0:RelativePathElement

BrowsePath to a concrete target node (see RelativePathElement of OPC 10000-5).

True

TargetServer

0:String

ApplicationUri of a target OPC UA Server.

True

Table 139 – PackageTarget definition

Attribute

Value

BrowseName

2:PackageTarget

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:Structure defined in OPC 10000-3

Table 140 – FxPathElement structure

Name

Type

Description

Optional

FxPathElement

0:Structure

Path based on OPC UA FX AssetConnectorTypes.

AssetConnectorType

0:NodeId

Connector type as defined in OPC 10000-81.Additionally either Id or Name shall be specified.

False

ConnectorId

0:UInt16

Id of the connector.

True

ConnectorName

0:String

Name of the connector.

True

Table 141 – FxPathElement definition

Attribute

Value

BrowseName

2:FxPathElement

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:Structure defined in OPC 10000-3

PackageTarget can describe either a single or multiple targets for the subpackage. For example, TargetType describes multiple targets (all instances of that ObjectType), while the combination of SerialNumber, ProductCode, and ManufacturerUri uniquely identifies a single target. The following options can be used to filter the list of targets:

  1. If no target is specified, the subpackage shall be installed on all matching target nodes.
  2. If a TargetType is specified, all targes that are subtypes of the specified ObjectType shall be updated.
  3. If a TargetNode is specified, only this node shall be updated.
  4. If a ProductInstanceUri is specified, only the target with the specified ProductInstanceUri in its IVendorNameplateType shall be updated.
  5. If AssetId is specified, only the target with the specified AssetId in its ITagNameplate shall be updated.
  6. If ManufacturerUri and ProductCode are specified, all targets identified with these properties in its IVendorNameplateType shall be updated.
  7. If ManufacturerUri, ProductCode and SerialNumber are specified, only the target identified with these properties in its IVendorNameplateType shall be updated.
  8. If an FxPath is specified, the target is identified following the AssetConnectors (see OPC 10000-81) identified by its type and either its Id or its Name.
  9. If AssetsTypes of OPC 10000-81 are used, TargetScope can be used to restrict the installation to targets which are connected to that asset. This can, for example, be combined with FxPath.
  10. If a TargetBrowsePath is specified, the target is identified by the specified path. This path starts at the Objects Node and shall only result in a single node.

If the distribution of the packages is done by the Update Client and the package shall be installed on a specific server, the TargetServer contains the ApplicationUri of that server.