IS Sales TAS 2012.02/TECH Talk/,For internal use only.,Mastertitelformat bearbeiten,Mastertextformat bearbeiten,Zweite Ebene,Dritte Ebene,Vierte Ebene,Fnfte Ebene,*,Mastertextformat bearbeiten,Zweite Ebene,Dritte Ebene,Vierte Ebene,Fnfte Ebene,Mastertitelformat bearbeiten,IS Sales TAS 2012.02/TECH Talk/For internal use only.,*,WinCC,Visual Basic,Script,Chen Zhi,North TCS,*,调试诊断,脚本系统,整个,WinCC,系统通过完整和丰富的编程系统实现了双向的开放性,脚本系统使得,WinCC,更加灵活、功能更加丰富和强大,借助,C,脚本,,WinCC,几乎可以通过,Win32 API,无限制地访问,Windows,操作系统及该平台上各种应用的功能,VBS,脚本从易用性和开发的快速性上具有优势,VBA,的主要目的是让使用者能够轻松扩展,WinCC,软件的功能,WinCC,的脚本系统,VBS,脚本,变量读写,例程分析,*,易于学习,程序具有良好的容错性,WinCC,集成了微软基于,VB,的运行期脚本语言,使用微软标准的工具编辑和调试,能够访问,ActiveX,控件和其它,Windows,应用的属性和方法,WinCC,使用,VBScript,的例子,WinCC,中实现动态化(图形,编辑,器中,),WinCC,对象动态化,集成,ActiveX,控件,读写变量,、,启动报表,连接,Office,应用,(Excel,Word,Access),连接数据库,通过,Microsoft Outlook,发送电子邮件,集成,Microsoft Internet Explorer,集成,Adobe Reader,Visual Basic S,cript,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,VBS,可实现类似,ANSI C,的功能:,基于对象,(VBS)/,基于功能,(C),例如,读变量:,VBS,代码:,Tag.Read,C,代码:,WORD value=,GetTagWord(“Tag,”),VBS,可用于:,读写过程值,修改对象属性,创建报警,访问外部应用程序,访问数据库、邮件、,Windows,等,图形编辑器中的,VBS,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,VBS,可用于对象属性和事件,图形编辑器中的,VBS,属性任务,循环或变量触发脚本,通过返回值设置属性,子程序使用“,Item”,传递参数,属性任务和事件任务可同时执行(独立脚本线程),脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,事件任务,事件触发脚本,子程序使用“,Item”,传递参数,*,VBS,对象模型,(WinCC V7),对象和列表,对象,对象提供的属性,WinCC V7,新增了,Alarm,对象,可以通过该对象创建和访问报警条目,HMIRuntime,对象例子:,HMIRuntime.Stop,取消激活,Layers(1).visible=vbFalse,关闭,0,层,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,触发器,动作,命令1,命令2,过程,C,命令,N,过程是,一段代码,类似于,C,语言中的函数。,模块是一,个文件,存放着一个或多个过程,。,模块,过程,A,过程,B,过程,D,过程,E,过程,C,命令,A,命令,B,过程(,Procedure),模块(,module),和动作,(atcion),VBS,的过程、模块和动作,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,运行系统的优化,运行状态下,通过动作调用某个过程时,包含此过程的模块也会被加载,。,模块越大,包含的过程越多,模块加载的时间就越长。,需要加载的模块越多,运行系统的性能越差。,因此,,,需要,合理,地,组织模块,,将相互关联的过程放在同一模块中,。例如,:,可以把用于特定系统或画面的过程,放,在一个模块中。,也可以按照功能来构建模块,。比,如,把具有计算功能的过程放在一个模块中。,VBS,的过程、模块和动作,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,WinCC,变量读写,异步,/,同步,异步读,VBS:read(C:GetTagXXX),第一次读取变量时,需要向,AS,系统请求数值,并且将该过程变量添加到映像区。此后,映像区中的变量周期性地(触发周期,/2,)从,AS,系统请求数值。再次读取变量时,直接将映像区中的数值返回。,关闭画面时,映像区中的变量注销。,如果变量是在全局脚本中请求的,在,WinCC,运行期间,变量始终保留在映像区中注册的状态。,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,WinCC,变量读写,异步,/,同步,同步读,VBS:read(1),(C:GetTagXXXWait),此方式直接从,AS,系统读取当前值。,同步读比异步读要花费更长的时间,所需时间取决于具体的,AS,系统和通道。,为了避免性能问题,尽量避免周期性地使用同步读的方式。,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,WinCC,变量读写,异步,/,同步,异步读与同步读的比较,异步读第一次读取变量时,需要向,AS,系统请求数值,并且将该过程变量添加到映像区,因此比同步读的第一次读取需要更长的时间。,异步读要求映像区中的变量周期性地从,AS,系统请求数据,这增加了系统的基本负载,使用同步读(非周期性)不存在该问题。,再次读取变量时,异步读直接将映像区中的数据返回,变量读取的时间不受,AS,系统和总线负载的影响。同步读直接从,AS,系统读取当前值,比异步读方式要花费更长的时间。,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,WinCC,变量读写,异步,/,同步,异步写,VBS:write,(C:SetTagXXX),此方式将数值分配给变量管理的写任务,并立即返回调用语句继续执行,系统不等待数值真正写入。,调用者不知道数值何时真正写入。,同步写,VBS:write,1(C:SetTagXXXWait),此方式将数值分配给变量管理的写任务,并等待数值真正写入后才返回调用语句。,与异步写相比,同步写要花费更多时间,所需时间取决于具体的,AS,系统和通道。,为了避免性能问题,尽量避免周期性地使用同步写的方式。,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,VBS,的调试与诊断,使用微软的脚本调试器,(Microsoft Script Debugger),,可以实现:,使用,Running Documents,察看需要调试的脚本源代码;,脚本的断点设置、单步运行调试等;,使用,Command Window,显示或修改变量和对象的属性;,监控脚本的执行过程。,使用,HMIRuntime.Trace,输出变量值和提示信息到,GSC,诊断窗口。,错误诊断,使用,LastError,、,ErrorDescription,和,QualityCode,等属性进行错误诊断。,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,WinCC,例程分析,例程:,变量读写,属性,返回值,/Item,线程,描绘曲线,脚本系统,VBS,脚本,变量读写,调试诊断,例程分析,*,Thank you!,*,