我现在要实现一个关于变量记录中历史数据的查询问题,具体的功能是:在变量记录中已经归档一个电度的数据,归档周期为1MIN。在运行画面中制作一个查询按钮,查询的起始时间、终止时间和用电量,在查询中输入起始时间,在终止中输入终止时间,点击查询按钮,则在画面中显示这段时间内的用电量,输出是用I/O。wincc是6.2版本的。请问有那位大侠知道这样的功能如何实现。QQ:458190028
问题补充:
这是我做读取历史归档记录中的一个变量在某一个时间段内的最大数据查询VB脚本,可是在执行时无法得到查询的值。
Dim sPro,sDsn,sSer,sCon,sSql
Dim conn,oRs ,oCom,oList, oItem
Dim V,Max
Dim m,n,s,nRec
Dim BiginTime,EndTime
Set BiginTime=HMIRuntime.tags("BeginTime")
Set EndTime =HMIRuntime.tags("EndTime")
sPro="Provider=WinCCOLEDBProvider.1;"
sDsn=" Catalog=CC_ART_10_04_30_23_55_43R;"
sSer ="Data Source=.\WinCC"
sCon= sPro+ sDsn+ sSer
sSql = "TAG:R,'DIANDU\1#KWH','2010-05-01 09:33:00','2010-05-01 09:34:00'"
Set conn=CreateObject("adodb.connection")
conn.connectionstring=sCon
conn.Cursorlocation=3
conn.open
Set oRs=CreateObject("adodb.recordset")
Set oCom=CreateObject("ADODB.Command")
oCom.CommandType=1
Set oCom.ActiveConnection=conn
oCom.CommandText=sSql
Set oRs=oCom.execute
n= oRs.RecordCount
MsgBox n
if (n>0) Then
oRs.movefirst
n=0
Max= oRs.Fields(2).Value
Do While Not oRs.EOF
n=n+1
V= oRs.Fields(2).Value
If V>Max Then Max=V
oRs.MoveNext
Loop
oRs.Close
If(n>1) Then
HMIRuntime.Tags("查询电度").Write FormatNumber(Max,2)
Else
HMIRuntime.Trace"selection return nofields" &vbNewLine
End If
End If
conn. Close
Set oRs=Nothing
Set oCom=Nothing
Set conn =Nothing
有哪位大侠帮我看看问题出在哪儿呀?
最佳答案
使用脚本把两个时间的变量值读出来就可以!假设读出的值写入变量tag0,启始时间和结束时间分别是time1,time2,还需要个两个中间时间time3,time4,VB脚本:
dim time1,time2,time3,time4
dim tempa
time3=DateAdd("n", 10, time1)
time4=DateAdd("n", 10, time2)
''time1,time2分别有界面输入筐得到time3为time1后10分钟
Dim cnn As String
cnn = "provider=WinCCOLEDBProvider.1;catalog=CC_gz_food_09_07_14_14_54_22R;data source=wincc01\WinCC"
dim cc1 as object
Set cc1 = CreateObject("adodb.connection")
cc1.ConnectionString = cnn
cc1.CursorLocation = 3
cc1.Open
Dim rst As Object
Set rst = CreateObject("adodb.recordset")
Dim ssql1 As String
ssql1 = "TAG:R,'speed1\c_speed1_1',time1,time3" ''speed1\c_speed1_1分别为归档名称和归档变量
rst.Open ssql1, cc1 ''读出这10分中内所有的值
rst.MoveFirst
tempa=rst.fields(2).value
dim Dim ssql2 As String
ssql2 = "TAG:R,'speed1\c_speed1_1',time2,time4"
rst.Open ssql2, cc1
rst.MoveFirst
tempa=rst.fields(2).value-tempa
cc1.close
dim tag0
set tag0=hmiruntime.tags("tag0").read
tag0.write tempa
set rst=nothing
set cc1=nothing
set tag0=nothing
以上cnn连接字符串可以在Wincc运行以后在数据库中看到
提问者对于答案的评价:
非常谢谢你的帮忙.
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc269414.html