FactoryTalk View ME extending a Display

Zivilin

Member
Join Date
Jun 2015
Location
Poland
Posts
7
Hello,

I've created a Global Object, and assigned it three Global Variable Parameters using (Context Menu -> Global Variable Parameter Definition) - #1 is a Valve object created in the PLC, while #2 and #3 are basically position coordinates where I want my Faceplate for the object to pop up. The Global Object has a GoToDisplayButton in which I use the parameter list to pass on {#1}, {#2} and {#3} to the display. I also define the Top and Left positions in the Connections tab as "#2" and "#3" so that the called Faceplate appears where I want it to. (The called display is of the On Top type, of course)

I define the Global Variable Parameters of an instance of the Global Object as
#1 - {[PLC_Name]Valve},
#2 - 100,
#3 - 100.

This works as expected and the Faceplate pops up at the (100,100) spot.

Here's the problem:

I want to insert another GoToDisplayButton in the Basic Faceplate to call up another Faceplate - one with advanced options. In the simplest form I want this Advanced Faceplate to pop up in the same place that the Basic one did - however, it seems that the {#2} and {#3} values, being constants, simply cannot be passed using the parameter list, and the Advanced Display defaults to the (0,0) position when called.

Any ideas on how I can make the Advanced Faceplate popup on top of, or even better right next to, the Basic Faceplate?

Is there any way to access Display properties using Expressions? Like Extracting some sort of Display.Top and Display.Left property and using that in an GoToDisplayButton Top and Left Expression to generate a new display relative to the previous one?

Is there any other way to extend a display? I tried putting both Basic and Advanced Faceplates in one display and then playing around with visibility, but the Basic Faceplate is very small by design, and the Advanced Faceplate isn't, so when I call the Basic Faceplate with the invisible Advanced one, it just leaves a large obvious Display-Background-colored spot in the place where the Advanced Faceplate is hidden.
 
My first thought is:

Why not Load another Parameter File with the Goto Button when you open the 2nd Faceplate.
 
whoa, this will be stretching what global objects and parameters were designed for.
Give it a try:

You need to use parameters as cwal61 says. I would use the Parameter list on the General tab of your GoTo button. The GoTo button that loads your first faceplate must use a parameter list, sending over the X and Y location for the second faceplate.


It's called parameter passing, where you pass parameters from one display to the next, to the next, ... etc. Any parameters that you want down the line must be passed into every display.

Use #201, #202, #203 inside of your base Global Object
Use #1, #2, #3 for the global object parameters on the reference object (faceplate screens).

It's confusing just typing this out... play around with that and you'll figure it out.
But that is no way an easy thing to do and will be a nightmare for maintenance/edits in the future (especially if it's someone else).
 
Last edited:
I am actually already using parameter lists. I'll repeat in case I wasn't clear in explaining - a picture's worth a thousand words, so I linked three thousand words worth of pictures :)

The first file is is my Global Valve Object's Global Object Parameter Definitions.
The second is the The Global Valve Object's GoToDisplayButton's General tab.
The Third is the The Global Valve Object's GoToDisplayButton's Connections tab.

In each instance of the GLobal Valve Object I define the Global Object Parameter Values as:
Instance1:
#1 = {[PLC_Name]Valve1}
#2 = 100
#3 = 100

Instance2:
#1 = {[PLC_Name]Valve2}
#2 = 200
#3 = 100

...and so on.

With this, I only need to define each tag placeholder once, in the Global Object Parameter Value, and it is passed on to the faceplate - no parameter files required. The problem is that.... well, tag placeholders seem to be aptly name - they can only pass tags? So while The #1 PLC tag CAN be further passed using the parameter list, the #2 and #3 int coordinates cannot. This means that the Advanced Faceplate I generate from the Basic Faceplate is properly connected to the Valve defined under the #1 tag placeholder, but the #2 and #3 aren't passed at all. I get a working Advanced Faceplate that pops up in the (0,0) coordinates, instead of on top of the Basic One.

@Cwal
I'll try playing around with parameter files (haven't until now), though it seems like adding N number of parameter files (N = number of valves) is more complicated than using none at all :)

@Arlen
I'm not sure why I need to use different tag placeholders within the base Global Object from those used in the faceplate - I'm using the same set of #1 #2 #3 everywhere... unless this is some sort of best practice to differentiate Global Objects Parameters from Passed Values?

It also occured to me that I can create a pair of HMI_tags (Valve1_Top, Valve1_Left) for each Global Valve Object instance, and set their default values to the Faceplate coordinates, but this is a pretty unsatisfying workaround - it means I'd have to add 2xN artificial HMI_Tags.

Global_Definition.png Global_GoTo_General.png Global_GoTo_Connections.png
 
Yes, you will have to create memory analog tags for your X and Y locations. Just use them like constants. Ex. Mem100, Mem200, Mem000, ... etc.

When you create the Global Object, the parameter numbers need to be different than what you use on the popup displays. Basically, change all the parameter numbers in the images you attached to high numbers #201, #202, #203.
It's not really important what the numbers are, as long as they are not #1, #2, #3 in your case.


When you pass parameters from popup 1 to popup 2, using the same numbers within the global object and parameter passing is a conflict. FTView ME looks at parameter #s within the global object just the same as across the display.

On Main display
{[PLC]tag} -> #1 -> Global Object -> valve display
{[PLC]tag} -> #1 -> Global Object -> {#1} parameter list for the next display

On Popup 1 display
{#1} parameter list -> {#1} for the display
{tag assigned to global object} -> {#1} within the global object
Now FTView ME sees a #1 for the display and a #1 for the global object.


Try using the memory tags for the X Y locations, and changing your global parameter numbers to #201, etc.
 
Using memory tags for the X Y coordinates basically did the trick, though I'm not really happy with adding tags when it seems like tags shouldn't be necessary. The Advanced Faceplate Displays are now popping up where I want them.

Curiously, I didn't really notice any problems with the Global Object Parameter placeholders being the same as the GoTo button Parameter List tag placeholders - at least using an PLC emulator, it seemed to work fine. But in accordance with Your suggestion, Arlen, I changed the Global tags to #201, #202 etc. - maybe it'll help avoid problems down the line :)

Thanks for the help!
 
Hi ZIVILIN,


Appreciate if you could share how you create the memory tags for the X & Y location as i currently can't get a full picture on how you do it.


Thank You and appreciate your help on this matter.
 
I could be misunderstanding the full picture, but ME doesn't allow you to next parameter file-based display calls. In other words, you can't call a parameter file-based display from one which already is tied to a parameter file. I and my boss fought this one with Rockwell for a little while until we "designed" a popup based on a "visibility" property and called it a day.

If this is an absolute must, I would recommend going to FTView SE as this limitation isn't present there.
 
@fareast1988
The memory tags were simply the HMI's internal tags of the appropriate type (integer, probably), with a start value equal to the preferred pixel displacement. So instead of passing the value 100, I passed the memory tag Valve1_Left_Displacement, whose start value was set to 100. As I wrote in an earlier post, this meant I had to create two additional memory tags to store constant values (Left_displacement and Top_Displacement) for every instance of a faceplate in the project.

@Vlad Romanov
Truth be told I don't have access to that project anymore, (Or FactoryTalk View, for that matter) and the details are fuzzy, but I did manage to somehow pass on the values already passed to one global object to another, nested global object. I know I definitely didn't use visibility as the main mechanism for displaying the second screen. I suppose the point is moot, though, because I don't have the tools or source project to check what I did specifically to make it work :unsure:
 
@fareast1988
The memory tags were simply the HMI's internal tags of the appropriate type (integer, probably), with a start value equal to the preferred pixel displacement. So instead of passing the value 100, I passed the memory tag Valve1_Left_Displacement, whose start value was set to 100. As I wrote in an earlier post, this meant I had to create two additional memory tags to store constant values (Left_displacement and Top_Displacement) for every instance of a faceplate in the project.

@Vlad Romanov
Truth be told I don't have access to that project anymore, (Or FactoryTalk View, for that matter) and the details are fuzzy, but I did manage to somehow pass on the values already passed to one global object to another, nested global object. I know I definitely didn't use visibility as the main mechanism for displaying the second screen. I suppose the point is moot, though, because I don't have the tools or source project to check what I did specifically to make it work :unsure:

I hadn't realized this thread was from 2015... My mistake.
 

Similar Topics

I have two identical machines running similar HMI projects, the only difference is one is done in FactoryTalk View Version 10 and the other is...
Replies
5
Views
197
Hello, I'm using FactoryTalk View ME V10. I created a valve as a global object with multiple parameters and when the object is being used at the...
Replies
2
Views
133
Hello all, I was modifying an HMI in factory talk and went to change a go to display button using the ... to select from a list as I had done...
Replies
4
Views
180
Hello, We recently upgraded our control server to a newer model. After the transition we are experiencing issues with our trend graphs to where...
Replies
2
Views
124
Hi, I wanted to ask is there a way to have a visibility expression use the IP address of the HMI (Dynics, not PV) to show certain elements? The...
Replies
3
Views
208
Back
Top Bottom