(已结帖)工控PLC擂台第90期-PLC有关的一道征集题 点击:4622 | 回复:175



玻璃的心

    
  • 精华:30帖
  • 求助:2帖
  • 帖子:962帖 | 5801回
  • 年度积分:0
  • 历史总积分:61250
  • 注册:2010年6月11日
发表于:2012-08-27 17:43:55
楼主

本期擂台为征集题:

程序内容是这样的,
 ①.当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后、用户可通过用户管理后台申请兑换)。




wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-16 15:13:51
61楼

 

  按照“理解甲”编写出的答案,其动作是即时的动作,实时性比较好。运用“理解甲”的概念,对各次“点击”的身份判定所依据的间隔时值,是采用“过去时”,即当前“点击”出现之前就早已开始的计时。所以在当前“点击”的前沿即可得到该“点击”的身份判断结果。


  按照“理解乙”编写的答案,其动作是经过延时的动作,实时性比较差。运用“理解乙”的概念,对“点击”的身份判定所依据的间隔时值,是采用“将来时”,即从当前“点击”才开始的计时。要经过一个“设定时值”之后才能得到对“点击”身份的判定结果。



wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-16 15:26:54
62楼

 

  如果这个“设定时值”较长(譬如1000 mS), 则:输入键的操作结果给人的感觉就很迟钝,这种感觉实在不爽!


  如果我们把这个“设定时值”缩短一点,比如只设定其百分之30的时值,这种迟钝造成的“不爽”就可以忽略。


wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-16 15:43:47
63楼

 

  为了照顾那些不接受“理解甲”的网友的感受,我现在采用另一种新的理解模式再给出一个本题目的“答案程序5”:(以FX1s为实践平台,T63为1ms 分辨率的非保持型定时器)



  这个“答案程序5”仍然采用№16、17楼的“答案程序1、答案程序2”所采用的“摁键操作的合成密度”的概念,即两个输入键共用一个定时器。(请参见№19楼<wyb2866255>也是采用“摁键操作的合成密度”这一概念

  

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-16 16:01:05
64楼

 

  这个“答案程序5”还可以进一步的简化为下面这个样子:




  可能有网友会提出意见:“k1Y0” 这半个字节占用了Y0、Y1、Y2、Y3,而这Y2、Y3是多占用的。若它们还要在其它功能上被使用,那怎么为呢?


  其实不用担心!如果程序还要把Y2、Y3用到其它功能上,就请把Y2、Y3的驱动片断安排在“答案程序5”这一片断的后面,用“out”指令的形式驱动Y2、Y3就没得问题!


wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-16 16:03:54
65楼

 

  明天,我再给网友们贴出“不共用定时器”的本题目的“答案程序6”!



wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-17 14:07:40
66楼

 

  “答案程序6”不采用“合成密度的概念”,用T200、T201分别来考察X0、X1的“操作密度”。(以FX1n为实践平台,T200、T201 是 10 ms 分辨率的定时器,设定间隔时值为0.3秒):



wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-17 14:24:57
67楼

 

  这个“答案程序6”也可以进一步的简化为下面这个样子:



  

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-20 16:43:46
68楼

 

  答案程序5及答案程序6既有“理解甲”的思想成分,又有“理解乙”的思想成分。即,所依据的间隔时值既采用“过去时”,又结合“将来时”。


  对任何一个“点击”,首先采用“过去时”判定,若该“点击”的前沿出现时“过去时”未达到设定时值,则立即判定“双击”成立。若该“点击”的前沿出现时“过去时”已经达到“设定时值”,则转而采用“将来时”考察该“点击”前沿之后的一段“设定时值”之内是否再有“点击”出现。如果没有,则判定该“点击”为“单击”身份。即:属于“单击”身份的“点击”需延后一点时间才能做出判定。


wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-20 16:58:24
69楼

 

  所以,答案程序5、答案程序6,对题目中“双击”的理解是一种新的理解模式:


  任何一个距前或距后相邻“点击前沿”不足设定时值间隔的“点击”叫“双击”,否则为“单击”。


  姑且把这种理解模式简称为“理解丙”。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-20 19:26:29
70楼

 

  用时序图来表达“理解丙”:



wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-20 19:35:29
71楼

 

  从楼上的时序图可以看出“理解丙”的“双击”是即时确定的;“单击”是延时确定的。


  为了使“单击”的反应比较接近“实时”反应,应该把“间隔时值”设置得较短一点,让操作控制有比较好一点的“实时性”。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-20 20:20:48
72楼

 

  在答案程序5中,相关“单击”、“双击”的确定片断如下图所示:



wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-20 20:26:11
73楼

 

  在答案程序6中,相关“单击”、“双击”的确定片断如下图所示:




wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-21 09:08:18
74楼

 

  对这个题目,我所做的6个答案程序中的“间隔时值定时器”是对每一个“操作点击”都进行间隔时值考察的,不存在对某个“点击间隔”漏检的问题。



  保证这一点的措施是:每一个“点击”的前沿都无一例外的对“间隔时值定时器”的当前值进行清零,重新开始计时。


wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-21 09:50:37
75楼

 

  俩按键操作不共用定时器时,分别各按键输入的每一个“点击”前沿无一例外的对相应“间隔时值定时器”的当前值进行清零,重新开始计时。



 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-21 10:55:39
76楼

 

  但凡采用计时再加计数来考察“操作点击”的身份,在某些操作情况下就必然出现漏检某个“点击”与相邻“点击”之间的“间隔时值”,造成与具体程序中对“双击”理解的概念形成矛盾。


  以№19楼<wyb2866255> 的答案程序为例,





  该答案程序上机运行,若操作手法以较低的的频度摁输入键,且操作人必须以其主观意识操控之下将“单击输入”与“双击输入” 先行区分开来,以此弥补该答案程序之自主判断能力的不足。才可能是PLC的相应输出元件的状态反应“符合题目要求


  但是,若某操作工是个急性子,又没有秒表做参照的情况下,他操作输入键的结果就有可能不是你介绍的这样:

 “ 1、按1下按钮I0.0 Q0.0=1  Q0.1=0  再按1I0.0 Q0.0=0  Q0.1=0

 2、按1下按钮I0.1 Q0.0=0  Q0.1=1  再按1I0.1 Q0.0=0  Q0.1=0

 3、按1下按钮I0.0 Q0.0=1  Q0.1=0    1I0.1 Q0.0=1  Q0.1=1

 4、按1下按钮I0.0 Q0.0=1  Q0.1=0  再按2I0.0 Q0.0=0  Q0.1=0

 5、按1下按钮I0.1 Q0.0=0  Q0.1=1  再按2I0.1 Q0.0=0  Q0.1=0

 6、按1下按钮I0.0 Q0.0=1  Q0.1=0    1I0.1 Q0.0=1  Q0.1=1

 再按2I0.0   Q0.0=0  Q0.1=0

 7、按1下按钮I0.0 Q0.0=1  Q0.1=0    1I0.1 Q0.0=1  Q0.1=1

     再按2I0.1   Q0.0=0  Q0.1=0 ”  

             

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-21 15:51:06
77楼

 

  假设:这个急性子的操作工(在没有秒表参照的条件下凭对1秒之时间概念的感觉)的实际操作情况如下时序图所示:



  这急性子按照19楼介绍的步骤:1、按1下按钮I0.0”(如该时序图所示的1#输入)等了约900毫秒,急性子的他感觉好漫长啊,好象够1秒了吧!还不见出现:  Q0.0=1  于是乎  再按1I0.0 ”(如该时序图所示的2#输入),再等了一段更长一点的时间仍然不见出现这个: Q0.0=1 莫急,多试试,“ 再按1I0.0”(如该时序图所示的3#输入),再等上一段时间看看仍不见有任何输出!


  再最后试一把, 干脆 连续的 再按2I0.0”(如该时序图所示的4#、5#输入),再等了一段时间,正灰心要放弃试验之时终于才看到 Q0.0=1 出现了!哇,谢天谢地你来啦!!


  但静下心来一想:不对!这最后输入的两个“点击”(如该时序图所示的4#、5#输入)明明就是“双击”嘛,干吗还出现“Q0.0=1 ”呢?!这不是与该答案程序中所运用的“双击”概念相矛盾么?!!


wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-23 19:34:08
78楼

 

  №19楼<wyb2866255> 答案程序用“INC”和“DEC”指令来做“计数器”与定时器“T101”搭配起来做“单击”、“双击”的判定是有严重缺陷的。


  下面举例(本例将在№84楼贴出对应的时序图,以该时序图所示情况为例)来说明:

  

  ①、开机初始化:MB1=0  MB2=0  MB3=2,其MB1MB2分别为按钮I0.0I0.11计数器,MB3I0.0I0.1的减1计数器,


  我们可以用表格来表达MB1、 MB2、 MB3 这3个字节的各个bit 的状态:


wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-23 23:20:27
79楼

 

  ②、按 1下I0.0:I0.0的(1#点击)上升沿使MB1内容加1,还使MB3减1.。其结果为:MB1=1 ; MB3=1。( MB2的内容这时不受I0.0的影响


  这时,MB1、 MB2、 MB3 这3个字节的各个bit 的状态:


  该上升沿同时也触发定时开关 M0.0=1 ,计时开始


  ③、经等待1000 ms ,M0.0翻转为“0”,其下降沿触发输出位Q0.0 翻转为“ON”。


  当MB3≠0 时, MB2的内容不会受I0.0操作结果的影响,Q0.1的状态也不受其影响。


  当该答案程序扫描执行至“网络7”的最后一条“MOV”指令时仅只恢复MB3=2 。

 

  这时,MB1、 MB2、 MB3 这3个字节的各个bit 的状态:

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2012-09-24 13:51:16
80楼

 

  ④、距前面②(1#“点击”前沿)间隔大于1000 ms ,再次点击I0.0 ,(2#点击)上升沿使MB1的内容加1、 MB3的内容减1。


  这时,MB1、 MB2、 MB3 这3个字节的各个bit 的状态:

 


  该上升沿同时再次触发M0.0=1,新一轮计时开始。



热门招聘
相关主题

官方公众号

智造工程师