Avatar

Please consider registering
guest

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed Topic RSS sp_TopicIcon
Event message data
May 2, 2022
16:44, EEST
Avatar
Oleksandr
Member
Members
Forum Posts: 31
Member Since:
February 14, 2020
sp_UserOfflineSmall Offline

Dear support,

I subscribe to events from ProSYS OPC UA Simulations Server local in UAExpert. How can I view the raw Event Message data? Is it possible with Wireshark? How does it look in Wireshark?

Thanks
Oleksandr

May 3, 2022
8:40, EEST
Avatar
Matti Siponen
Moderator
Members

Moderators
Forum Posts: 321
Member Since:
February 11, 2020
sp_UserOfflineSmall Offline

Hello,

You can use Wireshark to see the PublishResponses sent by Simulation Server containing the Events as lists of Event fields. You can find instruction on how to use Wireshark with OPC UA applications at https://www.prosysopc.com/blog/opc-ua-wireshark/. If you’re running UaExpert and Simulation Server on the same host, remember to select “Support loopback traffic” option when installing Wireshark.

Below is an example of such Event field list captured with Wireshark.

EventFields: Array of Variant
    ArraySize: 19
    [0]: Variant
        Variant Type: ByteString (0x0f)
        ByteString: 0000000000000d580000000000000d55
    [1]: Variant
        Variant Type: UInt16 (0x05)
        UInt16: 500
    [2]: Variant
        Variant Type: DateTime (0x0d)
        DateTime: May  3, 2022 07:54:14.228000000 FLE Daylight Time
    [3]: Variant
        Variant Type: LocalizedText (0x15)
        Value: LocalizedText
            EncodingMask: 0x03, has locale information, has text
                .... ...1 = has locale information: True
                .... ..1. = has text: True
            Locale: [OpcUa Empty String]
            Text: Level exceeded
    [4]: Variant
        Variant Type: NodeId (0x11)
        Value: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 9482
    [5]: Variant
        Variant Type: String (0x0c)
        String: MyLevel
    [6]: Variant
        Variant Type: Null (0x00)
    [7]: Variant
        Variant Type: Null (0x00)
    [8]: Variant
        Variant Type: Null (0x00)
    [9]: Variant
        Variant Type: Null (0x00)
    [10]: Variant
        Variant Type: LocalizedText (0x15)
        Value: LocalizedText
            EncodingMask: 0x03, has locale information, has text
                .... ...1 = has locale information: True
                .... ..1. = has text: True
            Locale: [OpcUa Empty String]
            Text: Active
    [11]: Variant
        Variant Type: Boolean (0x01)
        Boolean: True
    [12]: Variant
        Variant Type: Null (0x00)
    [13]: Variant
        Variant Type: Boolean (0x01)
        Boolean: False
    [14]: Variant
        Variant Type: Null (0x00)
    [15]: Variant
        Variant Type: Boolean (0x01)
        Boolean: True
    [16]: Variant
        Variant Type: Null (0x00)
    [17]: Variant
        Variant Type: Null (0x00)
    [18]: Variant
        Variant Type: NodeId (0x11)
        Value: NodeId
            .... 0011 = EncodingMask: String (0x3)
            Namespace Index: 6
            Identifier String: MyLevel.Alarm

I’m not sure if this is what you mean with “raw Event Message data”, though. The way OPC UA handles subscribing to Events is by the Client specifying an Object that generates Events and a list of Event fields (and also EventFilter but we’ll leave that aside for now) in a CreateMonitoredItemsRequest to the Server which will then send PublishResponses to Client containing the values of the selected Event fields of Events generated by the selected Object. Some of these fields might not be relevant to all types of Events generated by the selected Object and thus their values are null in the PublishResponses.

In short, there is no way in OPC UA for Clients to ask the Server to send entire Events as “raw data”. You will always have specify the Event fields you’re interested in and you shall then receive the Events as lists of values of the selected fields.

May 3, 2022
8:50, EEST
Avatar
Matti Siponen
Moderator
Members

Moderators
Forum Posts: 321
Member Since:
February 11, 2020
sp_UserOfflineSmall Offline

And here is the SelectClauses for CreateMonitoredItemsRequest that specifies which Event fields were selected:

SelectClauses: Array of SimpleAttributeOperand
    ArraySize: 19
    [0]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: EventId
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [1]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: Severity
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [2]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: Time
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [3]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: Message
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [4]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: EventType
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [5]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: SourceName
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [6]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 2
            [0]: QualifiedName
                Id: 0
                Name: DialogState
            [1]: QualifiedName
                Id: 0
                Name: Id
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [7]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: ResponseOptionSet
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [8]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: Prompt
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [9]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: DefaultResponse
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [10]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: ActiveState
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [11]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 2
            [0]: QualifiedName
                Id: 0
                Name: ActiveState
            [1]: QualifiedName
                Id: 0
                Name: Id
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [12]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 2
            [0]: QualifiedName
                Id: 0
                Name: ActiveState
            [1]: QualifiedName
                Id: 0
                Name: EffectiveDisplayName
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [13]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 2
            [0]: QualifiedName
                Id: 0
                Name: AckedState
            [1]: QualifiedName
                Id: 0
                Name: Id
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [14]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 2
            [0]: QualifiedName
                Id: 0
                Name: ConfirmedState
            [1]: QualifiedName
                Id: 0
                Name: Id
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [15]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: Retain
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [16]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: BranchId
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [17]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2041
        BrowsePath: Array of QualifiedName
            ArraySize: 1
            [0]: QualifiedName
                Id: 0
                Name: ConditionName
        AttributeId: Value (0x0000000d)
        IndexRange: [OpcUa Null String]
    [18]: SimpleAttributeOperand
        TypeDefinitionId: NodeId
            .... 0001 = EncodingMask: Four byte encoded Numeric (0x1)
            Namespace Index: 0
            Identifier Numeric: 2782
        BrowsePath: Array of QualifiedName
            ArraySize: 0
        AttributeId: NodeId (0x00000001)
        IndexRange: [OpcUa Null String]
May 3, 2022
10:42, EEST
Avatar
Oleksandr
Member
Members
Forum Posts: 31
Member Since:
February 14, 2020
sp_UserOfflineSmall Offline

Hello.
Thank you very much!
Yes, I wanted to look at the generates events and a list of event fields.
Now I can find it in the Wireshark logs.
Thanks
Oleksandr

Forum Timezone: Europe/Helsinki

Most Users Ever Online: 518

Currently Online:
11 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

hbrackel: 135

pramanj: 86

Francesco Zambon: 81

rocket science: 77

ibrahim: 75

Sabari: 62

kapsl: 57

gjevremovic: 49

Xavier: 43

fred: 41

Member Stats:

Guest Posters: 0

Members: 685

Moderators: 16

Admins: 1

Forum Stats:

Groups: 3

Forums: 15

Topics: 1467

Posts: 6259

Newest Members:

fidelduke938316, Jan-Pfizer, DavidROunc, fen.pang@woodside.com, aytule, rashadbrownrigg, christi10l, ahamad1, Flores Frederick, ellenmoss

Moderators: Jouni Aro: 1009, Otso Palonen: 32, Tuomas Hiltunen: 5, Pyry: 1, Petri: 0, Bjarne Boström: 983, Heikki Tahvanainen: 402, Jukka Asikainen: 1, moldzh08: 0, Jimmy Ni: 26, Teppo Uimonen: 21, Markus Johansson: 42, Niklas Nurminen: 0, Matti Siponen: 321, Lusetti: 0, Ari-Pekka Soikkeli: 5

Administrators: admin: 1