西门子触摸屏VBS编程陷阱之VBS不支持多线程

已锁定

Joygen

西门子1847工业学习平台

  • 帖子

    38
  • 精华

    1
  • 被关注

    20

论坛等级:侠客

注册时间:2010-05-08

普通 普通 如何晋级?

西门子触摸屏VBS编程陷阱之VBS不支持多线程

1461

6

2020-05-21 21:07:02

有人问能不能通过VBS来做一个死循环来连续的监控某个值的状态,然后执行一些操作。原则上是不能那么做的,除非你打算程序中不使用其他的用户脚本了。在打算使用VBS之前一定注意以下事项带来的影响:

西门子触摸屏中的VBS是单线程操作的,如果没有执行完成会导致其他脚本无法执行。

测试案例

1.我们新建一个用户脚本Cycle,做一个循环程序,脚本启动时初始化tag1为1,当tag2不等于3时会一直循环将tag1赋值为2,如果tag2为3,则将tag1也赋值为3。脚本如下:

SmartTags("tag1")=1

Do Until SmartTags("tag2").Value=3 

SmartTags("tag1")=2

Loop

SmartTags("tag1")=3


2.我们新建一个按钮,命名为“循环”,先执行Cycle脚本,VBS脚本执行完成后再执行切换画面的系统函数。

我们需要验证两个事:

a.当脚本在死循环阶段,能切换画面吗?

b.切换画面后,脚本还在执行吗?

c.当脚本在死循环阶段,还能执行其他VBS脚本吗?


3.我们创建两个按钮3和4,一个是通过系统函数来切换画面,另一个是通过用户脚本来切换画面。再建两个按钮2和5,控制tag2加减1,以此来控制循环脚本的退出。

按钮3:用户脚本切换画面


按钮4:用户脚本切换画面


用户脚本Change中的内容:


ActivateScreen "画面_2",0


按钮2:使tag2加1



按钮5:使tag2减1



结果

事件中的用户自定义脚本和系统函数是顺序执行的,如图1号的脚本不执行完,2号是不会执行的。

事件中脚本的死循环只会导致其他脚本无法执行,但是不会禁止其他控件中的事件触发的系统函数的正常执行。


a.当脚本在死循环阶段,能切换画面吗?Y 可以通过系统函数来切换画面。

b.切换画面后,脚本还在执行吗?Y

c.当脚本在死循环阶段,还能执行其他VBS脚本吗?N


测试动画




西门子触摸屏VBS编程陷阱之VBS不支持多线程 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有31062条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。