FactoryTalk View Studio ME Multiple Station Control From One Screen

kloc5

Member
Join Date
Apr 2014
Location
St Louis
Posts
25
Hello,

I am looking to control 50 identical stations from an Allen Bradley HMI using FactoryTalk View Studio ME 11.00.00. The Stations are divided into 10 Zones of 5 Stations each (i.e. - Zone 7, Station 3). Each station has several cylinders and a couple motors. I would like to avoid having to create 50 screens as they are all identical except for their tag names.

I've looked into Parameter files, but from what I've seen, I would have to still create the 50 screens (or 50 copies of a global object), and then select a different parameter file when pressing one of 50 GoTo Screen buttons for each of the 50 screens.

What I would like to be able to do is to have two numerical entry boxes on a main screen to select the Zone number and Station number. Then when pressing a single GoTo Screen button, this would go to my one Station Control Screen and load the selected Zone and Station parameters into the tags on that screen.

Any help would be greatly appreciated.
 
Hello,

I am looking to control 50 identical stations from an Allen Bradley HMI using FactoryTalk View Studio ME 11.00.00. The Stations are divided into 10 Zones of 5 Stations each (i.e. - Zone 7, Station 3). Each station has several cylinders and a couple motors. I would like to avoid having to create 50 screens as they are all identical except for their tag names.

I've looked into Parameter files, but from what I've seen, I would have to still create the 50 screens (or 50 copies of a global object), and then select a different parameter file when pressing one of 50 GoTo Screen buttons for each of the 50 screens.

What I would like to be able to do is to have two numerical entry boxes on a main screen to select the Zone number and Station number. Then when pressing a single GoTo Screen button, this would go to my one Station Control Screen and load the selected Zone and Station parameters into the tags on that screen.

Any help would be greatly appreciated.

You could have one screen with some indirect addressing and mapping code in the PLC.

Have a Numeric Entry, so that you can jump to any device (1-51), or forward or back buttons (+1 and -1).
 
I've looked into Parameter files, but from what I've seen, I would have to still create the 50 screens (or 50 copies of a global object), and then select a different parameter file when pressing one of 50 GoTo Screen buttons for each of the 50 screens.
The whole point of parameterization is that you don't need 50 screens/objects, you just need a single one. You do still need a way to load the correct parameter (set), and for obvious reasons 50 goto buttons is undesirable.

EDIT: Although you could use 50 GoTo buttons overlaid on top of each other, with each one only visible when the appropriate Zone & Station are put in your numerical entry boxes.
What I would like to be able to do is to have two numerical entry boxes on a main screen to select the Zone number and Station number. Then when pressing a single GoTo Screen button, this would go to my one Station Control Screen and load the selected Zone and Station parameters into the tags on that screen.

Any help would be greatly appreciated.

Look at the Parameter File & List settings under Global Connections. You can set a tag which will control what parameters are used when the screen is loaded.

You'd probably prefer to avoid loading a parameter file (you'd need 50 different files...), but if the differences between your addresses are few & straightforward enough you shouldn't need to.

For example, if the only thing that changes between tag names for the stations is the zone and station #s, then you could set the tag containing your zone # as Parameter tag #1 and the tag containing your Station # as tag #2. Then in your objects wherever you have the zone # put [#1] instead, and wherever you have the station # put [#2] in its place.
 
I guess what I'm missing is if I don't have 50 unique GoTo Screen buttons or a Screen List Selector, and instead only had the one screen...what action would load the desired Zone and Station numbers into #1 and #2 and therefore update the object tags on this Station Control Screen?

Can you write to the parameter placeholders (#1, #2) directly? I was under the impression that you would have a separate parameter file for each station.

For example, for Zone 7, Station 3... I would have a parameter file named Z7S3 that would contain the following:
#1=7
#2=3

Then duplicate this 50 times changing the values of #1 and #2. Then I would select the appropriate parameter file when navigating to its cooresponding screen.

It seems like there has to be an easier way.
 
It could be easier, depending on your tag names. Can you provide an example of one of your tag names for two different stations. For example:

Zone4_Station2_Motor_Start
Zone7_Station3_Motor_Start

If the tag names are identical except for the unique zone and station number, then this gets much easier. What plvlce was getting at was that we could replace part of a tag name instead of a full tag name. For example:

Zone#1_Station#2_Motor_Start

The #1 and #2 could be plugged in from your numeric input fields without even needing parameter files.



OG
 
Last edited:
I guess what I'm missing is if I don't have 50 unique GoTo Screen buttons or a Screen List Selector, and instead only had the one screen...what action would load the desired Zone and Station numbers into #1 and #2 and therefore update the object tags on this Station Control Screen?

Can you write to the parameter placeholders (#1, #2) directly? I was under the impression that you would have a separate parameter file for each station.

For example, for Zone 7, Station 3... I would have a parameter file named Z7S3 that would contain the following:
#1=7
#2=3

Then duplicate this 50 times changing the values of #1 and #2. Then I would select the appropriate parameter file when navigating to its cooresponding screen.

It seems like there has to be an easier way.
The parameter list feature allows you to set a limited number of parameters directly, instead of loading a whole parameter file.

You can't necessarily write to the placeholders directly, but you can point them to a tag which you then write to prior to loading the display.

iirc it should be as simple as putting your tags in the Parameter list in the Goto Display Button Properties.

So it would look something like

ZoneNumberTag, StationNumberTag

When you press the button, it would take whatever value is currently in ZoneNumberTag and replace every instance of [#1] with that, and the same with StationNumberTag and [#2].

(I don't deal with parameter lists much, so my syntax might be a little off).

Note that parameters are loaded when the screen is opened, so you would have to re-load the screen in order to change stations.

EDIT: As OG says more directly and I referenced earlier, this only works if all your tags are identical except for the numbers we are changing.
 
Last edited:
In this example, ZoneTag would be the tag your numeric input is writing to when selecting a zone. StationTag would be the station.

While the Parameter List doesn't make it clear visually, this is the same as:

#1 = ZoneTag
#2 = StationTag

The first tag in the list goes to the lowest numbered placeholder.

OG

Parameter List.JPG
 
Thank you everyone for your help!

It looks like this is what I was going for. I posted some pics of the general idea. When testing the application, the screen title updates based on the numeric entry on the main screen. However, I can't seem to get the Multistate Indicator to work. If I put hardcoded values into the #1 and #2 it works, but when I have #1 and #2 equal to the Zone and Station number tags it doesn't. I believe it is evaluating the tag name instead of the tag value. I tried with and without the []. Does anyone happen to know the formatting for this, or I am totally off?

Finally, this may be for another thread, but is there something similar that could be done to consolidate the PLC code? I've considered several options:

1. Putting each Station in its own plc program and having identical local tags (i.e. -Cylinder_Extend_PB in program Z9_S4). This could cause issues when I need to use these local tags elsewhere, like seeing if all stations are ready before starting the system, etc.

2. Using an AOI for each station, but I think that would be a mess and I wouldn't be able to directly use I/O and Global Tags.

3. Using a UDT matrix that is (i.e. - Station[9,4].Cylinder_Extend_PB), but then I also wouldn't be able to directly address the I/O.

4. Use standard addressing (i.e. - Z9_S4_Cylinder_Extend_PB) and duplicate the logic 50 times using search / replace.

Thoughts?

Thanks!

GoTo Station Screen.png Screen Title.png Station Indicator.png
 
... I can't seem to get the Multistate Indicator to work. If I put hardcoded values into the #1 and #2 it works, but when I have #1 and #2 equal to the Zone and Station number tags it doesn't. I believe it is evaluating the tag name instead of the tag value. I tried with and without the []. Does anyone happen to know the formatting for this, or I am totally off?

...Finally, this may be for another thread, but is there something similar that could be done to consolidate the PLC code? I've considered several options:

You've got the right idea. You only add the #1 or the #2. No other characters are needed. See my post #4 as an example. What I do is go select the tag normally, then double click in the connection/indicator field and replace the address portion with my #1. I don't change anything else about that tag name.

Since your text is displaying correctly I would assume that the Goto button Parameter List is correct. Can you show us the full tag name without using the placeholder and again with the placeholder?

As for consolidating the code, Solution 1 is my choice whenever possible. There is a method to make a local tag accessible outside of its own program. I don't know that I end up with less code, but the code is much more structured using individual programs.

OG
 
In Parameter List for GoTo Screen Button

{::[PLC]Program:MainProgram.HMI_ZONE_NUMBER},{::[PLC]Program:MainProgram.HMI_STATION_NUMBER}



Multistate Indicator on Station Screen:

{::[PLC]Program:MainProgram.Z#1_S#2_STATUS}


Also, as far as the PLC Code and option 1, is there an actual way to get local tags outside of the local program or are you referring to mapping them to global variables in the local program?
 
Multistate Indicator on Station Screen:

{::[PLC]Program:MainProgram.Z#1_S#2_STATUS}


Also, as far as the PLC Code and option 1, is there an actual way to get local tags outside of the local program or are you referring to mapping them to global variables in the local program?

What would that tag name look like if you were not using parameters? For like Zone 3 Station 2. What would that tag name be?

And I misspoke (miswrote?), Local Tags I don't believe can be accessed outside that one program, but input and output parameter tags can be accessed by other programs.

OG
 
Ok, you aren't crazy. I'm setting it up here and the Multistate indicator isn't working on mine either. I'm seeing if I can resolve. It appears that it is inserting the tag name into the placeholder instead of the tag value. But the text objects on screen are working just fine.

OG
 
Last edited:
Ok, so the Multi-state indicator is just acting weird. For my text object that has an embedded variable, the Parameter List is passing the tag values to the placeholders. I am using two placeholders: #1 and #2. So the text object is working correctly.

But, on that same display, it is passing the tag name to the multi-state indicator. Not the tag value. I can see it in the error message. I've created analog HMI memory tags and I have also created and used DINT tags in the controller for my tags being used in the Parameter List. I get the same result with both. Text object works. MS Indicator does not.

Rockwell has a tech note that mentions something like this, but the scenario they post is different and doesn't really apply here.

I've even tried creating a Local Message object as an alternative to the MS indicator. Same result there too.

I've never really used Parameter Lists all that much. It looks like they have some flaws.

Oh and the tag name I am using is: {::[CPU]Program:Test.Z#1_S#2_STATUS}. I point to the tag in the controller and add the #1 and #2 to the existing tag name. I've entered and re-entered that name at least a dozen times. And again, it is working for the text object. This is using FT Studio version 12.

And, I have tried just using one placeholder. The screen was created new and has no global objects or anything else using placeholders. Only a text object, a MS indicator, and a Goto Screen button to return to the main screen. Nothing else. I'm open to ideas on how to fix this.


OG
 
Last edited:
Thank you for all of your work on this Operaghost. Good to know I'm not crazy.
Anyone else have a solution for changing the tags in multistate indicators and pushbuttons on a screen, based on the value of another tag (i.e. - station #)?
 

Similar Topics

Hello, I made a change in alarm setup in factory view studio, where I changed a alarm message text. After that I made a run application and...
Replies
0
Views
134
Hi all, I'm having an issue with connecting View Studio emulation to a real PLC. I am running View Studio 8.01 on a Hyper-V virtual machine...
Replies
0
Views
262
Hello. I have a Project I'm doing in Factorytalk View Studio. One of my displays I created has a bunch of red x's on all of the objects I created...
Replies
6
Views
699
So, I'm new to the PLC world (fresh graduate) and at my job I've been pretty much only helping out the other programmers with simpler tasks while...
Replies
1
Views
627
Good morning, I have a project coming up that will require my HMI runtime to toggle from English to Spanish via selector switch. What is the...
Replies
0
Views
461
Back
Top Bottom