当前位置:公司首页 > 服务支持 > 热门问题 >

WinCC脚本使用技巧 (TIA Portal)

发布日期:2014-01-20 10:10 作者:天雅漫漫

关键词:WinCC脚本,使用技巧,TIA Portal,

内容摘要:
这个常用问题介绍了WinCC脚本使用技巧 (TIA Portal),一个脚本是否执行取决于使用的运行站跟操作面板,为什么一个由内部变量的“数值改变”事件触发的脚本不被执行?在内部变量“HMI

摘要: 这个常用问题介绍了WinCC脚本使用技巧 (TIA Portal)

文档类型:常问问题

产品类别:自动化系统WinCC (脚本、图形、归档、选件)WinCC (TIA Portal)

注意:一个脚本是否执行取决于使用的运行站跟操作面板。 

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

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

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

    补救
    使用和控制器通讯的外部变量。请注意,通过使用外部变量可以规避上述安全机制。这可能会导致项目运行时间的问题。
     
  2. 如何访问动态链接库(DLL)?

    在用户定义的C函数里可以调用DLL函数(DLL-动态链接库)。
    WinCC Professional V12.0 SP1 > 可视化过程 (Professional) > 系统函数和运行脚本 > 用户自定义函数 > functions创建用户定义的C函数 > 从用户自定义的C函数调用DLL函数
     
  3. 如何用VBS脚本确定鼠标当前的位置?

    为了读取当前鼠标的位置,需要访问操作系统的API(应用程序接口)。
    VBS脚本不支持通过DLL函数访问操作系统的API。
     
  4. 为什么不能在脚本里使用“MsgBox”命令?

    "MsgBox"命令不能用于 WinCC Comfort 和 WinCC Advanced 版本是由于安全的原因。 基于操作原理显示可能被忽略,比如,阻止设备的快速操作。此外,消息框可能会阻止脚本的进一步执行。

    解决办法
    另外可以使用系统函数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 V12.0 SP1 > 可视化过程 (Comfort / Advanced) > 运行脚本和系统函数 > 参考 > VB 脚本 > VBS Object Model > 属性
  9. 如何确定当前画面的编号和画面名称?

    例子 01 通过脚本的返回值输出画面的完整名称。
    画面名称: Screen_01
    脚本名称: Script_01
    脚本类型: Function
    返回值: “字符串”变量

    打开 "Script_01" 脚本

    Script_01 = HmiRuntime.BaseScreenName

    结果
    脚本返回值为 "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的元素变量(用户定义的数据类型)。

    例如
    HMI UDT名称 UDT_1
    数据类型UDT_1变量名称 Var_1
    元素名称 Element_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

联系我们

地 址:沈阳市铁西区经济技术开发区中央大街 283路公交车始发站

联系人:孟经理

电 话:13998882853

传 真:024-23988067

邮 箱:13998882853@139.com

企业简介|工程业绩|产品展示|新闻资讯|服务支持|联系我们

联系人:孟经理 电话:13998882853 E-mail:13998882853@139.com 邮政编码:110000

韦德娱乐手机版下载 辽ICP备05021705号 地址:沈阳市铁西区经济技术开发区中央大街 283路公交车始发站 Power by DedeCms