WinCC脚本使用技巧 (TIA Portal)

这个常见问题对WinCC Comfort 和 WinCC Advanced 中VB脚本编程语言的使用技巧作出了响应。

WinCC Comfort/Advanced 脚本语言
在WinCC Comfort/Advanced中使用VB脚本
WinCC Advanced V13.0 手册 (条目号: 91479053)包含相关信息如下:

  • "可视化过程 > 使用系统函数和运行系统脚本> 参考 > VB脚本"
  • "可视化过程 >使用系统函数和运行系统脚本 >示例"

一个脚本是否执行取决于使用的运行站或操作员面板。

在以上提及到的手册中关于设备相关性的更多的信息可以参看

  • "可视化过程 >使用系统函数和运行系统脚本> 参考 >函数列表 > 设备相关"
  1. 为什么一个由内部变量的“数值改变”事件触发的脚本不被执行?

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

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

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

  2. 如何访问动态链接库(DLL)?

    WinCC Professional在用户定义的C函数里可以调用DLL函数(DLL=动态链接库)。
    WinCC Professional V13.0 >可视化过程 >使用系统函数和运行系统脚本 >用户自定义函数 > 创建用户定义的C函数 > 从用户自定义的C函数调用DLL函数 .

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

    为了读取当前鼠标的位置,需要访问操作系统的API(应用程序接口)。
    VBS脚本不支持通过DLL访问操作系统的API。

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

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

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

  5. 如何在脚本里显示或隐藏各个层级?

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

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

  6. 如何在脚本中合并字符串?

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

    例如
    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)将相应的表达式转换为“字符串”类型。这样在连接字符串转换之前可以避免运行时出现错误。

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

    例如,为了在两个文本之间插入空格,可以使用两个引号 " "
    “空格”的数量取决于两个引号间的距离 " "
    连接下一个字符需要再次使用 "&"。

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

  8. 如何在运行时改变对象的属性(颜色,长度等)?

    如何通过脚本获取对象的属性可以在手册里得到:

    WinCC Comfort/Advanced V13.0 SP1 > 可视化过程 (Comfort / Advanced) >使用系统函数和运行系统脚本 > 参考 > VB 脚本 > VBS Object Model > 属性

  9. 如何确定当前画面的编号和画面名称?

    例子 01 通过脚本的返回值输出画面的完整名称。

    画面名称: Screen_01
    脚本名称: Script_01
    脚本类型: Function
    返回值: “字符串”变量

    创建"Script_01" 脚本

    函数返回值的变量名称必须 与函数名称相同. (1)
    设置脚本类型为 "函数". (2)

    Script_01 = HmiRuntime.BaseScreenName

    WinCC脚本使用技巧 (TIA Portal)

    图. 01

    结果

    脚本返回值为 "Screen_01"

    例程 02 画面名称“split”。只有分隔符 "_" 之前的字符/名称作为脚本返回值输出。

    画面名称: 02_MachineData
    脚本名称: Script_02
    脚本类型: Function
    返回值: "字符串" 变量

    创建"Script_02"脚本

    Dim StrScreenNumber
    StrScreenNumber = Split(HmiRuntime.BaseScreenName, "_")
    Script_02 = StrScreenNumber(0) '返回值

    结果
    脚本返回值为 "02"

    注意
    不能使用脚本通过相关画面的“属性”直接读取画面名称/编号。
    也可以使用“画面编号”区域指针。

  10. 如何在脚本里使用HMI UDT 变量?

    可以使用"SmartTags"访问数据类型是HMI UDTs的元素变量(用户定义的数据类型)。

    例如

    Element_1

    HMI UDT名称 UDT_1
    数据类型UDT_1的变量名称 Var_1
    元素名称

    脚本内容::

    SmartTags("Var_1.Element_1")

    注意
    这适用于在项目中已创建库类型 HMI UDT的实例。不能直接访问库类型。

  11. 如何在脚本中从密码列表或用户视图中读取用户密码?

    由于安全原因这个功能在 WinCC (TIA Portal) 中不能实现。

  12. 如何在运行时选择一个对象(例如输入输出域)?

    可以对一个对象使用“激活”功能。

    画面名称 Screen_1
    脚本类型 Sub
    IO域的对象名称 IOField_1

    脚本内容:

    HMIRuntime.Screens("Screen_1").ScreenItems("IOField_1").Activate

更多信息
下面的常见问题对 WinCC Advanced中关于脚本的各种问题进行了解答。.

  • " 在 WinCC (TIA Portal)中是有哪些VBS信息和 VBS编程帮助?"
    条目号: 59885894
  • "在 WinCC Runtime Professional V11 和更高的版本中用新变量分离趋势画面中的趋势如何使用 C或 VB脚本来实现?"
    条目号: 55741262
  • "如何在 WinCC Runtime Advanced版本中使用脚本来访问SQL数据库?"
    条目号: 61883659
  • "在 SIMATIC WinCC (TIA Portal)精致面板中如何使用脚本向文件写数据或从文件读取数据?"
    条目号: 59604194
  • "如何在WinCC Comfort 和WinCC Advanced中使用脚本来组态动态对象?"
    条目号: 53752382

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc322121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论