我创建了一个客户端应用程序,该应用程序具有通过OPC UA服务器(c#)监视多个标签的订阅。如果在客户端运行时OPC服务器与PLC之间的连接丢失,则客户端将停止从服务器接收信息,并且永远不会通知PLC无法访问。
我正在评估通过OPC服务器对一个标签实施定期读取操作,以实际知道plc连接是否处于活动状态,但是我想避免在OPC UA中使用本机机制。
是否有一种方法(例如事件)通知客户端有关正在运行的订阅的与plc的连接丢失了?
答案 0 :(得分:2)
当与目标系统的连接丢失时,兼容的OPC UA服务器必须发送带有“不良”状态代码之一的通知。这是正常的通知事件,与“好”事件相同,它只是携带一个不同的DataValue,而恰好将StatusCode设置为相应的位,从而指示问题。
因此,您需要检查传入通知中的StatusCode。如果您已经这样做了,但是在通信中断的情况下服务器确实没有发送任何内容,则需要向服务器供应商投诉,因为对于任何严重的服务器来说,这种行为实际上是不可接受的。
注意:订阅受监视的项目时,有多种方法可以指定数据更改“过滤器”,您可以告知是否要收到通知,例如但是,无论如何设置过滤器,总是会发送StatusCode的更改。因此,问题出在不正确的过滤器设置上。