Indirect Tag Bindings

I have a screen with seven spinner boxes. Each spinner value property is bound (bidirectional) to an indirect tag where the placeholder references a root container property. The indirect tags are to switch between process vessel settings (Reactor1, Reactor2, etc) in my test case.

Whenever I load the screen in a client, the first time the root container value property is changed (done by binding the property to another spinner on the page or by passing a parameter via buttons) the newly referenced tags are written to the previous referenced tags values. More specifically, I believe they are written to the values corresponding to the reference that was last saved in the designer. If I change the values back to what they were and switch the reference, the values stick to the proper reference. Closing and opening the windows after correcting the values seems to keep the proper reference and doesn’t overwrite, just the first load after the client starts seems to overwrite. I’ve tried with window cache policies set to auto and never. I haven’t seen this behavior occur in the designer.

It only seems to be happening to five of the seven spinners and I don’t see any differences in the way the bindings are implemented. Is this the expected behavior? If it is expected, is there a way to prevent against this happening and/or what might be causing them to behave differently?

This sounds like the same bug we fixed in 7.1.6 with regards to some other components (see 7.1.6 changelogs). Sounds like we need to roll the same fix into the spinner component.

Let me know if need any further information. I tried adding a new component thinking it might have been something left over from a copy / delete binding / add new binding operation, but the overwrite still occurred. It also happened when I set the component Enabled = false.

This has been fixed for 7.1.7

I’ve upgraded to 7.17 and I’m still seeing this behavior. I’m pretty sure I tried it with the Beta release that was out when you said it would be fixed in the next release and it was fine, however, now it seems to be back to it’s old ways. Actually, on one of my spinners on the screen is showing a value when I switch the indirect tag reference, and I’m not sure where the display value is coming from? It stays displayed as the tag value in the designer, the tag browser in the designer, and client but it is not the value in the PLC - it writes the 1st reference. I change the value back in the PLC and it doesn’t change in the designer, tag browser, or client. If I use the OPC Browser on the gateway, it does show the correct value in the PLC:scratch:.

Ok, now I’m thoroughly confused. Can you boil this down to a set of steps that I can follow in order to reproduce the problem?

It might be more straightforward to see or observe, but I’ll try my best to describe:

[ul] 1) Add spinners to page. I have 7 spinners for setting / reading values.
2) Bind the value, min, and max properties to a tags value, EngLow, EngHigh. The value being a bidirectional binding.
3) Change the bindings to be Indirect, and point the references to a root container dynamic property.
[ol] a.The reference will change the tags. One tag points to a tag/register in processor A, the other to processor B[/ol]
4) Change value of the root container dynamic property by either:
[ol] a. Binding to another spinner on the page that increments from 1 to 2
b. With a page open from a button, passing the value[/ol]
My Results
1) Running in designer
[ol]a. References switch and all is well. Values are displayed properly and nothing is written to the PLC. [/ol]
2) Opening the client
[ol]a. Open with reference of 1, values are correct for this PLC and displayed properly.
b. Switch the reference by the methods above from 1 to 2
[list=i]i. The page opens, you can see the new (plc #2) values flash, but then you see the write borders on the spinners and the values switch to the first reference and are written in the PLC.
[list=a]1. Out of 7 spinners, 5 and two switch to the correct reference[/ol][/list:o][/list:o][/ul]
[ul] [ol] c. Correct the values on the page for reference 2 back to what they were before switching the page.
[list=i]i. Values are written to the PLC*[/ol]
d. Switch the Reference back to 1.
[ol]i. Values are correct, displayed correctly[/ol]
e. Switch the reference back to 2
[ol]i. Values are correct, displayed correctly[/ol][/list:o][/ul]

*One of the spinners for reference 2 shows a value that is not from either PLC. I could not write to correct the value from the screen and had to change the register in the PLC. It didn’t reflect this change in the designer or client when doing this, but the value did read properly in the gateway quick client. I have a screenshot showing this difference.

Well that was a very nice and clear description, but I have been totally unable to reproduce the behavior here. We did just fix a bug in indirect binding for 7.1.8, but I don’t think that bug could explain the writing behavior.

I’m curious - can you create a simple new project that exhibits this behavior using DB tags and send us the gateway backup of it?


I’m uploading a file to you Upload File section now.

I’m currently trying to reproduce your error but it seems like your tags are stored in the SQL database you are using. Would i be possible to upload a backup of your database that includes the tags?


It was just uploaded to the Upload Section. Thanks.

We were able to reproduce the problem and are working on a fix. The problem has to do with applying bindings to the min and max properties of the spinner component. It should be fixed in the next release which will be happening soon.

This has been fixed for 7.1.8