本期擂台为征集擂台:
用一个按钮可随意控制N个(N=10)灯泡,使其亮或灭,应如何编程。
PLC的类型任意选择,回答的最好最完全的,原创最多,阐述最详细,程序越准确者获一等奖!
工控PLC擂台每周一期,本期待93期结束一周后结贴。奖项设置:一等奖1名:50MP,二等奖5名:10MP,三等奖10名:100积分。
MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。
MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。
对: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定时结束才能成立,这样一来,就无法产生输出了。不知这个分析对不对。
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,为下一次的连续按钮控制做准备。
在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个灯泡的控制。