WinCCVBScript教程一(2010-05-0108:01:04)转载标签:winccvbscritp教程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网WinCCVBScript教程二语法(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)=256A(1)=324A(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()DimmyDatemyDate=#2/13/95#IfmyDateNowThenmyDate=NowEndSub要运行多行代码,必须使用多行(或块)语法。多行(或块)语法包含EndIf语句,如下所示:SubAlertUser(value)Ifvalue=0ThenAlertLabel.ForeColor=vbRedAlertLabel.Font.Bold=True