OPC UA Application URI Derivation: Difference between revisions
No edit summary |
No edit summary |
||
Line 40: | Line 40: | ||
|} | |} | ||
The format string can have one or more sections, separated by a semicolon (';'). | The information in the "Application Assembly" and "Application Version Info" categories may not always be available - it depends on factors such as the type of application and the hosting process. For this reason, the format string can have one or more sections, separated by a semicolon (';'). If three or more sections are present, they are interpreted like this: | ||
* If the application version info is available, the last section from the end is used. | |||
* Otherwise, if the application assembly information is available, the second section from the end is used. | |||
* Otherwise, the third section from the end is used. | |||
If there are fewer sections, the first section that would be to the right of the position indicated by the above rules is used. This algorithm also means that you can use just one section, and the format from this section will always be used. | |||
The default application URI format string (in QuickOPC 2023.1) is as follows: | The default application URI format string (in QuickOPC 2023.1) is as follows: |
Revision as of 15:34, 20 December 2022
Every OPC UA application (client or server) needs an application URI, which uniquely identifies the application instance in the system.
Applications based on QuickOPC determine their application URI in the following way:
- If the application manifest contains a non-empty ApplicationUriString property, it will be used as the application URI.
- Otherwise, the application URI is automatically generated, using a format string from the ApplicationUriFormat property in the application parameters.
The application URI format string consists of characters that are copied literally to the output string, and macros, which are replaced by values provided by QuickOPC. When the macro is expanded, it is URL-escaped before it is inserted into the output string, so that a correct URI can be formed. Macro replacements have the syntax $(name), where name is one of the names defined in the following table.
Category | Name | Description |
---|---|---|
Common | HostName | Host name of the local computer. |
ModuleName | Name of the main module for the current process. | |
ProcessId | Numeric Id of the current process.[1] | |
ProcessName | The name of the current process. | |
Application Assembly | SimpleName | Simple name of the application assembly. |
Version | Version number of the application assembly. | |
Culture | Supported culture of the application assembly. | |
PublicKeyToken | Public key token of the application assembly. | |
Application Version Info | CompanyName | Name of the company from the application version info. |
FileVersion | File version number from the application version info. | |
Language | Default language string from the application version info. | |
NameToken | Internal name from the application version info, without the ".exe" extension if present. | |
ProductVersion | Product version number from the application version info. |
The information in the "Application Assembly" and "Application Version Info" categories may not always be available - it depends on factors such as the type of application and the hosting process. For this reason, the format string can have one or more sections, separated by a semicolon (';'). If three or more sections are present, they are interpreted like this:
- If the application version info is available, the last section from the end is used.
- Otherwise, if the application assembly information is available, the second section from the end is used.
- Otherwise, the third section from the end is used.
If there are fewer sections, the first section that would be to the right of the position indicated by the above rules is used. This algorithm also means that you can use just one section, and the format from this section will always be used.
The default application URI format string (in QuickOPC 2023.1) is as follows:
uri:$(HostName):$(ModuleName);uri:$(HostName):$(NameToken):$(FileVersion):$(Language);uri:$(HostName):$(SimpleName):$(Version):$(Culture):$(PublicKeyToken)
- ↑ Normally not used, as it is not stable enough for the intended purpose.