node-opcua“交易超时”

时间:2017-04-10 13:33:33

标签: node.js opc opc-ua node-opcua

我使用node-opcua包对几个nodeIds进行了设置监控。 它工作正常一段时间,但后来开始打印一些超时消息。

以下是我服务的journalctl输出:

Apr 07 08:02:02 test-machine myservice[559]:  Timeout .... waiting for response for  ReadRequest { /*RequestHeader*/
Apr 07 08:02:02 test-machine myservice[559]:  authenticationToken           /* NodeId                           */: ns=0;i=50
Apr 07 08:02:02 test-machine myservice[559]:  timeStamp                     /* UtcTime                          */: 2017-04-07T15:01:02.501Z
Apr 07 08:02:02 test-machine myservice[559]:  requestHandle                 /* IntegerId                        */: 334               0x14e
Apr 07 08:02:02 test-machine myservice[559]:  returnDiagnostics             /* UInt32                           */: 0               0x0
Apr 07 08:02:02 test-machine myservice[559]:  auditEntryId                  /* UAString                         */:
Apr 07 08:02:02 test-machine myservice[559]:  timeoutHint                   /* UInt32                           */: 0               0x0
Apr 07 08:02:02 test-machine myservice[559]:  additionalHeader              /* ExtensionObject                  */: null
Apr 07 08:02:02 test-machine myservice[559]: };
Apr 07 08:02:02 test-machine myservice[559]:  warning :  Transaction has timed out
Apr 07 08:02:15 test-machine myservice[559]:  Timeout .... waiting for response for  ReadRequest { /*RequestHeader*/
Apr 07 08:02:15 test-machine myservice[559]:  authenticationToken           /* NodeId                           */: ns=0;i=50
Apr 07 08:02:15 test-machine myservice[559]:  timeStamp                     /* UtcTime                          */: 2017-04-07T15:01:15.835Z
Apr 07 08:02:15 test-machine myservice[559]:  requestHandle                 /* IntegerId                        */: 335               0x14f
Apr 07 08:02:15 test-machine myservice[559]:  returnDiagnostics             /* UInt32                           */: 0               0x0
Apr 07 08:02:15 test-machine myservice[559]:  auditEntryId                  /* UAString                         */:
Apr 07 08:02:15 test-machine myservice[559]:  timeoutHint                   /* UInt32                           */: 0               0x0
Apr 07 08:02:15 test-machine myservice[559]:  additionalHeader              /* ExtensionObject                  */: null
Apr 07 08:02:15 test-machine myservice[559]: };
Apr 07 08:02:15 test-machine myservice[559]:  warning :  Transaction has timed out
Apr 07 08:02:29 test-machine myservice[559]:  Timeout .... waiting for response for  ReadRequest { /*RequestHeader*/
Apr 07 08:02:29 test-machine myservice[559]:  authenticationToken           /* NodeId                           */: ns=0;i=50
Apr 07 08:02:29 test-machine myservice[559]:  timeStamp                     /* UtcTime                          */: 2017-04-07T15:01:29.169Z
Apr 07 08:02:29 test-machine myservice[559]:  requestHandle                 /* IntegerId                        */: 336               0x150
Apr 07 08:02:29 test-machine myservice[559]:  returnDiagnostics             /* UInt32                           */: 0               0x0
Apr 07 08:02:29 test-machine myservice[559]:  auditEntryId                  /* UAString                         */:
Apr 07 08:02:29 test-machine myservice[559]:  timeoutHint                   /* UInt32                           */: 0               0x0
Apr 07 08:02:29 test-machine myservice[559]:  additionalHeader              /* ExtensionObject                  */: null
Apr 07 08:02:29 test-machine myservice[559]: };
Apr 07 08:02:29 test-machine myservice[559]:  warning :  Transaction has timed out
Apr 07 08:03:01 test-machine myservice[559]:  Timeout .... waiting for response for  OpenSecureChannelRequest { /*RequestHeader*/
Apr 07 08:03:01 test-machine myservice[559]:  authenticationToken           /* NodeId                           */: ns=0;i=0
Apr 07 08:03:01 test-machine myservice[559]:  timeStamp                     /* UtcTime                          */: 2017-04-07T15:02:01.928Z
Apr 07 08:03:01 test-machine myservice[559]:  requestHandle                 /* IntegerId                        */: 337               0x151
Apr 07 08:03:01 test-machine myservice[559]:  returnDiagnostics             /* UInt32                           */: 0               0x0
Apr 07 08:03:01 test-machine myservice[559]:  auditEntryId                  /* UAString                         */: null
Apr 07 08:03:01 test-machine myservice[559]:  timeoutHint                   /* UInt32                           */: 0               0x0
Apr 07 08:03:01 test-machine myservice[559]:  additionalHeader              /* ExtensionObject                  */: null
Apr 07 08:03:01 test-machine myservice[559]: };
Apr 07 08:03:01 test-machine myservice[559]: Warning: securityToken hasn't been renewed

基本上我希望永远保持监控,每15分钟发布一次。因此,如果有人能够帮助我完成这些参数,那将会非常棒。

1 个答案:

答案 0 :(得分:0)

如果您有权访问服务器,可以查看此post

在帖子中,他们声明,当您设置客户端时,requestedLifetimeCount * requestedPublishingInterval应设置为至少PublishRequest.RequestHeader.timeoutHint



var options = {
  requestedPublishingInterval: 1000, // check on server
  requestedMaxKeepAliveCount: 2,
  requestedLifetimeCount: 100, // check on server
  maxNotificationsPerPublish: 10,
  publishingEnabled: true,
  priority: 10,
}

var subscription = new opcua.ClientSubscription(opcSession, options);