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