语句WinCC VBScript教程.

vbscript教程  时间:2021-02-08  阅读:()

WinCC VBScript教程一

(2010-05-01 08:01:04)

转载

标签winccvbscritp

教程it

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

WinCC作为西门子公司的监控组态软件具有非常强的的功能和很好的系统稳定性。本系列教程主要讨论WinCC中的VBScript脚本系统在实际开发中的应用。

WinCC提供了丰富完整、功能强大的脚本编程。主要分为C脚本、VBS脚本和VBA三种具有不同功能、及应用环境的脚本语言。C脚本提供了访问各种Win32 API的功能通过对不同的Win32 API的访问可以使用Window s平台及该平台上各种应用的功能。VBS脚本者为开发者提供了一种易用和快速开发的脚本语言。VBA提供了对WinCC软件功能扩展的能力。

Visual Basic Scripting Edition是程序开发语言Visual Bas ic家族的最新成员。VB Script是非常易学的。如果您已了解Visual Basic或Visual Basic for Applications就会很快熟悉VBScript。如果您没有学过Visual Bas ic只要学会VBScript就能够使用所有的VisualBasic语言进行程序设计。

本节主要对WinCC脚本、及VB Script进行简单介绍。下节将介绍VB Script的基本语法。

本文转载自 中华工控168网

WinCC VBScript教程二语法

(2010-05-0223:11:25)

转载

标签it

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

VBScript数据类型

VBScript只有一种数据类型称为Var iant。 Variant是一种特殊的数据类型根据使用的方式它可以包含不同类别的信息。因为Var iant是VBS cript中唯一的数据类型所以它也是VBScript中所有函数的返回值的数据类型。

最简单的Var iant可以包含数字或字符串信息。 Var iant用于数字上下文中时作为数字处理用于字符串上下文中时作为字符串处理。这就是说如果使用看起来象是数字的数据则VBScript会假定其为数字并以适用于数字的方式处理。与此类似如果使用的数据只可能是字符串则VBScript将按字符串处理。也可以将数字包含在引号(" ")中使其成为字符串。

Vari ant子类型

除简单数字或字符串以外 Vari ant可以进一步区分数值信息的特定含义。例如使用数值信息表示日期或时间。此类数据在与其他日期或时间数据一起使用时结果也总是表示为日期或时间。从Boolean值到浮点数数值信息是多种多样的。 Variant包含的数值信息类型称为子类型。大多数情况下可将所需的数据放进Var iant中而Variant也会按照最适用于其包含的数据的方式进行操作。

下表显示Var iant包含的数据子类型

子类型

描述

Emp ty

未初始化的Var iant。对于数值变量值为0对于字符串变量值为零长度字符串("")。Null

不包含任何有效数据的Var iant。

Boolean

包含True或F als e。

Byte

包含0到255之间的整数。

Integer

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

Curr enc y

-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 日。S tring

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

Object

包含对象。

Error

包含错误号。

您可以使用转换函数来转换数据的子类型。另外可使用Var Typ e函数返回数据的Var i ant子类型。

VBScript变量

变量是一种使用方便的占位符用于引用计算机内存地址该地址可以存储脚本运行时可更改的程序信息。例如可以创建一个名为Clic kCount的变量来存储用户单击Web页面上某个对象的次数。使用变量并不需要了解变量在计算机内存中的地址只要通过变量名引用变量就可以查看或更改变量的值。在VBScript中只有一个基本数据类型即Variant因此所有变量的数据类型都是Var iant。

声明变量

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

Dim DegreesFahrenheit

声明多个变量时使用逗号分隔变量。例如

Dim Top,Bottom,Left,Right

另一种方式是通过直接在脚本中使用变量名这一简单方式隐式声明变量。这通常不是一个好习惯因为这样有时会由于变量名被拼错而导致在运行脚本时出现意外的结果。因此最好使用Option Explicit语句显式声明所有变量并将其作为脚本的第一条语句。

命名规则

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

第一个字符必须是字母。

不能包含嵌入的句点。

长度不能超过255个字符。

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

变量的作用域与存活期

变量的作用域由声明它的位置决定。如果在过程中声明变量则只有该过程中的代码可以访问或更改变量值此时变量具有局部作用域并被称为过程级变量。如果在过程之外声明变量则该变量可以被脚本中所有过程所识别称为Script级变量具有脚本级作用域。变量存在的时间称为存活期。Script级变量的存活期从被声明的一刻起直到脚本运行结束。对于过程级变量其存活期仅是该过程运行的时间该过程结束后变量随之消失。在执行过程时局部变量是理想的临时存储空间。可以在不同过程中使用同名的局部变量这是因为每个局部变量只被声明它的过程识别。

给变量赋值

创建如下形式的表达式给变量赋值变量在表达式左边要赋的值在表达式右边。例如B=200

标量变量和数组变量

多数情况下只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候将多个相关值赋给一个变量更为方便 因此可以创建包含一系列值的变量称为数组变量。数组变量和标量变量是以相同的方式声明的唯一的区别是声明数组变量时变量名后面带有括号( )。下例声明了一个包含11个元素的一维数组

Dim A(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的维数。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中MyTab le变量是一个有6行和11列的二维数组

Dim MyTable(5, 10)

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

也可以声明动态数组即在运行脚本时大小发生变化的数组。对数组的最初声明使用Dim语句或ReD im语句。但是对于动态数组括号中不包含任何数字。例如

Dim MyArray() ReDim AnotherArray()

要使用动态数组必须随后使用ReDim确定维数和每一维的大小。在下例中 ReD im将动态数组的初始大小设置为25而后面的ReDim语句将数组的大小重新调整为30 同时使用Preserve关键字在重新调整大小时保留数组的内容。

ReDim MyArray(25) . . . ReDim Preserve MyArray(30)

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

VBScript常数

常数是具有一定含义的名称用于代替数字或字符串其值从不改变。 VBScript定义了许多内部常数。详细信息请参阅VBScript语言参考。

创建常数

您可以使用Const语句在VBScript中创建用户自定义常数。使用Const语句可以创建名称具有一定含义的字符串型或数值型常数并给它们赋原义值。例如

Const MyString="这是一个字符串。 " Const MyAge=49

请注意字符串文字包含在两个引号(" ")之间。这是区分字符串型常数和数值型常数的最明显的方法。 日期文字和时间文字包含在两个井号(#)之间。例如

Const CutoffDate=#6-1-97#

最好采用一个命名方案以区分常数和变量。这样可以避免在运行脚本时对常数重新赋值。例如可以使用“vb”或“c on”作常数名的前缀或将常数名的所有字母大写。将常数和变量区分开可以在开发复杂的脚本时避免混乱。

VBScript运算符

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

运算符优先级

当表达式包含多个运算符时将按预定顺序计算每一部分这个顺序被称为运算符优先级。可以使用括号越过这种优先级顺序强制首先计算表达式的某些部分。运算时总是先执行括号中的运算符然后再执行括号外的运算符。但是在括号中仍遵循标准运算符优先级。当表达式包含多种运算符时首先计算算术运算符然后计算比较运算符最后计算逻辑运算符。所有比较运算符的优先级相同即按照从左到右的顺序计算比较运算符。算术运算符和逻辑运算符的优先级如下所示

算术运算符

比较运算符

逻辑运算符

描述

符号

描述

符号

描述

符号

求幂

^

等于

=

逻辑非

Not

负号

-

不等于

<>

逻辑与

And

*

小于

<

逻辑或

Or

/

大于

>

逻辑异或

Xor

整除

\

小于等于

<=

逻辑等价

Eqv

求余

Mod

大于等于

>=

逻辑隐含

I mp

+

对象引用比较

Is

-

字符串连接

&

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

字符串连接(&)运算符不是算术运算符但是在优先级顺序中它排在所有算术运算符之后和所有比较运算符之前。 Is运算符是对象引用比较运算符。它并不比较对象或对象的值而只是进行检查判断两个对象引用是否引用同一个对象。

条件语句

控制程序执行

使用条件语句和循环语句可以控制脚本的流程。使用条件语句可以编写进行判断和重复操作的VBScript代码。在VBScript中可使用以下条件语句

I f.. .Then. ..Els e语句

Select Case语句

使用If.. .Then. ..Els e进行判断

I f.. .Then. ..Els e语句用于计算条件是否为True或F als e并且根据计算结果指定要运行的语句。通常条件是使用比较运算符对值或变量进行比较的表达式。有关比较运算符的详细信息请参阅比较运算符。 I f.. .Then. ..Els e语句可以按照需要进行嵌套。

条件为True时运行语句

要在条件为True时运行单行语句可使用I f.. .Then.. .Els e语句的单行语法。下例示范了单行语法。请注意此例省略了关键字Els e。

Sub FixDate() Dim myDate myDate=#2/13/95# If myDate<Now Then myDate=Now End Sub

要运行多行代码必须使用多行或块语法。多行或块语法包含End If语句如下所示

Sub AlertUser(value) If value = 0 Then AlertLabel.ForeColor =vbRed AlertLabel.Font.Bold=True AlertLabel.Font.Italic =True End If EndSub

条件为True和F als e时分别运行某些语句

可以使用I f. ..Then.. .Els e语句定义两个可执行语句块条件为True时运行某一语句块条件为F als e时运行另一语句块。

Sub AlertUser(value) If value = 0 Then AlertLabel.ForeColor =vbRed AlertLabel.Font.Bold = True AlertLabel.Font.Italic =True Else AlertLabel.Forecolor = vbBlack AlertLabel.Font.Bold =False AlertLabel.Font.Italic=False End If End Sub

对多个条件进行判断

I f.. .Then. ..Els e语句的一种变形允许您从多个条件中选择 即添加E ls eI f子句以扩充I f. ..Then.. .Els e语句的功能使您可以控制基于多种可能的程序流程。例如

Sub ReportValue(value) If value = 0 Then MsgBox value ElseIf value = 1Then MsgBox value ElseIf value = 2 then Msgboxvalue Else Msgbox"数值超出范围 " End If

可以添加任意多个Els eI f子句以提供多种选择。使用多个Els eI f子句经常会变得很累赘。在多个条件中进行选择的更好方法是使用Select Case语句。

使用Select Case进行判断

Select Case结构提供了If.. .Then. ..ElseIf结构的一个变通形式可以从多个语句块中选择执行其中的一个。 Select Case语句提供的功能与If. ..Then. ..Else语句类似但是可以使代码更加简练易读。

Select Case结构在其开始处使用一个只计算一次的简单测试表达式。表达式的结果将与结构中每个Case的值比较。如果匹配则执行与该Case关联的语句块,示例代码如下Select Case Document.Form1.CardType.Options(SelectedIndex).Text Case"MasterCard" DisplayMCLogo ValidateMCAccount Case"Visa" DisplayVisaLogo ValidateVisaAccount Case "AmericanExpress" DisplayAMEXCOLogo ValidateAMEXCOAccount CaseElse DisplayUnknownImage PromptAgain End Select

请注意Select Case结构只计算开始处的一个表达式只计算一次而If.. .Then. ..ElseIf结构计算每个Els eI f语句的表达式这些表达式可以各不相同。仅当每个Els eI f语句计算的表达式都相同时才可以使用Select Case结构代替If. ..Then.. .ElseIf结构。

使用循环语句

循环用于重复执行一组语句。循环可分为三类一类在条件变为F als e之前重复执行语句一类在条件变为True之前重复执行语句另一类按照指定的次数重复执行语句。在VBScript中可使用下列循环语句

Do. . .Loop 当或直到条件为True时循环。

While. . .Wend 当条件为True时循环。

For. ..Next 指定循环次数使用计数器重复运行语句。

For Each. ..Next对于集合中的每项或数组中的每个元素重复执行一组语句。

使用Do循环

可以使用Do. ..Loop语句多次次数不定运行语句块。当条件为True时或条件变为True之前重复执行语句块。

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

While关键字用于检查Do. . .Loop语句中的条件。有两种方式检查条件在进入循环之前检查条件如下面的ChkF ir s tWhile示例或者在循环至少运行完一次之后检查条件如下面的ChkLas tWhil e示例。在ChkF ir s tWhile过程中如果myNum的初始值被设置为9而不是20则永远不会执行循环体中的语句。在ChkLas tWh ile过程中循环体中的语句只会执行一次 因为条件在检查时已经为F als e。

Sub ChkFirstWhile() Dim counter,myNum counter=0 myNum=20 Do WhilemyNum>10 myNum=myNum- 1 c ounter=c ounter+1 Loop MsgBox"循环重复了 "& counter&"次。 " End Sub Sub ChkLastWhile() Dim counter,myNum c ounter=0 myNum=9 Do myNum=myNum- 1 c ounter=counter+ 1 Loop While myNum> 10 MsgBox "循环重复了 "&counter&"次。" End Sub

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

Unt il关键字用于检查Do. ..Loop语句中的条件。有两种方式检查条件在进入循环之前检查条件如下面的ChkF ir s tUnt i l示例或者在循环至少运行完一次之后检查条件如下面的ChkLas tUnti l示例。只要条件为F als e就会进行循环。

Sub ChkFirstUntil() Dim counter,myNum counter=0 myNum=20 Do UntilmyNum=10 myNum=myNum- 1 c ounter=c ounter+1 Loop MsgBox"循环重复了 " & counter& "次。 " End Sub Sub ChkLastUntil() Dim counter,myNum c ounter=0 myNum=1 Do myNum=myNum+1 c ounter=counter + 1 Loop Until myNum= 10 MsgBox "循环重复了 "&counter&"次。" End Sub

退出循环

Exit Do语句用于退出Do. . .Loop循环。因为通常只是在某些特殊情况下要退出循环例如要避免死循环所以可在If. ..Then.. .Else语句的True语句块中使用Exit Do语句。如果条件为F als e循环将照常运行。

在下面的示例中myNum的初始值将导致死循环。 If.. .T hen. ..Els e语句检查此条件防止出现死循环。

Sub ExitExample() Dim counter,myNum counter = 0 myNum= 9 Do UntilmyNum=10 myNum=myNum- 1 c ounter=c ounter+1 If myNum<10Then Exit Do Loop MsgBox"循环重复了 "&counter&"次。 " End Sub使用While. . .Wend

While. . .Wend语句是为那些熟悉其用法的用户提供的。但是由于While. . .Wend缺少灵活性

所以建议最好使用Do. ..Loop语句。

使用For. ..Next

For. ..Next语句用于将语句块运行指定的次数。在循环中使用计数器变量该变量的值随每一次循环增加或减少。

例如下面的示例将过程MyProc重复执行50次。 For语句指定计数器变量x及其起始值与终止值。Next语句使计数器变量每次加1 。

Sub DoMyProc50Times() Dimx Forx=1 To 50 MyProc Next End Sub关键字Step用于指定计数器变量每次增加或减少的值。在下面的示例中计数器变量j每次加2。循环结束后 total的值为2、 4、 6、 8和10的总和。

Sub TwosTotal() Dim j, total For j = 2 To 10 Step 2 total = total +j Next MsgBox"总和为"&total&"。 " End Sub

要使计数器变量递减可将Step设为负值。此时计数器变量的终止值必须小于起始值。在下面的示例中计数器变量myNum每次减2。循环结束后 to ta l的值为16、 14、 12、

10、 8、 6、 4和2的总和。

Sub NewTotal() Dim myNum, total For myNum=16 To 2 Step-2 total=total+myNum Next MsgBox"总和为"&total&"。 " End Sub

Exit For语句用于在计数器达到其终止值之前退出For. . .Next语句。因为通常只是在某些特殊情况下例如在发生错误时要退出循环所以可以在I f. ..Then.. .Els e语句的True语句块中使用Exit F or语句。如果条件为F als e循环将照常运行。

使用For Eac h. ..Next

For Each. ..Next循环与For.. .Next循环类似。 For Each. ..Next不是将语句运行指定的次数而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。

在以下示例中 Dictionary对象的内容用于将文本分别放置在多个文本框中

<HTML> <HEAD><TITLE> 窗 体 与 元 素 </TITLE></HEAD> <S CRIPTLANGUAGE="VBScript"> <!-- Sub cmdChange_OnClick Dim d '创建一个变量 Set d=CreateObject("Scripting.D ictionary") d.Add "0", "Athens" '添加键和项目 d.Add "1", "Belgrade" d.Add "2", "Cairo" For Each I ind Document.frmForm.Elements(I).Value = D.Item(I) Next EndSub --> </SCRIPT> <BOD Y> <CENTER> <FORM NAME="frmForm"<Input Type="Text"><p> <Input Type = "Text"><p> <Input Type = "Text"><p> <Input Type ="Text"><p> <Input Type = "Button" NAME="c mdChange" VALUE="单击此处"><p> </FORM> </CENTER> </BODY> </HTML>

VBScript过程

在VBScript中过程被分为两类 Sub过程和Function过程。

Sub过程

Sub过程是包含在Sub和End Sub语句之间的一组VBScript语句执行操作但不返回值。Sub过程可以使用参数由调用过程传递的常数、变量或表达式。如果Sub过程无任何参数则Sub语句必须包含空括号()。

下面的Sub过程使用两个固有的或内置的VBScript函数 即MsgBox和InputBox来提示用户输入信息。然后显示根据这些信息计算的结果。计算由使用VBScript创建的Function过程完成。此过程在以下讨论之后演示。

Sub ConvertTemp() temp =InputBox("请输入华氏温度。 ", 1) Ms gBox "温度为"&Cels ius(temp)&"摄氏度。 " End Sub

青云互联:洛杉矶CN2弹性云限时七折,Cera机房三网CN2gia回程,13.3元/月起

青云互联怎么样?青云互联是一家成立于2020年6月份的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,目前提供有美国免费主机、香港主机、香港服务器、美国云服务器,让您的网站高速、稳定运行。目前,美国洛杉矶cn2弹性云限时七折,美国cera机房三网CN2gia回程 13.3元/月起,可选Windows/可自定义配置。点击进入:青云互联官网青云互联优惠码:七折优惠码:dVRKp2tP (续...

ucloud香港服务器优惠活动:香港2核4G云服务器低至358元/年,968元/3年

ucloud香港服务器优惠降价活动开始了!此前,ucloud官方全球云大促活动的香港云服务器一度上涨至2核4G配置752元/年,2031元/3年。让很多想购买ucloud香港云服务器的新用户望而却步!不过,目前,ucloud官方下调了香港服务器价格,此前2核4G香港云服务器752元/年,现在降至358元/年,968元/3年,价格降了快一半了!UCloud活动路子和阿里云、腾讯云不同,活动一步到位,...

美国云服务器 1核 1G 100M 10G防御 39元/月 物语云计算

物语云计算(MonogatariCloud)是一家成立于2016年的老牌国人商家,主营国内游戏高防独服业务,拥有多家机房资源,产品质量过硬,颇有一定口碑。本次带来的是美国圣何塞 Equinix 机房的高性能I9-10980XE大带宽VPS,去程CN2GIA回程AS9929,美国原生IP,支持解锁奈飞等应用,支持免费安装Windows系统。值得注意的是,物语云采用的虚拟化技术为Hyper-V,资源全...

vbscript教程为你推荐
刷网站权重怎么才能提升网站百度权重呢照片转手绘照片转手绘用什么APPxp系统停止服务Windowsxp系统为什么停止服务宽带接入服务器目前常见宽带接入的方式有哪几种网络虚拟机虚拟机网络怎么连接去鼠标加速度请教如何正确的去处鼠标加速度~网页打不开的原因为什么我的网页打不开南北互通上海南北高架和中环互通吗?空间装扮免费空间还有那些装扮是免费的?地理空间数据云在地理空间数据云下载了包含某地区的遥感影像,在BIGEMAP下载了该地区
私服服务器租用 cn域名价格 vps服务器 工信部域名备案系统 godaddy域名解析 什么是二级域名 wordpress主机 liquidweb 私人服务器 php主机 警告本网站 vip域名 怎么建立邮箱 域名与空间 国外的代理服务器 lamp的音标 卡巴斯基官网下载 godaddy退款 winserver2008下载 linuxvi 更多