如何选定次数的进行变量触发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日 上午2:14
下一篇 2019年6月11日 上午2:14

相关推荐

  • trigger name

    触发器名称起到什么作用啊 picture cycle window cycle 这两个选项里还需要写trigger na…

    SIMATIC WinCC 2019年6月11日
  • WINCC7.0点数升级了 如何将低点数授权删除。请详细说明 请指教!

    WINCC7.0点数升级了 如何将低点数授权删除。请详细说明 请指教! 问题补充:比如我要删除128点的授权,那么这个128点的文件名是什么 最佳答案 如果是正…

    SIMATIC WinCC 2021年7月5日
  • 请教各位大虾,WINCC中鼠标的双击动作该如何表达?

    本人是新手,想在WINCC6.2中通过双击设备对象来弹出对话框,但鼠标动作里只有左右键单击,请问如何实现双击动作?谢过。 问题补充:能否通过VBS/VBA编程来实现鼠标对WINCC…

    SIMATIC WinCC 2019年6月11日
  • step7变量导入到wincc6.2

    我的step变量都定义好了 我用wincc要重新定义, 有没好的实用的方法?网上搜了不少 感觉就是太乱了 谢谢那位高手指点 最佳答案 相关资…

    SIMATIC WinCC 2019年6月11日
  • WINCC网页发布怎么弄?

    WINCC网页发布怎么弄?麻烦不麻烦? 最佳答案 需要先安装IIS(Interenet Information Service),从控制面板-添加删除程序-添加…

    SIMATIC WinCC 2019年6月11日
  • WINCC VBS中visible问题

    如图,为什么两个VBS脚本,一个能用,能开能关画面;另外一个不能用,只能开画面,不能关画面;为什么? 问题补充:1.试过了换成ScreenItems,结果还是一样2.我把显示属性改…

    2021年7月5日
  • SQL2005的安装

    我电脑装有wincc6.2和SQL2005。已经用了很长时间了。我还需要装上Visual Studio.net9.0和SQL2005。此SQL和那个SQL不一样,可以一起…

    SIMATIC WinCC 2019年6月11日
  • wincc与 s7集成仿真

    我在s7-315里建wincc2007后使用的屏是MP270,10TOUCH,s7组态完成,wincc也已经提示连接上了,在wincc里可以找到s7里面变量,但当我把s7和winc…

    2019年6月11日
  • wincc7.3采集类型为周期_可选择,如何设置?

    尊敬的老师:我要求开关QD接通时连续采集数组,QD断开时停止采集数组,见图,我设置后开关QD没有起作用,不管通断,一直连续采集数组。请老师用截图指导。谢谢老师用截图指导!!! 问题…

    2021年7月5日
  • 汽车如何会运动?

    我用WINCC6.0  想做个FLASH,就是在库里面用个“汽车”,然后怎么来实现汽车能够动起来?有什么好的办法实现?请高手指点 问题补充:谢谢大家!那如果是风…

    SIMATIC WinCC 2019年6月11日