如何选定次数的进行变量触发vbs动作?

动作我已编写好,确认无误。想对动作进行 选定次数的进行; 我是这样想的:设计一个io域,用于输入想要进行的次数;一个按钮用于开始动作。我对按钮进行vbs编写,脚本语言如下:
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)       
Dim flip_Tag
Set flip_Tag = HMIRuntime.Tags("flip_Tag")
Dim TagTimes
Set TagTimes = HMIRuntime.Tags("TagTimes")
flip_Tag.Read 
TagTimes.Read 
Dim i
flip_Tag.Value =TagTimes.Value
For i = TagTimes.Value To 0
 ‘statements
 flip_Tag.Write i-1
Next
End Sub
其中flip_Tag为触发器变量,触发周期为有变化时;TagTimes为IO域连接变量,用于接收我想要进行动作的次数。 运行程序无法实现功能,还请各位指点一下。。

最佳答案

For i = TagTimes.Value To 0
不知道你为什么要这么写。你调试过
dim i
for i = 3 to 0
msgbox i
next
这样的代码吗?

虽然
dim i
for i = 0 to 3
msgbox i
next
这样的代码可以正确运行。

再是flip_Tag.Value =TagTimes.Value这句话相当于没写,因为你 flip_Tag.Write 的就是 i-1 
flip_Tag的范围总是TagTimes – 1到-1
关于这个问题可以参考:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=5&a_id=966768&s_id=17&num=4#anch

建议你这段程序这样写:
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)       
Dim flip_Tag
Set flip_Tag = HMIRuntime.Tags("flip_Tag")
Dim TagTimes
Set TagTimes = HMIRuntime.Tags("TagTimes")
Dim i
For i =0 To TagTimes-1 step 1
 flip_Tag.Write TagTimes – i     ‘每次都是从0变到TagTimes为第一次触发
                                                ’直至变到1为最后一次触发,共TagTimes次
Next
HMIRuntime.Tags("flip_Tag").Write 0
 ””从1回到初值0,虽然触发但是没做里面的动作
End Sub
其中flip_Tag变量的起始值置为0(在变量管理器中右键属性中设置)
而你触发的动作中,用if HMIRuntime.Tags("flip_Tag").Read <> 0 then
来滤去flip_Tag变成0的这次触发。
因为每次项目运行起来的时候都会加载变量,触发一次动作,可能出现预料不到的结果。

如果动作对于项目运行时触发的这次并不敏感(多做这一次也不妨碍)的话
那在你的代码缺陷在于,flip_Tag的范围总是由-1到TagTimes – 1再一步一步到-1,多做了一次动作!

提问者对于答案的评价:
已调试成功,非常感谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc263431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐

  • wincc flexible2008项目打开有问题

    所有的项目打开后就是图中的样子,只有一个输出,别的什么都没有,再打开就说“项目已经被打开”,搜网上有说删除SIMATIC WinCC flexible&nbsp…

    2017年11月1日
  • wincc v6.0 sp2 图形编辑器中的库

    各位,我安装winccv6.0 sp2亚洲版的,在图形编辑器中使用库文件时文件图标不能预览,都是同样的图标(和图形编辑器的图标一样),请问这是为什么?如何解决这个问题?系…

    SIMATIC WinCC 2019年6月11日
  • WINCC做混凝土搅拌监控系统

    用WINCC做混凝土搅拌监控系统,想预先存一些车辆信息比如车牌号,司机姓名,灌容量等,需要用时只要选择车牌号,与此车牌号相关的信息如司机姓名和灌容量等自动显示在相应的位置。车辆信息…

    SIMATIC WinCC 2017年6月3日
  • 关于WINCC6.0项目升级的问题

    目前有一个WINCC5.1的项目,我已经把它升级到了WINCC6.0,但是当使用WINCC7.02转换6.0项目时,却提示不支持从WINCC6.00.00到V7.02.00的转换。…

    SIMATIC WinCC 2021年7月5日
  • WinCC与S7-200模拟量显示

    S7-200模拟量VD300通过OPC PC Acces 转换后为“有符号16位”,WinCC需要显示这个变量,如温度、压力等,可是现在显示不了,S7…

    SIMATIC WinCC 2019年6月10日
  • WINCC界面按钮操作

    如何按钮按钮权限,我使用的TP-178MICRO触摸屏,我的同事在进入下一个页面时,设置了权限,也不知道秘密口令,我想删除用户权限,不需要秘密口令就进入下一个页面,如何操作,望执教…

    SIMATIC WinCC 2019年6月11日
  • wincc 归档、报警导入office

    请问:现在可以实现将归档变量和报警记录导入Excel,但用的是按钮事件中的VBS脚本写的,我想能否实现不点击按钮,而是每小时或若干小时自动导入Excel,请问具体怎么实现这个功能?…

    SIMATIC WinCC 2021年7月5日
  • WinCC flexible2008 SP2 无法安装

    提示  setup-frame not registered. Please  contact yo…

    2017年12月1日
  • wincc7.4连接S7-300PLC

    公司项目原来用的是WINCC7.0,最近电脑升级window10后就安装了WINCC7.4,项目是移植过去的,现在激活wincc里面变量都连接不上了.我通讯用的是电脑自带的网卡TC…

    SIMATIC WinCC 2021年7月5日
  • wincc 画图界面做导航怎么做?

    想在wincc做一个导航,不知道怎么做?本想wincc应该有树形控件的,可是没有找到。哪位大侠会的帮忙一下 最佳答案 1、使用PictureWindow,主画面放置导航按钮,按钮动…

    SIMATIC WinCC 2019年6月11日