Communications between two seperate WonderWare Applications

SandwichMagic

Member
Join Date
Jun 2015
Location
Central California
Posts
96
Hey everyone. I am wokring on a supervisory application for our plant, and I am on the verge of cracking the final piece of the app that I have been working on for a few days now. So the goal of this screen is to display what thin clients are currently running, which I believe that I have the groundwork laid down for pretty well. The issue that I am running into, however, is that My functions are client specific (as they should be), and they will only be in the application that the client is running. I need to transfer these values to our application running in our engineering offices. Is there any way to have a tag modified in an application and the same modified tag to display in another? The way I would imagine you would do this is through an access name of some kind, but so far the only access names I have encountered are directly to PLC's. But is there a way to transfer that information between applications?

Thank you for any input.

-Conor
 
So after a little bit of my own research, I seem to have left out a key piece of information in my post, that being that we use ArchestrA IDE along with intouch. So doing in my reading, I read that you could create custom symbols and use InTouch tags as a data source for them. Is there anyway that I can just put a tag in there without making a symbol for it? I have my galaxy configured as a seperate tag source in InTouch, I just need to place the tags I need into the Galaxy. Is there any help anyone can provide in regards to that? or maybe just some advice that im barking up the wrong tree?

Thank you,

-Conor
 
Are you running view engines?
If so, you could create a UDA on each instance, then write to that.
Then point to ViewEngineName.UDA from your engineering office app.

If your not using view engines, then start.!!
 
We are in fact using view engines. Although I am not sure which ones I have to put the UDA in? So when I open up ArchestrA IDE I am given the templates window, and then the derivation window. When I develop an app, I develop it in the templates and then deploy in the derivation menu. When I looked for view engine stuff, I see that it was in multiple places. It had a view engine for each of our terminal servers in the derivation menu, but also there was a "$[CompanyName]ViewEngine" under the "System" Folder in the templates menu. The ViewEngines for the terminal servers were inside a tree labeled "$[CompanyName]ViewEngine", so I think that I can assume that like deploying regular applications to the terminal servers, that all of those use the template of "[CompanyName]ViewEngine". So I would add the UDA's into "$[CompanyName]ViewEngine", and then deploy them out to the terminal servers like an application? I just need a little assurance, I am truthfully only an intern here, and I would like to have the plan totally laid out before I present it to my superiors. I dont believe that we really have done anything like this in the galaxy before this, so I have to be extra careful.

Thank you so much for the direction and help you have given me. I think I am really close to getting this thing going!

-Conor
 
Hmm, I skim read your original comments about the thin clients.
This would be a bit more difficult, as multiple clients will be utilising the same View Engine.
I think there is still a way, but I would have to have a think & do some checking.
You could possibly get the session ID and/or user name, but the username dont mean much if multiples are active at same time (if permitted...)
 
So in terms of the scripting I Actually have all of that done already. I basically use the funciton TseGetClientNodeName which returns the windows recognized name of the PC. I have tested this and it does return different values depending on whatever thin client is accessing it. The will run once a minute in all of the applications out in the plant, and the script will just confirm which thin client is accessing the application at that time, and when it confirms it, I will reset an integer tag back to 0. In our main engineering application, however, the only script that would run would be also minutely, and it would increase those values by one on each execution. So if it doesnt get reset in 3 minutes, we can assume that thin client is non responding and therefore has a problem. I thought this was a pretty good idea, it minimizes the tags i need to add to existing applications and scripts. The issue that I ran into, however, is that I cannot access the memory data of another application from our one in engineering. I just need to look at the value of about 30 or so integer tags in our engineering application whose data is set/reset by a different application. I initially looked at the WWPoke function, but there is a big stupid warning on it that says "Don't use WWpoke for interacting with other applications, use access names for that." So I looked into configuring an access name, but the issue I ran into was I had no idea what to put for a topic name/application name or even an IP address! This led me to think that I should be using the "galaxy" access name, but when I tried that it worked even less than before. I figured that I would have to put those tags into the galaxy somewhere, but alas, we come to my first post. I apologize for not being as clear as i could have from the beginning, hard to decide which information is necessary and what is erroneous. o_O

Thank you for your assistance, it is greatly appreciated.

-Conor
 
Allrighty, So after some more of my own research, I have configured our galaxy as a remote tag source (with the help of the help file in Intouch) but for the life of me I just cannot find the answer I am looking for. So to simplify things, all I need to do is simply write a value to a tag in one application, and read/write to that same tag in a different application.

I didn't think this would be such a hassle to be honest (but then, when is it ever as easy as we think? :rolleyes:). So I believe my assumption that you have to use the access name of galaxy, for whenever I select a tag from the galaxy tag source, all I get in the left panel are the deployed applications and viewengines, and when I look inside of them for tags, all I find is diagnostic information about that individual object, stuff like scan time, deployment status, etc. I just want to see a specific tag that is within the application, but none of those seem to be showing up.

Here is the code I am writing:


This code will be sent out in the applications running on the thin clients out in the plant. It basically sets a tag value "NodeName"Heartbeat back to 0.


DataChange Script: $Minute (so it executes every minute)

Code:
{This defines ClientID and RunningOnClient as variables local to only this QuickFunction}
DIM ClientID AS MESSAGE;
DIM RunningOnClient AS INTEGER;
{This sets the value of ClientID and RunningOnClient, where ClientID is equal to 
the node name of the computer/thinclient that Windowviewer is running on, and 
RunningOnClient is hi if the application is running. A little redundant, but hey, you never know.}
ClientID = TseGetClientNodeName();
RunningOnClient = TseQueryRunningOnClient();
{This will set the value of the tag "NodeName1"Heartbeat to 0}
IF ClientId == "'NodeName1'" AND RunningOnClient == 1 THEN "NodeName1"Heartbeat = 0;
ENDIF;
This code is the code that will run in our engineering application. It basically increments the heartbeat, and if the heartbeat reaches a certain threshold, we can assume the communications to the node have failed.

DataChange Script: $Minute (So it basically runs every minute.)

Code:
{This increments the heartbeat. When the heartbeat reaches 4, the HIHI alarm of the tag 
is triggered and sent to the alarm viewer."
"NodeName1"Heartbeat = "NodeName1"Heartbeat + 1;
I have tested the script locally, and it works exactly how I think that it should. The only piece I am missing is that it doesn't work across applications. I can reset the timer but only for my own node, not for others when I activate it for others. And as I increment both, it is only updated in the one i have manually updated. I need it to increment the same across all applications, and be set to zero across all applications as well. I am driving myself crazy because I think that this should be simple, but I am just not getting it, I suppose. After that clearing up, hopefully someone can point me in the right direction on how to set up a tag to be read/written to by multiple applications at once. I would greatly appreciate it, truly.

Sincerely,

Conor
 
Hi Conor,

Based on the information you have provided, it's a bit confusing as to whether you're using Wonderware InTouch independently of Wonderware System Platform or if the instance of InTouch you are using is fully developed within System Platform using App Server objects/attributes. There are architecture methodologies for both, but what you are attempting to do sounds like it would be more appropriate in the latter.

My recommendation would be reaching out to Wonderware NorCal (www.norcal.wonderware.com). I see you are located in Central California, and as such Wonderware NorCal is in the best position to assist you locally. As your company obviously uses/owns Wonderware products, your company/supervisors most likely already have a relationship established with Wonderware NorCal. They will have System Consultants that may be able to offer up guidance on your project, or direct you to the appropriate training resources.

Regards,

Jeremy
 
Hey Jeremy, Thank you for your reply!

Truth be told, I should have updated this thread a week or so ago, We just decided to use a PLC to store the value of the tags, then we just configured a new access name to . I believe that the setup we have is capable of working alongside an application server, but we pretty sparsely use that functionality for this reason or the other. I wasn't a part of the systems creation, I simply work on it now. Yes, we do work with Wonderware NorCal, but be it stubbornness or knowing what it's like to be in tech support, I try and call them as little as possible. I appreciate the suggestions and advice though.
 
Hi Conor,

No worries, glad to hear you were able to find a solution. Let me know if you have particular questions or concerns about System Platform/App Server. I'd be happy to answer what I can.

As a side note, the System Consultants are typically part of the Sales/Account Teams and are focused on architecture/project support. Different group than Tech Support, which usually handles troubleshooting bugs/errors.

Regards,

Jeremy
 

Similar Topics

Multiple PLCs in our plant communicate using either MSG instructions or Produce/Consume. Is there an industry best practice for documenting this...
Replies
3
Views
758
I am not great with Siemens and Profibus so looking for some advice. I have a project where I need to communicate approximately 20 status words...
Replies
4
Views
1,655
Hi Everyone, Helping out a friend out here and need some opinions. 2) AB PLC's separated by about 5 miles line of site. They are used for...
Replies
9
Views
2,745
Hi Guys, So I have been put on a project where there is a set of temperature controllers connected via modbus rtu back to a Wonderware HMI. Now...
Replies
3
Views
1,773
We have an application where a PC application needs to exchange text string messages with a S7-300 Siemens processor via TCP or UDP...
Replies
0
Views
2,099
Back
Top Bottom