脚本使用技巧
脚本使用技巧
显示订货号
1. 为什么一个由内部变量的“数值改变”事件触发的脚本不被执行?
如果一个内部变量调用另外一个内部变量,被调用的变量又去执行一个脚本(比如,根据变量变化),此时一个安全机制会阻止这个功能被执行。
此安全功能是为了阻止连续的执行。
例如
在内部变量“HMI_Tag_01”属性下,“更改数值”事件去置位内部变量“HMI_Tag_02”中的某一位。
然后内部变量“HMI_Tag_02”的“更改数值”事件下又调用一个脚本。
结果:这个脚本不会被执行。
补救
使用和控制器通讯的外部变量。
2. 如何在脚本中访问一个数组的元素?
可以通过数组名称并指定数组区域的方法来访问数组元素-> SmartTags("数组名称")(数组区域)
例如 (和控制器通讯的数组变量)
Dim Tag_01 '脚本内部变量
Tag_01 = SmartTags("DB10_HMI_Data")(2)
本地脚本数组(只在脚本中可用)可以使用相同的方法。使用多-维数组时,可以在不同元素间加上逗号。
例如 (不和控制器通讯的数组变量)
Dim HMI_Data(10,10) '脚本内部数组变量
Dim Tag_01 '脚本内部变量
Tag_01 = HMI_Data(0, 5)
注意
当使用“控制器连接”的数值元素时,建议在脚本开始处将它们复制到“脚本内部变量”中并在下面的脚本中使用这些“内部变量”。
在脚本的结尾处必须把“内部变量”的值写回到数组元素。
3. 如何在 WinCC Comfort 和 WinCC Advanced 中如何访问动态链接库(DLL)?
不能 在 WinCC Comfort 和 WinCC Advanced 中访问动态链接库(DLL)。
4. 如何通过脚本获得当前鼠标的位置?
为了获得当前鼠标的位置,必须访问操作系统的API(应用程序接口)。
VBS不支持访问操作系统 API 的 DLLs 。
5. 为什么“MsgBox”命令无法在脚本中使用?
因为安全原因“MsgBox”命令无法在 WinCC Comfort 和 WinCC Advanced 中使用。基于操作原理显示可能被忽略,比如,阻止设备的快速操作。
6. 如何在脚本中给一个变量赋十六进制的值?
在脚本编辑器中使用前缀“&h”传送十六进制数值。
例如
Dim Tag_01
Tag_01 = &h45E '十进制数值“1118”
7. 如何在脚本中显示隐藏可用层?
使用层工作是 WinCC (TIA Portal) 开发系统的一个功能。层只能在这里组态及显示隐藏。
这个功能在操作面板或 PC 运行系统中不可用。所以不能用脚本显示或隐藏“层”。
补救
为相关对象的“属性 > 动画 > 可见性” 组态变量,根据组态变量的值来显示隐藏对象。
8. 如何在脚本中合并字符串?
可以使用“&”来合并字符串:
例如
Dim Tag_01, Tag_Text_01, Tag_Text_02, Tag_Text_03
Tag_01 = Tag_Text_01 & Tag_Text_02 & Tag_Text_03
9. 在脚本中如何在单独的字符串之间插入一个通配符(空格)?
为了在两个文本之间插入空格,可以使用两个引号 " "。
“空格”的数量取决于两个引号间的距离 " "。
连接下一个字符需要再次使用 "&"。
例子1
Dim Tag_01, Tag_Text_01, Tag_Text_02, Tag_Text_03
Tag_01 = Tag_Text_01 & " " & Tag_Text_02 & " " & Tag_Text_03
返回值: “整形”变量
打开 "Sample_01" 脚本。
Dim Result
Result = Param_01 + Parm_02
Sample_01 = Result '"Sample_01" 脚本被分配给计算结果 -> 返回值
当脚本被调用,例如通过按钮,获得保存在属性("Param_01" 和 "Param_02")下的参数 "return value",然后把可以它分配给一个变量。
《脚本使用技巧》全文内容当前网页未完全显示,剩余内容请访问下一页查看。
11. 如何通过脚本改变一条线的长度?
线对象的“高”和“宽”参数是只读的。
对于垂直或水平位置,可以使用矩形对象来替代线对象,并且可以通过脚本动态更新。
关于这个问题的更多信息可以从条目 53752382 中获得。
12. 什么原因会触发“达到最大嵌套深度”消息?
最大嵌套深度可以到达,例如,如果一个脚本被另一个“更改数值”触发的脚本回调。 在脚本回归调用情况下(脚本调用自己)这个消息也会很快出现。
HmiRuntime.ActiveScreen.ScreenItems("Circle_01").Visible=False
注意
画面中组态的对象必须使用唯一的名称。
★脚本使用技巧2017-04-26 16:04 | #2楼
1. 湖挂机如何减少路程
在神武/柳善买药再去湖里挂机,如果不用土符,要跑很长的路。可以在脚本的最后一行加上 switch("泫勃派") ,这时会先飞到泫勃,再去湖里。注意,第一次启动挂机时,如果身上的药品符合挂机条件,这时回城脚本就不会执行,仍然会跑过去,下一次自动回城就正常了。
2. 使用物品注意
目前保存物品到仓库时被保留在背包里的物品仅限于药品、回城符、地图和百宝物品等,对于商店里购买的如“悟神丹”仍然会扔到仓库里。所以,如果设定了自动使用悟神丹,并且在脚本里设定了购买悟神丹,存仓库时背包里多余的丹会扔到仓库。这样会导致仓库里悟神丹堆积。为了防止这种情况,可以在save()脚本后加上一句 take("悟神丹",2),表示从仓库中取出悟神丹直到背包里有2个,这样就等于把悟神丹扔到仓库里再取出来。下面例举一个在湖里挂机脚本,实现去神武买药,去柳正买悟神丹以及从仓库取五色的功能:
sl-ee-p(3)
switch("柳正关")
moveby("萧春水")
talk("萧春水",1)
sell()
closetalk()
moveby("红凤凰")
talk("红凤凰",1)
save()
take("悟神丹",2)
take("五色神丹",2)
closetalk()
moveby("萧春水")
talk("萧春水",1)
buy("回城符(柳正关)",4)
buy("悟神丹",2)
closetalk()
switch("神武门")
moveby("杨不凡")
talk("杨不凡",1)
buy("金创药(特)",300)
buy("雪原参",100)
buy("回城符(神武门)",4)
closetalk()
switch("泫勃派")
注:如果使用土符,将最后一行删掉,改成 use("土灵符") 。悟神丹和五色具体要取出几个根据自己买一次药能挂多长时间决定。
3. 配戴出尘戒指的方法
注意,出尘戒指必须配戴在左手。 物品存仓库之前,取出尘戒1个,使用出尘戒, 然后再保存物品。这样的话即使手上已经有出尘戒,也只是替换一下,然后再把多余的出尘戒存到仓库。见例子:
sl-ee-p(3)
switch("松月关")
moveby("风三娘")
talk("风三娘",1)
sell()
closetalk()
moveby("木平之")
talk("木平之",1)
take("出尘戒",1)
use("出尘戒")
save()
closetalk()
moveby("风三娘")
talk("风三娘",1)
buy("回城符(松月关)",2)
buy("金创药(特)",400)
buy("益元参",200)
closetalk()
use("土灵符")
注:只要是可以能存仓库的物品,都可以使用 take 取出来,同样,只要是可以使用的物品,都可以用 use 使用。除了土灵符,使用 use 命令操作物品时必须写全名。( 土灵符的全名其实是 土灵符(10) 和 土灵符(30),但在 use 命令里只要写 土灵符 即可 )