题目:PLC在喷泉中的应用
来源:《PLC应用技术开发与工程实践》
编程平台:三菱公司FX2N系列
控制要求:
1) 喷泉有A,B,C 3组喷头;
2) 按动开始按钮后,A组先喷,10秒后停,然后B组和C组同时喷;
3) B和C喷10秒后B停,再10秒后C停;
4) A,B又喷,5秒后,C也喷,持续10秒后全部停;
5) 再5秒后重返上述2)到4)步;
6) 按动停止按钮后,A,B,C 3组喷头全部停.。
错误一:按照要求C组喷头首次喷发20秒之后应该停止,但该程序没有在规定时刻停止C的喷发。
原因分析:
C的喷发受到M1,M2和M3的控制,它们分别控制C组的第一,第二和第三次喷发。在第二次喷发结束之后,M2为0,喷发本应停止,但调试中发现C的输出(Y0002)继续为1,单步调试发现, 此时M1为1,由此造成C组输出继续。分析发现,产生M1的梯形图有错。应该使用M1来产生反馈,但程序中用了B组的输出变量Y0001. 该变量恰好在C组第二次喷发之后重新置1。因此造成了C组继续喷发。将此处改成M1之后这一错误即可消除。
错误二:程序开始后50秒,A组喷发应该重新开始,但实际运行中并未开始。
原因分析:
这是一个定时时间写错的简单错误。定时器T4设定的时间应为5秒(50),但梯形图中错写成100(该书指令表程序中也是写50,梯形图中是一个失误)。
错误三:在纠正了上面两个错误之后,程序依然无法通过测试。50秒之后,C组不应该开始喷发,但实际运行中喷发。
原因分析:
50秒之后,程序进入下一周期。此时程序该如何运行在原书中没有清楚描述,这属于描述不全。根据程序的具体实现,可以看出作者的意图是在50秒之后把整个喷发过程重演一遍。基于这样的理解,程序应该在50秒之后开始A组喷发,但程序运行结果是,不但A组喷发,而且C组也喷发,后一行为不符合规定。
出现这一现象的原因在于,M0的梯形图中使用了Y000来实现反馈。这一错误同第一个错误类似,只是这一方式在一个周期的运行中没有问题,在第二周期中就会出现问题。在该图中用M0取代Y000就能消除这一错误。
消除上述错误之后的程序: