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

(已结帖)工控PLC擂台第93期-一个按钮可随意控制N个(N=10)灯泡的问题? 点击:8140 | 回复:40



玻璃的心

    
  • 精华:30帖
  • 求助:2帖
  • 帖子:967帖 | 5801回
  • 年度积分:0
  • 历史总积分:61250
  • 注册:2010年6月11日
发表于:2012-12-18 22:25:43
楼主

本期擂台为征集擂台:

用一个按钮可随意控制N个(N=10)灯泡,使其亮或灭,应如何编程。 

 

PLC的类型任意选择,回答的最好最完全的,原创最多,阐述最详细,程序越准确者获一等奖!

 

工控PLC擂台每周一期,本期待93期结束一周后结贴。奖项设置:一等奖1名:50MP,二等奖5名:10MP,三等奖10名:100积分。 

MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。 

MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。




时空——王者之师

  • 精华:2帖
  • 求助:234帖
  • 帖子:480帖 | 4472回
  • 年度积分:66
  • 历史总积分:31282
  • 注册:2008年6月06日
发表于:2013-02-10 20:59:33
21楼
楼上的方法还真多啊       

bhdxzgp

  • 精华:5帖
  • 求助:8帖
  • 帖子:141帖 | 5451回
  • 年度积分:0
  • 历史总积分:21609
  • 注册:2006年4月16日
发表于:2013-02-13 16:10:38
22楼

大家都太有才了啊!~!!

支持啊!!!!

lingcore

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 13回
  • 年度积分:0
  • 历史总积分:193
  • 注册:2008年6月14日
发表于:2013-02-14 10:44:57
23楼

4楼王先生的解法有一个很好的思路,而且把手抖动的问题也考虑了进去。也许我没有读明白,这个程序好像有个错。

 

每次按钮按下之后,T102就会开始计时,计时到之后M0.1设为1,这一设置又会把MB10置于0,因此MB10就无法通过INC操作不断上升。


为了纠正这个错误,我做的尝试是:1)在网络2中去掉M0.1;2)在Q0.0,Q0.1,....的Reset部分中的数字加1,比如Q0.0的计算中,用2 代替1,以此类推。


213255tony

  • 精华:1帖
  • 求助:0帖
  • 帖子:45帖 | 810回
  • 年度积分:1002
  • 历史总积分:3167
  • 注册:2011年11月01日
发表于:2013-02-14 11:31:15
24楼
都写的不错,但似乎就没一个人程序写上注释呢, 跟臭屁PLC教材一样,一堆梯形图,啥注释都没有

怪话二王

  • 精华:3帖
  • 求助:8帖
  • 帖子:139帖 | 6809回
  • 年度积分:0
  • 历史总积分:24592
  • 注册:2004年2月03日
发表于:2013-02-14 15:10:43
25楼

PLC,俄不会玩鸟 。。。。。。。。。。。。。。。555555

骑士兵团_问学

  • 精华:1帖
  • 求助:6帖
  • 帖子:30帖 | 1183回
  • 年度积分:225
  • 历史总积分:13229
  • 注册:2005年2月14日
发表于:2013-02-14 15:22:33
26楼

大家都太有才了啊!~!!

支持啊!!!!

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2013-02-14 22:31:29
27楼
对23楼的回复:,你说“每次按钮按下之后,T102就会开始计时,计时到之后M0.1设为1,这一设置又会把MB10置于0,因此MB10就无法通过INC操作不断上升。”这样分析是不对的:T102为断电延时定时器,定时时间为1.5秒。从第一次按下按钮起,T102 就由 0↑1。以后连续按N下按钮,由于连续按钮的间隔时间小于1秒,即小于T102的延时时间(1.5秒),故在连续按钮过程中,T102始终保持=1的状态不变,只有连续按钮结束,在最后一下按钮抬起起,再延时1.5秒,T102 才由 1↓0,其下跳沿使M0.1=1,使MB10复位清0,即M0.1=1只保留一个扫描周期,不是恒=1的。故不会出现。。。把MB10置于0,因此MB10就无法通过INC操作不断上升。的。

lingcore

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 13回
  • 年度积分:0
  • 历史总积分:193
  • 注册:2008年6月14日
发表于:2013-02-15 00:23:41
28楼
回复内容:

对:wyb2866255---王者之师关于 对23楼的回复:,你说“每次按钮按下之后,T102就会开始计时,计时到之后M0.1设为1,这一设置又会把MB10置于0,因此MB10就无法通过INC操作不断上升。”这样分析是不对的:T102为断电延时定时器,定时时间为1.5秒。从第一次按下按钮起,T102 就由 0↑1。以后连续按N下按钮,由于连续按钮的间隔时间小于1秒,即小于T102的延时时间(1.5秒),故在连续按钮过程中,T102始终保持=1的状态不变,只有连续按钮结束,在最后一下按钮抬起起,再延时1.5秒,T102 才由 1↓0,其下跳沿使M0.1=1,使MB10复位清0,即M0.1=1只保留一个扫描周期,不是恒=1的。故不会出现。。。 把MB10置于0,因此MB10就无法通过INC操作不断上升。的。 内容的回复:

 

王先生你好。又仔细看了一遍,我想我们对问题的理解有些不一样。原本我认为,一个按钮按下去的时间在1.5秒之内,一个灯就亮,然后可以等待任意长的时间,再按一次按钮。王先生的做法是,一个按钮按下放开之后,在1.5秒时间内,要按下第二个按钮,按这种方式快速按按钮,直到第n个。如果按这种做法,确实可以使T102保持1,直到按完n个按钮,然后再把MB10清0。不过,按这个做法,似乎还是有一个问题。每个输出(Q0.0,Q0.1,...)都需要一个条件M0.1=1,而这个条件要等到T102定时结束才能成立,这样一来,就无法产生输出了。不知这个分析对不对。

 



wyb2866255---王者之师

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

     28楼:看来你对我的程序没有完全理解,这里我再说明一下:用一个按钮可随意控制N个(N=10)灯泡,使其亮或灭的我的控制思路是:采用连续按N下按钮来实现控制第N个灯亮灭的,要求连续按钮的间隔为0.5~1.0秒(即正常连续按钮间隔。连续按钮结束后延时1.5秒,改变被控灯泡的输出状态。如连续按5下按钮,由于连续按钮按下的间隔为0.5~1.0秒之间,其间隔时间大于T101的延时时间,而小于T102的延时时间,故在此连续按钮过程中,T101在每次按钮按下时T101=1,当按钮抬起后延0.4秒时间内如出现I0.0=1(即出现抖动脉冲),其T101=1不变,如没有出现抖动脉冲而此时的按钮处于未按下状态,由于T101的延时时间到,则使T101由 1↓0,故确保连续按5下按钮,使T101产生5个正脉冲,使MB10的计数值=5。

     而T102的延时时间=1.5秒,大于连续按钮的间隔时间,故T102从第一下按下时起,T102=1,一直保持到最后一次按钮抬起后,再延时1.5秒T102才由 1↓0,即产生M0.1=1的后沿脉冲。其时序图如下:

  图中T101的后沿脉冲为MB10的计数脉冲,T102的后沿(即为M0.1)是MB10的复位脉冲,当出现M0.1=1的扫描周期,MB10已计完5个数,当扫描到MB10=5时,使对应的双稳态Q0.4状态反转(见网络9)。随后将MB10清0,为下一次的连续按钮控制做准备。

lingcore

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 13回
  • 年度积分:0
  • 历史总积分:193
  • 注册:2008年6月14日
发表于:2013-02-16 01:19:50
30楼

谢谢王先生这个非常详细的解释,尤其这个波形图对问题的理解很有帮助。

 

我原本认为题目的要求是每按一下按钮就有一个灯亮,再按一下按钮,前面一个灯灭,下一个灯亮。王先生的做法是,快速按动按钮k 次,第k个灯亮,其余灯在这个过程中都不亮。按这个要求来做,这个程序似乎是对的。很巧妙的解决方案。

wyb2866255---王者之师

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

在4楼程序基础上进行精简,编出如下程序:

 

本程序的技巧:

1、巧妙利用二个断电延时定时器解决按钮抖动干扰,确保准确定位及判断时刻选择的

问题。

       2、循环左移指令的使用及左移字存储器的置数考量:T102的前沿使MW8=16#80,即MB8=0、MB9=16#80.当T101的后沿使MW8循环左移一位时,其MB8=1(即0000_0001)、而MB9=0,如T101的后沿使MW8连续循环左移N(N≤8)位时,其MB8=2的(N-1)次方,如N=5,MW8=2的4次方=16,即M8.4=1.当N>8时,MW8=2的(N-9)次方,如N=9,MW8=2的0次方=1,即M9.0=1.即采用将NW8的初始值置8,及选用循环左移指令,可确保连续按N下,使MW8的置1位与第N个灯泡的输出位相对应,显然如用左移后的MW8输送给QW0,就会使第N号灯亮。

3、合理的使用“与”“或”“反相”等逻辑指令和比较指令,用一个网络编程解决了原程序需用N(10)个网络的编程功能。

即:本程序的网络4的功能可代替原程序的网络5~网络14这10个网络的输出功能:即实现同用T102的后沿(即用一个按钮实现随意控制N个(原程序N=10)灯泡,使其亮或灭的。

本程序的优点是:当被控灯泡数量改变时,只要灯泡总数在16个以内,程序都适用,不需任何改动,而原程序不行,只适用10个灯以内的控制。比如要控制12个灯泡时,本程序不需改动就可使用,而原程序必须在其网络14后再增添2个双稳态电路去分别控制灯11与灯12后,才可用12个灯泡的控制。

 

大碗泡面

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 33回
  • 年度积分:0
  • 历史总积分:141
  • 注册:2012年4月10日
发表于:2013-03-21 22:12:53
32楼

一个按钮只能用时间或是次数来操作了,选其中操作较简单的来编程。想象中

玻璃的心

  • 精华:30帖
  • 求助:2帖
  • 帖子:967帖 | 5801回
  • 年度积分:0
  • 历史总积分:61250
  • 注册:2010年6月11日
发表于:2013-03-27 22:26:11
33楼

一等奖1名,50MP获得者: 
wyb2866255---王者之师              wyb2866255


二等奖5名,10MP获得者: 
芽菜@技术豆                                    技术豆芽菜

liujian5118                                         liujian5118

caojie0723--王者之师                caojie0723

秦君_1                                              qjj740210

芳季                                                  hdihht


三等奖6名,50积分获得者: 
lingcore                                           lingcore

从未被超越                                    从未被超越

月半玩                                            月半玩

江湖走走--原创军团                      gdh

litwo                                                 litwo

水边清浅横枝瘦                            秀空

 

玻璃的心

  • 精华:30帖
  • 求助:2帖
  • 帖子:967帖 | 5801回
  • 年度积分:0
  • 历史总积分:61250
  • 注册:2010年6月11日
发表于:2013-03-27 22:27:45
34楼

一等奖1名,50MP获得者: 
wyb2866255---王者之师              wyb2866255


二等奖5名,10MP获得者: 
芽菜@技术豆                                    技术豆芽菜

liujian5118                                         liujian5118

caojie0723--王者之师                caojie0723

秦君_1                                              qjj740210

芳季                                                  hdihht


三等奖6名,50积分获得者: 
lingcore                                           lingcore

从未被超越                                    从未被超越

月半玩                                            月半玩

江湖走走--原创军团                      gdh

litwo                                                 litwo

水边清浅横枝瘦                            秀空

 

玻璃的心

  • 精华:30帖
  • 求助:2帖
  • 帖子:967帖 | 5801回
  • 年度积分:0
  • 历史总积分:61250
  • 注册:2010年6月11日
发表于:2013-03-27 22:29:57
35楼

一等奖1名,50MP获得者: 
wyb2866255---王者之师              wyb2866255


二等奖5名,10MP获得者: 
芽菜@技术豆                                    技术豆芽菜

liujian5118                                         liujian5118

caojie0723--王者之师                caojie0723

秦君_1                                              qjj740210

芳季                                                  hdihht


三等奖6名,50积分获得者: 
lingcore                                           lingcore

从未被超越                                    从未被超越

月半玩                                            月半玩

江湖走走--原创军团                      gdh

litwo                                                 litwo

水边清浅横枝瘦                            秀空

 

玻璃的心

  • 精华:30帖
  • 求助:2帖
  • 帖子:967帖 | 5801回
  • 年度积分:0
  • 历史总积分:61250
  • 注册:2010年6月11日
发表于:2013-03-27 22:31:57
36楼

本期擂台打此为止,欢迎大家继续参与我们以后各期擂台!

小黑子

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 33回
  • 年度积分:0
  • 历史总积分:108
  • 注册:2010年11月15日
发表于:2013-03-28 22:28:22
37楼

回复内容:

对: wyb2866255---王者之师     用S7-200编写本命题:用一个按钮可随意控制... 内容的回复!


您好,请问网络2中并联的M0.1是什么作用呢?个人认为,M0.1是单周期脉冲,在当前周期M0.1=1,下一周期M0.1=0,M0.1起不到将MB10清零的作用,不知道这样分析对不对。

wyb2866255---王者之师

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

回37楼:1、M0.1=1为T102=1的后沿,它只出现一个扫描周期,它主要起驱动10个灯的对应双稳态反转的作用(见网络5~网络14)。在它出现时的扫描周期里MB10已计数完毕,故它只能驱动MB10的计数值等于设定值的那一路双稳态电路翻转(即选中的灯泡亮或灭)。

    2、M0.1起复位计数器MB10:在M0.1=1的扫描周期结束,下一个扫描周期到来时,从网络1到网络3,M0.1仍=1,故扫描到网络2时,将MB10复位清零,直到扫描到网络4时,由于此时T102的后沿已消失,此时M0.1才由1↓0的。

gwer789

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 362回
  • 年度积分:845
  • 历史总积分:1014
  • 注册:2011年6月22日
发表于:2015-06-23 19:22:55
39楼

下来学习学习,这里的人都很牛

e2009xia

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 106回
  • 年度积分:0
  • 历史总积分:479
  • 注册:2017年11月05日
发表于:2017-11-18 20:27:09
40楼

回复内容:

对:芽菜@技术豆 初学者瞎编的..望指正...   按钮按下第一次灯1亮,第二次灯2亮灯1灭......第十次灯10亮灯9灭...利用计数器当前次数MW100来判定按了几次...超过十次,清零...     内容的回复:

多学习学习啊 感谢楼主


热门招聘
相关主题

官方公众号

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