当前位置: 首页 > news >正文

深圳标识制作公司北京seoqq群

深圳标识制作公司,北京seoqq群,建设好网站的在线沟通功能,电脑网站大全java读取OPC DA数据—Utgard Utgard库已经过时,原作者早已删除库,建议使用OPC UA,兼容OPC DA。 下面讲解Utgard使用 C#和C都不用配置DCOM,直接调用函数 既然是非要用Java,那就别想太方便,需要配置DCOM(后…

java读取OPC DA数据—Utgard

Utgard库已经过时,原作者早已删除库,建议使用OPC UA,兼容OPC DA。

下面讲解Utgard使用
  • C#和C++都不用配置DCOM,直接调用函数

  • 既然是非要用Java,那就别想太方便,需要配置DCOM(后面博客介绍)。

Java实现OPC客户端有两种

有两种开源包,分别是JeasyOpc和utgard(Openscada),他们的区别如下:

UtgardJeasyopc
Linux下支持(纯Java编写)不支持
Windows64位下支持不支持
用户名密码需要不需要
组查询不支持支持
压力测试(单线程同步)略快7W点大约在4224ms略慢7W点大约在22540ms
压力测试(单线程异步)略快略慢
压力测试(单线程发布订阅)

经对比分析,我们采用Utgard(Openscada)开源技术,Openscada可以很好的实现与OPC服务器的链接及读写数据等功能,还可以随时获取和修改OPC的Server和Item的属性状态信息。所以它能够很好的满足我们的需求,建议使用Openscada。

关于Utgard

  • Utgard是一个开源的项目,基于j-interop做的,用于和OPC SERVER通讯。

  • j-interop是纯java封装的用于COM/DCOM通讯的开源项目,这样就不必使用JNI

  • Utgard则是纯java编写,就是不支持opc 3.0协议。

关于JeasyOPC

  • 借助一个dll库来实现的和OPCServer的通信,但是JCustomOpc.dll,,太老了,而且支持只32位系统
  • JEasy是java调用动态连接库,底层用的是jni,dll库比较老。

建议选择Utgard

java使用Utgard读取OPC数据

pom.xml引入包
<dependency><groupId>org.openscada.utgard</groupId><artifactId>org.openscada.opc.lib</artifactId><version>1.5.0</version><exclusions><exclusion><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.65</version></dependency><dependency><groupId>org.openscada.utgard</groupId><artifactId>org.openscada.opc.dcom</artifactId><version>1.5.0</version></dependency>
伪代码读取OPC

OPC DA客户端工具Opc quick client使用


import org.jinterop.dcom.common.JIErrorCodes;
import org.jinterop.dcom.common.JIException;
import org.jinterop.dcom.core.JIVariant;
import org.openscada.opc.dcom.da.OPCSERVERSTATE;
import org.openscada.opc.lib.common.ConnectionInformation;
import org.openscada.opc.lib.da.*;import java.util.concurrent.Executors;public class Test {public static void main(String[] args) throws Exception {test();}public static void test() throws Exception {final ConnectionInformation ci = new ConnectionInformation();ci.setHost("10.211.55.4");ci.setUser("OPCUser");ci.setPassword("opcuser");//注册表ID,可以在“组件服务”里看到  也可以在我的博客(https://blog.csdn.net/yinjl123456/article/details/121756075)中找到ci.setClsid("7BC0CC8E-482C-47CA-ABDC-0FE7F9C6E729");Item item = null;Server server = new Server(ci, null);try {server.connect();Group group = server.addGroup();item = group.addItem("tongdao.tag1.aaa");System.out.println("111111==" + getVal(item.read(true).getValue()));Thread.sleep(2000);System.out.println("ddddd===" + server.getServerState());System.out.println("ddddd===" + server.getServerState().getServerState());//ddddd===OPC_STATUS_RUNNINGif (OPCSERVERSTATE.OPC_STATUS_RUNNING == server.getServerState().getServerState()) {System.out.println("OPC_STATUS_RUNNING ---------");}Group group2 = server.addGroup();item = group2.addItem("tongdao.tag1.abc");System.out.println("22222==" + getVal(item.read(true).getValue()));Thread.sleep(2000);server.dispose();System.out.println("xxxxxx===" + server.getServerState());//xxxxxx===nullif (null == server.getServerState()) {System.out.println("OPC no ==================");}} catch (Exception e) {e.printStackTrace();}}/*** 获取value* @param var* @return* @throws JIException*/private static Object getVal(JIVariant var) throws JIException {Object value;int type = var.getType();switch (type) {case JIVariant.VT_I2:value = var.getObjectAsShort();break;case JIVariant.VT_I4:value = var.getObjectAsInt();break;case JIVariant.VT_I8:value = var.getObjectAsLong();break;case JIVariant.VT_R4:value = var.getObjectAsFloat();break;case JIVariant.VT_R8:value = var.getObjectAsDouble();break;case JIVariant.VT_BSTR:value = var.getObjectAsString2();break;case JIVariant.VT_BOOL:value = var.getObjectAsBoolean();break;case JIVariant.VT_UI2:case JIVariant.VT_UI4:value = var.getObjectAsUnsigned().getValue();break;case JIVariant.VT_EMPTY:throw new JIException(JIErrorCodes.JI_VARIANT_IS_NULL, "Variant is Empty.");case JIVariant.VT_NULL:throw new JIException(JIErrorCodes.JI_VARIANT_IS_NULL, "Variant is null.");default:throw new JIException(JIErrorCodes.JI_VARIANT_IS_NULL, "Unknown Type.");}return value;}}

参考链接:
https://www.cnblogs.com/Frankie1980/p/10830119.html
https://www.cnblogs.com/ioufev/p/9928971.html
https://www.hifreud.com/2014/12/27/opc-4-client-invoke-use-utgard/
https://blog.csdn.net/wise18146705004/article/details/82347926
https://blog.csdn.net/lgbisha/article/details/82898228

http://www.wangmingla.cn/news/156254.html

相关文章:

  • 云服务器建网站seo教程 seo之家
  • 全国二级建造师查询网站百度旗下有哪些app
  • 附近短期电脑培训班网站优化推广哪家好
  • 网站升级中模板游戏推广员判几年
  • 长安网站建设工作总结免费seo快速排名工具
  • 扁平化个人网站网站关键词挖掘
  • 美食杰网站的建设目的培训机构还能开吗
  • 做百科专用参考链接的网站石家庄关键词排名首页
  • 手机软件网站网络营销顾问
  • 做网站套餐2023年12月疫情又开始了吗
  • 邢台做移动网站的地方优化seo
  • 国外h5建站seo发贴软件
  • 做网站的心得体会关键词快速上首页排名
  • 美国有网站建设公司吗营销宣传图片
  • 百度地图排名怎么优化冯耀宗seo课程
  • 白洋湾做网站公司提升排名
  • 博罗做网站报价企业如何进行网站推广
  • 长春新建高铁站长沙企业网站建设报价
  • 做网站软件美国疫情最新数据消息
  • 企业官网网站建设seo公司网站
  • 简单网站首页怎么做网络推广渠道都有哪些
  • 福州网站建设优化方案模板
  • 网站建设步骤及分工广告宣传网站
  • 电子商务网站建设的目的和作用数据分析方法
  • 川畅互联咨询 网站建设郑州有没有厉害的seo
  • 政府网站需求分析百度指数搜索榜
  • 域名有关的网站网络营销措施有哪些
  • 电子商务官方网站建设seo在线教程
  • 优的网站建设大连谷歌seo
  • html做的好看的网站百度seo白皮书