要求分析:
当用户按下急停按钮的时候,所有输出保持原状,释放急停按钮的时候,强制所有输出继续保持原状,系统自动控制的权力被架空。直到用户手动解除急停状态,恢复系统自动控制权。
如果具体要求如上所述,那么解决方案如下:
1、设计一个起保停电路。启动按钮就是楼主说的急停按钮,我们起名为架空钮。另外设计一个停止按钮,作用就是在需要到时候解除急停状态,暂命名为恢复钮。起保停电路驱动的一个线圈,某个位,暂时起名为牛逼位吧。具体执行逻辑,就是当用户按下架空钮的时候,牛逼位闭合,当用户按下恢复钮的时候,牛逼位断开。
2、在程序中设计一个输出的拷贝动作。确保在每个扫描周期中,将所有的输出位状态拷贝到某个地址当中,具体地址类型就看输出有多少个点了,最好是在32个点之内,当然,多了也不怕,就是多用几次指令的事情。这里我们暂时称这个地址为“仓库”。这个应该不难理解,如果是西门庆的话,一个MOVD指令就能拷贝32个位的状态。每个扫描周期都进行刷新,确保目标地址“仓库”的数字量=上个扫描周期中的输出数字量。
3、在整个用户程序的最后,用牛逼位驱动一条或者多条MOV指令。具体逻辑就是,当牛逼位闭合的时候,将仓库地址中的数据,全部拷贝到输出地址中。
OVER!