Link Tolerances

Some connections between VTScada machines may be slower or less predictable than others. Instead of increasing the RPC timing values for every connection to compensate for the slowest connection, VTScada applies a link tolerance multiplier that is specific to the two communicating machines.

The tolerance is applied to three RPC timing values:

You normally do not need to configure link tolerances. VTScada uses the standard RPC timing settings for workstation communication. If a particular network connection requires more or less tolerance you can configure a link tolerance for that connection in SETUP.INI.

The default link tolerance is 100%, meaning that the configured RPC timing values are used unchanged.

But if one workstation needs longer delays, a tolerance larger than 100 can be assigned. For example, with a tolerance of 300, RPC timing values are multiplied by 3x for applicable communication with that workstation.

Configure LinkTolerance in SETUP.INI

If you do configure specific link tolerances, it is extremely important that all machines in the network share the same set of link tolerance assignments. That means that the SETUP.INI file on every machine must reflect the same assignments.

You must create an INI file section heading [LinkTolerance-Name?IP], specify a default tolerance and optionally specify tolerance for specific connections with other machines. Here is an example of what that might look like:

[LinkTolerance-192.168.5.42]
  Default = 200

[LinkTolerance-GONZOSPC]
  192.168.5.50 = 300
  Default = 150
  JOESPC = 100

  • The [LinkTolerance- ] heading can identify a machine by machine name or IP address.
  • Each entry other than Default identifies another machine with which the named machine can communicate.
  • Default applies to communication between the machine named in the heading and any unspecified machine.

In this example, the machine specified in the top heading, 192.168.5.42, will apply a 200% tolerance to every machine that connects with it.

Additionally, With a default RPCPingInterval of 5 seconds, GONZOSPC will wait 5 seconds before pinging JOESPC to see if the silent connection is still good, but it will wait 15 seconds (300% of 5 seconds) before pinging 192.168.5.50.

WkStnInfo() will return the workstation name. \RPCManager.GetIP(Name) will return the IP address for a workstation, given its name.

VTScada only calculates the link tolerance between two machines the first time that a connection is established.

Considerations for Multi-Homed Systems

Single-homed machines have one network path for communicating with other machines. Multi-homed machines have multiple network pathways (for example, two ethernet adapters connected to different networks). In multi-homed systems, the workstation name alone may not tell VTScada which network path is being used. In this case, you may have to use the IP address to identify tolerances for different networked pathways between two machines.

Advanced: How VTScada selects link tolerance

Here is the exact method that each machine uses to extract the tolerance setting from SETUP.INI when a connection is established. The rules are performed in the order listed:

  1. A search is made for a section [LinkTolerance-LocalIP], where LocalIP is the IP of the local machine. If found, that section is searched for the IP of the remote machine. If the IP of the remote machine is not found, the section is searched for the name of the remote machine.
  2. If 1 did not produce a tolerance, a search is made for a section [LinkTolerance-LocalName], where LocalName is the name of the local machine. If found, that section is searched for the IP of the remote machine. If the IP of the remote machine is not found, the section is searched for the name of the remote machine.
  3. If 2 did not produce a tolerance, a search is made for a section [LinkTolerance-RemoteIP], where RemoteIP is the IP of the remote machine. If found, that section is searched for the IP of the local machine. If the IP of the local machine is not found, the section is searched for the name of the local machine.
  4. If 3 did not produce a tolerance, a search is made for a section [LinkTolerance-RemoteName], where RemoteName is the name of the remote machine. If found, that section is searched for the IP of the local machine. If the IP of the local machine is not found, the section is searched for the name of the local machine.
  5. If 4 did not produce a tolerance, a search is made for a section [LinkTolerance-LocalIP], where LocalIP is the IP of the local machine. If found, that section is searched for an entry called "Default".
  6. If 5 did not produce a tolerance, a search is made for a section [LinkTolerance-LocalName], where LocalName is the name of the local machine. If found, that section is searched for an entry called "Default".
  7. If 6 did not produce a tolerance, a search is made for a section [LinkTolerance-RemoteIP], where RemoteIP is the IP of the remote machine. If found, that section is searched for an entry called "Default".
  8. If 7 did not produce a tolerance, a search is made for a section [LinkTolerance-RemoteName], where RemoteName is the name of the remote machine. If found, that section is searched for an entry called "Default".
  9. If 8 did not produce a tolerance, default to 100% of the tolerances.

Note that these settings are specified in SETUP.INI and not in service configuration files.

You use workstation names other than IP addresses whenever possible, especially in networks where the workstations may be dual-homed, or where dynamic IPs are assigned. Because workstation names are unique, it is good practice to condition yourself to use workstation names, rather than IP addresses, even if your system configuration does not require the use of workstation names.

[LINKTOLERANCE-…] Section