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.
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 |
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:
- 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.