【问题标题】:How can I know if the plc connection is lost once I subscribed a tag?订阅标签后,如何知道 PLC 连接是否丢失?
【发布时间】:2019-09-07 14:35:11
【问题描述】:

我创建了一个客户端应用程序,它订阅了通过 OPC UA 服务器(c#)监控多个标签。如果客户端运行时 OPC 服务器与 PLC 之间的连接丢失,客户端将停止从服务器接收信息,并且永远不会通知 PLC 无法访问。

我正在评估通过 OPC 服务器对一个标签实施定期读取操作,以实际了解 plc 连接是否处于活动状态,但如果 OPC UA 中有本机机制,我想避免它。

有没有办法(例如事件)通知客户端与 plc 的连接因正在运行的订阅而丢失?

【问题讨论】:

    标签: opc opc-ua


    【解决方案1】:

    当与目标系统的连接丢失时,兼容的 OPC UA 服务器必须发送带有“错误”状态代码之一的通知。这是正常的通知事件,与“好”事件的通道相同,只是携带不同的 DataValue,而该数据值恰好具有设置了相应位的 StatusCode,因此表明存在问题。

    因此,您需要检查传入通知中的 StatusCode。如果您已经这样做了,但服务器在通信丢失的情况下确实不发送任何内容,您需要向服务器供应商投诉,因为这种行为对于任何严重的服务器来说都是不可接受的。

    注意:订阅监控项时,有一些方法可以指定数据更改“过滤器”,您可以告诉您是否要收到通知,例如当只是时间戳改变而不是值等时。但无论过滤器如何设置,StatusCode 的更改总是被发送。因此问题不在于设置了不正确的过滤器。

    【讨论】:

    • 我没有检查传入通知的状态代码。我刚刚测试过,一旦与 plc 的连接丢失,我就会收到一条错误状态码的通知。注意:我使用的是 KepServerEX。非常感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2019-10-10
    • 2011-06-12
    • 2014-11-18
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    相关资源
    最近更新 更多