本部分包含WinCC中与以下主题相关的VBS使用示例。
1)访问图形编辑器中的对象(例如颜色或文本更改)。
2)设置上述对象的RGB颜色。
4)禁用运行系统。
5)启动外部程序。
6)对画面更改进行全局组态(通过全局脚本)。
7)通过属性组态画面更改。
8)对诊断输出使用跟踪。
9)设置变量的值。
10)读取变量的值。
11)检查对变量的读取/写入动作是否成功。
12)根据不同写入类型设置变量的值。
【例10-2】访问图形编辑器中的对象
可以使用VBS WinCC对所有图形编辑器对象进行访问,以使图形运行环境动态化。 根据变量或周期性(例如闪烁)情况,可在执行操作(例如在按钮上单击鼠标)时,使图形对象动态化。
在以下示例中,每次单击鼠标时,运行系统中圆的半径都会设置为20。
【例10-3】定义对象的颜色 图形对象的颜色通过RGB值(红/绿/蓝)定义,可以设置或读出图形对象的颜色值。 以下示例将“ScreenWindow1”的填充颜色定义为蓝色。
【例10-4】如何组态语言切换
可使用VBS切换WinCC的运行系统语言。最常用的是包含相应语言代码的按钮,这些按钮位于项目的起始页上。
在VBS中通过使用国家代码(例如,1031表示德语-默认,1033表示英语-美国等)指定运行系统语言。有关所有国家代码的汇总,请参见标题为“区域方案ID(LCID)图”的主题下的VBS基本知识。
使用按钮上的“Mouse click”事件创建VBS动作,输入以下动作代码,将运行系统语言切换为德语。
【例10-5】禁用运行系统
可以使用VBS终止WinCC运行系统,例如,通过鼠标单击,依靠变量值或其他事件(例如,启动运行系统时密码的多次错误输入)。
以下示例会终止WinCC运行系统。
【例10-6】全局组态画面
VBS可用于启动全局画面更改,因而会在分布式系统的客户机上显示服务器中的画面。为此,服务器的前缀必须位于目标画面之前。
为按钮组态以下画面更改代码,例如:
【例10-7】通过属性更改画面组态
如果在组态中使用分区画面(例如,在用户界面的基本画面标题和操作栏中和用于实际画面显示的嵌入画面窗口中),应使用画面窗口的属性更改组态画面。
为了显示其他画面,必须更改“ScreenName”画面窗口的属性。必须在同一画面中对动作和画面窗口进行组态。
在以下示例中,执行动作时“ScreenWindow”画面窗口中会显示“test.pdl”画面。
【例10-8】通过Trace组态诊断输出
如果已将GSC诊断窗口插入画面中,则可以使用Trace命令在运行系统的诊断窗口中显示诊断输出。
GSC诊断按调用的先后顺序发出包含在动作中的Trace方法。这也适用于在动作中调用过程中的Trace指令。Trace指令的有目的执行(例如针对变量值的输出)可实现对动作进度以及在动作中调用的过程的跟踪。Trace指令以“HMIRuntime.Trace(<Ausgabe>)”形式输入。
GSC诊断显示来自C和VBS的跟踪输出。
以下示例将文本写入诊断窗口中:
【例10-9】写入变量值
可以用VBS将变量值写入PLC中,例如通过在按钮上单击鼠标来指定设定值,或设置内部变量值以触发其他动作。
下面涉及和介绍了多种写入形式。
1)在以下示例中,将值写入“Tag1”变量内。
这是最简单的写入形式,因为不会生成任何对象引用。
2)通过对象引用写入。在以下示例中,将创建变量对象的本地副本并将值写入“Tag1”内。
通过利用引用,可以在写入之前使用变量对象。可以读取变量值,进行计算,并再次写入:
3)同时写入。通常,待写入的值会传送到变量管理,然后重新开始对动作进行处理。但某些情况下,必须确保实际写入了值之后,才能重新开始对动作进行处理。
此类写入通过将附加的可选参数指定为值1来实现。
或
4)通过状态处理写入。为了确保成功写入值,必须在写入过程之后执行错误检查或确定变量状态。
为此,执行写入操作后需检查“LastError”属性。测试成功(即成功放置任务)后,即检查变量状态。
对于写入任务,过程的当前状态尚不确定。要确定该状态,必须读取变量。读取过程之后,“质量代码”属性中指定的值会提供变量状态指示,如有必要,还会涉及发生故障的AS连接。
在以下示例中,将写入“Tag1”变量。如果写入期间出现错误,全局脚本诊断窗口中会显示错误值和错误描述。最后,检查质量代码,如果质量代码不是OK(0x80),便在诊断窗口中显示该代码。
【例10-10】读取变量值
可以用VBS读取变量值并对其执行进一步的处理,这样便可以执行诸如通过在按钮上单击鼠标来获取系统状态信息或执行计算的操作。
下面涉及和介绍了多种读取形式。
(1)简单读取
在以下示例中,将读取“Tag1”的值并在全局脚本诊断窗口中显示该值:
这是最简单的读取形式,因为不会生成任何对象引用。
1)通过对象引用读取。在以下示例中,将生成变量对象的本地副本,读取该变量值并在全局脚本诊断窗口中显示该值:
2)通过利用引用可以使用变量对象。可以读取变量值,进行计算,并再次写入:
使用Read方法将已读取的过程变量添加到图像,从该刻起这些变量会通过AS周期性请求。如果该变量已存在于图像中,则会返回其中包含的值。(www.xing528.com)
对于关闭画面,变量动作会再次结束。
(2)直接读取
通常,变量值从变量图像读取。但在某些情况下,例如为了同步快速过程,可能需要直接从AS读取变量值。
如果将读取过程的可选参数设置为1,则不会周期性地登录变量,而是通过AS单次请求该值。
(3)通过状态处理读取
为了确保值有效,应在读取之后进行检查。这通过控制质量代码来执行。
在以下示例中,将读取“myWord”变量,然后检查QualityCode。如果质量代码未对应OK(0x80),则在全局脚本诊断窗口中显示LastError、ErrorDescription和QualityCode 属性。
【例10-11】写入对象属性
VBS可实现对所有图形编辑器画面对象的属性的访问。运行期间可以读出各个属性以便进行修改或更改。以下示例说明了各种访问形式的程序。
(1)属性的简单设置
在以下示例中,画面中包含的“Rectangle1”对象的背景颜色被设置为红色:
这是最简单的写入形式,因为不会生成任何对象引用。
(2)通过对象引用设置属性
在以下示例中,将创建对画面中所包含“Rectangle1”对象的引用,并使用VBS标准函数RGB()将背景设置为红色:
必须更改多个对象属性时,引用非常有用。使用智能感知时,该过程即会列出所有对象属性。
(3)通过画面窗口设置属性
图形编辑器中的VBS提供两种可行的画面超越访问方法:
使用“ScreenItems”:通过画面窗口的Screen对象;
使用“HMIRuntime.Screens”:通过基本画面。
1)通过画面窗口引用。以下示例中,在从属画面窗口中更改矩形的颜色。相应脚本在画面窗口“ScreenWindow1”所处的画面“BaseScreen”中执行。此画面窗口会显示包含名称为“Rectangle1”的“Rectangle”类型对象的画面。
2)通过基本画面引用。可通过HMIRuntime.Screens引用具有待修改对象的画面。该画面相对于基本画面的规范通过以下访问代码进行定义:
在以下示例中,将创建对“Rectangle1”画面中包含的“Screen2”对象的引用,并将背景颜色设置为红色。
这种情况下,画面“Screen2”位于“Screen1”中。“Screen1”显示在基本画面“BaseScreen”中。
无需指定画面名称。可以通过画面窗口名称唯一地访问某一画面。因此,只需指定画面窗口的名称,如下示例所示:
这种访问类型可实现在不同画面中访问画面窗口中的对象。
(4)利用返回值使属性动态化
基于属性的动作不仅能由事件触发或周期性触发,而且能直接通过动作使属性动态化。
在以下示例中,通过返回值使对象的背景颜色动态化。例如,传送的值可能来自PLC 中事件的评估,并用于运行状态的图形显示:
【例10-12】在服务器上启动操作(记录对象)
在多用户项目中,Logging对象目前仅作用于服务器上。以下示例说明了如何通过客户机启动服务器上的动作,以及如何在客户机上相应地交换和删除归档段。
该示例显示的是使用控制变量启动的全局动作。控制变量的内容决定调用“Restore”方法还是“Remove”方法。动作结束时,控制变量设置为“0”。
查询会阻止在客户机计算机上启动动作。
路径和时间段由内部变量传递。
路径信息还可能包含网络版本。因此,不能将要交换的归档段存储在本地服务器上。 但必须保证服务器可以直接访问该路径。
完成本示例要执行的操作如下:
在WinCC项目管理器中创建以下内部变量并将其设为遵循项目范围内的更新:
1)StartLogging(无符号8位值)。
2)SourcePath(文本变量8位字符集)。
3)TimeFrom(文本变量8位字符集)。
4)TimeTo(文本变量8位字符集)。
5)RetVal(带符号32位值)。
创建全局VBS动作,输入变量“StartLogging”作为周期为“发生更改时”的变量触发器。
将以下脚本复制到动作中:
可以使用如下动作在客户机上启动动作。请注意,必须在设置控制变量之前写入参数。
【例10-13】调用ActiveX控件的方法
以下示例说明了如何调用嵌入在WinCC画面中的ActiveX控件的方法和属性。
(1)WinCC函数趋势控件
本示例将描述抛物线的值用来填充函数趋势控件“Control1”的“Trend 1”。
要通过VBS使趋势动态化,在“数据供应(Data Supply)”下“数据连接(Data Connection)”选项卡上的控件组态对话框中设置“0-无(0-None)”。
(2)通过数组提供值的WinCC函数趋势控件
在本示例中,给函数趋势控件“Control1”的“Trend 1”提供数组中存储的值。
要通过VBS使趋势动态化,在“数据供应(Data Supply)”下“数据连接(Data Connection)”选项卡上的控件组态对话框中设置“0-无(0-None)”。
(3)WinCC函数趋势控件(WinCC V7之前的版本)
本示例将使用描述抛物线的值填充名为“Control1”的函数趋势控件。
(4)通过数组提供值的WinCC函数趋势控件(WinCC V7之前的版本)
在本示例中,给名为“Control1”的函数趋势控件提供100对值。为正确传送各对值,不能直接执行传送(例如在“dblAxisXY”中),而应通过中间变量(例如“varTemp”)进行传送。
(5)Microsoft Web浏览器
本示例用于控制Microsoft Web浏览器。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。