利用java读取OPC里面的数据总结

利用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;
	}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Java同步读取OPCDA数据需要使用OPC DA自动化组件,其中包括J-Integra COM桥梁。首先,需要在Java中将OPCDA的COM接口封装为Java类。然后使用Java的JNI接口调用J-Integra COM桥梁,以便与OPCDA服务进行交互。在读取OPCDA数据之前,需要先建立与OPCDA服务的连接,并确保OPCDA服务已启动和运行。接下来,使用Java提供的方法建立一个数据处理函数来处理OPCDA服务返回的数据。最后,调用该数据处理函数读取OPCDA数据,并在需要的时候对其进行同步处理。由于Java能够充分利用OPC DA自动化组件,因此可以有效地读取OPCDA数据。然而,需要注意的是,在处理数据时,需要遵循OPC DA标准以确保安全正常工作。 ### 回答2: 在Java中同步读取OPCDA数据需要借助第三方库,比如OPC Foundation开发的OPC Java API以及J-Interop,同时需要熟悉OPCDA的通信协议。 首先,在Java应用程序中引入OPC Java API和J-Interop库,并创建一个OPCClient对象。将OPCServer名称和程序ID传递给构造函数,并调用connect()方法来连接OPCServer。连接成功后,使用getGroup()方法创建一个OPCGroup对象,并设置读取数据的时间间隔、数据组件等。接着,使用addSyncItem()方法向OPCGroup中添加一个同步项。同步项描述了我们想要从OPCServer读取数据项。然后,使用readSync()方法读取OPCServer中的数据项。最后,使用disconnect()方法断开与OPCServer的连接。 需要注意的是,同步读取会阻塞执行线程,直到读取数据或者超时。因此,需要根据具体应用场景来调整读取数据的时间间隔和超时时间。同时,在使用OPC Java API和J-Interop库时需要考虑线程安全,避免多个线程同时访问同一个OPCClient对象。 总之,通过使用OPC Java API和J-Interop库,结合对OPCDA通信协议的了解,可以在Java应用程序中同步读取OPCDA数据
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值