OPC_Waiting Tag Overlay & Screen Freeze

The OPC_Waiting overlay issue is still there!!

This is not even allowing me to open the screen and do some changes like enable overlay optOut. The screen is freezes and workstation fan is just running with noise! CPU usage is > 80%..

How to eliminate this? Why is this bug still there in 8.1.17?

My screen is just stuck there and seems nothing I can do to unfreeze it:

image

Designer memory usage when I open this screen to Opt-Out Overlay:

image

And after some time it closes the designer

Here is what happens when I open the designer and the screen:

image

How long does it take for this condition to occur after you do a full restart of your gateway?

The memory in the column where you list active designers is not the memory of the gateway shown on the Status=>Performance page. Separate processes, typically on separate machines. That they have similar values just reflects the defaults of Ignition.

I recommend you give both the gateway more memory (via ignition.conf) and your designers more memory (via the gateway setting for that, or via launcher override).

Beyond that, such designer or vision client CPU load problems and GUI freezes are, in my experience, caused by circular bindings, or infinite looping in foreground (event) scripting. You may need support looking over your shoulder to figure out such screw-ups.

Okay but If I copy the screen to my local server designer, then also it makes screen freeze. I was hoping it should allow me to edit it since tag which I linked will not be available at local sever

As soon as I open this screen, it occurs immediately

Tried assigning max designer memory, but it still occurs:
image

You will need to extract the screen's XML, excise the scripts that are likely blowing up the screen, and paste the trimmed XML back. Use shift-right-click on the window in the designer's nav tree to get these advanced options.

If you cannot decipher the XML (it is ugly), call support for help.

2 Likes

Yep it is caused due to circular binding.

Instead of XML, here is how I got it work (for future reference):

  1. I knew the tags connected on that screen so using find & replace, I replaced tags with dummy memory tag
  2. Then I was able to open the screen.

Can you help me on one thing though. My tag gets string value which is bind to custom property of a component. Now when the tag string is not blank then I take the tagValue else keep property value as is. Below is expression bind to propValue:

if(len(tagValue)>2,tagValue,propValue)

I guess this is where circular bind comes in picture. Can you tell me how can I achieve this wo circular expression.

You can't do this with any expression binding. Expressions always return a value. Use a propertyChange script instead, and only write to the target property when appropriate.

1 Like