全局脚本课件_第1页
全局脚本课件_第2页
全局脚本课件_第3页
全局脚本课件_第4页
全局脚本课件_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 全局脚本5.1 ANSI-C脚本5.2 全局脚本VBS编辑器5.3 VB for Application青岛大学自动化工程学院第1页,共65页。5.1 ANSI-C脚本标识符 数据类型 运算符 逻辑运算符程序结构语句函数青岛大学自动化工程学院第2页,共65页。一.标识符3条规则: (1) 标识符必须只能由字母、数字或下划线3种符号构成,即标识符中只能 出现:字母、阿拉伯数字、下划线。 (2)标识符必须只能以字母或下划线作为开头。 (3)c语言不允许用户作为自定义对象的标识符:如 if、do、for、int等。合法:N,Sum、_total非法:Im、12h、wang(x)青岛大学自动化

2、工程学院第3页,共65页。二.数据类型1.常量 常量是在程序执行过程中值不能发生改变的数据,如1、2、-1、3.52.变量 变量是在程序执行过程中值可以发生改变的数据。 想要定义一个变量,用户需要做如下2件事情: (1) 给出变量名称(符合标识符规则)sum average (2) 给出变量的数据类型 青岛大学自动化工程学院第4页,共65页。变量数据类型:(1)整型变量 a基本整型 以int表示 16位 -3276832767 b短整型 short (int)16位 -3276832767 c长整型long (int)32位 -21474836482147483647 又分为有符号、无符号 (

3、signed) int unsigned int 065535例: int a, b; int a; long e, f; unsigned short c, d; 青岛大学自动化工程学院第5页,共65页。(2) 实型变量 实型变量分为单精度(float型)、双精度(double型)和长双精度(long double型)三类。 例:float x,y; double z; long double t; (3)BOOL变量 青岛大学自动化工程学院第6页,共65页。三.运算符1算术运算符 (+ - * / %)2关系运算符 (= = = = a+b 等效 c(a+b)关系运算符 a=bc 等效 a

4、=(by) 语句 z=x;(2) if(表达式) 例如 : if(xy) 语句1 z=x; else else 语句2 z=y;(3) if(表达式1) 例如: if(number500) 语句1 cost=0.15; else if (表达式2) else if(number300) 语句2 cost=0.10; else else 语句3 cost=0.75; 青岛大学自动化工程学院第15页,共65页。求三个数中的最大数。 float a,b,c,max; a=5.6; b=9.9; c=4.7; if(ab) if(bc) max=c; else max=b; else if(ac) m

5、ax=c; else max=a;青岛大学自动化工程学院第16页,共65页。2. switch 语句(多分支结构)形式: switch(表达式) case 常量表达式1: 语句1; break; case 常量表达式2: 语句2 ;break; default : 语句3 青岛大学自动化工程学院第17页,共65页。例:要求按照考试等级打印出百分制分数段switch(grade) case 1: printf(“85100”);break; case 2: printf(“7084”);break; case 3: printf(“6069”);break; case 4: printf(“60

6、”);break; default: printf(“error”);青岛大学自动化工程学院第18页,共65页。3.循环控制语句1.while语句实现当型循环结构 例:求从1加到100的和。 int i,sum=0; i=1; while(i=100) sum=sum+i; i+ +; 青岛大学自动化工程学院第19页,共65页。2. do while语句 int i,sum=0; i=1; do sum=sum+i; i+ +; while(i=100);两者区别:while后的表达式一开始就为假,结果不一样。青岛大学自动化工程学院第20页,共65页。3. for语句(完全代替while,do

7、-while)形式:for(表达式;表达式;表达式) 语句 例:for(i=1;iy) z=x; else z=y; return(z); 青岛大学自动化工程学院第23页,共65页。变量的输入和输出 SetTag和GetTag 青岛大学自动化工程学院第24页,共65页。5.1.2 WinCC中的C概述 1、函数和动作的关系动作由触发器启动,函数是动作的组成部分,没有触发器,即函数在运行时不能自己执行 触发器动作C代码调用一个函数C代码函数C代码青岛大学自动化工程学院第25页,共65页。2、触发器的类型WinCC中的触发器分为时间触发和变量触发等 触发器类型定时器变量循环执行(在固定时间间隔内重

8、复执行)起始点时间确定日:月:时间周期的循环监视变量值根据变化非循环(只执行一次,起始点由日期/时间确定)青岛大学自动化工程学院第26页,共65页。5.1.3 全局脚本C编辑器 浏览窗口编辑窗口输出窗口可以看出,该编辑器中有4种类型的函数:项目函数,标准函数,内部函数和动作 青岛大学自动化工程学院第27页,共65页。5.1.4 创建函数 例 编写一个名为CelsiusConv用以实现华氏温度到摄氏温度转换的函数。在全局脚本C编辑器浏览窗口的项目函数项单击鼠标右键选择“新建”添加一个新的项目函数,如图5-8所示。 青岛大学自动化工程学院第28页,共65页。青岛大学自动化工程学院第29页,共65页

9、。5.1.5 创建动作 1. 局部动作局部动作的例子是图形编辑器中的对象调用C动作。 2. 全局动作编写全局动作的代码本体与任何其它函数相同,但不能改变代码中的函数名或修改返回值。全局动作位于与直接连接相同的执行线程上,如果它的执行时间太长,会影响项目的性能。一般来说,动作应短小简明。 青岛大学自动化工程学院第30页,共65页。例 创建一个全局动作,用来实现每隔1秒名为Tag10的变量值自动加1。 启动全局脚本C编辑器,右键单击“动作全局动作”选择“新建”,创建一个新的全局动作,通过菜单“文件另存为INC”保存为INC.PAS文件。 青岛大学自动化工程学院第31页,共65页。青岛大学自动化工程

10、学院第32页,共65页。5.1.6 使用诊断输出窗口 WinCC有三个工具用来分析动作的运行行为,即应用程序窗口GSC运行系统、GSC诊断和应用程序apdiag.exe。 青岛大学自动化工程学院第33页,共65页。例 用时间和变量触发器生成一个动作。右键单击全局脚本编辑器“全局动作”选择“新建”,出现一个空白的工作区,加入图5-16所示代码,注意返回数据类型和名称不能改变。动作不接受参数,且必须含有返回语句。此处代码用来检查变量Tag10是否为1,如果为1,将打印输出当前的时间,即变量系统变量NewTag_1中的时间。 青岛大学自动化工程学院第34页,共65页。青岛大学自动化工程学院第35页,

11、共65页。青岛大学自动化工程学院第36页,共65页。5.2 全局脚本VBS编辑器 VBScript是一种VB脚本语言,它是VB的一个子集,可以实现部分VB的功能。变量声明变量的一种方式是使用 dim 语句、public 语句和 private 语句在 script 中显式声明变量。如:dim degreesfahrenheit声明多个变量时,使用逗号分隔变量。如:dim top, bottom, left, right青岛大学自动化工程学院第37页,共65页。另一种方式是通过直接在 script 中使用变量名这一简单方式隐式声明变量。但通常这不是一个好习惯,因为这样有时会由于变量名被拼错而导致

12、在运行 script 时出现意外的结果。因此,最好使用 option explicit 语句显式声明所有变量,并将其作为 script 的第一条语句。 青岛大学自动化工程学院第38页,共65页。可以使用 const 语句在 VBScript 中创建自定义常数。如: const mystring = 这是一个字符串。const myage = 49 注意字符串文字包含在两个引号 (“ ”) 之间。这是区分字符串型常数和数值型常数的最明显的方法。日期文字和时间文字包含在两个井号 (#) 之间。如: const cutoffdate = #6-1-97# 青岛大学自动化工程学院第39页,共65页。V

13、BScript 有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。 算术运算符比较运算符逻辑运算符描述符号描述符号描述符号求幂负号乘除整除求余加减-*/mod+-等于不等于小于大于小于等于大于等于对象引用比较= is逻辑非逻辑与逻辑或逻辑异或逻辑等逻辑隐notandorxoreqvimp字符串连接&青岛大学自动化工程学院第40页,共65页。 当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减运算符。 字符串连接 (&) 运算符不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和

14、所有比较运算符之前。is 运算符是对象引用比较运算符。它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。 青岛大学自动化工程学院第41页,共65页。使用条件语句和循环语句可以控制 script 的流程。使用条件语句可以编写进行判断和重复操作的 VBScript 代码。在 VBScript 中可使用以下条件语句: if.then.else 语句 select case 语句 青岛大学自动化工程学院第42页,共65页。在 VBScript 中可使用下列循环语句: do.loop: 当(或直到)条件为 true 时循环。 while.wend: 当条件为 true 时循环

15、。 for.next: 指定循环次数,使用计数器重复运行语句。 for each.next: 对于集合中的每项或数组中的每个元素,重复执行一组语句。 青岛大学自动化工程学院第43页,共65页。在 VBScript 中,过程被分为两类:sub 过程和 function 过程。 sub 过程sub 过程是包含在 sub 和 end sub 语句之间的一组VBScript 语句,执行操作但不返回值。sub 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 sub 过程无任何参数,则 sub 语句必须包含空括号 ()。 青岛大学自动化工程学院第44页,共65页。function 过程fun

16、ction 过程是包含在 function 和 end function 语句之间的一组 VBScript 语句。function 过程与 sub 过程类似,但是 function 过程可以返回值。function 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 function 过程无任何参数,则 function 语句必须包含空括号 ()。function 过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。 青岛大学自动化工程学院第45页,共65页。WinCC中的VBS也有对象、属性、方法的概念 ,而WinCC的对象也就是跟VB一样,分为属性和事件两种。青岛大学自

17、动化工程学院第46页,共65页。 WinCC对于控件引用一般都采取定义变量使用Set变量对象.(方法或属性)引用变量来做的。 在变量读取或写入的过程中,我们要接触到一些属性和方法,例如,Read和Write方法,变量的Value属性,熟练掌握这些属性和方法相当重要。下面解释一下Write和Read方法的语法:Readdata:其中data是读取变量的方法,如果data=1,直接从AS系统读取,相当于C脚本中的Get*wait()函数,如果省略,则从WinCC变量管理器中建立的变量中读取。Writedata,1:其中data是需要写入变量的数值,1代表直接写入AS系统,相当于C脚本中的Set*w

18、ait()函数,1省略,则写入到由Wincc变量管理器建立的变量中去。青岛大学自动化工程学院第47页,共65页。读取变量的方法:(1)DimobjTagSetobjTag=HMIRunTime.Tags(变量名)objTag.Read(2)HMIRunTime.Tags(变量名).Read如果以上例程改成直接读取AS系统变量的话,程序为:(1)DimobjTagSetobjTag=HMIRunTime.Tags(变量名)objTag.Read,1(2)HMIRunTime.Tags(变量名).Read,1实例青岛大学自动化工程学院第48页,共65页。写变量的方法:1DimobjTagSetob

19、jTag=HMIRunTime.Tags(变量名)objTag.Write1向变量写入数值1也可以写为objTag.Write10向变量写入数值102HMIRunTime.Tags(变量名).Write1也可以写为objTag.Write10青岛大学自动化工程学院第49页,共65页。除了以上方法外,也可以将一个中间变量的值写入:DimobjTag,valSetobjTag=HMIRunTime.Tags(变量名)objTag.Readval=objTag.Value中间变量val存放了变量的值objtag.Writeval写入变量中去当然,其余的方法还有很多,这些都需要自己在编程过程中总结和灵

20、活运用。青岛大学自动化工程学院第50页,共65页。5.2.2 过程、模块和动作 过程是一段代码,类似C语言中的函数,只须创建一次,在工程中可以多次调用,省去了很多重复性的代码。 模块是一个文件,存放着一个或多个过程。WinCC的模块可以进行密码保护,扩展名为“.bmo”。模块根据存储在其中的过程的有效性不同而不同。标准模块包含所有项目可全局调用的过程,存放路径是ApLibScriptLibStdModule name.bmo。项目模块保护某个项目可用的过程,存放路径是 ScriptLib.bmo。 青岛大学自动化工程学院第51页,共65页。动作总是由触发器启动。在运行状态下,当单击画面上的某个

21、对象,定时时间到,或者某个变量被修改后,都可以触发动作。动作在全局脚本中定义一次,独立于画面而存在。全局脚本动作只在定义它的工程中有效,在运行状态下独立于画面系统而运行。与画面对象相连接的动作,只在定义它的画面中有效。 青岛大学自动化工程学院第52页,共65页。5.2.3 全局脚本VBS编辑器 青岛大学自动化工程学院第53页,共65页。5.2.4 创建过程 创建一个新过程时,WinCC自动为过程分配一个标准的名字“procedure#”,其中#代表序号。可以在编辑窗口中修改过程名,以便动作能够调用此过程。当保存过程后,修改后的过程名就会显示在浏览窗口中。过程名必须是唯一的,如果重名,将被认为是

22、语法错误。 青岛大学自动化工程学院第54页,共65页。例 求两个变量的平均值。按照前述步骤建立一个项目模块,输入图5-21所示代码,编译保存即可。图5-21 代码例子青岛大学自动化工程学院第55页,共65页。5.2.5 创建动作 VBS动作分类动作(action)图形编辑器中的图形对象全局动作(global action)对象属性动态化对象事件触发时间触发变量触发周期触发非周期触发青岛大学自动化工程学院第56页,共65页。5.2.6 调试诊断VBS脚本 从WinCC V6.0开始就提供了一个VBS调试诊断工具来分析运行状态下动作的执行情况,包括:GSC运行和GSC诊断应用窗口以及VBS调试器。

23、GSC运行和诊断应用窗口被用来添加到过程画面中,用法同ANSI-C脚本。不同的是,如果想要打印输出中间运算值到GSC诊断窗口中,VBS的语法是:HMIRuntime.trace():结果显示在GSC诊断窗口中青岛大学自动化工程学院第57页,共65页。1、调试器在运行状态下调试脚本可以使用的调试器有以下几种:(1)Microsoft Script Debugger,包含在WinCC中,能够在Windows2000和Windows XP环境下应用;(2)InterDev,包含在Microsoft Visual Studio的安装资源中;(3)Microsoft Script Editor(MSE)

24、Debugger,包含在Microsoft Office中。青岛大学自动化工程学院第58页,共65页。2. VBS调试器 青岛大学自动化工程学院第59页,共65页。3. 调试脚本(1)启动脚本调试器,从运行文档窗口中选择要调试的脚本,双击运行文档窗口中需要调试的脚本文件,脚步文件就会在调试窗口中打开(只读)。(2)设置断点,断点经常设置在代码中容易出错的地方。光标放到需要设置断点的地方,选择菜单“DebugToggle Breakpoint”命令或单击工具栏图标,即可在当前位置设置断点,此时要执行的代码钱标记了一个红点;切换WinCC到运行状态,触发动作使脚本运行,调试器停留在第一个断点处,并

25、用黄色高度显示。(3)单步运行。按F8键单步运行脚本文件,进行调试。(4)确定或修改变量或属性值。 青岛大学自动化工程学院第60页,共65页。5.2.7 WinCC VBS参考模型 HMIRuntimeActiveProjectActiveScreenDataSetDataItemLoggingAlarmlogsDatalogsScreensScreenActiveScreenItemDataSetDataItemLayersLayerScreenItemsScreenItemTagsTagTagSetTag青岛大学自动化工程学院第61页,共65页。5.3 VB for Application 从WinCC V6.0开始,在图形编辑器中集成了一个VBA编辑器,可以用来使组态自动化。VBA与Microsoft Office提供的VBA编辑器相似,可以直接利用VBA编程经验。 VBS和VBA的区别与联系项目VBAVBS语言Visual BasicVisual Basic可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论