用户中心
· 企业空间 首页 | 资讯 | 技术 | 产品 | 企业 | 直播 | 专题 | 智能制造 | 论坛| 在线研讨会
紫金桥软件技术有限公司
企业空间 > 案例应用 > 正文
  • 紫金桥巧用累计点实现班组统计
  • 发布时间:2012/3/8 10:19:08   修改时间:2012/3/8 10:19:08 浏览次数:2081
  • 应用问题

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

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

    实现过程

    • 瞬时值采集及累计

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

    再有累计点的过程值(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,用来变换查询启始时间。

    小结

    上面例子只是介绍了一下在紫金桥软件中实现累计统计的一种思路,在实际应用中还会有许多要处理的事项,实现过程也要比这复杂的多。希望这个小例子能达到抛砖引玉的作用,对您解决类似问题有所帮助。
  • 企业介绍
紫金桥软件技术有限公司(RealSoft)是由中石油出资成立的专门从事计算机软件产品开发的高新技术企业,是中国石油天然气集团的软件开发基地。公司专注于自主知识产权软件产品“实时数据库系统”和“监控组态软件”的开发与推广工作,以为企业集团及客户…  更多>>
  • 联系方式

紫金桥软件技术有限公司

联系人:李磊

地址:黑龙江省大庆市高新区服务外包产业园C1-817室

邮编:163316

电话:400-6996-515

传真:0459-8151391-808

公司网址:http://www.realsoft.cc

  • 该空间手机版

扫描此二维码即可访问该空间手机版

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件:
您还没有登录,请登陆,
如果您还没有注册,点击这里注册.
  • 网友反馈
  • 戴永铁 在2024/6/11 14:51:00留言
  • 留言类型:贵公司产品销售人员联系我,贵公司技术支持人员联系我,
  • 详细留言:需要制药工业领域的实时库报表,包含矩阵配?、参数配方、数据(统计和历史)、曲线、事件、报警、审计追踪,这些内容可以组态化
  • 晓同 在2024/5/16 11:06:00留言
  • 留言类型:我让贵公司产品销售人员联系我,
  • 详细留言:紫金桥组态软件V6.5,512点授权
  • 在2023/10/21 16:03:00留言
  • 留言类型:贵公司技术支持人员联系我,
  • 详细留言:OPC
  • 郑鑫汶 在2023/6/1 14:58:00留言
  • 留言类型:我想得到贵公司产品详细资料,我想得到贵公司产品的价格信息,我让贵公司产品销售人员联系我,我让贵公司技术支持人员联系我,
  • 详细留言:需要咨询贵公司软件的价格功能
  • 吴吉校 在2023/3/15 7:45:00留言
  • 留言类型:我想得到贵公司产品详细资料,我想得到贵公司产品的价格信息,我让贵公司产品销售人员联系我,我让贵公司技术支持人员联系我,
  • 详细留言:组态软件咨询
更多请进入空间管理中心查看
关于我们 | 网站地图 | 联系我们
© 2003-2018    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688
我要反馈