最近良哥在开发某电厂数据分析平台时需要操作PI数据库(OSIsoft公司的实时数据库产品),从PI 官网(https://techsupport.osisoft.com/)介绍可知,常用的访问PI数据库的方案有:①使用PI JDBC Driver或 ODBC Driver;②使用PI WEB API;③使用PI SDK;
一、使用 PI JDBC Driver
PI的JDBC驱动程序是一个java数据库连接驱动,通过SQL查询提供了强大的数据访问PI系统 。PI JDBC Driver 提供了一个类似于java 访问Mysql或者Oracle 同样的方式。但是,JDBC Driver 是 通过中间层 PI SQL DATA Access Server 来实现 PI JDBC driver 和 PI OLEDB Enterprise/PI OLEDB providers 之间的交互的。因此需要同时安装jdbc驱动和PI SQL DAS。
二、使用 PI WEB API
PI Web API是一个RESTful API,允许你通过HTTP请求与PI System进行交互。Java应用程序可以使用HTTP客户端库(如Apache HttpClient或OkHttp)来调用PI Web API。此方案是最便捷的,但是据厂家技术人员反馈,该方式只支持3.x版本以上的PI数据库。由于良哥此次面临的PI数据库是2.x版本,因此该方案无效。
三、使用 PI SDK
前言
此方案由于需要调用OSIsoft提供的piapi32.dll动态库,因此只能在windows系统上实现,同时对于c语言实现的库函数,java在调用时也需要完成变量类型的适配工作。以下主要详述此方案的具体实现方法。
1)环境:
操作系统:windows(linux不适用)
jdk版本:jdk1.8-32位(一定要32位版本,否则无法调用动态库)
PI接口库函数:piapi32.dll
下载地址1:https://download.youkuaiyun.com/download/hualinger/90414712
下载地址2:https://download.youkuaiyun.com/download/hualinger/90414696
2)POM引用(SpringBoot环境):
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.5.0</version>
</dependency>
3)代码示例
import com.sun.jna.ptr.FloatByReference;
import com.sun.jna.ptr.IntByReference;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class PIAPITestUtils {

最低0.47元/天 解锁文章
1万+





