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