首页 上一页 1 2 下一页 尾页

编程技巧展示之四:为网友求助帖用S7-200编写三段程序及解析 点击:3720 | 回复:32



wyb2866255---王者之师

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

     编程技巧展示之四:为网友求助帖用S7-200编写三段程序及解析

   本文介绍的三段程序是用S7-200编写的,其命题都是由网上看到的求助帖而编写的,其编程要求有一定难度,可以通过对程序的解析,来理解与充实编程思路与技巧。

 一、求助帖:顺序随机控制,有兴趣来看看

  目的:用PLC和触摸屏(威纶通)控制8个指示灯。

要求:8个指示灯无序动作,也可以是4个指示灯无序动作,动作的顺序可以在触摸屏上设置,动作的时间间隔也可以设置。

示例:如果是8个灯动作,比如最常见的是1-2-3-4-5-6-7-8-1.这种是简单明显的,但是可以通过PLC和触摸屏我可以把顺序控制成1-3-4-2-5-6-7-8,也可以5-6-7-1-2-3-4-8.。。。。。。。依次规律进行。如果是4个灯动作,顺序也是可以设置,动作如上规律。

  回复:编程思路是这样:

在触摸屏内设置8个字节存储器:VB100~VB107和1个字存储器CW20,且与PLC通讯。

  1、其VB100~VB107这8个字节存储器分别作为8个灯泡的选中标志区:VB100为第1灯泡的选中标志区,VB101为第2个点亮灯泡的选中标志区,……VB107为第8个点亮灯泡的选中标志区。这8个灯的标志存储器的置数内容分别置数为0~7这8个数字(互不重复):旗置数=0的存储器对应的灯为第1个点亮,置数=1的存储器对应的灯为第2个点亮 ……置数=7的存储器对应的灯为第8个点亮。触摸屏可对VB100~VB107随意设定0~7这8个数,就可实现对这8个灯动作顺序的随意改变。

  2、用定时器T101作自振荡器,其定时时间不设为具体数值,而用VW20代替,其VW20可由触摸屏设定,这样就可实现动作的时间间隔也可以随时设置的作用。

  3、顺序随意控制的构思:为实现8个灯能按各自标示区(即VB100~VB107)置数的大小依次点亮,实现的办法是采用一个计数器(MB10),计数器由0开始,按给定的间隔进行加1计数,加到数=8立即请0,重新由0作加1计数。这样:MB10的值将在0~7这8个数字变化,在计数过程中,又时时用计数器的计数值(MB10)与VB100~VB107的值进行比较,与MB10值相等的标示区对应的灯亮,如:当MB10=0时,如VB103=0,则使VB103对应灯(Q0.3)为第一个点亮,接着MB10=1,如 VB00=1,则使VB100对应灯(Q0.0)为第二个点亮……从而实现按8个标示区的数由0、1、2…7,依次点亮。按上述2、3二点思路进行编程就是本程序的编程技巧之处。下面用S7-200编程如下,供你参考:






  二、求助一帖:西门子PLC比较大小VD100,VD104,VD108,VD112,VD116就大概五个的样子,不过以后还可能增加一点

比较后对应大小顺序放到VB00  ,VB01,VB02,VB03,VB04里面,例如VD104最大就在VB01里面放1,VD108最小就在里面放5,怎么才能实现啊?请教各位了

  回复:编程思路:编写一个某一双字存储器与其他4个双字存储器的值的大小进行比较判断的功能模块(子程序),且把判断结果送入对应的标志区,如用VD100与VD104、VD108、VD112、VD116的值进行比较判断,先将其标志区VB00=1(即数值最大),在进行比较:用VD100与VD104比较,如VD100<VD104, 则使VB100加1(VB100=2),否则VB100保持不变,再用VD100与VD108比较,如VD100<VD108, 则使VB100加1,否则VB100保持不变……,VD100分别与VD104 、VD108、VD112、VD116进行比较判断完后,如VB100=3,则VB100进行2次加一计数,即说明VD100与其它4个存储器比较,其值小于2个存储器的值,位于第三,如VB100=5,则VB100进行4次加一计数,即说明VD100与其它4个存储器比较,其值最小,位于第五。

   程序处理:在主程序里,每按一次启动按钮将进行5个双字存储器与其它4个存储器进行比较(即调用5次功能模块),其比较结果分别放入对应存储区即可实现。详见下面程序:

一、主程序:



  二、子程序:



 

    三、求助帖:开机顺序的取样

  有5台电机,随机开机/停止,要知道同时工作的2~5台电机中哪台电机先开启的,要怎么做?最好是梯形图的,本人语言上承认有障碍,简单的还可以难的看不明白。

  回复:编个程序供参考:







程序说明:编程思路

   1、VB0~VB4分别为第1~第5台电机启动的顺序号存储器,其存储器内容=0,表示对应电机为停车,存储器内容=1 表示是第1个启动,=2表示是第2个启动。。。这5个字节存储器可在上位机或触摸屏内设置且时时显示其内容:如:VB0=0、VB1=3、VB2=0、VB3=1、VB4=2,则可以判断此时是第2、第4、第5 三台电机运行,其第4台(VB3)最先启动,第5台(VB4)为第2启动,第2台(VB1)为第3启动.

  2、VB0~VB4的启动序号是这样进行的,网络11是当5台电机皆停车时,将计数器MB0=0。如此时第1个启动电机3,(见网络5)I0.2=1的前沿使Q0.2=1(即第3台电机启动),同时使MB0计数器加1(使MB0=1),再将MB0送入VB2,使VB2=1.再按I0.0(见网络1),其I0.0=1的前沿使Q0.0=1(第1台启动),同时使MB0计数器加1(使MB0=2),再将MB0送入VB0,使VB0=2。。。

回楼主:我的思路是这样:当一台电机停车时,将它启动时的顺序号清除,表示停车,再启动它或其它电机时,计数器照样加1计数,不用计数器减1,相反简单的进行MB0减1,会出现重号的,如:VB0=1、VB2=3、VB3=2,此时计数器MB0=3, 如将电机1停车,即使VB0=0,再将MB0减1,其MB0=2, 如此时按第5台电机,使Q0.4=1,MB0加1,其MB0=2+1=3,即MB0将3送入VB4,使VB4=3,你看:VB2=3与VB4=3就重复了。如不进行MB0减1运算,其VB4=4,这样运行的3台电机的顺序号为:VB2=3、VB3=2、VB4=4,显然这3台电机最先启动的是VB2,即序号最小的为最先启动的电机。

计数器的计数值可以大于5,各电机的的启动顺序号按数值大小比较,数值最小的为最先启动电机,数值最大的为最后启动电机。下举一例:

 电机启动顺序为,2号启-4号启-1号启-2号停-3号启-2号启。其各电机启动顺序为:

VB0=3、VB1=5、VB2=4、VB3=2 此时最小数=2,即4号(VB3=2)电机最先启动,1号(VB0=3)电机为第2启动,3号(VB2=4)电机为第3启动,而2号(VB1=5)电机为第4启动。

  有人问:这里吧,有个问题,就是取最大值看哪个是最后一个启动的没问题,但是取最小值的时候,是取的没启动的泵的0

  再回复:顺序号存储器(VB0~VB4)=0表示对应电机为停车没运行,故比较时,应去掉=0的存储器,选≠0存储器值最小者为最先启动电机。





wh2998

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 12回
  • 年度积分:0
  • 历史总积分:25
  • 注册:2011年12月09日
发表于:2014-03-05 17:39:25
21楼

学习了,谢谢楼主奉献

heru111111

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2012年4月05日
发表于:2014-03-06 17:00:55
22楼

谢谢楼主分享!~ 受益匪浅

NOPEACE

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 17回
  • 年度积分:0
  • 历史总积分:489
  • 注册:2014年3月08日
发表于:2014-03-08 15:47:52
23楼

谢谢楼主分享!~ 受益匪浅

神仙qq

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 41回
  • 年度积分:0
  • 历史总积分:1666
  • 注册:2010年3月20日
发表于:2014-03-14 19:09:36
24楼

真是个好人,高手!看样子要好好的多学习.

Possible

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 19回
  • 年度积分:0
  • 历史总积分:55
  • 注册:2013年7月25日
发表于:2014-03-19 17:07:43
25楼

不是一般好,尤其对我们这种新手来说

wolaigequ

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 135回
  • 年度积分:0
  • 历史总积分:422
  • 注册:2012年7月30日
发表于:2014-03-21 13:40:38
26楼

感谢楼主,最近开始应用西门子了,要学习一下

王者之师--维羞电工

  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 1346回
  • 年度积分:0
  • 历史总积分:5381
  • 注册:2007年9月12日
发表于:2014-03-21 15:13:11
27楼

感谢分享,楼主真是好人一个!

DannyZZ

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 109回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2014年3月19日
发表于:2014-03-24 18:30:37
28楼

西门子新手,感觉编程技巧奥妙无穷

烟波天客一瞬间

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 157回
  • 年度积分:0
  • 历史总积分:104
  • 注册:2012年12月17日
发表于:2014-04-24 18:38:36
29楼

牛谢谢分享

烟波天客一瞬间

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 157回
  • 年度积分:0
  • 历史总积分:104
  • 注册:2012年12月17日
发表于:2014-04-24 18:38:45
30楼

牛谢谢分享

beautiful_new09

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2014年1月15日
发表于:2014-08-14 09:58:05
31楼

学习了!有深度。


Anderson0372

  • 精华:0帖
  • 求助:3帖
  • 帖子:6帖 | 229回
  • 年度积分:1
  • 历史总积分:514
  • 注册:2011年12月17日
发表于:2014-08-15 19:03:38
32楼

学习了!有深度。!!!


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页