技术论坛

VBS中延时怎么做????

作者 主题
侠圣

经验值: 2123
发帖数: 551
精华帖: 6
主题:VBS中延时怎么做????


只看楼主 楼主 2011-06-09 21:37:43
例如想先置一,延时2s再清零,达到给PLC发送脉冲信号目的。用VBS做,怎么做。忘高手指教,别告诉我左键按下置一,释放清零啊。我的要求是VBS脚本中怎么做延时。
欢迎关注西门子民间技术支持微信公众帐号。
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=5&a_id=856584

奇侠

经验值: 8877
发帖数: 2002
精华帖: 12
回复:VBS中延时怎么做????


只看楼主 1楼 2011-06-09 22:59:37
调用系统时间吧,是没法用计时器完成的,因为就没有计时器。
污水处理自控工程师,简称污师。
以下网友喜欢您的帖子:

  
侠士

经验值: 1876
发帖数: 293
精华帖: 19
回复:VBS中延时怎么做????


只看楼主 2楼 2011-06-10 10:29:38
VBS鼠标动作触发事件CODE如下:
修改后代码
Dim mytime,bs
Set bs=HMIRuntime.Tags("BoolShow") 'BoolShow是一个为测试建立的内部bool型变量
bs.Write(1) '置1(高电平,波形上升)
mytime = Timer+2 '预设置1时间为2秒(高电平保持时间)
If mytime<86400 Then
Do Until Timer>mytime '直到2s后再执行复位0
'空循环时间2s
Loop
bs.Write(0) '执行复位0(低电平,波形下降)
Else
Do Until (Timer>(mytime - 86400) And Timer<5)
Loop
bs.Write(0)

原始代码
Dim mytime,bs
Set bs=HMIRuntime.Tags("BoolShow") 'BoolShow是一个为测试建立的内部bool型变量
bs.Write(1) '置1(高电平,波形上升)
mytime = Timer+2 '预设置1时间为2秒(高电平保持时间)
Do Until Timer=mytime '直到2s后再执行复位0
'空循环时间2s
Loop
bs.Write(0) '执行复位0(低电平,波形下降)

写一个2S延时的脉冲输出脚本,给那些在找如何做延时的朋友。(VBS示例!)
希望大家多做交流!
[color=red] 我所写的原始代码有一个bug:在23:59:58-0:0:0这两秒之间会失效,新的代码我已经修改了,通过测试。为了让大家清楚发现这个bug,在本贴中保留了原始代码。感谢youhm发现这个bug。
因为当时在写这个代码的时候是为了帮助一个论坛朋友完成这个脚本实现延时脉冲功能,所以实现了这个功能后,并没有对其多加考虑。其实还有一个需要特别说明的是:这个脚本,如果触发一次后,会脉冲置位2s,但是如果你连续点击2次(极短的时间内)会出现,出现0变成1后保持2秒变成0,马上(极其短,短到wincc的采样几乎采集不到的时间片刻)又变成1保持2秒再变成0。所以你会看上去点两次就表现出1状态保持了4秒[/color]
为什么呢?因为事件触发以后会在一个队列里,你触发了两次那么就会执行两次。
见:http://www.ad.siemens.com.cn/club/bbs/post.asp?a_id=856699&pno=1&b_id=5&s_id=17#856699
Ken(小释)…西门子自动化技术群16182848
以下网友喜欢您的帖子:

  
侠圣

经验值: 2123
发帖数: 551
精华帖: 6
回复:VBS中延时怎么做????


只看楼主 楼主 3楼 2011-06-10 12:46:43
quote:以下是引用Ken.Carrey在2011-06-10 10:29:38的发言:
VBS鼠标动作触发事件CODE如下:
Dim mytime,bs
Set bs=HMIRuntime.Tags("BoolShow") 'BoolShow是一个为测试建立的内部bool型变量
bs.Write(1) '置1(高电平,波形上升)
mytime = Timer+2 '预设置1时间为2秒(高电平保持时间)
Do Until Timer=mytime '直到2s后再执行复位0
'空循环时间2s
Loop
bs.Write(0) '执行复位0(低电平,波形下降)

见:http://www.ad.siemens.com.cn/club/bbs/post.asp?a_id=856699&pno=1&b_id=5&s_id=17#856699

真乃高人也
欢迎关注西门子民间技术支持微信公众帐号。
以下网友喜欢您的帖子:

  
至圣

经验值: 13056
发帖数: 4961
精华帖: 81
回复:VBS中延时怎么做????


只看楼主 4楼 2011-06-10 14:37:18
使用Timer要注意一点,0:00时Timer的值会跳变为0,所以以上程序在23:59:59时执行将会有问题
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 8877
发帖数: 2002
精华帖: 12
回复:VBS中延时怎么做????


只看楼主 5楼 2011-06-10 16:38:38
孤陋寡闻了。不不知道这个Timer可以直接使用吗?
污水处理自控工程师,简称污师。
以下网友喜欢您的帖子:

  
至圣

经验值: 13056
发帖数: 4961
精华帖: 81
回复:VBS中延时怎么做????


只看楼主 6楼 2011-06-10 17:20:38
Timer可以直接使用,它表示0点以来所经过的时间秒数
 
以下网友喜欢您的帖子:

  
侠士

经验值: 1592
发帖数: 537
精华帖: 2
回复:VBS中延时怎么做????


只看楼主 7楼 2011-06-11 14:34:32
呵呵 我用全局脚本做了一个timer,然后其他全局脚本调用timer中的时间变量
喜闻乐见的WinCC
以下网友喜欢您的帖子:

  
侠士

经验值: 1876
发帖数: 293
精华帖: 19
回复:VBS中延时怎么做????


只看楼主 8楼 2011-06-11 16:44:44
quote:以下是引用will666在2011-06-10 16:38:38的发言:
孤陋寡闻了。不不知道这个Timer可以直接使用吗?


Timer是可以直接用的,它返回的值是经过子夜0:0:0以后的秒数
Ken(小释)…西门子自动化技术群16182848
以下网友喜欢您的帖子:

  
侠圣

经验值: 2123
发帖数: 551
精华帖: 6
回复:VBS中延时怎么做????


只看楼主 楼主 9楼 2011-06-12 22:51:43
谢谢Ken大侠,嗯,我就是用的你原来脚本,另外我也不用考虑你说的连续点击问题,因为我是把你的脚本放在二次确认后的脚本后边,二次确认后才执行。再次感谢。二十四小时里有2s钟有bug,我也不改了。呵呵。
欢迎关注西门子民间技术支持微信公众帐号。
以下网友喜欢您的帖子:

  
侠士

经验值: 1876
发帖数: 293
精华帖: 19
回复:VBS中延时怎么做????


只看楼主 10楼 2011-06-13 00:05:46
quote:以下是引用还是新手在2011-06-12 22:51:43的发言:
谢谢Ken大侠,嗯,我就是用的你原来脚本,另外我也不用考虑你说的连续点击问题,因为我是把你的脚本放在二次确认后的脚本后边,二次确认后才执行。再次感谢。二十四小时里有2s钟有bug,我也不改了。呵呵。

别介啊!首先很高兴你会再一次来看这个帖子!但是我要说的是:
我原来写的脚本确实是在每天的23:59:58-0:0:0的这2秒之间确实是有Bug的!既然我都给出了新的脚本,还是用新的脚本吧,新的脚本更安全,更完善!
至于说脚本会在队列中保持执行的问答题,这个是系统就是这样的!你加了一个确认触发,是个很不错的做法!
Ken(小释)…西门子自动化技术群16182848
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
VBS中延时怎么做????
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。