Popup waiting message window

hello again ignition community,

I am writing to you because I want to make a windows message for the user to wait until the maneuver is completed.

The issue is that there are several users operating in the Vision, and we have 14 racks. If we interact many times with the same tags, it generates problems.

What I have done is the following:

  1. counter from 1 to 100, with a progress bar.
  2. If we press the button, it displays the window and locks the button until the counter finishes.
    image
  3. I have created a tag_memory_array with 14 boolean values (1 if enabled 0 if not)
    image

Script that activates all buttons

started = system.tag.readBlocking("[BALEN]System/Display/Progress_Bar/General_Racks/Toggle_ED_button_array[14]")[0].value
if event.source.indicatorValue != event.source.controlValue:
	if started == True:
		for i in range(0,15):
			system.tag.writeBlocking("[BALEN]System/Display/Progress_Bar/General_Racks/Toggle_ED_button_array["+str(i)+"]",False)
			system.tag.writeBlocking("[BALEN]System/Display/Progress_Bar/General_Racks/Control_Position["+str(i)+"]",event.source.controlValue)
			system.tag.writeBlocking("[BALEN]System/Display/Progress_Bar/General_Racks/Counter",0)

PROBLEM:
To get straight to the point of what I want: the button works and interacts with the memory_tags, which makes the button locking logic and the informative maneuvering message to be displayed without generating problems. However, the problem is that when I click the button, It locks for all users, and I want it to only lock for the client that is currently operating on it. Is this possible, and is there any way to make the message and button lock only appear for the client that is interacting?

Use a Vision Client tag instead of a gateway tag. Or, if multiple clients looking at the same rack need to block each other after all, use one gateway tag per rack subsystem. And then use indirect binding on the Vision window/template to point at the relevant rack.

1 Like

mmm I saw, Vision client tags... I have never used them... I will take a look at this, but it seems to make sense and is clearly what I am looking for.

You can think of them like global variables within one instance of a project. Another user running the same application will have their own client tags.

2 Likes

very good example, I am beginning to understand it, thank you very much.

Hi Phil, I've figured out why I'm showing the window to all users. It's because I'm sending the openWindow instruction via a trigger (tag_memory) from the Gateway's Tag Browser, so it's showing to everyone. Do you recommend me to use Vision Client Tags, so I have already done some tests and managed to understand it, and I would like to implement it.

Now, the question is: since we are talking about a window with 27 racks, what should I do so that, using the Vision Client Tags, only the popup window of the rack being worked on is activated?

I was thinking of creating 27 triggers tags or 27 different popup windows that are activated by the trigger from the Vision Tags. What is the most optimal way so that the system resources are not affected?

thanks

Maybe this? You haven't yet explained how two clients working with the same rack should behave.

FWIW, this doesn't sound like a good use of a popup window. I would use a simple state indicator that shows when a rack is busy, and disable all of that rack's controls while the busy condition is true.