1.实例:访问图形编辑器中的对象可以使用VBSWinCC对所有图形编辑器对象进行访问,以使图形运行环境动态化。根据变量或周期性(例如闪烁)情况,可在执行操作(例如在按钮上单击鼠标)时使图形对象动态化。以下示例说明如何在鼠标单击后更改图形对象。步骤在以下示例中,每次单击鼠标时运行系统中圆的半径都会设置为20:DimobjCircleSetobjCircle=ScreenItems(Circle1)objCircle.Radius=202.实例:定义对象的颜图形对象的颜色通过RGB值(红/绿/蓝)定义。可以设置或读出图形对象的颜色值。步骤以下示例将“ScreenWindow1”的填充颜色定义为蓝色:DimobjScreenSetobjScreen=HMIRuntime.Screens(ScreenWindow1)objScreen.FillStyle=131075objScreen.FillColor=RGB(0,0,255)3.例:如何组态语言切换可使用VBS切换WinCC的运行系统语言。最常用的是包含相应语言代码的按钮,这些按钮位于项目的起始页上。在VBS中通过使用国家代码(例如,1031表示德语-默认,1033表示英语-美国等)指定运行系统语言。有关所有国家代码的汇总,请参见标题为“区域方案ID(LCID)图”的主题下的VBScript基本知识。步骤:使用按钮上的“Mouseclick”事件创建VBS动作,输入以下动作代码将运行系统语言切换为德语:HMIRuntime.Language=10314.实例:禁用运行系统简介可以使用VBS终止WinCC运行系统,例如,通过鼠标单击,依靠变量值或其它事件(例如,启动运行系统时密码的多次错误输入)。要执行的操作以下示例会终止WinCC运行系统:HMIRuntime.Stop5.实例:全局组态画面更改简介VBS可用于启动全局画面更改,因而会在分布式系统的客户机上显示服务器中的画面。为此,服务器的服务器前缀必须位于目标画面之前。要执行的操作为按钮组态以下画面更改代码,例如:HMIRuntime.BaseScreenName=Serverprefix::Newscreen6.实例:通过属性组态画面更改简介如果在组态中使用分区画面(例如,在用户界面的基本画面标题和操作栏中和用于实际画面显示的嵌入画面窗口中),应使用画面窗口的属性组态画面更改。为了显示其它画面,必须更改“ScreenName”画面窗口的属性。必须在同一画面中对动作和画面窗口进行组态。要执行的操作在以下示例中,执行动作时“ScreenWindow”画面窗口中会显示“test.pdl”画面:DimobjScrWindowSetobjScrWindow=ScreenItems(ScreenWindow)objScrWindow.ScreenName=test7.实例:通过Trace组态诊断输出简介如果已将GSC诊断窗口插入画面中,则可以使用Trace命令在运行系统的诊断窗口中显示诊断输出。GSC诊断按调用的先后顺序发出包含在动作中的Trace方法。这也适用于在动作中调用的过程中的Trace指令。Trace指令的有目的执行(例如针对变量值的输出)可实现对动作进度以及在动作中调用的过程的跟踪。Trace指令以“HMIRuntime.Trace(Ausgabe)”形式输入。GSC诊断显示来自C和VBS的跟踪输出。要执行的操作以下示例将文本写入诊断窗口中:HMIRuntime.TraceCustomizederrormessage8.实例:写入变量值可以用VBS将变量值写入PLC中,例如通过在按钮上单击鼠标来指定设定值,或设置内部变量值,以触发其它动作。下面涉及和介绍了多种写入变型。1)简单写入在以下示例中,将值写入“Tag1”变量内:HMIRuntime.Tags(Tag1).Write6这是最简单的写入形式,因为不会生成任何对象引用。2)通过对象引用写入在以下示例中,将创建变量对象的本地副本并将值写入“Tag1”内:DimobjTagSetobjTag=HMIRuntime.Tags(Tag1)objTag.Write73)通过利用引用,可以在写入之前使用变量对象。可以读取变量值,进行计算,并再次写入:DimobjTagSetobjTag=HMIRuntime.Tags(Tag1)objTag.ReadobjTag.Value=objTag.Value+1objTag.Write4)同时写入通常,待写入的值会传送到变量管理,然后重新开始对动作进行处理。但某些情况下,必须确保实际写入了值之后才能重新开始对动作进行处理。此类写入通过将附加的可选参数指定为值1来实现:DimobjTagSetobjTag=HMIRuntime.Tags(Tag1)objTag.Value=8objTag.Write,1说明请注意,这种调用比标准调用使用的时间要长。除此之外,持续时间还取决于通道和AS。这类写入遵从C脚本中的SetTagXXXWait()调用5)通过状态处理写入为了确保成功写入值,必须在写入过程之后执行错误检查或确定变量状态。为此,执行写入操作后需检查“LastError”属性。测试成功(即成功放置任务)后,即检查变量状态。对于写入任务,过程的当前状态尚不确定。要确定该状态,必须读取变量。读取过程之后“质量代码”属性中指定的值会提供变量状态指示,如有必要,还会涉及发生故障的AS连接。在以下示例中,将写入“Tag1”变量。如果写入期间出现错误,全局脚本诊断窗口中会显示错误值和错误描述。最后,检查质量代码。如果质量代码不是OK(0x80),便在诊断窗口中显示该代码DimobjTagSetobjTag=HMIRuntime.Tags(Tag1)objTag.Write9If0objTag.LastErrorThenHMIRuntime.TraceError:&objTag.LastError&vbCrLf&ErrorDescription:&objTag.ErrorDescription&vbCrLfElseobjTag.ReadIf&H80objTag.QualityCodeThenHMIRuntime.TraceQualityCode:0x&Hex(objTag.QualityCode)&vbCrLfEndIfEndIf说明写入变量后,由于不知道哪一质量代码在过程中用于管理变量,因此局部变量对象的QualityCode属性会设置为“BAD已不能用”。9.实例:如何读取变量值简介可以用VBS读取变量值并对其执行进一步的处理。这样便可以执行诸如通过在按钮上单击鼠标来获取系统状态信息或执行计算的操作。下面涉及和介绍了多种读取变型。1)简单读取在以下示例中,将读取“Tag1”的值并在全局脚本诊断窗口中显示该值:HMIRuntime.TraceValue:&HMIRuntime.Tags(Tag1).Read&vbCrLf这是最简单的读取形式,因为不会生成任何对象引用。2)通过对象引用读取在以下示例中,将生成变量对象的本地副本,读取该变量值并在全局脚本诊断窗口中显示该值:DimobjTagSetobjTag=HMIRuntime.Tags(Tag1)HMIRuntime.TraceValue:&objTag.Read&vbCrLf通过利用引用可以使用变量对象。可以读取变量值,进行计算,并再次写入:DimobjTagSetobjTag=HMIRuntime.Tags(Tag1)objTag.ReadobjTag.Value=objTag.Value+1objTag.Write使用Read方法将已读取的过程变量添加到图像,从该刻起这些变量会通过AS周期性请求。如果该变量已存在于图像中,则会返回其中包含的值。对于关闭画面,变量动作会再次结束。说明如果全局脚本动作中请求变量,则在进入WinCC运行系统的整个过程中,该变量保持已注册状态3)直接读取通常,变量值从变量图像读取。但在某些情况下,例如为了同步快速过程,可能需要直接从AS读取变量值。如果将读取过程的可选参数设置为1,则不会周期性地登录变量,而是通过AS单次请求该值。DimobjTagSetobjTag=HMIRuntime.Tags(Tag1)HMIRuntime.TraceValue:&objTag.Read(1)&vbCrLf说明请注意,这种调用比标准调用使用的时间要长。除此之外,持续时间还取决于通道和AS。在执行周期性C动作的情况下,必须避免该类调用,因为这是引起性能问题的主要原因。该类读取过程相当于C脚本中的GetTagXXXWait()调用。4)通过状态处理读取为了确保值有效,应在读取之后进行检查。这通过控制质量代码来执行。在以下示例中,将读取“myWord”变量,然后检查QualityCode。如果质量代码未对应OK(0x80),则在全局脚本诊断窗口中显示LastError、ErrorDescription和QualityCode属性。DimobjTagSetobjTag=HMIRuntime.Tags(Tag1)objTag.ReadIf&H80objTag.QualityCodeThenHMIRuntime.TraceError:&objTag.LastError&vbCrLf&ErrorDescription:&objTag.ErrorDescription&vbCrLf&QualityCode:0x&Hex(objTag.QualityCode)&vbCrLfElseHMIRuntime.TraceValue:&objTag.Value&vbCrLfEndIf说明如果读取期间出现错误,则QualityCode会设置为BADNON-SPECIFIC。因此,只需在读取之后检查1)示例:写入对象属性VBS可实现对所有图形编辑器画面对象的属性的访问。运行期间可以读出各个属性以便进行修改或更改。以下示例说明了各种访问形式。1)属性的简单设置在以下示例中,画面中包含的“Rectangle1”对象的背景颜色被设置为红色ScreenItems(Rectangle1).BackColor=RGB(255,0,0)这是最简单的写入形式,因为不会生成任何对象引用说明如果不通过对象引用完成操作,则智能感知中只提供标准属性。本示例中使用的表达式形式仅适用于图形编辑器。对于全局脚本中的模拟动作,应使用HMIRuntime对象访问相应对象2)通过对象引用设置属性在以下示例中,将创建对画面中所包含“Rectangle1”对象的引用,并使用VBS标准函数RGB()将背景设置为红色:DimobjRectangleSetobjRectangle=ScreenItems(Rectangle1)objRectangle.BackColor=RGB(255,0,0)必须更改多个对象属性时,引用非常有用。使用智能感知时,该过程即会列出所有对象属性。说明本示例中使用的表达式形式仅适用于图形编辑器。对于全局脚本中的模拟动作,应使用HMIRuntime对象访问相应对象3)通过画面窗口设置属性图形编辑器中的VBS提供两种可行的画面超越访问方法:使用“ScreenItems”通过画面窗口的Screen对象使用“HMIRuntime.Screens”通过基本画面通过画面窗口引用以下示例中,在从属画面窗口中更改矩形的颜色。相应脚本在画面窗口“ScreenWindow1”所处的画面“BaseScreen”中执行。此画面窗口会显示包含名称为“Rectangle1”的“Rectangle”类型对象的画面。SubOnLButtonUp(ByValItem,ByValFlags,ByValx,ByValy)DimobjRectangleSetobjRectangle=ScreenItems(ScreenWindow1).Screen.ScreenItems(Rectangle1)objRectangle.BackColo