gpt4 book ai didi

Java连接到OPC服务器: NotConnectedException (AutoReconnectController)

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:30 24 4
gpt4 key购买 nike

我在通过 Java 使用 openScada、Utgard 和 Jinterop 连接到 OPC 服务器时遇到问题。

我之前使用 Matrikon 的 OPC 服务器(一切正常)并尝试切换到 Kepware Server Ex。 Kepware 演示版已经用完,我不想购买它 - 所以我决定切换回 Matrikon 的 OPC 服务器。我完全卸载了 Kepware,并且在不更改任何代码的情况下,在运行程序时遇到了“org.openscada.opc.lib.common.NotConnectedException”。

我找到了解决此问题的“解决方法”。但它妨碍了程序原有的功能:最初使用的是 AutoReconnectController:

  public void createOPCConnection( String host, String domain, String progID, String clsid, List<String>tagNames) throws OPCException {   

this.conn = new ConnectionInformation();
conn.setHost(this.host);
conn.setDomain(this.domain);
conn.setUser(this.user);
conn.setPassword(this.pass);
conn.setProgId(this.progID);
conn.setClsid("F8582CF2-88FB-11D0-B850-00C0F0104305");


server = new Server(conn, Executors.newSingleThreadScheduledExecutor());
AutoReconnectController autoReconnectController = new AutoReconnectController ( server );
// disable GC for COM objects to prevent the socket from being closed
JISystem.setJavaCoClassAutoCollection(false);

try {
// connect to server
autoReconnectController.connect();
createOPCGroup(tagNames);

} catch (IllegalArgumentException e) {
throw new OPCException(e.getMessage());

}

使用测试服务器状态时

  server.getServerState() 

我得到的值为 Null。所以很明显服务器没有连接,所以我尝试删除 AutoReconnectController。

删除 AutoReconnectController 时,如下所示:

  server = new Server(conn, Executors.newSingleThreadScheduledExecutor());
try{
server.connect();
createOPCGroup(tagNames);
}catch (Exception e){
e.printStackTrace(System.out);
}

NotConnectedException没有触发,程序运行成功。但是,我需要重新连接功能。 有人对这里可能发生的事情有任何想法吗?

由于没有更改代码,我认为这是 DCOM 设置或类似的东西;但自从 Matrikon 更改为 Kepware 并再次更改后,一切都没有改变。

最佳答案

AutoReconnectController 确实会异步触发连接过程。 Server 类同步工作。由于您没有同步到连接状态,因此该状态可能是也可能不是“null”。

但是,AutoReconnectController 的“addListener”方法确实允许您在连接状态上添加监听器。像这样的东西:

autoReconnectController.addListener ( new AutoReconnectListener () {
public void stateChanged ( AutoReconnectState state ) {
if ( state == AutoReconnectState.CONNECTED ) {
createOPCGroup(tagNames);
}
}
} );
autoReconnectController.connect ();

关于Java连接到OPC服务器: NotConnectedException (AutoReconnectController),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26978659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com