紫金桥软件读取历史数据的方法小结摘要:本文简述了紫金桥软件读取历史数据的三种方式,重点说明了取批量历史的不同操作方法以及各方法间的区别。正文:紫金桥软件自带了过程数据库,可以高效的保存相关数据点的历史记录,同时提供了丰富的方法读取所需的历史记录。笔者使用紫金桥做了多个工程,仅就个人经验进行简单小结,这里和大家分享,还望能起到抛砖引玉的作用,如有不对之处,还望指正。关于保存历史记录通过紫金桥组态软件自身的过程数据库,可以通过两种方式自动保存数据点的历史记录,定时保存和变化率保存,定时保存适合保存变化不是很快,或者比较有规律的数据点,变化率保存的应用范围相对更广,适合变化较快或者较慢的情形,这里要注意两点内容:对于定时保存的历史记录一般不做压缩的,所以不建议对于较多的数据库点设置为保存间隔较短的定时保存,否则历史记录的文件体积会增加相对较快;对于变化率保存的数据,系统会自动压缩保存,要注意的是其变化率是相对于该点的量程而言的,而不是相对于上次保存的历史值。数据点的量程可以在“点组态”基本参数中修改;个人觉得过程数据库很适合保存现场连续的采集值,对于一些字符型的数据,可能还需要借助关系数据库来保留历史值了。而关系数据库在保存连续数值方面也远不如过程数据库方便。关于紫金桥对关系数据库的各种操作,笔者将在其它文档中进行说明,这里不再赘述。历史数据的读取紫金桥软件提供了多种方式读取历史数据,这里仅就一些常用的方法进行说明。一般有三种方式读取历史记录,分别是:历史曲线、读取单点历史、读取批量历史。在说明各种方式之前先要解释下“坏值”的概念,数据点只有在系统运行时才能保存历史记录,对于系统没有运行时的历史值,如果该时刻早于当前时刻,紫金桥软件通常会赋一个坏值,-9999。而对于未到时间的历史值可以在“系统参数”进行设置,如图所示:---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---下面简述下读取历史记录的三种操作:1通过历史曲线通过历史曲线或者趋势分析曲线可以直接查询相关点的历史值,这种方法的优点在于数据很直观,便捷、曲线可以任意放大。历史曲线:趋势分析:历史曲线和趋势分析曲线的不同在于,历史曲线可以通过“打散单元”的操作将该组件分解,自行根据需要重新组合;而趋势分析组件功能更强,提供了历史曲线没有的统计数据、全屏显示等功能,但是不支持分解操作,不能自行组合。2读取单点历史记录单独采集某点某时刻的历史值或某段时间的统计值一般通过脚本函数实现:---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---读取某刻历史值一般使用三种函数:GetHisData(Var,Year,Month,Day,Hour,Minute,Second,MilliSec);GetHisData2(Var,StartTime,MilliSec);GetHisDataEx(DataSource,VarName,StartTime,MilliSecond);GetHisData和GetHisData2前者适合读取具体时刻的历史值,后者通过一个时间值来获取历史记录,该值是一个整数,表示相对于1970年1月1日08:00时过去的秒数,这个秒数在紫金桥软件中非常常用。实际工程中,这个秒数可以通过函数LongTime("2001/01/0114:50:48")得到,该函数可以自动得到某时刻过去的秒数。秒数也可以通过一些组件得到,比如起始时间组件,如图所示:图中有一个起始时间组件,其下是该组件的time属性所对应的相对于1970/1/1/08:00:00过去的秒数。比如该组件被命名为EndTime,在脚本中通过#EndTime.time即可得到相应的秒数。读取某段时间内的统计值可以通过函数GetStatisDataEx(DataSource,VarName,StartTime,pan,Flag,Time)或GetStatisData(Var,Year,Month,Day,Hour,pan,Flag,Time)得到一段时间内的最大值、最小值或者平均值。val=GetStatisDataEx("","FQ101.PV",LongTime("2007/09/0414:30:00"),2,0,strTime)示例中Val变量可以得到FQ101.pv值在2007年9月4日14点30分起2个小时内的平均值。这里要注意的是,GetStatisData和GetStatisDataEx函数会自动过滤掉坏值。在使用统计函数时,要确保对应的点在组态时选择上统计设置,如图所示:此外...