分享好友 方案首页 频道列表

紫金桥巧用累计点实现班组统计———紫金桥巧用累计点实现班组统计

2012-04-15紫金桥软件技术有限公司

应用问题

在实际应用中我们经常会遇到这样的问题:在我们构建了一个实时监控管理系统时,我们可以直接获得一些被监测量的瞬时值;在进行统计核算时,这些瞬时值不能有效地反应在一定时间段内的生产产量、原料用量、能源消耗等生产情况。要反应类似这些信息就需要对相关的瞬时值进行累计计算,得到即时累计值,然后通过即时累计再获取某时间段内的阶段统计值。

下面我们就介绍一下通过紫金桥软件如果实现这一应用需求。

实现过程

瞬时值的采集和累计过程是通过紫金桥的累计点来完成的。关于累计点各参数的意思可以查看在线帮助,但这里需要强调的是一定要注意“时间基”设置,否则可能得到错误的累计结果。

再有累计点的过程值(PV)表示是被监测量的瞬时值,需要通过数据连接与I/O数据关联起来,这样才能利用累计点的计算功能通过TOTAL参数获取累计值。如果我们需要系统重新启动后,累计量能从上次累计值继续累计,我们需要在历史组态中将TOTAL参数的“退出时保存实时值作为下次启动初值”选项选中。

在这里我们建立“累计量1”和“累计量2”两个累计点,并以这两个点为例介绍一下前述需求的实现过程。

我们假设要统计时间段为每8小时统计一次。由于某一时段内的统计结果一旦统计完成就应在以后的查询和使用过程保持不变,这样我们可以通过另外一个点将这个统计结果保存下来,下次使用时我们可以直接读取,而不需要重复计算了。这样也可以简化后续的查询组态。

既然这里我们是8小时统计一次,我们就可以将系统小时变量($SYSTEM.Hour)的变化作为事务处理的触发条件(实际应用时,我们可以统计周期选择其它触发条件)。每当系统小时值发生变化时,首先检查是否到了8小时的时间间隔,如果到了就将“累计量1”和“累计量2”的当前值累计值(参数TOTAL)通过历史插值的方法保存到“累计统计1”和“累计统计2”过程值中(参数PV),然后再将“累计量1”和“累计量2”的当前值累计值复位(清零)。通过这样处理我们得到了一个每8小时统计一次的阶段累计量值。

建立步骤如下:

在点组态中新建两个模拟I/O点(累计统计1和累计统计2)用于形成累计量1和累计量2的历史统计结果。

在“数据库”导航树中的“脚本/值改变”下建立值改变动作脚本,变量名为“$SYSTEM.Hour”,

脚本如下:

int 开始时刻=0;

int 时间间隔=8;

if( mod($SYSTEM.Hour + 24 - 开始时刻, 0, 时间间隔) == 0) then

InsertHisData(累计统计1.PV,累计量1.Total,$system.Year,

$system.Month,$system.Day,$system.Hour,0,0,0);

InsertHisData(累计统计2.PV,累计量2.Total,$system.Year,

$system.Month,$system.Day,$system.Hour,0,0,0);

累计量1.RESET=1;

累计量2.RESET=1;

endif

 

统计结果已经有了,下面介绍如何查询显示:

假设我们要查询的是一天内每8小时的统计结果,那么我们首先需要指定查询日期,这需要使用一个启始时间组件;再有我们需要将查询的结构显示出来,这可以通过一个自由报表组件来完成。下面介绍一下实现步骤:

A.定义一个整型中间变量tm,用于要查询记录的开始时间。

B.新建一个窗口,在窗口中建立一个开始时间组件将其命名为:StartTime;在此开始时间组件的事件脚本中对其进行初始化:

time=$system.longtime;

time = time - GetHour()*3600- GetMinute()*60-GetSecond();//修正为一天启始时间

tm = time;

C.再建立一个自由报表,进入报表设置窗口,将报表第一列显示属性设置为“日期和时间”型;在这列的第二行、第三行和第四行分别公式:=tm+8*3600、=tm+16*3600、=tm+24*3600。

在第二列的第二行、第三行和第四行分别公式:

=GetHisData2(累计统计1.PV,VAL(1,$R),0)

注:GetHisData2为获得指定数据库变量,指定时刻的历史记录值;VAL(1,$R)表示获得第一列,当前行单元格内的值,即为第一列指定的时间;这列主要是获得“累计统计1.PV”每8小时的历史记录。

D.在第三列的第二行、第三行和第四行分别公式:

=GetHisData2(累计统计2.PV,VAL(1,$R),0)

注:这列主要是获得“累计统计2.PV”每8小时的历史记录。

E.在窗中建立一个按钮,在按钮的鼠标自定义动作中输入脚本:tm = #time.time,用来变换查询启始时间。

小结

上面例子只是介绍了一下在紫金桥软件中实现累计统计的一种思路,在实际应用中还会有许多要处理的事项,实现过程也要比这复杂的多。希望这个小例子能达到抛砖引玉的作用,对您解决类似问题有所帮助。

收藏
神州普惠试验检验管理解决方案
试验检验管理系统TCM紧紧围绕产品生产试验检验的全过程进行系统规范的监控和管理,有力的监管了整个试验检验过程、协调组织了试验检验工作的开展、规范了试验检验过程的管理,同时还以方便高效的手段,整理和收集了全部试验检验过程的信息数据。

0评论2014-03-24

宏电工业级TD无线路由器应用于交警局电子警察项目
“电子警察”是高科技的交通管理手段,也是道路交通技术监控系统的重要环节,是智能交通系统建设的重要组成部分。它以其无人值守、自动记录、容量大、无需当场处罚、便于管理等优点成为交通管理工作中必不可少的装备。

0评论2013-02-27

领邦公布新型全自动检测方案:弹丸尺寸的快速检测
近日,北京领邦仪器技术有限公司(后文简称“领邦”)公布了一套新型的全自动检测方案——弹丸尺寸检测系统。该系统是一套在线全自动终检设备,采用激光扫描的方式,在计算机中还原炮弹外形,能够实现炮弹外形尺寸和形位公差的快速检测,满足大批量产品的在线自动化检测,避免人为检测造成的误差,同时保证数据的可靠性以及提高数据管理方便性。

0评论2012-08-31

仪器总线技术的回顾与展望
在测试测量领域,仪器总线技术的发展历来是工程师和科学家们最为关心的部分。从上世纪60年代推出的专用于仪器控制的GPIB总线,到现在被广泛使用的 USB、VXI、PXI和最新推出的LXI、PXI Express,不断涌现的新型总线技术在帮助我们的工程师更快捷高效的完成测量任务的同时,也引起了行业内专家们的广泛争论,究竟哪一种总线将会主宰未 来的测试测量领域呢?

0评论2012-05-28

加固电源典型应用方案
美国北大西洋(NAII)公司为军工和航空领域的嵌入式市场所提供的加固电源,类型齐全,无论是标准型产品还是定制型产品,都应有尽有。在国内外航空、航海、舰船等应用中占有及其重要的地位。

0评论2012-05-03

倾角传感器在无人机上的应用
无人驾驶飞机简称无人机,是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机。机上无驾驶舱,但安装有自动驾驶仪、程

0评论2012-04-13

倾角传感器在移动通讯车平衡系统上的应用
移动通信基站车是移动通信领域中用于应急通信信道建立的系统集成车辆。主要的功能一般包括GSM、CDMA、3G基站信道的建立、无线计

0评论2012-04-13

倾角传感器在水平平台测量上的应用
在仪器仪表、精密工具、机械制件的检验等行业经常会使用到水平平台,而大理石平台可以作为一个理想的选择,因为大理石的平台是一

0评论2012-04-13

SST倾角传感器在阳光追踪系统上的应用
随着能源的匮乏,人类越来越注重利用新型能源来代替现有的煤、石油原料,利用太阳能获得能源就是一个非常好的办法。阳光追踪器

0评论2012-04-13