技术论坛

wincc VBS脚本利用数组 改写多个变量,并求和

作者 主题
侠圣

经验值: 4522
发帖数: 554
精华帖: 4
主题:【分享】wincc VBS脚本利用数组 改写多个变量,并求和
精华帖精华帖星级1级 推荐帖


只看楼主 只看精华 楼主 2018-04-10 16:42:02

问题:有10个变量 A1、A2……A10,需要分别写入 1、2……10,用IO域太麻烦,用vbs脚本怎实现?

提示:利用数组方便很多,不过数组元素编号从0开始的,需要注意一下


示例:新建内部变量A1到A10,然后在画面内建一个按钮,按钮鼠标事件单击左键里写入VBS脚本如下


Sub OnLButtonUp(ByVal Item, ByVal Flags, ByVal x, ByVal y)           

Dim A(9),I,TE,SUM

For I = 0 To 9

    TE=CSTR(I+1)

    TE="A"&TE  '合成变量名

    Set A(I)=HMIRuntime.Tags(TE)

    A(I).value=I+1

    A(I).write

Next

SUM=0

For I=0 To 9

    A(I).read

    SUM=SUM+A(I).value

Next

MsgBOX(SUM)

End Sub

   

保存画面,运行测试,点击按钮后弹出消息窗,求和值显示55;更换其他计算方式也可进行其他计算

以上示例仅供参考,不限于修改变量值,主要学习批量修改的方法。

当然,如果画面里有多个名称类似的对象,修改对象属性也可用此方法。

比如有多个圆,需要同时修改圆的半径,不过需圆的名称统一修改为:前面字符一致,后面按数字顺序编号的形式,利用circle1、circle2、circle3……


 
精华帖版主置评: 鼓励一下,希望多发一些相关的分享帖子
分享帖版主置评: 感谢分享,这个也是脚本的基础应用了吧 (推荐人:RENHQ)
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1472790&b_id=5&s_id=0&num=12

侠圣

经验值: 2300
发帖数: 442
精华帖: 1
回复:wincc VBS脚本利用数组 改写多个变量,并求和
推荐帖


只看楼主 只看精华 1楼 2018-04-10 20:50:28
非常好的想法,VBS用起来666啊,赞\(≧▽≦)/赞赞
co771@qq.com,好难
以下网友喜欢您的帖子:

  
版主

经验值: 69061
发帖数: 12270
精华帖: 59
回复:wincc VBS脚本利用数组 改写多个变量,并求和
推荐帖


只看楼主 只看精华 2楼 2018-04-10 22:35:12


感谢分享

VBS这个是一个方法

如果有规律的话,倒是不如用VBA 创建IO域然后设置直接连接好


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
侠圣

经验值: 4522
发帖数: 554
精华帖: 4
回复:wincc VBS脚本利用数组 改写多个变量,并求和
推荐帖


只看楼主 只看精华 楼主 3楼 2018-04-11 08:30:10
以下是引用RENHQ在2018-04-10 22:35:12的发言 >2楼


感谢分享

VBS这个是一个方法

如果有规律的话,倒是不如用VBA 创建IO域然后设置直接连接好

水平有限,VBA还不会用,继续学习中


 
以下网友喜欢您的帖子:

  
版主

经验值: 17323
发帖数: 8474
精华帖: 18
回复:wincc VBS脚本利用数组 改写多个变量,并求和
推荐帖


只看楼主 只看精华 4楼 2018-04-11 09:04:45

    Set A(I)=HMIRuntime.Tags("TE")

    A(I)=I+1

第一句,是设定A(i)为对象,即WinCC内部变量,TE不能加引号;

Set A(I)=HMIRuntime.Tags(TE)

第二句,就矛盾了。对象不能赋值。应该

A(I).Value=i+1 

A(i).Write


无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
至圣

经验值: 18421
发帖数: 2409
精华帖: 1
回复:wincc VBS脚本利用数组 改写多个变量,并求和
推荐帖


只看楼主 只看精华 5楼 2018-04-11 10:43:03


学习了,学习了。感谢楼主分享好的方法!


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3723
发帖数: 486
精华帖: 1
回复:wincc VBS脚本利用数组 改写多个变量,并求和
推荐帖


只看楼主 只看精华 6楼 2018-04-11 11:33:11

感谢分享,脚本一看就头疼。


永无止境!
以下网友喜欢您的帖子:

  
新手

经验值: 18
发帖数: 2
精华帖: 0
回复:wincc VBS脚本利用数组 改写多个变量,并求和
推荐帖


只看楼主 只看精华 7楼 2018-04-11 13:43:47
你说的对,内部变量TE不能加引号。问你个问题我有一个函数总是报错,是TP1500触摸屏内部脚本。如下
Dim a,b
a=("Valve_c.A10001VA.ManMode") '这是一个结构体变量下面的一个bool元素。在HMI TAG中是一个结构体,而不是单个bool变量
b=smarttag(a)
这个指令总是提示报错
 
以下网友喜欢您的帖子:

  
至圣

经验值: 18079
发帖数: 1524
精华帖: 2
回复:wincc VBS脚本利用数组 改写多个变量,并求和
推荐帖


只看楼主 只看精华 8楼 2018-04-11 23:14:59

熟练应用VBS脚本用处很大。


我回来了!继续努力!
以下网友喜欢您的帖子:

  
侠圣

经验值: 3886
发帖数: 556
精华帖: 1
回复:wincc VBS脚本利用数组 改写多个变量,并求和
推荐帖


只看楼主 只看精华 12楼 2018-04-16 08:28:56
以下是引用RENHQ在2018-04-10 22:35:12的发言 >2楼


感谢分享

VBS这个是一个方法

如果有规律的话,倒是不如用VBA 创建IO域然后设置直接连接好

用VBA 创建IO域然后设置直接连接,这个怎么实现呢?希望大师分享,谢谢!


精益求精
以下网友喜欢您的帖子:

  
版主

经验值: 69061
发帖数: 12270
精华帖: 59
回复:wincc VBS脚本利用数组 改写多个变量,并求和
推荐帖


只看楼主 只看精华 13楼 2018-04-16 10:04:06
以下是引用pingchangxin在2018-04-16 08:28:56的发言 >12楼

用VBA 创建IO域然后设置直接连接,这个怎么实现呢?希望大师分享,谢谢!

以下是引用RENHQ在2018-04-10 22:35:12的发言 >2楼:感谢分享VBS这个...

引用2楼详细内容:


感谢分享

VBS这个是一个方法

如果有规律的话,倒是不如用VBA 创建IO域然后设置直接连接好

帮助里面好像有这个介绍的


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
奇侠

经验值: 9064
发帖数: 375
精华帖: 0
回复:wincc VBS脚本利用数组 改写多个变量,并求和


只看楼主 只看精华 14楼 2018-05-10 17:53:18


学习了。感谢分享啊


随心所欲
以下网友喜欢您的帖子:

  
奇侠

经验值: 9064
发帖数: 375
精华帖: 0
回复:wincc VBS脚本利用数组 改写多个变量,并求和


只看楼主 只看精华 15楼 2018-06-03 15:59:37


学习了。谢谢分享


随心所欲
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
wincc VBS脚本利用数组 改写多个变量,并求和
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。