IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 如何读取PHD实时数据 -> 正文阅读

[大数据]如何读取PHD实时数据

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

? ? ? ? 经过各种努力,又是百度,又是电话,一番瞎整。终于明白一点点了,读PHD实时库有三种方式,一是从PHD的OPC服务读取数据,二是让霍尼单独提供webservice,三是自己写程序通过PHD所提供的动态库phdapinet.dll。OPC读数点不能太多,而且也不是特别稳定。webservice是单独开发,明显是需要单独付费。所以第三种方式是最好的。

? ? ? ?既然是最好的方式,就没啥研究的了,不过写代码之前还得做一件事情,在我们采集程序的前置机上必须安装PHD客户端Modtag,网上下载直接安装即可。

? ? ? 如上图就算可以了,注意在你开发环境可以不装,只是编译不运行就可以。

? ? ?动态库的方式开发语言是c#,据说JAVA和C++可以,但是没实战过。话不多说,直接开撸。

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)
            {
                //LogHelper.WriteLog("获取数据失败" + e.Message);

                return "获取数据失败" + e.Message;
            }
            finally
            {
                oPhd.Dispose();
            }
        }

? ?相信大家都能运行起来,简单得都不想说了啥了。这个代码只是演示两个点,在实际生产环境大概有2万点多,如下代码。

Tags oTags = new Tags();

//增加测点

DataSet ds = oPhd.FetchRowData(oTags);

? 运行正常,如需帮助,可以留言。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 11:00:15  更:2021-10-22 11:02:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:02:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码