You are on page 1of 8

Viewer-to-Server Checklist 3.

3
Proficy – HMI/SCADA – CIMPLICITY

Troubleshooting Checklist

1. Open up the computer properties on the node to be used as the Server and as the Viewer. Verify that each
computer name of these nodes is less than 14 characters, and does not contain any special or reserved
characters such as “-“, “*”, “/”, etc. It is not allowable to have underscore characters “_” as this is an invalid
character for DNS servers as per RFC 952. It is important to validate that you have a valid node name
otherwise the CIMPLICITY router may fail to start.

2. Check the registration on the Server (Start> Programs> CIMPLICITY> HMI> Registration): The registration
must be either “Server Development” or “Server Runtime.” Check the registration on the Viewer: The
registration must be “Server Development,” “Server Runtime,” “Viewer Development,” or “Viewer Runtime.”

NOTE: Viewer-Server communications will not work if either the Server or Viewer is unlicensed and running
in the 2-hour demo mode.

3. Verify that the Version and the Service Pack running on the Server and the Viewer are the same. You can
check this via the CIMPLICITY workbench or CimView by going to “Help>About”.

4. On the CIMPLICITY Server running the project, verify that the “Enable Project Broadcast” option is checked
on the “Options” tab in the Project Properties dialogue (Project>Properties… in the Workbench).

5. Verify the following options have been checked on the “Startup Options” tab in the Cimplicity Options
dialogue (Start>Programs>CIMPLICITY>HMI>CIMPLICITY Options), on both the Server and the Viewer.

• “Accept Connections” (default: Enabled)


• “Allow uncompressed connections” (default: Enabled)
• “Prefer compressed connections” (default: Enabled)
• “Compression Value = 6” (default)

These settings must be identical between the Server and Viewer or communication will not be established.

NOTE: If the “Accept Connections” option is greyed out, the system does not have a valid base license or is
running in 2-hour demo mode.

6. On the Server, start the project via the Workbench and verify that it is running via the CIMPLICITY Options
utility on the Projects tab. The project must be running before any Viewers can connect to it.

NOTE: Two projects cannot broadcast on the network at the same time with the same name. Doing so will
result in unexpected behavior. Every project must have a unique name.

7. Verify on the Viewer node that the Viewer process is running (i.e. the CIMPLICITY router is started). You can
check this by going to CIMPLICITY Options and looking at the list of running projects. You should see
“VIEWER” in the list of currently running projects if the CIMPLICITY router is currently active and listening. If
it the “VIEWER” process is not started, then start it via the CIMPLICITY Options dialog.

8. On the Viewer, open the Point Control Panel utility and select the “Add Point” dialog. On this dialog, verify
that you can see the Server’s project name in the “Project ID” dropdown. If the project is in the dropdown,
then select it and hit the “Browse” button. If communications are properly established then you should see
a login dialog (depending on the security), as well as a list of points returned from the Server. At this point
you can select a point from the list and hit the “OK” button. The point should have a value (assuming it is
valid and available).

9. If you do not see the project name in the dropdown in the Add Point dialog, then the UDP broadcast is most
likely not making it to the Viewer. The most typical reason for this would be the fact that there is potentially
a router between the Viewer and the Server.

10. If you’re not sure whether a network router is present or not, open a Point Control Panel on the Viewer. And
go to the “Add Points” dialog. If you cannot see the project name, type in the node name (computer name)
of the Server in place of the project name, and hit the “Browse” button. If you’re able to get a login dialog
and see points via this method, then you are likely communicating over a router.

NOTE: The method of using the node name of the Server bypasses the broadcast mechanism and goes
directly to a direct TCP/IP communication method. Although this can be used, it is discouraged unless
absolutely necessary. This is due to the fact that node name resolution cannot be used with Host
Redundant Servers, as well as if the computer name changes on the Server, it can mean complete re-
qualification of the points on the screens being used.

11. If you have multiple NIC cards and/or more than one TCP/IP address (including NTRAS addresses) on your
Viewer or Server, please see the section on “Multiple TCP/IP Addresses” below.

If none of these cases apply, continue on to the “Network Communications” section below.

Validating Network Communications

1. Ping your Viewer node from the Server by node name. (i.e. Open a Command Prompt and type “ping
<VIEWER>”. Verify that the response time is less than 100 ms. Ping the Server from the Viewer and verify
that the response time is less than 100 ms. If the response time is too high, the problem could lie in the
communication speed over your network.

2. Ping the Viewer from the Server by TCP/IP address. (i.e. Open a Command Prompt and type “ping –a
<Server TCP/IP address>”.) Verify that the reply shows the Server node name. Repeat the procedure from
the Viewer to the Server. If either TCP/IP address cannot be resolved, please see the Name Resolution
section.

3. If you are running Windows XP Service Pack 2, or Windows 2003 Service Pack 1, be sure to validate that the
Windows Firewall is disabled for the duration of testing the Viewer to Server communications. This can be
done by going to the Start->Control Panel>Administrative Tools>Services, and by stopping the Windows
Firewall/Internet Connection Sharing (ICS) Service.

4. On the Server, open a Command Prompt and type “netstat –a”. Note all connections on the port 32000
range.

Ideally you should see a TCP/IP connection to your Viewer on port 32000 with the Viewer’s TCP/IP address
shown if they are connecting properly.
If you see no connections on port 32000 or only on UDP port 32000, check to be sure the project is running
on the Server and the Viewer is running as a Viewer.

If you don’t see connections on UDP port 32000 and TCP/IP port 32000 then it might be worthwhile to try
uninstalling and reinstalling the TCP/IP protocol.

Windows 2000/NT

a) Open the Network control panel.


b) On the Protocols tab, highlight “TCP/IP Protocol” and click Remove. Confirm the warning and reboot the
system.
c) Go back into the Network control panel, to the Protocols tab, and click Add.
d) Select the TCP/IP Protocol and click OK. Follow the directions to finish reinstalling and reboot the
system again.

Windows XP

a) In Microsoft Windows XP, the TCP/IP stack is considered a core component of the operating system,
and one cannot remove TCP/IP. When you view list “TCP/IP Protocol” it cannot be removed. To remove
this you need to use Windows command prompt.
b) netsh int ip reset C:\resetlog.txt
c) Open the resetlog.txt file in notepad and make sure that <completed> is present.

5. On the Viewer, open a Command Prompt and type “netstat –a”. Note all connections on the port 32000
range.

6. Ideally you should see a TCP connection to your Server on port 32000 with the Server’s TCP/IP address
shown.

7. If you see no connections or connections only on TCP, recheck the license registration on the Server and
Viewer. Then try reinstalling the TCP/IP protocol on the Viewer as described above.

Point Qualification

If you are able to see point values in the Point Control Panel on the Viewer, but the point values do not appear
on your CimView screens, your points may need to be qualified. A qualified point ID, when used in an object
expression on a screen includes the project name and the point ID (e.g. \\MYPROJECT\MYPOINT). An unqualified
point ID just specifies the Point ID (e.g. “MYPOINT”).

Using unqualified points in screens can potentially give more flexibility than using qualified points. A screen that
uses unqualified points would not have to be updated if the project’s name changed, or if one wanted to use it
with a different project than the one for which it was created.

Fully qualified points are useful on screens that are designed to show points from two or more different
projects at once.

CimEdit and CimView use the following steps to qualify an unqualified Point ID:

a) An Open Screen or Overlay Screen action can specify a project to be used to qualify any unqualified
Point IDs. When a user opens a screen using one of these actions, the project specified in the action is
used to qualify any unqualified Point IDs.
b) If a shortcut or command line is used to open CimEdit or CimView, and the “/project” option is used, the
specified project is used to qualify any unqualified Point IDs. This is an excellent qualification method to
use on Viewer nodes.
c) If the screen is in a project directory, that project is used to fully qualify any unqualified Point IDs.
Therefore, if you have copied the entire project directory over to the Viewer node, you shouldn’t need
to worry about your points being unqualified. The method by which this occurs is the CimView
application looks for a *.GEF file in the same folder as where the screen is located, as well as one
directory up. Once it finds this, it will immediately qualify any unqualified points against the name of
the *.GEF project file.
d) If you are on a Server and a single project is currently running, that project is used to fully qualify any
unqualified Point IDs. This is why point qualification is usually more of a consideration on Viewer nodes.

If you are on a Viewer, points that have not been qualified using any of these methods will be unavailable.

It is also possible to qualify points via the computer name of the server. Using node name qualification is
generally not recommended due to several restrictions.

The following restrictions apply to node name qualified points:

a) Points qualified by node name cannot be relocated to a computer with a different node name without
changing the qualification to the new node.

b) Each Server or Viewer must be able to resolve the node names for the computers with which it is
communicating to valid TCP/IP addresses (typically, by looking them up in the cimhosts.txt or hosts file. For
more detail, review the “Name Resolution” section).

c) When running multiple projects on a single node, the Project ID’s must be unique (as specified by the
PROJECT_ID global parameter). If the Project_ID for your project is already in use by another project on that
computer, you will not be able to start your project.

d) With a redundant pair of Servers, it is usually undesirable to qualify points by node name on a Viewer. The
software will give you a warning should you attempt it.. The reason for this is that upon the occurrence of a
fail-over, the Viewer will lose communications to the project. This is due to the fact that each Server in a
Host Redundant pair has a unique name.

For this reason, qualifying by node name is disabled by default on a Server redundant project. If it is still
necessary to use the node name qualification, and you are willing to lose access to your points on your
Viewers when a fail-over occurs, it is possible to override the default behavior. To do this, you will need to
create the “RTR_ALLOW_REDUND_NODE” system level global parameter with a value of “Y” on each
Viewer.

NOTE: It is worth noting that Remote Access Server (RAS) will not pass UDP broadcasts. If you’re using RAS you
will need to use the node name point qualification.

Servers Running Multiple Projects with Node Name Qualification


When there are multiple projects running on an HMI Server, points qualified with a node name will, by default,
reference the first project started on that computer. When it is necessary to reference more than one project
on a computer, a project identifier, consisting of a single character, may be appended to the node name. If a
project identifier is not specified, then a unique identifier is generated by the system on startup.

For Example:

\\MYNODE*1\MYPOINT
\\MYNODE*2\MYOTHERPOINT
The extensions *1 and *2 represent the first and second projects started on the system.

It is possible to specify an explicit ID for each project on your Server to avoid dependence on the order of
startup. To do this, specify a unique value for the global parameter PROJECT_ID in each Server project,

For Example:

Global Parameter: PROJECT_ID


Value: A

It would then be possible to use the following identifier to qualify point ID’s for this project:

\\MYNODE*A\MYPOINT

The PROJECT_ID cannot be larger than a single character.

NOTE: When you use these identifiers in expressions, you must enclose them in single quotes (‘) so that the
asterisk is not taken for the multiplication operator. Also, the sum of the node name and the unique identifier
cannot exceed a 14-character limitation.

Name Resolution (CIMPLICITY 6.1 and below)


If your Viewer or your Server are not properly able to resolve each other’s node names, or they resolve
incorrectly, then the establishing of Viewer to Server communications will not succeed.

Configuring the cimhosts.txt file in conjunction with using static TCP/IP addresses is the recommended way to
make sure that the Server and Viewer nodes on your network can resolve each other’s node names to the
proper TCP/IP addresses. Although CIMPLICITY will also ask Windows to resolve the TCP/IP address to a
computer name, the cimhosts.txt file takes precedence.

The cimhosts.txt file resides in the \HMI\etc directory in your CIMPLICITY installation folder. The cimhosts.txt file
contains a mapping of TCP/IP addresses to computer names. It is recommended to put all Viewers TCP/IP
addresses as well as computer names into the cimhosts.txt file on the Server, and to put the Servers TCP/IP
address and computer name into the cimhosts.txt file on the Viewers.

An example cimhosts.txt file might look like this:

3.26.5.192 myserver
3.26.5.5 myviewer
3.26.5.18 myotherviewer

NOTE: The addresses of other computers on the network that are not acting as Cimplicity Viewers or Servers do
not need to be included in the cimhosts.txt file. Also, if any of the Viewer or Server nodes have two or more
network cards, then please see the section on “Multiple TCP/IP Addresses”.

Occasionally, after setting up a proper cimhosts.txt file, a Viewer may still be unable to resolve the Server name.
In these cases, it may be helpful to add the TCP/IP addresses and node names of both Viewer and Server to the
Windows hosts and lmhosts files on both the Viewer and Server computers. Both of these files are found in the
WinNT\system32\drivers\etc directory.
Name Resolution (CIMPLICITY 6.2 and above)
In 6.2 (or higher) of the product the behavior has changed. It is no longer required to manually change add the
entry into the cimhosts.txt file. The node name to TCP/IP address resolution can be configured in the Cimplicity
Options utility on the Network tab. Simply add the Node name and the TCP/IP address for each node that the
node will communicate to. As well the behavior for the name resolution has changed. There is no longer a
lookup via Windows for a broadcasted project. When the Viewer receives the broadcast it will attempt to
connect to the originating TCP/IP address in the broadcast. When the connection information is replied back
from the Server it will then pass over it’s computer name, which the Viewer will then use for it’s name
resolution.

Multiple TCP/IP Addresses


If either the Server or the Viewer has multiple network cards and therefore multiple TCP/IP addresses
on the network, check the following points:

a) Verify that each Server and Viewer has a cimhosts.txt file configured, as outlined in the Name Resolution
section. Remember that only the address for the card that is being used for Cimplicity communications
should be present in the file.
b) By default, in a non Cable Redundant configuration, the CIMPLICITY router will bind to the topmost network
adapter in the TCP/IP stack (even if the network adapter is disabled). In order to avoid the problems that
can arise from binding the wrong adapter and thereby having broadcasts go out to the wrong network it is
recommended that you configure the BIND_ADDR global parameter in conjunction with the cimhosts.txt
file to force the binding to a known adapter.

NOTE: Do not rely on the fact that the CIMPLICITY router will bind to the topmost adapter in the TCP/IP
stack as this can be subject to change as the system is maintained.

To see the current TCP/IP stack configuration you can do the following:

a) To see the TCP/IP stack configuration on Windows 2000 or XP, open the Network and Dial-Up
Connections control panel. On the Advanced menu, select Advanced Settings.

b) To see the TCP/IP stack configuration on Windows NT, open the Network control panel and switch
to the Bindings tab. On the Show Bindings for box, select “all protocols”. Expand the TCP/IP
Protocol, and the binding order should be visible.

If you are not using Cabling Redundancy, it is required to configure both the BIND_ADDR system global
parameter and the cimhosts.txt file to restrict the CIMPLICITY router to broadcasting out of a single
network card.

If you are using CIMPLICITY 5.0 or later, use this procedure to set the BIND_ADDR global parameter
and configure the cimhosts.txt file:

a) In the tree in the left pane of the Workbench, navigate to Advanced > Global Parameters. Double-
click “System”.
b) For the parameter ID, type “BIND_ADDR”
c) For the value, type the address of the proper NIC card, (e.g. 192.168.1.1).
d) Do a configuration update to complete the process.
e) Open the cimhosts.txt file (see the section entitled “Name Resolution”) on the system and verify
that the Node’s own TCP/IP address and computer name are topmost in the entries. The TCP/IP
address in the cimhosts.txt file must match the one chosen for the BIND_ADDR global parameter
or the binding will not take effect.
f) Restart the CIMPLICITY router by either restarting the Viewer process via CIMPLICITY Options, or
the CIMPLICITY Project via the workbench.

If you are using CIMPLICITY 4.01 or earlier, use this procedure:

a) From the Workbench, choose Tools > Command Prompt. At the command prompt type “cd ..” to
go up one directory level. Continue doing this until you are in the CIMPLICITY\HMI directory.
b) Now type “cd data”. You should be at a command prompt that is similar to
“C:\CIMPLICITY\HMI\data”.
c) Type “idtpop glb_parms”. After the idt popping process is complete, type “notepad glb_parms.idt”.
d) Add the following line in the glb_parms file: “BIND_ADDR|1|<NIC_ADDRESS>” where
<NIC_ADDRESS> is the address of the correct network card that you would like to bind the
CIMPLICITY router to. Save your changes and then exit Notepad.
e) From the command prompt type “scpop glb_parms”. Now exit from the command prompt.
g) Open the cimhosts.txt file (see the section entitled “Name Resolution”) on the system and verify
that the Node’s own TCP/IP address and computer name are topmost in the entries. The TCP/IP
address in the cimhosts.txt file must match the one chosen for the BIND_ADDR global parameter
or the binding will not take effect.
f) Restart the CIMPLICITY router by either restarting the Viewer process via CIMPLICITY Options, or
the CIMPLICITY Project via the workbench.

If you are using CIMPLICITY 6.2 or higher, use this procedure:

a) Open the CIMPLICITY Options utility and navigate to the “Network” tab.

NOTE: The “Network” tab will only appear if the system has more than one assigned TCP/IP
address.

b) From the list of detected TCP/IP addresses add the appropriate address to the list of “Used
Connections”

NOTE: The BIND_ADDR method in conjunction with the cimhosts.txt file has been deprecated as of
CIMPLICITY 6.2. The binding of the router to a single TCP/IP address is now done through the Cimplicity
Options dialog on the Hosts tab. To configure the system for a single NIC broadcast you simply choose
the appropriate network card TCP/IP address and specify this as a host. For the cable redundancy you
would choose the two TCP/IP addresses to use. This is documented in the help files for CIMPLICITY 6.2.

NOTE: It is also important to be aware that when you are using computer with multiple TCP/IP addresses, the
broadcast address for the UDP Project broadcast will change from 255.255.255.255 to the network card’s
network class broadcast. For example if the network card had a TCP/IP address of 10.1.1.1, then the project
broadcast (UDP) would be to the address 10.255.255.255.

How Broadcast functionality works

The CIMPLICITY Broadcast functionality uses a combination of the TCP/IP and UDP protocols in order to
accomplish Viewer to Server communications.

When a Server first starts a project that has the Project Broadcast functionality enabled, it sends out a UDP
broadcast onto the network on port 32000. This broadcast contains specific information about the project such
as the Project Name, the source computer name, and the version of the software running on the source.
All Viewers actively listen for these UDP broadcasts on the network as long as the CIMPLICITY router is started.
When a broadcast is received the Viewer will look to see if it has any points on screens (or otherwise) that are
qualified against the project for which it has received the broadcast. If the Viewer does find that it has points
qualified against this project, it will then attempt to establish a TCP/IP connection to the Server on port 32000 in
order to obtain the point data. Once the connection is established the Viewer will send over a list of all of the
points it is interested in, and the Sever will then update a queue with these point updates that the Viewer
processes.

It is worth noting that when a Viewer also starts up on the network, it also sends out a UDP broadcast. This
broadcast notifies any Servers on the network to re-send out the project broadcast information so that the
Viewer can connect if necessary.

NOTE: By default the Server will do a Project broadcast every 75 seconds.

Multicast Functionality
The Multicast functionality is nearly identical to that of the Broadcast functionality. However, instead of sending
out the Project broadcast information on port 32000 via the UDP protocol, the broadcast will go out on a
specific Multicast TCP/IP address. By default this address is 224.0.0.29. Multicast is a defined protocol by which
a broadcast type of information is allowed to be passed by a network router (assuming it is configured
properly) to multiple networks at once. Viewers will, by default, listen on the default Multicast TCP/IP address at
all times just as they would listen for the Project broadcast on port 32000 and will attempt their connections on
TCP/IP port 32000.

There are three global parameters that dictate that Multicast configuration. These parameters must be
identical on the Viewers and the Servers for the Project broadcast mechanism to work using multicast.

The parameters are as follows:

MULTICAST_HOSTNAME
MULTICAST_IP_ADDRESS
MULTICAST_TTL

For further information on these parameters please reference the CIMPLICITY Help files.

Viewer to Server Communications over a Network Router


When CIMPLICITY Projects broadcast their point information, they do so using a UDP broadcast on port 32000.
UDP is an acronym for “User Datagram Protocol”. It is a connectionless protocol that is faster, but less reliable,
than the standard TCP/IP protocol. It is faster since it does not actually establish a connection between the
sending and receiving nodes. It is considered a “broadcast” protocol as no response is expected once the
broadcast is sent out. When a Viewer is on the same network and the same TCP/IP subnet as the Server, it
receives these packets via this broadcast mechanism.

If the Viewer and Server are each on opposite sides of a network router, these broadcasts may not be passed.
In this situation, if necessary, it is possible to use direct TCP/IP communication. It is possible to achieve this by
using the Server’s computer name to qualify the Point ID’s instead of the project name qualification.

If the Viewer and Server are not on the same network and subnet, qualify your points using the node name
rather than the project name, e.g. “\\MYNODE\MYPOINT”. (See the “Point Qualification” section for information
on how to qualify points.)

You might also like