Node OPC-UA does not work

Hello,
I have been developing a OPC-UA server for 2 months and worked fine with UA expert and some other clients but now i have a problem with Ignition. I can read all the variables names and folders on the server but the value is always null and the status is stale. In the ignition log it says this

org.eclipse.milo.opcua.stack.core.UaSerializationException: max array length exceeded (length=66003, max=65535)

I can’t find any option to configure this and i am not trying to read an array.
Thanks for any help that you could provide, i have been trying to solve this for a couple of days but i couldn find anything.

What version of Ignition are you using?

Can you get a Wireshark capture of the OPC UA traffic between Ignition and your server?

I am using Ignition 7.9.7, these are the traffic request and response traces:

Frame 550: 139 bytes on wire (1112 bits), 139 bytes captured (1112 bits) on interface 0
    Interface id: 0 (enp0s25)
    Encapsulation type: Ethernet (1)
    Arrival Time: May  8, 2018 13:53:06.875031796 CEST
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1525780386.875031796 seconds
    [Time delta from previous captured frame: 0.031982288 seconds]
    [Time delta from previous displayed frame: 2.212671434 seconds]
    [Time since reference or first frame: 18.853481575 seconds]
    Frame Number: 550
    Frame Length: 139 bytes (1112 bits)
    Capture Length: 139 bytes (1112 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ethertype:ip:tcp:opcua]
    [Coloring Rule Name: TCP]
    [Coloring Rule String: tcp]
Ethernet II, Src: HewlettP_48:c6:07 (e4:11:5b:48:c6:07), Dst: 18:60:24:4a:be:eb (18:60:24:4a:be:eb)
    Destination: 18:60:24:4a:be:eb (18:60:24:4a:be:eb)
        Address: 18:60:24:4a:be:eb (18:60:24:4a:be:eb)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: HewlettP_48:c6:07 (e4:11:5b:48:c6:07)
        Address: HewlettP_48:c6:07 (e4:11:5b:48:c6:07)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.20.12, Dst: 192.168.20.11
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 125
    Identification: 0x89d7 (35287)
    Flags: 0x02 (Don't Fragment)
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (6)
    Header checksum: 0x073c [validation disabled]
    [Header checksum status: Unverified]
    Source: 192.168.20.12
    Destination: 192.168.20.11
    [Source GeoIP: Unknown]
    [Destination GeoIP: Unknown]
Transmission Control Protocol, Src Port: 4334, Dst Port: 34678, Seq: 900, Ack: 1023, Len: 85
    Source Port: 4334
    Destination Port: 34678
    [Stream index: 2]
    [TCP Segment Len: 85]
    Sequence number: 900    (relative sequence number)
    [Next sequence number: 985    (relative sequence number)]
    Acknowledgment number: 1023    (relative ack number)
    Header Length: 20 bytes
Frame 335: 166 bytes on wire (1328 bits), 166 bytes captured (1328 bits) on interface 0
    Interface id: 0 (enp0s25)
    Encapsulation type: Ethernet (1)
    Arrival Time: May  8, 2018 15:30:51.107493138 CEST
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1525786251.107493138 seconds
    [Time delta from previous captured frame: 0.032023682 seconds]
    [Time delta from previous displayed frame: 2.095155030 seconds]
    [Time since reference or first frame: 14.151176241 seconds]
    Frame Number: 335
    Frame Length: 166 bytes (1328 bits)
    Capture Length: 166 bytes (1328 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ethertype:ip:tcp:opcua]
    [Coloring Rule Name: TCP]
    [Coloring Rule String: tcp]
Ethernet II, Src: 18:60:24:4a:be:eb (18:60:24:4a:be:eb), Dst: HewlettP_48:c6:07 (e4:11:5b:48:c6:07)
    Destination: HewlettP_48:c6:07 (e4:11:5b:48:c6:07)
        Address: HewlettP_48:c6:07 (e4:11:5b:48:c6:07)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: 18:60:24:4a:be:eb (18:60:24:4a:be:eb)
        Address: 18:60:24:4a:be:eb (18:60:24:4a:be:eb)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.20.11, Dst: 192.168.20.12
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 152
    Identification: 0x0189 (393)
    Flags: 0x02 (Don't Fragment)
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (6)
    Header checksum: 0x4f6f [validation disabled]
    [Header checksum status: Unverified]
    Source: 192.168.20.11
    Destination: 192.168.20.12
    [Source GeoIP: Unknown]
    [Destination GeoIP: Unknown]
Transmission Control Protocol, Src Port: 34907, Dst Port: 4334, Seq: 225, Ack: 161, Len: 112
    Source Port: 34907
    Destination Port: 4334
    [Stream index: 4]
    [TCP Segment Len: 112]
    Sequence number: 225    (relative sequence number)
    [Next sequence number: 337    (relative sequence number)]
    Acknowledgment number: 161    (relative ack number)
    Header Length: 20 bytes
    Flags: 0x018 (PSH, ACK)
        000. .... .... = Reserved: Not set
        ...0 .... .... = Nonce: Not set
        .... 0... .... = Congestion Window Reduced (CWR): Not set
        .... .0.. .... = ECN-Echo: Not set
        .... ..0. .... = Urgent: Not set
        .... ...1 .... = Acknowledgment: Set
        .... .... 1... = Push: Set
        .... .... .0.. = Reset: Not set
        .... .... ..0. = Syn: Not set
        .... .... ...0 = Fin: Not set
        [TCP Flags: ·······AP···]
    Window size value: 2052
    [Calculated window size: 2052]
    [Window size scaling factor: -1 (unknown)]
    Checksum: 0xf768 [unverified]
    [Checksum Status: Unverified]
    Urgent pointer: 0
    [SEQ/ACK analysis]
        [Bytes in flight: 112]
        [Bytes sent since last PSH flag: 112]
    [PDU Size: 112]
OpcUa Binary Protocol
    Message Type: MSG
    Chunk Type: F
    Message Size: 112
    SecureChannelId: 2
    Security Token Id: 13
    Security Sequence Number: 1157
    Security RequestId: 1157
    OpcUa Service : Encodeable Object
        TypeId : ExpandedNodeId
            NodeId EncodingMask: Four byte encoded Numeric (0x01)
            NodeId Namespace Index: 0
            NodeId Identifier Numeric: ReadRequest (631)
        ReadRequest
            RequestHeader: RequestHeader
                AuthenticationToken: NodeId
                    .... 0101 = EncodingMask: Opaque (0x5)
                    Namespace Index: 0
                    Identifier ByteString: 42d7b67d0dfa2b5a7000703f7f16665f
                Timestamp: May  8, 2018 15:30:39.519000000 CEST
                RequestHandle: 2677
                Return Diagnostics: 0x00000000
                    .... .... .... ...0 = ServiceLevel / SymbolicId: False
                    .... .... .... ..0. = ServiceLevel / LocalizedText: False
                    .... .... .... .0.. = ServiceLevel / AdditionalInfo: False
                    .... .... .... 0... = ServiceLevel / Inner StatusCode: False
                    .... .... ...0 .... = ServiceLevel / Inner Diagnostics: False
                    .... .... ..0. .... = OperationLevel / SymbolicId: False
                    .... .... .0.. .... = OperationLevel / LocalizedText: False
                    .... .... 0... .... = OperationLevel / AdditionalInfo: False
                    .... ...0 .... .... = OperationLevel / Inner StatusCode: False
                    .... ..0. .... .... = OperationLevel / Inner Diagnostics: False
                AuditEntryId: [OpcUa Null String]
                TimeoutHint: 120000
                AdditionalHeader: ExtensionObject
                    TypeId: ExpandedNodeId
                        EncodingMask: 0x00, EncodingMask: Two byte encoded Numeric
                            .... 0000 = EncodingMask: Two byte encoded Numeric (0x0)
                            .0.. .... = has server index: False
                            0... .... = has namespace uri: False
                        Identifier Numeric: 0
                    EncodingMask: 0x00
                        .... ...0 = has binary body: False
                        .... ..0. = has xml body: False
            MaxAge: 0
            TimestampsToReturn: Both (0x00000002)
            NodesToRead: Array of ReadValueId
                ArraySize: 1
                [0]: ReadValueId
                    NodeId: NodeId
                        .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
                        Namespace Index: 1
                        Identifier Numeric: 1002
                    AttributeId: Value (0x0000000d)
                    IndexRange: [OpcUa Null String]
                    DataEncoding: QualifiedName
                        Id: 0
                        Name: [OpcUa Null String]

Frame 336: 144 bytes on wire (1152 bits), 144 bytes captured (1152 bits) on interface 0
    Interface id: 0 (enp0s25)
    Encapsulation type: Ethernet (1)
    Arrival Time: May  8, 2018 15:30:51.109660878 CEST
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1525786251.109660878 seconds
    [Time delta from previous captured frame: 0.002167740 seconds]
    [Time delta from previous displayed frame: 0.002167740 seconds]
    [Time since reference or first frame: 14.153343981 seconds]
    Frame Number: 336
    Frame Length: 144 bytes (1152 bits)
    Capture Length: 144 bytes (1152 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ethertype:ip:tcp:opcua]
    [Coloring Rule Name: TCP]
    [Coloring Rule String: tcp]
Ethernet II, Src: HewlettP_48:c6:07 (e4:11:5b:48:c6:07), Dst: 18:60:24:4a:be:eb (18:60:24:4a:be:eb)
    Destination: 18:60:24:4a:be:eb (18:60:24:4a:be:eb)
        Address: 18:60:24:4a:be:eb (18:60:24:4a:be:eb)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: HewlettP_48:c6:07 (e4:11:5b:48:c6:07)
        Address: HewlettP_48:c6:07 (e4:11:5b:48:c6:07)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.20.12, Dst: 192.168.20.11
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 130
    Identification: 0xc6d5 (50901)
    Flags: 0x02 (Don't Fragment)
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (6)
    Header checksum: 0xca38 [validation disabled]
    [Header checksum status: Unverified]
    Source: 192.168.20.12
    Destination: 192.168.20.11
    [Source GeoIP: Unknown]
    [Destination GeoIP: Unknown]
Transmission Control Protocol, Src Port: 4334, Dst Port: 34907, Seq: 161, Ack: 337, Len: 90
    Source Port: 4334
    Destination Port: 34907
    [Stream index: 4]
    [TCP Segment Len: 90]
    Sequence number: 161    (relative sequence number)
    [Next sequence number: 251    (relative sequence number)]
    Acknowledgment number: 337    (relative ack number)
    Header Length: 20 bytes
    Flags: 0x018 (PSH, ACK)
        000. .... .... = Reserved: Not set
        ...0 .... .... = Nonce: Not set
        .... 0... .... = Congestion Window Reduced (CWR): Not set
        .... .0.. .... = ECN-Echo: Not set
        .... ..0. .... = Urgent: Not set
        .... ...1 .... = Acknowledgment: Set
        .... .... 1... = Push: Set
        .... .... .0.. = Reset: Not set
        .... .... ..0. = Syn: Not set
        .... .... ...0 = Fin: Not set
        [TCP Flags: ·······AP···]
    Window size value: 534
    [Calculated window size: 534]
    [Window size scaling factor: -1 (unknown)]
    Checksum: 0xa9dc [unverified]
    [Checksum Status: Unverified]
    Urgent pointer: 0
    [SEQ/ACK analysis]
        [This is an ACK to the segment in frame: 335]
        [The RTT to ACK the segment was: 0.002167740 seconds]
        [Bytes in flight: 90]
        [Bytes sent since last PSH flag: 90]
    [PDU Size: 90]
OpcUa Binary Protocol
    Message Type: MSG
    Chunk Type: F
    Message Size: 90
    SecureChannelId: 2
    Security Token Id: 13
    Security Sequence Number: 1157
    Security RequestId: 1157
    OpcUa Service : Encodeable Object
        TypeId : ExpandedNodeId
            NodeId EncodingMask: Four byte encoded Numeric (0x01)
            NodeId Namespace Index: 0
            NodeId Identifier Numeric: ReadResponse (634)
        ReadResponse
            ResponseHeader: ResponseHeader
                Timestamp: May  8, 2018 15:30:51.109000000 CEST
                RequestHandle: 2677
                ServiceResult: 0x00000000 [Good]
                ServiceDiagnostics: DiagnosticInfo
                    EncodingMask: 0x00
                        .... ...0 = has symbolic id: False
                        .... ..0. = has namespace: False
                        .... .0.. = has localizedtext: False
                        .... 0... = has locale: False
                        ...0 .... = has additional info: False
                        ..0. .... = has inner statuscode: False
                        .0.. .... = has inner diagnostic info: False
                StringTable: Array of String
                    ArraySize: 0
                AdditionalHeader: ExtensionObject
                    TypeId: ExpandedNodeId
                        EncodingMask: 0x00, EncodingMask: Two byte encoded Numeric
                            .... 0000 = EncodingMask: Two byte encoded Numeric (0x0)
                            .0.. .... = has server index: False
                            0... .... = has namespace uri: False
                        Identifier Numeric: 0
                    EncodingMask: 0x00
                        .... ...0 = has binary body: False
                        .... ..0. = has xml body: False
            Results: Array of DataValue
                ArraySize: 1
                [0]: DataValue
                    EncodingMask: 0x3d, has value, has source timestamp, has server timestamp, has source picoseconds, has server picoseconds
                        .... ...1 = has value: True
                        .... ..0. = has statuscode: False
                        .... .1.. = has source timestamp: True
                        .... 1... = has server timestamp: True
                        ...1 .... = has source picoseconds: True
                        ..1. .... = has server picoseconds: True
                    Value: Variant
                        Variant Type: Double (0x0b)
                        Double: -28,1045866269048
                    SourceTimestamp: May  8, 2018 15:30:21.166000000 CEST
                    SourcePicoseconds: 1
                    ServerTimestamp: May  8, 2018 15:30:51.109000000 CEST
                    ServerPicoseconds: 1
            DiagnosticInfos: Array of DiagnosticInfo
                ArraySize: 0

I tried it also as a boolean and int32 but same results.

Thanks a lot.

Can you attach an actual capture (cap/pcap) file?

Nevermind, I’m pretty sure you’re running into this issue.

It’s fixed in Milo 0.2.1 but Ignition is currently using 0.2.0. I can build and email you an updated OPC UA module if you’d like. PM me the email address to send it to.

Thank you! that would be great, i was exporting the pcap file but i have not enought rank to upload it.

Ill sent you the pm.
Edit: How do you send a PM? i can not find it

Click on a username, then click Message. Maybe there’s some permissions preventing you from being able to send them yet.

I sent the module to the email address you registered your account with.

Thanks a lot, Did you sent it? i am checking the e-mail but I have not received it yet

I did, maybe it’s getting filtered…

Yep, your email server bounced it back. I’ll have to upload it somewhere.

Try this: https://www.dropbox.com/s/0nmwhjzd8p8qjmn/OPC-UA-module.modl?dl=0

1 Like

After ugrading to Ignition 7.9.7, I have similar issues with one of my onboard OPC UA servers (Lenze PLC, CodeSys based). This was not a problem in Ignition 7.9.5. So I ended up downgrading.

If I add to many tags at the same time, I get the following error message in the log.
“org.eclipse.milo.opcua.stack.core.UaSerializationException: request exceeds remote max message size: 134327 > 65535”

Thanks a lot, it worked fine.

Is the switch to Milo-0.2.1 going to be in v7.9.8?

I don’t think that’s the same issue.

Yes, snuck it in there…

1 Like

4 posts were split to a new topic: Siemens NegotiatePDURequest timeout on UA beta module