仓秤和散料秤: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,所以就不发了。
需要的,可以留言,

猜你喜欢

转载自suigara.iteye.com/blog/1567397