用S7-200 编程的三个实例解析之七
本文用S7-200 编写的三个实例都是本人在网上回答网友的求助编写的,程序短小,针对性强,有程序解析,特别适合初学者学习参考。
1、网友求助:“阀门11个,分7组,第一组2个,第二组1个,第三组1个,第4组一个,第五组2个,第六组两个,第7组2个。实现循环控制要求:同组阀门不能同时打开,间隔时间2小时循环切换。开启第一组阀门的第一个电磁阀延时40秒关闭,同时开启第二组阀门的一个电磁阀延时40S关闭,再开启第三组的一个电磁阀•••••,再开启第五组的第一个电磁阀延时40S关闭•••••••••••,循环两小时以后,自动切入第一组阀门的第二个电磁阀,进入循环,以此类推。起动、停止按钮各一个。
疑问:当这样是不是可以分为两组循环?但是两组之间如何进行循环?
希望高所指点,并画出梯形图不胜感激。”
回复: 楼主,根据你提出的技术要求,我给你用S7-200编写了梯形图,并经过上机运行,其控制动作完全符合你的要求,你可试试。见下图:
程序说明:I0.0为程序启动工作开关,I0.1 为停止工作开关。按一下启动开关,其后沿先进行初始化:MB0=MB1=MB2=0,MB3=MB4=1,再使M5.0=1,即开始工作:此时M3.0=1、M4.0=1,故Q0.0=1,即第一组第一个阀门打开。该程序使用SM0.5 秒脉冲对MB0 进行加计数,当计完40个数(即40S),使MB1加1,MB2加1,MB0清0,同时MB4 左移一位,即M4.0=0、而M4.1=1,使工作阀门Q0.0关闭,下一组阀门(Q0.1=1)打开....当MB1=7时,说明7组阀门已各自工作40S,使MB4=1,且使MB1=0,即第七组阀门关闭,第一组阀门(Q0.0)打开,开始第二次循环。。。当MB2=180 时,正好工作2小时,使MB3加1,MB2=0。MB3加1,使M3.0由1变0,此时M4.0=1,故此时是第一组第二阀门打开,在以下的含有二个阀门的各组都是第二阀门工作。就说这些,有什么不清楚的地方课可出来,给你解释。
再有你验证此程序时,可将MB0比较器的比较值40改为4,再将MB2 比较器的比较值180改为18,这样运行时可大大缩短运行时间。
2、网友求助:“本人新手,正在自学PLC,在编的一个程序需要用到延时,如何实现在执行一条指令后延时一定的时间再接着执行下一句指令?
望各位大侠不吝赐教,用STL写出这一小段的程序参考下,小弟先谢过了!”
回复:下面是用S7-200编的程序:
第一条空,表示正常执行的程序,第二条第三条为执行延时程序,这里设20秒延时使用转移到‘1‘处执行20秒延时,在T101延时时间未结束时,程序始终在‘1’处执行,只有延时时间到,T101动作使M1.0=0,使转移结束,才能执行下一条指令,即第4条表示延时结束后才能执行的程序。
3、网友提出:“下面是一例单按钮控制起动停止程序,本人以试过,挺实用。请朋友们说说看法,还有其他方法,让我们共同探讨! ”
回复: 还可有以下方法实现用一个按钮控制电机启动与停止:
1、第一种设计方案:
该程序是利用PLC周期性的逐条询检的特点编写的。该图的第一条的作用原理是确保按钮按下时不会因颤动出现打连发引起误动作,也可不用此条指令。第二条,T101(或 I1.0)的后沿到来,如果M1.0=0,就使Q1.0=1(输出接通),否则(即M1.0=1)Q1.0=0(即输出断开)。第三条为将Q1.0 --> M1.0,这一条的作用就是利用时间差,即第二条动作完成后,才将Q1.0 --> M1.0,从而确保第二条动作的可靠性。
2、第二种设计方案:用加1计数器实现。见下图: