WINCC脚本高手 点击:756 | 回复:4



showday

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 39回
  • 年度积分:0
  • 历史总积分:98
  • 注册:2007年3月11日
发表于:2008-04-15 09:07:26
楼主
请问各位高手,我现在想做一个按钮脚本,当我按下按钮的时候使一个变量等于一,当我松开按钮的时候使等于一的变量延时一端时间之后变成零,我现在想知道那个延时的时间脚本能不能写?如果可以写那么如何写,请高手支招!



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2008-04-15 09:20:51
1楼

本人建議您在Wincc中應盡量減少腳本的使用,因為腳本的運行效率很低下。

有關延時相當的容易,一般可以有以下幾種方法:

1 調用系統的Sleep函數來獲取延時,但是結果是導致系統的掛起,早期的延時采用此方法。

2 為了改變這一問題,因此開始使用For,While等編制空循環作為延時,但是缺陷在于延時精度相當的不準確。

3 然后開始使用動作來做延時,因為動作中可以設定觸發時間,然后將變量累加來作為延時,這種方法使用還是相當普遍,但是缺點是占用系統資源。

4 通過API函數讀取Windows系統的運行時間,將兩次運行時間相減來獲取延時時間,這種方法集合了第2項中的While循環,系統執行效能還是不錯的,一般歐系項目中普遍使用的方式,可獲得較高的定時精度,但是需要編程者比較熟悉API。

 

以上!

 

Good Luck!

夏天来了

  • 精华:1帖
  • 求助:0帖
  • 帖子:17帖 | 202回
  • 年度积分:0
  • 历史总积分:282
  • 注册:2003年7月29日
发表于:2008-07-05 12:54:30
2楼

取时间差,利用VBS脚本容易实现。

lyllxfly

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 25回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2007年7月30日
发表于:2008-07-08 08:19:11
3楼

Sub Delay(DelayTime)   //Unit:seconds

Tag_1=1

StartTimer=Timer

while (Timer-T)<DelayTime

           DoEvents

Loop

Tag_1=0

End Sub

lyllxfly

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 25回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2007年7月30日
发表于:2008-07-08 08:20:43
4楼

Sub Delay(DelayTime) //Unit:seconds

Tag_1=1

dim StartTimer

StartTimer=Timer

while (Timer-StartTimer)<DelayTime

DoEvents

Loop

Tag_1=0

End Sub


热门招聘
相关主题

官方公众号

智造工程师