构建煤矿物联网大数据平台思路(1)
最近要构建一个综合自动化分析平台,需求是实现煤矿十几个子自动化系统的数据收集、分析、报表、统计功能。
现在的趋势是构建物联网大数据平台。但是现有系统是基于传统的EF5+PSpace实时数据库。
先从实时数据库开始下手分析。拿到 sdk 是.net、java、c三种。最后一种不会。分析前两种。
pSpace
pSpace 是一个高性能、高吞吐能力、可靠性强、跨平台的实时/历史数据库系统,可以用于采集、压缩、存储、加工、分析任何带有时间特性的生产信息,产品提供全系列的工业通讯接口及ERP 业务接口,实现生产监控到调度管理的完美整合,极大地提高企业智能化及决策的精度和速度。
下面是pSpace的架构图,我们做到项目应该是在最上层,首要的是读取PSpace的数据。
在pSpace SDK设计中采用了分层架构的思想,分别包含psAPISDK.dll、pSpaceAPI.dll、psNetClient.dll模块,其中psAPISDK.dll为外部接口模块,pSpaceAPI.dll为内部实现接口模块,psNetClient.dll为服务器客户端模块。主要实现了以下功能:
.Net SDK
Java SDK
开发
pSpace的数据分为实时数据和历史数据。历史数据可以做成API接口形式提供给Web前端。实时数据如果采用短连接,也能行,毕竟项目面向用户少。但总感觉不太优雅。也想了几种方式:SDK提倡用发布/订阅模式订阅实时数据,研究后也实现了,避免了短连接对数据库性能的影响。
简单的demo(跑了一下午,数据没中断,证明这种方式可行):
....
tagTree = TagTree.CreateInstance(dbConnector);
rootNode = tagTree.GetTreeRoot();
tagManager = tagTree.GetMgr();
vector = new TagVector();
vector.Add((ITag)rootNode.SelectSingleNode("/电力监控总/中央变电所/J1高开Uab@PV"));
RealDataSet dataSet = new RealDataSet();
realSubscriber = new RealSubscriber();
realSubscriber.CreateAndRead(dbConnector, vector, dataSet);
var evt = new RealDataChangedEventHandler(realSubscriber_RealDataChanged);
realSubscriber.RealDataChanged += evt;
realSubscriber.Enabled = true;
...
java、windows service也尝试,都可以实现,唯一不足是无法使用.net core。用.net core需要配合windows service或者.net framework。有时间用.net core把sdk重写。
实现的web+移动端
后面的架构(参考别人设计v)
关于物联网
现在物联网技术发展火热,大部分可以直接基于MQTT协议写入实时数据库。后面准备试用TDengine+EMQX。也有很多可以参考,阿里云、华为云等云厂商都有物联网平台。但限于数据安全性,目前实施性不大,私有部署平台还行。