
akbeer (Customer) asked a question.
Regarding popup window frames...is there a way to enforce layer precedence? By that I mean I have a screen and on that screen I have 20 perfectly overlapping popup window frames. At any given time, anywhere from zero to perhaps three of these may be active (their display registers asserted). I had assumed that the window to view would be the one with the highest (er, lowest) layer number but no, it seems to be the one that displays is the most recent one to be asserted. It doesn't seem to matter if the frame type is modal or modeless (though I need modeless as even though the popup only occupies a small subset of the screen, the popup nonetheless prevents access/touching to every other button on the screen if using modal). The funny thing is at one time a couple of weeks ago I thought the simulation tool was acting the behavior I wanted, but today both the sim and the actual panel seem to just be displaying the most recent popup asserted. :( Has anyone overcome this?
You are correct, the last called popup in on top.
But I see the advantage of having a selection to prioritize by layer or called order.
If you are calling from your PLC, you could use logic to create this prioritization. But I know if would be easier if it was just a selection.
One thing to try is explicitly managing the z-order of your popups. You might need to adjust the code or settings to force the desired stacking behavior. Some systems let you set the layer or z-index programmatically.
Thank you both.
Yeah I agree there may be other situations where the currently implemented behavior could be desired.
I hear you on the z-order though that would be easier if I were just forcing a change to the screen number from the PLC (could just keep copying the screen number to display into a temporary register and the last (highest priority) one wins and ultimately gets sent to the HMI). Managing the pop ups via discrete registers when those same registers are used for other purposes in the driving PLC...I'll have to think about this a bit to see if I can come up with a clean way to implement.
Ahh, had an inspiration and this ended up being super easy. I already had the precedence logic in the PLC for another HMI (simple EA3), but couldn't just apply it in this case as I wasn't desiring to change the screen # on the CM5 and the CM5 only has a subset of the screens the EA3 does. In the end, I was able to use pointer logic and copy a C register [of value TRUE] (I couldn't copy SC1 Always ON though) to a block of C registers that the CM5 then references to decide which popup to display. At any given time the precedence DS register used by the pointer only asserts one of the C registers in this block so all is good. Took two simple rungs to set up and clean up. ;-)
One thing to keep in mind with that many pop-ups, every pop-up is updated even when not called. I've ran into some severe performance limitations by over-utilizing a hierarchical design with nested pop-ups.
That is interesting any good to know as I'd previously assumed that only the screen(s) being called/displayed at the time would be actively updated!