用S7-200编程的五个实例的解析 点击:2861 | 回复:20



wyb2866255

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

本文用S7-200编写的五个实例是根据网上网友的求助编写的,供大家参考。

1、一网友求助:“本人是PLC新手,刚学习不到一个月, 现有一个项目~~ 要对目标信号进行检测计数~~ 信号为24V直流~~ 每隔一定的时间进行信号端检测,如果为“1”即有信号,则对信号进行计数,并最终输出总共检测到的“1”的数目~~ 如果在某一次时,没有检测到信号,则立即停止工作,输出已经检测到的“1”的数目,并输出报警信号~~ 要怎么实现呢? 这里检测的是一个系统的返回信号,它只在特定的时间间隔上出现,这个时间间隔是已知的,不用去考虑~~如果在时间点上没有检测到,则证明系统故障~~为了是检测系统寿命~~
急切 PS:采用西门子S7-200系列PLC,STEP7 V4.0 SP6,组态王6.53,进行上述测试~~如果能有梯形图程序就不胜感激了~邮箱w4169349@163.com
回复:按着你的要求,编写如下梯形图,在组态王数据词典里建立I/O整数字变量VW100,设可读方式,再设 I/O字节变量M2,其BIT(M2,1)为系统启动工作位,BIT(M2,2)为报警输出位。在运行时,组态王时时从PLC读取VW100及MB2的数据,出现报警,系统工作停止,此时的VW100值,即为报警前返回信号次数,系统检查完毕始终未出现报警,按下停止按钮,此时的VW100值即为最终检测返回信号值。

2、一网友提出:“谢谢楼主,对我这个新手来说真是好东西。请教楼主用一个按钮控制电机正反转用S7-200怎么做,考虑了很久不太清楚,请您详细讲解一下,谢谢。”
我的回复:按着你的要求,我给你编了S7-200梯形图,用一个按钮起动电机正反转,又增加一个自锁按钮作为电机工作停止开关。 其工作原理:I1.1为自锁按钮,抬起位,其常闭触点闭合,使M2.0、M2.1、M2.2、M2.3皆为0状态,此时即使按I1,0启动按钮,SR触发器也不会反转,故电机停止不动。按下I1.1按钮,其常闭点断开,容许电机工作,这时,如按一下I1,0,就会使SR触发器反转,即M2.0=1、M2.1=1,M2.0=1的前沿,触发位开关,使M2.2=1、M2.3=0,M2.2=1 接通T100定时器,延时0.5秒,T100动作,其常开点闭合使Q1.0=1,电机正传运行。如再按一下I1.0按钮,使SR触发器又翻转,其M2.0=0,M2.0的后沿,触发位开关,使M2.2=0-->T00=0,电机立刻断电,同时又使M2.3=1,使T101得电,延时0.5秒T101动作,其触电闭合,使Q1.1=1,电机反转运行。....这样用一个按钮就可实现控制电机反正转。如要想使电机停止运转,抬起I1.1自锁按钮,I1.1的常闭点闭合强迫M2.0、M2.1、M2.2、M2.3四点都=0,T100、T101也=0,Q1.0、Q1.1也=0,电机停止运行。

3、网友求助:“ 现我有一设备,要求此设备运行到一定时间需要给上位机一个报警信号,提示需要更换润滑油,但设备厂家的要求是,新设备首次运行500小时需要更换一次润滑油,以后每3000小时则需要再次更换润滑油,现我有一VD变量存储设备运行时间,且已存如断电保存寄存器,请教,如何才能用最简单的方法实现以上功能;假设设备运行时间保存变量地址为VD100,报警信号为M10。希望能给出梯形图或STL程序,谢谢!”

回复:按你的要求编写的梯形图如下图,其工作原理如下:
1、MW0-MW10 设置掉电保护状态,软件下载后第一次运行,M4.0--M4.3皆处于置0状态。M4.0=0,使比较器进行的是MW2与500比较,当MW2=500时,比较器使M4.0=1、M4.1=1,向上位机发出换油信号,同时将MW2值加入VD100,再将MW2清0,如此时断电,再接通电源,由于M4.1=1,仍发出换油指示。只有上位机发回应答信号,PLC才将M4.1清0.
2、当第一次MW2=500比较器使M4.0=1后,M4.0始终保持1状态,所以以后的比较都是MW2与3000比较,每次比较完后,MW2值累加到VD100中,再清0,故可多次运行该程序。
 
4、网友求助:“八个彩灯Y0~Y7,启动后,灯每秒亮一个,即第一秒亮Y1,第二秒亮Y1,Y2,至全亮。并且可以循环进行,并有暂停和停止功能。(西门子200)MOV,ROL我只清楚一部分的程序,不知其所 ”
我的回帖,梯形图如下,供你参考:

动作原理:开机的第一个周期,SM0.1=1,使S0.1置1,进入S0.1程序段:按一下启动按钮I1.0,使M2.0=1,其前沿,使MW9=1即使M10.0=1),M2.1=1使定时器T100得电延时,延时1秒,MB10左移一位,MB10加 1 ,MB9加1,同时使M2.1=0,M2.2=1,T100断电,T96得电延时,延时10毫秒,T96动作,M2.1=1,M2.2=0,T96断电,T100得电延时…..当MB9=8时,将0 MW9, 使8个彩灯全灭,同时使M2.1=0、M2.2=0、M2.4=1,即 T100、T96断电,T101得电延时,延时1秒,T101动作,M2.1=1,M2.4=0,使定时器T100得电延时…..开始第二次循环。I1.1为暂停按钮,按一下它,使M2.7=1,其常闭点断开,程序在原位置停下,再按一下它,使M2.7=0,其常闭点又闭合,程序从停止位置继续进行。I1.2为停止按钮,按一下I1.2, MW9=0,8个彩灯全灭,程序结束。

5、有一网友提出“使用定时器实现自由设定时钟脉冲发生器功能(脉冲占空系数1:1)。






问题
1 对时钟脉冲发生器的原理还是不太理解,能不能解释一下。
2。程序中用定时器是怎么实现时钟发生器功能的????
3. 题目中说可以自由设定 ?在程序中是怎么实现的??
总之 ,对这个程序还是不能理解,如果有高手能给详细解释一下就好了。 期待中。。。。。。

我的解答:
1、时钟脉冲发生器的原理:当PLC工作执行第一条指令时,由于起始时M0.0=0,故使T0得电且立刻吸合,产生250ms正脉冲(即在250ms内,T0=1),T0=1使M0.0=1,M0.0=1又使程序转移到N001处,执行将MW100—>QW12的操作。当延时时间=250ms时,T0断电,即T0=0,使M0.0=0。由于M0.0=0,使程序不能执行转移程序指令,却使程序执行MW100加 1 指令。下一个扫描周期,由于M0.0=0,故使T0得电,T0=1且立刻产生250ms正脉冲,T0=1使M0.0=1,M0.0=1又使程序转移到N001处,执行将MW100—>QW12的工作…..就是这样,每隔250ms,MW100加 1一次,( MW100加 1指令的执行只占一个扫描周期,即M0.0=0的周期)此时的MW100相当是16位



云锋

  • 精华:1帖
  • 求助:4帖
  • 帖子:252帖 | 5541回
  • 年度积分:0
  • 历史总积分:30376
  • 注册:2005年6月24日
发表于:2010-10-11 14:21:30
1楼

好帖。

希望楼主多发此类原创帖。

懂一点点

  • 精华:1帖
  • 求助:2帖
  • 帖子:9帖 | 2674回
  • 年度积分:0
  • 历史总积分:1169
  • 注册:2008年5月13日
发表于:2010-10-29 15:13:59
2楼

值得的学习!!!!!!楼主继续发表类似的好文章

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-10-29 15:35:56
3楼
讲得非常不错呀,受益匪浅。。。。。。

#天涯

  • 精华:0帖
  • 求助:3帖
  • 帖子:100帖 | 2953回
  • 年度积分:0
  • 历史总积分:8816
  • 注册:2005年3月02日
发表于:2010-10-29 15:49:05
4楼
感谢楼主的分享。           

樱桃花开

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 150回
  • 年度积分:0
  • 历史总积分:72
  • 注册:2007年4月09日
发表于:2010-10-31 11:03:46
5楼
引用老菜鸟 的回复内容:讲得非常不错呀,受益匪浅。。。。。。



lanyang071002

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 12回
  • 年度积分:0
  • 历史总积分:102
  • 注册:2011年5月24日
发表于:2011-07-27 22:45:43
6楼

你好,我是初学者对第三题我觉得MW2应该计数天

冬夜冰城

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2011年10月14日
发表于:2011-10-19 21:33:15
7楼

顶下!!!!!!!!!!!!!!!!!!!!

HOTEAM

  • 精华:3帖
  • 求助:0帖
  • 帖子:336帖 | 23748回
  • 年度积分:0
  • 历史总积分:70347
  • 注册:2007年4月05日
发表于:2011-10-19 21:46:10
8楼

非常感谢楼主的无私奉献

 

此帖受精

程三望

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2012年2月17日
发表于:2013-09-15 15:46:08
9楼

实例4里怎么没有Q0.0-Q0.7

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2013-09-15 16:28:02
10楼

回9楼:请见后数第二条编程:将MB10-->QB0,此处就是把MB10的各位值送给Q0.0~Q0.7

  • 精华:0帖
  • 求助:1帖
  • 帖子:3帖 | 492回
  • 年度积分:243
  • 历史总积分:617
  • 注册:2007年4月13日
发表于:2013-09-17 12:47:58
11楼

感谢楼主的分享。           

少江

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 121回
  • 年度积分:0
  • 历史总积分:393
  • 注册:2010年2月04日
发表于:2014-02-05 17:00:10
12楼

有点疑惑的地方。例3中第一个网络中,MB0达到60时,MB0中的二进制数为00111100,此时M0.0到M0.7的状态应该对应为00111100,此时没有M0.0的上升沿吧?

是不是应该吧MB0=60改为等于61啊?应该等于61的时候才60分钟的吧?

我说的有什么不对的地方还望大神指正,作为新手诚意求教,有做的不好的地方希望见谅并给与批评指点!谢谢!

少江

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 121回
  • 年度积分:0
  • 历史总积分:393
  • 注册:2010年2月04日
发表于:2014-02-05 17:18:55
13楼

引用 少江 的回复内容: 有点疑惑的地方。例3中第一个网络中,MB0达到60时,... 


 网络3同理,而且后面似乎与题目不符,变成500天报警,然后再3000天报警。。。要求似乎是小时啊!

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2014-02-05 21:14:15
14楼

12楼:谢谢你的提醒,现将例3 的程序重新编写,你再看看!




Peng621

  • 精华:1帖
  • 求助:7帖
  • 帖子:8帖 | 98回
  • 年度积分:0
  • 历史总积分:153
  • 注册:2014年2月02日
发表于:2014-02-15 14:54:27
15楼

非常好的贴,恳请楼主多发此类贴,受益匪浅啊。。。。。  

aijiaren

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2014年1月10日
发表于:2014-03-07 10:30:42
16楼

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

lzg20140308

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 8回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2014年3月08日
发表于:2014-03-08 11:49:41
17楼

要积分吗 ,怎么才能有积分呢.

xuedaozhe

  • 精华:0帖
  • 求助:3帖
  • 帖子:11帖 | 105回
  • 年度积分:0
  • 历史总积分:59
  • 注册:2011年2月23日
发表于:2014-03-08 21:16:57
18楼

感谢楼主的分享。        

bwjay

  • 精华:0帖
  • 求助:1帖
  • 帖子:3帖 | 17回
  • 年度积分:2
  • 历史总积分:287
  • 注册:2014年3月20日
发表于:2014-03-20 22:00:37
19楼

楼主好人啊,顶顶顶顶顶顶顶顶顶顶

justme

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 31回
  • 年度积分:0
  • 历史总积分:36
  • 注册:2008年3月08日
发表于:2014-03-21 16:55:00
20楼

看的额有点晕乎哦

非常好的贴,恳请楼主多发此类贴,受益匪浅啊


热门招聘
相关主题

官方公众号

智造工程师