关闭OPC DA连接

时间:2016-08-22 14:28:44

标签: opc opc-da

我正在使用OPC Foundation的OpcNetApi.dll与OPC DA服务器进行通信。

我很好奇是否有一种编程方法可以使用此库或类似的库来终止当前在服务器上处于活动状态的特定连接。

1 个答案:

答案 0 :(得分:0)

我不是肯定的,但我不认为你要求的是永远可能的(没有调试器)。 OPC基于Microsoft COM。可以通过两种方式实现COM:进程内和进程外。选择取决于OPC服务器供应商。

使用进程内实现,如果您在与OPC服务器相同的机器上运行OPC客户端,则OPC服务器只是一个直接加载到OPC客户端的内存空间的DLL。这个dll暴露了OPC接口,如CreateGroup,ReadAllItems等。现在它可能通过其他一些机制(命名管道,TCP / IP等)获取实际数据,但这又取决于OPC服务器实现。真正强制停止此OPC服务器的唯一方法是结束OPC客户端或获取OPC客户端程序。当然OPC客户端或OPC服务器可能已经实现了结束机制,但是没有保证。

如果它是一个进程外的OPC实现,那么OPC服务器将在一个单独的可执行文件中运行,这样你就可以找到该可执行文件的名称并终止它。 (您可以在regedit中搜索OPC服务器的名称以查找相应的可执行文件名称)。如果我没记错的话,可以设计OPC服务器,以便所有客户端共享一个可执行文件,或者每个OPC客户端获取自己的可执行文件实例。

如果您正在远程运行OPC服务器,那么它可能会在存根程序中加载,如果它是一个进程内实现,然后绑定到RPC。如果你阻止RPC通信的端口,我想大多数客户端会在一段时间后决定断开连接,虽然没有保证,但他们不会在以后重新连接。

以下是一些更多信息: https://www.opcsupport.com/link/portal/4164/4590/Article/711/May-I-get-a-In-Proc-and-Out-Of-Proc-explanation