订阅标签后如何知道 plc 连接是否丢失?
How can I know if the plc connection is lost once I subscribed a tag?
我创建了一个客户端应用程序,该应用程序订阅了通过 OPC UA 服务器 (c#) 监控多个标签。如果 OPC 服务器和 PLC 之间的连接在客户端 运行 时丢失,客户端将停止从服务器接收信息,并且永远不会收到 plc 无法访问的通知。
我正在评估通过 OPC 服务器对一个标签实施定期读取操作,以真正了解 plc 连接是否处于活动状态,但如果 OPC UA 中有本地机制,我想避免它。
有没有办法(例如事件)通知客户端与 plc 的连接丢失 运行 订阅?
当与目标系统的连接丢失时,兼容的 OPC UA 服务器必须发送带有 "Bad" 状态代码之一的通知。这是正常的通知事件,与 "good" 相同的通道,它只是携带一个不同的 DataValue,恰好有 StatusCode 和相应的位设置,因此它表示有问题。
因此,您需要检查传入通知中的 StatusCode。如果你已经这样做了,但服务器在通信丢失的情况下真的什么都不发送,你需要向服务器供应商投诉,因为这种行为对于任何严肃的服务器来说都是不可接受的。
注意:在订阅监控项时,有一些方法可以指定数据更改"filter",您可以选择是否要收到通知,例如当只是时间戳发生变化而不是值等时。但是无论过滤器如何设置,StatusCode 的变化总是会被发送。因此,问题不可能出在过滤器设置不正确上。
我创建了一个客户端应用程序,该应用程序订阅了通过 OPC UA 服务器 (c#) 监控多个标签。如果 OPC 服务器和 PLC 之间的连接在客户端 运行 时丢失,客户端将停止从服务器接收信息,并且永远不会收到 plc 无法访问的通知。
我正在评估通过 OPC 服务器对一个标签实施定期读取操作,以真正了解 plc 连接是否处于活动状态,但如果 OPC UA 中有本地机制,我想避免它。
有没有办法(例如事件)通知客户端与 plc 的连接丢失 运行 订阅?
当与目标系统的连接丢失时,兼容的 OPC UA 服务器必须发送带有 "Bad" 状态代码之一的通知。这是正常的通知事件,与 "good" 相同的通道,它只是携带一个不同的 DataValue,恰好有 StatusCode 和相应的位设置,因此它表示有问题。
因此,您需要检查传入通知中的 StatusCode。如果你已经这样做了,但服务器在通信丢失的情况下真的什么都不发送,你需要向服务器供应商投诉,因为这种行为对于任何严肃的服务器来说都是不可接受的。
注意:在订阅监控项时,有一些方法可以指定数据更改"filter",您可以选择是否要收到通知,例如当只是时间戳发生变化而不是值等时。但是无论过滤器如何设置,StatusCode 的变化总是会被发送。因此,问题不可能出在过滤器设置不正确上。