编程技巧展:S7-200编写三段程序及解析 点击:475 | 回复:2



今生缘

    
  • [版主]
  • 精华:45帖
  • 求助:22帖
  • 帖子:4835帖 | 10148回
  • 年度积分:78
  • 历史总积分:111147
  • 注册:2011年3月02日
发表于:2017-01-19 20:56:41
楼主

本文介绍的三段程序是用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编程如下,供参考:

编程技巧展:S7-200编写三段程序及解析

编程技巧展:S7-200编写三段程序及解析

编程技巧展:S7-200编写三段程序及解析
编程技巧展: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

   

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


一、主程序:

编程技巧展:S7-200编写三段程序及解析

编程技巧展:S7-200编写三段程序及解析

  二、子程序:


编程技巧展:S7-200编写三段程序及解析
编程技巧展:S7-200编写三段程序及解析

 

求助三:开机顺序的取样

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

  回复:编个程序供参考:

编程技巧展:S7-200编写三段程序及解析

编程技巧展:S7-200编写三段程序及解析
编程技巧展:S7-200编写三段程序及解析
编程技巧展:S7-200编写三段程序及解析
编程技巧展:S7-200编写三段程序及解析
编程技巧展:S7-200编写三段程序及解析





程序说明:编程思路

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存储器值最小者为最先启动电机。




楼主最近还看过



研讨会宣传员_3259

  • [版主]
  • 精华:3帖
  • 求助:110帖
  • 帖子:1928帖 | 14403回
  • 年度积分:102
  • 历史总积分:64749
  • 注册:2020年3月27日
发表于:2017-01-27 23:05:21
1楼

学习了,就是图片不显示了,有点儿遗憾。

f502819619

  • 精华:0帖
  • 求助:6帖
  • 帖子:10帖 | 162回
  • 年度积分:7
  • 历史总积分:276
  • 注册:2012年12月21日
发表于:2017-02-09 09:23:43
2楼

图片不显示,感谢楼主!


热门招聘
相关主题

官方公众号

智造工程师