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

相关推荐

  • kepsever协议

    各位大哥,我这边有一个电力仪表协议是rs485 (modbus rtu)。我这边已经安装一个485转以太网的模块,再连上交换机,打算上位机通过kepserver…

    SIMATIC WinCC 2019年6月11日
  • wincc V74SP1支持 Embedded 仅限于SIMATIC IPC 4x7D/E

    wincc V74SP1支持 Microsoft Windows Embedded 仅限于SIMATIC IPC&nbs…

    SIMATIC WinCC 2021年7月5日
  • WINCC运行版与完全版

    帮忙详细解释一下运行版与完全版的区别·我好给客户做一个推广··谢谢了 最佳答案 运行版:只能用于画面运行,不能组态、修改等;完全版:及开发版,既可以组态、修改、又可以运行等。win…

    SIMATIC WinCC 2019年6月11日
  • 下载人机界面参数到MP370时无法下载是什么问题?

    下载参数到MP370时,由于我的电脑没有九针串口,使用PCMCIA CARD,点击下载显示无法传送数据,请各位大侠指点迷津,谢谢! 最佳答案 详见:面板上传下载问题大全(…

    SIMATIC WinCC 2019年6月11日
  • wincc7.4做excel表格输出

    wincc7.4的归档变量不用脚本能做出定期EXCEl格式的输出吗?怎么做? 问题补充:不用脚本做,能实现吗? 最佳答案 不用脚本是做不了的,可以人工选择范围导出为csv格式的,跟…

    SIMATIC WinCC 2021年7月5日
  • 寻求wincc控制三盏灯顺序亮灭的技术问题

    本意是用两个开关顺序控制三盏灯亮灭,这个脚本程序应该是在哪编辑啊,我在c脚本编辑了一个新动作将程序写在了里面,之后又在建立按钮时又将脚本程序分别编在了按钮的c动作上,最后测试不能实…

    2021年7月5日
  • 触摸屏自动关闭

    MP377触摸屏能否通过屏自身的设置及WINCC软件功能,做到使触摸屏在规定的时间内自动关闭画面,只有重新下载源程序才能恢复(与PLC无关)。如何做提个方发及建议。谢谢 问题补充:…

    SIMATIC WinCC 2019年6月11日
  • WINCC双服务器机冗余

    那个高手能给我详述一下 用户冗余的设置步骤,从“建立项目”到实现“冗余”的步骤。谢谢。 问题补充:请问一下 项目需要建立多服务器吗?另外需要建立数据包吗? 最佳…

    SIMATIC WinCC 2019年6月11日
  • wincc用户名

    wincc7.0怎么显示前一用户名?当前用户名连接内部变量即可,那前一用户名呢? 最佳答案 按照系统内部变量@CurrentUserName的数据类型,新添加一个内部变量PrevU…

    SIMATIC WinCC 2021年7月5日
  • 从现场工程师站上归档的项目如何在办公室中电脑激活项目

    从项目现场拷回来的项目归档,在办公室中电脑解压后想激活项目,结果进度条就停在了“变量记录系统”38%的位置上了。打开项目的时候,有个提示说原组态的服务器名不可用,将服务器的名字改成…

    SIMATIC WinCC 2019年6月11日