用S7-200编写的二个小程序及解析
这里展示二个小程序都是解答网友的求助帖编写的,并对编程构思及编程技巧作以分析,望能对初学者有所帮助,如有不对之处请给予指正,谢谢!
一、网友求助帖:“各位大侠,请问在s7-200中用普通开关做一转信号,能检测到每秒50个脉冲吗,我用来检测转速。谢谢”
回复:完全可以,如转速在50HZ左右,用普通输入口输入开关的检测信号就可以,用不着使用高速计数器。为使测得转速准确,计数采样可适用SM0.5 秒脉冲,方法是:用SM0.5的前沿(或后沿)对MB10进行加1计数,其M10.0将输出正负脉宽都=1秒的方波,再用M10.0与接测转速的输入点(如I0.1)脉冲的前沿串联,对MB0进行计数,其MB0的计数值即为转速。见下图:(I0.1接测转速开关)
解答:完全可以。这里的M10.0=1的前沿先将MB0 清零,确保在M10.0=1脉宽(=1秒)内,用I0.1的前沿对MB0进行从0 开始的加计数,并可确保每一个I0.1=1的脉冲,MB0只加1,当M10.0=0时,MB0 的计数值就=转速,此值可保持1秒(即M10.0=0的时间内,可供显示或记录)。如不用前沿(或后沿)直接用I0.1计数,则在I0.1=1的时间内,MB0将不停地加1计数,其值就不是转速了,切记一定要用沿触发计数。
二、求助:我是想要一个脉冲输出口,先发100个,隔10S再发100个,这样子循环。 请高手指点!谢谢
回复:给你编个程序供参考:
SBR_0 时间中断初始化子程序
INT_0 中断子程序 产生周期=0.1秒的脉冲
程序解析:本程序是采用50ms时间中断产生0.1秒的脉冲(M4.0),用它对MB2进行加1计数,MB2每计满100,时间正好=10秒,再使MB0 加1,其M0.0将为正负脉宽都=10秒的方波脉冲,用它与M2.0相串联,输出给Q0.0,就可实行10秒内输出100个脉冲,停10秒后再在10秒内输出100。。。。
以上是用S7-200编程,由于S7-200无0.1秒时钟脉冲,故用时间中断来产生0.1秒脉冲。如用欧姆龙编程就可直接用0.1秒时钟脉冲来计数,可省掉时间中断简化程序
如果想缩短输出100个脉冲的时间,仍保持停10秒再输出100个脉冲,可提高输出的脉冲频率,但如仍用普通输出口做输出,其输出频率应控制在100~200HZ以下,下面就是用定时器构成振荡脉冲编写的程序:
这个程序的输出脉冲频率=100HZ,输出100所用时间为1秒,涉及编程技巧有几处:
1、S7-200的PLC最小的计时单位为1ms的定时器只有4个,为留做它用,故选用的定时器T99与T100(其最小的计时单位为10ms),各定时为10ms,其振荡频率=50HZ,为获得100HZ振荡脉冲,采用T100的前后沿接断电延时定时器T96,延时时间设定为5ms,这样由T96构成的脉冲其频率=100HZ,脉宽为5mS。用它输出给Q0.0,就可使Q0.0 输出完整的脉宽皆=5ms的100个脉冲。
2、定时器T99与T100构成50Hz可控振荡器,即:M1.0=0时振荡,M1.0=1时停止振荡。 用MB0与100比较,如相等,使T101得电且开始10秒延时,在此期间,使M1.0=1,故使T99与T100构成50Hz可控振荡器停振,使Q0.0 在10秒无输出脉冲。T101延时时间到,T101=1,使MB0=0,又使M1.0=0。T99与T100构成50Hz可控振荡器又开始振荡,Q0.0 又开始输出脉冲。
楼主最近还看过