本期擂台为征集题:
程序内容是这样的,
①.当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后、用户可通过用户管理后台申请兑换)。
因为各人操作情况不一致,而造成各人的感知不同。为了客观公正,我们可以用PLC中的固定间隔的“开关动作”来辅助验证这个问题:
下图中,用红线框起来的部分是我额外加插在8楼< crf498959881>网友的答案程序前面的辅助验证功能的片断。而红线框外的部分除了两个定时器分辨率用得不同,但实质还是8楼< crf498959881>网友的答案程序(我在原版程序中“LDP X0”指令的下面,给并联了一个“OR M6” 指令,用于输入3个“固定间隔脉冲”以替代人工输入“点击”)。
实验时,先按一下X0 输入“1#的键输入”,经1秒的时间等待之后Y0便置位成“1”。再之后,又按一下X5操作键,PLC就自动的每隔0.9秒的时间输入一个“M6的上升沿”,共输入3次。即模拟X0在“规定间隔时值(1秒)以内输入2#、3#、4#的键操作”。
实验会让大家看到:因2#、3#两次输入(发生在1秒以内)而让Y0(也能让Y1)复位为“0”,而3#、4#两次输入(同样也是发生在1秒以内,按8楼的理解模式,3#、4#的“输入操作”也应该叫“双击”)但是,4#的“键操作”却让Y0重新置位成“1”。即8楼< crf498959881>网友的答案程序错把4#的“双击”身份误当成“单击”身份了!
当任何一个“点击”发生时,答案程序4首先是执行“ALTP”指令(注意:这时刻的(Y0、Y1)元件映像并不是该扫描周期末程序刷新输出映像锁存器的结果),随即才是对该“点击”进行身份的判断。
在没有“点击”操作之前,T200、T201线圈一直处于被驱动的状态,当任何一个“点击”发生时,若对应定时器(T200或T201)是计时已满的,则该“点击”为“单击”的身份;若对应定时器是计时未满的,则该“点击”为“双击”的身份。
若该“点击”为“单击”身份,则因对应定时器b接点的状态已为OFF,故程序将不执行“RST Y0 ; RST Y1 ” ,到该扫描周期末,相应的输出位(Y0或Y1)的实际状态便是由题目①、②的逻辑所决定的;
若该“点击”为“双击”身份,则因对应定时器b接点的状态还未OFF,程序将随即强制俩输出位(Y0及Y1)归零,到该扫描周期末,俩输出位(Y0及Y1)的实际状态便是由题目③的逻辑功能所决定的。
看来很多人爱把一个简单的问题弄得复杂一点!误以为程序愈复杂,就标志着程序质量愈上乘。其实不然,而事实上,在保证功能效果完全相同的前提下,程序愈简洁合理,其程序质量才是愈上乘!
在这个擂台题目中,但凡把“双击”理解成在1秒时间内的“两次点击”,并用计时加上计数的方法来解这个题目,必然会出现逻辑上的错误!
若在№55楼之答案程序的前面加插一个检验功能片断,就能用实验来验证该答案程序能否完全避免发生逻辑错误。
如下图红线框所示插入一个检验功能的片断:(№55楼之原程序中输入信号的地方也如红线所示加插M6接点指令)
实验时,对于这个实验对象,先按一下X1 输入“1#的键输入”,经1秒的时间等待之后Y0便置位成“1”。再之后,又按一下X5操作键,PLC就自动的每隔0.6秒的时间输入一个“M6的上升沿”,共输入3次。即模拟X1在“规定间隔时值(1秒)”以内输入2#、3#的“键输入操作”,同时也模拟了X1在1秒之内输入3#、4#的“键输入操作”。
因为:如上输入时序图所示的3#、4#的“点击操作”同样也是在1秒之内连续按键两次的操作,所以,4#点击的身份理所应当是“双击”。按题目③之逻辑要求,这4#点击的结果就应该是强制俩输出位(Y0及Y1)都归零!而不应该让输出位Y0置“1” !
实验的结果同样也证明:№55楼之原程序中X1输入情形在如上输入时序图所示情形时,原程序的运行结果也是错把第4#点击的“双击”身份误当成“单击”身份了!
楼上这个红线框内的片断,就象一块“试金石”。把它加插在这个题目的各个答案程序的前面与答案程序一起运行,当操作一下“输入键X5”,该片断就自动连续产生3个“输入脉冲”。相邻两个脉冲的间隔时值由T202(10 mS 的分辨率)来设置,我们将其间隔时值设置为略比答案程序中设定的最大“双击间隔时值”小一点点,这样既保证了第3#脉冲为“双击”身份,同样又保证了第4#脉冲具有“双击”的身份,而且也不至于让第4#脉冲的“双击”身份被以第2#脉冲起始计时的设定间隔所淹没。这样就能试出某些答案程序在识别4#脉冲身份时所产生的逻辑错误!
用这3个脉冲替代人工操作“点击”,完全保证在客观公正的前提下比较各答案程序。