UDT Property Binding to Tag or Expression

Hi,

I’d like to know if it is possible to bind a UDT tag property, such as Engineering Units or Format String, to another tag or expressions.

The yellow help text states parameter binding and the drop downs only shows parameters.

Can I bind these to something more involved, such as a tag or runScript expession with parameters that are tag values?

Below is the binding editor for the Format String property:

Regards,
Deon

You can you use {[.]TagInSameFolder.FormatString}?
If you need to change folder, you can use:
../ e.g. {[.]../ParentFolderTag.FormatString} or
./ e.g. {[.]./ChildFolder/ChildFolderTag.FormatString}

Hi nminchin,

As per above forum discussion we are doing the experiment.
We have EngUnit expression tag in the UDT and we are suppose to bind the value of EngUnit tag to another tag i.e. “Value”. But we are getting “null” value in the “.EngUnit” field instead of actual Eng unit i.e. psi in “Value” tag.

image

I am using Ignition version 8.0.9 (b2020021812)

You’re missing the
./ before the EngUnit

Maybe I stuffed that up in my other post… I’ll fix it up if I need :thinking:

No success, could you please let me know the Ignition version in which this is working.
I also tried this with 8.0.10.

Please note that i am trying to bind the expression tag value (string tag) to value tag’s “engunit” property.

Hi,

i came arround with same error, is there any solution?

br,
Roland

Apologies for the long delay…
I should have seen this earlier, but no, you can’t add tag references into configuration properties. I imagine this would put huge strain on the CPU and could cause lockups. You can however reference template parameters:


image

1 Like

Thank you very much! Nick.

I’m trying to do nearly the exact same thing as dhananjay’s screenshots above and would love to know if there’s any other creative ways to solve for this. I don’t think a UDT parameter would work because I am hoping the unit can change dynamically.

  • I have a tag that provides various integers for time period, an enumeration provided by the device.
  • I have a memory tag within the UDT which is used by the lookup function to provide a human-friendly time period value in various expression tags, call it {thisTagEngUnit}
  • I have scripted views to build Perspective screens which auto display engineering units.
  • I have other tags which are rates, where I’d like to bind the engineering unit to the time period value calculated by the expression tag described above (e.g.bind thisTag.EngUnit to =‘ppm/’+{thisTagEngUnit}

If it helps, you can write to a UDT instance’s parameters and to tag properties (including EngUnit) using system.tag.write*. You could use a tag change script to change the units… Not a big fan of having so many tag change scripts though, and less reliable than a binding

Otherwise, you could simply have an expression tag that spits out the eng unit based on your expression, and use that when displaying the units. That’s what I’ve used in the past, for example for a generic PID controller that accepts PVs from any instrument, be it flow (L(itres)/s, L/m, L/h, kL/h, m(etres)³/h etc.), turbidity (NTU), etc… where these units are all part of an enumerated integer. An expression tag translates this into the text unit.