网站不备案可以用吗,网站建设需求,讨债女企业家中标公司被强执,企业展厅的设计公司价格java读取OPC DA数据—Utgard
Utgard库已经过时#xff0c;原作者早已删除库#xff0c;建议使用OPC UA#xff0c;兼容OPC DA。
下面讲解Utgard使用 C#和C都不用配置DCOM#xff0c;直接调用函数 既然是非要用Java#xff0c;那就别想太方便#xff0c;需要配置DCOM(后…java读取OPC DA数据—Utgard
Utgard库已经过时原作者早已删除库建议使用OPC UA兼容OPC DA。
下面讲解Utgard使用 C#和C都不用配置DCOM直接调用函数 既然是非要用Java那就别想太方便需要配置DCOM(后面博客介绍)。
Java实现OPC客户端有两种
有两种开源包分别是JeasyOpc和utgardOpenscada他们的区别如下
UtgardJeasyopcLinux下支持(纯Java编写)不支持Windows64位下支持不支持用户名密码需要不需要组查询不支持支持压力测试(单线程同步)略快7W点大约在4224ms略慢7W点大约在22540ms压力测试(单线程异步)略快略慢压力测试(单线程发布订阅)无无
经对比分析我们采用UtgardOpenscada开源技术Openscada可以很好的实现与OPC服务器的链接及读写数据等功能还可以随时获取和修改OPC的Server和Item的属性状态信息。所以它能够很好的满足我们的需求建议使用Openscada。
关于Utgard Utgard是一个开源的项目基于j-interop做的用于和OPC SERVER通讯。 j-interop是纯java封装的用于COM/DCOM通讯的开源项目这样就不必使用JNI Utgard则是纯java编写就是不支持opc 3.0协议。
关于JeasyOPC
借助一个dll库来实现的和OPCServer的通信但是JCustomOpc.dll太老了而且支持只32位系统JEasy是java调用动态连接库底层用的是jnidll库比较老。
建议选择Utgard
java使用Utgard读取OPC数据
pom.xml引入包
dependencygroupIdorg.openscada.utgard/groupIdartifactIdorg.openscada.opc.lib/artifactIdversion1.5.0/versionexclusionsexclusiongroupIdorg.bouncycastle/groupIdartifactIdbcprov-jdk15on/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.bouncycastle/groupIdartifactIdbcprov-jdk15on/artifactIdversion1.65/version/dependencydependencygroupIdorg.openscada.utgard/groupIdartifactIdorg.openscada.opc.dcom/artifactIdversion1.5.0/version/dependency伪代码读取OPC
OPC DA客户端工具Opc quick client使用 import org.jinterop.dcom.common.JIErrorCodes;
import org.jinterop.dcom.common.JIException;
import org.jinterop.dcom.core.JIVariant;
import org.openscada.opc.dcom.da.OPCSERVERSTATE;
import org.openscada.opc.lib.common.ConnectionInformation;
import org.openscada.opc.lib.da.*;import java.util.concurrent.Executors;public class Test {public static void main(String[] args) throws Exception {test();}public static void test() throws Exception {final ConnectionInformation ci new ConnectionInformation();ci.setHost(10.211.55.4);ci.setUser(OPCUser);ci.setPassword(opcuser);//注册表ID可以在“组件服务”里看到 也可以在我的博客(https://blog.csdn.net/yinjl123456/article/details/121756075)中找到ci.setClsid(7BC0CC8E-482C-47CA-ABDC-0FE7F9C6E729);Item item null;Server server new Server(ci, null);try {server.connect();Group group server.addGroup();item group.addItem(tongdao.tag1.aaa);System.out.println(111111 getVal(item.read(true).getValue()));Thread.sleep(2000);System.out.println(ddddd server.getServerState());System.out.println(ddddd server.getServerState().getServerState());//dddddOPC_STATUS_RUNNINGif (OPCSERVERSTATE.OPC_STATUS_RUNNING server.getServerState().getServerState()) {System.out.println(OPC_STATUS_RUNNING ---------);}Group group2 server.addGroup();item group2.addItem(tongdao.tag1.abc);System.out.println(22222 getVal(item.read(true).getValue()));Thread.sleep(2000);server.dispose();System.out.println(xxxxxx server.getServerState());//xxxxxxnullif (null server.getServerState()) {System.out.println(OPC no );}} catch (Exception e) {e.printStackTrace();}}/*** 获取value* param var* return* throws JIException*/private static Object getVal(JIVariant var) throws JIException {Object value;int type var.getType();switch (type) {case JIVariant.VT_I2:value var.getObjectAsShort();break;case JIVariant.VT_I4:value var.getObjectAsInt();break;case JIVariant.VT_I8:value var.getObjectAsLong();break;case JIVariant.VT_R4:value var.getObjectAsFloat();break;case JIVariant.VT_R8:value var.getObjectAsDouble();break;case JIVariant.VT_BSTR:value var.getObjectAsString2();break;case JIVariant.VT_BOOL:value var.getObjectAsBoolean();break;case JIVariant.VT_UI2:case JIVariant.VT_UI4:value var.getObjectAsUnsigned().getValue();break;case JIVariant.VT_EMPTY:throw new JIException(JIErrorCodes.JI_VARIANT_IS_NULL, Variant is Empty.);case JIVariant.VT_NULL:throw new JIException(JIErrorCodes.JI_VARIANT_IS_NULL, Variant is null.);default:throw new JIException(JIErrorCodes.JI_VARIANT_IS_NULL, Unknown Type.);}return value;}}参考链接: https://www.cnblogs.com/Frankie1980/p/10830119.html https://www.cnblogs.com/ioufev/p/9928971.html https://www.hifreud.com/2014/12/27/opc-4-client-invoke-use-utgard/ https://blog.csdn.net/wise18146705004/article/details/82347926 https://blog.csdn.net/lgbisha/article/details/82898228