ICD-007 Plugin
Introduction
OPC United Architecture (OPC UA) protocol is widely used industrial communications protocol. The ICD-007 OPC Server integration plugin instantiates an OPC UA Server within the Witness system, allowing 3rd party OPC UA clients to connect and obtain data. The OPC UA Specifications come in multiple parts and can be obtained from the OPC Foundation website.
For customers and integrators intending to use OPC Server plugin, the documents assume a reasonable working knowledge of network communication. They are targeted at technical teams, typically with software development skills, who are integrating the output from Witness into external systems.
OPC UAÂ Specification:
Status Codes for the health value of the Radar/s, Management Server/s and Track Engine/s:
Contents
Overview
When Witness processes alarms and health statuses, it passes all this information to Witness Management Integration Manager. Witness Integration Manager then converts this information into a suitable data format to send to external systems.
The data is transmitted as the events occur, leading to near-real time reporting.
The OPC Server Plugin
The Witness system supports integration with many different types of external systems through the use of plugins. These are stand-alone software libraries which are dynamically loaded by the Integration Manager and contain code which knows how to convert the Witness data into the required format for the external system. Navtech Radar can easily develop bespoke plugins to interface with a specific type of equipment or application. The OPC Server plugin has been developed to provide integration to the common OPC UA standard used in highway systems.
OPC UA Client Prerequisites
The OPC UA client used to connect to the OPC server must login through a Username and Password channel. Other authentication methods are not supported.
To facilitate secure connection, the client server connection requires a security certificate. You may choose to let the plugin generate its own security certificate for the communication or provide a custom certificate. Generated certificates are by default stored under the Windows certificate store > CurrentUser > My and must be installed as trusted by the OPC Client.
Configuring the OPC Server Plugin
The ICD-007 Plugin will appear as a node under the Integration Configurations folder within the Configuration Tree. The settings can be viewed and edited by enabling the Config Function, then selecting the plugin in Integration Configurations, within the Configuration Tree. Configuration settings will then be available in the Configuration Panel.Â
Once you have made changes to the plugin configuration and committed the changes by saving, the plugin will automatically rebuilt itself based on the new configuration.
The setting options are as follows:
Enable Plugin:Â When not enabled, the plugin will not start up. If the plugin is already running, disabling the plugin will cause it to stop.
Plugin Name:Â Name of the plugin within the Witness UI
Health Timer:Â Interval, in seconds, at which the heartbeat counter on the OPC Server will count up while it is connected to the Witness system. This can be used to monitor the overall health of the OPC Server plugin.
Primary MS IP: The IP address of the primary Management Server. This is incorporated into the certificate.
Secondary MS IP: The IP address of the secondary Management Server. This is also incorporated into the certificate in case of failover.
Port: The port used for the OPC communication. By default this is 51210.
Plugin Application Name: Application Name reported through the OPC protocol. This should have the same URI as the security certificate.
Plugin Application URI:Â Application URI reported through the OPC protocol. This should have the same URI as the security certificate.
Certificate Type: Server Certificate Type:
Windows:Â Default - tries to read the certificate from in Windows Certificate Store. Certificate path must be a valid windows certificate store path e.g. "CurrentUser\My" or "LocalMachine\TrustedPublisher".
Directory:Â This tries to read the certificate from the file storage.
Certificate Path:Â Location to store the server certificate. This can be a file location e.g. "C:\OpcCertificate\" if using Directory certificate type or Certificate Store path e.g. "CurrentUser\My"
Auto create Certificate:Â Defaults to True. This indicates that a server certificate will be generated if the specified one is not available. This is the recommended option. If a custom pregenerated certificate is used, the OPC Server must be configured to match the certified application name and application URI.
(Server URI: Location where the OPC Server is hosted. This should be the actual Canary hosting machine name, localhost or the canary machine IP followed by an unused port and optionally additional path - for example if the same server hosts multiple OPC applications.)
Write node structure to CSV: With this option selected the plugin will write out the OPC node structure for the current configuration into a CSV file every time it starts. The file will be saved in %ProgramData%\Navtech\OPCServer folder.
Use Anonymous Login: This allows clients to connect anonymously without using a username and password. This is not recommended other than for testing or for use with systems which don’t support proper authentication.
Carriageways:Â This section indicates the carriageways that we want to track in the OPC server. When a highway alarm is received, only an alarm matching a configured Carriageway will be processed.
Select | Carriageway Name |
---|---|
Select this to track carriageway the OPC server. | The carriageway you wish to track. |
Â
If Certificate Type is "Directory", auto create certificate can only create new certificates if OPC Foundation Redistributable is installed.
If the specified certificate does not exist and new certificate cannot be created (e.g. due to the above or if Auto create Certificate is not selected), the plugin will not be able to start up.
Generating the OPC Node Structure
To assist development or configuration of the OPC UA Client, the OPC node structure will be output to the local program data folder in .csv format each time the plugin is started. As you add or remove radars, or change plugin configuration, OPC Node structure will change.
You should be able to find the output at: ProgramData > Navtech\OPCServer\OPCNodes.csv. The location of your ProgramData folder will depend on your Windows setup.
Example output in table format:
Each node is listed first with Display Name, DataType and namespace : relative browse name. Child nodes are indented relative to their parent.
Witness | Folder | 1:Witness | |||||
Heartbeat | Int32 | 1:Heartbeat | |||||
ManagementServerHealth | Int32 | 1:ManagementServerHealth | |||||
TrackEngineHealth | Int32 | 1:TrackEngineHealth | |||||
DatabaseHealth | Int32 | 1:DatabaseHealth | |||||
CarriagewayCount | Int32 | 1:CarriagewayCount | |||||
RadarCount | Int32 | 1:RadarCount | |||||
CarriageWays | Folder | 1:CarriageWays | |||||
Carriageway 1 | Folder | 1:Carriageway1 | |||||
SectionCount | Int32 | 1:SectionCount | |||||
Section 1 | Folder | 1:Section1 | |||||
SectionId | Int32 | 1:SectionId | |||||
Mode | Int32 | 1:Mode | |||||
RadarId | Int32 | 1:RadarId | |||||
TrafficData | Boolean | 1:TrafficData | |||||
AverageSpeed | Double | 1:AverageSpeed | |||||
AverageCount | Int32 | 1:AverageCount | |||||
Reversing Rule | Folder | 1:Rule1 | |||||
Description | String | 1:Description | |||||
Active | Boolean | 1:Active | |||||
Raised | DateTime | 1:Raised | |||||
LocationX | Double | 1:LocationX | |||||
LocationY | Double | 1:LocationY | |||||
Lane | Int32 | 1:Lane | |||||
Speed Rule | Folder | 1:Rule2 | |||||
Description | String | 1:Description | |||||
Active | Boolean | 1:Active | |||||
Raised | DateTime | 1:Raised | |||||
LocationX | Double | 1:LocationX | |||||
LocationY | Double | 1:LocationY | |||||
Lane | Int32 | 1:Lane | |||||
Section 2 | Folder | 1:Section2 | |||||
SectionId | Int32 | 1:SectionId | |||||
Mode | Int32 | 1:Mode | |||||
RadarId | Int32 | 1:RadarId | |||||
TrafficData | Boolean | 1:TrafficData | |||||
AverageSpeed | Double | 1:AverageSpeed | |||||
AverageCount | Int32 | 1:AverageCount | |||||
Reversing Rule | Folder | 1:Rule1 | |||||
Description | String | 1:Description | |||||
Active | Boolean | 1:Active | |||||
Raised | DateTime | 1:Raised | |||||
LocationX | Double | 1:LocationX | |||||
LocationY | Double | 1:LocationY | |||||
Lane | Int32 | 1:Lane | |||||
Speed Rule | Folder | 1:Rule2 | |||||
Description | String | 1:Description | |||||
Active | Boolean | 1:Active | |||||
Raised | DateTime | 1:Raised | |||||
LocationX | Double | 1:LocationX | |||||
LocationY | Double | 1:LocationY | |||||
Lane | Int32 | 1:Lane | |||||
Person Rule | Folder | 1:Rule3 | |||||
Description | String | 1:Description | |||||
Active | Boolean | 1:Active | |||||
Raised | DateTime | 1:Raised | |||||
LocationX | Double | 1:LocationX | |||||
LocationY | Double | 1:LocationY | |||||
Lane | Int32 | 1:Lane | |||||
Sensors | Folder | 1:Sensors | |||||
Radar 1 | Folder | 1:Sensor7083798e-329d-4eb6-a4bc-4dee3553faea | |||||
LastHealth | Int32 | 1:LastHealth | |||||
LastTime | DateTime | 1:LastTime | |||||
RadarId | Int32 | 1:RadarId | |||||
Radar 2 | Folder | 1:Sensord8aec3b1-4f71-41c1-8d90-0bb0387340b0 | |||||
LastHealth | Int32 | 1:LastHealth | |||||
LastTime | DateTime | 1:LastTime | |||||
RadarId | Int32 | 1:RadarId | |||||
README | String | 1:README |
Â
OPC Login Credentials
To log in to the OPC server with an OPC client, you can use the credential of any System user. If none exist, an admin level user may create a new one.