发表于:2012/7/3 22:29:57
#0楼
用S7-200编写“暴强的题目”帖的程序及对程序解析
网上有一“暴强的题目”帖,其内容为:
1路PLC输入控制8路PLC输出
要求:
第1次按下X0,Y0启动;
第2次按下X0,Y1启动;
第3次按下X0,Y2启动;
第4次按下X0,Y3启动;
第5次按下X0,Y4启动;
第6次按下X0,Y5启动;
第7次按下X0,Y6启动;
第8次按下X0,Y0-Y3停止;
第9次按下X0,Y4-Y7停止;
第10次按下X0,Y0-Y3启动;
第11次按下X0,Y4-Y7启动;
第12次按下X0,Y0-Y7停止;
第13次按下X0,Y0-Y7启动;
第14次按下X0,Y0-Y7停止;
第15次按下X0,Y0启动
以下如此循环
最关键的是,此题目要求不准使用计数器、定时器、其他任何应用功能指令,只能用简单的与或非指令完成!
此题目看上去好像没有实用价值,但从锻炼我们的编程思路与技巧来说,仍可为好帖。如想实现此贴的控制动作,编程并不难,难在按题目要求去编,即 “此题目要求不准使用计数器、定时器、其他任何应用功能指令,只能用简单的与或非指令完成!”
编程思维:如仅用简单的与或非指令编程,必须掌握这样一个原则:
1、将第一次按钮使Y0启动的程序语句放在程序的最后,第二次按钮使Y1启动的程序语句放在第一次程序语句的前面,第三次按钮使Y2启动的程序语句放在第二次程序语句的前面……即由后向前编程,这样当程序运行时,按下X0,其输出Y1~Y7因不满足启动条件而不动,扫描到最后一条由于满足启动条件,使Y0启动输出,Y0=1,使Y1满足启动条件,但由于在这一扫描周期里对Y1的扫面判断已过去,故Y1无启动,等第二个扫描周期到来时,如再按X,才使Y1启动……。
2、选用M0.0~M0.7作为判断位,在启始的头8次按钮, M0.0=0,程序依次使Y0、Y1、Y2…Y7启动。当按第9 次时,使M0.0=1且自锁。再按扭将以次使M0.1、M0.2…M0.6为1,共形成不同的7种状态,最后一次按下,使M0.7=1, 而M0.7=1使M0.0=0.由于Y7=1不自锁,只保留一个扫描周期。用这7种状态控制上述的第8~第14次按下X0时Y0~Y7的输出状态。从而实现后7种输出功能。
说明:1、该帖在第7与第8步之间少了一步,即第8次应为按下X0,Y7启动;第9步才是现在的第8步(即以后各步下窜一步)。本程序填上这一步。2、本程序经过上机运行,证明动作无误,由于语句串联触点(位变量)太多,使语句太长,无法截取全图,故用绘图软件重画梯形图并截图贴出,供大家参考。见梯形图:
本文到此结束,如有不妥之处,请给于指正,本人深表感谢!
网上有一“暴强的题目”帖,其内容为:
1路PLC输入控制8路PLC输出
要求:
第1次按下X0,Y0启动;
第2次按下X0,Y1启动;
第3次按下X0,Y2启动;
第4次按下X0,Y3启动;
第5次按下X0,Y4启动;
第6次按下X0,Y5启动;
第7次按下X0,Y6启动;
第8次按下X0,Y0-Y3停止;
第9次按下X0,Y4-Y7停止;
第10次按下X0,Y0-Y3启动;
第11次按下X0,Y4-Y7启动;
第12次按下X0,Y0-Y7停止;
第13次按下X0,Y0-Y7启动;
第14次按下X0,Y0-Y7停止;
第15次按下X0,Y0启动
以下如此循环
最关键的是,此题目要求不准使用计数器、定时器、其他任何应用功能指令,只能用简单的与或非指令完成!
此题目看上去好像没有实用价值,但从锻炼我们的编程思路与技巧来说,仍可为好帖。如想实现此贴的控制动作,编程并不难,难在按题目要求去编,即 “此题目要求不准使用计数器、定时器、其他任何应用功能指令,只能用简单的与或非指令完成!”
编程思维:如仅用简单的与或非指令编程,必须掌握这样一个原则:
1、将第一次按钮使Y0启动的程序语句放在程序的最后,第二次按钮使Y1启动的程序语句放在第一次程序语句的前面,第三次按钮使Y2启动的程序语句放在第二次程序语句的前面……即由后向前编程,这样当程序运行时,按下X0,其输出Y1~Y7因不满足启动条件而不动,扫描到最后一条由于满足启动条件,使Y0启动输出,Y0=1,使Y1满足启动条件,但由于在这一扫描周期里对Y1的扫面判断已过去,故Y1无启动,等第二个扫描周期到来时,如再按X,才使Y1启动……。
2、选用M0.0~M0.7作为判断位,在启始的头8次按钮, M0.0=0,程序依次使Y0、Y1、Y2…Y7启动。当按第9 次时,使M0.0=1且自锁。再按扭将以次使M0.1、M0.2…M0.6为1,共形成不同的7种状态,最后一次按下,使M0.7=1, 而M0.7=1使M0.0=0.由于Y7=1不自锁,只保留一个扫描周期。用这7种状态控制上述的第8~第14次按下X0时Y0~Y7的输出状态。从而实现后7种输出功能。
说明:1、该帖在第7与第8步之间少了一步,即第8次应为按下X0,Y7启动;第9步才是现在的第8步(即以后各步下窜一步)。本程序填上这一步。2、本程序经过上机运行,证明动作无误,由于语句串联触点(位变量)太多,使语句太长,无法截取全图,故用绘图软件重画梯形图并截图贴出,供大家参考。见梯形图:
本文到此结束,如有不妥之处,请给于指正,本人深表感谢!