当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘要:介绍了内存实时数据库在工业控制DCS组态软件中的应用及其在数据采集过程中的重要性;针对组态软件内存实时数据库的特点,测试了在不同的数据组织形式、内存置换页面大小以及缓存大小下数据库的性能,通过测试,得出了不同的配置组合对内存实时数据库性能的影响,从而为下一步的研究工作打下了基础。

引言

伴随着分布式控制系统DCS(DistributedControlSystem)的出现,以及其在工控领域的广泛应用,组态软件开始逐渐被广大技术人员所熟悉。“组态”的概念最早来自英文Configuration,其含义是使用软件工具对计算机及软件的各种资源进行配置(包括进行对象的定义、制作和编辑,并设定其状态特征属性参数),达到使计算机或软件按照预先设置,自动执行特定任务,满足使用者要求的目的。

组态软件是应用在数据采集和过程控制层面的一种专用软件,应用在分布式控制系统数据监控层一级。通过使用组态软件,可以为DCS工控系统提供良好的用户开发界面以及简洁的使用方法,可以非常容易地实现和完成对分布式工业控制系统各个模块的模拟和监控功能,使计算机图形界面与工控系统真实设备联系起来;通过集成各个硬件厂家的I/O接口以及设备接口,组态软件能够采集到工控设备的现场数据,通过实时数据库进行处理,并存储到历史数据库供查询使用;通过设置,可以对采集数据提供报警和报表功能;同时,组态软件应该能支持各种工控设备和常见的通信协议,并且通常应提供分布式数据管理和网络功能。

组态软件产品于上世纪80年代初出现,并且得到了良好的发展,目前世界上的组态软件有几十种之多,其中主要包括美国Wonderware的Intouch、美国Intellution公司的Fix、澳大利亚Cit公司的Citech、德国Simens的Wince、北京亚控自动化软件有限公司开发的组态王(Kingview)、大庆三维公司的ForceControl以及北京昆仑通态自动化软件科技有限公司开发研制的MCGS等。伴随着国家对工控领域的支持不断加大,

收稿日期:2014-01-14

组态软件将在工控信息化中扮演越来越重要的角色,未来发展的空间也会不断扩大。

1内存实时数据库

大批量生产、连续加工过程、高度自动化程度是流程工业的特点,这需要在过程监控时提供高速的数据处理、长期的数据存储。工业控制系统是一个实时系统,它实时地从外界采集数据进行运算、判断后输出控制量,因此对数据的管理呈现出实时特点[3]。因此,实时数据库是组态软件处理数据、组织数据和管理数据的核心,它能够高效地处理和存储工控系统生产过程中的实时数据,为优化过程控制和企业的经营决策提供完整的实时数据和完备的历史信息叫

根据工控系统的特点,在工业组态软件中需要应用内存实时数据库,分以下几种情况:内存实时数据库整个数据库常驻内存,对数据的存取不需要I/O操作;整个数据库不用常驻内存,但存取数据时,应先进入内存,即数据库的存取在内存中进行;数据库常驻磁盘,增大缓冲区,在一个事务执行之前,所有的数据都已经取到内存,经适当的缓冲区管理减少甚至消除I/O[5],这些特点决定了内存实时数据库能够及时有效地处理和维护大量的共享数据和控制数据,满足工业组态软件对于事务时间性方面的要求。

对于内存实时数据库来说,由于已不再涉及I/O,所以在时间和空间矛盾的处理上,空间是第一位,系统的算法设计目标应该是内存空间和CPU的高效使用。为了达到这一目标,应该对内存实时数据库的数据组织结构、事务处理和数据管理、并发控制及恢复技术、内存置换页面以及缓存大小等方面进行研究与测试[5],使其能够提供更好的性能,满足工业控制组态软件的需求。

2内存实时数据库性能测试

2.1测试目的

针对内存实时数据库的特点和研究与测试方面的要求,设置内存实时数据库的数据组织形式、内存置换页面大小以及缓存大小,通过测试数据,得出不同的配置组合对内存实时数据库性能上的影响,为下一步的研究工作打下基础。2.2测试环境

测试对象采用BerkeleyDB内存实时数据库系统。BerkeleyDB历史悠久,主要应用在Unix/Linux操作系统上,其设计思想是简单、小巧、可靠、高性能。它可为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。同时BerkeleyDB为数据的存取和管理提供了一组简洁的函数调用API接口。BerkeleyDB对接收到的实时数据采用关键词(Key)和数据(Value)的存储结构,这两者构成的Key/Value对组成了数据库中的一个基本结构单元,而整个数据库实际上就是由许多这样的结构单元所构成的。通过使用这种方式,简化了实时数据的存储逻辑关系,同时,简便的数据库查询和访问方式也能够满足工业组态软件的需求。所以,在此测试中,所有的数据插入的都是Key=int,Value=int,在循环中递增的。

本机配置如下:

OS为Windows7旗舰版;RAM=8GB;CPU=IntelCorei7-3770CPU3.4GHz;Disk=500GB;NTFS的默认簇大小为4KB。

测试的实际数据量为:

300*10000*2*sizeof(int)/1024/1024丝22.89MB;编译器:VisualC++6.0;BerkeleyDB内存实时数据库版本为db-5.3.21.NC2.3测试方法

循环插入int类型的数据,同时设置BerkeleyDB的参数,测试在不同存储方循环插入int类型的数据,同时设置BerkeleyDB的参数,测试在不同数据组织形式、内存置换页面大小以及Cache缓存大小的设置下,数据库读写的性能,以确定组态软件实时数据库部分的存储方式。

2.4测试代码

内存实时数据库性能的测试代码如下:

#include“stdafx.h”

#include"db.h”

#include“db_cxx.h”

#include“windows.h”

#include“winbase.h”

intmain(intargc,char*argv[])

{

size_tpsize=1;//设置页面大小,单位为KBsize_tcsize=10;//设置cache大小,单位为MBinttcount=300;//设置数据插入数量,单位为万次Dbdb(NULL,0);

db.set_pagesize(1024*psize);

db.set_cachesize(0,1024*1024*csize,0);u_int32_toFlags=DB_CREATE;try

{

db.open(NULL,"test.db",NULL,DB_

BTREE,oFlags,0);

}

catch(DbException&e)

{

}

catch(std::exception&e)

{

}

//实时数据插入

Dbtkey,data;

inti,ret,count=10000*tcount;

longt1=GetTickCount();//开始时间

for(i=0;i<count;i++)

{

Dbtkey(&i,sizeof(int));

Dbtdata(&i,sizeof(int));

db.put(0,&key,&data,DB_

NOOVERWRITE);

}

longt2=GetTickCount();//结束时间

printf("插入结束%d万记录,全部用时:%.2f秒\r\n",

tcount,(t2-t1)/(float)1000);

longtick1=GetTickCount();

try

{

Dbc*dbcp;

db.cursor(NULL,&dbcp,0);

Dbtkey;

Dbtdata;

while(dbcp->get(&key,&data,DB_NEXT)==0)

{

key.get_data();

data.get_data();

}

dbcp->close();

printf("遍历结束%d万记录,全部用时:%.2f秒\r\n",tcount,(GetTickCount()-tickl)/(float)1000);

db.sync(0);

}

catch(DbException&dbe){}

db.close(0);

return0;

}

2.5测试结果

代码运行界面如图1所示。

组态软件内存实时数据库性能测试

代码运行后所得到的结果如表1――表3所列。

表1页尺寸列表

(记录数量:300万,缓存尺寸:0MB单位:s)

读写
1KB
2KB
4KB
8KB
16KB
32KB
B+写
33.71
30.28
26.85
28.30
34.09
50.59
HASH写
50.92
46.32
48.64
54.10
67.44
91.39
B+读
2.03
2.00
2.03
2.11
2.20
2.34
HASH读
4.24
4.51
3.85
3.70
3.67
3.32

表2Cache缓存大小列表(1)

(记录数量:300万;页尺寸:4KB;数据库文件大小:80.2MB;单位:s)

读写
0MB
10MB
20MB
40MB
80MB
160MB
320MB
B+写
31.78
17.04
16.04
15.12
11.50
11.37
11.33
HASH写
46.85
30.39
22.2
16.49
12.65
12.92
13.39
B+读
2.46
2.65
2.61
2.65
2.59
2.54
2.56
HASH读
3.73
3.54
3.2
3.21
3.12
3.18
3.25

表3Cache缓存大小列表(2)

Cache缓存大小(记录数量:600万;页尺寸:4KB;数据库文件大小:160MB;单位:s)

读写
0MB
10MB
20MB
40MB
80MB
160MB
320MB
B+写
71.07
44.60
43.41
41.95
36.13
24.77
24.49
HASH写
102.21
85.82
67.00
52.56
43.51
28.24
27.75
B+读
5.21
5.48
5.51
5.49
5.41
5.30
5.24
HASH读
8.24
8.22
7.91
7.52
7.11
6.74
6.75

4 结 语

根据以上运行结果,可以看出组态软件内存实时数据库BerkeleyDB在采用B+树存储方式的时候,其写入和读取性能明显高于HASH存储方式;当页面尺寸为4KB时,BerkeleyDB的存储效率最高,随着页面尺寸的不断增大,效率反而逐渐降低;当确定了页面尺寸为4KB后,逐渐改变Cache缓存大小,比较300万与600万两种记录数量,发现无论是B+树的存储方式还是HASH的存储方式,当缓存很小的时候,效率都很差,而当缓存大小大于等于数据库文件大小时,效率最高,之后随着缓存逐渐增大,对效率的影响很小。

通过该测试可以得出,不同的数据组织形式、内存置换页面大小以及Cache缓存大小对内存实时数据库的效率性能影响很大,本文只针对B+树和HASH存储方式进行了测试,测试的内容并不完善,下一步应该对数据的组织形式进行深入的研究,挖掘更适合键值对形式的工业组态软件内存实时数据组织结构。

20211120_6197d95914a30__智能家居虚拟场景设1计与实现

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭