Bad_DecodingError reading S7-1500 struct

Hello,
I’m trying to do same thing and It’s not working. So I have 1500 running as a OPC UA Server with OPC UA 1.03 spec checked. I have data block with simple Structs and I can see them in Ignition:
image
Source Tag is OPC Tag Document pointing that:
image
This is how it looks in Tag Browser:


Both variables - ControlWord and Status have “Error ExpressionEval” Error. This is how they look like:

image
image

Can someone tell me what I’m doing wrong please?
Thank you
Krzysztof

It doesn’t look like you’re successfully pulling in the source Document tag, so it might be too soon to expect the expression tags to work. I see a Bad_DecodingError in that screenshot. This probably means the dictionary either wasn’t read successfully or didn’t contain the struct definition.

Have you fully recompiled/downloaded/restarted the S7-1500 OPC UA server yet?

Thank’s for quick reply.
Yes I did it multiple times. I can connect to single tags without any problems and read/write them.

That’s not surprising, they don’t require the structure definition to be read successfully.

Turn the logger you find searching “DataTypeDictionaryReader” to TRACE and then edit/save the OPC UA connection to the 1500. Once it has fully reconnected get the Ignition gateway logs and upload them.

I’ll need to know some info about the structure you’ve created. Its name and contents would be useful, and I see that you’ve created a custom namespace as well. We may also need to poke around in the server using a 3rd party client like UaExpert at some point.

https://docs.inductiveautomation.com/display/DOC81/Diagnostics+-+Logs#DiagnosticsLogs-ChangingLoggingLevels


I can’t download log as it has 14mb.

I’ll DM you a dropbox link.

What version of Ignition are you using? I see some older errors while reading the dictionary, but also not seeing some logs I would expect.

Eh, nevermind, I see 8.1.9. And the logs I’m expecting aren’t there because there doesn’t appear to be any additional datatype dictionaries showing up when Ignition browses.

I’m going to need you to use UaExpert or another client to connect to this server and browse the following path and tell me what you see:

(under the OPC Binary Node in the tree)

Interesting - I connected to that DB not through OPCUA Server Interface but straight directly from PLC1 object…

Would it be possible to get a Wireshark capture of the traffic between Ignition and the PLC? From what I can tell in the logs the server is returning some identical browse results, but that’s not something I’ve seen before…

2021/11/11 16:46:07:142 | DEBUG | [DataTypeDictionaryReader      ] structCodecs.size()=235
2021/11/11 16:46:07:142 | DEBUG | [DataTypeDictionaryReader      ] enumCodecs.size()=26
2021/11/11 16:46:07:071 | DEBUG | [DataTypeDictionaryReader      ] Reading DataTypeDictionary nodeId=NodeId{ns=0, id=7617}
2021/11/11 16:46:07:071 | DEBUG | [DataTypeDictionaryReader      ] Browse finished with 3 references
2021/11/11 16:45:33:477 | DEBUG | [DataTypeDictionaryReader      ] structCodecs.size()=235
2021/11/11 16:45:33:477 | DEBUG | [DataTypeDictionaryReader      ] enumCodecs.size()=26
2021/11/11 16:45:33:431 | DEBUG | [DataTypeDictionaryReader      ] Reading DataTypeDictionary nodeId=NodeId{ns=0, id=7617}
2021/11/11 16:45:33:431 | DEBUG | [DataTypeDictionaryReader      ] Browse finished with 3 references
2021/11/11 16:41:53:992 | DEBUG | [DataTypeDictionaryReader      ] structCodecs.size()=235
2021/11/11 16:41:53:992 | DEBUG | [DataTypeDictionaryReader      ] enumCodecs.size()=26
2021/11/11 16:41:53:868 | DEBUG | [DataTypeDictionaryReader      ] Reading DataTypeDictionary nodeId=NodeId{ns=0, id=7617}
2021/11/11 16:41:53:868 | DEBUG | [DataTypeDictionaryReader      ] Browse finished with 3 references

You would need to ensure there is no security for the connection, then start the Wireshark capture, then edit/save the connection in Ignition, and once it has fully connected you can stop the capture.

With that all is working well… Before I created Server Interface in TIA now I’m connected to DB directly

and you can get a value from those?

Yes and Read/Write is working well

Well I am very confused but okay :+1:

It’s first time I’m using 1500 as a server and I thought that I should use Server Interfaces. Looks like it is working bit different way and Ignition is not happy with that. Direct connection is even better for me so thanks for help