WinCC VBScript教程.docx

上传人:b****7 文档编号:10270396 上传时间:2023-02-09 格式:DOCX 页数:17 大小:24.67KB
下载 相关 举报
WinCC VBScript教程.docx_第1页
第1页 / 共17页
WinCC VBScript教程.docx_第2页
第2页 / 共17页
WinCC VBScript教程.docx_第3页
第3页 / 共17页
WinCC VBScript教程.docx_第4页
第4页 / 共17页
WinCC VBScript教程.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

WinCC VBScript教程.docx

《WinCC VBScript教程.docx》由会员分享,可在线阅读,更多相关《WinCC VBScript教程.docx(17页珍藏版)》请在冰豆网上搜索。

WinCC VBScript教程.docx

WinCCVBScript教程

WinCC VBScript教程一

(2010-05-0108:

01:

04)

转载

标签:

wincc

vbscritp

教程

it

   本文内容是基于WinCCV6.2中文版的,文中脚本程序均在WinCCV6.2中文版测试通过。

   WinCC作为西门子公司的监控组态软件具有非常强的的功能,和很好的系统稳定性。

本系列教程主要讨论WinCC中的VBScript脚本系统在实际开发中的应用。

  WinCC提供了丰富完整、功能强大的脚本编程。

主要分为C脚本、VBS脚本和VBA三种具有不同功能、及应用环境的脚本语言。

C脚本提供了访问各种Win32API的功能,通过对不同的Win32API的访问可以使用Windows平台及该平台上各种应用的功能。

VBS脚本者为开发者提供了一种易用和快速开发的脚本语言。

VBA提供了对WinCC软件功能扩展的能力。

  VisualBasicScriptingEdition是程序开发语言VisualBasic家族的最新成员。

VBScript是非常易学的。

如果您已了解VisualBasic或VisualBasicforApplications,就会很快熟悉VBScript。

如果您没有学过VisualBasic,只要学会VBScript,就能够使用所有的VisualBasic语言进行程序设计。

 本节主要对WinCC脚本、及VBScript进行简单介绍。

下节将介绍VBScript的基本语法。

  本文转载自:

中华工控168网

WinCC VBScript教程二 语法

(2010-05-0223:

11:

25)

转载

标签:

it

本节主要介绍VBScript语法,包括数据类型、变量、常数、过程、编码规则。

VBScript数据类型

VBScript只有一种数据类型,称为 Variant。

Variant 是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。

因为 Variant 是VBScript中唯一的数据类型,所以它也是VBScript中所有函数的返回值的数据类型。

最简单的 Variant 可以包含数字或字符串信息。

Variant 用于数字上下文中时作为数字处理,用于字符串上下文中时作为字符串处理。

这就是说,如果使用看起来象是数字的数据,则VBScript会假定其为数字并以适用于数字的方式处理。

与此类似,如果使用的数据只可能是字符串,则VBScript将按字符串处理。

也可以将数字包含在引号("")中使其成为字符串。

Variant子类型

除简单数字或字符串以外,Variant 可以进一步区分数值信息的特定含义。

例如使用数值信息表示日期或时间。

此类数据在与其他日期或时间数据一起使用时,结果也总是表示为日期或时间。

从Boolean值到浮点数,数值信息是多种多样的。

Variant 包含的数值信息类型称为子类型。

大多数情况下,可将所需的数据放进 Variant 中,而 Variant 也会按照最适用于其包含的数据的方式进行操作。

下表显示 Variant 包含的数据子类型:

子类型

描述

Empty

未初始化的 Variant。

对于数值变量,值为0;对于字符串变量,值为零长度字符串("")。

Null

不包含任何有效数据的 Variant。

Boolean

包含 True 或 False。

Byte

包含0到255之间的整数。

Integer

包含-32,768到32,767之间的整数。

Currency

-922,337,203,685,477.5808到922,337,203,685,477.5807。

Long

包含-2,147,483,648到2,147,483,647之间的整数。

Single

包含单精度浮点数,负数范围从-3.402823E38到-1.401298E-45,正数范围从1.401298E-45到3.402823E38。

Double

包含双精度浮点数,负数范围从-1.79769313486232E308到-4.94065645841247E-324,正数范围从4.94065645841247E-324到1.79769313486232E308。

Date(Time)

包含表示日期的数字,日期范围从公元100年1月1日到公元9999年12月31日。

String

包含变长字符串,最大长度可为20亿个字符。

Object

包含对象。

Error

包含错误号。

 

您可以使用转换函数来转换数据的子类型。

另外,可使用 VarType函数返回数据的 Variant 子类型。

 

VBScript变量

变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储脚本运行时可更改的程序信息。

例如,可以创建一个名为ClickCount的变量来存储用户单击Web页面上某个对象的次数。

使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。

在VBScript中只有一个基本数据类型,即 Variant,因此所有变量的数据类型都是Variant。

声明变量

声明变量的一种方式是使用 Dim 语句、Public 语句和 Private 语句在脚本中显式声明变量。

例如:

 DimDegreesFahrenheit

声明多个变量时,使用逗号分隔变量。

例如:

 DimTop,Bottom,Left,Right

另一种方式是通过直接在脚本中使用变量名这一简单方式隐式声明变量。

这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行脚本时出现意外的结果。

因此,最好使用 OptionExplicit 语句显式声明所有变量,并将其作为脚本的第一条语句。

命名规则

变量命名必须遵循VBScript的标准命名规则。

变量命名必须遵循:

第一个字符必须是字母。

不能包含嵌入的句点。

长度不能超过255个字符。

在被声明的作用域内必须唯一。

 

变量的作用域与存活期

变量的作用域由声明它的位置决定。

如果在过程中声明变量,则只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并被称为过程级变量。

如果在过程之外声明变量,则该变量可以被脚本中所有过程所识别,称为 Script级变量,具有脚本级作用域。

变量存在的时间称为存活期。

Script级变量的存活期从被声明的一刻起,直到脚本运行结束。

对于过程级变量,其存活期仅是该过程运行的时间,该过程结束后,变量随之消失。

在执行过程时,局部变量是理想的临时存储空间。

可以在不同过程中使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别。

给变量赋值

创建如下形式的表达式给变量赋值:

变量在表达式左边,要赋的值在表达式右边。

例如:

 B=200

标量变量和数组变量

多数情况下,只需为声明的变量赋一个值。

只包含一个值的变量被称为标量变量。

有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。

数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号()。

下例声明了一个包含11个元素的一维数组:

 DimA(10)

虽然括号中显示的数字是10,但由于在VBScript中所有数组都是基于0的,所以这个数组实际上包含11个元素。

在基于0的数组中,数组元素的数目总是括号中显示的数目加1。

这种数组被称为固定大小的数组。

在数组中使用索引为数组的每个元素赋值。

从0到10,将数据赋给数组的元素,如下所示:

 A(0)=256  A

(1)=324  A

(2)=100  ...  A(10)=55

与此类似,使用索引可以检索到所需的数组元素的数据。

例如:

 ...   SomeVariable=A(8)    ...

数组并不仅限于一维。

数组的维数最大可以为60(尽管大多数人不能理解超过3或4的维数)。

声明多维数组时用逗号分隔括号中每个表示数组大小的数字。

在下例中,MyTable变量是一个有6行和11列的二维数组:

 DimMyTable(5,10)

在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。

也可以声明动态数组,即在运行脚本时大小发生变化的数组。

对数组的最初声明使用 Dim 语句或 ReDim 语句。

但是对于动态数组,括号中不包含任何数字。

例如:

 DimMyArray()  ReDimAnotherArray()

要使用动态数组,必须随后使用 ReDim 确定维数和每一维的大小。

在下例中,ReDim 将动态数组的初始大小设置为25,而后面的 ReDim 语句将数组的大小重新调整为30,同时使用 Preserve关键字在重新调整大小时保留数组的内容。

 ReDimMyArray(25)  ...   ReDimPreserveMyArray(30)

重新调整动态数组大小的次数是没有任何限制的,将数组的大小调小时,将会丢失被删除元素的数据。

 

VBScript常数

常数是具有一定含义的名称,用于代替数字或字符串,其值从不改变。

VBScript定义了许多内部常数。

详细信息,请参阅 VBScript语言参考。

创建常数

您可以使用 Const 语句在VBScript中创建用户自定义常数。

使用 Const 语句可以创建名称具有一定含义的字符串型或数值型常数,并给它们赋原义值。

例如:

ConstMyString="这是一个字符串。

" ConstMyAge=49

请注意字符串文字包含在两个引号("")之间。

这是区分字符串型常数和数值型常数的最明显的方法。

日期文字和时间文字包含在两个井号(#)之间。

例如:

ConstCutoffDate=#6-1-97#

最好采用一个命名方案以区分常数和变量。

这样可以避免在运行脚本时对常数重新赋值。

例如,可以使用“vb”或“con”作常数名的前缀,或将常数名的所有字母大写。

将常数和变量区分开可以在开发复杂的脚本时避免混乱。

 

VBScript运算符

VBScript有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。

运算符优先级

当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。

可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。

运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。

但是,在括号中仍遵循标准运算符优先级。

当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。

所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。

算术运算符和逻辑运算符的优先级如下所示:

算术运算符

 

比较运算符

 

逻辑运算符

 

描述

符号

描述

符号

描述

符号

求幂

^

等于

=

逻辑非

Not

负号

-

不等于

<>

逻辑与

And

*

小于

<

逻辑或

Or

/

大于

>

逻辑异或

Xor

整除

\

小于等于

<=

逻辑等价

Eqv

求余

Mod

大于等于

>=

逻辑隐含

Imp

+

对象引用比较

Is

 

 

-

 

 

 

 

字符串连接

&

 

 

 

 

 

当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。

同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减运算符。

字符串连接(&)运算符不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和所有比较运算符之前。

Is 运算符是对象引用比较运算符。

它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。

 

条件语句

控制程序执行

使用条件语句和循环语句可以控制脚本的流程。

使用条件语句可以编写进行判断和重复操作的VBScript代码。

在VBScript中可使用以下条件语句:

If...Then...Else 语句

SelectCase 语句

 

使用If...Then...Else进行判断

If...Then...Else 语句用于计算条件是否为 True 或 False,并且根据计算结果指定要运行的语句。

通常,条件是使用比较运算符对值或变量进行比较的表达式。

有关比较运算符的详细信息,请参阅比较运算符。

If...Then...Else 语句可以按照需要进行嵌套。

条件为True时运行语句

要在条件为 True 时运行单行语句,可使用 If...Then...Else 语句的单行语法。

下例示范了单行语法。

请注意此例省略了关键字 Else。

 SubFixDate()      DimmyDate      myDate=#2/13/95#      IfmyDate

要运行多行代码,必须使用多行(或块)语法。

多行(或块)语法包含 EndIf 语句,如下所示:

 SubAlertUser(value)      Ifvalue=0Then          AlertLabel.ForeColor=vbRed          AlertLabel.Font.Bold=True          AlertLabel.Font.Italic=True      EndIf  EndSub

条件为True和False时分别运行某些语句

可以使用 If...Then...Else 语句定义两个可执行语句块:

条件为 True 时运行某一语句块,条件为 False 时运行另一语句块。

 SubAlertUser(value)      Ifvalue=0Then          AlertLabel.ForeColor=vbRed          AlertLabel.Font.Bold=True          AlertLabel.Font.Italic=True      Else          AlertLabel.Forecolor=vbBlack          AlertLabel.Font.Bold=False          AlertLabel.Font.Italic=False      EndIf  EndSub

对多个条件进行判断

If...Then...Else 语句的一种变形允许您从多个条件中选择,即添加 ElseIf 子句以扩充 If...Then...Else 语句的功能,使您可以控制基于多种可能的程序流程。

例如:

 SubReportValue(value)      Ifvalue=0Then          MsgBoxvalue      ElseIfvalue=1Then          MsgBoxvalue      ElseIfvalue=2then          Msgboxvalue      Else          Msgbox"数值超出范围!

"      EndIf

可以添加任意多个 ElseIf 子句以提供多种选择。

使用多个 ElseIf 子句经常会变得很累赘。

在多个条件中进行选择的更好方法是使用 SelectCase 语句。

使用SelectCase进行判断

SelectCase 结构提供了 If...Then...ElseIf 结构的一个变通形式,可以从多个语句块中选择执行其中的一个。

SelectCase 语句提供的功能与 If...Then...Else 语句类似,但是可以使代码更加简练易读。

SelectCase 结构在其开始处使用一个只计算一次的简单测试表达式。

表达式的结果将与结构中每个 Case 的值比较。

如果匹配,则执行与该 Case 关联的语句块,示例代码如下:

 SelectCaseDocument.Form1.CardType.Options(SelectedIndex).Text     Case"MasterCard"         DisplayMCLogo         ValidateMCAccount     Case"Visa"         DisplayVisaLogo         ValidateVisaAccount     Case"AmericanExpress"         DisplayAMEXCOLogo         ValidateAMEXCOAccount     CaseElse         DisplayUnknownImage         PromptAgain EndSelect

请注意 SelectCase 结构只计算开始处的一个表达式(只计算一次),而 If...Then...ElseIf 结构计算每个 ElseIf 语句的表达式,这些表达式可以各不相同。

仅当每个 ElseIf 语句计算的表达式都相同时,才可以使用 SelectCase 结构代替 If...Then...ElseIf 结构。

 

使用循环语句

循环用于重复执行一组语句。

循环可分为三类:

一类在条件变为 False 之前重复执行语句,一类在条件变为 True 之前重复执行语句,另一类按照指定的次数重复执行语句。

在VBScript中可使用下列循环语句:

Do...Loop:

当(或直到)条件为 True 时循环。

While...Wend:

当条件为 True 时循环。

For...Next:

指定循环次数,使用计数器重复运行语句。

ForEach...Next:

对于集合中的每项或数组中的每个元素,重复执行一组语句。

 

使用Do循环

可以使用 Do...Loop 语句多次(次数不定)运行语句块。

当条件为 True 时或条件变为 True 之前,重复执行语句块。

当条件为True时重复执行语句

While 关键字用于检查 Do...Loop 语句中的条件。

有两种方式检查条件:

在进入循环之前检查条件(如下面的ChkFirstWhile示例);或者在循环至少运行完一次之后检查条件(如下面的ChkLastWhile示例)。

在ChkFirstWhile过程中,如果myNum的初始值被设置为9而不是20,则永远不会执行循环体中的语句。

在ChkLastWhile过程中,循环体中的语句只会执行一次,因为条件在检查时已经为 False。

 SubChkFirstWhile()      Dimcounter,myNum      counter=0      myNum=20      DoWhilemyNum>10          myNum=myNum-1          counter=counter+1      Loop      MsgBox"循环重复了"&counter&"次。

"  EndSubSubChkLastWhile()      Dimcounter,myNum      counter=0      myNum=9      Do          myNum=myNum-1          counter=counter+1      LoopWhilemyNum>10      MsgBox"循环重复了"&counter&"次。

"  EndSub

重复执行语句直到条件变为True

Until 关键字用于检查 Do...Loop 语句中的条件。

有两种方式检查条件:

在进入循环之前检查条件(如下面的ChkFirstUntil示例);或者在循环至少运行完一次之后检查条件(如下面的ChkLastUntil示例)。

只要条件为 False,就会进行循环。

 SubChkFirstUntil()      Dimcounter,myNum      counter=0      myNum=20      DoUntilmyNum=10          myNum=myNum-1          counter=counter+1      Loop      MsgBox"循环重复了"&counter&"次。

"  EndSubSubChkLastUntil()      Dimcounter,myNum      counter=0      myNum=1      Do          myNum=myNum+1          counter=counter+1      LoopUntilmyNum=10      MsgBox"循环重复了"&counter&"次。

"  EndSub

退出循环

ExitDo 语句用于退出 Do...Loop 循环。

因为通常只是在某些特殊情况下要退出循环(例如要避免死循环),所以可在 If...Then...Else 语句的 True 语句块中使用 ExitDo 语句。

如果条件为 False,循环将照常运行。

在下面的示例中,myNum的初始值将导致死循环。

If...Then...Else 语句检查此条件,防止出现死循环。

 SubExitExample()      Dimcounter,myNum      counter=0      myNum=9      DoUntilmyNum=10          myNum=myNum-1          counter=counter+1          IfmyNum<10ThenExitDo      Loop      MsgBox"循环重复了"&counter&"次。

"  EndSub

使用While...Wend

While...Wend 语句是为那些熟悉其用法的用户提供的。

但是由于 While...Wend 缺少灵活性,所以建议最好使用 Do...Loop 语句。

使用For...Next

For...Next 语句用于将语句块运行指定的次数。

在循环中使用计数器变量,该变量的值随每一次循环增加或减少。

例如,下面的示例将过程MyProc重复执行50次。

For 语句指定计数器变量x及其起始值与终止值。

Next 语句使计数器变量每次加1。

 SubDoMyProc50Times()      Dimx      Forx=1To50          MyProc      Next  EndSub

关键字 Step 用于指定计数器变

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1