Ignition 8 – Embedded UDT Parameters

Just doing a test upgrade from 7.9 to 8 and have hit a problem with not being able to pass UDT parameters into the parameters of an embedded UDT .

7.9 replacement strategy allowed me to use the parent UDT’s parameter directly in the value definition of the embedded UDTs. What is a method in Ignition 8 for achieving the same functionally?

Example

ParentUDT with parameter X

-EmbeddedUDT with parameter Y which has the value of X + string

In 7.9 I could set the EmbeddedUDT value to {X} or {x}.randomstring and this would resolve when the instance of the ParentUDT was created. Now in 8 this just sets the value to the literal string “{x}.randomstring”.

What is the correct way of doing this in Ignition 8?

Cheers

OK so turns out this functionality still works the same in Ignition 8 but the upgrade process from 7.9 to 8 is a bit average in the fact that is converts this to the string representation of the expression not the result .

Problem is fixed by going through and clearing each parameter, applying changes and then setting it back to the original value… annoying but workable.

1 Like

Thanks for the fix. I have just started the conversion from 7.9 to 8.0 in a test environment and almost none of my tags work due to this issue.

I may delay my upgrade until this issue gets solved. I don’t want to manually rebuild all my UDTs…

This thread needs clarification - are you upgrading an installation, either by installing 8.0 directly onto a 7.9 system, or restoring a 7.9 backup to a running 8.0 gateway, or attempting to upgrade tags piecemeal using a tag export from 7.9 into 8.0?

The former should happen seamlessly - if it doesn’t, that’s a bug we need to fix.
The latter is something that I believe we don’t currently expect to be handled, although we theoretically could.

For me, it is when I upgraded an existing installation, by installing 8.0 on an existing 7.9 test server (my laptop). I use nested UDTs extensively in my 7.9 project.

When I first opened my project in designer, after installing 8.0, I noticed than many of my tags were in error. Looking at the UDT definitions, everything seemed correct. However, when I looked at individual tags I noticed that the parameters were not being replaced by their referenced string.

For example my Cooling Return Pressure tag had an OpcItemPath of “Cooling”."{InstanceName}".value instead of “Cooling”.“returnPressure”.value

I found this was the case with many of my tags. The only way to fix the problem was by following CDCD’s procedure of deleting the parameter reference, applying the change, and then pasting the same parameter reference back in.

It seems the upgrade is not converting the parameter reference correctly.

For the case of the {InstanceName} parameter, we do have a ticket in active development that should fix that particular issue.

Edit: looks like that ticket is on its way to 8.0.2. It was approved yesterday.

I am having an issue with custom parameters as well, not just {InstanceName}. For example, my custom parameters {SystemName} and {DeviceName} are not being replaced by their reference.

It seems to be an issue with all parameter values passed to a nested UDT.

Hi, is this bug still present in the newest version ? I still seem to be getting this problem.

Still running into this problem with 8.1.16. Nested UDTs inheriting parameters and made all the changes in a json doc and reimported. It’s not resolving the opc paths to their parameter values and keeping them as strings.

but overriding the path makes them resolve; however that’s not really a fix

As @mark3 said, going into the tags that were using the references, not the parameter values themselves, and deleted the reference, applying, then pasting the same values back resolves the issue