加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用wincc trend control 显示任意时间段的参数趋势【工控老鬼】

(2012-05-25 16:48:24)
标签:

西门子

plc

工业自动化

s7200

s7300

工控老鬼

杂谈

分类: 交流资源

用wincc trend control 显示任意时间段的参数趋势【工控老鬼】

 

用wincc <wbr>trend <wbr>control <wbr>显示任意时间段的参数趋势【工控老鬼】

 

    首先,你需要建立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轴属性,否则无法看出效果。

 

【工控老鬼】友情分享

自动化专业技术博客:http://blog.sina.com.cn/wincchome   

Emailhispeed@foxmail.com 

西门子S7200/300/400,人机界面,变频器,运动控制,伺服驱动,WinCC组态监控,自动化系统集成,以及自动化个行业的解决方案。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有