java opc client 开源Utgard学习及踩坑

最近的项目中需要运用到opc client。需要从opc server中获取数据,或修改参数。主要运用的语言为java。

准备知识:opc server 协议

  • OPC DA: Data Access协议,是最基本的OPC协议。OPC DA服务器本身不存储数据,只负责显示数据收集点的当前值。客户端可以设置一个refresh interval,定期刷新这个值。目前常见的协议版本号为2.0和3.0,两个协议不完全兼容。也就是用OPC DA 2.0协议的客户端连不上OPC DA 3.0的Server
  • OPC HDA: Historical Data Access协议。前面说过DA只显示当前状态值,不存储数据。而HDA协议是由数据库提供,提供了历史数据访问的能力。比如价格昂贵的Historian数据库,就是提供HDA协议接口访问OPC的历史数据。HDA的Java客户端目前我没找到免费的。
  • OPC UA: Unified Architecture统一架构协议。诞生于2008年,摒弃了前面老的OPC协议繁杂,互不兼容等劣势,并且不再需要COM口访问,大大简化了编程的难度。基于OPC UA的开源客户端非常多。不过由于诞生时间较晚,目前在国内工业上未大规模应用,并且这个协议本身就跟旧的DA协议不兼容,客户端没法通用。

com:Component Object Model对象组件模型,是微软定义的一套软件的二进制接口,可以实现跨编程语言的进程间通信,进而实现复用。

dcom: Microsoft Distributed Component Object Model,网络传输数据的COM协议,客户端也可以通过互联网分布在各个角落。

 

然后准备开工,一番查找后,发现存在两个开源类库

1.JEasyOPC Client

2.Utgard

JEasy是java调用动态连接库,底层用的是jni,dll库比较老。

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

JEasy在调用的时候,jni总是报错,无力解决。

最终使用了Utgard的库,在其官网上学习使用方法http://openscada.org/projects/utgard/,最终还是跑起来了,其中opc服务端的配置,一般工程人员会配置好,不需要操心dcom配置之类的问题。最终项目是maven配置完成。最终运行的时候,发现一个group死活发现不了,跟我说是新增加的,但是opc 服务端却没有重新配置,导致无法发现,最后还是研究了手册,自己手动配置完成了。

关键API示例

  • 列举某Server下的所有OPC连接
Serve
  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lgbisha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值