WinCC脚本使用技巧 (TIA Portal)

已锁定

焕东

  • 帖子

    73
  • 精华

    0
  • 被关注

    42

论坛等级:侠客

注册时间:2011-05-02

普通 普通 如何晋级?

WinCC脚本使用技巧 (TIA Portal)

4143

0

2017-08-01 10:33:18

               焕东分享

           希望大家喜欢

 

 

注意 一个脚本是否执行取决于使用的运行站跟操作面板。 本手册包含相关信息如下: ......

 

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

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

·         "可视化过程 > 系统函数和运行脚本> 参考 > VB脚本"

·         "可视化过程 > 系统函数和运行脚本 > 事例"

一个脚本是否执行取决于使用的运行站或操作员面板。
本手册包含更多关于设备的信息如下:

·         "可视化过程 > 系统函数和运行脚本 > 参考 >函数列表 > 设备管理 "

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

   

返回值:

   

“字符串”变量

   

10.     打开 "Script_01" 脚本

11.     Script_01 = HmiRuntime.BaseScreenName

12.     图. 01

13.      

14.     结果

15.     脚本返回值为 "Screen_01"

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

画面名称:

   

02_MachineData

   

脚本名称:

   

Script_02

   

脚本类型:

   

Function

   

返回值:

   

 "字符串" 变量

   

17.    


18.     打开 "Script_02"脚本

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

结果
脚本返回值为 "02"

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

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

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

例如

HMI UDT名称

   

UDT_1

   

数据类型UDT_1变量名称

   

Var_1

   

元素名称

   

Element_1

   

20.     SmartTags("Var_1.Element_1")

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

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

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

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

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

画面名称

   

Screen_1

   

脚本类型

   

Sub

   

IO域的对象名称

   

IOField_1

   

24.     打开脚本。

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

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

·         " 在 WinCC (TIA Portal)中是否有VBS信息和 VBS编程帮助?"
Entry ID: !59885894!

·         "在 WinCC Runtime Professional V11 和更高的版本中用新变量分离趋势画面中的趋势如何使用 C或 VB脚本来实现?"
Entry ID: !55741262!

·         "如何在 WinCC Runtime Advanced版本中使用脚本来访问SQL数据库?"
Entry ID: !61883659!

·         "在 SIMATIC WinCC (TIA Portal)精致面板中如何使用脚本给文件写数据或从文件读取数据?"
Entry ID: !59604194!

·         "如何在WinCC Comfort a和WinCC Advanced中使用脚本来组态动态对象?"
Entry ID: !53752382!

 


WinCC脚本使用技巧 (TIA Portal) 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有30994条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。