用S7-200对较难命题编程的几个实例与解析(续一)
网上有很多求助PLC编程的帖子,很有探讨价值,我经常帮助他们去编程,这不仅是帮助他们解决问题,而且对己也是一种锻炼与提高。现选出几个求助帖,都是具有一定难度的编程命题,它可以使我们增强思维,提高编程的技巧和能力。现将这几个帖子并同我为之编写的程序一起贴出,愿与大家共享与探讨,如有不对之处,请给于指正,本人深表感谢。
三帖、这也是网友的求助帖,经整理为:
输入点4个:I0.0、I0.1、I0.2、I0.3; 输出点2个:Q0.0、Q0.1。
要求:
1、4个输入点分别有脉冲信号输入,其四路连续累计9个输入脉冲信号的时间间隔 < 1 分钟时。其输出Q0.0=1,否则Q0.0=0。
2、4个输入点分别有脉冲信号输入,其四路连续累计15个输入脉冲信号的时间间隔 < 1 分钟时。其输出Q0.1=1,否则Q0.1=0。
编程构思:本程序采用二个指针指令,一个首址为VB100,指针为VD80;另一个首址
为VB200。指针为VD84。初始化将VB0、VB1、VW2清0.。用I0.0~I0.3四个输入信号的
后沿并联触发M0.0,这样那路最先出现又最先结束,将M0.0置1,M0.0=1开始秒脉冲对
VW2加1计时,计时中那路出现输入信号,其前沿VW2计时值送入VD80与VD84指针所
指的地址中。且判断输入脉冲数(VB0)<=9,如<=9,VB0加1,指针VD80加2。同时判断
VB1,如VB1<=15,则VB1加1,指针VD84加2。且使M0.1=1。
在M0.1=1扫描周期内,先判断VB0=9?如=9,再判断VB3<=60,如<=60 则使Q0.0=1,
否则使Q0.0=0。同时又判断VB1=15?如=15,再判断VB3<=60,如<=60 则使Q0.1=1,
否则使Q0.0=0。
在M0.1=1扫描周期内,如果VB0=10时,用VW2-VW100=MW4,判断MW4<60 则
使Q0.0=1,否则使Q0.0=0,再将VW102为首址的连续9个字的内容前移到以VW100为首
址的连续9个字里。同样如果VB1=16时,用VW2-VW200=MW6,判断MW6<60 则使
Q0.1=1,否则使Q0.1=0,再将VW202为首址的连续9个字的内容前移到以VW200为首址的
连续9个字里。详见梯形图:
四帖:网友求助:“S7-300编程实现一个输入四个输出顺序输出:就要希望实现第一次按i4.1,输出m1,第二次输出m2,第三次输出m3,第四次输出m4.如此循环。一次输出一个”
回复:我用s7-200编了你所要的梯形图,上机运行正确无误,并将此程序翻译为S7-300,供你参考.。
s7-200梯形图:
用S7-300的梯形图:
对程序的解析:这二个程序的编程特点就是巧妙地运用循环左移、与、或等编程指令编写的。使程序短小精悍。以S7-200程序为例:当第一次按钮时由于M1.0=0,故不执行第二网络指令,只能执行第三网络指令,即先将MB0置数为0001_0001,再将M1.0置1,M1.0=1进行与、或运算,将MB0的低4位数0001送入QB0的低4位,使Q0.0=1,而QB0的高4位不受影响(即仍保持原状态)。当第二次按钮,由于M1.0=1,程序执行第二网络指令而不再执行第三网络指令,即使MB0循环左移一位,即0010——0010,再进行与、或运算,将MB0的低4位数0010送入QB0的低4位,使Q0.1=1,而QB0的高4位仍不受影响……,故可达到每按一次按钮,输出口Q0.0~Q0.3 只有一位输出,而且是依次循环输出的控制目的。
S7-300没有字节循环指令及字节与或指令,采用双字循环移位、字与、字或等指令完成的,故编程显得不易被看懂,但二者思路是一样的,大家按我上述说明去分析一定会看懂的。
本续篇只举二例,整理后再续。
楼主最近还看过