解析用S7-200编写的二段程序的编程思路与技巧 点击:737 | 回复:5



wyb2866255---王者之师

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

          解析用S7-200编写的二段程序的编程思路与技巧

    本文展示的这二段程序都是为求助帖编写的,并对其编程思路与技巧作以解析,供大家参考,希望能对初学者学习编程有点帮助。

    一、求助帖:如题,不管用何种PLC,编写一个开关控制4个灯,按一下,1号灯亮。一号灯亮后,再按一下开关,就关掉,如果按两下开关,就2号灯亮,再按就关掉,如果按3下,就3号灯亮,再按就关掉,4号灯同理。

回复:此面题确实有些难度,现用S7-200编写一段程序供参考:

1、 编程说明:Q0.0 为一号灯输出,Q0.1 为二号灯输出,Q0.2 为三号灯输出,Q0.3 为四号灯输出。此程序按1下、或按2~4下的次序可随意,再按1下,就会使前次按亮的灯熄灭。

2、  编程技巧的解析:本题目要求用一个按钮,控制4个灯的亮灭:按一下,1号灯亮。一号灯亮后,再按一下开关,就关掉,如果按两下开关,就2号灯亮,再按就关掉,如果按3下,就3号灯亮,再按就关掉,4号灯同理。

对此要求是这样实现的:按钮输入点I0.0 连接断电延时定时器T101(网络2),其延时时间=1秒。而连续按钮的间隔要求<1秒,这样当连续按几下按钮时,由于连续按钮的间隔<1秒,故使T101从第一次按下按钮起,立即吸合(T101=1),直到最后一次按钮按下抬起,再延时1秒时,T101才从吸合变断开(即T101 =1=0),在此时间内,用I0.0=1的后沿对MB10进行加1计数(网络3),这样当T1011 变为=0 时,MB10 的计数值=本次按钮按下的此数。

3、 对用比较指令判断那个灯亮灭的编程构思:开机使MB9=0,当第一次按钮结束当其T101=1的后沿出现时,进行MB9MB10比较,由于此时MB101,而MB9=0,故MB10M9,再,进行MB101234比较:

1)、如MB10=1,而MB9=0(≠2、≠3、≠4),故使Q0.0=1,即第一个灯亮。

2)、如MB10=2,则使Q0.1=1,即第二个灯亮。

3)、如MB10=3,则使Q0.2=1,即第三个灯亮。

4)、如MB10=4,则使Q0.3=1,即第四个灯亮。

5)、将MB10送入MB9,再将MB10=0.

再按按钮当其T101=1的后沿出现时,进行MB9MB10比较:

1)、如MB9=MB10,且MB10=1说明前一次按按钮的次钮=1,故使Q0.0=0,即第一个灯灭。

2)、如MB9MB10,且MB10=1MB9=2时,说明前一次按按钮的次钮=2,本次按按钮的次钮=1,故使Q0.1 =0,即第二个灯灭。

3)、如MB9MB10,且MB10=1MB9=3时,说明前一次按按钮的次钮=3,本次按按钮的次钮=1,故使Q0.2 =0,即第三个灯灭。

4)、如MB9MB10,且MB10=1MB9=4时,说明前一次按按钮的次钮=4,本次按按钮的次钮=1,故使Q0.3 =0,即第四个灯灭。

本程序由于巧妙的运用断电延时定时器的断电滞后断开的特点,结合计数、比较指令的灵活运用,使该程序可准确执行命题要求的控制动作。经上机运行验证,动作正确无误。

 

二、求助帖:那位老师能帮我做一下下面这个控制程序的梯形图,用西门子STEP7软件谢谢

设计一个启动程序。按下启动按钮,M1启动作正转,五秒后自动停止,三秒后自动反转,再五秒自动停止,再三秒自动正转。如此循环。按下停止按钮自动停止工作。

回复:我给你出个梯形图,只用2个定时器,即可实现控制要求,你可分析一下动作原理:

      该程序上机运行正确。

又问:不明白,1QB0取或,是不是Q0.0,Q0.1都是1啊?能使后面有输出吗?后边置位复位指令矛盾吗,是不是互锁呢?不明白能讲讲吗谢谢大虾

     动作说明:按下启动按钮(I0.0=1QB01相或,其结果使QB0=1,即使Q0.0=1,电机正传运行,Q0.0=1使定时器T101得电开始延时,延时5秒时间到,使T101=1,此时Q0.0=1,故使Q0.0=0(正转停),且使M0.0=1M0.0=1使T102得电延时,延时3秒,T102=1,此时M0.0=1,故使M0.0=0,又是Q0.1=1,即电机反转运行,而M0.0=0使T101失电而断开。Q0.1=1使T101得电延时,延时5秒,T101=1,此时Q0.1=1,故使Q0.1=0(反转停),且使M0.1=1M0.1=1使T102得电延时,延时3秒,T102=1,此时M0.1=1,故使M0.1=0,又是Q0.0=1,即电机正转运行,而M0.1=0使T102失电而断开。。。。

    按停止按钮(I0.1=0,使M0.0M0.1Q0.0Q0.1皆为0,电机停,电路回复起始状态。

这里要说明的是:按下启动按钮(I0.0=1)用或指令代替而不用使Q0.01指令,就是为防止输出双线圈引起动作不正常。

本文到此结束,如有不妥之处,请给予指正,本人深表感谢!




duoshaogushi

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 22回
  • 年度积分:0
  • 历史总积分:82
  • 注册:2011年3月22日
发表于:2012-12-15 17:12:49
1楼
很透彻,思路清晰,大师果然是大师

zhangsanjian

  • 精华:0帖
  • 求助:3帖
  • 帖子:8帖 | 387回
  • 年度积分:1400
  • 历史总积分:1888
  • 注册:2006年2月06日
发表于:2012-12-17 21:57:07
2楼
回复内容:
对:duoshaogushi关于很透彻,思路清晰,大师果然是大师 内容的回复:


谢谢,学习了,正需要用

非凡2013

  • 精华:0帖
  • 求助:54帖
  • 帖子:64帖 | 350回
  • 年度积分:3
  • 历史总积分:1036
  • 注册:2013年6月17日
发表于:2013-08-23 14:42:48
3楼

在第一个例子里面,为什么T101的后沿出现时先执行比较指令,而不执行下面的传输指令,按您的意思是上面的比较完以后才会去执行下面那条传输指令?

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2013-08-23 16:22:49
4楼

   回3楼:是的,程序运行是按你编写的语句的前后顺序一步一步进行的。如在第一个例子里,T108的后沿出现,先执行MB9≠MB10的比较指令后的各条指令后,再执行MB9=MB10的比较指令,最后才执行将MB10->MB9的MOV传递指令。

非凡2013

  • 精华:0帖
  • 求助:54帖
  • 帖子:64帖 | 350回
  • 年度积分:3
  • 历史总积分:1036
  • 注册:2013年6月17日
发表于:2013-08-23 17:16:23
5楼

回复内容:

对: wyb2866255---王者之师     回3楼:是的,程序运行是按你编写的语句的前后顺... 内容的回复!


知道了 谢了    


热门招聘
相关主题

官方公众号

智造工程师