技术论坛

 回复:WinCC中代替sleep函数办法的咨询

返回主题列表
作者 主题
熊猫太岁
游侠

经验值:311
发帖数:61
精华帖:3
楼主    2015-02-02 16:46:10
主题:WinCC中代替sleep函数办法的咨询
SetTagBit("A",TRUE);
Sleep(1000);
SetTagBit("B",TRUE);

代码这样写的话,在sleep的时候,程序会造成程序挂起,求指导怎么替换Sleep(1000)这个函数,要求执行完SetTagBit("A",TRUE)之后,代码延时一定时间后(延时期间,程序不能未响应)继续执行后面的代码,意思就是代码延时,而不是程序延时,我需要一个单纯的延时函数,这个函数啥都不干,就延时完之后,返回即可。
万泉河
至圣

经验值:29190
发帖数:10900
精华帖:131
8楼    2015-02-04 19:20:28
精华帖  主题:回复:WinCC中代替sleep函数办法的咨询
果然是操作员记录。

我也在这个地方遇到了必须延时的问题。
否则报警记录里面的条目是乱的。

说一下我的处理方法吧:
我是用二次操作的方式来规避了sleep的使用。

就是当操作员操作的时候,脚本先把上面的文字描述准备好。然后对话框提示是否确认操作。
然后当操作员操作确认的时候才写入报警。

以人的反应时间,无论如何也够了。

例程中就是这么做的,所有买到例程的用户基本都没提出异议。你想啊,这事情都重要到要记录下来了,谨慎点,来个二次确认绝对应当应分的呀!
只有一个,找到我说,他遇到的操作工想不要这个二次确认,为啥,懒呗!想省点力气。然后我告诉他,断然拒绝。呵呵
微信公众号:PLC标准化编程,ZHO6371995
熊猫太岁
游侠

经验值:311
发帖数:61
精华帖:3
11楼    2015-02-05 10:17:54
精华帖  主题:回复:WinCC中代替sleep函数办法的咨询
万版主的方法已经测试过了,没问题,但是在此也提出一个疑问,如果模式是CS模式的话,如果出现比较极端的情况,比如某人点击了按钮,在点击确定前另外一台客户机也点了按钮并完成操作,那么报警记录中的这些信息就会编程另外一台客户机的信息

另外测试了一下for的空循环,可行,但是必须用比较长时间的循环,
目前测试用了
for(i=0;i<2000;i++)
{
for(j=0;j<2000;j++)
{}
}
这个目前还是会出问题的,再加长会有好转

目前想法是把这两个结合起来,逻辑上可能会比较完善,但是操作量大的时候可能会大幅的影响WinCC的运行效率
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。