我认真思考了这个按钮延时问题。
按钮发指令给PLC,为了可靠,需要做成延时一段时间再off。这个我现在觉得如果只是用来发指令的话其实还是采用PLC接受到信号1后由PLC复位这个信号比较合适。原因是就算WinCC发的是短时脉冲,PLC能够可靠接受到信号,PLC还是需要做沿检测的,这样PLC反而多了一些沿检测程序,多了一个静态变量来存储信号状态,不如PLC接受到信号后由PLC复位来得简单。
西门子提供的例程BST里也是这么处理的,看来确实有道理。
不过WinCC按钮实现脉冲自复位的功能还是有使用的空间的,比如这次我需要临时调试,不太可能在PLC中增加复位信号的程序,就只能由WinCC来做脉冲信号了。
问题是如何实现呢?万版主的原来的实现确实好,借助按钮的填充动态来1s周期执行计数,这样就可以实现延时了。
不过填充动态还是需要不停地执行,无论这个脉冲功能已经使用还是正在使用。总之需要不停地劳累。
问题1:普通周期动作有没有像动画触发一样有激活和灭活的功能,这样需要动态时就激活,不用时就不让触发。(也许可以在按钮填充动态使用动画触发)
问题2:如果要简单使用,不费劲编程,当然使用面板比较合适。这样按钮控制的变量也可以做成属性供用户直接改写,不用在程序中来改写。 想用一个按钮来控制PLC的一个bool变量,实现复位功能:按下Set,抬起Reset。
一开始用取反的直接变量连接,发现不能用(或是我不知道如何取反)。后来做了两个按钮来暂时替代测试,之后当然还是回到一个按钮的实现来。
用两个事件来实现,效果不能正确,原因当然是通讯的延时问题,不能检测到短暂的按下释放并有效传输到PLC。当然可以用脚本来实现,不过我感觉太麻烦了。
论坛搜到了2016年万版主的旧贴:
【万泉河】在WINCC中如何单击按钮发出一个脉冲信号?-技术论坛-工业支持中心-西门子中国 (siemens.com.cn)
有点意思,我研究了一下,还没仔细看,不过解决了我昨天的问题:可以借用控件的属性动态来做和属性无关的周期动作,这个万版主也是这么做的,看来我的没问题。
如想了解更多:西门子变频器|siemens西门子plc|西门子电机|工博士工业品采购*** (gongboshi.com)