WinCCVbs中文手册.docx
- 文档编号:9233283
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:29
- 大小:20.83KB
WinCCVbs中文手册.docx
《WinCCVbs中文手册.docx》由会员分享,可在线阅读,更多相关《WinCCVbs中文手册.docx(29页珍藏版)》请在冰豆网上搜索。
WinCCVbs中文手册
可以使用VBSWinCC对所有图形编辑器对象进行访问,以使图形运行环境动态化。
根据变量或周期性(例如闪烁)情况,可在执行操作(例如在按钮上单击鼠标)时使图形对象动态化。
以下示例说明如何在鼠标单击后更改图形对象。
步骤
在以下示例中,每次单击鼠标时运行系统中圆的半径都会设置为20:
DimobjCircle
SetobjCircle=ScreenItems("Circle1")
objCircle.Radius=20
2.实例:
定义对象的颜
图形对象的颜色通过RGB值(红/绿/蓝)定义。
可以设置或读出图形对象的颜色值。
步骤
以下示例将“ScreenWindow1”的填充颜色定义为蓝色:
DimobjScreen
SetobjScreen=HMIRuntime.Screens("ScreenWindow1")
objScreen.FillStyle=131075
objScreen.FillColor=RGB(0,0,255)
3.例:
如何组态语言切换
1/18
可使用VBS切换WinCC的运行系统语言。
最常用的是包含相应语言代码的按钮,这些按钮位于项目的起始页上。
在VBS中通过使用国家代码(例如,1031表示德语-默认,1033表示英语-
美国等)指定运行系统语言。
有关所有国家代码的汇总,请参见标题为“区域方
案ID(LCID)图”的主题下的VBScript基本知识。
步骤:
使用按钮上的“Mouseclick事”件创建VBS动作,输入以下动作代码将运行系统语言切换为德语:
HMIRuntime.Language=1031
可以使用VBS终止WinCC运行系统,例如,通过鼠标单击,依靠变量值或其它事件(例如,启动运行系统时密码的多次错误输入)。
要执行的操作
以下示例会终止WinCC运行系统:
HMIRuntime.Stop
5.实例:
全局组态画面更改
简介
VBS可用于启动全局画面更改,因而会在分布式系统的客户机上显示服务器中的画面。
为此,服务器的服务器前缀必须位于目标画面之前。
要执行的操作
为按钮组态以下画面更改代码,例如:
HMIRuntime.BaseScreenName="Serverprefix:
:
Newscreen"
2/18
6.实例:
通过属性组态画面更改
简介
如果在组态中使用分区画面(例如,在用户界面的基本画面标题和操作栏中和用于实际画面显示的嵌入画面窗口中),应使用画面窗口的属性组态画面更改。
为了显示其它画面,必须更改“ScreenName”画面窗口的属性。
必须在同一画面中对动作和画面窗口进行组态。
要执行的操作
在以下示例中,执行动作时“ScreenWindow”画面窗口中会显示“test.pdl画”
面:
DimobjScrWindow
SetobjScrWindow=ScreenItems("ScreenWindow")
objScrWindow.ScreenName="test"
7.实例:
通过Trace组态诊断输出
简介
在动作中调用的过程的跟踪。
Trace指令以“HMIRuntime.Trace(
GSC诊断显示来自C和VBS的跟踪输出。
要执行的操作
以下示例将文本写入诊断窗口中:
HMIRuntime.Trace"Customizederrormessage"
3/18
8.实例:
写入变量值
可以用VBS将变量值写入PLC中,例如通过在按钮上单击鼠标来指定设定值,或设置内部变量值,以触发其它动作。
下面涉及和介绍了多种写入变型。
1)简单写入
在以下示例中,将值写入“Tag1变”量内:
HMIRuntime.Tags("Tag1").Write6
这是最简单的写入形式,因为不会生成任何对象引用。
2)通过对象引用写入
在以下示例中,将创建变量对象的本地副本并将值写入“Tag1内”:
DimobjTag
SetobjTag=HMIRuntime.Tags("Tag1")
objTag.Write7
3)通过利用引用,可以在写入之前使用变量对象。
可以读取变量值,进行计算,并再次写入:
DimobjTag
SetobjTag=HMIRuntime.Tags("Tag1")
objTag.Read
objTag.Value=objTag.Value+1
objTag.Write
此类写入通过将附加的可选参数指定为值1来实现:
4/18
DimobjTag
SetobjTag=HMIRuntime.Tags("Tag1")
objTag.Value=8
objTag.Write,1
说明
请注意,这种调用比标准调用使用的时间要长。
除此之外,持续时间还取决于通道和AS。
这类写入遵从C脚本中的SetTagXXXWait()调用
5)通过状态处理写入
为了确保成功写入值,必须在写入过程之后执行错误检查或确定变量状
态。
为此,执行写入操作后需检查“LastError属性”。
测试成功(即成功放置任务)后,即检查变量状态。
对于写入任务,过程的当前状态尚不确定。
要确定该状态,必须读取变量。
读取过程之后“质量代码”属性中指定的值会提供变量状态指示,如有必要,还会涉及发生故障的AS连接。
在以下示例中,将写入“Tag1变”量。
如果写入期间出现错误,全局脚本诊断
窗口中会显示错误值和错误描述。
最后,检查质量代码。
如果质量代码不是OK(0x80),便在诊断窗口中显示该代码
DimobjTag
SetobjTag=HMIRuntime.Tags("Tag1")
objTag.Write9
If0<>objTag.LastErrorThen
5/18
HMIRuntime.Trace"Error:
"&objTag.LastError&vbCrLf&"ErrorDescription:
"&objTag.ErrorDescription&vbCrLf
Else
objTag.Read
If&H80<>objTag.QualityCodeThen
HMIRuntime.Trace"QualityCode:
0x"&Hex(objTag.QualityCode)&vbCrLf
EndIf
EndIf
写入变量后,由于不知道哪一质量代码在过程中用于管理变量,因此局部变量对象的QualityCode属性会设置为“BAD已不能用”。
9.实例:
如何读取变量值
简介
可以用VBS读取变量值并对其执行进一步的处理。
这样便可以执行诸如通过在按钮上单击鼠标来获取系统状态信息或执行计算的操作。
下面涉及和介绍了多种读取变型。
1)简单读取
在以下示例中,将读取“Tag1的”值并在全局脚本诊断窗口中显示该值:
HMIRuntime.Trace"Value:
"&HMIRuntime.Tags("Tag1").Read&vbCrLf
6/18
这是最简单的读取形式,因为不会生成任何对象引用。
2)通过对象引用读取
在以下示例中,将生成变量对象的本地副本,读取该变量值并在全局脚本诊断窗口中显示该值:
DimobjTag
SetobjTag=HMIRuntime.Tags("Tag1")
HMIRuntime.Trace"Value:
"&objTag.Read&vbCrLf
通过利用引用可以使用变量对象。
可以读取变量值,进行计算,并再次写
入:
DimobjTag
SetobjTag=HMIRuntime.Tags("Tag1")
objTag.Read
objTag.Value=objTag.Value+1
objTag.Write
使用Read方法将已读取的过程变量添加到图像,从该刻起这些变量会通过AS周期性请求。
如果该变量已存在于图像中,则会返回其中包含的值。
对于关闭画面,变量动作会再次结束。
说明
如果全局脚本动作中请求变量,则在进入WinCC运行系统的整个过程中,该变量保持已注册状态
3)直接读取
7/18
如果将读取过程的可选参数设置为1,则不会周期性地登录变量,而是通过AS单次请求该值。
DimobjTag
SetobjTag=HMIRuntime.Tags("Tag1")
HMIRuntime.Trace"Value:
"&objTag.Read
(1)&vbCrLf
说明
请注意,这种调用比标准调用使用的时间要长。
除此之外,持续时间还取决于通道和AS。
在执行周期性C动作的情况下,必须避免该类调用,因为这是引起性能问题的主要原因。
该类读取过程相当于C脚本中的GetTagXXXWait()调用。
4)通过状态处理读取
为了确保值有效,应在读取之后进行检查。
这通过控制质量代码来执行。
在以下示例中,将读取“myWord”变量,然后检查QualityCode。
如果质量代码未对应OK(0x80),则在全局脚本诊断窗口中显示LastError、ErrorDescription
和QualityCode属性。
DimobjTag
SetobjTag=HMIRuntime.Tags("Tag1")
objTag.Read
If&H80<>objTag.QualityCodeThen
HMIRuntime.Trace"Error:
8/18
"&objTag.LastError&vbCrLf&"ErrorDescription:
"&objTag.ErrorDescription&vbCrLf&"QualityCode:
0x"&Hex(objTag.QualityCode)&vbCrLf
Else
HMIRuntime.Trace"Value:
"&objTag.Value&vbCrLf
EndIf
说明
如果读取期间出现错误,则QualityCode会设置为BADNON-SPECIFIC。
因此,只需在
VBS可实现对所有图形编辑器画面对象的属性的访问。
运行期间可以读出各个属性以便进行修改或更改。
以下示例说明了各种访问形式。
1)属性的简单设置
在以下示例中,画面中包含的“Rectangle1对”象的背景颜色被设置为红色ScreenItems("Rectangle1").BackColor=RGB(255,0,0)
这是最简单的写入形式,因为不会生成任何对象引用
说明
如果不通过对象引用完成操作,则智能感知中只提供标准属性。
本示例中使用的表达式形式仅适用于图形编辑器。
对于全局脚本中的模拟动作,应使用HMIRuntime对象访问相应对象
2)通过对象引用设置属性
9/18
在以下示例中,将创建对画面中所包含“Rectangle1对”象的引用,并使用
VBS标准函数RGB()将背景设置为红色:
DimobjRectangle
SetobjRectangle=ScreenItems("Rectangle1")
objRectangle.BackColor=RGB(255,0,0)
必须更改多个对象属性时,引用非常有用。
使用智能感知时,该过程即会列出所有对象属性。
说明
本示例中使用的表达式形式仅适用于图形编辑器。
对于全局脚本中的模拟动作,应使用HMIRuntime对象访问相应对象
3)通过画面窗口设置属性
图形编辑器中的VBS提供两种可行的画面超越访问方法:
使用“ScreenItems通”过画面窗口的Screen对象
使用“HMIRuntime.Screens通”过基本画面通过画面窗口引用
“Rectangle类型”对象的画面。
SubOnLButtonUp(ByValItem,ByValFlags,ByValx,ByValy)
DimobjRectangle
SetobjRectangle=
ScreenItems("ScreenWindow1").Screen.ScreenItems("Rectangle1")objRectangle.BackColor=RGB(255,0,0)
EndSub
4)通过基本画面引用
10/18
可通过HMIRuntime.Screens引用具有待修改对象的画面。
该画面相对于基本画面的规范通过以下访问代码进行定义:
[
在以下示例中,将创建对“Rectangle1画”面中包含的“Screen2对”象的引用,并将背景颜色设置为红色。
这种情况下,画面“Screen2位”于“Screen1中”。
“Screen1显”示在基本画面
“BaseScreen中。
”DimobjRectangle
SetobjRectangle=
HMIRuntime.Screens("BaseScreen.ScreenWindow1:
Screen
1.ScreenWindow1:
Screen2").ScreenItems("Rectangle1")
objRectangle.BackColor=RGB(255,0,0)
无需指定画面名称。
可以通过画面窗口名称唯一地访问某一画面。
因此,只需指定画面窗口的名称,如下示例所示:
DimobjRectangle
SetobjRectangle=
HMIRuntime.Screens("ScreenWindow
1.ScreenWindow2").ScreenItems("Rectangle1")objRectangle.BackColor=RGB(255,0,0)
这种访问类型可实现在不同画面中访问画面窗口中的对象。
就画面模块技术而言,这是特别有趣的一点。
基于属性的动作不仅能由事件触发或周期性触发,而且能直接通过动作使属性动态化。
11/18
在以下示例中,通过返回值使对象的背景颜色动态化。
例如,传送的值可能来自PLC中事件的评估,并用于运行状态的图形显示:
FunctionBackColor_Trigger(ByValItem)
BackColor_Trigger=RGB(125,0,0)
EndFunction
说明
如果通过脚本的返回值使具有VBS动作的对象属性动态化,则只有在相对于上次运行的脚本对象属性值发生更改时才会写入该值。
如果该值已在另一位置发生更改则无效。
因此,通过从另一位置(例如,其它C脚本或VBS脚本)的返回值来更改
由VBS动作生成的动态属性是非法的。
如果不遵守这一点,则结果可能是错误的值。
2)实例:
通过VBS组态数据库连接
简介
以下示例说明如何通过ODBC驱动器组态Access数据库链接。
示例1将WinCC的变量值写入Access数据库中。
示例2从数据库读取值并将其写入WinCC变量中。
这些示例不包含任何处理故障。
1.通过WINCC_DATA表和ID在其中作为自动值的的列(ID,TagValue)来创建Access数据库。
2.设置名称为“SampleDSN的”ODBC数据源,引用以上Access数据库。
3.编程。
12/18
3)示例1
DimobjConnection
DimstrConnectionString
DimlngValue
strConnectionString=
"Provider=MSDASQL;DSN=SampleDSN;UID=;PWD=;"lngValue=
HMIRuntime.Tags("Tag1").Read
strSQL="INSERTINTOWINCC_DATA(TagValue)VALUES("&lngValue&");"SetobjConnection=CreateObject("ADO
DB.Connection")
objConnection.ConnectionString=strConnectionString
objConnection.Open
SetobjCommand=CreateObject("ADO
DB.Command")
WithobjCommand
.ActiveConnection=objConnection
.CommandText=strSQL
EndWith
objCommand.Execute
SetobjCommand=Nothing
objConnection.Close
SetobjConnection=Nothing
13/18
4)步骤、示例2
1.创建名称为dbValue的WinCC变量。
2.使用WINCC_DATA表和ID,TagValue列创建Access数据库:
ID,创建TagValue(ID作用自动值)。
3.设置名称为“SampleDSN的”ODBC数据源,引用以上Access数据库。
4.编程。
DimobjConnection
DimobjCommand
DimobjRecordset
DimstrConnectionString
DimlngValue
DimlngCount
strConnectionString=
"Provider=MSDASQL;DSN=SampleDSN;UID=;PWD=;"strSQL="selectTagValuefrom
WINCC_DATAwhereID=1"
SetobjConnection=CreateObject("ADO
DB.Connection")
objConnection.ConnectionString=strConnectionString
objConnection.Open
SetobjRecordset=CreateObject("ADO
DB.Recordset")
SetobjCommand=CreateObject("ADO
14/18
DB.Command")
objCommand.ActiveConnection=objConnection
objCommand.CommandText=strSQL
SetobjRecordset=objCommand.Execute
lngCount=objRecordset.Fields.Count
If(lngCount>0)Then
objRecordset.movefirst
lngValue=objRecordset.Fields
(0).Value
HMIRuntime.Tags("dbValue").WritelngValue
Else
HMIRuntime.Trace"Selectionreturnednofields"&vbNewLineEndIf
SetobjCommand=Nothing
objConnection.Close
SetobjRecordset=Nothing
SetobjConnection=Nothing启用与ODBC数据源的连接。
相应的语法为:
"[Provider=MSDASQL;]{DSN=name|FileDSN=filename};[DATABASE=database;]UID=user;PWD=password"
其它MicrosoftOLEDB提供程序(例如MSJet、MSSQLServer)
可以不使用DSN运行。
相应的语法为:
15/18
"[Provider=provider;]DRIVER=driver;SERVER=server;
DATABASE=database;UID=user;PWD=password"
5)实例:
使用MS自动化接口
简介
以下三个示例说明了如何使用MS自动化接口。
1)示例1:
MSExcel
本示例中将输入域的输出值写入Excel表中。
DimobjExcelApp
SetobjExcelApp=CreateObject("Excel.Application")
objExcelApp.Visible=True
'ExcelExample.xlsistocreatebeforeexecutingthisprocedure.'Replace
objExcelApp.Cells(4,3).Value=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WinCCVbs 中文 手册