博图标准化编程技巧(九)解决上位机按钮粘滞问题
大家在使用国产上位软件的时候,起停设备等动作按钮一般是瞬动的,也就是按钮按下变量置1,按钮抬起变量置0。有的国产软件在特殊情况下因为脚本运行或鼠标事件处理不彻底会有按钮置0失败的情况,也就是所说的按钮粘滞了,不能正常复位。这种情况下控制逻辑有可能会出现混乱,比如启动按钮粘滞,说明启动命令一直在有效,那么停止按钮按下时设备可能因停止优先而停止,但是当停止按钮抬起时因为启动按钮粘滞会让设备重新运行起来,这个是非常危险的。为了解决这个问题最好在开发标准化控制程序模块时将命令按钮复位的功能集成到模块中,这样不论按钮粘滞的情况容不容易发生我们都能避免这个问题。
解决这个问题的方法很简单,就是当有按钮按下的时候就记录按钮按下的时间,当时间超过合理的数值时在程序块内执行复位指令强制按钮复位。当然要实现这个功能要满足两个条件:1、上位控制变量位于程序块IN-OUT接口或内部静态变量区,可以在FB内执行复位操作;2、上位控制变量是瞬动模式,不是置位模式。
以下是我处理按钮粘滞的程序命令。当有按钮按下时标志位B_PRES为1,同时计时器T_PRES计数,当按钮抬起时计时器复位。当按下时间大于16秒时给所有瞬动按钮复位,不必每个按钮单独判断。选择16秒是因为前面有按钮长按10秒和15秒的特殊动作,大家可以根据实际需要选择判断时长。
