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

相关推荐

  • WINCC事件记录按钮添加

    现系统运行的WINCC只有运行画面和趋势画面。WINCC工具栏是自定义的,只有用户注销按钮,想增加操作记录查询功能,如何添加按钮及相关控件,并进行相应组态? 最佳答案 操作记录1、…

    SIMATIC WinCC 2020年11月1日
  • 关于WINCC与CSV文件内文本

    有人尝试过通过CSV文件将文本字符串送入WINCC的text内显示的方法吗?有时候画面需要显示的文本行数较多,各处又不一样,想通过CSV文件来做标准化,方便二次开发和维护修改。 问…

    SIMATIC WinCC 2017年10月29日
  • 触摸屏数据保存1年

    触摸屏+PLC方式,要求历史数据报表能保存至少1年,触摸屏怎么满足此功能 最佳答案 保持一年应该没有问题,问题是需要保存数据的量及保存的容量数据大小。需要做数据保存,在订货前需要确…

    SIMATIC WinCC 2017年6月27日
  • WINCC V7.0(rc512)型号的问题

    WINCC V7.0(rc512)型号的问题:最终运行的界面显示的为俄语,不知道要订哪种版本的软件,有知道的帮帮忙!~ 最佳答案 订货数据参见:http://suppor…

    SIMATIC WinCC 2019年6月11日
  • wincc advanced v13中如何实现传感器的功能?

    在博途软件中编写HMI,能不能实现传感器检测的功能,就像下面的那幅图片一样,黄色的轿厢图块到每一层都可以通过传感器来检测。求指教 图片说明:    最佳答案 将…

    2017年6月12日
  • 客户机中的趋势显示

    请教:客户机中的趋势、报表控件为什么不显示?客户机中没有项目,执行时提示正连接服务器数据但最后没反应,除控件不显示外其他工作正常,服务器中能正常显示。 问题补充:客户机-服务器架构…

    SIMATIC WinCC 2019年6月11日
  • wincc7.0组态中图形找不到。

    项目中需要如下的图形,但是找不到。求解怎么可以找到?另外,wincc7.0组态提供哪些图形?有相关的图形库吗? 最佳答案 1.没看到你需要什么图形,你可否截个图上来。2.wincc…

    SIMATIC WinCC 2017年8月18日
  • WINNCC RT LADER 在ipc上使用的方法

    如何在IPC上使用wincc rt loader,从而实现ipc当一个触摸屏使用 钻石用户推荐最佳答案 安装wincc runtime,设置ipc的i…

    SIMATIC WinCC 2021年7月5日
  • wincc 7.3 为防止突然断电数据丢失怎么操作

    wincc 7.3 为防止突然断电数据丢失具体怎么操作 钻石用户推荐最佳答案 1、使用UPS电源啊,电脑最好是带有UPS电源的,否则你数据就是不丢失,如果突然断…

    SIMATIC WinCC 2021年7月5日
  • WINCC报警问题

    请问,当WINCC报警时,如何实现语音报警 问题补充:请问能讲的再详细点吗? 最佳答案 WINCC V6.0开始可以用Horn组件来实现语音报警的.具体用法参考http:…

    SIMATIC WinCC 2019年6月11日