加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线18475208684

广东省茂名市西门子代理商-伺服电机驱动变频器代理

更新时间
2024-11-27 08:00:00
价格
请来电询价
西门子变频器
西门子触摸屏
西门子伺服电机
西门子PLC
西门子直流调速器
西门子电缆
联系电话
13922889745
联系手机
18475208684
联系人
向小姐
立即询价

详细介绍

VBS 脚本可以用在 WinCC Comfort/Advanced Runtime。下面就是一些很实用技巧,希望对大家有所帮助!

1、为什么一个由内部变量的 “数值改变” 事件触发的脚本不被执行?

如果使用一个内部变量调用另外一个内部变量,以此,例如被调用的变量又去执行一个脚本(比如,根据变量变化),此时一个安全机制会阻止这个功能被执行。


此安全功能是为了阻止连续的执行。

例如
在内部变量 “HMI_Tag_01” 属性下,“更改数值”事件去置位内部变量 “HMI_Tag_02” 中的某一位。
同时内部变量 “HMI_Tag_02” 的“更改数值”事件下又调用一个脚本。
结果:这个脚本不会被执行。

解决办法
使用和控制器通讯的外部变量。请注意,通过使用外部变量可以规避上述安全机制。在项目运行时可能会产生问题。


2、如何在一个脚本中访问数组中的元素?

对数组元素的访问是通过数组的名称和数组中由括号分隔的数组索引来实现的:“SmartTags("Array Name")(array index) ”

例如    

访问数组 "DB10_HMI_Data" 的第二个元素 :

Dim Tag_01    'Internal script tag
Tag_01 = SmartTags("DB10_HMI_Data")(2)


注意
使用下面语法访问字符串类型数组中的元素:

Dim Tag_01   'Internal script tag
Tag_01 = SmartTags("DB10_HMI_Data[2]")


例如   

通过一个循环描述数组 "DM10_HMI_Data" 的第一个元素至第十一个元素

Dim Tag_01
For Tag_01=0 to 10
    SmartTags("DB10_HMI_Data")(Tag_01) = 5
Next

局部脚本的数组(该数组仅在此脚本中可用)可以使用同样的方式查询,对于多维数组,各个维度通过一个逗号分隔开。

例如   

访问二维数组变量 "HMI_Data"  没有连接控制器。

Dim HMI_Data(10,10)
Dim Tag_01
Tag_01 = HMI_Data(0, 5)


注意
当使用控制器连接的数组元素时,推荐在脚本开始前将他们赋值给脚本内部变量,然后再使用内部变量进行其他工作。结束脚本前,将内部变量赋值给数组元素。
  

3、如何在控制器和脚本之间有效的赋值过程变量数组?

从控制器到一个脚本赋值,过程变量数组需要在一个循环中将数组元素一个一个赋值,参考示例。然而,也可以通过一个简单的指令把局部脚本的数组的值赋给过程变量数组。

例如   

把控制器的数组 "CPU_Array" 的值赋给内部数组 "local_array" 和 把内部数组 "local_array" 的值赋给控制器的数组 "CPU_Array" 

Dim local_array(10)
Dim i
...
' Copy from the CPU to the script:
For i = 0 To 9
    local_array(i) = SmartTags("CPU_Array")(i)
Next
...
' Copy back to the CPU:
SmartTags("CPU_Array") = local_array


注意
使用数组可能导致较高的通信负载和数据不一致。


4、如何访问动态库 ( "动态链接库 ",DLLs)?

WinCC Comfort 和 Advanced  不能访问  DLLs。
WinCC Professional在用户定义的C函数里可以调用DLL函数 (DLL = Dynamic Link Library) 。

5、如何用VBS脚本确定鼠标当前的位置?

为了读取当前鼠标的位置,需要访问操作系统的 API  (Application Programming Interface) 。
VBS 不支持通过 DLLs 访问操作系统的 API 。
 

6、为什么不能在脚本里使用 “ MsgBox ” 命令?

“MsgBox” 命令不能用于 WinCC Comfort 和 WinCC Advanced 版本是由于安全的原因。 “MsgBox”的弹出显示可能会覆盖掉元素操作,比如:阻止设备的快速操作。此外,消息框可能会阻止脚本的进一步执行。

解决办法
可以使用系统函数 ShowSystemAlarm。


7、如何在一个脚本中使用十六进制符号给变量赋值?

在脚本编辑器中把字符组合 "&h" 作为个十六进制常数的标识。

例如

Dim Tag_01
Tag_01 = &h45E     ' Corresponds to the decimal value "1118"


8、如何在脚本里显示或隐藏各个层级?
使用层是 WinCC (TIA Portal)  开发系统的一个功能。层只能在这里组态及显示隐藏。
这个功能在操作面板或 PC 的运行系统中不可用。所以不能用脚本显示或隐藏“层”。

解决办法
在 “ 属性>动画>可见性 ” 组态变量,根据变量值控制相关对象的显示或隐藏。
 

9、如何在脚本中合并字符串?

可以使用 “ & ” 来合并字符串:

例如  

将  "Tag_Text_01", "Tag_Text_02" 和 "Tag_Text_03" 合并成新字符串 "Tag_01"

    Dim Tag_01, Tag_Text_01, Tag_Text_02, Tag_Text_03
    Tag_01 = Tag_Text_01 & Tag_Text_02 & Tag_Text_03

注意
VB函数 CStr (Expression) 将相应的表达式转换为“字符串”类型。 这样在连接字符串转换之前可以避免运行时出现错误。
 

10、在脚本中如何在单独的字符串之间插入一个通配符(空格)?

为了在两个文本之间插入任意数量的空格,可以使用两个引号 " "。“空格”的数量取决于两个引号间的距离 "   "。

连接下一个字符需要再次使用连接操作 "&"。


例如  

将字符串 "Tag_Text_01", "Tag_Text_02" 和 "Tag_Text_03" 还有空格组合成一个新的字符串 "Tag_01"

    Dim Tag_01, Tag_Text_01, Tag_Text_02, Tag_Text_03
    Tag_01 = Tag_Text_01 & " " & Tag_Text_02 & " " & Tag_Text_03


相关产品

联系方式

  • 电  话:13922889745
  • 经理:向小姐
  • 手  机:18475208684
  • 微  信:18475208684