Я пытаюсь записать значение элемента, который находится в группе под названием группа.Это очень странно, что эта группа является публичной группой, и я могу найти это следующим образом:
enumerateGroups(server, OPCENUMSCOPE.OPC_ENUM_PUBLIC);
public static void enumerateGroups(final OPCServer server,
final OPCENUMSCOPE scope) throws IllegalArgumentException,
UnknownHostException, JIException {
System.out.println("Enum Groups: " + scope.toString());
for (final String group : server.getGroups(scope).asCollection()) {
System.out.println("Group: " + group);
}
}
, которые возвращаются на консоли:
Enum Groups: OPC_ENUM_PUBLIC
Group: group
, но когда я пытаюсь найтигруппа по имени, подобная этой:
try {
JISystem.setAutoRegisteration(true);
JISession _session = null;
_session = JISession.createSession("localhost","user","password");
final String itemId = "AO_02-01_Kortleser_101.Command.Send";
final ConnectionInformation ci = new ConnectionInformation();
ci.setHost("localhost");
// ci.setDomain("");
ci.setUser("user");
ci.setPassword("password");
ci.setClsid("55655C52-BC4F-48DD-B4EE-599E73D966BE");
final Server server2 = new Server(ci,
Executors.newSingleThreadScheduledExecutor());
server2.connect();
// Add a new group
final Group group = server2.findGroup("group");
// Add a new item to the group
final Item item = group.findItemByClientHandle(11);
// add a thread for writing a value every 3 seconds
ScheduledExecutorService writeThread =
Executors.newSingleThreadScheduledExecutor();
final AtomicInteger i = new AtomicInteger(1);
writeThread.scheduleWithFixedDelay(new Runnable() {
public void run() {
final JIVariant value = new JIVariant(i);
try {
System.out.println(">>> " + "writing value " + i.get());
item.write(value);
} catch (JIException e) {
e.printStackTrace();
}
}
}, 5, 3, TimeUnit.SECONDS);
// wait a little bit
Thread.sleep(20 * 1000);
writeThread.shutdownNow();
}
catch(Exception e) {
e.printStackTrace();
}
библиотека через исключение:
Recieved RESPONSE
org.openscada.opc.lib.da.UnknownGroupException
at org.openscada.opc.lib.da.Server.findGroup(Server.java:320)
at com.freud.dcom.utgard.cases.WriteTest.main(WriteTest.java:66)
des 12, 2018 5:08:31 PM org.jinterop.dcom.core.JISession postDestroy
Вот снимок экрана моего сервера OPC:
Может кто-нибудь сказать мне причину, по которой я не могу найти эту группу и есть ли другая альтернатива для записи значения элементов 01_Kortleser_101.Command.Action и AO_02-01_Kortleser_101.Command.Send с использованием группы.