`
tonynju
  • 浏览: 74385 次
  • 性别: Icon_minigender_1
  • 来自: 浙江嘉善
社区版块
存档分类
最新评论

Java OPC客户端的试用

阅读更多
Opc客户端使用说明:
概述:
    *使用openscada中的子项目UtgardProject实现opc客户端,与opc服务器进行连接.
    *使用DA2.0通讯
    *UtgardProject是基于DCOM实现的访问方式,使用了j-Interop作为DCOM通讯的工具.
使用方式:
    1 不使用AccessBase方式,使用for循环轮询查看item的数值
        样例:org.openscada.opc.lib.myopcdemo.ItemReadTest
        步骤:
            > String groupName = "testGroup";
            > String itemId = "Numeric._I4";
            > ConnectionInformation ci = new ConnectionInformation();
            > ... ...
            > Server server = new Server ( ci, new Scheduler ( true ) );
            > server.connect ();
            > Group group = server.addGroup ( "test_group" );
            > group.setActive ( true );
            > group = server.findGroup ( groupName);
            > Item item = group.addItem ( itemId);
            > item.setActive ( true );
            >   for ( int i = 0; i < 10; i++ )
                {
                    Thread.sleep ( 100 );
                    dumpItemState ( item, item.read ( false ) );
                }

   
    2 使用AccessBase方式,分为两类:Sync和Async
        2.1 使用SyncAccess方式,jar包中样例:org.openscada.opc.lib.myopcdemo.SyncItemRead
            步骤:
                > String itemId = "Numeric._I4";
                > server.connect();
                > AccessBase access = new SyncAccess ( server, 100, false );     //100(ms)是同步频率
                > access.addItem ( itemId, new DataCallbackDumper () );
                > access.bind ();
               
        2.2 使用Async20Access方式
            步骤:
                > String itemId = "Numeric._I4";
                > server.connect();
                > //server.setDefaultUpdateRate(100);       //指定100ms作为接受频率
                > AccessBase access = new Async20Access ( server, 100, true );     //100(ms)不起作用,false表示初始话是否访问
                > access.addItem ( itemId, new DataCallbackDumper () );
                > access.bind ();

分享到:
评论
4 楼 w649553254 2016-05-03  
LeoLi_1221 写道
AccessBase access = new Async20Access ( server, 100, true );     //100(ms)不起作用,false表示初始话是否访问
access.addItem ( itemId, new DataCallbackDumper () );
这是订阅模式是吗?
请问楼主 我按这种方式运行一段时间后会报下面的错误呢?
WARN - JIComOxidRuntimeHelper$1.run(92) | Oxid Resolver Thread/run
java.io.IOException: Socket Closed
at rpc.DefaultConnection.receiveFragment(DefaultConnection.java:393)
at rpc.DefaultConnection.receive(DefaultConnection.java:87)
at rpc.ConnectionOrientedEndpoint.receive(ConnectionOrientedEndpoint.java:250)
at org.jinterop.dcom.transport.JIComRuntimeEndpoint.processRequests(JIComRuntimeEndpoint.java:94)
at org.jinterop.dcom.core.JIComOxidRuntimeHelper$1.run(JIComOxidRuntimeHelper.java:88)
at java.lang.Thread.run(Thread.java:662)

3 楼 LeoLi_1221 2014-11-18  
AccessBase access = new Async20Access ( server, 100, true );     //100(ms)不起作用,false表示初始话是否访问
access.addItem ( itemId, new DataCallbackDumper () );
这是订阅模式是吗?
请问楼主 我按这种方式运行一段时间后会报下面的错误呢?
WARN - JIComOxidRuntimeHelper$1.run(92) | Oxid Resolver Thread/run
java.io.IOException: Socket Closed
at rpc.DefaultConnection.receiveFragment(DefaultConnection.java:393)
at rpc.DefaultConnection.receive(DefaultConnection.java:87)
at rpc.ConnectionOrientedEndpoint.receive(ConnectionOrientedEndpoint.java:250)
at org.jinterop.dcom.transport.JIComRuntimeEndpoint.processRequests(JIComRuntimeEndpoint.java:94)
at org.jinterop.dcom.core.JIComOxidRuntimeHelper$1.run(JIComOxidRuntimeHelper.java:88)
at java.lang.Thread.run(Thread.java:662)
2 楼 lrvberg 2013-09-13  
你好,请教一下:
jeasyopc 和 openscada的utgard如何选择呢?
utgard在使用中,有没有啥问题

还请多多指教,非常感谢

我的邮箱 lrvberg@gmail.com
1 楼 ezwuhai 2013-04-28  
楼主能详细说明下吗,新手求指导。

相关推荐

Global site tag (gtag.js) - Google Analytics