利用java与OPC通讯读取数据
Matrikon_opc模拟器
1、Matrikon-OPC-server模拟器的安装参考链接
软件下载:OPC软件安装包下载
软件安装:安装OPC-server.
2、与matrikon-opc通讯读取数据参考链接
利用java与opc通讯
下载和安装参照链接就可以完成,重点记录一下与opc通讯踩过的坑
查询相关资料,可以用jeasyopc与opc建立通讯,主要参考这位朋友的工作
与opc通讯
jeasyopc最不好弄的地方是:需要32位的jdk,否则会报错,
\lib\JCustomOpc.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
其他的根据源码提供的example配置好就可以搞定了。
S7-200 PC Access SMART
由于需要连接S7‑200 SMART PLC 这个硬件读取数据,把数据读取到OPC中,只能用S7-200 PC Access SMART 这个OPC软件读取,尝试利用jeasyopc无法读取,总是会报下面的错误
Exception in thread "main" javafish.clients.opc.exception.UnableAddItemException: Unable to register some item to group.
at javafish.clients.opc.JOpc.registerGroups(JOpc.java:296)
at com.freud.opc.jeasyopc.JeasyopcTest06.main(JeasyopcTest06.java:36)
研究了好长时间也没搞定这个,最后放弃这种方案,改用Utgard与OPC通讯,感谢
这位朋友java opc client 开源Utgard学习及踩坑
根据这篇文章,下载了opc-client代码,然后利用里面的示例,再尝试,发现可以连接成功,进一步获取group和item也可以。核心部分:
连接server
Server server = new Server(BaseConfiguration.getCLSIDConnectionInfomation(),
Executors.newSingleThreadScheduledExecutor());
这里主要是相关的配置和线程的设置
获取item
/** 获得OPC下所有的Item */
ArrayList<String> itemList = getAllItems(server.getFlatBrowser());
/**
* 遍历Flat结构的所有Item值
*
* @param browser
* @throws IllegalArgumentException
* @throws UnknownHostException
* @throws JIException
*/
private ArrayList<String> getAllItems(final FlatBrowser browser) {
ArrayList<String> itemList = new ArrayList<String>();
try {
for (String name : browser.browse()) {
itemList.add(name);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (JIException e) {
e.printStackTrace();
}
return itemList;
}