2024年3月16日发(作者:)
使用ApDiag工具进行WinCC脚本诊断
1使用ApDiag工具进行WinCC脚本诊断概述
WinCC 的C脚本功能非常强大,可以提供较高的自由度。 但是,不恰当地组态和使用脚本功能会显著降低系
统性能,也可能导致系统崩溃。本文所讨论的脚本问题主要为C脚本的阻塞和挂起问题,即如果在过小的周期
内正在运行的动作太多或者动作的执行时间过长(要处理的动作将越聚越多),或者动作已被挂起(休眠、循
环、输出对话框、等待另一个应用程序的响应...),则等待队列可能会溢出。所有其它动作均将积聚在等待队列
中,不能及时进行处理。
针对以上问题,可以使用 ApDiag 诊断工具进行分析和诊断,ApDiag 工具主要可以提供以下功能:
1. 监控当前请求队列中待处理的动作数。
2. 判断脚本是否发生阻塞。
3. 帮助定位发生阻塞的动作。
4. 定位导致脚本阻塞的函数。
5. 启动将重要脚本诊断值保存在变量中的功能。
6. 设置诊断信息输出到窗口、文件或被删除。
……
诊断工具 位于安装目录的“...SiemensWinCCUtools”文件夹中,双击即可启动该应用程序。关于
ApDiag 的详细使用方法,请参见帮助文档目录中的“WinCC 诊断”一章。
另外,关于WinCC脚本的基本诊断方法,包括“GSC诊断窗口”和“GSC运行系统窗口”(在对象选项板中,选择
“智能对象应用程序窗口”,在“窗口内容”对话框中选择“全局脚本”,在“模板”对话框中,选择“GSC 诊断”或
“GSC 运行系统”即可)的使用,请参见视频“V0742 WinCC跟我做:WinCC 脚本调试与诊断方法”,链接如
下:
2 ApDiag 诊断工具提供的主要功能和使用方法介绍
以下介绍了6个主要的功能和相应的使用方法。注意,要及时关闭不用的诊断功能,以避免在运行系统运行期
间降低系统性能。
2.1监控当前请求队列中待处理的动作数
功能描述:根据当前请求队列中待处理动作数的变化趋势,判断脚本是否发生阻塞。
使用方法:
首先,在画面上放置“GSC 诊断窗口”,运行WinCC时,打开ApDiag 工具,选择“Info”菜单下的“Count of
Actions in RequestQueue”菜单项,将输出当前请求队列中待处理的动作数,其中包括来自全局脚本的作业、来自
画面的周期性作业以及来自画面的事件控制性作业。例如,在“GSC 诊断窗口”中输出如下图1所示的内容,红
色框中的内容代表来自全局脚本作业的当前请求队列中待处理的动作数为8个。
图 1 使用“Count of Actions in RequestQueue”的诊断输出
运行一段时间后,再次点击“Count of Actions in RequestQueue”菜单项,红色框所示的待处理的动作数变为59
个,如图2所示。多次操作后,如果待处理的动作数有不断上涨的趋势,则说明全局脚本发生了阻塞。
图 2再次使用“Count of Actions in RequestQueue”的诊断输出
此外,在“Info”菜单中,还提供了与系统有关的其它诊断信息,如图3所示。在选择相应菜单项后,均将输出诊
断信息到“GSC 诊断窗口”,详细内容请参见帮助文档。
图 3 “Info”菜单中菜单项
2.2判断脚本是否发生阻塞
功能描述:设置“扫描速率”和“梯度”,可以监视请求队列的增长。
使用方法:
打开“Diagnostics”菜单下的“概要文件”(Profile) 菜单项。组态“Check the Request/ActionQueues”,可对缓慢增加的
等待队列进行检测。“扫描速率” (ScanRate) 值可用于定义应在增加了多少个新作业后检查队列的长度。 如果队
列的增长超出在“梯度”(Gradient) 中所定义的值,则将以 “printf ”的形式输出警告。
图 4 “扫描速率”和“梯度” 的组态
如上图4所示,如果输入“扫描速率”(ScanRate) 为“100”且“梯度”(Gradient) 为“30”,则每放置 100 个新条目
(动作)到队列中,即会检查队列的增长是否超过 30 个条目(100 个新作业中得到处理的少于 70 个)。 如
果情况如此,则以 “printf() ”的形式输出以下诊断信息,如图5所示。


发布评论