wincc中的C语言中没有delay函数

我想实现一个按钮按下后10s内不能操作该按钮,用C语言实现时发现不能识别delay();。我查了C库函数文件,没有发现delay函数需要头文件。那么如何在Wincc中实现delay效果呢?只能用空循环吗?

问题补充:
用上位机是因为下位机计时器不够用了。

最佳答案

在下位机(PLC)里做是很简单的,但是这个是一个操作逻辑上的处理,按道理说还是应该在上位机(PC)里做更合适。根据你的要求,C语言代码如下:

#pragma option(mbcs)
#pragma code("Kernel32.dll")
void Sleep(int Milliseconds);
#pragma code()
SetTagDWord("test1",GetTagDWord("test1")+1);
SetOperation(lpszPictureName,lpszObjectName,0);
Sleep(10000);
SetOperation(lpszPictureName,lpszObjectName,1);
/*注释:test1是一个内部变量用来做为测试使用,点一次把test1这个变量+1,这个可以实现你要的功能,不要使用Delay,它会一直占用CPU资源,并不会将 进程挂起!而且它的延时精度不唯一,因为它和CPU的时钟频率有关*/

提问者对于答案的评价:
大家的帮助我都很感谢,可惜最佳答案只能给一人, Ken.Carrey的回答很用心。我把最大的一份感谢给他。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc265548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐