编程技巧展示:为一求助帖用S7-200编写一段程序及程序解析 点击:7453 | 回复:62



wyb2866255---王者之师

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

        编程技巧展示:为一求助帖用S7-200编写一段程序及程序解析

    求助帖:四个阀门的开关由四个接近开关信号控制,要求是1、同一时刻只能一个阀门开;2、当有两个以上到位信号出现时按优先顺序打开阀门;3、每个阀门只要开通就有一定的工作时间,时间未到不开通其他阀门;4、当有两个以上到位信号在等待上一阀门工作完毕的情况下要求按“先到先开”原则对阀门排序工作。采用的是西门子的S7-200PLC进行控制。胶状物体通过管路输送,末端分别由四个气动阀控制胶体进入四台双缸装药机,当其中一个缸正对阀门出口时,触发近位开关表示到位

  这一求助帖有一定难度,为此花费一定时间,编出如下程序,供大家分析。除此法编程外,还可用填表与FIFO指令,按此编程思路编程,有兴趣的网友可以试试。

       一、梯形图:

  注:(本程序经上机运行,动作正确,网络17为实验程序而编写的程序,其4个定时器的延时时间皆设定=2秒)

二、程序解析:

14个电磁阀对应PLC的输出口为Q0.0Q0.1Q0.2Q0.3,工作时间分别由定时器T101~T104控制,这4个定时器的定时时间可由触摸屏或上位机设置改变。 4个定时器的时间设置区为:VW10VW12VW14VW16。控制电磁阀打开的到位接近开关的输入地址为I0.0I0,1I0.2I0.3

2、按题意要求 规定

1)、如同时有2个以上接近开关同时到位闭合时,只容许一个电磁阀打开,对应定时器延时时间到,该阀门关闭,而另一阀门打开……阀门打开的先后次序是Q0.0优先,Q0.1次之,Q0.2再次之,Q0.3为最后。

2、)当有两个以上接近开关先后到位时,其IB0变化的输入状态按先后次序依次存入MB13MB12MB11MB10里。动作执行是先从第一次到位的接近开关的(MB13)开始判断,使其对应阀门打开,在阀门打开且尚未结束时,其他到位的阀门则等待。当工作的阀门工作完毕后,等待的阀门应按“先到先开”的次序进行工作(即先为MB12,再为MB11,最后为MB10)。

根据上述二点要求,在程序上进行如下处理:

1、网络2~网络54个接近开关到位时令MB0的对应位置1,这里采用置位指令的作用是防止各接近开关动作时产生抖动而引起采集输入状态(MB0、MB3等)的错误。

2、  网络6的解析:MB0时时随IB0变化,MB1MB0为发生变化前的状态值,当IB0

无输入变化时,其MB0=MB1,网络6不执行其动作。只有当有一个或几个接近开关到位时,其对应输入点=1,都会使MB0>MB1,则网络6立即执行:将MB0MB1进行异或运算,其运算结果送入对应存储区:如MB3=0(即第一次动作,或前次动作的阀门工作已全部结束),异或结果送入MB13。如MB3=1,即前一次动作阀门尚未结束,将异或结果送入MB12。如MB3=2,即前二次动作阀门尚未结束,将异或结果送入MB11……

异或结果送完后,将MB0->MB1,且进行MB31运算,又使M0.7=1。当下一个扫描周期到来时,MB0=MB1,不执行网络6,故使M0.7=0,即M0.7输出为单扫描周期脉冲。

如前次动作阀门尚未结束又有接近开关到位,使MB0>MB1,立即又执行MB0MB1的异或运算,此时MB3=1,故异或结果->MB12……

MB0MB1的异或运算是本程序的技巧编程之一:它能将IB0的最新到位的接近开关状态剪接出来,如变化前 IB0=0000_0010MB0=MB1=0000_0010,如此时第一与第三接近开关同时到位(即I0.0I0.2=1,其IB0=0000_0111),则使MB0立刻=0000_0111,而MB1=0000_0010MB0MB1的异或运算的结果=0000_0101,此值恰是最新到位的2个接近开关=1 的状态值,将这运算的结果送入MB12,以备当前一次动作阀门工作结束后,再按本次(MB12)输入状态进行正确操作。  

3、  网络7的解析: 定时器T101~T104的延时时间为4个阀门 的工作时间,在每个阀

门打开的同时,其对应的定时器得电开始延时,当延时时间到,对应定时器输出由01,其前沿使该阀门关闭(即QB0=0)。再判断及操作:

1)、如此时MB13=0,说明前一次动作的一个或几个阀门已全部工作结束,将MD10右移8位(即将MB12->MB13MB11->MB12 MB10->MB110->MB10,且使MB31M2.0=0,接着再判断移位后的MB13,如MB130,说明仍有等待阀门需要打开,故发出触发脉冲M2.6=1的单周期脉冲,去触发等待的阀门开门。

2)、如此时MB130,说明本次动作的几个阀门没有全部工作结束,发出触发脉冲M2.1=1的单周期脉冲,去触发等待的阀门开门。

4、  网络8~网络11的解析:为触发Q0.0~Q0.3四个阀门开门的程序。使阀门打开有3

种触发脉冲:(1M2.0=1的前沿。即:在有接近开关到位使IB0状态发生变化时,产生M2.7=1的单脉冲,如此时刻M2.0=0,则使M2.001,产生前沿脉冲。(2)、M2.1=1单脉冲。即:在由2个以上接近开关同时到位,当工作阀门关闭时还有等待阀门没有打开时,产生的单周期触发脉冲。(3)、M2.6=1单脉冲。即:当本次的所有工作阀门动作已结束,但还有尚未执行的等待阀门(即MD10移位前,其MB120)时产生的单周期触发脉冲。

3个脉冲出现,都会使对应阀门打开:此时的QB0=0,程序是从先判断M13.0开始的,如M13.0=1,使Q0.0=1、使标记M13.0=0,同时使T101得电开始延时。由于Q0.0=1使QB00,故不会使后面的Q0.1~Q0.3同时刻再置1,只有T101延时时间到,使Q0.010,后,当再次产生触发脉冲时,判断还是先从M13.0开始,由于此时QB0=0、而MB13=0,不会再次使Q0.01,接着判断M13.1M13.2M13.3各位,那位=1就将QB0的对应输出置1……

此段程序也体现出技巧编程:这样处理既解决了同时间开关到位闭合时,阀门打开是按优先循序依次工作,又解决了两个以上接近开关先后到位,其等待的阀门按“先到先开”的次序进行工作的控制作用。

    本程序解析到此结束,如有不妥之处,请给予指正,谢谢!




wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2013-03-10 21:01:43
41楼
回39楼:你说的对,是M2.7,笔误,抱歉!

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2013-03-10 21:54:59
42楼

40楼  我来回答你的提问:VW132为表的实际存入数据的个数区,VW132<>0,表示表里仍存有数据。

      程序是这样运行的:当计数器C17的计数值=12时(即工作时间到),使C17=1,而C17=1使VW126=0(见网络2),而VW126=0(即VB127=0),使工作阀门关闭(即QB0=0,见网络2),同时又判断VW132等不等于0,如VW132<>0(即判断出表里仍存有数据,说明还有等待阀门未工作),故通过FIFO指令,将表的最前数据 -->VW126。再将VB127-->QB0,使最先等待的阀门打开(即网络2的VB127-->QB0)。如判断VW132=0,说明表里已无存数,说明本次操作结束,不必再执行FIFO指令。

     从中可以看出:网络4中的第二个“VW132不等于0“,不是多余的,它起判断程序是否结束和是否执行执行FIFO指令的。

Lgj3388

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 236回
  • 年度积分:0
  • 历史总积分:925
  • 注册:2003年8月13日
发表于:2013-03-12 09:00:41
43楼

回复 益家电气:42楼的回答完全正确。

程序中使用了2个VW132<>0。前一个是用于启动后尚无任何阀门工作时检查是否有阀门需要驱动,后一个是用于每个阀门工作结束后检查是否还有阀门等待驱动。

 

焦荔

  • 精华:0帖
  • 求助:4帖
  • 帖子:18帖 | 611回
  • 年度积分:0
  • 历史总积分:3321
  • 注册:2006年11月26日
发表于:2013-03-13 11:07:05
44楼
这是一个分析帖子,要好好的学习一下了

骑着自行车走天涯

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2013年3月06日
发表于:2013-03-14 15:38:09
45楼

不错,要学习····

阿水--王者之师

  • 精华:24帖
  • 求助:348帖
  • 帖子:1616帖 | 22281回
  • 年度积分:37
  • 历史总积分:98482
  • 注册:2007年3月22日
发表于:2013-03-16 12:31:31
46楼
这个真的不错,楼主费心了! 一个分析帖子,要好好的学习一下了

zhangbin5566

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 40回
  • 年度积分:0
  • 历史总积分:37
  • 注册:2012年9月26日
发表于:2013-03-16 19:07:20
47楼
谢谢楼主!我现在正在学习中,自己试试

snow1987

  • 精华:0帖
  • 求助:30帖
  • 帖子:57帖 | 670回
  • 年度积分:0
  • 历史总积分:4548
  • 注册:2011年3月23日
发表于:2013-03-16 22:43:55
48楼
引用 阿水--王者之师 的回复内容: 这个真的不错,楼主费心了! 一个分析帖子,要好好的学习一下了



zhangsanjian

  • 精华:0帖
  • 求助:3帖
  • 帖子:8帖 | 387回
  • 年度积分:1400
  • 历史总积分:1888
  • 注册:2006年2月06日
发表于:2013-03-16 23:06:02
49楼
楼主辛苦了,让新手好好学习的实例,并且解析清楚

小孩学PLC

  • 精华:0帖
  • 求助:4帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:50
  • 注册:2013年3月16日
发表于:2013-03-17 11:41:11
50楼

时刻关注着楼主的动态

夜静天明1314

  • 精华:0帖
  • 求助:5帖
  • 帖子:9帖 | 159回
  • 年度积分:0
  • 历史总积分:532
  • 注册:2012年11月02日
发表于:2013-03-17 20:02:30
51楼
楼主费心了! 让新手好好学习的实例,并且解析清楚



王者之师—广州@阿君

  • [版主]
  • 精华:25帖
  • 求助:18帖
  • 帖子:503帖 | 6997回
  • 年度积分:0
  • 历史总积分:66772
  • 注册:2010年6月26日
发表于:2013-03-17 22:16:46
52楼
引用 小孩学PLC 的回复内容:时刻关注着楼主的动态



工控网谈毅

  • 精华:1帖
  • 求助:0帖
  • 帖子:51帖 | 295回
  • 年度积分:0
  • 历史总积分:1762
  • 注册:2007年2月12日
发表于:2013-03-17 22:21:18
53楼

经典啊。

 

 

 

纵横军团—鲁豫有约

  • 精华:0帖
  • 求助:1帖
  • 帖子:16帖 | 932回
  • 年度积分:0
  • 历史总积分:4777
  • 注册:2017年4月11日
发表于:2013-03-18 08:35:42
54楼
引用 隨風--王者之师 的回复内容:楼主辛苦了,试着学习下,非常感谢!



ylz99ljx

  • 精华:0帖
  • 求助:1帖
  • 帖子:3帖 | 19回
  • 年度积分:0
  • 历史总积分:118
  • 注册:2012年3月17日
发表于:2013-03-18 10:45:51
55楼
学习了就要顶顶起来。。。。。。。。。。。。

刘的电控

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:28
  • 注册:2009年12月16日
发表于:2013-03-18 22:27:45
56楼
以前弄得三菱,最近接触西门子案子,楼主威武!非常感谢这么详细的例子!

tsxy2096127

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2013年3月28日
发表于:2013-03-28 13:57:29
57楼

感谢楼主的分享,学习了。

不是多会

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:14
  • 注册:2013年4月18日
发表于:2013-04-18 00:53:10
58楼

牛人啊                              

huofenglin

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 10回
  • 年度积分:0
  • 历史总积分:21
  • 注册:2011年3月11日
发表于:2013-05-27 15:07:52
59楼

回复内容:

对: wyb2866255---王者之师  36楼:请你仔细看原求助帖:     1、要求是1、同... 内容的回复!


 plc本来就是逻辑控制的,在某个时刻上还是由先后顺序的,这就与编抢答器时一样,编号在前的,优先级就高是一样的。

hwping521

  • 精华:0帖
  • 求助:2帖
  • 帖子:5帖 | 76回
  • 年度积分:0
  • 历史总积分:231
  • 注册:2013年3月04日
发表于:2013-05-28 10:42:51
60楼

不容易啊!写那么多内容!


热门招聘
相关主题

官方公众号

智造工程师