`
suigara
  • 浏览: 80608 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

仓秤和散料秤:java连接opc Server

 
阅读更多

这三篇都是之前写好的,一直没发。

这次一起发出来吧。

 

java连接硬件很痛苦,特别是对我这种没接触过的认来说。。。。

希望这几篇文章能给大家一些启发,有问题可以留言。

 

 

 

介绍下两种秤:
散料秤:顾名思义,这是放散料的秤。。。在水泥厂,就是卖水泥的时候装船的秤,从外面看就像大漏斗,漏斗口对准船上的仓口,操作机器开始放水泥,水泥就从漏斗里漏到船上的仓 里了。
每个散料秤内部都有两个称重仓(成为A秤和B秤),一个仓放料的同时,另一个仓进料,这样效率比较高。计量软件需要显示A、B秤当前的量和A、B秤合计放出的累积量(装完后,
这个累计量就可以直接保存为磅单的重量了)
仓秤:顾名思义,就是在一个仓(跟个大罐子似的)上面有个秤。在南方水泥,仓秤是负责采购用的。仓秤有两个门,上面的门是负责称重的,下面的门的下面就是传送皮带了,
负责把称重后的原料运到指定地方(应该是仓库吧。),每个仓秤都会配一个挖斗。工作时,挖斗先从船里把原料挖出来,然后称重仓关门(后面的开门和关门都是只上面的门),
挖斗把原料然后放到称重仓上,稳定后,称重仓上就会计量出一个数(并传给PLC,PLC就会通知计量的计算机了),这个数就是这一斗的净重。
然后开门,原料下去进入传送皮带。然后关门-》挖斗再从船上挖。。。。如此循环,最终把船上的东西都挖出来。。。。
计算机实时显示没一斗的重量和累计中量,完成后,保存磅单就可以了。
之所以把看似完全不同的两个秤放到一起写,是因为这两个秤的硬件厂商都使用OPC来提供数据(省得我们去读硬件了)
OPC server:
从我们的角度可以把它看成是一个本地的SocketSever或者HttpServer(当然,远程也是可以的,不过需要一些组件支持,不在这里讨论了)
我们的计量软件当做client,去opc sever取数,取数的时候需要三个参数:opcserver地址(本地的一直是localhost就可以了) opcservername(可以理解为端口号?) 和 Itemname。

opcservername可以通过opcserver设定,我们可以很容易得到
tag就是我们所说的itemname,也可以从opcserver中看到,不过西门子的opc server找起来比较麻烦,我们使用了一个叫做FactorySoft OPCClient的软件来查看,如下:
做过ems的应该清楚tag的概念了,拿电表做例子,电表上的度数是个tag,上面的电流也是个tag。可以认为tag就代表一个数据。

上面是一些介绍了。那么怎么在java中连接opc sever呢?
我们找到了一个开源包,jeasyopc(地址:https://sourceforge.net/projects/jeasyopc),这个包有两部分组成,java代码和一个dll。
一个简单的用法(来源:http://haidii.blog.sohu.com/101582782.html)
//第一步,初始化
JOpc.coInitialize();
//第二步,建立一个JOpc对象,三个参数,分别是OpcServer的IP,Server的name,还有JOpc的name
JOpc jopc = new JOpc("172.29.10.173", "OPCServer.Hundure.EXE", "JOPC1");
//第三步,建立连接
jopc.connect();
//第四步,新建一个OPC的group和item,并把item加到group中
OpcGroup group = new OpcGroup("group", true, 500, 0.0f);
OpcItem item = new OpcItem("Door1", true, "");
group.addItem(item);
//第五步,
jopc.addGroup(group);
jopc.registerGroup(group);
jopc.registerItem(group, item);
//第六步
item.setValue(new Variant(1));
jopc.synchWriteItem(group, item);
//最后,该释放的全释放掉
jopc.unregisterItem(group, item);
jopc.unregisterGroup(group);
JOpc.coUninitialize();
测试一下,可用!


因为基本上用不到中文item,所以就不发了。
需要的,可以留言,
分享到:
评论
9 楼 suigara 2013-11-18  
方君-羅 写道
您寫得很詳細,很清楚,但我遇到一些問題想請問您,我使用opc browser 連線進入遠端的opc server 是成功的,但是使用JOpc jopc = new JOpc("172.29.10.173", "OPCServer.Hundure.EXE", "JOPC1");
卻連不進去,請問您知道這是甚麼問題嗎?我找了好多資訊都沒有說明是為什麼??
註:JOpc可以連的到 本機MatrikonOPC 模擬的資料,但是其他的opc都連不上....



jopc我试过连其他机器的opc server,好像有问题,当时看的是用户名的问题(好像是需要密码?),因为项目不需要,所以也没仔细研究。

8 楼 方君-羅 2013-11-16  
您寫得很詳細,很清楚,但我遇到一些問題想請問您,我使用opc browser 連線進入遠端的opc server 是成功的,但是使用JOpc jopc = new JOpc("172.29.10.173", "OPCServer.Hundure.EXE", "JOPC1");
卻連不進去,請問您知道這是甚麼問題嗎?我找了好多資訊都沒有說明是為什麼??
註:JOpc可以連的到 本機MatrikonOPC 模擬的資料,但是其他的opc都連不上....
7 楼 suigara 2013-10-06  
lrvberg 写道
你好,从德问 一直找到这里:)

有两个问题想请教:
1、为啥选择了jeasyopc,而没选择openscada的utgard呢?
2、jeasyopc的jcustomopc.dll是 32位的,我对delphi不了解,尝试用lazard编译成64位的,遇到了一堆JNI.pas(515,90) Error错误,与这个描述一样:http://sourceforge.net/p/jeasyopc/discussion/612452/thread/a940f930/

还请多多指教,非常感谢

我的邮箱 lrvberg@gmail.com


1.这个是直接在项目上适配的,项目上的机器比较老,utgard试过了,不好使,所以直接就用了jeasyopc
2.为什么要编译成64位的? 32位dll在64位系统下可以运行啊?(我测试过的)
另外,我也是第一次用delphi,搭上环境,熟悉下 很快就能上手;这个项目我就用了3中不熟悉的语言--vb,c++,delphi。。。。 很崩溃
6 楼 lrvberg 2013-09-13  
你好,从德问 一直找到这里:)

有两个问题想请教:
1、为啥选择了jeasyopc,而没选择openscada的utgard呢?
2、jeasyopc的jcustomopc.dll是 32位的,我对delphi不了解,尝试用lazard编译成64位的,遇到了一堆JNI.pas(515,90) Error错误,与这个描述一样:http://sourceforge.net/p/jeasyopc/discussion/612452/thread/a940f930/

还请多多指教,非常感谢

我的邮箱 lrvberg@gmail.com
5 楼 suigara 2013-08-09  
JamesJiangCHN 写道
在已知结构下可以这样添加,想问下当不知道OPCServer结构,或者其数据结构式是变化的,怎么来获取其内部结构呢?
比如下面有哪些Group,Group下有哪些Item?
请指教,多谢。
我的邮箱JamesJiangCHN@gmail.com


jeasyopc做不到(我看了他的dll,delphi做的,没有提供这样的接口)
我们是通过工具 opcclient.exe 看的,工具很小 也非常好用


另外 什么情况下联item都不知道就要取值呢,要取什么值??给你item列表你怎么找到想要的item和值???

4 楼 suigara 2013-08-09  
cgsyck 写道
这个只是的事例吧,怎么把opc中的数据读下来呢

JOpc 就有方法读取数据啊
3 楼 leeskain 2013-07-18  
你好作者,我想 知道 ,当我连接上OPCServer后,如何能获取group数组,每个group中items的列表。
我的邮箱leeskain@163.com,感谢赐教,因为获取不到,所以一直做不下去了。望回复。
2 楼 cgsyck 2013-07-08  
这个只是的事例吧,怎么把opc中的数据读下来呢
1 楼 JamesJiangCHN 2013-04-09  
在已知结构下可以这样添加,想问下当不知道OPCServer结构,或者其数据结构式是变化的,怎么来获取其内部结构呢?
比如下面有哪些Group,Group下有哪些Item?
请指教,多谢。
我的邮箱JamesJiangCHN@gmail.com

相关推荐

Global site tag (gtag.js) - Google Analytics