本期擂台为征集题:
程序内容是这样的,
①.当I0.0为自复位按钮输入变量,按一下I0.0,q0.0输出为1,再按一下I0.0,q0.0输出0
②.当I0.1为自复位按钮输入变量,按一下I0.1,q0.1输出为1,再按一下I0.1,q0.1输出0
3③.当双击(1S以内连续按两下按钮算双击)I0.0或I0.1任何一个按钮时,Q0.0,Q0.1都为0,当再次单击I0.0或者I0.1时,Q0.0或者Q0.1仍会延续①与②的逻辑。
PLC类型任意选择,回答的最好最完全的,原创最多,阐述最详细者获一等奖!
工控PLC擂台每周一期,本期待88期结束一周后结贴。奖项设置:一等奖1名:30~50MP,二等奖3名:10MP,三等奖10名:100积分。
MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。
MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。
该“试金石”片断是一个非常简单的 “ 3 脉冲” 发生器。在硬件的外连线上将它的输出接到被测PLC对应的输入端口,用它产生的3个输出脉冲模拟人工输入“点击”操作。
(按照<wyb2866255>答案程序中运用的“理解乙”的概念)定义:在短于“设定时值”的时间内发生的相邻两个“点击”算“双击”。
这个定义是符合擂主题目的要求③之实质意涵的。对于这一点,各位网友和评委应当没有什么异议吧!
下面这幅图片之图A中,“点击甲”距离“点击乙”的间隔短于“设定时值”,所以,以“理解乙”模式的“双击”概念来看:“点击甲”与“点击乙”构成了一对“双击”。自然的,“点击甲”的身份是“双击”无疑了!
接下来又看图B:“点击乙”的前面有一个“点击丙”,且相距一个不足“设定时值”的距离。同理,“点击乙”与“点击丙”也构成了一对“双击”!
引用<Wanggq>在№98和№99楼的内容(以图片形式引用):
现在我再加上分析图片,以<wyb2866255>答案程序中运用的对“双击”之“理解乙”的概念,在1秒之内的两次“点击”叫“双击”。1#与2#发生在1秒之内算是“双击”;而2#与
3#也同样是发生在1秒之内的,所以,3#的身份无疑也是“双击”;4#虽然离3#远得多,但是它与5#的距离却是不足1秒的,即4#、5#属发生在1秒之内的两次点击(以两个点击前沿之间的距离与设定时值标尺进行比较),所以,4#的身份无疑也是“双击”;至于5#、6#的身份,那就更甭说了,因为它们是非常明显的“双击”嘛:
既然按照对题目的“理解乙”的概念,该时序图中的6个“点击”的身份无一例外的都是“双击”,那么,这6个点击过后,“动作正确符合题目要求”的答案程序就应该强制PLC对应的两个输出元件的状态都为“OFF” ! 但是,<wyb2866255>的3个程序都一致的在3#、6#点击过后1秒将对应的一个输出元件状态错误的翻转为“ON”。这就充分说明他的3个程序的自主判断“输入点击”之身份的能力是低能的!他只能寄希望于操作人以主观意识操控下,将3#点击离2#点击远远儿的、6#点击离5#点击远远儿的,以确保他那低能的程序不至于错判3#点击及6#点击的身份!
<wyb2866255>于№100楼的内容是针对№98、№99两个回帖所做出的反应:
№100楼的这句“别把问题分析的太复杂了”是不是把事实给弄颠倒了?!这一期擂台题目本来就是一个很简单的题目,是<wyb2866255>自己把它弄复杂了!他对“输入点击”的判断所采用的方法又是计时,又是计数的。而且,计数又别出心裁的采用“INC”、“DEC”指令又是加计数又是减计数的。这样就必须附加“初始化”的“MOV”指令给MB3赋值,还必然少不得附加“条件限制”的“比较指令”。这样做,难道不比那些直接采用“计数器”指令的方案还要复杂多了吗?
№100楼的这句“如要单击,只能按一下,否则就不叫单击。”实质就是<wyb2866255>对他自己在№19楼所下的结论“该程序经上机运行,符合题目要求”的否定!
假设:某操作工(在没有秒表参照的条件下凭对1秒之时间概念的感觉)的实际操作情况如下时序图所示:
很明显:4#、5#的两个“点击”构成了一对“双击”,即:从4#前沿算起的1秒时间内,5#点击并不是该1秒内的唯一1次点击。按照<wyb2866255>的这句“如要单击,只能按一下,否则就不叫单击。”来判断:5#点击就不叫单击!
既然该时序图中5#点击不叫单击,那为什么<wyb2866255>的答案程序在上机运行中,对该时序图中5#点击所做出的反应会是让对应输出位之状态翻转为“ON”呢?!这不是与№19楼的结论自相矛盾吗?!
№100楼的这句“有必要去分析什么‘在哪一段满足<不足1S>这一条件’的时间里发生的两个点击才算‘双击’,而另外的也同样满足<不足1S>这一条件的时间里发生的两个点击却不可算作‘双击。。。’吗?”是<wyb2866255>在表达“没有必要去注意哪些‘双击’在他的程序里可以算是双击,而哪些‘双击’在他的同一个程序里却不能算是双击”这层意思吧?!
我们并不要求每个人的理解模式都要统一成一个标准,但是,按照正确的逻辑思维规矩,在衡量具体的同一个答案程序对“输入点击”之(单击或双击)身份的自主判断能力时,我们所依据的(单/双击)判断标准应当是同一个标准!包括该答案程序中所运用的(单/双击)概念。
我们很容易看得出:№19楼答案程序中所运用的“双击”概念是:“1S以内的相邻两个点击”。
我们根据擂主题目③和№19楼答案程序中所运用的“双击”概念,得到这样一个衡量№19楼答案程序对“输入点击”之(单击或双击)身份的判断标准:<凡是满足(符合)“不足1S”这一条件的时间内发生的相邻两次点击,都不叫单击,而叫双击。>根据这一判断标准,№132楼所示的操作时序图中5#点击就不是“单击”!它就不应当将与它相应的输出位翻转成“ON”状态!
<wyb2866255>之所以表达“没有必要去注意哪些‘双击’在他的程序里可以算是双击,而哪些‘双击’在他同一个程序里却不能算是双击”这一层意思,就是为了让我们忽略有些操作情形下的“双击”(如<№132>楼上所示的操作时序图中的4#与5#的关系)。从而让某些网友看不清№19楼答案程序所存在的逻辑错误!
你希望“别把问题分析的太复杂了”,你就别把答案程序写得太复杂了!如果你把答案程序写得很简洁,那么,别人对你的程序分析起来就没那么“复杂”。
若要比程序简洁,那就要数№16楼的答案程序1和№17楼的答案程序2最简洁!
答案程序1的梯形图(以FX1为实验平台,T63为1ms分辨率的定时器):
该答案程序对“双击”的理解属<理解甲>的模式:输入开关的操作密度高于设定密度时的“当前操作”叫“双击”;反之,低于设定密度时的“当前操作”叫“单击”。
该答案程序的“设定密度”为0.3秒,即:距前一次点击前沿的时值小于0.3秒的当前点击叫双击,大于0.3秒的当前点击叫单击。
该答案程序中运用的“操作密度”的概念是两个输入开关操作的“合成密度”的概念。(请大家注意:<wyb2866255>在№19楼的答案程序中也同样是运用的这个“合成密度”的概念)