我做了2个按钮A和B
A的C动作为
SetTagBit("C",1) //A置1
sleep(10000) //保持10s
SetTagBit("C",0) //A置0
B的C动作为
SetTagBit("C",0) //A置0
我按下A按钮,动作开始执行。。在执行的过程中(10s内),我按下B按钮,B的动作却要在A动作执行完成之后才会执行。。是不是有优先级的关系?怎么才能让我在按下B按钮时停止A动作?或者让B按钮的优先级高于A按钮?(注:不考虑用STEP7来完成)
问题补充:
先感谢各位的回答。
1、我试了下RENHQ链接中的单击脉冲指令5s,这个5s是每秒钟发出1次脉冲。当我按下B按钮时,A按钮还会继续执行完,直到执行完5次(每秒1次)。另外一段代码我就没试了。。太复杂了。
2、我测试了下,C和VBS可以同时执行,但是,我按下A(C脚本)再按下B(VBS脚本)后,此时在按A或B,它不会执行了,必须等A按钮的10s执行完。
3、我做的是道闸控制,开关停3个按钮,开和关的动作保持时间是10s,请问还有什么办法仅通过WINCC实现?
最佳答案
WINCC的脚本是单线程的,不执行完这个脚本,下一个不会执行的,所以在程序里面不要使用sleep
参考:
如何在WinCC中编程“Sleep”等待功能?
https://support.industry.siemens.com/cs/cn/zh/view/2013015
如果您想实现按钮的延时复位可以参考:
在WINCC中如何单击按钮发出一个脉冲信号?
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1276061&b_id=5&s_id=0&num=#anch
补充:
如果只是3个按钮的话,可以用全局脚本做的,做个内部变量用计时,全局脚本动作1S执行一次,C置位的时候开始计时,内部变量计时到10的时候复位C就好了,3个阀门,就做3个内部变量用来计时
提问者对于答案的评价:
感谢,因为时间紧,现在是在现场加时间继电器来控制,你的方法等有空的时候在测试下。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc362072.html