脚本使用技巧.docx
- 文档编号:24565377
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:7
- 大小:20.93KB
脚本使用技巧.docx
《脚本使用技巧.docx》由会员分享,可在线阅读,更多相关《脚本使用技巧.docx(7页珍藏版)》请在冰豆网上搜索。
脚本使用技巧
脚本使用技巧
隐藏订货号显示订货号订货号:
1.为什么一个由内部变量的“数值改变”事件触发的脚本不被执行?
如果一个内部变量调用另外一个内部变量,被调用的变量又去执行一个脚本(比如,根据变量变化),此时一个安全机制会阻止这个功能被执行。
此安全功能是为了阻止连续的执行。
例如
在内部变量“HMI_Tag_01”属性下,“更改数值”事件去置位内部变量“HMI_Tag_02”中的某一位。
然后内部变量“HMI_Tag_02”的“更改数值”事件下又调用一个脚本。
结果:
这个脚本不会被执行。
补救
使用和控制器通讯的外部变量。
2.如何在脚本中访问一个数组的元素?
可以通过数组名称并指定数组区域的方法来访问数组元素->SmartTags("数组名称")(数组区域)
例如 (和控制器通讯的数组变量)
DimTag_01 '脚本内部变量
Tag_01=SmartTags("DB10_HMI_Data")
(2)
本地脚本数组(只在脚本中可用)可以使用相同的方法。
使用多维数组时,可以在不同元素间加上逗号。
例如 (不和控制器通讯的数组变量)
DimHMI_Data(10,10) '脚本内部数组变量
DimTag_01 '脚本内部变量
Tag_01=HMI_Data(0,5)
注意
当使用“控制器连接”的数值元素时,建议在脚本开始处将它们复制到“脚本内部变量”中并在下面的脚本中使用这些“内部变量”。
在脚本的结尾处必须把“内部变量”的值写回到数组元素。
3.如何在WinCCComfort和WinCCAdvanced中如何访问动态链接库(DLL)?
不能在WinCCComfort和WinCCAdvanced中访问动态链接库(DLL)。
4.如何通过脚本获得当前鼠标的位置?
为了获得当前鼠标的位置,必须访问操作系统的API(应用程序接口)。
VBS不支持访问操作系统API的DLLs。
5.为什么“MsgBox”命令无法在脚本中使用?
因为安全原因“MsgBox”命令无法在WinCCComfort和WinCCAdvanced中使用。
基于操作原理显示可能被忽略,比如,阻止设备的快速操作。
6.如何在脚本中给一个变量赋十六进制的值?
在脚本编辑器中使用前缀“&h”传送十六进制数值。
例如
DimTag_01
Tag_01=&h45E '十进制数值“1118”
7.如何在脚本中显示隐藏可用层?
使用层工作是WinCC(TIAPortal) 开发系统的一个功能。
层只能在这里组态及显示隐藏。
这个功能在操作面板或PC运行系统中不可用。
所以不能用脚本显示或隐藏“层”。
补救
为相关对象的“属性>动画>可见性”组态变量,根据组态变量的值来显示隐藏对象。
8.如何在脚本中合并字符串?
可以使用“&”来合并字符串:
例如
DimTag_01,Tag_Text_01,Tag_Text_02,Tag_Text_03
Tag_01=Tag_Text_01 & Tag_Text_02 & Tag_Text_03
9.在脚本中如何在单独的字符串之间插入一个通配符(空格)?
为了在两个文本之间插入空格,可以使用两个引号""。
“空格”的数量取决于两个引号间的距离" "。
连接下一个字符需要再次使用"&"。
例子1
DimTag_01,Tag_Text_01,Tag_Text_02,Tag_Text_03
Tag_01=Tag_Text_01 & "" & Tag_Text_02 & "" & Tag_Text_03
例子2
在例子2中使用脚本输出一条系统消息,其中插入一个控制变量在文本中作为“机器索引”。
ShowSystemAlarm"Machine"&"_"&SmartTags("Tag_MachineIndex")&""&"mustbechecked"
事件
Machine_15mustbechecked
10.如何组态脚本返回值?
为了能有返回值脚本必须组态为“Function”类型。
可以在“属性>常规>设置”栏中指定脚本类型。
在下拉列表中选择“Function”作为类型。
在“参数”菜单项中通过指定变量可以把数值传到脚本中。
为了组态一个返回值需要为当前脚本分配变量的值或事件。
脚本名称:
Sample_01
脚本类型:
Function
参数:
Param_01,Param_02
返回值:
“整形”变量
打开"Sample_01"脚本。
DimResult
Result=Param_01+Parm_02
Sample_01=Result
'"Sample_01"脚本被分配给计算结果->返回值
当脚本被调用,例如通过按钮,获得保存在属性("Param_01"和"Param_02")下的参数"returnvalue",然后把可以它分配给一个变量。
1.如何通过脚本改变一条线的长度?
线对象的“高”和“宽”参数是只读的。
对于垂直或水平位置,可以使用矩形对象来替代线对象,并且可以通过脚本动态更新。
关于这个问题的更多信息可以从条目53752382中获得。
2.什么原因会触发“达到最大嵌套深度”消息?
最大嵌套深度可以到达,例如,如果一个脚本被另一个“更改数值”触发的脚本回调。
在脚本回归调用情况下(脚本调用自己)这个消息也会很快出现。
补救:
检查脚本,如果需要,减少脚本嵌套。
3.如何确定当前画面的编号和画面名称?
例子01通过脚本的返回值输出画面的完整名称。
画面名称:
Screen_01
脚本名称:
Script_01
脚本类型:
Function
返回值:
“字符串”变量
打开"Script_01"脚本
DimObj,StrScreenName
SetObj=HmiRuntime
StrScreenName=Obj.BaseScreenName
Script_01=StrScreenName '返回值'
结果
名称返回值为"Screen_01"
例程02画面名称“split”。
只有分隔符"_"之前的字符/名称作为脚本返回值输出。
画面名称:
02_MachineData
脚本名称:
Script_02
脚本类型:
Function
返回值:
“字符串”变量
打开"Script_02"脚本
DimObj,StrScreenNumber
SetObj=HmiRuntime
StrScreenNumber=Split(Obj.BaseScreenName,"_")
Script_02=StrScreenNumber(0) '返回值'
结果
名称返回值为“02”。
注意
不能使用脚本通过画面有关的“属性”直接读取画面名称/编号。
也可以使用“画面编号”区域指针。
有关区域指针的信息可以从WinCC(TIAPortal)系统手册的"画面编号区域指针"章节中获得。
.
14.脚本中如何使用指针变量?
脚本中不能使用指针变量。
15.脚本中如何使用结构变量?
脚本中不能使用结构变量。
1.H如何在脚本中保存变量信息以便在下次调用脚本使用还可以使用它?
在脚本结尾保留的信息必须保存在全局变量中。
下表给出了一个概述。
说明
可用性
脚本中
脚本t
WinCC(TIAPortal)项目
控制器
外部变量
X
X
X
全局
内部变量
X
X
--
脚本变量
X
-
--
本地
17.如何在脚本中更改文本域中的文本?
可以使用脚本更改文本域中的文本。
注意这个改变的文本只是“暂时”的。
画面切换后会被覆盖。
画面名称:
MachineData
脚本类型:
Sub
文本域对象名称:
Text_Field_01
18.打开脚本
Dimobj
Setobj=HmiRuntime.Screens("MachineData").ScreenItems("Text_Field_01")
obj.Text="NewText"
18.如何在脚本中从密码列表或用户视图中读取用户密码?
由于安全原因这个功能在WinCC(TIAPortal)中不能实现。
19.如何通过脚本访问模板或画面中的对象?
只能通过“ActiveScreen”功能访问画面中的对象。
本例中,画面中组态了一个名称为“Circle_01”的圆。
点击画面中的一个按钮可以“隐藏”这个圆。
注意这个改变的文本只是“暂时”的。
画面切换后会返回到原来存储的视图。
脚本类型:
Sub
圆对象名称:
Circle_01
打开脚本
HmiRuntime.ActiveScreen.ScreenItems("Circle_01").Visible=False
注意
画面中组态的对象必须使用唯一的名称。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 脚本 使用 技巧