用S7-200编写的二个小程序及解析 点击:1993 | 回复:7



wyb2866255---王者之师

    
  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-03-13 08:57:43
楼主

             S7-200编写的二个小程序及解析

 

     这里展示二个小程序都是解答网友的求助帖编写的,并对编程构思及编程技巧作以分析,望能对初学者有所帮助,如有不对之处请给予指正,谢谢!

    一、网友求助帖:各位大侠,请问在s7-200中用普通开关做一转信号,能检测到每秒50个脉冲吗,我用来检测转速。谢谢

    回复:完全可以,如转速在50HZ左右,用普通输入口输入开关的检测信号就可以,用不着使用高速计数器。为使测得转速准确,计数采样可适用SM0.5 秒脉冲,方法是:用SM0.5的前沿(或后沿)对MB10进行加1计数,其M10.0将输出正负脉宽都=1秒的方波,再用M10.0与接测转速的输入点(如I0.1)脉冲的前沿串联,对MB0进行计数,其MB0的计数值即为转速。见下图:(I0.1接测转速开关)

   又问:我想用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-2000.1秒时钟脉冲,故用时间中断来产生0.1秒脉冲。如用欧姆龙编程就可直接用0.1秒时钟脉冲来计数,可省掉时间中断简化程序 

 

   如果想缩短输出100个脉冲的时间,仍保持停10秒再输出100个脉冲,可提高输出的脉冲频率,但如仍用普通输出口做输出,其输出频率应控制在100~200HZ以下,下面就是用定时器构成振荡脉冲编写的程序:

这个程序的输出脉冲频率=100HZ,输出100所用时间为1秒,涉及编程技巧有几处:

1S7-200PLC最小的计时单位为1ms的定时器只有4个,为留做它用,故选用的定时器T99T100(其最小的计时单位为10ms),各定时为10ms,其振荡频率=50HZ,为获得100HZ振荡脉冲,采用T100的前后沿接断电延时定时器T96,延时时间设定为5ms,这样由T96构成的脉冲其频率=100HZ,脉宽为5mS。用它输出给Q0.0,就可使Q0.0 输出完整的脉宽皆=5ms100个脉冲。

2、定时器T99T100构成50Hz可控振荡器,即:M1.0=0时振荡,M1.0=1时停止振荡。 MB0100比较,如相等,使T101得电且开始10秒延时,在此期间,使M1.0=1,故使T99T100构成50Hz可控振荡器停振,使Q0.0 10秒无输出脉冲。T101延时时间到,T101=1,使MB0=0,又使M1.0=0T99T100构成50Hz可控振荡器又开始振荡,Q0.0 又开始输出脉冲。

  



楼主最近还看过



彩云之滇东北

  • 精华:37帖
  • 求助:5帖
  • 帖子:148帖 | 2725回
  • 年度积分:0
  • 历史总积分:21121
  • 注册:2005年6月14日
发表于:2012-03-13 09:39:05
1楼
顶一个                                                       

sxxdk

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 188回
  • 年度积分:0
  • 历史总积分:1143
  • 注册:2008年9月17日
发表于:2012-03-13 10:02:00
2楼

谢谢楼主的梯形图和解析!

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:60帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2012-03-13 10:06:52
3楼
问问楼主第二题100个脉冲的频率是多少?

zgx

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 94回
  • 年度积分:0
  • 历史总积分:160
  • 注册:2003年8月03日
发表于:2012-03-13 10:50:18
4楼
理想状态,脉冲很均匀发出,普通输入点是可以的,但实际上很可能丢脉冲,因为有些脉冲发生的时间很短,虽然每秒发的脉冲个数不多。

chanssy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 17回
  • 年度积分:0
  • 历史总积分:246
  • 注册:2008年12月25日
发表于:2012-03-13 11:05:05
5楼

希望楼主和各位PLC工作者进QQ群:187703118,一起共同研究专业,发展自身。

wyb2866255---王者之师

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-03-13 12:17:46
6楼

     回3楼:第二题由Q0.0输出的100个脉冲的频率为100HZ,其原因:T99与T100构成50HZ振荡器,该脉冲的正负方波脉宽都=10ms,用其前后沿驱动T101(定时5ms ),其T101就变成脉宽=5ms,周期=100HZ的方波脉冲,有T101输出给Q0.0,故Q0.0输出的100个脉冲的频率为100HZ。发送100个脉冲的时间=1秒。

    如用100HZ频率通过普通输出口输出,一定选用晶体管输出口,我用普通口做输出数据给打印机完全可以,这已是有10年历史了,不用担心丢脉冲。 

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:60帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2012-03-14 09:26:37
7楼
感觉还是用PTO和定时中断好些,楼上的程序受扫描周期的影响可能会出现脉冲的不均匀

热门招聘
相关主题

官方公众号

智造工程师