wincc的报表编辑器里,放了一个趋势,不过想设置起始时间,和终止时间,我试了下,取的是system info 里面的 时间,不行啊,打印的时候,不显示
最佳答案
网上的一篇文章,也就是用脚本设置控件属性——
首先,你需要建立2个输入输出域用于输入你要显示的起始时间和结束时间。(变量连接类型为字符型)
然后你需要设立一个按钮(当然也可以直接在你一个按钮脚本中输入)用于将输入的字符型变量转换为时间日期格式。
按钮的VBS脚本为:
Sub onClick(ByVal Item)
Dim ActDate
Dim Year_Sect
Dim Month_Sect
Dim Day_Sect
Dim Date_Mod
Dim Date_End
Dim ActTime
Dim Time_Mod_b
Dim Time_Mod_e
Dim DateString_b
Dim DateString_e
ActDate = Date '当前日期
Year_Sect = Year(Date) ‘提取年份
Month_Sect = Month(Date) ’提取月份
Day_Sect = Day(Date) ‘提取日
Date_Mod = Day_Sect & "." & Month_Sect & "." & Year_Sect
’然后根据归档的要求将日期重新组合成,日.月.年的格式
ActTime = Time ‘当前时间
Time_Mod_b = DateAdd("n", -15, ActTime) ’起始时间减15分钟
Time_Mod_e = DateAdd("n", -5, ActTime) ‘结束时间减5分钟
DateString_b = Date_Mod &" "& Time_Mod_b ’将起始时间编为:日.月.年 时间格式
DateString_e = Date_Mod &" "& Time_Mod_e
HMIRuntime.Tags("strVar_1").Write DateString_b '25.02.2004 21:10:00
HMIRuntime.Tags("strVar_2").Write DateString_e
End Sub
这段程序的作用就是查看过去15分钟到过去5分钟的时间段,如果你要显示任意时间,那么只要不调用DateADD函数即可。
接下来你需要设立一个按钮,用于将时间设定起作用。
大体思路是这样的:首先,停止趋势的显示,也就是取消激活(这里只是指趋势控件,而不是指项目),然后将转换的时间写入的控件属性,最后再激活控件,由于控件的时间是根据所有曲线来的,所以如果(这里指假设)你有3个变量(3条曲线,那么你需要重复3次,也就是说,我们可以对任意的曲线的时间作设定。)
C语言脚本如下:
void onClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
SetPropWord(lpszPictureName,"Control2","Index",0);
//相当于选择控件名为control2的趋势控件的第一条曲线(曲线顺序根据你组态控件时添加变量的先后)
SetPropBOOL(lpszPictureName,"Control2","Online",FALSE);
//在线方式的取消
SetPropBOOL(lpszPictureName,"Control2","TimeRange",FALSE);
//取消当前的时间范围,方便我们将要定义的时间范围灌入
SetPropBOOL(lpszPictureName,"Control2","Activate",FALSE);
//将趋势控件取消激活
SetPropChar(lpszPictureName,"Control2","BeginTime",GetTagChar("strVar_1"));
//设置起始时间,STRVAR变量为先前VBS中转换过来的
SetPropChar(lpszPictureName,"Control2","EndTime",GetTagChar("strVar_2"));
//设置结束时间
SetPropWord(lpszPictureName,"Control2","Index",1);
//对第二条曲线设置时间,如果你只有1条,那么无需写这段了,如果有多条,那么重复多次,你只需要改变Index后的参数,如第二条曲线,那么就是1,第3条,那么就是2了。
SetPropBOOL(lpszPictureName,"Control2","Online",FALSE);
SetPropBOOL(lpszPictureName,"Control2","TimeRange",FALSE);
SetPropBOOL(lpszPictureName,"Control2","Activate",FALSE);
SetPropChar(lpszPictureName,"Control2","BeginTime",GetTagChar("strVar_1"));
SetPropChar(lpszPictureName,"Control2","EndTime",GetTagChar("strVar_2"));
SetPropBOOL(lpszPictureName,"Control2","Activate",TRUE);
//当所需要的时间曲线都设定完了后,激活控件即可,注意,你如果要对多个曲线做时间范围设定,那么你不能使用公共X轴和公共Y轴属性,否则无法看出效果。
}
提问者对于答案的评价:
谢谢,不过又出现了一个小问题,就是我设置好开始,结束时间,又把温度强制了一个数值,出来的趋势图前面少了一大截,这是怎么回事,高人,有时间给我解释下好吧,我的邮箱是wd05468@yahoo.com.cn
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc270690.html