JAVA OPC客户端远程调用OPC服务端问题

引用JEasyOpc的代码,在OPC服务端本地可以运行成功,但远程访问却报如下错误。

javafish.clients.opc.exception.ConnectivityException: The connection to the OPC Server has failed: 172.20.4.11->ABB.AfwOpcDaSurrogate
at javafish.clients.opc.JCustomOpc.connect(JCustomOpc.java:204)
at javafish.clients.opc.SynchReadItemExample.main(SynchReadItemExample.java:30)
javafish.clients.opc.exception.UnableAddGroupException: Unable to register some group to server.
at javafish.clients.opc.JOpc.registerGroups(JOpc.java:293)

package javafish.clients.opc;

import javafish.clients.opc.component.OpcGroup;
import javafish.clients.opc.component.OpcItem;
import javafish.clients.opc.exception.ComponentNotFoundException;
import javafish.clients.opc.exception.ConnectivityException;
import javafish.clients.opc.exception.SynchReadException;
import javafish.clients.opc.exception.UnableAddGroupException;
import javafish.clients.opc.exception.UnableAddItemException;
import javafish.clients.opc.variant.Variant;

public class SynchReadItemExample {
public static void main(String[] args) throws InterruptedException {
SynchReadItemExample test = new SynchReadItemExample();

JOpc.coInitialize();

JOpc jopc = new JOpc("172.20.4.11", "800Service", "JOPC1");

OpcItem item1 = new OpcItem("[DIRECT][Control Structure]Root.PLC_connect.OPC.TS1_DCU10.5AA10", true, "");
//OpcItem item1 = new OpcItem("Random.Real8", true, "");
//OpcItem item1 = new OpcItem("Random.String", true, "");

OpcGroup group = new OpcGroup("group1", true, 500, 0.0f);

group.addItem(item1);
jopc.addGroup(group);

try {
  **jopc.connect();//报错**
  System.out.println("JOPC client is connected...");
}
catch (ConnectivityException e2) {
  e2.printStackTrace();
}

try {
  jopc.registerGroups();
  System.out.println("OPCGroup are registered...");
}
catch (UnableAddGroupException e2) {
  e2.printStackTrace();
}
catch (UnableAddItemException e2) {
  e2.printStackTrace();
}

synchronized(test) {
  test.wait(50);
}

// Synchronous reading of item
int cycles = 7;
int acycle = 0;
while (acycle++ < cycles) {
  synchronized(test) {
    test.wait(1000);
  }

  try {
    OpcItem responseItem = jopc.synchReadItem(group, item1);
    System.out.println(responseItem);
    System.out.println(Variant.getVariantName(responseItem.getDataType()) + ": " + responseItem.getValue());
  }
  catch (ComponentNotFoundException e1) {
    e1.printStackTrace();
  }
  catch (SynchReadException e) {
    e.printStackTrace();
  }
}

JOpc.coUninitialize();

}
}

http://blog.csdn.net/greston/article/details/34825241