Vision Client Memory Leack If OPC Alias Is Disconnected

Hello every one.

I with my team started develop a new project using Ignition 8.3 and Schneider Electric OPC DA (OFS). OFS has four alias, one alias = one PLC.

While testing I spot a problem! If open a window conteined tamplates bindend with disconnected allias of OFS
so vision client start rappidly consume memory of the PC up to maximum limit, that configured in project property. And offcouse application is freezzed.

Templates use animation binding property like:
getBit(tag("[default]" + {VL01_HORIZ.TAG_FOLDER} + "/" + {VL01_HORIZ.VL_NAME} + "/SttWrd2"),15) //Visible property
or
if (!isAlarmActiveFiltered("[default]"+ {VL01_HORIZ.TAG_FOLDER} + "/" + {VL01_HORIZ.MOT_NAME} + "/SttWrd1", "", "",4,4,0,0,0), //Blinking if high alarm
color(0,0,0,0),
if(getSecond(now())%2, color(255,0,255,255), color(255,0,255,0))
)

I have had an experience with igniton 8.1, but I do not remember any problem like this.

In addition:
To call a window we use a script system.nav.swapTo(event.source.WindowName);
In a property window Cach Policy = Always.

Replace the use of tag() in your expression bindings with a reference to a custom property, and make that custom property use an indirect tag binding.

While this may not be your entire problem, tag() is sufficiently pathological in UI bindings to be the first thing I'd fix.

(Use the tag() function only in expression tags, where indirect tag bindings aren't available.)

I Rapleced tag() in expression of a tamplete with custom property. I create 2 custom prorty:

1st property create a tag path as string like "[default]" + {VL01_HORIZ_TEST.TAG_FOLDER} + "/" + {VL01_HORIZ_TEST.VL_NAME} + "/SttWrd1"

2nd property get a value by a tag path.

In addition I added quality check of a tag {VL01_HORIZ_TEST.TAG_QUALITY} = 192 //Good and use overlay opt-out.

Unfortunatly all this does not make any sense!

Client is still frezzing after a few seconds if open a window with tamplates.

Now tampletes use only 3 expesion.

if({VL01_HORIZ_TEST.TAG_QUALITY} = 192,
!getBit({VL01_HORIZ_TEST.STTWRD1_VAL},14)
&&
!getBit({VL01_HORIZ_TEST.STTWRD1_VAL},15),
0
)

if({VL01_HORIZ_TEST.TAG_QUALITY} = 192,
Case(
{VL01_HORIZ_TEST.MODE_VAL},
1, "O",
2, "Н",
3, "L",
4, "M",
5, "A",
"!"),
"**"
)

if({VL01_HORIZ_TEST.TAG_QUALITY} = 192,
!getBit({VL01_HORIZ_TEST.STTWRD1_VAL},14)
&&
!getBit({VL01_HORIZ_TEST.STTWRD1_VAL},15),
0
)

Have I missed something?

This is a really exctiting challeng, but I have no any result at a moment.

Do you have tag() bindings in your windows that use these templates? Do you have complex property change scripts anywhere in these templates or windows? (GUI events must execute extremely fast--single digit milliseconds--or you will have stalls.) Any system calls in property change events that have to reach out to the gateway are suspect. This includes blocking tag reads or writes, direct OPC calls, database operations, network API calls of any kind, and most alarm-related calls.