8.7.5 Solution packages
A Solution Package can be used to combine several Software Packages. This can have several reasons:
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).
Only a specific combination of Software Packages shall be installed (could be verified using a signature at the Solution Package).
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.
| 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 | ||||||
| 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 |
| Attribute | Value | |||||
| BrowseName | 2:PackageTarget | |||||
| IsAbstract | False | |||||
| References | NodeClass | BrowseName | DataType | TypeDefinition | Other | |
|---|---|---|---|---|---|---|
| Subtype of 0:Structure defined in OPC 10000-3 | ||||||
| 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 |
| 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:
If no target is specified, the subpackage shall be installed on all matching target nodes.
If a TargetType is specified, all targes that are subtypes of the specified ObjectType shall be updated.
If a TargetNode is specified, only this node shall be updated.
If a ProductInstanceUri is specified, only the target with the specified ProductInstanceUri in its IVendorNameplateType shall be updated.
If AssetId is specified, only the target with the specified AssetId in its ITagNameplate shall be updated.
If ManufacturerUri and ProductCode are specified, all targets identified with these properties in its IVendorNameplateType shall be updated.
If ManufacturerUri, ProductCode and SerialNumber are specified, only the target identified with these properties in its IVendorNameplateType shall be updated.
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.
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.
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.