Jump to content

InTouch - UniOPC Issue(s)


Recommended Posts


I have a Vision 350 PLC and a Dell Latitude D520 laptop running the latest version of VisiLogic on XP Professional SP2. I have InTouch/Wonderware Version 9.0, and OPCLink 8.0. I'm using UniOPC, the latest version available from Unitronics, the website. I am communicating with the PLC via TCP/IP and I am able to download and program the PLC with no difficulty.

My issues:

I have used the InTouch/UniOPC configuration document that outlines how to set up OPCLink and InTouch to communicate. I have set my tag addressing both ways, one using a PLC Name of e.g. "PLC1" and a tag of "i.MI1" and the other way using an additional dot at the end of the PLC Name e.g. "PLC1." and NO dot in the middle of the PLC address for the tag, e.g. "iMI1".

In both cases, I see evidence in UniOPC that part of the system works. I see the Event message "New Client Connected", and "Added New Item PLC1.iMI1". But, I don't get any value returned, (MI1 is actually the system clock seconds, (I'm using a Store Block to move SI 30 into MI 1) and is on display on the PLC screen, updating constantly). OPCLink reports that the Status is GOOD but that there are errors.

The OPCLink I/O Data Monitor shows that the item is being accessed, but when double-click on the individual item, the status window says "data quality: UNCERTAIN", "substatus: No specific reason is known", and "limited: no".

- What am I doing wrong/missing?

I don't understand the difference between the Channels in Channel configuration i.e. TCP/IP Listen and TCP/IP Call except that I know that I can't have both with the same PLC name, so I have to pick one. I picked TCP/IP Call because I can specify the TCP/IP address of the PLC.

- Should I be doing something else?

- Do I have to explicitly name the PLC in my addressing for tags like "[PLC1].MI1"?

- If I am running both UniOPC and OPCenum on a single computer, do I have to remove or disable OPCenum?

Thanks for any and all help. I really want this system to be a success.

Fred Mason

Link to comment
Share on other sites


Syntax of a Tag:

The syntax of the tag is combined from PLC name dot operand name and address.

In your case if the PLC name is PLC1 and you wish to use MI1 then the tag name is PLC1.MI1

You can find also detailed information in UniOPC help under topic OPC Client: Item Syntax

TCP Call Vs TCP Listen

TCP Call - The PC (UniOPC) will initiate the connection with the PLC. (The PLC must have at least one socket configured to TCP slave)

TCP Listen - The PLC will initiate the connection with the PC. (The PLC must have at least one socket configured to TCP master and using the function TCP connect)

In most cases you will use TCP call meaning when you start UniOPC it will connect to the PLC.

Link to comment
Share on other sites

Hi Ofir: Thanks for your reply; much appreciated.

I'm sorry but syntax doesn't solve the problem. The document in the support area that outlines configuration of OPCLink and InTouch says to configure the Topic and tag address as follows:

Topic Tag Address


PLC1 i.MI3


PLC1. iMI3

where PLC1 is the name of the PLC and "i" designates an integer.

The online documentation for UniOPC shows it as PLC1.MI3 without the "i" for integer designation. So I tried it both ways per below:

Topic Tag Address





None of these work. Sometimes OPCLink shows the topic as GOOD and then it times out and fails. Other times, it is reported immediately BAD.

I am using System Time Seconds (SI 30) as my target value, and have also tried moving this to an MI register.

I am using TCP/Call as my channel in UniOPC. I even explicitly declared Socket 1 as Slave on 20256 on my Comms initialize rung, even though this seems to be the default anyway.

Do you have any more ideas?


Fred Mason

West Coast, Canada

Link to comment
Share on other sites

  • External Moderators

Hi Fred,

I have a couple of suggestions for you that might help things.

- Check you have an Access Name for the PLC


1) Open InTouch WindowMaker

2) Click on the "Special" Menu (Top Menu Bar)

3) Click on "Access Names"

4) Make sure your PLC Name is listed there - If not, continue on the steps

5) Click "Add"

6) In the "Access" Box (Top of the Window), type the name you would like for the "PLC" (Doesn't have the be the actual PLC Name)

7) Leave the "Node Name" Blank

8) Set the "Application Name" to "OPCLink" (Without Quotation Marks)

9) Set the Topic Name to the same as the "Access" Box (The name you would like for the PLC in Step 6)

10) Check "SuiteLink" as the "Protocol to Use"

11) Check "Advise All Items" for "When to Advise Server"

12) Click the "OK" button and your Access Name is now Setup!

- Check that your OPCLink Topic is setup correctly


1) Open the OPCLink Application

2) Click on the "Configure" Menu (Top Menu Bar)

3) Click on "Topic Definition"

4) Click on your Topic that has been setup for the PLC - If not topic is added use the Following Steps

5) Click the "New" Button

6) Set the "Topic Name" to your preferred "PLC" Name (Same as the Access Name in InTouch)

7) Leave the "Node Name" Blank

8) Select "UniOPC.Server" from the "OPC Server Name" Drop Down Menu

9) Set the "OPC Path" to the PLC Name as set in UniOPC and a '.' on the end (For Example: "PLCName.")

10) Set the "Update Interval" to anything 1000ms or more (Less than 1000ms can cause UniOPC crashing issues)

11) Check the "Poke Asynchronously" Box is Ticked

- Double Check your Update Rate in UniOPC


I have found in the past in UniOPC that my "Update Rate" for a PLC was incorrect as I had it set to "00:00:00:01" which means 10ms!!!

Double Check that your "Update Rate" for the PLC is at least 1 Second or more ("00:00:01:00")

- Make sure your InTouch Tags are Defined Correctly


When defining an InTouch Tag, remember to Select your PLC as the "Access Name"

The following lists how your "Item" or "Tag" Syntaxes should be:

MB = dMB<address> (Example: dMB0119)

MI = iMI<address> (Example: iMI0020)

ML = iML<address> (Example: iML020)

MF = rMF<address> (Example: rMF05)

Timer Preset = mTP<address> (Example: mTP015)

Timer Current = mTC<address> (Example: mTC150)

I try to keep my Addresses padded with Zeros '0' as it prevents UniOPC for crashing at times as well (Not Compulsory, but it helps)


Hopefully this post has enough information to help resolve your issue! Sorry about it being so LONG, but it lays out the process of checking everything really easily ;)

If you get through this and are still having issues - if the computer is connected to the internet, I can help by remotely assisting you free of charge to fix the issue.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...