您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 电气安装工程 > 使用C函数“Sleep”
Siemens-AutomationandDrives-Service&Support-Aut...第1页共1页2005-05-312:01自动化系统SIMATICHMI人机界面HMI软件SCADA系统SIMATICWinCCSIMATICWinCC全局脚本/动作常问问题使用C函数“Sleep”订货号:6AV637..WINCCSIMATICHMISOFTWARE6AV638..WINCCSIMATICHMISOFTWARE26ES7650..SIMATICPCS7COMPACTSYSTEM,GENERAL6ES7658..SIMATICPCS7,SOFTWARE问题:如何在WinCC中编程“Sleep”等待功能?解答:为此,可以使用WindowsAPI功能“Sleep()”。下面的样例程序演示了如何使用“Sleep”功能。#pragmacode(Kernel32.dll)voidSleep(intMilliseconds);#pragmacode()Sleep(1000);//timeinmilliseconds警告:“Sleep”函数对动作处理性能有很大的负面影响。因此,如果想用此函数的话,请注意以下几点:使用Sleep()时,C脚本的处理在特定的一段时间内被中断。在此期间内,任何对于被中断功能的请求将不被处理。而且,使用相同触发器的所有动作将不再被处理。使用相同的触发器意味着用同一个循环触发器所有动作或变量触发器的所有动作将不再被处理。如果同步地调用动作,这种调用通过一个变量触发器或事件被周期性地或非周期性地启动,而且所有这些功能使用了Sleep()函数,那么所有的动作会被终止。最坏情况下是;由于启动这四个动作将终止对所有动作的处理。如果说,在一个带10-秒延迟触发器的动作中使用了Sleep()函数。那么所有被循环调用的动作将被中断。结果是,如:用1-秒触发器的动作操作中断,除此以外,所有后继的动作也不被执行。这就是说,不仅当前的动作不被处理,其它还没有启动的动作也不会被处理。作业不被处理是因为中断仍储存在队列中。一旦中断结束,所有在队列中的动作将开始被处理。但是,中断结束后,在队列中的动作不会在他们原来指定的循环中被处理。因此,如同前面所述的那样,那么队列中剩下的动作将被一个接一个的处理而不再由触发器启动。并且这些动作只是尽可能快的被处理掉。(理论上同步)。关键字:性能提高,功能调用条目号:2013015日期:04/15/2003©SiemensAG2005版权所有-法人信息-保密政策-应用条款
本文标题:使用C函数“Sleep”
链接地址:https://www.777doc.com/doc-5332991 .html