优化自动化脚本(精智屏基于脚本实现延时动作)

前几天发了一篇文章介绍西门子的精智屏如何实现秒级的计划任务后看到群里有人提出如何实现延时动作,比如按钮被长按几秒后再动作,这样可以避免生产环境中的一些误操作。

优化自动化脚本(精智屏基于脚本实现延时动作)(1)

图1

下面我们介绍一种基于脚本的延时动作方法。该例子演示按钮被按下三秒后设置一个矩形框背景色为绿色。先在根画面上添加一个矩形框和一个按钮。其中矩形框命名为“REC”,参见下图所示。

优化自动化脚本(精智屏基于脚本实现延时动作)(2)

图2

再添加一个脚本,命名为“VBSDelay”。输入vbs代码如下:

Dim REC Set REC=HmiRuntime.Screens("根画面").ScreenItems("REC") REC.BackColor=RGB(0,255,0)

我们把该脚本放到按钮的鼠标按下事件中,那么当按钮被压下时,矩形框立即会变成绿色。如果希望按钮被压下后延时3秒再将矩形框设置为绿色还需要对脚本进行一些改造。首先我们把变量“Clock_Byte”的采集周期改为500ms。

优化自动化脚本(精智屏基于脚本实现延时动作)(3)

图3

再添加一个名为“DelayCount”的整型变量和一个名为“DelayFlag”的布尔型变量。

优化自动化脚本(精智屏基于脚本实现延时动作)(4)

图4

按钮压下时置位变量“DelayFlag”,释放时复位变量“DelayFlag”。

优化自动化脚本(精智屏基于脚本实现延时动作)(5)

图5

将脚本vbsDelay改造成如下所示。

If SmartTags("DelayFlag") = True Then SmartTags("DelayCount")=SmartTags("DelayCount") 1 Else SmartTags("DelayCount") = 0 End If If SmartTags("DelayCount") >= 6 Then Dim REC Set REC=HmiRuntime.Screens("根画面").ScreenItems("REC") REC.BackColor=RGB(0,255,0) End If

布尔型变量“DelayFlag”为True(按钮被压下)时开始计数,计数结果由变量“DelayCount”保存。当计数的值大于等于6时(因为该脚本的执行周期为500ms,那么3秒就是执行6次。注意:这种计数方法的延时不是非常精确,但是够用了),触发矩形框的背景色为绿色。

除了上述介绍的延时方法外,还可以使用do、while等循环语句实现延时。不过这种方法个人不推荐。因为它们在执行时会导致其它脚本堵塞。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页