| 作者 | 主题 |
|---|---|
|
熊猫太岁 游侠 经验值:311 发帖数:61 精华帖:3 |
楼主
主题:WinCC中代替sleep函数办法的咨询
SetTagBit("A",TRUE);
Sleep(1000); SetTagBit("B",TRUE); 代码这样写的话,在sleep的时候,程序会造成程序挂起,求指导怎么替换Sleep(1000)这个函数,要求执行完SetTagBit("A",TRUE)之后,代码延时一定时间后(延时期间,程序不能未响应)继续执行后面的代码,意思就是代码延时,而不是程序延时,我需要一个单纯的延时函数,这个函数啥都不干,就延时完之后,返回即可。 |
|
万泉河 至圣 经验值:29190 发帖数:10900 精华帖:131 |
8楼
主题:回复:WinCC中代替sleep函数办法的咨询
果然是操作员记录。
我也在这个地方遇到了必须延时的问题。 否则报警记录里面的条目是乱的。 说一下我的处理方法吧: 我是用二次操作的方式来规避了sleep的使用。 就是当操作员操作的时候,脚本先把上面的文字描述准备好。然后对话框提示是否确认操作。 然后当操作员操作确认的时候才写入报警。 以人的反应时间,无论如何也够了。 例程中就是这么做的,所有买到例程的用户基本都没提出异议。你想啊,这事情都重要到要记录下来了,谨慎点,来个二次确认绝对应当应分的呀! 只有一个,找到我说,他遇到的操作工想不要这个二次确认,为啥,懒呗!想省点力气。然后我告诉他,断然拒绝。呵呵
微信公众号:PLC标准化编程,ZHO6371995
|
|
熊猫太岁 游侠 经验值:311 发帖数:61 精华帖:3 |
11楼
主题:回复:WinCC中代替sleep函数办法的咨询
万版主的方法已经测试过了,没问题,但是在此也提出一个疑问,如果模式是CS模式的话,如果出现比较极端的情况,比如某人点击了按钮,在点击确定前另外一台客户机也点了按钮并完成操作,那么报警记录中的这些信息就会编程另外一台客户机的信息
另外测试了一下for的空循环,可行,但是必须用比较长时间的循环, 目前测试用了 for(i=0;i<2000;i++) { for(j=0;j<2000;j++) {} } 这个目前还是会出问题的,再加长会有好转 目前想法是把这两个结合起来,逻辑上可能会比较完善,但是操作量大的时候可能会大幅的影响WinCC的运行效率 |