最近遇到一个问题,客户打电话说程序有问题,但是自己模拟程序却没有任何问题。终于客户方便了,远程监控了下程序,发现一个停机命令的变量始终为1了,在wincc画面中,与这个变量链接的是一个“按钮”,在这个按钮上,当按下鼠标左键时,变量置为1,当松开鼠标左键时,变量置为0,按道理讲这个变量在松开鼠标后就应该变为零(程序中没有写入,只有读取)。这个问题很少见,现在用的博图V16,之前在用WINCC7.3的时候也遇到过,偶尔会出这种问题。现在想彻底把这个问题解决掉,原打算在wincc里把问题解决,想着鼠标按下变量为1,延迟1秒,变量为0,不知道这种能否方便的实现。朋友建议在程序里去复位,最直接的办法就是对每个设备的按钮信号都做延迟复位,但是设备多了后就比较麻烦了,增加负担。每种设备都有自己的控制块,想着把信号复位的功能集成到控制块里,这样也方便,信号类型为IN,第一次没改变类型,当信号为1是,延时1秒复位,编译时提示有问题,把信号类型改为INOUT后,编译通过。阀门有很多,采用多重背景的方式,在FB2中调用同一个控制块FB1,因为控制块FB1已被更改,在FB2中更新阀门块的时候,发现有的阀门可以自动更新,有的需要手动去更新。观察发现FB1的引脚上只有一个变量时可以更新,当有多个变量并联时就不行了,想想也是,对输入输出类型的变量进行写入,单个变量可以,多个并联的貌似不行啊,貌似行不通