发布于 2009-03-10 14:59:56
0楼
这个问题是WinCC脚本系统的执行机制导致的。
可以认为WinCC 全局C脚本,全局VB脚本,画面中时间触发(包括变量触发)的C脚本和VB脚本,画面中事件触发(鼠标点击之类)的C脚本和VB脚本是6个独立脚本队列(这6个应该没问题,再有多的,我也不能肯定)。每个队列里的脚本先进先出。
如果一个脚本没有按预定时间完成(比如循环设定1s,实际里面带个休眠2s的代码),这个脚本就会挤占后续脚本的时间,队列里的脚本就会累积,直至溢出,最终导致系统慢或者死机。
如果是这个问题,在诊断文件里能看到队列中脚本超5000的信息。
建议:
尽可能用变量触发,而不是时间触发。变量触发本质也是时间循环,时间到了,值不变,脚本不执行。
如果真有每个循环都要执行的脚本,一定要确保循环时间足够。
脚本实在多,利用6个队列的原理,合理分配脚本分布。