如何选定次数的进行变量触发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

相关推荐

  • 博图V14软件里面的可视化选项

    博图V14软件里面的可视化是不是可以对西门子人机(触摸屏)进行组态编辑啊(就是编写人机画面)?博图功能太强大了好多不知道怎么用 最佳答案 可以你可以在这里学习一下http://ww…

    SIMATIC WinCC 2017年5月28日
  • wincc提示没有到数据库的连接

    按照《深入浅出WINCC》一书的例子,在学习过程值归档的趋势与报警时,用变量模拟器并运行后,却显示“没有到数据库的连接”。这是什么原因啊? 最佳答案 打开wincc项目:计算机(右…

    SIMATIC WinCC 2019年6月11日
  • Step7-5.5版,WinCC6.2版哪儿有下的?

    我的软件太老旧了,想换成中文版的Step7-5.5版,WinCC6.2版,哪儿有下的,请大侠告知,谢谢! 最佳答案 可以学习使用的话,网上很多提供下载的,如果商业使用建议你想代理商…

    SIMATIC WinCC 2021年7月5日
  • wincc画面工作不正常

    刚安装了wincc v7.0SP1 的软件打开原项目V6.3 SP3的项目出现启动画面显示出错!如下图 图片说明:    最佳答案…

    2017年6月9日
  • 急求winccflexible smart v3的软件

    winccflexible 不能和smart1000 IE v3 通讯,需要winccflexible smart v3…

    SIMATIC WinCC 2021年7月5日
  • Wincc变量周期

    如何批量更改 Wincc变量周期  由于开始复制粘贴了很多对象,变量周期都是1S的,怎么批量改成有变化时 钻石用户推荐最佳答案 1.变量周期已经为1s…

    2021年7月5日
  • wincc画面窗口怎样改名字

    wincc新建画面窗口1,改名字提示找不到该对象,无法更改。 问题补充:修改‘画面窗口1’为‘jb01”这个名字,提示找不到对象。 图片说明:    最佳答案…

    2018年3月6日
  • 趋势控件大小通过VB自动跟踪画面大小

    做一个画面,画面里放置一个趋势控件,趋势控件的宽度和高度自动跟随画面的宽度和高度,画面最大时,趋势控件也最大,问一下VB程序怎么写? 最佳答案 Option Explic…

    SIMATIC WinCC 2021年7月5日
  • 关于在线数据归档的表格显示

    请问各位高手:   为什么在显示数据归档的时候数据有时候会显示为0呢? 问题补充:是通过PLC300通信传递采集的温度值,有时候一下就变为0;但是一起…

    SIMATIC WinCC 2019年6月11日
  • winccC脚本二进制定义变量

    winccC脚本有定义二进制变量的函数?是什么 最佳答案 脚本中定义变量,只要能放下你的变量值就行了。比如你用整数变量保存二进制值也是可以的。 提问者对于答案的评价:

    SIMATIC WinCC 2021年7月5日