简体   繁体   English

OPC UA 调用确认方法并获取 java 中的 Bad_EventIdUnkown

[英]OPC UA calling Acknowlagement method and fetching Bad_EventIdUnkown in java

Currently i am developing OPCUA client using Eclipse Milo.目前我正在使用 Eclipse Milo 开发 OPCUA 客户端。 I am able to read data from OPC UA cpp server and able to write setpoint data to server.我能够从 OPC UA cpp 服务器读取数据并将设定点数据写入服务器。

I am not able to perform acknowledgement of OPCUA ALarm and events.我无法确认 OPCUA 警报和事件。

I tried with node-red opcua server and getting alarms,now i want to acknowledge the same, so i had tried code for calling acknowledgement method for opcua.我尝试使用 node-red opcua 服务器并收到警报,现在我想确认相同,所以我尝试了调用 opcua 确认方法的代码。 Here it is:这里是:

byte[] b=new byte[] {-66, -115, -121, -6, -39, 40, 89, 114, 60, -66, -126, -79, -72, -128, -21, 23, 0, 0, 4, -4};
        LocalizedText lt = new LocalizedText("bagiya");     
ByteString bs=new ByteString(b);
    Variant evntid1 = new Variant(bs);
        System.out.println("jangli id :=>"+vs[1]);

        Variant lt1 = new Variant(lt);
        Variant[] v = new Variant[] { evntid1,lt1 = new Variant(lt)};
        System.out.println(vs[1].getDataType());
        CallMethodRequest rec = new CallMethodRequest(NodeId.parse("ns=1;i=1003"), NodeId.parse("ns=1;i=1022"), v);

            System.out.println( rec.getTypeId()+"::=>"+client.call(rec).get());

this byte array string is given by node-red opcua server using eclipse milo code of Event Subscription Example.此字节数组字符串由节点红色 opcua 服务器使用事件订阅示例的 eclipse milo 代码给出。

    EventFilter eventFilter = new EventFilter(new SimpleAttributeOperand[] {

            new SimpleAttributeOperand(Identifiers.BaseEventType,
                    new QualifiedName[] { new QualifiedName(0, "EventId") }, AttributeId.Value.uid(), null),
            new SimpleAttributeOperand(Identifiers.BaseEventType,
                    new QualifiedName[] { new QualifiedName(0, "EventType") }, AttributeId.Value.uid(), null),
            new SimpleAttributeOperand(Identifiers.BaseEventType,
                    new QualifiedName[] { new QualifiedName(0, "Severity") }, AttributeId.Value.uid(), null),
            new SimpleAttributeOperand(Identifiers.BaseEventType,
                    new QualifiedName[] { new QualifiedName(0, "Time") }, AttributeId.Value.uid(), null),
            new SimpleAttributeOperand(Identifiers.BaseEventType,
                    new QualifiedName[] { new QualifiedName(0, "Time") }, AttributeId.Value.uid(), null),
            new SimpleAttributeOperand(Identifiers.BaseEventType,
                    new QualifiedName[] { new QualifiedName(0, "Message") }, AttributeId.Value.uid(), null) },
            new ContentFilter(null));

So we are getting this below given status: CallMethodResult{StatusCode=StatusCode{name= Bad_EventIdUnknown , value=0x809A0000, quality=bad}, InputArgumentResults=[StatusCode{name=Good, value=0x00000000, quality=good}, StatusCode{name=Good, value=0x00000000, quality=good}], InputArgumentDiagnosticInfos=[], OutputArguments=[]}所以我们得到以下给定状态: CallMethodResult{StatusCode=StatusCode{name= Bad_EventIdUnknown , value=0x809A0000, quality=bad}, InputArgumentResults=[StatusCode{name=Good, value=0x00000000, quality=good}, StatusCode{name=好,值=0x00000000,质量=好}],InputArgumentDiagnosticInfos=[],OutputArguments=[]}

Kindly give me some suggestions to troubleshoot this problem.请给我一些解决此问题的建议。

In this line of code:在这行代码中:

CallMethodRequest rec = new CallMethodRequest(NodeId.parse("ns=1;i=1003"), 
NodeId.parse("ns=1;i=1022"), v);

You parse two node Id's.您解析两个节点 ID。 And the "CallMethodResult" Status depicts that: “CallMethodResult”状态描述了:

ns=1;i=1003: ns=1;i=1003:

StatusCode{name=Bad_EventIdUnknown, value=0x809A0000, quality=bad}, InputArgumentResults=[StatusCode{name=Good, value=0x00000000, quality=good} StatusCode{name=Bad_EventIdUnknown, value=0x809A0000, quality=bad}, InputArgumentResults=[StatusCode{name=Good, value=0x00000000, quality=good}

Meaning意义

Bad_EventIdUnknown, 0x809A0000: The specified event ID is not recognized. Bad_EventIdUnknown, 0x809A0000: 指定的事件 ID 无法识别。 (with reference to here ). (参考这里)。

ns=1;i=1022: ns=1;i=1022:

StatusCode{name=Good, value=0x00000000, quality=good}], InputArgumentDiagnosticInfos=[], OutputArguments=[] StatusCode{name=Good, value=0x00000000, quality=good}], InputArgumentDiagnosticInfos=[], OutputArguments=[]

Therefore, I would like to conclude that there might be some problems with parsing ns=1;i=1003: node id.因此,我想得出结论,解析ns=1;i=1003: node id 可能存在一些问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM