范文网 >资料大全 >综合资料 >脚本使用技巧

脚本使用技巧

心蛊 分享更新时间:
投诉

脚本使用技巧

显示订货号

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 命令里只要写 土灵符 即可 )