技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 技成百科 > 如何选定次数的进行变量触发vbs动作?

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

刘玉蓉 发布于2014-08-13 11:49 21 0 标签:

动作已编写好,确认无误。想对动作进行 选定次数的进行; 设计一个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
关于这个问题可以参考:
https://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,多做了一次动作!

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签