最近因为业务需要,研究了一下如何从霍尼韦尔的PHD实时库读取数据,这个玩意跟平常用的数据库Oracle,Sqlserver,Mysql都不太一样,网上几乎搜不到任何资料。为什么资料这么少,我也不太明白,大概是这个东西仅仅在自动化行业有应用吧。

经过各种努力,又是百度,又是电话,终于明白一点了,读PHD实时库有三种方式,一是通过PHD的OPC服务读取数据,二是webservice方式,三是自己写程序调用PHD所提供的动态库phdapinet.dll。大家知道,通过OPC服务,读数的点不能太多,而且也不是很稳定。webservice是霍尼给定制开发,需要掏钱的。所以最好是第三种方式,自己写代码。

既然是最好的方式,就没啥研究的了,不过写代码之前还得做一件事情,在部署采数程序的前置机上必须安装PHD的客户端软件Modtag,这个软件网上就能下载,安装也简单。

如上图就算可以了,有的情况是Modtag装上了,但是连不上PHD服务端,一般都是网络不通。还有,在你的开发环境下,是可以不装Modtag的,因为你的程序编译通过就可以了。

这种用动态库的方式,开发语言似乎只能用c#,但网上也有说可以用JAVA或者C++的,不过本人没实战过。有兴趣的童鞋可以去自己尝试。话不多说了,直接开整,开发环境我这里用的是VS2019。

C#语言开发,首先当然是 using,代码简单。

using System;
using System.Data;
using System.Collections.Concurrent;
using System.Text;
using Uniformance.PHD;

这里写点小学级别的代码,就一个方法,相信大家都能看懂。

public static string GatherTest(){PHDHistorian oPhd = new PHDHistorian();PHDServer defaultServer = new PHDServer("127.0.0.1");  // phdAddress 地址defaultServer.APIVersion = SERVERVERSION.RAPI200;oPhd.DefaultServer = defaultServer;oPhd.StartTime = "now";oPhd.EndTime = "now";oPhd.Sampletype = SAMPLETYPE.Snapshot;oPhd.SampleFrequency = 300;try{string[] tagArray = "abc.123;abc.002".Split(';');Tags tags = new Tags();foreach(string tag in tagArray){tags.Add(new Tag(tag));}StringBuilder sb = new StringBuilder();DataSet ds = oPhd.FetchRowData(tags);if (ds == null || ds.Tables == null || ds.Tables.Count == 0){return string.Concat("测点", "abc.123;abc.002","无数据");}foreach (DataRow dr in ds.Tables[0].Rows){sb.Append("TagName:" + dr["TagName"]);sb.Append("Value:" + dr["Value"]);sb.Append("TimeStamp:" + dr["TimeStamp"]);sb.Append("Confidence:" + dr["Confidence"]);}return sb.ToString();}catch (Exception e){return "获取数据失败" + e.Message;}finally{oPhd.Dispose();}}

相信大家都能运行起来,简单得都不想说啥了。这个代码只是演示如何采集两个点的数据,在实际生产环境大概有2万点多,速度也是非常快,没啥毛病。核心代码如下,其实也没什么的。

Tags oTags = new Tags();//增加测点DataSet ds = oPhd.FetchRowData(oTags);

如果运行不正常,需要帮助,可以留言。

遇到个问题,值为中文的点读出来的是乱码,而api没有设置字符集的地方,有谁知道......

如何读取PHD实时数据相关推荐

  1. 如何通过C#读取PI实时数据

    今天来说说PI实时数据库.PI 实时数据库系统(Plant Information System)在自动化行业的应用,可以说是最广泛的. 美国 OSI Software 公司开发.这个玩意确实很强大, ...

  2. python读取大智慧数据_读取大智慧实时数据

    kalummark8 2011-7-17 21:26 经过研究你之前的方法,现在这个问题解决了,但另一个问题又出来,应该是关系到数据类型的问题,setcode(600033) //关于这里输入的代码, ...

  3. 设计思路工作笔记-使用当天时间戳的差值读取实时数据绕过错误数据

    目录 背景 演示 背景 这里我只是举个栗子,如有雷同,纯粹巧合. 比如一套实时数据读取系统,他会把数据读取到数据库,可能1分钟写入数据库一次,可能1s,可能5分钟.这里面经常会读取到错误数据. 这里可 ...

  4. 基于人脸识别的课堂签到管理系统(四)---摄像头上传实时数据,百度AI读取并返回信息以及多线程操作

    基于人脸识别的课堂签到管理系统(四)---摄像头上传实时数据,百度AI读取并返回以及多线程操作 一. 前言概述 二.摄像头上传数据,读取百度AI返回信息 三.多线程操作 四.程序展示 五.相关下载 一 ...

  5. 2021年大数据Spark(五十):Structured Streaming 案例一实时数据ETL架构

    目录 案例一 实时数据ETL架构 准备主题 ​​​​​​​模拟基站日志数据 ​​​​​​​实时增量ETL 案例一 实时数据ETL架构 在实际实时流式项目中,无论使用Storm.SparkStreami ...

  6. 使用 Oracle GoldenGate 进行实时数据集成

    [转自]http://blog.chinaunix.net/u1/53677/showart_2314585.html 使用 Oracle GoldenGate 进行实时数据集成 了解如何安装.设置和 ...

  7. 如何设计实时数据平台(设计篇)

    导读:本文将会分上下两篇对一个重要且常见的大数据基础设施平台展开讨论,即"实时数据平台". 在上篇设计篇中,我们首先从两个维度介绍实时数据平台:从现代数仓架构角度看待实时数据平台, ...

  8. Flink + Iceberg,腾讯百亿级实时数据入湖实战

    简介:上海站 Flink Meetup 分享内容,腾讯数据湖的百亿级数据场景落地的案例分享. 本文整理自腾讯数据湖研发高级工程师陈俊杰在 4 月 17 日 上海站 Flink Meetup 分享的&l ...

  9. 百信银行基于 Apache Hudi 实时数据湖演进方案

    简介:本文介绍了百信银行实时计算平台的建设情况,实时数据湖构建在 Hudi 上的方案和实践方法,以及实时计算平台集成 Hudi 和使用 Hudi 的方式. 本文介绍了百信银行实时计算平台的建设情况,实 ...

最新文章

  1. linux内存实际占用分析
  2. mysql切换用户命令_linux基础04:linux用户相关的命令有哪些?怎样切换用户?
  3. java 的HashMap底层数据结构
  4. Facebook用户遭遇千年虫:瞬间有了46年老友
  5. impdp导入dmp文件
  6. labview的介绍,安装和卸载
  7. 吴恩达深度学习笔记 course 2 1.1~1.14 深度学习的实用层面
  8. 测试数据库日期格式转换
  9. Scala入门(一):直接在eclipse上安装Scala IDE
  10. Code jock使用笔记
  11. 高标清上下变换器的测试评估及应用研究
  12. C# WPF 一个设计界面
  13. java实习面试题整理
  14. 男怕入错行 完美池宇峰畅谈创业点滴
  15. 免费web服务器Tomcat
  16. 让独居的父母,时刻受到保护,老人远程无线监护解决方案
  17. 测试网络连通性的PING命令
  18. 关于debug时的断点无效问题 [已解决,不知原因]
  19. 操作系统笔试面试笔记总结
  20. 数字电路技术基础(三)

热门文章

  1. ADSL MODEM用户名和密码大全
  2. Java源码阅读(类图自动生成工具)
  3. i5十代不能装win7系统_i5处理器是装Windows7还是Windows10系统?
  4. 计算机的用户账户,电脑用户名_电脑用户名是什么
  5. CPI成折叠式OLED面板保护层关键材料
  6. ffmpeg 的那些坑
  7. MYSQL 更改初始 ROOT 密码
  8. 一篇读懂5G:到底什么是5G?为什么需要5G?5G有哪些机遇?
  9. x64 可变参数原理完全解析
  10. 独立性权重指标怎么计算?