找答案有字数限制,我把我的回答贴在这里,然后给链接,版主不要删除呀!

已锁定

zhangli0

版主 西门子1847工业学习平台

  • 帖子

    15773
  • 精华

    61
  • 被关注

    759

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

找答案有字数限制,我把我的回答贴在这里,然后给链接,版主不要删除呀!

2276

2

2012-07-06 15:32:29

不知道你你现在流量信号时记录了累计值还是记录了瞬时值,如果记录了累计值那么你只要把每班抄完后的那个累计值取出来累加就可以了。如果没有累计值就要去瞬时值自己来做累计了,比如你的记录是500ms一次的,流量是以小时为单位的,那么实际一个记录周期内的流量是记录值/7200.0,所以你只要把这一个月的每一个点的记录都取出来然后除以7200后进行累计,最后的结果就是一个月的累计值。
Sub OnClick(Byval Item)
'定义变量
Dim spro,sdsn,sser,scon,conn,ssql,ors,ocom
Dim tagdnsname
Dim m,i
Dim local_begin_time,local_end_time,utc_begin_time,utc_end_time
Dim count_data'数据记录的个数
Dim sum_data'数据记录的累积
Dim aver'平均值
item.Enabled=False
On Error Resume Next
'查询条件,utc开始时间,utc结束时间,时间间隔,catalog
Set tagdnsname=HMIRuntime.Tags("@DatasourceNameRT")
tagdnsname.Read
Set local_begin_time=HMIRuntime.Tags("timebegin")
local_begin_time.read
Set local_end_time=HMIRuntime.Tags("timeend")
local_end_time.Read
utc_begin_time=DateAdd("h",-8,local_begin_time.value)
utc_end_time=DateAdd("h",-8,local_end_time.value)
utc_begin_time=Year(utc_begin_time) & "-" & Month(utc_begin_time) & "-" & Day(utc_begin_time) & " " & Hour(utc_begin_time) & ":" & Minute(utc_begin_time) & ":" & Second(utc_begin_time)
utc_end_time=Year(utc_end_time) & "-" & Month(utc_end_time) & "-" & Day(utc_end_time) & " " & Hour(utc_end_time) & ":" & Minute(utc_end_time) & ":" & Second(utc_end_time)

'创建到数据库的链接
'创建数据库联接
spro = "Provider=WinCCOLEDBProvider.1;"
sdsn = "Catalog=" &tagdnsname.Value& ";"
sser = "Data Source=.\WinCC"
scon = spro + sdsn + sser
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = scon
conn.CursorLocation = 3
conn.Open
ssql = "Tag:R,('test\testdata'),'" & utc_begin_time & "','" & utc_end_time & "'"
MsgBox "open with:" &vbCr &scon &vbCr &ssql &vbCr
Set ors=creatobject("ADODB.Recordset")
Set ocm=creatobject("ADODB.Command")
ocm.commandType=1
Set ocm.ActiveConnection=conn
ocom.CommandText = ssql
'读取数据
Set ors=ocm.execute
m=ors.recordCount
count_data=0.0
sum_data=0.0
If(m>0)Then
Do While Not ors.eof'查看是否到记录结束
sum=sum+ors.fields(0).value
count_data=count_data+1.0
ors.movenext
Loop
Else MsgBox "没有查询到数据............."
item.Enabled=True
Set ors=Nothing
conn.close
Set conn=Nothing
End If
Set ors=Nothing
conn.close
Set conn=Nothing
'写数据到wincc运行系统
aver=sum_data/count_data
HMIRuntime.Tags("average").Write aver
HMIRuntime.Tags("sumdata").Write sum_data
HMIRuntime.Tags("countdata").Write count_data
End Sub
这是我在一个按钮中做的求指定时间范围内的数值的平均值,你只要把结束时间取当前系统时间,开始时间用结束时间减去30天,或者你在写一个程序判断上一个月是多少天,然后减去那个天数。然后把这个时间范围内的数据查出来按我说的求累计。
找答案有字数限制,我把我的回答贴在这里,然后给链接,版主不要删除呀! 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有31088条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。