The INGR_CALCTYPE tag has the OPC Item Path set to
ns=1;s=[PLC]Formulas[{idx}].STEP[1].INGR_CalcType
When I create a new tag from the UDT and set the idx the tags under the HEADER folder have the {idx} replaced with the value of the parameter. However none of the tags under STEP\STEP_1_ get the paramter replaced. The tag in the browser shows {idx}.
Is there a limit to the number of levels that Ignition traverses when a tag is created?
From the PLC side looks like you have nested arrays of UDTs. Formula is an array of one UDT that contains another array of STEP UDT. What is the Calc_Type? Is that a supported datatype and not another root UDT type?
One test, go to the OPC browser and drag that one tag into the tag provider and make sure the generated syntax matches what you’re using.
if you go to the UDT definition, locate the tag in the tag browser, and right click on the INGR_CalcType and select Edit (raw). Do you see opcItemPath as an object or a value?
That usually means that setting (including curly braces) was created by writing that bare string to the tag property, via scripting or JSON import. As @vtran points out, the effective binding has bindType and binding keys in the JSON.
(somewhat off topic)
i retain that this is a really really weird design choice by ignition and that bare string values containing brackets should automatically default to having bindType parameter
I'm pretty sure the interpretation of curly braces as parameters is done strictly in the designer tag editor, for human-entered strings. I suspect it doesn't actually exist elsewhere. Other interactions with the tag configuration are expected to supply properly parsed objects.
(If so, this is unlikely to be conveniently changed as you desire.)
The only place that it actually matters for me is human entered strings, if I’m producing OPC definitions from a script I can just set them all to default bindtype
You mean when I use Notepad++ to search for Formulas\[[0-9]+\] and replace with {idx}?
Thank you. Now I under that there needs to be another step to set up the binding as I sheepishly thought the system was keying off the existence of {}. The syntax highlighting in the editor was “lying” to me.
That is exactly what happened. I’ll go back and fix it.