Невозможно найти группу по имени по openscada в DCOM - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь записать значение элемента, который находится в группе под названием группа.Это очень странно, что эта группа является публичной группой, и я могу найти это следующим образом:

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:

enter image description here

Может кто-нибудь сказать мне причину, по которой я не могу найти эту группу и есть ли другая альтернатива для записи значения элементов 01_Kortleser_101.Command.Action и AO_02-01_Kortleser_101.Command.Send с использованием группы.

...