Overview – Redundancy
Open Automation Software Service Oriented Architecture supports any number of parallel servers and client systems. Following are some key attributes that help promote automatic switchover of one system to another.
Use Same Tag Names On Parallel Servers
Open Automation Software real-time service can have the same group and tag name structure running on parallel servers. The source of the tags can be the same or different. For the most reliable connection to OPC Servers it is best to run the OAS Services on the same PC as the OPC Servers with local OPC Server connections.
Create Master Tag in Each Service
In Open Automation Software create one or more tags to provide a status of it being a master is active mode or standby mode. These tags can be used by client applications for determine switchover logic and also for activate properties in data logging, alarm logging, alarm notification, report, and recipe configurations.
The data source for the tag can be a Calculation to automatically monitory other service tags with the Quality parameter or the value can be set from other remote applications like a .NET application, Microsoft Excel, OPC Clients, OPC Servers, or databases.
It best to include a heartbeat within a Calculation tag to verify that the remote service or application is still communicating to the service.
The logic to determine if a service is completely variable, but do not implement something that will prematurely put the service in a standby mode leaving no service as the master.
Things to consider if a service should be the master:
- Network failure
- PLC / controller communications failure
- OPC Server failure
- OPC Server communications to devices (PLCs)
- Database engine access
- Remote service shutdown or PC failure
Client Application Switchover
The client application can use a Data component to monitor the health of each remote service. Use the AddTags method together with the ValuesChangeAll event to monitor the quality and state of key tags from each service to determine which service should be the master.
The logic to determine which is the master can be variable based on quality of individual points. As an example if there are 3 redundant servers and each as a tag called DataQuality you can use logic to monitor the Qualities array from the event for each tag.
If all Qualities are True you can decide which server to the client should switch to. If only one of the servers is good quality then the choice is easy.
Use the AddNetworkNodeAlias method of the OPCControls.OPCControlsNetworkNodes or OPCWPFDashboard.OPCWPFNetworkNodes components to alias the original network node definition of all tags defined to the network node to a different network node.
For example: AddNetworkNodeAlias(“localhost”,”192.168.1.1”)
The AddNetworkNodeAlias method is demonstrated in the Form FormMain of the WinForm Example Code.
Also demonstrated in the following WPF application in detail:
WPF Redundancy Client Example – Demonstrates automated switch to data servers:
For all trend controls programmatically define the pens of the trend to remote nodes. An example is demonstrated in the Form FormMain of the WinForm Example Code.
For all alarm controls use the AlarmNetworkNodes property to define what remote services the alarm window is connected to. An example is demonstrated in the Form FormMain of the WinForm Example Code.
Visual Basic WinForm Example Code for realtime data access and all configurations access:
C# WinForm Example Code for realtime data access and all configurations access:
Each configuration in Open Automation Software including data logging, alarm logging, alarm notification, reports, and recipes all have an Activate by Tag property under the Common tab of each configuration group to enable or disable the groups execution.
This can be assigned to a Boolean master tag that is true when the features should be enabled and false when disabled. You may need to use additional Calculation tags for each group if more than just an active master tag determines if the execution state of the configuration group.
Data Buffering For Logging, Trending, and Alarms
Each service runs as a Windows Service and on network failure to remote clients all data is retained locally in the service. All trend, alarm, and data logging data is cached in the service at all times to be available for remote clients.
When performing data logging of data from a remote service data can be written to the local hard disk using the Data Buffering feature found under Configure-Options. The same is true for a database engine failure or a network loss to a remote database engine.
View the following video on data buffering to disk.
How to setup data logging so there is no data loss on a network or database engine failure.
Data Log-Override All Data Logging Server Names
The same data logging configuration can be used on multiple services. If each service needs to log to a different database engine the property Override All Data Logging Database Server Names can be used to override all server names in all logging groups to point to only that database engine server.
Error Feedback in Data Logging Groups
Each data logging group has a property to enable a write of status to an Integer tag. The definition of each error code and assignment of error feedback tag is found under the Common tab of each data logging group.
Source When Bad to Different Remote Tag
For each Tag value there is a Source When Bad property that can be set to another local or remote Tag when the data quality of the original source is bad. The Source When Bad property can be set to Set Sources To Tag Value and then alternate source can then be defined to another Tag.
Enable OPC Server Communications from Tag
Communications to OPC Server items can be enabled or disabled with the property Enable by Tag when the Data Source is set to OPC Item.
When the Enable by Tag property is enabled a Boolean Tag can be defined to enable of disable the communications based on its value.
Retain Values, Alarm Limits, Times, Trends, Alarms
Under Configure-Options-Retain Values you can enable to store to disk the following information so when the service computer is restarted all of the latest values are retained.
Values and Alarm Limits for any Tag Value or Alarm Limit with a data source of Value.
Time and Counts for keeping track of times and counts for individual tag parameters with the feature Time On and Counts enabled.
Trends for real-time trend cache.
Alarms for all real-time alarms and the ability to retain when the alarm originally occurred.
File Data Source for Redundant Servers
To share values and alarm limits across multiple servers the Data Source of a Tag Value or Alarm Limit can be set to File Binary, File Text, or File XML. The path of the file that is shared is specified under Configure-Options-File Data Source.
This path can be set to a remote drive and directory that is accessible by all redundant services. For all tag names that are the same on each service with the Data Source of File all will be updated with the same value when one of the services receive a write from a client.
It does require that the remote file be able to be accessed in order to update the tag value on the multiple services.